Skip to content

Defer F16 the way this repository defers things (#742) - #755

Merged
MongLong0214 merged 3 commits into
mainfrom
f16-defer-in-the-f15-shape
Aug 18, 2026
Merged

Defer F16 the way this repository defers things (#742)#755
MongLong0214 merged 3 commits into
mainfrom
f16-defer-in-the-f15-shape

Conversation

@MongLong0214

@MongLong0214 MongLong0214 commented Aug 18, 2026

Copy link
Copy Markdown
Owner

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 deferral is a promise with no date."

A specification living on main is 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:

the issue stays open                      #742
the tickets say they are not due          T-1601 … T-1607, unscheduled
two conditions are countable by hand      both start at 0

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.

condition what counts count
a release goes unnoticed an operator on another machine, at least two releases behind, who did not know 0
a stale install enforces an older protocol a repository validating with an older build nobody chose, doctor not run 0

What 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 doctor from 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-388 says something stronger:

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, and the #433 class of staleness is a distribution defect whose fix lives in distributioninstallSource exists so the report can name which channel to update, not so doctor can go ask the internet.

$ grep -rln '#433' docs/adr/
docs/adr/ADR-0032-doctor-diagnostic-model.md

The only place this repository names the incident, and where doctor declines 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.

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
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown

CommitLore — record lint

Trailers: clean — 3 commits in origin/main..c87ef2a6df3677fc7792fe1b32dae7e10b1cb500
Active constraints: not read — commitlore: git log --follow accepts exactly one pathspec, so renames are not followed for 2 paths; query one path at a time to follow its rename chain (2 changed paths)

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
@MongLong0214 MongLong0214 mentioned this pull request Aug 18, 2026
@MongLong0214
MongLong0214 merged commit dfd8c65 into main Aug 18, 2026
12 checks passed
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant