Skip to content

Commit 68adebe

Browse files
claude[bot]claude
andauthored
fix(pm): stop check-widening-tells T2 keying on a continuation operator, and price a false positive honestly (#16944)
T2 read two accidental variables as widening evidence, and #16822 measured both against real diffs: * a bare-string line was a closed-set member whenever the NEXT line did not begin `+ '…'`. An eight-fragment prose argument produced exactly one tell — its first fragment — and moving that fragment onto the calling line made the identical string stop being a tell. The continuation operator is now read on both sides, so the two spellings agree. * `CLOSED_SET_OPENER` fired on the constructor keyword whether the rewrite widened the set or narrowed it. An opener whose list opens on a later line declares no member, so when the same hunk removes an opener with the identical binding prefix, the set already existed and its members — still read one line each — decide. Both decline only on evidence the hunk carries; with no evidence the tell still fires. Neither recovers block state and neither claims direction. The docblock's "the remedy is one word in the claim comment — never a weakened rule here" is replaced by the real price: the exit-0 condition is "no tell, or the declaration is not `no`", so the only word that clears a false tell writes a widening that did not happen into a governance ledger. Its true half — never trade a loud failure for a quiet one — is restated as the standing rule. The sibling's twin of the same sentence is corrected with it; C5's exit condition does not move. Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU Co-authored-by: claude[bot] <claude[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent 050c32e commit 68adebe

2 files changed

Lines changed: 258 additions & 13 deletions

File tree

scripts/pm/check-clause2-carriers.mjs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,9 +1432,15 @@ export function pairWidening(pair, repo) {
14321432
* enqueue gate before the card may enqueue -- the diff is a fact; the card's
14331433
* semantics were a prediction", and until #16448 that gate was a human reading.
14341434
*
1435-
* ⚠️ A TELL, never a proof, in BOTH directions: a false positive costs the
1436-
* author one word in the claim comment, and a false negative is the cost the
1437-
* ruling accepted when it took the directional reading. So this row never
1435+
* ⚠️ A TELL, never a proof, in BOTH directions: a false negative is the cost
1436+
* the ruling accepted when it took the directional reading, and a false
1437+
* POSITIVE is repaired in the matcher — ⛔ not paid for by the author. This
1438+
* file priced it at "one word in the claim comment" until #16822 measured the
1439+
* price: the exit-0 condition is "no tell, OR the declaration is not `no`", so
1440+
* the only word that clears a false tell is `Clause-②: no` → `yes` — a
1441+
* widening recorded in a governance ledger that did not happen, and afterwards
1442+
* indistinguishable from one that did. ⛔ Nothing about this row is relaxed by
1443+
* saying so: the exit stays non-zero and stays a hard block. So this row never
14381444
* asserts that the diff widens -- it asserts that the diff has the SHAPE of one
14391445
* that does, while the claim says it does not, and names the file:line so the
14401446
* author can answer with the file open.

0 commit comments

Comments
 (0)