From 7021681a72a4a6994760aeaf571f9526498ffd00 Mon Sep 17 00:00:00 2001 From: anusbutt Date: Fri, 14 Aug 2026 04:24:39 +0500 Subject: [PATCH] release: prepare graphkeeper 0.4.0 --- CHANGELOG.md | 29 ++++++++++++++++++-------- README.md | 4 ++-- package-lock.json | 4 ++-- package.json | 2 +- src/cli.ts | 2 +- tests/e2e/cli-help.test.ts | 4 ++-- tests/e2e/package-install.test.ts | 2 +- tests/integration/release-docs.test.ts | 6 +++--- 8 files changed, 32 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88e35cd..f45de2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to GraphKeeper are documented here. GraphKeeper follows semantic versioning; while the package is below 1.0, minor releases may change public behavior. -## [0.3.0] - 2026-08-13 +## [0.4.0] - 2026-08-14 ### Added @@ -11,10 +11,6 @@ versioning; while the package is below 1.0, minor releases may change public beh Node pre-commit hook without normal sh or jq prerequisites. - A native PowerShell CI acceptance lane covering the installed Windows command shim, package journeys, and real valid/invalid Git commits. -- GraphKeeper Memory Bench v0.1 definitions for repeated investigation, stale memory, - provenance, and correction history. -- Public contributor guidance, governance documentation, and clearer proof-oriented - product positioning. ### Changed @@ -24,6 +20,25 @@ versioning; while the package is below 1.0, minor releases may change public beh - The generated Node validator and rule-free Node hook are the normal cross-platform path. The shell validator remains a conservative compatibility fallback for customized or unmigrated repositories. + +### Migration + +- Existing repositories should rerun `graphkeeper init --force` after upgrading so + package-owned guidance, validators, and hooks can refresh or migrate to Node. + Customized `validate.sh` or hook files are preserved for manual review and can + still require a POSIX shell and jq until migrated. + +## [0.3.0] - 2026-08-13 + +### Added + +- GraphKeeper Memory Bench v0.1 definitions for repeated investigation, stale memory, + provenance, and correction history. +- Public contributor guidance, governance documentation, and clearer proof-oriented + product positioning. + +### Changed + - Claims now represent one independently changeable fact. Agent guidance splits compound findings and records directly observed facts separately from interpretations. - Inference sources require a non-empty `basis`, and inference claims cannot use @@ -34,10 +49,6 @@ versioning; while the package is below 1.0, minor releases may change public beh ### Migration -- Existing repositories should rerun `graphkeeper init` after upgrading so an exact - package-owned validator and hook can migrate to Node. Customized `validate.sh` or - hook files are preserved for manual review and can still require a POSIX shell and - jq until migrated. - Before adopting the new validator, inspect existing committed inference claims. Claims without a basis or with `confidence: 1` are rejected by 0.3.0, and committed claims must not be edited in place; repositories containing those legacy shapes diff --git a/README.md b/README.md index 01830ca..88c54a2 100644 --- a/README.md +++ b/README.md @@ -179,7 +179,7 @@ prompt. update a global npm installation. It resolves the stable published version, installs only when that version is newer, and does not install prereleases. If the registry is offline, no update is attempted; retry when npm registry access returns. -- After updating an existing installation to 0.3.0, rerun `graphkeeper init --force` +- After updating an existing installation to 0.4.0, rerun `graphkeeper init --force` to refresh the repository skill and schema. This preserves `scripts/validate.sh`. Exact package-owned validators and hooks migrate to the Node path automatically. If a repository has a customized shell-only @@ -217,7 +217,7 @@ See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the development workflow, extension and boundaries, [prepared contribution issues](docs/contributor-issues.md), [`SUPPORT.md`](.github/SUPPORT.md) for usage help, and [`SECURITY.md`](.github/SECURITY.md) for private vulnerability reporting. Version -`0.3.0` is pre-1.0 and its API may change. Release ownership and the target version +`0.4.0` is pre-1.0 and its API may change. Release ownership and the target version must be verified immediately before publishing; completing the repository release gates does not publish anything. diff --git a/package-lock.json b/package-lock.json index fc0525f..7357481 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "graphkeeper", - "version": "0.3.0", + "version": "0.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "graphkeeper", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "bin": { "graphkeeper": "dist/src/cli.js" diff --git a/package.json b/package.json index 1457812..e492e0b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "graphkeeper", - "version": "0.3.0", + "version": "0.4.0", "description": "Grounded, auditable memory for coding agents.", "homepage": "https://github.com/anusbutt/Graph_Keeper#readme", "bugs": { diff --git a/src/cli.ts b/src/cli.ts index 42049f4..feec16e 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -46,7 +46,7 @@ export interface CliTerminal { readonly confirm: (prompt: string) => Promise; } -const VERSION = '0.3.0'; +const VERSION = '0.4.0'; const COMMANDS = new Set(['init', 'integrate', 'check', 'query', 'doctor', 'update']); const USAGE = [ diff --git a/tests/e2e/cli-help.test.ts b/tests/e2e/cli-help.test.ts index c6a170f..82355c6 100644 --- a/tests/e2e/cli-help.test.ts +++ b/tests/e2e/cli-help.test.ts @@ -166,7 +166,7 @@ test('prints the package version successfully', async () => { const exitCode = await run(['--version'], capture.io); assert.equal(exitCode, EXIT_SUCCESS); - assert.deepEqual(capture.stdout, ['0.3.0']); + assert.deepEqual(capture.stdout, ['0.4.0']); assert.equal(capture.stderr.length, 0); }); @@ -209,7 +209,7 @@ test('compiled CLI entrypoint runs through an npm-style symlink', { const result = await runCommand(process.execPath, [linkPath, '--version'], directory); assert.equal(result.exitCode, EXIT_SUCCESS); - assert.equal(result.stdout, '0.3.0\n'); + assert.equal(result.stdout, '0.4.0\n'); assert.equal(result.stderr, ''); } finally { await rm(directory, { recursive: true, force: true }); diff --git a/tests/e2e/package-install.test.ts b/tests/e2e/package-install.test.ts index 5aee589..c339956 100644 --- a/tests/e2e/package-install.test.ts +++ b/tests/e2e/package-install.test.ts @@ -125,7 +125,7 @@ test('a tarball installs in a clean directory and runs init, check, query, and d assert.match(help.stdout, /graphkeeper update/); const version = await runCli(['--version']); assert.equal(version.exitCode, 0, version.stderr); - assert.equal(version.stdout, '0.3.0\n'); + assert.equal(version.stdout, '0.4.0\n'); const initialized = await runCli(['init']); assert.equal(initialized.exitCode, 0, initialized.stderr); assert.match(initialized.stdout, /CREATE graph\/entities\.json/); diff --git a/tests/integration/release-docs.test.ts b/tests/integration/release-docs.test.ts index 6f8431b..2d0272e 100644 --- a/tests/integration/release-docs.test.ts +++ b/tests/integration/release-docs.test.ts @@ -27,7 +27,7 @@ test('release README covers onboarding, operation, recovery, limits, and future /## Recovery and adoption/, /rerun `graphkeeper init(?: --force)?`.*package-owned.*validator.*hook.*migrate/is, /customized.*shell-only.*POSIX.*jq/is, - /0\.3\.0.*init --force.*preserves\s+`scripts\/validate\.sh`/is, + /0\.4\.0.*init --force.*preserves\s+`scripts\/validate\.sh`/is, /github\.com\/anusbutt\/Graph_Keeper\/discussions/, /10,000 claims, 2,000 entities, and 1,000 runs/, /SQLite or PostgreSQL/, @@ -73,12 +73,12 @@ test('release version stays aligned across package, lockfile, CLI, README, and c const changelog = await readFile(join(projectRoot, 'CHANGELOG.md'), 'utf8'); const version = manifest.version; - assert.equal(version, '0.3.0'); + assert.equal(version, '0.4.0'); assert.equal(lockfile.version, version); assert.equal(lockfile.packages?.['']?.version, version); assert.match(cli, new RegExp("const VERSION = '" + version?.replaceAll('.', '\\.') + "';")); assert.match(readme, new RegExp('Version\\s+`' + version?.replaceAll('.', '\\.') + '`')); - assert.match(changelog, new RegExp('## \\[' + version?.replaceAll('.', '\\.') + '\\] - 2026-08-13')); + assert.match(changelog, new RegExp('## \\[' + version?.replaceAll('.', '\\.') + '\\] - 2026-08-14')); }); test('release carries the MIT terms for GraphKeeper contributors', async () => {