Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 20 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,14 @@
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

- Native Windows PowerShell support for init, check, query, doctor, update, and the
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

Expand All @@ -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
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.

Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": {
Expand Down
2 changes: 1 addition & 1 deletion src/cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export interface CliTerminal {
readonly confirm: (prompt: string) => Promise<boolean>;
}

const VERSION = '0.3.0';
const VERSION = '0.4.0';
const COMMANDS = new Set(['init', 'integrate', 'check', 'query', 'doctor', 'update']);

const USAGE = [
Expand Down
4 changes: 2 additions & 2 deletions tests/e2e/cli-help.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});

Expand Down Expand Up @@ -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 });
Expand Down
2 changes: 1 addition & 1 deletion tests/e2e/package-install.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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/);
Expand Down
6 changes: 3 additions & 3 deletions tests/integration/release-docs.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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/,
Expand Down Expand Up @@ -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 () => {
Expand Down