Defer F16 the way this repository defers things (#742) - #755
Merged
Conversation
The release does not need F16, and #742 must not close for it. Closing it as "specified, not shipped" would leave what ADR-0027 rejected in its own Rejected section -- "A deferral is a promise with no date." A specification living on `main` is not a date, an owner, or a reopening condition, and a closed issue is not a claim anybody can check. So it takes F15's shape instead, which is the one deferral in this repository that can be audited: the issue stays open, the tickets say they are not due, and two conditions are written so somebody can tell by hand whether they have fired. Neither is instrumented, and that is stated rather than papered over -- a counter nobody reads adds a number and changes nothing, while a condition written to be countable at least has an answer when asked. Condition 1 is an operator on some other machine finding out late. Condition 2 is a repository validating commits with an older build nobody chose. Both start at zero. The interesting part is what is excluded. #433 -- the plugin pinned three releases behind -- is the strongest evidence available and does not count, because it was pinned by a distribution defect rather than by somebody not knowing. F16 addresses the second and would not have helped with the first. Writing that down is what stops it being cited later as occurrence 1, which would fire the condition on a defect this feature does not address. One citation was dropped rather than carried. The claim that ADR-0032 forbade `doctor` from querying the plugin cache is not in ADR-0032, which is the doctor diagnostic model, and no ADR in this repository mentions a plugin cache at all. It reached me second-hand and read as exactly the kind of support this section wanted. Limit: neither condition can fire on its own -- both need a person to notice and write a comment, and a condition that depends on somebody remembering is one that under-reports rather than one that is safe Blast: local Undo: easy Certainty: firm Record-Id: r-f16defer Provenance: authored Verified: ADR-0027 line 89 carries the quoted sentence in its Rejected section; ADR-0032 is `ADR-0032-doctor-diagnostic-model.md` and contains no plugin-cache text, and `grep -rl 'plugin cache' docs/adr/` returns nothing, which is why that support was removed rather than reworded CommitLore-Version: 2.0.0
CommitLore — record lintTrailers: clean — 3 commits in Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR. |
The previous commit removed a citation as unsupported: that ADR-0032 forbade `doctor` from querying the plugin cache. No ADR mentions a plugin cache, so the grep was right and the sentence was wrong.
The sentence was wrong; the support was not. It reached me with its subject changed -- "plugin cache" for "update lookup" -- and I checked the words rather than the claim. Reading ADR-0032:378-388 finds something stronger than what was passed on:
doctor's own process opens no socket -- no HTTP client, no update lookup
(... we do not ship the lookup at all), no telemetry, on any flag. [...]
Version skew is checked against *local* executables (inject-version), and
the #433 class of staleness is a distribution defect whose fix lives in
distribution -- `installSource` exists so the report can name which channel
to update, not so doctor can go ask the internet.
`grep -rln '#433' docs/adr/` returns that file and nothing else. It is the only place this repository names the incident, and it is where `doctor` declines the job by decision rather than by omission.
That matters to a deferral document specifically. It is not an argument that F16 is due -- this release does not need it -- but it is why nothing else will quietly cover the gap while it waits, which is exactly what a written reopening condition is for.
And it does not conflict with leaving #433 out of the counts. The same sentence calls it a distribution defect, which is the reason it is not an operator who did not know. The passage that supports the design refuses it as an occurrence.
Limit: this restores one support and the deferral does not rest on it -- if ADR-0032 were revised to ship an update lookup in doctor, the conditions above would still be the thing that schedules F16
Blast: local
Undo: easy
Certainty: firm
Record-Id: r-f16adr32
Provenance: authored
Verified: the quoted text is `docs/adr/ADR-0032-doctor-diagnostic-model.md:378-388` read in full rather than searched for a phrase, and `grep -rln '#433' docs/adr/` returns that path alone
CommitLore-Version: 2.0.0
Merged
MongLong0214
added a commit
that referenced
this pull request
Aug 18, 2026
A blind refutation round on this branch broke three of the four claims I put to it, and verifying one of them found a defect it had not been looking for. `gh pr create` renders "GitHub closes #123 as merged" into the canonical pull request's body. GitHub binds a closing keyword to the number straight after it, and a pull request closed by keyword is recorded closed with `mergedAt` null -- the opposite of the sentence containing it, and the opposite of what T-1502 accepts. Measured on #752 six hours ago: an integration body said "GitHub closes #752, #755, #756 ... as merged", the keyword bound to #752 alone, and that one was recorded closed while the five with no keyword were recorded merged. There is no API to convert it afterwards. This workflow would have reproduced it on every run, and no test read the body. Two ticket statements were also wrong against the file. "The job never checks out or executes a pull request's head" was borrowed from the rule #723 fixed for `preserve`, which only reads a pull request; this one rebuilds it, and rebuilding somebody's change means running it. Unsatisfiable as written, so it would have been dropped rather than met -- what the job split actually holds is that the runner executing that code has no credential. And the negative control the ticket named, skipping `artifact:manifest`, cannot be performed from a pull request: the step is hard-coded in a workflow loaded from the default branch and the source-only filter refuses workflow edits. A negative control nobody can run is the defect it was written to prevent, so it is replaced with one that can be: edit `dist/` on the pushed canonical branch and watch `ci.yml` go red. Limit: the canonical pull request asks for a merge commit and cannot enforce one -- squash and rebase are both enabled and the button remembers the last method used, which is how #760 closed five of six as merged Blast: module Undo: easy Certainty: firm Record-Id: r-t1502body Provenance: authored Verified: restored the keyword and watched the new test fail naming `closes #123`, then restored the fix and saw 21 tests pass across both workflow test files CommitLore-Version: 2.0.0
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.
The release does not need F16, and #742 must not close for it.
Why not "specified, not shipped"
That would leave exactly what ADR-0027 rejected, in its own Rejected section:
A specification living on
mainis not a date, an owner, or a reopening condition. A closed issue is not a claim anybody can check.F15's shape instead
The one deferral in this repository that can be audited:
Neither is instrumented, and that is stated rather than papered over. A counter nobody reads adds a number and changes nothing; a condition written to be countable at least has an answer when somebody asks.
doctornot runWhat is deliberately excluded
#433 — the plugin pinned three releases behind — is the strongest evidence available and does not count. It was pinned by a distribution defect, not by somebody not knowing. F16 addresses the second and would not have helped with the first.
Writing that down is what stops it being cited later as occurrence 1, which would fire the condition on a defect this feature does not address.
The support I nearly dropped, and why it is the strongest part
I removed a citation as unsupported: that ADR-0032 forbade
doctorfrom querying the plugin cache. No ADR mentions a plugin cache, so the grep was right — and the claim was still true. It reached me with its subject changed, and I checked the words rather than the claim.ADR-0032:378-388says something stronger:The only place this repository names the incident, and where
doctordeclines the job by decision rather than by omission. That is not an argument that F16 is due — this release does not need it — but it is why nothing else will quietly cover the gap while it waits, which is exactly what a written reopening condition is for.It also does not conflict with leaving #433 out of the counts. The same sentence calls it a distribution defect, which is the reason it is not an operator who did not know. The passage that supports the design refuses it as an occurrence.
Limit
Neither condition can fire on its own. Both need a person to notice and write a comment, so this under-reports rather than being safe.