instar 1.3.871 → 1.3.873

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.
@@ -0,0 +1,153 @@
1
+ # Side-Effects Review — framework-stall-coverage-matrix PR-A
2
+
3
+ **Change:** PR-A of the framework-stall-coverage-matrix standard (spec:
4
+ `docs/specs/framework-stall-coverage-matrix.md`, converged 2026-07-18, approved by
5
+ Justin 2026-07-18 10:29 PDT, topic 29723). Ships: the canonical class registry
6
+ (`src/data/stall-classes.ts`), the matrix validator module, the CI ratchet test in the
7
+ whole-tree push suite, the offline-first class-registry codemod
8
+ (`scripts/stall-class-codemod.mjs`), seed matrices for all four
9
+ `IntelligenceFramework` members (`docs/frameworks/*-stall-coverage.md`), evidence
10
+ tests for claude-code covered rows, and the STANDARDS-REGISTRY.md entry. PR-B
11
+ (runtime gate wiring, acceptance/override machinery, `stall-matrix-live-check` job)
12
+ is the second staged PR per the spec's staged-landing plan — tracked by the spec
13
+ itself, not an ambient deferral.
14
+
15
+ ## Phase 1 principle check (recorded)
16
+
17
+ Does this change involve a decision point? **Partially — and deliberately only the
18
+ invariant half.** The validator performs structural validation exclusively:
19
+ front-matter parse, status-token legality, class-list completeness, symbol/evidence
20
+ existence + containment, charset/format checks, calendar aging arithmetic. The spec's
21
+ own "Decision points touched" table classifies these as `invariant`, and
22
+ `docs/signal-vs-authority.md` explicitly exempts hard-invariant validation at the
23
+ system boundary from the signal-vs-authority pattern. Every judgment call the
24
+ standard contains — whether a `covered` claim is TRUE, acceptance of declared
25
+ gaps/N-A reasons, class minting — is routed to a human authority (overseer /
26
+ dashboard-PIN acceptance) by the spec, and NONE of that machinery ships in PR-A. The
27
+ validator emits per-row `mechanically-verified: presence-only` so no downstream
28
+ surface can present `covered` as proven.
29
+
30
+ ## 1. Over-block
31
+
32
+ The CI ratchet fails pushes when a matrix is missing, malformed, incomplete, or
33
+ carries dead symbols/evidence. Legitimate inputs it could wrongly reject:
34
+
35
+ - A refactor renaming a detector symbol reds the matrices citing it. This is BY
36
+ DESIGN (matrices cannot rot), and the fix is one line in the matrix in the same
37
+ PR. Named in the failure message.
38
+ - A test file moved out of the push suite's effective collected set invalidates
39
+ evidence citing it — also by design (evidence no runner executes proves nothing).
40
+ - Future-dated `seededAt` is rejected — cannot stall the aging clock. A machine with
41
+ a badly skewed clock could reject a legitimately-seeded same-day row; bounded by
42
+ using date-only granularity (UTC) and accepting `seededAt <= today`.
43
+ - Mitigation for all: failure messages name the class id + rule; the ratchet
44
+ test's assertion message names the one-command fix (run the codemod) for the
45
+ class-growth case and "update the named matrix row" otherwise. No runtime
46
+ behavior is gated in PR-A, so an over-block costs a red push, never a
47
+ degraded agent.
48
+
49
+ ## 2. Under-block
50
+
51
+ - CI is hermetic by design: issueRef/closePath LIVENESS and posture/guards
52
+ cross-checks are NOT validated at CI (format only) — they belong to the PR-B gate
53
+ callsite and live-check job. Until PR-B lands, a dead closePath ref is invisible
54
+ to enforcement. Accepted, tracked by the staged-landing plan (PR-B is next in the
55
+ same drive session).
56
+ - The validator checks symbol PRESENCE (file exists + identifier appears), not
57
+ semantic truth of `covered` — by explicit spec design (the mind judges truth; the
58
+ gate report enumeration ships in PR-B).
59
+ - Evidence containment checks are static (identifier + marker + raw-signature
60
+ presence, effective-collection membership) — a maliciously-labeled test could
61
+ carry the markers without asserting anything. The §5 evidence tests shipped here
62
+ are genuine positive-controls; the static check is the structural floor, the
63
+ review is the judgment layer.
64
+
65
+ ## 3. Level-of-abstraction fit
66
+
67
+ Right layer. The class registry is data (`src/data/`), mirroring how other canonical
68
+ lists ship. The validator is a standalone module with two planned callsites (CI now,
69
+ gate in PR-B) rather than logic embedded in either — exactly the spec's "one
70
+ validator, two callsites" design. The codemod is a script, not server runtime — the
71
+ sweep/server must never mutate the checked-out tree (SourceTreeGuard posture).
72
+
73
+ ## 4. Signal vs authority compliance
74
+
75
+ Compliant. The CI ratchet is a brittle blocker over structural facts — the exempted
76
+ category (hard-invariant validation; same family as "this field must be a number").
77
+ It makes no judgment about meaning or intent. The judgment decision points are
78
+ explicitly deferred to human authorities via PR-B's acceptance machinery, and PR-A
79
+ ships no blocking surface that evaluates content semantics. No new brittle authority
80
+ over message flow, sessions, or agent behavior is introduced.
81
+
82
+ ## 5. Interactions
83
+
84
+ - The ratchet test joins the whole-tree push suite (`vitest.push.config.ts`); it
85
+ does not shadow or race any existing check. It shares the conformance-audit
86
+ symbol-check MECHANIC (file exists + identifier appears) but reads different
87
+ artifacts (matrix front-matter vs standards registry) — no double-fire.
88
+ - The codemod writes matrix files only; it never touches the registry or other
89
+ docs. Idempotent re-runs are no-ops (verified by unit test).
90
+ - Framework-issue filings + closePath commitments created by this build ride
91
+ existing ledgers (idempotent dedupKeys; commitment anchors CMT-890 (codex
92
+ gaps), CMT-891 (pi gaps), CMT-892 (claude mid-turn-interrupt), CMT-893
93
+ (covered-dark autoRecovery flip)). No new notification surface — nothing
94
+ here messages users.
95
+
96
+ ## 6. External surfaces
97
+
98
+ - New repo artifacts only (docs, src/data, scripts, tests). No API route, no config
99
+ key, no message to any user, no behavior change for deployed agents in PR-A. The
100
+ npm package ships the new module inertly; nothing imports it at runtime yet
101
+ (first runtime consumer is PR-B's gate).
102
+ - No timing/conversation-state dependence. CI runtime cost: one additional test
103
+ file parsing four small matrices — negligible.
104
+
105
+ ## 7. Multi-machine posture
106
+
107
+ Matrix artifacts + registry + validator are **unified-via-git** (repo-tracked
108
+ files; every machine sees the same content at the same SHA — the spec's declared
109
+ posture). The build-run side artifacts (framework-issues, commitments) live on the
110
+ development agent's machine — consistent with the apprenticeship registry's
111
+ declared machine-local posture, and the spec's §Multi-machine section names this
112
+ (closePath refs resolve on the gate machine, in PR-B). No stranding risk: PR-A
113
+ creates no per-machine runtime state.
114
+
115
+ ## 8. Rollback cost
116
+
117
+ Revert the PR. Matrices/registry/validator/codemod are inert without the PR-B gate;
118
+ the CI ratchet disappears with the revert. No data migration, no agent state, no
119
+ config. The filed framework-issues and closePath commitments remain as tracked
120
+ records (harmless, and still true — the gaps exist whether or not the standard
121
+ ships). Cheapest possible rollback class.
122
+
123
+ ## Second-pass review
124
+
125
+ Required? The change contains the words "gate"/"sentinel" only in docs; PR-A wires
126
+ no session-lifecycle, messaging, or dispatch behavior. HOWEVER — the CI ratchet
127
+ blocks pushes repo-wide, which is a block/allow decision on the development
128
+ pipeline, and the standard is safety-relevant. **Second-pass review: YES** (called
129
+ below).
130
+
131
+ ### Second-pass reviewer response
132
+
133
+ **Concern raised (2026-07-18):** the artifact's Phase-1 claim "the validator
134
+ emits per-row `mechanically-verified: presence-only`" was contradicted by the
135
+ shipped code — the marker existed in the spec but not in `StallMatrixResult`,
136
+ and the safety-argument property could have silently never landed. Secondary:
137
+ the over-block mitigation overstated the failure messages ("one-command fix"
138
+ was not actually in any output). Everything else verified: refusal hygiene
139
+ holds, validator genuinely hermetic, ratchet is the sole (push-time) blocking
140
+ surface, PR-A/PR-B split matches the spec, signal-vs-authority argument sound
141
+ under the hard-invariant exemption.
142
+
143
+ **Resolution (same session, before commit):** (1) `StallMatrixResult.rows`
144
+ added — one `{classId, status, mechanicallyVerified: 'presence-only'}` record
145
+ per canonical row, asserted by the ratchet test on every matrix; (2) the
146
+ ratchet's assertion message now names the codemod one-command fix for the
147
+ class-growth case; (3) this artifact's over-block wording corrected to match
148
+ the real output. Reviewer's non-blocking observations (basename echo on
149
+ direct-call misuse; conservative substring aging match) accepted as noted —
150
+ both fail in the safe direction.
151
+
152
+ **Post-resolution status: concerns resolved; review concurs with the
153
+ artifact as amended.**