Retire docs/findings/, migrating the record to GitHub issues - #346
Merged
Conversation
The six remaining findings are removed from the tree. Three were already captured by closed issues (r5-001/#130, r5-002/#131, r5-003/#129); the other three had no durable record anywhere and were migrated first, so nothing is lost to git history alone: - r4-001 -> #343 (SyncWorker's replay budget cannot distinguish an undelivered replay from a rejected one; severity major) - r4-002 -> #344 (the showcase GUI bypasses morph::forms with no rule-2 justification) - r5-004 -> #345 (Lightweight's pool performs no transaction cleanup; upstream LASTRADA-Software/Lightweight#583 is still OPEN, so this one was a live finding, not a settled one) This follows cf68403's rule for removing a finding -- content durably captured elsewhere first, never leaving a bare historical record behind. examples/FINDINGS.md now describes an issue-based pipeline. Its id-allocation machinery was entirely about file naming and is retired with it, but two pieces of its reasoning are kept because they are why that scheme existed and why it stopped: that a global sequence does not survive parallel branches ("a rule that every violation already satisfies is not a control"), and that a stale citation must look stale rather than resolve silently to the wrong file -- the hazard that survives the move, as `finding 004` citations resolving to the renamed r5-004 showed. Citations are repointed at the capturing issues (GETTING-STARTED.md, kanban/README.md) or reworded to describe the gap directly (pastebin/README.md, bookmarks/README.md, wasm_spike/README.md, whose instructions for allocating a new id no longer had a directory to allocate in). docs/superpowers/ is left alone: those are dated records of what was planned, and the lint excludes them by design.
The check added in #339 scanned docs/findings/ paths and required at least three of them, as a vacuity guard. With the directory retired that floor can never be met, so the check would fail every run for a reason unrelated to any drift. Removing it rather than lowering the floor: a floor of zero is the vacuous pass the floor existed to prevent, and a path scan over a directory that does not exist cannot be made meaningful. Note the section-citation scan's mutation test indexes scans by position -- the findings scan was the second `git ls-files` invocation matching its pattern, so break_section_scan's index moves 3 -> 2. Left unchanged it would have blinded the wrong scan and expected a diagnostic that no longer appears; the self-test's "scan's own file glob going stale" case still passes, which is what pins that. The residual half of this class -- comments citing a finding by bare id, with no path, which a path scan cannot see either way -- is tracked in morph#340.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Retires
docs/findings/and moves the finding record to GitHub issues.Capture before deletion
Three of the six were already captured by closed issues, so removing the file loses nothing:
r5-001r5-002r5-003The other three had no durable record anywhere — two had no linked issue at all — so they were migrated first, with their full text:
r4-001r4-002r5-004This follows
cf68403f's rule for removing a finding: content durably captured elsewhere first, "never leaving a bare historical record behind."examples/FINDINGS.mdNow describes an issue-based pipeline. Dispositions become
triage:labels and the issue's own state carries whether the finding is open; triage, fix budget, exit criteria and demotion policy are unchanged.The id-allocation machinery was entirely about file naming and retires with the directory — but two pieces of its reasoning are kept, because they are why that scheme existed and why it stopped:
finding 004citations in the tree resolve today to the renamedr5-004, an unrelated finding (see Ten code comments cite findings by bare id, which the new findings-citation lint cannot see #340).The lint check
check_spec_citations.sh's findings-citation check is removed rather than retuned. It required at least three findings-path citations as a vacuity guard; with the directory gone that floor can never be met, so it would fail every run for a reason unrelated to drift. Lowering the floor to zero would restore exactly the vacuous pass the floor existed to prevent.One subtlety worth review. The self-test blinds scans by position. The findings scan was the second
git ls-filesinvocation matching that pattern, sobreak_section_scan's index moves3 → 2. Left unchanged it would have blinded the wrong scan and waited for a diagnostic that no longer exists — a self-test that silently stops testing. The"the section-citation scan's own file glob going stale"case still passing is what pins this.The residual half of the class — comments citing a finding by bare id with no path, which a path scan never saw — is tracked in #340.
Citations
Repointed at the capturing issue (
docs/GETTING-STARTED.md,examples/kanban/README.md) or reworded to describe the gap directly (examples/pastebin/README.md,examples/bookmarks/README.md, andexamples/common/wasm_spike/README.md, whose instructions for allocating a new id no longer had a directory to allocate in).docs/superpowers/is deliberately untouched — dated records of what was planned, which the lint excludes by design.Verification
scripts/check_spec_citations.shandscripts/test_check_spec_citations.shboth pass; all 9 remaining self-test cases green.Open question for the reviewer
examples/FINDINGS.md's back-fill section still says back-filling review-round findings is "the first task of rung 0". That reads oddly now that the mechanism has changed under it, but rewriting the program's stated sequencing felt beyond a retirement PR. Flagging rather than deciding.