Skip to content

Retire docs/findings/, migrating the record to GitHub issues - #346

Merged
Yaraslaut merged 2 commits into
masterfrom
retire-findings-directory
Aug 30, 2026
Merged

Retire docs/findings/, migrating the record to GitHub issues#346
Yaraslaut merged 2 commits into
masterfrom
retire-findings-directory

Conversation

@Yaraslaut

Copy link
Copy Markdown
Member

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:

Finding Record
r5-001 #130, closed
r5-002 #131, closed
r5-003 #129, closed

The other three had no durable record anywhere — two had no linked issue at all — so they were migrated first, with their full text:

Finding Migrated to Note
r4-001 #343 severity major; no issue existed
r4-002 #344 no issue existed
r5-004 #345 upstream Lightweight#583 is still open — this was a live finding, not a settled one

This follows cf68403f'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. 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:

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-files invocation matching that pattern, so break_section_scan's index moves 3 → 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, and examples/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.sh and scripts/test_check_spec_citations.sh both 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.

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.
@Yaraslaut Yaraslaut added the documentation Improvements or additions to documentation label Aug 29, 2026
@codecov

codecov Bot commented Aug 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Yaraslaut
Yaraslaut merged commit 5b4262b into master Aug 30, 2026
38 of 39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant