v1.51.1
Package Changelog
Patch Changes
-
e9f6556: Closes three confirmed CLI/MCP parity gaps in the Praxis-adjacent surfaces:
cadence_recommendation_promote(MCP) now accepts arefargument and
threads it intoshippedRefexactly like the CLI's
recommendation promote --status=shipped --ref "<text>"already does —
previously the MCP tool silently dropped it. Also fixes a latent bug where
astatus=shippedpromotion (which auto-archives by default) always
returneddata: nulleven on full success, because the lookup only
checked the liverecommendationsarray, notarchived.- The "did this
milestone proposerun produce any newly-proposed
milestones" predicate — previously copy-pasted as an identical literal
expression in bothcli/commands/milestone.tsand
services/milestone-propose.ts, a duplication class that had already
caused one whole-branch-review-caught drift bug — is now a single
exportedhasNewlyProposedMilestone()both call sites invoke. next/verify coverage/verify phase/explainlogic, which already had
the right(repoRoot, args, io) => CommandResultservice shape but lived
incli/commands/where the MCP surface couldn't reach it, is relocated
intoservices/{next,verify,explain}.ts. The MCP server now registers
cadence_next,cadence_verify_coverage,cadence_verify_phase, and
cadence_explain(all read-only), with test coverage asserting output
parity against their CLI counterparts.docs/mcp.mdand
docs/reference/commands.mdare updated for the new tool count (18→22).
No CLI-facing behavior, flags, or exit codes changed for any of the affected
commands — this is a parity/dedup fix, not a rewrite. -
655663e: Unify the five Praxis intelligence ledgers (recommendations, evidence,
assumptions, decisions, milestones) onto one shared read/write/id-minting
module (intelligence/store/ledger.ts) instead of five independently
hand-rolled implementations, so a safeguard added for one subject — like
phase 219's cross-ledger id-collision check, previously recommendations-only
— now applies to all four minting subjects (recommendations, evidence,
assumptions, decisions) instead of needing to be re-patched per subject.
Each subject's existing read/write/mint function names and signatures are
unchanged (thin wrappers over the shared primitives); bespoke per-subject
logic (recommendation promotion/archive/unarchive, decision supersession)
stays subject-specific rather than being forced into one generic shape.Also fixes a real gap this refactor surfaced:
milestones.jsonwas the only
one of the five ledger files not written with{ mode: 0o600 }.cadence intelligence audit/reconcile/statsnow include milestones as a
fifth ledger: a neworphan-milestonefinding kind catches a milestone
referencing a recommendation id that no longer exists in either the live or
archived recommendation arrays (a reference to a merely-archived, still
unarchive-recoverable recommendation is correctly NOT flagged).cadence recommendation/decision/assumption list's--sort-by/
--filter-regex/--filter-regex-flagsvalidation is now one shared
pipeline instead of three independently maintained copies — behavior and
error wording are unchanged.cadence-types,cadence-host-claude-code, andcadence-host-codexcarry
version-alignment bumps only; none of the three changed. -
e05922e: Fix
cadence recommendation add's id-minting to cross-checkevidence.json
(phase 219, rec-20260724-013).nextRecommendationIdpreviously derived the
nextrec-YYYYMMDD-NNNid only fromrecommendations.json, so a dangling
evidence.jsonrow left behind by a bad rebase-conflict resolution or an
interruptedaddcall — arecommendationIdreference with no matching
recommendations.jsonentry — could silently collide with a freshly minted
id for an unrelated recommendation. The minted id is now guaranteed strictly
greater than both therecommendations.jsonmax and the max
recommendationIdreferenced byevidence.jsonfor the same date prefix.Also adds a new
orphaned-evidencecadence doctorcheck that surfaces any
evidence.jsonrow whoserecommendationIdhas no matching
recommendations.jsonentry, naming the evidence id and the missing
recommendation id — so this class of drift is caught immediately instead of
surviving unnoticed.cadence-types,cadence-host-claude-code, andcadence-host-codexcarry
version-alignment bumps only; none of the three changed. -
1f70e66: Extracts the logic host-claude-code and host-codex duplicated into a new
shared package,@manehorizons/cadence-host-toolkit:- The hook-event routing algorithm's shape and the slash-command catalog
(COMMANDS) now live inhost-toolkit/src/routing.ts. Both adapters
render their slash commands from this one catalog, which fixes a real
drift bug: host-codex's local copy had silently lostcadence-dispatch's
DISPATCH_DIALOGUEbody. Host-codex's ownmapEvent/extractPayload/
routeHookEventstay local — itsapply_patch-based extraction is
genuinely different from host-claude-code'sfile_path-based extraction,
not just duplicated; only the structurally-identicalRouteResulttype is
shared. install.ts's managed-marker merge logic andlocate-self.tsare also
extracted into the toolkit, with one shared test suite; both adapters'
owninstall.ts/locate-self.tsare now thin wrappers.- Core now enforces a new
HostCapabilities.agentIdentificationflag: a
host that declares it cannot supplyagentId/agentType(Codex, whose
hook payload shape doesn't document one) causes core to notice loudly on
stderr instead of silently behaving as if no subagent were involved.
Codex's CLI now embeds its declared capabilities into the real hook
payload it sends tocadence hook, so the check is live end-to-end, not
just testable in isolation.
No CLI-facing behavior, flags, or exit codes changed for either adapter —
this is an internal dedup/extraction plus one new loud-notice-on-a-capability-
gap fix, not a rewrite.HostAdapter's public contract is unchanged. - The hook-event routing algorithm's shape and the slash-command catalog
-
Updated dependencies [655663e]
-
Updated dependencies [e05922e]
-
Updated dependencies [1f70e66]
- @manehorizons/cadence-types@1.51.1
Published Packages
All public packages are published on npm as 1.51.1:
@manehorizons/cadence-core@manehorizons/cadence-host-claude-code@manehorizons/cadence-host-codex@manehorizons/cadence-host-toolkit@manehorizons/cadence-types
Verification
- npm publish completed with provenance in the Release workflow.
- Remote tag
v1.51.1is verified before the GitHub Release is created. - npm package versions and GitHub Release metadata are verified after publish.
- Workflow run: https://github.com/manehorizons/cadence/actions/runs/30183850587