DecisionGraph Core
Releases
Structured changelog generated from the DecisionGraph Core repository.
v0.4.8
v0.4.8
2026-05-15CI
- Upgraded `actions/checkout` and `actions/setup-node` to v5 across all workflows
- Upgraded `pnpm/action-setup` to v5 across all workflows
- Added `pnpm/action-setup` step to `sync-releases.yml` (was missing; caused pnpm not found error after setup-node@v5 auto-detects packageManager field)
- Added `pnpm -r test` step to `ci.yml` (tests were never run in CI previously)
- Removed `|| true` from `pnpm audit` in `security-audit.yml`
- Updated Node.js from 20 to 22 across all workflows
v0.4.7
v0.4.7
2026-05-12Fixed
- `packages/io-json/package.json`, `packages/schema/package.json` — added missing `"test"` script; both packages' test files existed on disk but were never executed by turbo
- `packages/io-json/test/io.test.ts` — updated stale v0.2 fixture to v0.4 (`version: "0.2"` → `"0.4"`); test had been silently skipped since the v0.2 → v0.4 wire-format migration
Changed
- `.gitignore` — added `.claude/` entry
Tests
- **34 passed** (was 32 — io-json and schema test suites now wired into turbo)
v0.4.6
v0.4.6
2026-04-02Fixed
- `@decisiongraph/cli`: wrap `JSON.parse` in try/catch in `validate`, `lint`, `replay`, `diff` commands — malformed JSON input no longer exposes raw stack traces; returns user-friendly error message with file path
v0.4.5
v0.4.5
2026-03-20Fixed
- `@decisiongraph/cli`: duplicate violations in `lint <directory>` and `traverse` — `lintStore` was called with `ConstitutionalPolicy` as both internal and caller policy, causing store-level violations to appear twice
Changed
- Packages updated:
v0.4.4
v0.4.4
2026-03-20Fixed
- `@decisiongraph/schema`: `files` field added to `package.json` — `schemas/` directory was missing from npm published package
- `@decisiongraph/schema`: v0.4 schema upgraded to full implementation — typed discriminated union (`AddNodeOp` / `AddEdgeOp` / `SupersedeEdgeOp` / `CommitOp`) and `Node.status` prohibition (`"not": {}`) now enforced at schema layer
- `@decisiongraph/io-json` / `@decisiongraph/cli`: `workspace:*` dependencies were not resolved on publish — replaced with explicit version ranges
- `@decisiongraph/cli`: `cmdLint` now uses `emptyGraph(graphId)` instead of `emptyStore()` — graph must exist before ops are applied
- `@decisiongraph/cli`: `cmdLintDir` now initializes each graph in store before `applyBatch`
- `@decisiongraph/schema`: v0.4 JSON Schema added (`schemas/v0.4/decision.schema.json`)
- `@decisiongraph/io-json`: `version.ts` updated — `"0.4"` added to `SUPPORTED_VERSIONS`, `CURRENT_SCHEMA_VERSION` set to `"0.4"`
- `decisions/demo.json` updated to v0.4 format (`version: "0.4"`, `graphId` added)
- CI `decision-lint.yml`: `pnpm install` (was `pnpm -w install`) for full workspace resolution
- All workspace dependencies use `workspace:*` for consistent turbo build ordering in CI
v0.4.3
v0.4.3
2026-03-05Changed
- Packages updated:
Added
- `effectiveStatus(store, nodeId): "Active" | "Superseded"` — topology-derived, sole authority for node supersession
- `SELF_LOOP` violation code — edge from a node to itself is rejected
- `supersede_edge` atomicity guarantee — old edge marked Superseded and new edge added in single operation
- `ResolvedNode` / `ResolvedEdge` types exported from `@decisiongraph/core`
- `emptyGraph(graphId)` helper for single-graph store initialization
- Golden fixtures C01–C20 covering all v0.4 constitutional invariants
- `io-json/decode.ts` updated to v0.4 (Node.status removed, supersede_node removed)
Fixed
- `fixtures.test.ts`: store initialized with `emptyGraph(graphId)` to ensure graph exists before ops
- All v0.2 golden fixtures updated to v0.4 format (node.status removed, edge.status added)
- `core.test.ts`: node.status removed from all test data
v0.4.2
v0.4.2
2026-03-02Fixed
- `@decisiongraph/cli`: `workspace:*` dependencies resolved to explicit versions for npm publish
- `@decisiongraph/io-json`: `workspace:*` dependencies resolved to explicit versions for npm publish
- Added `.npmrc` to root (`link-workspace-packages=false`) to prevent `workspace:*` from leaking into published packages
Changed
- Packages updated:
v0.4.1
v0.4.1
2026-03-01Added
- `DEPENDENCY_ON_DEPRECATED` violation code (Constitution Section 6, severity: WARN)
- CLI `--strict` flag — treat WARN as ERROR
Changed
- Packages updated:
v0.3.1
v0.3.1
2026-02-27Changed
- **Breaking**: `Graph` now requires `graphId`
- **Breaking**: `applyBatch`, `lint`, `replay` signatures updated to accept `GraphStore` and `GraphId`
- **Breaking**: All IDs (`NodeId`, `EdgeId`, `CommitId`) are now GraphStore-wide unique
Added
- `GraphStore` as top-level container (`GraphStore = one world`)
- `GraphId` branded type
- `lintStore` for store-wide cross-graph validation
- `resolveNode` / `resolveEdge` as first-class kernel operations
- `EDGE_NOT_RESOLVED` violation code for unresolvable cross-graph references
- `CIRCULAR_DEPENDENCY` violation code (DFS across graph boundaries)
- `DEPENDENCY_ON_SUPERSEDED` violation code (Constitution Section 6)
- CLI `traverse <directory>` command with violation tree display
- `Violation.payload` for structured context (`fromNodeId`)
- `traceDependencyPath` kernel function for chain traversal