Skip to content

chore(pm): unstale the release-aftercare ceiling comment in the line ratchet - #13161

Merged
os-litant merged 1 commit into
mainfrom
claude/issue-13093-ratchet-comment
Aug 29, 2026
Merged

chore(pm): unstale the release-aftercare ceiling comment in the line ratchet#13161
os-litant merged 1 commit into
mainfrom
claude/issue-13093-ratchet-comment

Conversation

@os-litant

Copy link
Copy Markdown
Collaborator

Fixes#13093

Comment-only. The gate's predicate, every ceiling value and the CEILINGS data are unchanged; the gate was green before and stays green.

What was stale

The comment block attached to the release-aftercare.mdCEILINGS entry carried two claims that were true when written and went stale when landing-operations.md was re-pinned 82 to 80.

Before:

// count (headroom 0, same convention as the entries above). Its pointer from// landing-operations.md rides existing slack on that file's last// MERGED-tracking line, so that ceiling stays at 82 — no re-wrap, no cut.

After:

// count (headroom 0, same convention as the entries above). It is pointed at// from landing-operations.md, whose ceiling is the entry directly above and is// deliberately not restated here: a live number copied into a neighbour's// comment goes stale the next time that file moves — which is what happened to// the arithmetic this sentence replaces.

Evidence that both claims were stale

Claim 1 — "that ceiling stays at 82". The gate prints the refutation on every run:

✓ check-skill-line-ratchet: .claude/skills/pm-dispatch/references/landing-operations.md is 80 lines (ceiling 80; headroom 0).

The CEILINGS entry immediately above the comment reads 80, and this file's own header already records the move — "landing-operations.md moved the other way (82 → 80, its standing headroom locked in)". The comment therefore contradicted both its neighbour and its own header.

Claim 2 — "rides existing slack on that file's last MERGED-tracking line". Measured against the script's own MAX_LINE_BYTES (120): the pointer to release-aftercare.md sits on line 49 of landing-operations.md at 104 bytes, while the last MERGED-tracking line in that file is now line 53. The positional claim no longer locates the pointer, and the file sits at its ceiling with headroom 0.

Why the arithmetic was dropped rather than corrected

Restating a neighbouring entry's live number is precisely what made this comment stale. A corrected number would re-stale the next time landing-operations.md moves, so the smaller honest wording wins: the CEILINGS entry and the gate's per-run verdict line are both authoritative and self-updating, and the comment now points at them instead of copying them. The replacement sentence also records why the arithmetic is absent, so a later author does not helpfully re-add it.

Gates

Union derived mechanically with node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack; all runs below are at commit 08caf7243, which is this branch's head. Exit codes captured by redirect-then-capture, never through a pipe.

GateTriggerResult
pnpm check:pm-skill-ratchet (includes --self-test)gate script identitygreen — ✓ check-skill-line-ratchet self-test: 111 cases pass.
pnpm check:agent-test-spellingscripts/**green
pnpm check:bash32-floorscripts/**green
pnpm check:cli-command-idsscripts/**green
pnpm check:cross-package-test-inputsscripts/**green
pnpm check:entry-guardscripts/**green
pnpm check:parse-guardscripts/**green
pnpm check:pnpm-filter-targetsscripts/**green
pnpm check:watch-hint-literalscripts/**green
node scripts/check-ci-filter-parity.mjsscripts/**green
node scripts/check-cross-package-test-inputs.mjsscripts/**green
node scripts/check-shard-attestation.mjsscripts/**green
node scripts/pm/bare-root-worklist.mjs --self-testconvention: edits a gate scriptgreen
pnpm check:pm-dispatch-gatesconvention: edits a gate scriptgreen
node scripts/check-published-list-mirrors.mjsreads the edited filegreen
node scripts/check-skills-token-ratchet.mjsreads the edited filegreen
node scripts/check-test-completeness.mjsscripts/**not measured locally — CI-only

check-test-completeness.mjs has no pnpm wrapper and takes a turbo test log produced at runtime by the Test Core job (node scripts/check-test-completeness.mjs "$RUNNER_TEMP/test-core.log"). Invoked bare it prints its usage line and exits 1, which is an invocation error rather than a verdict, so it is recorded as not measured rather than as a pass or a failure. CI runs it with its real argument.

The last two rows are not path-derived: they are the scripts that textually reference the edited file, run because a comment change inside a gate script is exactly the kind of edit a mirror or token gate could read.

Changeset

None. scripts/pm/** is a repo-internal gate surface that publishes nothing, and this diff is comment-only, so the PR takes the skip-changeset label instead.

Scope

One file, one hunk, five lines replacing three. No ceiling value, predicate or CEILINGS datum is touched — including the SKILL.md row-pin that a later queued card will lower.

Generated by Claude Code


Generated by Claude Code

@os-litantos-litant added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 29, 2026 — with Claude
@os-litant
os-litant marked this pull request as ready for review August 29, 2026 06:48
@os-litant
os-litant enabled auto-merge August 29, 2026 06:48
@os-litant
os-litant added this pull request to the merge queueAug 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 33242316964 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

失败的 job(日志抽取,best effort):

  • Test Core (1/6) — 失败步骤: Run this shard's tests

    @objectstack/cli:test: FAIL test/serve-publishes-bound-port.e2e.test.ts > #13062 `os serve --port 0` — the request that can never be the answer > announces the BOUND port on all three channels, and ↳ 失败原因: @objectstack/cli:test: Error: ENOENT: no such file or directory, open '/tmp/os-bound-port-home-jzl4eA/runtime.env_local.json'
    

↳ 失败原因 是判读的关键:超时Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

跨 PR 相同签名(24h,按失败测试文件聚合):

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 10 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

@os-litantClaude

Copy link
Copy Markdown
CollaboratorAuthor

队列失败处置(skills 席):非本 PR 之失,不盲目重排。本 PR 是 scripts/pm/check-skill-line-ratchet.mjs 纯注释 diff,不可能触及 @objectstack/cli 的 e2e;失败签名(serve-publishes-bound-port.e2e.test.ts,ENOENT 于临时目录,非断言)24h 内已命中 10 个 PR / 8 条独立栈,属 #13158 汇总的既知环境 flake。按分诊单第 3 条:等该 flake 修复或本波队列消化后重排一次(本席 08:48Z 检查点执行,或维护者顺手)。不在本 PR 上修 cli 测试——那是 #13158 的。


Generated by Claude Code

Merged via the queue into main with commit f4fc524Aug 29, 2026
34 checks passed
@os-litant
os-litant deleted the claude/issue-13093-ratchet-comment branch August 29, 2026 08:59
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

1 participant

@os-litant