v1.57.0
Package Changelog
Minor Changes
-
c582da3:
deep-verifyandper-task-verifynow persist the provider/model identity that actually ran them into a settle'sgates[]array — previously neither gate recorded any identity there at all (unlikecode-review/security-audit), so an operator readingSUMMARY.jsonhad no way to tell whether either had run under a real verifier or themockplaceholder.The new fields —
observedProvider,observedModel, and (forper-task-verify)taskId— are structurally separate from the existingprovider/modelfields onGateProvenanceZ, soderiveAssuranceRecord's assurance rollup, which foldsgates[].provider/.modelby field name, stays completely blind to them. This is deliberate: this repo's own verifiers already run ashost-cli(non-mock), so naively feedingdeep-verify's andper-task-verify's identity into the existing rollup fields would silently inflateassurance.overalltowardstrongon ordinary settles where no review gate actually ran. The safety property is proven by tests on the existing fold code, not by adding a new exclusion branch to it.per-task-verifynever previously appeared ingates[]at all — it runs during BUILD, not settle. Settle now synthesizes one entry per task carrying a persistedPerTaskVerifyRecord, prepended to the front of the array (per-task-verify's work completed before this settle's own gate loop starts, and prepending preserves the existing convention — used throughout this repo's test suite — that the last entry ingates[]is the gate that most recently ran or refused during this settle).All three new fields are additive and
.optional()with no default and noschemaVersionbump — absent on every historicalSUMMARY.json, andcomputeSummaryContentHashis unaffected. -
4901a00:
cadence resumenow warns whenstate.json'ssession.lastHandoffpointer names aSESSION-*.mdfile that no longer exists. PreviouslylocateFreshestHandoffsilently fell back to the freshest-by-generated_atdoc in.cadence/handoff/with no signal that the pointer was dangling, so a stale-but-plausible doc could read as authoritative. The warning names both the missing pointer filename and the doc actually served, and is rendered as its own message distinct from the existing loop-position drift banner, on both thecadence resumeCLI text surface and theresumeService/MCPCommandIOsurface.ResumeResult(@thomas-powers-jr/cadence-types) gains an additive, optionaldanglingHandoffPointerfield carrying the missing pointer's filename when this fires. Absent on every normal resolution path (no pointer ever set, or the pointer names a file that exists). -
492a388:
settle run --deepno longer refuses (or requires--force) on an Acceptance Criterion whose satisfaction condition is structurally circular — it depends on the verySUMMARY.md/SUMMARY.jsonthat settle produces, which doesn't exist until after the deep-verify pass that would need to observe it. A new pure classifier (classifyAcObservability) detects this narrow shape from an AC's Given/When/Then text and routes it to a distinctunobservableverdict instead of an ordinaryfail.unobservable-marked ACs are excluded from deep-verify's offenders list, the evidence-floor gate, and the force-used honesty report'sdeep:bucket — but never rolled up as a pass, and never allowed to moveassurance.overalltowardstrong.SUMMARY.mdand the CLI's summary-render surface render such ACs distinctly from both PASS and FAIL, carrying the classifier's reason, so an operator can tell "wasn't checked because it structurally can't be" from "checked and failed."DeepVerdictZ(@thomas-powers-jr/cadence-types) gains an additive, optionalunobservableboolean field. Absent on every historicalSUMMARY.jsonand on every AC this classifier doesn't flag;computeSummaryContentHashis unaffected. The classifier defaults toobservableon any ambiguity — a false negative is just an ordinaryfail, while a false positive would silently excuse a real failure, so every trigger pattern is narrow and structural (case-sensitiveSUMMARYtoken, quote-scope and negation-scope guards) rather than a broad keyword sweep.
Patch Changes
- Updated dependencies [c582da3]
- Updated dependencies [4901a00]
- Updated dependencies [492a388]
- @thomas-powers-jr/cadence-types@1.57.0
Published Packages
All public packages are published on npm as 1.57.0:
@thomas-powers-jr/cadence-core@thomas-powers-jr/cadence-host-claude-code@thomas-powers-jr/cadence-host-codex@thomas-powers-jr/cadence-host-toolkit@thomas-powers-jr/cadence-types
Verification
- npm publish completed with provenance in the Release workflow.
- Remote tag
v1.57.0is verified before the GitHub Release is created. - npm package versions and GitHub Release metadata are verified after publish.
- Workflow run: https://github.com/thomas-powers-jr/cadence/actions/runs/31754396940