Recall goes blind at every milestone close: the corpus reads only live phase dirs #203
Labels
No labels
already-shipped
bug
documentation
duplicate
enhancement
external-review
good first issue
help wanted
in progress
invalid
needs-decision
proposal
question
security
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: crenshawdev/cadence-archived#203
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reproduced live, one hour after the fact
milestone-prune --mode deleteremoved.planning/phases/1and.planning/phases/2during today'sv3.5.2close. The recall corpus walker(
cadence-core/bin/planning.mjs:2036-2064) builds its corpus fromphases/<N>/SUMMARY.md,phases/<N>/UAT.md,phases/<N>/CONTEXT.mdandCAPTURE.md, and nothing else.So, right now, on this repo:
Zero hits from SUMMARY, UAT or CONTEXT. The LSE-01 decisions, the D-01 through
D-12 numbered decisions, the eight UAT criteria and the phase-2 goal check
shipped a few hours ago are already invisible to recall. Only
CAPTURE.mdsurvives the close, because it is the one corpus file that does not live under
phases/.Why this is the most serious finding in the review
PROJECT.md's stated Core Value is:Three of those four categories live only under
phases/<N>/. The close deletesthem from the live tree, and recall reads only the live tree. So the product's
central claim holds for exactly one milestone and then silently stops holding,
with nothing anywhere reporting the loss. The corpus does not degrade over a
project's life, it RESETS at every close.
The
--mode archivearm is no better for recall: the dirs move to_archive-<label>/, which the walker also does not read. And on a taggedrelease (
--mode delete, the default for a release milestone) git history isthe only remaining copy, which recall does not search either.
Scope note, so this is not overstated
Nothing is LOST. The artifacts are in git, and on an untagged close they are on
disk under
_archive-*. This is a recall/reachability defect, not a durabilityone. The damage is that automatic cross-milestone learning - the thing that
distinguishes Cadence from a folder of markdown - quietly becomes
single-milestone learning.
Exits, cheapest first
_archive-*too. One-line-ish for the untagged arm; does nothing fora tagged release, which is the common case here.
milestone-prunewrites thepruned phases' decisions and deviations into a single
.planning/SHIPPED-<label>.mdthat the walker reads, the way## Shippedalready preserves requirement rows for
/cad-auditafter the dirs are gone.This is the shape the codebase already chose for the same problem one layer up.
BM25 walk depend on shelling out to git with an unbounded corpus. Probably
wrong for this tool.
Option 2 mirrors an existing, working decision and is the recommendation.
Related
Directly undercuts the read-back gate proposed in #190: a gate that asks whether
a planner used prior decisions would be measuring a corpus that empties itself
every milestone. Fixing this is a prerequisite for that being meaningful.
Source: external strict re-review, 2026-08-16 (MEM-01, Medium). Verified live
here rather than taken on the reviewer's word.