-
v3.3.1 - the close stops lying about what it closed
StableAll checks were successfultest / node-test (git, 22) (push) Successful in 22stest / node-test (git, 24) (push) Successful in 25stest / node-test (other, 22) (push) Successful in 18stest / node-test (other, 24) (push) Successful in 18stest / node-test (planning, 22) (push) Successful in 1m27stest / node-test (planning, 24) (push) Successful in 1m19stest / node-test (prose, 22) (push) Successful in 30stest / node-test (prose, 24) (push) Successful in 29stest / node-test (review, 22) (push) Successful in 17stest / node-test (review, 24) (push) Successful in 20stest / node-test (routing, 22) (push) Successful in 31stest / node-test (routing, 24) (push) Successful in 39stest / self-verify (push) Successful in 17stest / typecheck (push) Successful in 22sreleased this
2026-08-15 15:30:21 +00:00 | 782 commits to main since this releaseFirst micro-release of the rolling cadence. Both fixes are
cmdMilestonePrune, so this is one surgery on one function.Fixed
milestone-prunestops reporting a half-finished close as a finished one. (#128)A phase whose directory could not be moved or deleted was collected as a warning and the loop continued, after which ROADMAP.md and REQUIREMENTS.md were pruned for every completed phase anyway and the envelope answered
ok:true, action:"pruned". The comment above that loop promised the opposite, that a rename which throws leaves both documents untouched. It never did, because the throw never left the loop.The directory pass now runs first and only the phases it actually cleared reach the documents, so the tree and the docs still agree. A partial application returns
ok:false, reason:"partial-prune"naming the phases that did not clear, and/cad-milestonehalts on it instead of committing the disagreement. Re-running picks up only what is left.An
_archive-<label>that is a symlink can no longer redirect the archive out of the planning root. (#138)The containment check was lexical, so a pre-existing link resolved inside the tree,
mkdirSyncsucceeded silently against it, andrenameSyncfollowed it. The path is now classified withlstatbefore anything moves, and a per-phase destination left behind by an interrupted close is refused rather than clobbered.Verification
1799 tests pass, self-verify reports no problems, typecheck clean. Four new seam tests, each shown red against the pre-fix seam.
Full changelog: https://git.jcrenshaw.dev/crenshawdev/cadence/compare/v3.3.0...v3.3.1
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)