Add contract style-lint cleaning pass - #46
Conversation
The script ships a #!/bin/sh shebang but was tracked as 100644, tripping the check-shebang-scripts-are-executable pre-commit hook in CI. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adversarial review:
|
| # | Pri | Type | Synthetic line | Scanner today | Root cause | Minimal fix |
|---|---|---|---|---|---|---|
| 1 | P0 | Precision | The helper shall reproduce the oracle drop behavior. / A small reference table… / …finally compared against the oracle… / …many oracle guards… |
False HIT (6/6) | (always|never|all|any) has no word boundary → matches inside sh**all**, sm**all**, fin**ally**, m**any** |
\b(always|never|all|any)\b (rg + ugrep here support \b; BSD grep would need [[:<:]]/[[:>:]]) |
| 2 | P0 | Precision | All correctness comparisons must … match the oracle. (real lines 170/172/205/294/349) |
False HIT (14/41) | all/any are real here but "match the oracle over all cells" is the carved-out near-exact-oracle requirement, not an absolute over a proxy |
Drop all|any from both proxy patterns; keep always|never|guarantees?|proves? |
| 3 | P0 | Precision | ULP boundaries make the keep-or-drop decision fragile. |
False HIT | bare fragile/unnecessary/overkill fire even when not attached to a verification method |
(fragile|unnecessary|overkill)[[:print:]]{0,40}(inspection|review|test|check|comparison|method) |
| 4 | P1 | Recall | Under the default configuration this overflow bound is comfortably met. |
MISS | G1 over-tightened to (config…)(satisfies|passes|meets|holds)[[:space:]]+(this|the|exactly); "…is comfortably met." lacks the trailing anchor and "the repository" prefix |
(config|configuration)[[:print:]]{0,40}(satisfied|met|passes|holds|comfortably) |
| 5 | P1 | Recall | The Nsf=150 configuration satisfies all stated tolerances. |
HIT — only incidentally via config…all |
If #2's fix lands (drop all), this reassurance line becomes a MISS |
Land #4 alongside #2 so reassurance isn't lost |
| 6 | P1 | Recall | The maintainer decided the linear-boundary path is the accepted approach. |
MISS | No authority-shaped-prose pattern at all | (maintainer|author|we)[[:space:]]+(decided|chose|intentionally), the[[:space:]]+accepted[[:space:]]+approach |
| 7 | P1 | Recall | We intentionally avoid recomputing the stride inside the loop. |
MISS | we intentionally avoid uncovered |
(we|intentionally)[[:space:]]+(intentionally|avoid|chose|prefer) |
| 8 | P1 | Recall | Human decision supplied after the second review: the threshold stays at 0.5. (real CHIRP wording) |
MISS | No human decision pattern |
human[[:space:]]+decision |
| 9 | P1 | Recall | Source inspection of the compiled kernel is insufficient for acceptance. |
MISS | Evaluative-method vocab stops at fragile/unnecessary/overkill; insufficient/sufficient/adequate uncovered |
\b(insufficient|inadequate)\b, \bis[[:space:]]+sufficient\b |
| 10 | P1 | Recall | A bare smoke test is sufficient to demonstrate compliance. |
MISS | reassuring direction of #9 | \bis[[:space:]]+sufficient\b, \bsuffices?\b |
| 11 | P1 | Recall | This paragraph overrides the Amendment 1 parity recipe. |
MISS | Only literal supersedes the Amendment exists; general supersession verbs + Amendment [0-9] dropped |
(supersedes|superseded|replaces|overrides|carried[[:space:]]+(from|forward))[[:space:]]+the, Amendment[[:space:]]+[0-9] |
| 12 | P1 | Recall | PR #40 surfaced two contract defects. |
MISS | Narrowed to review of PR; bare PR #N and surfaced dropped |
PR[[:space:]]*#[0-9]+, \bsurfaced\b |
| 13 | P1 | Recall | Where the literal text conflicts, the design intent controls. |
MISS | Spirit-over-letter coverage is only is normative/in favor of the letter/takes precedence/noncompliant by definition; "intent controls/governs/prevails" uncovered (high-leverage) |
intent[[:space:]]+(controls|governs|prevails|overrides) |
| 14 | P1 | Recall | The implementation should be the smallest clear change and must remain divergence-free. |
MISS | No must+should modal-conflict pattern |
should[[:print:]]{0,60}\bmust\b, \bmust\b[[:print:]]{0,60}should |
| 15 | P2 | Recall | The point of this exemption is the lift-out structure, not the raw CPU speed. |
MISS | value is…not (raw…) requires literal "value is"; point/goal/purpose uncovered |
(value|point|goal|purpose)[[:space:]]+is[[:space:]][[:print:]]{0,80}not[[:space:]]+(raw|mere|merely|just) |
| 16 | P2 | Recall | Reviewers may rely on the benchmark, though it is not authoritative. |
MISS | exclude-direction covered; permit-but-discount shape uncovered | not[[:space:]]+authoritative, may[[:space:]]+rely[[:space:]]+on |
| 17 | P2 | Recall | This assertion can be trusted because the ratio is fixed. |
MISS | reassurance via can be trusted/known to uncovered |
can[[:space:]]+be[[:space:]]+trusted, known[[:space:]]+to[[:space:]]+(keep|hold|be) |
| 18 | P2 | Recall | We currently assume the developer environment can run Python 3.14. |
MISS | assume/may assume (trust about current state) uncovered |
(may|currently)[[:space:]]+assumes? |
| 19 | P2 | Recall | This requirement exists to prevent a recurrence of the CD-A failure. |
MISS | exists because covered, exists to not; recurrence of the same defect class over-literal |
exists[[:space:]]+to; broaden to recurrence[[:space:]]+of[[:space:]]+the |
| 20 | P2 | Recall | Historically, the aligned path mirrored the fastmath expression. |
MISS | historically dropped |
\bhistorically\b |
| 21 | P3 | Precision | The bandwidth guard takes priority over the table-overflow guard. |
HIT | takes? priority fires on a legitimate ordering requirement |
Optional: takes?[[:space:]]+priority[[:space:]]+over[[:space:]]+(clarity|speed|correctness) |
| 22 | P3 | Precision | ULP-boundary handling is permitted but not required. (real L82) |
HIT | bare not required is the canonical legitimate permitted-alternative; 5 such hits on final |
No safe tightening — document as expected benign |
| 23 | P3 | Precision | Accumulate in place, not merely into oracle_slice. |
correctly MISS | confirms value is…not (merely) scoping closes the recall-gaps L581 concern |
none — keep scoped if #15 generalizes |
| 24 | P3 | Recall | Cells expected to be exactly zero are skipped. (real L312) |
correctly MISS | confirms G2 qualifier-list correctly excludes the technical FP | none — keep exactly out of the G2 list |
Script-level robustness (non-regex)
| # | Sev | Issue | Why it matters | Fix |
|---|---|---|---|---|
| S1 | High | Line-based only; no multiline/wrap matching. recall-gaps.md itself notes the most consequential miss (Nsf=150 … satisfies this / exactly) wraps across lines. |
Any wrapped target phrase is structurally unmatchable; recall is capped by line-wrapping, and "no candidates" reads as "no issue." | De-wrap a working copy before scanning, or state the limitation in the agent prompt. |
| S2 | High | No-word-boundary alternations (finding #1). | Largest precision sink → floods the list → models anchor and drop findings. | Word-boundary the short tokens. |
| S3 | Med | Empty-pattern catastrophe. A blank heredoc line = regex matching every line. No guard. | Silent flip to "flag everything." | grep -v '^[[:space:]]*$' the pattern file before use. |
| S4 | Med | Copy-paste footgun in recall-gaps.md. Its append block has # G1 … comment lines; neither rg --file nor grep -f treats # as a comment. |
Pasting verbatim inserts ~7 inert patterns that never fire — false confidence the gaps are closed. | Strip # lines from the block, or skip ^# in the script. |
| S5 | Low | Dual-engine parity assumed, not tested (rg preferred, grep -Ein -f fallback). They differ on \b portability, Unicode case-fold, {n,m}. |
A fix validated under rg may behave differently under grep. |
Pick one engine or add a parity self-test. |
Recommended minimal patch set (highest ROI first)
- S2/some partial doc strings for instrument_noise.py #1 — word-boundary
(always|never|all|any). One edit, kills the biggest FP class, zero recall loss. - Put all configuration parameters in a toml file #2 — drop
all|anyfrom both proxy patterns; pair with Make the iterative loops and plotting into functions #4/Create unit tests #5 G1 broadening so config-reassurance recall survives. - Structure as package and make installable #6–Improve HDF5 file structure and noise realization storage #9, Validate the instrument noise model and result fits #11–Handle NC differently #13 — re-add the dropped recall classes (authority prose, general supersession/
Amendment N/barePR #N,insufficient/sufficient, intent-controls). - S3, S4 — two one-line hygiene guards.
Open question (genuine recall-vs-noise tradeoff)
The narrowing of replaces/Amendment N/PR #N to literal-only forms looks deliberate — likely to suppress the Finding-Disposition-Ledger / Traceability-table noise the recall-gaps.md warns about (its lines 148–167). Findings #11–#12 reverse that. Two options: (a) re-add the general forms (max recall, more ledger noise), or (b) keep them narrow and instead exclude the ledger/traceability table ranges from the scan (recover prose recall without the table noise). Recommend deciding before freezing the pattern set.
🤖 Adversarial review generated with Claude Code (Opus 4.8). Synthetic examples are illustrative; HIT/MISS verified by execution against the scanner at this branch.
|
Adversarial review findings for The current scanner has a broad recall gap around permissive modal/waiver language and weak-evidence acceptance language. A fresh synthetic run based on the mined contracts only flagged 3 of 34 source-derived lines; most of the dangerous cases below were missed.
Main hardening implication: the tempting recall fixes are standalone |
|
Adding the original independent synthetic findings from before mining PR #42/CHIRP examples. These were generated from the PR #46 scanner behavior alone, before looking at real contract examples. Legend: Recall miss = current script emits no candidate. Precision hit = current script emits a candidate, but the statement is plausibly legitimate contract text.
Main adversarial pattern from this first pass: recall gaps were mostly permissive modal phrases ( |
Adversarial review —
|
| # | Pri | Synthetic steering/authority text | Target | Why missed |
|---|---|---|---|---|
| R1 | P1 | The reviewer **need not** inspect the lowered assembly. / *not* required |
Reviewer-relief / waiver | Emphasis marker between words breaks [[:space:]]+. Systemic across ~all multiword patterns |
| R2 | P1 | The maintainer's decision is binding and trumps the letter. / controlling and dispositive |
Authority-elevation | Vocab gap: only supersedes/overrides/precedence/priority/governs(after "intent")/controls; binding/trumps/dispositive/controlling/final absent |
| R3 | P1 | Escalate uncertainty to the human maintainer. / route to the human; defer to maintainer judgment |
Escalation authority | Only for human review/human decision/must…surface; escalate/route/defer/"pending human review" absent (real doc: "escalated to human", "routes to the human maintainer") |
| R4 | P1 | This contract supersedes and replaces the prior amendment. / Superseded and further tightened |
Override provenance | (supersedes|…)[[:space:]]+the needs literal the; conjunction split defeats it. Real in both repos (GS L16, CHIRP L423) |
| R5 | P1 | not strictly required / not necessarily prohibited / by no means required |
Hedged waiver | not[[:space:]]+required is contiguous; intervening adverb breaks it |
| R6 | P1 | the highest-authority inputs, above Design Intent; the decision here governs |
Section self-elevation (real L59–62, biggest authority move) | No pattern for highest-authority, above…Design Intent, or bare X governs (governs only after literal "intent") |
| R7 | P2 | Reviewers may treat the author's number as sufficient. / can safely skip / is not expected to |
Reviewer-relief, other modal | reviewers?[[:space:]]+(need not|must not|should not) only |
| R8 | P2 | The existing pipeline already complies. / out of the box this passes |
"Current state passes" | satisfies-verb list lacks compl(y/ies/iant); no already (passes|meets|complies) |
| R9 | P2 | (wrap) …the reviewer⏎need not inspect… |
Same as R1/R4, split at wrap | Line-oriented. Nuance: partly mitigated when a bare-noun pattern co-locates; true miss otherwise |
| R10 | P2 | A skipped test still satisfies the coverage requirement. / marking it xfail is acceptable |
QA-weakening | (xfail|skipped tests)…(counts as passing|marked met|acceptance) too tight |
| R11 | P2 | Take the implementer's word; the handoff is sufficient evidence. / at face value |
Evidence-substitution | can be trusted/can trust…(authoritative|evidence|report) only |
| R12 | P3 | has normative force and is binding guidance |
Normativity inflation | Only literal is normative (overlaps R2) |
| R13 | P3 | meets every requirement and passes all gates |
Blanket-compliance | satisfies all requirements exact only |
| R14 | P3 | added in response to PR #40; stems from the same defect class |
Provenance-as-authority | exists because/exists to…(recurrence|…) only |
| R15 | P3 | close enough for acceptance / good enough for now |
Tolerance-relaxation | oracle…default…(close enough|sufficient) requires "oracle" |
| R16 | P3 | passive must be surfaced / should be raised / has to be flagged |
Passive escalation | must[[:space:]]+(explicitly[[:space:]]+)?surface active-voice only |
Table 2 — Precision failures (benign text flagged; small change ≫ recovers precision)
| # | Pri | Benign text that fires | Pattern | Why FP |
|---|---|---|---|---|
| P-1 | P1 | L168 drop always comes from the …mask, never from…; L491 always in bounds…on GPU; L417 never form (DF/df_bw)*k |
48–49 | Numerics say always/never near oracle/gpu/numba/config constantly. 0/3 real hits were steering |
| P-2 | P1 | the aligned table holds R and Nfd / the configuration that satisfies the precondition |
55 | Unqualified superset of careful 53/54; fires on neutral "config…holds/satisfies" |
| P-3 | P1 | any line where should and must co-occur within 60 chars | 82–83 | Requirement prose pairs them routinely; near-pure noise |
| P-4 | P2 | historically the kernel used a Python loop |
93 bare historically |
Fires on any narrative use |
| P-5 | P2 | the array can be trusted to be C-contiguous |
86 can be trusted |
Benign technical guarantee |
| P-6 | P2 | timing reported on a best-effort basis |
109 bare best-effort |
Common benign qualifier |
| P-7 | P3 | refactor without documenting every intermediate |
112 bare without documenting |
Fires with no waiver context |
| P-8 | P3 | the current configuration object |
50 bare current (config|…) |
Broad net; flags benign references |
Concrete proposed edits (before → after)
# R1/R9 — emphasis + wrap (closes a whole CLASS). Preprocess before grep:
# sed -e 's/[*_`]//g' "$contract_file" | (optional) soft-join wrapped lines
# Scan the stripped copy but keep --line-number against original (markers add no lines),
# so reported line numbers stay correct; only highlighted span text differs.
# Lowest-risk variant: strip [*_`] only (closes R1, most of R5/R6); defer line-joining (R9).
# R4 — drop trailing-"the" (authority verbs are self-identifying)
- (supersedes|superseded|overrides|carried[[:space:]]+(from|forward))[[:space:]]+the
+ (supersed(es|ed)|overrid(es|den)|carried[[:space:]]+(from|forward))\b
# R2/R6/R12 — authority-elevation vocabulary
+ (is|are|shall[[:space:]]+be|remains?)[[:space:]]+(binding|dispositive|controlling|authoritative|final|normative)
+ (trumps?|outranks?|prevails?|highest[- ]authority|above[[:space:]]+(the[[:space:]]+)?Design[[:space:]]+Intent|source[[:space:]]+of[[:space:]]+truth)
# R3/R16 — escalation/routing
+ (escalat\w+|rout(e|ed|es)|defer\w*|flag\w*|surfac\w+|rais\w+)[[:print:]]{0,30}(human|maintainer|reviewer)
+ pending[[:space:]]+human
# R5 — allow intervening adverb
- not[[:space:]]+required
+ not[[:space:]]+((strictly|necessarily|generally|always|by[[:space:]]+itself)[[:space:]]+)?required
# R7 — broaden reviewer modal
- reviewers?[[:space:]]+(need[[:space:]]+not|must[[:space:]]+not|should[[:space:]]+not)
+ reviewers?[[:space:]]+(need[[:space:]]+not|must[[:space:]]+not|should[[:space:]]+not|may|can|should[[:space:]]+accept|(is|are)[[:space:]]+not[[:space:]]+expected)
# R8 — extend "current state passes" verbs
- (config|configuration)[[:space:]][[:print:]]{0,40}(satisfies|passes|meets|holds)[[:space:]]+(this|the|exactly)
+ (config|configuration|defaults?|pipeline)[[:space:]][[:print:]]{0,40}(satisfies|passes|meets|holds|compl(y|ies))[[:space:]]+(this|the|all|exactly)
+ already[[:space:]]+(passes|meets|complies|satisfies)
# P-1 — narrow always/never to an epistemic claim (kills the 0/3 false hits)
- (^|[^[:alnum:]_])(always|never)[^[:alnum:]_][[:print:]]{0,80}(oracle|reference|existing|prior|current|config|configuration|toolchain|numba|llvm|gpu|reviewer|test|assertion|requirement)
+ (^|[^[:alnum:]_])(always|never)[[:space:]]+[[:print:]]{0,30}(pass\w*|fail\w*|hold\w*|satisf\w*|compl\w*|correct|guaranteed|suffic\w*|wrong)
# line-49's `guarantees?|proves?` variant already covers "the oracle guarantees…"
# P-2 — delete the over-broad superset (53/54 retain real recall)
- (config|configuration)[[:print:]]{0,80}(satisfies|satisfied|met|passes|holds|comfortably)
# P-3 — require adversative coupling, not mere co-occurrence
- should[[:print:]]{0,60}must
- must[[:print:]]{0,60}should
+ should[[:print:]]{0,30}(but|yet|however|,)[[:print:]]{0,10}must
# P-4/P-6 — anchor bare words to a claim/waiver context
- historically
+ historically[[:print:]]{0,40}(pass\w*|work\w*|compl\w*|fine|never|always|green|accepted)
- best-effort
+ best-effort[[:print:]]{0,40}(accept\w*|suffic\w*|is[[:space:]]+(fine|enough|ok)|count)
# P-5 — require evidence-bearing subject
- can[[:space:]]+be[[:space:]]+trusted
+ (author|implementer|report|handoff|claim|evidence|number)[[:print:]]{0,20}can[[:space:]]+be[[:space:]]+trusted
Regression analysis
- Emphasis-strip preprocess (R1): only realistic new FP is exposing inline-code content (
`not_required`→not_required; no space → still won't match). Closes a large recall class at near-zero precision cost. Keep--line-numberagainst the original to preserve line numbers; only highlighted span text changes. - R4 (
supersed…\b): could fire on benign "this test supersedes the old assertion's role" — rare, still a provenance signal. Low risk. - P-1 (narrow always/never): "the oracle is never authoritative" is already caught by 84/85. No real recall loss.
- P-2 (delete 55): 53 needs object
this/the/exactly; 54 needs adefault/currentqualifier — the real steering form still matches. Pure FP removal. - P-3 (should/must coupling): may miss a strength-upgrade where the modals are far apart on a line; acceptable, real smell is adjacency.
- R2/R3 new patterns: "authoritative"/"binding"/"nonbinding" appear benignly as disclaimers in CHIRP ("no authoritative threshold was supplied"). They will fire on those — acceptable for a candidate-span tool, but raises the agent's classification burden (see C below).
Architecture / prompt-level adversarial modes (categories the "nearly-mechanical" design cannot reach)
- A — Section-level authority architecture is invisible. The biggest move in the real contract — a new top-level "Authoritative Human Decisions" section declaring itself "highest-authority … above Design Intent" (L57–62) — is caught only as a stray
is normativeand the HD-1 table cell, not as self-elevation. Phrase-keyed scanning under-weights authority established by structure across sentences. - B — Paraphrase escape is intrinsic to a vocabulary list. "Nearly mechanical" flagging means a drafter steers simply by avoiding listed tokens ("dispositive" vs "takes precedence"). The mechanical focus is itself the vulnerability; the prompt should instruct the agent to generalize a hit to its synonym class.
- C — Polarity blindness couples precision and recall. Regex can't separate claiming authority ("X is authoritative") from disclaiming it ("no authoritative threshold was supplied" — pervasive in CHIRP). Needs an explicit claim-vs-disclaimer rubric in the prompt, not just span emission.
- D — Code/emphasis tokens both hide and fabricate matches. Inline code and `*/_/`` markers cause FPs and conceal real text; behavior becomes a function of formatting, so a stable adversary can bold a phrase to evade detection (unless R1 normalization lands).
- E — Cross-line/cross-cell cumulative steering. Line-oriented matching misses wraps (R9) and steering that accrues across table rows or a paragraph; the review unit for authority-leak is the passage, not the line.
Top-priority shortlist: R1 (emphasis/wrap normalization) + P-1/P-2/P-3 (the three lowest-precision patterns) give the best harm-reduction per line of diff; R2/R3/R4/R5 close the most common authority/escalation/waiver vocabulary holes with minimal regression.
Addendum — findings from historical commit diffs of the reviewed
|
| # | Sev | Real removed text (verbatim, from history) | Class | Scanner |
|---|---|---|---|---|
| H1 | P1 (new category) | Any distorted-table variant is clearly benchmark-only… · The benchmark and tests must clearly identify that this is a distorted-table experimental path… · …allowed if clearly named and isolated… · Clearly distinguish the faithful tolerance regime… (≥5 distinct removed lines) |
Confidence / over-read adverbs — clearly, obviously, self-evident(ly), plainly, trivially, simply, of course, needless to say. These assert a conclusion is beyond scrutiny → over-read as authority. |
MISS — no pattern exists. Repeatedly removed by cleaning, so a real target the cheap pass should own. Perfect fit for the "nearly-mechanical" fixed-word-list design |
Proposed pattern (new line):
(^|[^[:alnum:]_])(clearly|obviously|self-?evident(ly)?|plainly|trivially|needless[[:space:]]+to[[:space:]]+say|of[[:space:]]+course)([^[:alnum:]_]|$)
Regression: simply is too polysemous to add bare (matches "simply add"); recommend leaving simply out or anchoring it (simply[[:print:]]{0,20}(works|passes|correct|enough)). Low FP risk for the rest in a requirements doc.
Real history exemplars that reinforce findings already in the main review
| # | Real removed/added text (verbatim) | Reinforces | Scanner |
|---|---|---|---|
| H2 | The functions are **not** required to cover such inputs. · …the exempt set is **not** the entire comparison domain… |
R1 (emphasis breaks [[:space:]]+) — now with real in-tree examples, not just synthetic |
MISS (bolded twin of a caught phrase) |
| H3 | The oracle and tests need not cover such inputs. |
New / R7-adjacent: generic need not (tests/functions/oracle need not) is only caught when preceded by reviewer. A bare-need not waiver pattern is warranted |
MISS |
| H4 | …Accepted and resolved with revised authority, superseded in v4. · TR38 … superseded in v4 by the consolidated requirement. |
R4 (supersed… only matches when followed by literal the); superseded in v4 / revised authority forms slip through |
MISS |
| H5 | An implementation satisfies this contract only if a reviewer can verify that: · A reviewer must be able to verify that diffs are limited to: · The reviewer must re-measure this ratio… |
R7 extension: reviewability-as-compliance framing (reviewer must/can/be able to <verb>), not just the relief modals (reviewer need not/must not/should not) the scanner covers |
MISS |
Proposed deltas implied by H3/H4/H5 (small, low-regression):
# H3 — generic need-not waiver (one new pattern)
+ \bneed[[:space:]]+not\b
# H4 — already in main review (R4): replace trailing-"the" requirement
- (supersedes|superseded|overrides|carried[[:space:]]+(from|forward))[[:space:]]+the
+ (supersed(es|ed)|overrid(es|den)|carried[[:space:]]+(from|forward))\b
+ revised[[:space:]]+authority
# H5 — broaden reviewer modal to include verification-framing (extends R7 edit)
reviewers?[[:space:]]+(need[[:space:]]+not|must[[:space:]]+not|should[[:space:]]+not
+ |must|can|may|must[[:space:]]+be[[:space:]]+able|is[[:space:]]+not[[:space:]]+expected)
Regression note for H3 (\bneed not\b): this will fire on legitimate scope-narrowing too (the contract uses "need not cover" benignly). It is a candidate-span tool, so that's acceptable, but it shifts load onto the agent's classifier — pairs with architecture note C (claim-vs-disclaimer rubric) in the main review.
Correction / confirmation
- Disposition-ledger rows that contain
human decision(e.g.Human decision says CI will be added later…,This third function is required by human decision.) are caught by the existinghuman[[:space:]]+decisionpattern — directly confirmed. No gap there. - The over-steered draft did not introduce a flood of authority language; its risk was structural/technical over-specification, which the style-lint pass is explicitly not responsible for. So the low 12/248 catch rate is not itself a scanner indictment — but it is a reminder (architecture note A/B) that the most consequential over-steering in this file's history was structural, beneath the phrase-level radar.
Net new actionable items from history: add the confidence-adverb pattern (H1, highest value — recurrent real cleaning target, currently zero coverage), the generic need not pattern (H3), and fold superseded in v4 / revised authority (H4) and reviewer-verification framing (H5) into the R4/R7 edits already proposed above.
ReviewWhat it does: Adds a read-only Findings1. 2. Everything else checks out: mirror byte-identity holds, the 🤖 Generated with Claude Code |
Mirror .claude/skills/contract-style-lint/SKILL.md to the agent file so the two copies are byte-identical again. Picks up the model:sonnet default, the highest-leverage default-to-finding line, and the cap-lift line. The agent file is unchanged by this commit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Blind A/B testing of
|
Summary
Verification