Skip to content

docs(agents): os-dev applies skip-changeset at PR-open time, with the releases-nothing test stated once - #12890

Merged
os-litant merged 2 commits into
mainfrom
claude/issue-12876-skip-changeset-at-birth
Aug 28, 2026
Merged

docs(agents): os-dev applies skip-changeset at PR-open time, with the releases-nothing test stated once#12890
os-litant merged 2 commits into
mainfrom
claude/issue-12876-skip-changeset-at-birth

Conversation

@os-litant

Copy link
Copy Markdown
Collaborator

Fixes#12876

The skip-changeset bullet in .claude/agents/os-dev.md already said the label is the
dev's own step, not CI's, and that it goes on when the PR is created. What it did not
carry was a qualifying test and a closed category list — it named only
"tests/workflow/.claude/", so an ADR-only companion PR read as uncovered, met
Check Changeset as a red, and was recovered with a label edit plus a re-run. Cheap,
but pure waste, and once per releases-nothing PR.

The sentence as landed

Both clauses live inside the existing bullet, beside the guidance they qualify:

  • The test, stated once — 判据:不从任何包发布东西;闭合清单:仅含 docs/adr/** ·
    .claude/** · scripts/pm/** · tests/workflow · 注释 的 diff。
  • At PR-open timePR 一开出就打,⛔ 永不等 Check Changeset 转红再补。

The list is a superset of what the bullet named before, not a swap: docs/adr/**
(the shape that produced this finding), scripts/pm/** and comments-only are added;
tests/workflow and .claude/** are the two it already had, kept.

The cut ledger — net 0 against a zero-headroom ceiling

The file sits at 470/470, headroom 0, so both clauses are funded in place, same file and
same bullet. Neither cut removes a rule; each is a restatement whose meaning survives at
a named address:

  1. (挂上去只是给 PR 挂一个假状态,再铸一次幻影), −61 B. Surviving home: the same
    sentence already states it as a rule — 但零 workflow/脚本读它、豁免不了任何东西,pin 测试钉着这条 — and the sentence immediately before it is the phantom-gate warning
    读回验的是「写落了」,验不出「有门在读」——幻影门标签读回同样成功. The ⛔ 永不在那边 施加该标签 prohibition it trailed is untouched.
  2. 但「不发布」的声明方式因仓库而异。 Surviving home: the bullet's own bolded
    headline, one sentence earlier — 标签按仓库分流——先认清目标仓库有没有这个机制. The
    per-repo split it announced (**本仓库** / **objectui**) is untouched.

Arithmetic: paragraph 1467 B → 1486 B (+19 B), 13 lines → 13 lines, file 470 → 470.

Incidental, and disclosed rather than hidden

The bullet was re-flowed with the ratchet's own wrapLine, and the re-flow was proved
content-preserving by whitespace normalization before it was written. Two consequences
are visible in the diff and are not content changes:

This PR practices what it preaches

The diff is .claude/**-only. It publishes nothing from any package, so it takes the
skip-changesetlabel, applied at PR-open time — not a changeset file, and not an
empty one. No Check Changeset red was waited for.

Gates — run on 8b02f78c7, the final commit

The branch merges origin/main at 93a554d71; the diff against main is this one file
(13 insertions, 13 deletions). Union derived from the real changeset, not from memory:
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack named 10 families.
Exit codes captured before any pipe; the verdict lines below are each gate's own.

  • ✓ check-skill-line-ratchet: .claude/agents/os-dev.md is 470 lines (ceiling 470; headroom 0).
  • ✓ check-skill-line-ratchet: .claude/agents/os-dev.md: widest table row is 0 bytes (pin 0; headroom 0).
  • ✓ check-skill-frame-sync: 4 copies of the decision frame are structurally isomorphic across 3 files
    the enforced copy of the decision frame was not touched.
  • ✓ check-skill-id-lint: 23 file(s) clean (pattern /#[0-9]{3,}/g).
  • ✓ check:doc-formula-expressions: 22 record-scoped formula example(s) across 425 files / 1453 TS blocks judged clean by @objectstack/formula.
  • check:agent-model-declared, check:agent-test-spelling, check:doc-authoring,
    check:nul-bytes, check:pm-governed-merges, check:skill-frame-freshness — all exit 0.
  • check-governed-queue-guardnot measured locally: it reads the workflow event
    payload and there is none outside CI, so it exits 1 saying "could not look". That is a
    prerequisite miss, not a finding. CI runs it.

check:doc-formula-expressions first exited 1 with PREREQUISITE NOT MET twice
(@objectstack/formula, then @objectstack/lint not built); both were built and the gate
then measured clean. Recorded because an unbuilt prerequisite is not a red gate.

Governed surface: no reviewer requested from here — the PM runs the four-piece review.
Tier: this path is clause-① mandated, taken under the recorded exit for a
one-sentence-class mechanical governed edit, compensated by the PM's collection review at
the mandated claude-fable-5 tier.

Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq


Generated by Claude Code

os-litantand others added 2 commits August 28, 2026 07:02
… releases-nothing test stated once
The delivery contract already said the label is the dev's step and goes on at
PR creation, but its qualifying list was open and incomplete (tests/workflow/
`.claude/`), so an ADR-only companion PR read as uncovered and met Check
Changeset as a red instead of as a label. State the test once — the diff
publishes nothing from any package — and close the category list.
Funded in place, net 0 lines against the 470 ceiling: the restated
phantom-label parenthetical and the 'declaration varies by repo' clause both
carry their meaning elsewhere in the same bullet.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MnijPVVDakqK2J335JoJtq
@os-zhuang
os-zhuang marked this pull request as ready for review August 28, 2026 07:15
@os-zhuang
os-zhuang enabled auto-merge August 28, 2026 07:15
@os-zhuang
os-zhuang added this pull request to the merge queueAug 28, 2026
@github-merge-queue
github-merge-queueBot removed this pull request from the merge queue due to failed status checks Aug 28, 2026
@os-litant
os-litant added this pull request to the merge queueAug 28, 2026
Merged via the queue into main with commit c946e5dAug 28, 2026
32 checks passed
@os-litant
os-litant deleted the claude/issue-12876-skip-changeset-at-birth branch August 28, 2026 09:32
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

3 participants

@os-litant@os-zhuang@claude