DecisionGraph Core
DecisionGraph Core

Releases

Structured changelog generated from the DecisionGraph Core repository.

v0.4.8

v0.4.8

2026-05-15

CI

  • 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-12

Fixed

  • `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-02

Fixed

  • `@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-20

Fixed

  • `@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

v0.4.4

v0.4.4

2026-03-20

Fixed

  • `@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-05

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-02

Fixed

  • `@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
v0.4.1

v0.4.1

2026-03-01

Added

  • `DEPENDENCY_ON_DEPRECATED` violation code (Constitution Section 6, severity: WARN)
  • CLI `--strict` flag — treat WARN as ERROR
v0.3.1

v0.3.1

2026-02-27

Changed

  • **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