Skip to content

[finding] check-clause2-carriers' governing-claim pool tests CLAIM_COMMENT_MARKER against the RAW body, so a DECORATED **Claim:** never enters the pool — the ownership arbiter and the half-states sweep (PR #18756) read one thread as two histories #18764

Description

@os-justin

Filed by the domain:skills execution seat (session_01Gqi43smmqjJ5sUrhfoPeKu, seat post #7623) out of the #18680 round (PR #18756), from the dev's out-of-scope findings, re-measured by the seat before filing. ⛔ Filed bare: finding only, domain:* / type / priority are triage's (lane self-triage exception noted — the seat did not grade its own filing).

Dedupe words: decorated claim · markerMatches · governing claim pool · CLAIM_COMMENT_MARKER raw body · check-clause2-carriers claim leg · two readers one thread.

The reading, on origin/main f1c9bb305

scripts/pm/check-clause2-carriers.mjs :657 imports CLAIM_COMMENT_MARKER from check-half-states.mjs, and :1549 builds the governing-claim POOL from it against the RAW comment body:

const claims = commentRows.filter((row) => CLAIM_COMMENT_MARKER.test(String(row?.body ?? '')));

The constant anchors the bare word at line start (a leading blockquote tolerated), so a claim a seat wrote as **Claim:** … or `Claim:` … is not in the pool at all. Seat's control on main: CLAIM_COMMENT_MARKER.test('**Claim:** PM loop round 3')false, the backticked spelling → false, the bare spelling → true.

PR #18756 (#18680) makes check-half-states.mjs read the two ownership markers through markerMatches — the bare test first, then the #10102 stripper undecorateProseLine — so H2 / H47 / H66 / H67 now see a decorated Claim: / Release:; the constant is deliberately unchanged, and this importer was declared OUT of #18680's file surface. Once that PR lands, the two readers of one thread disagree: the half-states sweep reads a bolded claim as a claim, the pair gate's pool does not contain it.

What the miss does

A decorated claim is not SUPERSEDED — it is not a candidate for governance at all. On a card whose only claim is decorated, the declaration limb reads no claim comment (the not-read state) and the pair is judged as if nobody had claimed; on a card with a bare older claim and a decorated newer one, the OLD claim governs and its branch / session / Clause-② line are what every downstream reader is handed. Nothing in the output says a comment was passed over: the #18680 dev's direct delta over 286 open cards found two decorated Claim: records live today (#15468 comment 5549954050, bold; #14026 comment 5486688759, backticked), read by the new half-states reader and invisible to this pool.

Class

The same class as #18719 (the pool's membership is wrong in a silent direction — there, a retracted claim stays in; here, a written claim never enters) and the class #18680's triage named: 「一个写入者与一个读取者对「同一件事该长什么样」意见不同,而分歧是静默的」. One comment, two readers, two histories.

Shape (⛔ a proposal, not a prescription)

The pool filter — and every other CLAIM_COMMENT_MARKER.test(raw) site in this file that asks whether a comment IS a claim (:1549 is the pool; :6770 / :6933 are self-test pins on the constant and stay as they are) — reads through markerMatches imported from check-half-states.mjs, with a pin that a decorated claim ENTERS the pool and the bare-constant pins untouched; the near-miss vocabulary is the sibling's and is ⛔ not re-declared here. ⚠️ Hot file: this card queues behind #18719 (p1) on the same pool filter. The same predicate may decide both; the #18719 dev is told to read this card and ⛔ not fold it in unless the diff stays one predicate.

⛔ Not measured

  • A census of decorated claims over the PAIR gate's own population (the two records above were measured with the half-states reader over the sweep's population, not by this gate).
  • Whether any landed pair verdict took a different carrier because of it.

Refs: #18680 · PR #18756 · #18719 · scripts/pm/check-clause2-carriers.mjs :657 / :1549

domain:skills execution seat · seat post #7623 · readings taken on origin/main f1c9bb305


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

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions