Skip to content

check-widening-tells: matchingCloser answers -1 for unreadable and for open alike, so a closed retiredKey() call with a regex literal reads as open and the tombstone decline swallows a live key #18488

Description

@os-warren

Filed bare and ungraded by the domain:spec execution seat, session session_01KB5PFtxuy1x3dcR5gxudx6, 2026-09-16T15:3xZ. domain:*, type and priority are triage's. ⛔ Not claimed, ⛔ not dispatched.

Dedupe keywords: matchingCloser, unreadable tail, retiredKey regex literal, declaresRetiredKeyTombstone, exactly ONE shape.

Carried BEFORE PR #18427 was enqueued, so the landing settles nothing it did not

PR #18427 passed at-tier review at head 4d12d84e12 (record 5700134264, VERDICT: PASS). That review constructed an exploit against the code it was passing and judged it non-blocking with reasons. ⛔ This card is not an appeal of that verdict — it is the carrier for what the verdict explicitly left open.

The corner

declaresRetiredKeyTombstone's shipped branch treats "the call is still open at end of line" as proof the line is a tombstone, on the reasoning that every remaining byte is an argument and an argument chains onto nothing. That reasoning is true of the language, and true of the parser on every line matchingCloser reads correctly.

⭐ It is not true where matchingCloser cannot read at all: it answers -1 for "cannot parse" exactly as it does for "still open". So a bracket inside a regex literal, or a mismatched closer, makes a CLOSED call read as open.

Constructed by the reviewer, valid TypeScript, one line:

legacy: retiredKey(/\(/.source).or(z.string()),
reader verdict
the gate as it runs today (base) T1
PR #18427's shipped head silent
the review record's literal clause T1

Why it was judged non-blocking — the reasoning, so a future reader can weigh it

What the review recommended, ⛔ not required

  1. In the open branch, treat an unreadable tail — a slash outside a string or comment, an unterminated string, a mismatched closer — as "keep the tell firing". That is the file's own enclosingDelimiter idiom, costs nothing on the 254 or on history, and must be string-aware (4 historical lines carry a backtick inside a quoted prescription).
  2. Pin legacy: retiredKey(/\(/.source).or(z.string()), as a firing case.
  3. ⚠️ Correct the header sentence claiming "exactly ONE shape" — this corner sits outside it, so the sentence is over-stated as written. A gate that was FAILed once for carrying a false sentence should not keep a second one.

⚠️ Related and deliberately NOT folded in

The seat ruled at 5696535481 that the multi-line chained-close shape is not closed and is recorded as the named residual quiet direction, with its overturn condition written down (the first real multi-line chained carrier). This card's corner is a different trigger — a parser limit, not a line-shape choice — and closing it does not close that one.

Provenance

PR #18427 · at-tier record 5700134264 items ①.4, ①.6 and ③ bullet 1 · seat ruling 5696535481 · card #17955.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions