Repository navigation
docs(map): archive and delete presentation, and record that we did - #369
Conversation
The branch that triggered the whole fork-branch audit is gone, and its entry now says so. It carried Demo.java, the code behind the asciinema cast embedded in the README - unmerged since 2021 and named in no ledger, which is exactly how a published artefact came to depend on a branch nothing in the repository knew about. WHAT WAS DONE, in this order and deliberately: an annotated tag `archive/presentation` was pushed at ffda9c6 and VERIFIED present on the remote before the branch was deleted. Reversing that order risks the commit being garbage collected between the two steps, which would make the deletion the thing the audit exists to prevent. Not merged, because the code is demo-grade and its own commit messages say so - one of them records an unfixed data race under load. Not dropped either, because the README still embeds the cast it produced, so the source behind a published artefact stays recoverable: `git show archive/presentation`. THIS IS THE FIRST TIME `branch_accounting` HAS DONE ITS JOB on one of our own branches. The entry previously read "DECIDED: archive under an archive/ tag, then delete. Not yet done, so this entry is the only record of the decision." It now carries `state: deleted` with the tip, the date and the tag - which is the whole contract: a future audit finding no `presentation` branch can tell a deliberate deletion from an accident without redoing the work. It also exercises the validator added alongside it, which requires a tip precisely for this state. ONE REFERENCE WAS ACTIONABLE AND WOULD NOW FAIL. The handoff note told a reader to rescue Demo.java from `origin/presentation` @ ffda9c6 - an instruction that silently stops working the moment the branch goes. Repointed at the tag. The archaeology note's account of the trigger is left as history, with the archival dated in place so nobody tries to fetch a branch that is not there. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
✅ Duplicate Code ReportTwo engines run in parallel for cross-validation. Each has its own thresholds tuned to its baseline - the real safety net is the per-engine "max increase vs base" check. ✅ PMD CPD
No new clones introduced by this PR. ✅ jscpd (language-agnostic)
No new clones introduced by this PR. Powered by astubbs/duplicate-code-cross-check |
🧪🔒 Quarantine Lane Report
🔴 expected while the owner PR is open · 🟡🎲 flapper, pass proves nothing · 🚨 a deterministic quarantined test passing means its fix landed: delete its |
|
…rows
Archiving `presentation` in the previous commit turned `test-check-upstream-map.sh`
red. Three arms anchored on the literal text `- {ref: presentation, state: ours,`,
which stopped existing the moment that row became `state: deleted` - so an ordinary,
correct manifest edit failed the test that guards the manifest.
IT FAILED AS "fixture anchor not found", which reads like a broken test rather than
a moved row, and sends the next person looking in the wrong place entirely.
EVERY NEGATIVE ARM NOW INSERTS ITS OWN ROW. A new `row:` mutation mode prepends a
synthetic entry to `branch_accounting`, so each arm depends on nothing but the
schema it is testing. Archiving a branch, retiring one or adding one cannot turn
them red again. Two arms keep the replace form deliberately: the unparseable case
corrupts the FILE rather than an entry, and has to.
Coverage went up rather than sideways while converting: `missing ref is rejected`
had no arm at all, and both terminal states now have the tip-required pair, so a
regression to just `("deleted",)` is caught - verified by injecting it and watching
only that arm go red.
WHY IT REACHED CI AT ALL, which is the more useful half. `bin/check-all.sh` runs
`check-*.sh`; the self-tests are `test-*.sh` and need `--with-tests`, which is what
the `repo: hygiene` job runs. So a local sweep reporting "15 ran, 15 passed" never
executed this file, and read as complete. The gate that would have caught it exists
and I did not run it - the same shape as the untracked-file miss recorded on
#327, one commit later and from the other direction.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@claude review this |
|
Claude finished @astubbs's task in 4m 39s —— View job Review:
|
|
Both points taken and both fixed in the description.
Correct, and that box was wrong rather than merely terse. This repo's rule is that an
Also right - it had grown into a second workstream while the description still described one. The On your two stated limits, both fair, and here is the evidence you could not reach from that session:
|
…record why The branch held the JStream deprecation from 2022 - two WIP commits, never merged, and named in NO ledger until this entry. That is exactly the gap the fork-wide branch audit exists to catch: an unmerged branch with live citations and no record, which is how a future audit finding it gone cannot tell a deliberate deletion from an accident. ORDER, AND WHY IT MATTERS. The annotated tag `archive/refactor/deprecate-jstream` was pushed at 8a8f650 and verified present on the remote AND pointing at the exact branch tip before the branch was deleted - the same order #369 followed for `presentation`, and for the same reason: reversing it risks the commits being collected between the two steps, making the deletion the thing the audit exists to prevent. WHY NOW: the circle closed. The 2026 restatement of the deprecation argued FROM the result-stream defect this PR fixes, and with that fixed the owner withdrew the queued removal rather than deprecate an API that works. Nothing was ever going to be merged from the branch. WHY NOT SIMPLY DROPPED: its javadoc is the only surviving statement of the DESIGN argument - "not a particularly useful interface", "there's no use for it really?" - which is a different claim from the defect, was not refuted by fixing the defect, and nobody has re-made. Whoever argues it next should start from what was already written rather than from scratch. `git show archive/refactor/deprecate-jstream`. All three inbound citations are repointed from the branch to the tag rather than left dangling - `bin/check-file-refs.sh` covers paths, not branch names, so nothing would have caught these. The orphan note gains what the pairing actually means: it and `feats/jstream-bounded-blocking-buffer` were reaching for the same thing from opposite ends, and this PR took a third route that leaves neither premise intact. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RVXBFaG4YXFP7Gjrj6pbVM
Description
origin/presentationhas been archived and deleted, and this records it. The branch carriedDemo.java, the code behind the asciinema cast embedded in the README - unmerged since 2021 andnamed in no ledger, which is exactly how a published artefact came to depend on a branch nothing in
the repository knew existed. It is the branch that triggered the whole fork-branch audit.
The decision was made in #327 and executed here. That entry read
"DECIDED: archive under an
archive/tag, then delete. Not yet done, so this entry is the onlyrecord of the decision."
What was done, in this order deliberately
archive/presentationpushed atffda9c6a3Reversing that order risks the commit being garbage-collected between the two steps - which would
make the deletion the very thing the audit exists to prevent.
Not merged, because the code is demo-grade and its own commit messages say so (one records an
unfixed data race under load). Not dropped either, because the README still embeds the cast it
produced, so the source behind a published artefact stays recoverable:
git show archive/presentation.This is the first time
branch_accountinghas done its jobThe entry now carries
state: deletedwith the tip, the date and the tag. That is the wholecontract: a future audit finding no
presentationbranch can tell a deliberate deletion from anaccident without redoing the work. It also exercises the validator added alongside it, which requires
a tip precisely for this state.
One reference was actionable and would now fail
handoff-fork-branch-audit.mdtold a reader to rescueDemo.javafromorigin/presentation@ffda9c6a3- an instruction that silently stops working the moment the branch goes. Repointed at thetag. The archaeology note's account of the trigger is left as history, with the archival dated in
place so nobody tries to fetch a branch that is not there.
Second commit: the self-test broke on this very edit
Worth its own section, because a reader of the description alone would not know the self-test was
reworked.
Archiving
presentationturnedbin/test-check-upstream-map.shred. Three of its arms anchored onthe literal text
- {ref: presentation, state: ours,, which stopped existing the moment that rowbecame
state: deleted- so a correct manifest edit failed the test that guards the manifest. Itfailed as "fixture anchor not found", which reads like a broken test rather than a moved row, and
sends the next person looking in the wrong place.
Fixed as a class rather than as two arms: a new
row:mutation mode prepends a synthetic entry, soevery negative arm depends on the schema it tests and nothing else. Archiving, retiring or adding a
branch cannot turn them red again. Two arms keep the anchored-replace form deliberately - the
unparseable case has to corrupt the file, not an entry.
Coverage rose while converting:
missing ref is rejectedhad no arm at all, and both terminal statesnow carry the tip-required pair. Verified by injecting the exact regression (
("deleted", "archived")narrowed to
("deleted",)) and confirming only that arm goes red.Why it reached CI:
bin/check-all.shrunscheck-*.sh; the self-tests aretest-*.shand need--with-tests, which is whatrepo: hygieneruns. A local sweep reporting "15 ran, 15 passed" hadnever executed the file, and read as complete.
Checklist
docs/features/-N/A - no user-facing feature; a branch-lifecycle recordbin/test-check-upstream-map.sh: a newrow:mutation mode, one genuinely new arm (missing ref is rejected), and tip-required coverage split across both terminal states. Verified by injecting the regression and watching exactly one arm go redce-simplifyandce-code-reviewlocally -N/A - docs only, so ce-simplify stops at its preflight. Happy to ask @claude review on the PR if you want a second pair of eyes on the ordering argument🤖 Generated with Claude Code
https://claude.ai/code/session_01SFRbSkHwaRw6YYFHHBWZ7p