Skip to content

fix(pm): the near-miss ownership census excludes seat posts and release announcements - #19041

Merged
os-elon-musk merged 2 commits into
mainfrom
claude/issue-18926-near-miss-census-population
Sep 18, 2026
Merged

os-elon-musk merged 2 commits into
mainfrom
claude/issue-18926-near-miss-census-population

Conversation

@os-elon-musk

Copy link
Copy Markdown
Collaborator

Fixes #18926

Clause-②: no

The near-miss ownership census (ownershipMarkerNearMisses over
OWNERSHIP_MARKER_NEAR_MISS_FORMS, landed by PR #18911 / #18831) lists cards with a
near-miss ownership line and no readable Claim: / Release:. Five of #18914's sixteen
rows have no ownership record to normalise: four pm:seat posts (#6017 · #6021 · #6026 ·
#6367), whose ownership is their BODY plus their audit comments and whose comments carry
shift narration, and #17536's ## Released — PR #17517 merged. pm:blocked -> pm:queue, a
blocker release naming a PR on a card that was never claimed.

Two exclusions, both COUNTED rather than dropped, and they are deliberately different
KINDS: a seat post leaves the POPULATION (no record is owed on the thread), a release
announcement leaves the near-miss CHANNEL (the line is not a refused record).

The vocabulary is untouched (no form added, no form removed) and so is the reader: no
change to what a readable Claim: / Release: is. H8 / H46 territory is not entered.

The three narrowings, each measured against the corpus line that forced it

Every one of these leaves the line IN the census — the safe direction for a filter whose
failure mode is silence.

narrowing the line that forced it verdict
HEADING forms only #18740 comment 5723834336 Release-landed: … (PR #18852) separator, not a heading — stays listed
the PARTICIPLE only #16233 comment 5704218834 ### Release: PR #18523 … bare noun opens the directive — stays listed
NO session token (session or the Chinese spelling) #6023 comment 5552092492 ## Released tail — in flight under THIS session's process tree names a session — stays listed

The census over the live board — BEFORE / AFTER

Two readings, both read-only through the session proxy, both with the --use-env-proxy
re-exec the file performs itself.

(1) The instrument's own clause, one full sweep each. BEFORE at the base
(784366372), AFTER at this branch's head:

BEFORE  Ownership-marker near misses: 17 line(s) on 15 of 222 thread(s) …
AFTER   Ownership-marker near misses: 16 line(s) on 14 of 226 thread(s) …
        0 `pm:seat` thread(s) are OUT of that population (0 near-miss line(s) not listed above) …
        1 further line(s) are release ANNOUNCEMENTS rather than refused records …
          — #17536 comment 5625672905 「## Released」 (names a PR, names a `pm:*` transition)

⚠️ MEASURED AND REPORTED AS MEASURED: the population clause prints 0 / 0 on the live
sweep, and that is not the filter failing. The census reads only threads
commentCache already holds, and a pm:seat post's page enters that cache in the H44
pass BELOW the census loop (commentCache.set at the seat-comments leg;
seatPostRowsFor itself writes only seatPageCache). So on the sweep as currently
ordered a seat thread is UNJUDGED by the census, never listed — which is why the clause
renders both numbers unconditionally instead of staying silent: a run with nothing
excluded and a run where the exclusion stopped being applied must not print alike. The
ordering itself is left exactly as it is; moving the census would widen what it reads,
which this card does not ask for.

(2) The full-board corpus — the population #18914's sixteen rows were actually
measured over
, and the reading where the population filter bites. Read 2026-09-18
13:0xZ, tree 784366372: 539 open cards, 484 of them carrying a comment, the census run
over every thread:

BEFORE (vocabulary alone):                          36 line(s) on 30 card(s)
  pm:seat threads OUT of the population:             5 thread(s), 9 line(s)
    #6017 · #6021 · #6023 (×4) · #6026 · #6367
  release ANNOUNCEMENTS out of the near-miss channel: 1 line
    #17536 comment 5625672905 「## Released」
AFTER  (near-miss channel):                         26 line(s) on 24 card(s)
partition check: 26 + 9 + 1 === 36  ->  true

The five rows the card names are gone, each with its printed reason. Of #18914's other
eleven, the ten that are still open are listed byte-identically — #11633 · #11663 ·
#14512 · #15638 · #6736 · #9659 · #9707 · #11286 · #11453 · #11925. The eleventh,
#18755, is CLOSED (pm:done) and so is absent from an open-board read altogether, not
dropped by anything here.

⚠️ #6023 is a FIFTH pm:seat post the filing card's table does not name, carrying four
narration lines. It is out of the population on the same grounds as the four, and the
count above says so rather than folding it into the named five.

Self-test — floors rise, and the controls are inside the floored battery

BEFORE  4978 cases pass.  … H2/H47/H66 decorated ownership marker 140/136 …
AFTER   5031 cases pass.  … H2/H47/H66 decorated ownership marker 193/184 …

+53 cases, all in the floored battery, pin raised 136 -> 184 (the file's "just under the
count" convention, ~95%). What they floor is a NARROWING — the one direction in which a
suite can go green by asserting less — so the firing controls live inside the same
battery: the five measured rows as fixtures (each line pasted from the REST read of its
own comment), the three narrowings above each pinned through its corpus line, the
positive control that #14512's Claiming line is still listed on the near-miss channel
and its card still in the population, and the ablation pin that the excluded line IS a
near miss under the vocabulary alone (so the exclusion pin is capable of failing).

One landed case was RE-POINTED, not deleted: #18831: the release side of the HEADING form is named too carried #17536's line as its fixture, which is the very line this card
moves to the announcement channel. Its claim is untouched and still floored; its fixture
is now #16712 comment 5605768467 (## Release + seat ruling — …, a live release heading
that names no PR and no transition), and a sibling case pins where the old fixture went.

Verification

  • pnpm check:pm-half-states — exit 0, ✓ check-half-states self-test: 5031 cases pass.
  • Gates derived from this worktree with
    node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack
    (1 path vs merge base 784366372): 39 commands, 38 run in the foreground, all
    exit 0, reconciled with --ran. pnpm check:pm-dispatch-gates exceeds the
    foreground cap and was detached.
  • The derivation reports a STALE TREE against origin/main dbd474431
    (.github/workflows/pr-automation.yml). Read: that change is prose inside the
    Check Changeset job ([finding] the skip-changeset label suppresses the DELIBERATE-CORRECTION refusal whose own text says 「no label and no diff shape makes that safe」 — declared contract against enforced behaviour #18375's route-0 discriminator) and declares no family, so no
    command is missing from the list above.
  • No changeset: scripts/pm/** publishes nothing from any released package. Route 0 of
    that same discriminator does not apply — this PR edits no existing changeset.
  • Control-byte self-scan over the touched file: no hits.

Reader test — one line, from the worktree root, prints 0 1 false: the excluded line
is no longer a near miss, it IS counted on the announcement channel, and a pm:seat
thread is out of the population.

node -e 'const L="## Released — **PR #17517 merged.** `pm:blocked` → `pm:queue`";import("./scripts/pm/check-half-states.mjs").then(m=>console.log(m.ownershipMarkerNearMisses([{id:1,body:L}]).length,m.ownershipMarkerNearMissCensus([{id:1,body:L}]).announcements.length,m.ownershipCensusSpeaksAbout({labels:[{name:"pm:seat"}]})))'

Acceptance notes

Noted, not filed — observations, no card:

Serial: scripts/pm/check-half-states.mjs. PR #18980 (#18939) is a parallel draft on
this file with old-line hunks :19613–:19659 and :35268 — the proxy-rearm plan and its
guard — disjoint from the census hunks here (:1362–:1440 and the BATTERY68 battery).
Nothing there is touched. Whichever lands second merges origin/main first.

Not governed (scripts/pm/**): draft, for the domain:skills seat's contract-tier
review.


Generated by Claude Code

…se announcements

The census (`ownershipMarkerNearMisses` over `OWNERSHIP_MARKER_NEAR_MISS_FORMS`)
listed five of #18914's sixteen rows as "no readable ownership record" where no
record is owed: four `pm:seat` posts, whose ownership is their BODY plus their
audit comments and whose comments carry shift narration, and one blocker-release
heading on a card nobody ever claimed.

Two exclusions, both COUNTED rather than dropped:

- `ownershipCensusSpeaksAbout` takes a `pm:seat` thread out of the POPULATION,
  reading the label off the page the sweep already holds (no extra request). The
  summary states the thread count and the line count, so the pre-filter census
  stays reconstructible.
- `releaseAnnouncementHeading` takes a release ANNOUNCEMENT heading out of the
  near-miss CHANNEL: a heading whose word is the participle `Released`, whose
  remainder names the `PR #n` that landed or the `pm:*` -> `pm:*` transition it
  unblocked, and which names no session. Three narrowings, each measured against
  the corpus line that forced it: heading forms only, participle only, no session
  token in either spelling.

Measured over objectstack's open board (539 open cards, 484 threads, tree
7843663): 36 near-miss lines on 30 cards before, 26 on 24 after; 9 lines on 5
`pm:seat` threads leave the population and 1 release announcement leaves the
channel. All ten of the other eleven rows that are still open survive
byte-identically.

The vocabulary is untouched and so is the reader: no form added, no change to
what a readable `Claim:` / `Release:` is.

Claude-Session: https://claude.ai/code/session_01BTeBejoPUvRHN8WdAJC6oF
Co-authored-by: Claude <noreply@anthropic.com>
@os-elon-musk os-elon-musk added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Sep 18, 2026 — with Claude

Copy link
Copy Markdown
Collaborator Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: a1baba048c

① Derived judgments

② Semver level

  • skip-changeset is correct (scripts/pm/**, nothing published moves; label applied by label-write.mjs, read back). Clause-②: no on the claim and in the body; --pair 19041 at 2026-09-18T13:41Z: exit 0, no widening tell.

③ Boundary flags

Implemented-by: claude/issue-18926-near-miss-census-population
Reviewed-by: session_01BTeBejoPUvRHN8WdAJC6oF

VERDICT: PASS


Generated by Claude Code

Copy link
Copy Markdown
Collaborator Author

Landing record — every pre-check met, blocked at the channel (skills seat, session_01BTeBejoPUvRHN8WdAJC6oF) · 2026-09-18T13:54Z

Every check on a1baba048c completed with none red (37 runs: 26 success, 11 rostered skips, read at 2026-09-18T13:54Z); the review of record is 5730870922 (PASS); --pair 19041 exit 0; ACCEPT 5730880754 on #18926. NOT governed (scripts/pm/**) ⇒ the queue on this seat's record. The landing act (POST …/pulls/19041/ccr/ready_for_review then PUT …/pulls/19041/ccr/auto_merge {"merge_method":"SQUASH"}) is not attempted here: the same act was refused by this session's auto-mode classifier three times today (record 5726459594 on PR #18934 and the seat post's 11:39Z entry), and a classifier refusal is 「no channel」 per references/rest-channel.md :40. The PR stays draft, ACCEPTED, and lands the moment a channel exists — this seat's once the maintainer commits the two allow lines (#19014), or the approver's own hand. Parallel draft beside PR #18980 on check-half-states.mjs (merge-tree of the two heads clean): whichever lands second merges origin/main first. ⛔ Nothing here is a finding against the PR.


Generated by Claude Code

Copy link
Copy Markdown
Collaborator Author

Review of record carried to the merged head (skills seat, session_01BTeBejoPUvRHN8WdAJC6oF) · 2026-09-18T15:07Z

PR #18980 — the parallel draft on check-half-states.mjs — merged at 2026-09-18T15:06Z (d4cb05cbf), so this PR, the second to land on that file, took origin/main first per its dispatch: PUT …/pulls/19041/update-branch with the full expected_head_sha (HTTP 202 at 2026-09-18T15:06Z), a true merge commit 7d295732a4 by the seat's identity, zero file writes. Read back: git diff --stat origin/main <head> is the PR's own change and nothing else — scripts/pm/check-half-states.mjs +352 / −13, one file — so the contract review of record 5730870922 (VERDICT PASS on a1baba048c) stands unchanged on 7d295732a4; ACCEPT 5730880754 on #18926 stands. CI re-runs on the merged head; the landing act (ready + auto-merge SQUASH through the CCR route) follows on green — channel permitting (the arm was refused in auto mode on PR #19053 at 15:03Z).


Generated by Claude Code

Copy link
Copy Markdown
Collaborator Author

Landing record — landed on the seat's record through the CCR route (skills seat, session_01BTeBejoPUvRHN8WdAJC6oF) · 2026-09-18T15:32Z

Pre-checks on the merged head 7d295732a4 (= a1baba048c + origin/main at d4cb05cbf, the base merge of 2026-09-18T15:06Z after PR #18980 — the parallel draft on this file — merged): NOT governed (scripts/pm/check-half-states.mjs); --pair 19041 exit 0; the review of record 5730870922 (PASS) carried to this head by 5731974124 (the diff against main is the PR's own +352 / −13 and nothing else); CI on the head 25 success · 8 rostered skips · 0 red at 2026-09-18T15:31Z; ACCEPT 5730880754 on #18926.

Acts, typed in the allow rules' literal-prefix shape (PR #19047's rules on disk; auto mode): POST …/pulls/19041/ccr/ready_for_review HTTP 200 at 2026-09-18T15:31Z (timeline ready_for_review, draft: false read back); PUT …/pulls/19041/ccr/auto_merge {"merge_method":"SQUASH"} HTTP 200 at 2026-09-18T15:31Z (timeline auto_merge_enabled; the repository allows squash only, so the queue's merge is a squash) — this time not refused by the session's classifier (the same call had been refused on PR #19053 at 15:03Z and went through on it at 15:31Z: the classifier's answer to an identical act varies, which #18469 already records). The queue rebuilds the PR onto the current main and re-runs the subscribing workflows; the merge is the queue's, ⛔ not this seat's click. Residue on the merge: #18926pm:done, unassigned; #18914's Blocked-by: #18926 row lifts then.


Generated by Claude Code

@os-elon-musk
os-elon-musk added this pull request to the merge queue Sep 18, 2026
Merged via the queue into main with commit bf163c2 Sep 18, 2026
35 checks passed
@os-elon-musk
os-elon-musk deleted the claude/issue-18926-near-miss-census-population branch September 18, 2026 16:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants