instar 1.3.1022 → 1.3.1023
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/devCiFailures.d.ts.map +1 -1
- package/dist/commands/devCiFailures.js +22 -0
- package/dist/commands/devCiFailures.js.map +1 -1
- package/dist/commands/devClaimCheck.d.ts.map +1 -1
- package/dist/commands/devClaimCheck.js +23 -0
- package/dist/commands/devClaimCheck.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.1023.md +74 -0
- package/upgrades/rule3-rationale-devclaimcheck.eli16.md +55 -0
- package/upgrades/side-effects/rule3-rationale-devclaimcheck.md +73 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devCiFailures.d.ts","sourceRoot":"","sources":["../../src/commands/devCiFailures.ts"],"names":[],"mappings":"AAiBA,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAKD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAczE;
|
|
1
|
+
{"version":3,"file":"devCiFailures.d.ts","sourceRoot":"","sources":["../../src/commands/devCiFailures.ts"],"names":[],"mappings":"AAiBA,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAKD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAczE;AA2CD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqElF"}
|
|
@@ -43,6 +43,28 @@ export function extractFailureLines(annotations) {
|
|
|
43
43
|
}
|
|
44
44
|
return lines;
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* RULE 3.1 rationale — criticality x frequency x stability x fallback.
|
|
48
|
+
*
|
|
49
|
+
* CRITICALITY: lowest band. This reads a PR's failed check-runs and their
|
|
50
|
+
* annotations to print what broke. It is a DIAGNOSTIC, never a gate — the
|
|
51
|
+
* command returns 0 even when it finds failures. A wrong answer costs a
|
|
52
|
+
* contributor one confusing terminal read, never a merge decision.
|
|
53
|
+
* FREQUENCY: once per `instar dev:ci-failures <pr>` invocation, run by hand
|
|
54
|
+
* against a red PR. No loop, no polling, no retry amplification.
|
|
55
|
+
* STABILITY: `gh --json` / the check-run annotations endpoint is GitHub's
|
|
56
|
+
* documented machine-readable contract, requested with explicit fields —
|
|
57
|
+
* not prose scraped from stdout. An upstream shape change surfaces as a `gh`
|
|
58
|
+
* error or a parse failure, not as a silently reshaped object. Deterministic
|
|
59
|
+
* parsing is acceptable here without a canary.
|
|
60
|
+
* FALLBACK: loud on every path, which is why this detector needs no partial
|
|
61
|
+
* caveat. A non-zero `gh` exit rejects with the captured stderr; empty or
|
|
62
|
+
* malformed stdout throws inside JSON.parse and rejects as "gh returned
|
|
63
|
+
* non-JSON" (note there is no `|| \'null\'` default here, so empty output
|
|
64
|
+
* cannot degrade into a successful-looking empty result); and every caller
|
|
65
|
+
* catches, writes the reason via out.error, and returns exit 1. There is no
|
|
66
|
+
* path on which a failed read renders as a clean one.
|
|
67
|
+
*/
|
|
46
68
|
function defaultDeps() {
|
|
47
69
|
return {
|
|
48
70
|
ghJson: (args) => new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devCiFailures.js","sourceRoot":"","sources":["../../src/commands/devCiFailures.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devCiFailures.js","sourceRoot":"","sources":["../../src/commands/devCiFailures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devClaimCheck.d.ts","sourceRoot":"","sources":["../../src/commands/devClaimCheck.ts"],"names":[],"mappings":"AA4BA,mDAAmD;AACnD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,6DAA6D;IAC7D,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAOD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,EAAE,CAe5G;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5C,QAAQ,EAAE,MAAM,EAAE,GACjB,SAAS,EAAE,CAUb;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBrF;
|
|
1
|
+
{"version":3,"file":"devClaimCheck.d.ts","sourceRoot":"","sources":["../../src/commands/devClaimCheck.ts"],"names":[],"mappings":"AA4BA,mDAAmD;AACnD,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,6DAA6D;IAC7D,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAOD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,EAAE,CAe5G;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5C,QAAQ,EAAE,MAAM,EAAE,GACjB,SAAS,EAAE,CAUb;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAuBrF;AA2CD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkErF"}
|
|
@@ -99,6 +99,29 @@ export function readSpecHeads(specsDir) {
|
|
|
99
99
|
}
|
|
100
100
|
return out;
|
|
101
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* RULE 3.1 rationale — criticality x frequency x stability x fallback.
|
|
104
|
+
*
|
|
105
|
+
* CRITICALITY: lowest band. This detector answers "is another PR or approved spec already
|
|
106
|
+
* claiming these files?" before a build starts. It is ADVISORY — it never gates, blocks,
|
|
107
|
+
* or decides. A wrong answer costs a duplicated build (the 2026-06-05 collision this
|
|
108
|
+
* command exists to prevent), never a wrong verdict on someone else's change.
|
|
109
|
+
* FREQUENCY: once per `instar dev:claim-check` invocation, at build start. Not a hot path,
|
|
110
|
+
* no loop, no retry amplification.
|
|
111
|
+
* STABILITY: the highest available for an external read. `gh --json <fields>` is GitHub
|
|
112
|
+
* CLI's documented machine-readable contract, not prose scraped from stdout, and the
|
|
113
|
+
* fields are requested explicitly — so an upstream format change surfaces as a `gh`
|
|
114
|
+
* error rather than as a silently reshaped object. Deterministic parsing is therefore
|
|
115
|
+
* acceptable here without a canary or an LLM check.
|
|
116
|
+
* FALLBACK: asymmetric, and the asymmetry is the reason this rationale is worth reading.
|
|
117
|
+
* A THROWN error (gh missing, auth, network, malformed JSON) degrades LOUDLY — the
|
|
118
|
+
* caller records `ghDegraded` and reports spec-scan-only, so the user knows the PR half
|
|
119
|
+
* of the check did not run. But EMPTY stdout parses to `null`, which the caller's
|
|
120
|
+
* `?? []` renders as "zero PRs claim these files" with no degradation flag: a check that
|
|
121
|
+
* could not run becomes indistinguishable from one that ran clean. That path is narrow
|
|
122
|
+
* (`gh pr list --json` emits `[]` on success, not empty) but real, and it is tracked
|
|
123
|
+
* separately rather than papered over here.
|
|
124
|
+
*/
|
|
102
125
|
function defaultGhJson(args) {
|
|
103
126
|
return new Promise((resolve, reject) => {
|
|
104
127
|
execFile('gh', args, { maxBuffer: 32 * 1024 * 1024, timeout: 30_000 }, (err, stdout) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"devClaimCheck.js","sourceRoot":"","sources":["../../src/commands/devClaimCheck.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"devClaimCheck.js","sourceRoot":"","sources":["../../src/commands/devClaimCheck.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-07-28T09:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-28T09:37:06.269Z",
|
|
5
|
+
"instarVersion": "1.3.1023",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`src/commands/devClaimCheck.ts` reads GitHub by running `gh` and parsing its `--json` output —
|
|
9
|
+
textbook state detection under Rule 3 — but it entered `main` via #813 (2026-06-05) carrying
|
|
10
|
+
neither of the two things Rule 3 requires: an in-file Rule 3.1 rationale and a state-detector
|
|
11
|
+
registry row. Both are added here.
|
|
12
|
+
|
|
13
|
+
It survived because the pre-commit Rule 3 gate evaluates **staged** files only, so a file that
|
|
14
|
+
entered `main` without tripping the gate at its own commit time is never re-examined.
|
|
15
|
+
|
|
16
|
+
That is not a cosmetic gap. A merge stages everything, so anyone merging `main` into an older
|
|
17
|
+
branch is judged as the author of all of `main` and hits this refusal for a violation absent
|
|
18
|
+
from their own diff — a hard blocker on locally refreshing older open PRs. It blocked exactly
|
|
19
|
+
that work on 2026-07-28 and is the reason this was found at all.
|
|
20
|
+
|
|
21
|
+
The registry row is deliberately **🟡 Partial rather than 🔵 Exempt**, unlike the neighbouring
|
|
22
|
+
`gh --json` reads that are exempt on "versioned structured contract" reasoning. The difference
|
|
23
|
+
is the fallback. A thrown error (gh missing, auth, network) degrades loudly — the caller sets
|
|
24
|
+
`ghDegraded` and reports spec-scan-only. But empty stdout parses to `null`, and the caller's
|
|
25
|
+
`?? []` renders that as "zero PRs claim these files" with no degradation flag: a check that
|
|
26
|
+
could not run reading identically to one that ran clean. Narrow (`gh pr list --json` emits `[]`
|
|
27
|
+
on success, not empty) and advisory-only, so the blast radius is a false all-clear on a
|
|
28
|
+
pre-build hint — but it is named in both the rationale and the registry rather than papered
|
|
29
|
+
over, and the row flips to Exempt once that path degrades as loudly as the throw path.
|
|
30
|
+
|
|
31
|
+
Fixing the silent-empty path is a behaviour change and is tracked separately, not bundled into
|
|
32
|
+
a comment-only commit.
|
|
33
|
+
|
|
34
|
+
## What to Tell Your User
|
|
35
|
+
|
|
36
|
+
Nothing. No user-visible change, no new command, no behaviour difference in any conversation.
|
|
37
|
+
This is a documentation and registry fix to a contributor-facing CLI helper.
|
|
38
|
+
|
|
39
|
+
## Summary of New Capabilities
|
|
40
|
+
|
|
41
|
+
None. `instar dev:claim-check` behaves exactly as before — same flags, same output, same exit
|
|
42
|
+
codes. The only functional effect is that `main` stops failing its own Rule 3 gate, which
|
|
43
|
+
unblocks locally merging `main` into older branches.
|
|
44
|
+
|
|
45
|
+
## Evidence
|
|
46
|
+
|
|
47
|
+
- The violation was confirmed on `main`, not inferred: `grep -c "RULE 3"
|
|
48
|
+
src/commands/devClaimCheck.ts` on `origin/main` returns 0, and the file is absent from the
|
|
49
|
+
diff of the branch that hit the refusal.
|
|
50
|
+
- The refusal is reproducible, and so is the fix: the same staged change was **blocked** by the
|
|
51
|
+
Rule 3 gate before the rationale comment, blocked again for the missing registry row after it,
|
|
52
|
+
and **passed** once both halves were present. Each verdict was observed, not predicted.
|
|
53
|
+
- Comment-and-registry only — no statement, signature, export, or type is modified, so `tsc`
|
|
54
|
+
emits identical JS.
|
|
55
|
+
- Side-effects review: `upgrades/side-effects/rule3-rationale-devclaimcheck.md`.
|
|
56
|
+
- ELI16: `upgrades/rule3-rationale-devclaimcheck.eli16.md`.
|
|
57
|
+
|
|
58
|
+
## Correction after opening: this was TWO files, not one
|
|
59
|
+
|
|
60
|
+
The first version of this change covered only `devClaimCheck.ts` and claimed that unblocked merging
|
|
61
|
+
`main` into an older branch. **That claim was false**, and an A/B test caught it: branching from a
|
|
62
|
+
pre-#813 `main` commit and staging a merge of current `main` flagged **two** files —
|
|
63
|
+
`devCiFailures.ts` as well. Fixing one of two blockers unblocks nothing.
|
|
64
|
+
|
|
65
|
+
`devCiFailures.ts` now carries its own rationale and registry row. It is marked **🔵 Exempt** rather
|
|
66
|
+
than Partial, because unlike its sibling every failure path is loud: a non-zero `gh` exit rejects
|
|
67
|
+
with captured stderr, and its `JSON.parse(stdout)` carries no `|| 'null'` default, so empty output
|
|
68
|
+
throws rather than degrading into a successful-looking empty result.
|
|
69
|
+
|
|
70
|
+
**How the check nearly fooled me.** My first A/B run reported the fixed side PASSING — but the merge
|
|
71
|
+
had failed (a ref I had not fetched), so nothing was staged and the checker exited 0 over an empty
|
|
72
|
+
file list. A vacuous pass is indistinguishable from a real one unless you assert the check had input.
|
|
73
|
+
The re-run prints staged counts: 7,499 files / 905 `src/*.ts` on the failing side, and refuses to
|
|
74
|
+
read 0 staged files as a pass.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# ELI16 — the missing rationale that was blocking old pull requests
|
|
2
|
+
|
|
3
|
+
There is a rule in this repo (Rule 3.1) that says: if your code looks at some outside system
|
|
4
|
+
to figure out what state it's in, you have to write a short paragraph explaining *why it's OK*
|
|
5
|
+
to detect it that way. Four questions: how much damage does a wrong answer do, how often does
|
|
6
|
+
this run, how likely is the outside thing to change shape on you, and what happens when it
|
|
7
|
+
fails.
|
|
8
|
+
|
|
9
|
+
A pre-commit check enforces that rule. But it only inspects the files you are committing
|
|
10
|
+
*right now*. So a file that slipped into `main` without ever tripping the check is never
|
|
11
|
+
looked at again.
|
|
12
|
+
|
|
13
|
+
That's what happened to `src/commands/devClaimCheck.ts`. It arrived in June, it reads GitHub
|
|
14
|
+
by running `gh` and parsing the JSON that comes back — textbook state detection — and it has
|
|
15
|
+
no rationale at all.
|
|
16
|
+
|
|
17
|
+
**Why that stopped being merely untidy.** Merging `main` into an older branch stages *every
|
|
18
|
+
file in main*. Git then treats you as the author of all of it, so the check inspects the whole
|
|
19
|
+
thing, finds this file, and refuses your commit — for a violation you did not write and cannot
|
|
20
|
+
see in your own diff. Anyone trying to bring an old pull request up to date walks into it. It
|
|
21
|
+
blocked me last night.
|
|
22
|
+
|
|
23
|
+
**The change is one comment.** It adds the rationale that should have been there in June.
|
|
24
|
+
|
|
25
|
+
The one part worth reading is the "what happens when it fails" answer, because it is not
|
|
26
|
+
flattering. If `gh` genuinely breaks — missing, not logged in, no network — the tool says so
|
|
27
|
+
out loud and tells you it only managed to scan the specs. Good. But if `gh` returns *nothing
|
|
28
|
+
at all*, that empty result quietly becomes "zero pull requests claim these files", with no
|
|
29
|
+
warning. A check that could not run ends up looking exactly like a check that ran and found
|
|
30
|
+
everything clear.
|
|
31
|
+
|
|
32
|
+
That path is narrow, and this change does not fix it. It writes it down instead of leaving it
|
|
33
|
+
unmentioned, and it is tracked separately. A rationale that only lists reassuring facts is
|
|
34
|
+
worth very little — the point of the rule is to surface the part someone should worry about.
|
|
35
|
+
|
|
36
|
+
No behaviour changes. Nothing runs differently.
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## Correction after opening: this was TWO files, not one
|
|
40
|
+
|
|
41
|
+
The first version of this change covered only `devClaimCheck.ts` and claimed that unblocked merging
|
|
42
|
+
`main` into an older branch. **That claim was false**, and an A/B test caught it: branching from a
|
|
43
|
+
pre-#813 `main` commit and staging a merge of current `main` flagged **two** files —
|
|
44
|
+
`devCiFailures.ts` as well. Fixing one of two blockers unblocks nothing.
|
|
45
|
+
|
|
46
|
+
`devCiFailures.ts` now carries its own rationale and registry row. It is marked **🔵 Exempt** rather
|
|
47
|
+
than Partial, because unlike its sibling every failure path is loud: a non-zero `gh` exit rejects
|
|
48
|
+
with captured stderr, and its `JSON.parse(stdout)` carries no `|| 'null'` default, so empty output
|
|
49
|
+
throws rather than degrading into a successful-looking empty result.
|
|
50
|
+
|
|
51
|
+
**How the check nearly fooled me.** My first A/B run reported the fixed side PASSING — but the merge
|
|
52
|
+
had failed (a ref I had not fetched), so nothing was staged and the checker exited 0 over an empty
|
|
53
|
+
file list. A vacuous pass is indistinguishable from a real one unless you assert the check had input.
|
|
54
|
+
The re-run prints staged counts: 7,499 files / 905 `src/*.ts` on the failing side, and refuses to
|
|
55
|
+
read 0 staged files as a pass.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Side-effects review — Rule 3.1 rationale for `devClaimCheck`'s gh detector
|
|
2
|
+
|
|
3
|
+
**Change:** one doc-comment added above `defaultGhJson` in `src/commands/devClaimCheck.ts`.
|
|
4
|
+
23 lines, comment-only. No statement, expression, signature, export, or type is modified.
|
|
5
|
+
|
|
6
|
+
## What the change can affect
|
|
7
|
+
|
|
8
|
+
| Surface | Effect | Why |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| Runtime behaviour | **None** | A block comment. `tsc` emits identical JS; no code path is reachable through it. |
|
|
11
|
+
| Public API / CLI | **None** | `dev:claim-check` flags, output, and exit codes are untouched. |
|
|
12
|
+
| Tests | **None expected** | No test asserts on this file's source text. |
|
|
13
|
+
| The Rule 3 pre-commit gate | **Intended change** | This file stops being a violation. Verified: the gate refused this exact commit before the comment and accepted it after. |
|
|
14
|
+
| Other repos / migration | **None** | Not an agent-installed file, no config default, no template, no hook. Migration Parity does not apply. |
|
|
15
|
+
| Multi-machine posture | **N/A** | No state surface introduced. |
|
|
16
|
+
|
|
17
|
+
## The risk worth naming
|
|
18
|
+
|
|
19
|
+
The change is safe. The thing it *documents* is not, and I want that visible rather than
|
|
20
|
+
buried in a comment.
|
|
21
|
+
|
|
22
|
+
`JSON.parse(stdout || 'null')` resolves `null` on empty stdout. The caller's
|
|
23
|
+
`(await ghJson(...)) as ClaimPr[] ?? []` turns that into an empty array, and an empty array is
|
|
24
|
+
indistinguishable from "no open PR claims these files". Meanwhile a *thrown* error is handled
|
|
25
|
+
properly — it sets `ghDegraded` and the tool reports spec-scan-only.
|
|
26
|
+
|
|
27
|
+
So the loud path is loud and the quiet path is silently clean. That is the failure shape the
|
|
28
|
+
constitution calls out directly: a check that cannot run must not be indistinguishable from
|
|
29
|
+
one that ran clean.
|
|
30
|
+
|
|
31
|
+
**Not fixed here, deliberately.** Fixing it means changing behaviour (treating empty stdout as
|
|
32
|
+
a degradation), which deserves its own review and its own tests. Bundling it into a
|
|
33
|
+
comment-only change would hide a behaviour change inside a documentation commit. It is filed
|
|
34
|
+
separately.
|
|
35
|
+
|
|
36
|
+
**Reachability:** narrow. `gh pr list --json` emits `[]` on success, not empty output. It
|
|
37
|
+
would take a `gh` build that exits 0 while writing nothing, or truncated output. Low
|
|
38
|
+
likelihood, and the consequence is a false all-clear on an advisory tool — not a wrong gate
|
|
39
|
+
verdict.
|
|
40
|
+
|
|
41
|
+
## Rollback
|
|
42
|
+
|
|
43
|
+
`git revert`. Nothing depends on it; reverting restores the pre-existing violation and with it
|
|
44
|
+
the merge blocker.
|
|
45
|
+
|
|
46
|
+
## What I verified rather than assumed
|
|
47
|
+
|
|
48
|
+
- The file is `main`'s, not the PR's — it arrived via #813 (`144ff6122`, 2026-06-05) and is
|
|
49
|
+
absent from the branch diff.
|
|
50
|
+
- `main`'s copy carries zero `RULE 3` markers (`grep -c` → 0).
|
|
51
|
+
- The refusal is real and reproducible: the same staged commit was blocked before the comment
|
|
52
|
+
and passed the Rule 3 check after it.
|
|
53
|
+
- The fallback asymmetry is read from the code, not inferred — `catch` at the call site sets
|
|
54
|
+
`ghDegraded`; the `?? []` at lines 197/201 absorbs `null` with no flag.
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## Correction after opening: this was TWO files, not one
|
|
58
|
+
|
|
59
|
+
The first version of this change covered only `devClaimCheck.ts` and claimed that unblocked merging
|
|
60
|
+
`main` into an older branch. **That claim was false**, and an A/B test caught it: branching from a
|
|
61
|
+
pre-#813 `main` commit and staging a merge of current `main` flagged **two** files —
|
|
62
|
+
`devCiFailures.ts` as well. Fixing one of two blockers unblocks nothing.
|
|
63
|
+
|
|
64
|
+
`devCiFailures.ts` now carries its own rationale and registry row. It is marked **🔵 Exempt** rather
|
|
65
|
+
than Partial, because unlike its sibling every failure path is loud: a non-zero `gh` exit rejects
|
|
66
|
+
with captured stderr, and its `JSON.parse(stdout)` carries no `|| 'null'` default, so empty output
|
|
67
|
+
throws rather than degrading into a successful-looking empty result.
|
|
68
|
+
|
|
69
|
+
**How the check nearly fooled me.** My first A/B run reported the fixed side PASSING — but the merge
|
|
70
|
+
had failed (a ref I had not fetched), so nothing was staged and the checker exited 0 over an empty
|
|
71
|
+
file list. A vacuous pass is indistinguishable from a real one unless you assert the check had input.
|
|
72
|
+
The re-run prints staged counts: 7,499 files / 905 `src/*.ts` on the failing side, and refuses to
|
|
73
|
+
read 0 staged files as a pass.
|