Skip to content

docs(changeset): retire two present-tense "in-flight PR" claims before they publish (objectui#9706) - #9714

Merged
os-sales merged 1 commit into
mainfrom
claude/issue-9706-stale-in-flight-changeset-claims
Sep 17, 2026
Merged

os-sales merged 1 commit into
mainfrom
claude/issue-9706-stale-in-flight-changeset-claims

Conversation

@os-sales

Copy link
Copy Markdown
Collaborator

Fixes #9706

Clause-②: no

Two unconsumed .changeset/8478-*.md bodies asserted, in the present tense, that part
of their remaining scope was "held by in-flight PR ...". A changeset body publishes
verbatim into the CHANGELOG, so at the next @object-ui/types release these become
permanently published false statements about repo state. The window is live: release pull
request objectui#5400 is open and its branch already carries both sentences verbatim in
packages/types/CHANGELOG.md. Repairing the bodies on main regenerates that branch.
⛔ Nothing here touches objectui#5400 or changeset-release/main.

The two PR states, read live from the REST API before writing

Read at 2026-09-17, GET /repos/objectstack-ai/objectui/pulls/NUMBER, not taken from the
card's restatement:

PR reading
objectui#8763 state=closed merged=true merged_at=2026-09-09T08:11:20Z
objectui#8799 state=closed merged=true merged_at=2026-09-09T11:40:18Z
objectui#8766 (control, cited in past tense already) state=closed merged=true merged_at=2026-09-09T05:33:13Z

What changed — one sentence per file, prose only

.changeset/8478-describe-line-addresses.md, before:

The remaining 15 addresses (form.zod.ts, layout.zod.ts, complex.zod.ts) are out of
scope for this PR — held by in-flight PR #8763 (form.zod.ts /
layout.zod.ts); complex.zod.ts's hold (PR #8766) cleared when
that PR merged during this round, so its 6 addresses return to the queue rather than
riding this PR's scope.

after:

The remaining 15 addresses (form.zod.ts, layout.zod.ts, complex.zod.ts) were out
of scope for this PR — form.zod.ts / layout.zod.ts were held while PR
#8763 was open; complex.zod.ts's hold (PR
#8766) cleared when that PR merged during this round, so its 6
addresses returned to the queue rather than riding this PR's scope.

.changeset/8478-zod-pins-form-layout.md, before:

The remaining 6 addresses (zod/complex.zod.ts) stay out of scope for this PR — held by
in-flight PR #8799 — and the card does not close here.

after:

The remaining 6 addresses (zod/complex.zod.ts) stayed out of scope for this PR and
returned to the queue rather than riding this PR's scope — the card did not close here.

Neither replacement contains a present-tense assertion about any other PR, branch or card
— that is the defect class itself, and a repair that reintroduced it would rot the same
way. The objectui#8766 clause in the first file was left verbatim: it was already
past tense and accurate, and it is not this card's target.

The six complex.zod.ts addresses — the contradiction, settled

The two bodies disagreed about the same six addresses: the first said the hold cleared and
the six returned to the queue; the second (written later) said those six were held by
in-flight objectui#8799. The first is the true one, and both now say the same thing.
Evidence, in order of decisiveness:

  1. The second claim was already false when it landed. objectui#8799 merged
    2026-09-09T11:40:18Z. The pull request that introduced that body, objectui#8822,
    merged 2026-09-09T12:52:14Z — 72 minutes later. The sentence was born describing a
    state that had already ended.
  2. A separate PR carried the six. objectui#8835 (fix(types): drop stale source-line citations from 6 published describe() strings) merged 2026-09-09T13:31:48Z; its file
    list is exactly .changeset/8478-zod-pins-complex.md (added) and
    packages/types/src/zod/complex.zod.ts (modified). The six went back to the queue and
    were picked up on their own, which is precisely what the first body said would happen
    and the opposite of "riding objectui#8799's scope".
  3. objectui#8478 reached state=closed at 2026-09-09T13:31:50Z, two seconds after
    objectui#8835 merged.
  4. The tree agrees today. A paren-matching scan of every .describe() argument on
    396a1c198 finds 0 NAME.ext:NNN addresses in complex.zod.ts (167 .describe()
    calls), form.zod.ts (203) and layout.zod.ts (91). Lit control on the same corpus:
    the bare address matcher still fires 7 times in complex.zod.ts — in // and JSDoc
    comments, which were never in objectui#8478's population.

⚠️ Also checked: objectui#8799 did modify complex.zod.ts, so it was a genuine hold
while it was open. The defect is the tense, not the attribution.

Scope — exactly two files

 .changeset/8478-describe-line-addresses.md | 10 +++++-----
 .changeset/8478-zod-pins-form-layout.md    |  4 ++--

Frontmatter untouched, and that is measured rather than asserted:
check-changeset-overwrite prints declared at base: @object-ui/types: patch /
declares now: @object-ui/types: patch for both files.

Gates — exit code captured to disk before any pipe

gate exit printed verdict
pnpm check:changeset-claims 0 No pending changeset names a file this change touches. (report-only)
node scripts/check-changeset-overwrite.mjs 0 2 modified, both @object-ui/types: patch at base and now — the gate's own case 2, "CORRECTING a declaration on purpose ... prose that no longer matches" (report-only)
node scripts/check-changeset-presence.mjs 0 No source or published contract of a released package changed in this range, so no changeset is owed.
node scripts/check-changeset-fixed.mjs 0 All workspace packages are in the changeset fixed group.
node scripts/check-changeset-no-major.mjs 0 No changeset declares a major bump.
pnpm check:control-bytes 0 OK (scanned 7814 tracked text file(s); skipped 85 binary)
pnpm check:new-line-citations 0 0 new citation(s), enforcement report-only, with its own four synthetic controls PASSing
pnpm check:pending-changeset-literals 0 No test source names a pending changeset.
node scripts/check-governed-queue-guard.mjs --test on both paths 0 NOT GOVERNED — 2 path(s) checked against 5 governed surface(s)

Controls, because a zero on an unlit instrument is not a reading:

  • Governed guard, lit: the same script on AGENTS.md exits 3, GOVERNED.
  • Control-byte scan of the two files: grep -naP exits 1 (no hits); the same
    expression on a file holding one BEL byte exits 0.
  • The in-flight scan below reads 0 on a corpus where the lit control reads 1327.

⚠️ The census is deliberately not a git grep: these bodies wrap at about 80
columns and the offending sentence wraps mid-phrase, so a line-anchored matcher cannot see
it. The scan collapses whitespace per file first. Before: 2 hits. After: 0, lit control
1327 files of 1637, absent control 0.

No source file moved, no released package moved, no other changeset touched. Nothing owed
in pnpm test / pnpm lint: the diff is markdown prose in .changeset/, and no package
source changed. Repository-wide scans belong to CI.

Deliberately not done

  • Other pending changesets of the same shape are reported, not repaired —
    objectui#9713 already tracks that wider class and the routing is the PM's. The
    whitespace-tolerant census over all 1637 pending declarations found no other "in-flight
    PR" claim; the one adjacent observation is recorded in the report rather than acted on.
  • objectui#5400 and changeset-release/main: untouched, unread beyond what the card
    already recorded, not commented on.

Generated by Claude Code

…e they publish

Two unconsumed `.changeset/8478-*.md` bodies asserted, in the present tense, that
part of their remaining scope was "held by in-flight PR ...". Both named PRs
merged on 2026-09-09 (objectui#8763 at 08:11:20Z, objectui#8799 at 11:40:18Z,
read live from the REST API). A changeset body publishes verbatim into the
CHANGELOG, so at the next `@object-ui/types` release these become permanently
published false statements about repo state.

Prose only; one sentence per file; frontmatter untouched (both still declare
`@object-ui/types: patch`). The replacements carry no present-tense assertion
about any other PR, branch or card.

The two files also disagreed about the same six `zod/complex.zod.ts` addresses:
the first said the hold cleared and the six returned to the queue, the second
said they were held by objectui#8799. The first is the true one, and both now
say so. Evidence: objectui#8799 merged 72 minutes BEFORE objectui#8822 (the PR
that introduced the second body) merged, so that claim was already false when it
landed; the six were then carried by a separate PR, objectui#8835, which merged
2026-09-09T13:31:48Z and closed objectui#8478 two seconds later; and no
`.describe()` line address remains in `complex.zod.ts` today.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UanLVj6xvbS6puBCewLr8L
@os-sales
os-sales marked this pull request as ready for review September 17, 2026 19:02
@os-sales
os-sales added this pull request to the merge queue Sep 17, 2026
Merged via the queue into main with commit 3172b85 Sep 17, 2026
36 checks passed
@os-sales
os-sales deleted the claude/issue-9706-stale-in-flight-changeset-claims branch September 17, 2026 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Two pending .changeset bodies publish a present-tense “held by in-flight PR” claim for PRs that merged 8 days ago

2 participants