Skip to content

docs(skills): name pnpm console:build where two internal skills still prescribed the retired objectui:build - #26536

Merged
os-zhuang merged 1 commit into
mainfrom
claude/project-thread-pr6axl
Oct 27, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/project-thread-pr6axl

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread
Fixes #26035
Ruling-ref: 6435329940
Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:两个仓内技能(checklist-test、dogfood-verification)里仅剩的两处还在教人跑已退役脚本 pnpm objectui:build 的句子,改成仓内流程:在仓库根目录跑 pnpm console:build,改 Console 就改 ui/ 下的源码。两文件行数不变。
  • 为什么改:objectui pin(.objectui-sha、scripts/build-console.sh、objectui:* 脚本)已从 main 退役,这两行让每次 checklist 运行和 dogfood 会话去跑一个不存在的脚本。裁决 6435329940 字母 A。
  • 风险与回滚:纯措辞,不动任何代码或门禁;回滚即 revert 本 PR。
  • 先看:.claude/skills/dogfood-verification/SKILL.md L90–91(一句话跨两行),再看 .claude/skills/checklist-test/SKILL.md L69。
  • 两分钟验证:git grep -nE "objectui:(build|refresh|bump|clean)" -- .claude/skills 预期零命中;pnpm console:build 预期以 @objectstack/console dist ready 结束。
  • 需要你做的:这是受管面(.claude/**,Tier H):由 GOVERNED_APPROVERS 批准后落地;本 PR 保持 draft,不开 auto-merge。

What changes

Slice 1 of the card, exactly the two lines the ruling names (both re-read on origin/main at d2ca7079 first; the card's AGENTS.md block and the lint.yml comment are already gone there):

  • .claude/skills/checklist-test/SKILL.md L69: the browser / mixed planning bullet now says the Console dist is built with pnpm console:build at the repo root, with the source under ui/, instead of pnpm objectui:build from the pinned .objectui-sha.
  • .claude/skills/dogfood-verification/SKILL.md L90–91: the drift-remedy sentence now names pnpm console:build (rebuild from this workspace's ui/ Console source; edit the Console under ui/). The objectui:refresh clause is gone. The sentence spans two physical lines, so L91 carries the second half of the same rewritten parenthetical; nothing else on it changed.

Line counts are unchanged (238 and 148): check:pm-skill-ratchet holds checklist-test/SKILL.md at ceiling 238 with headroom 0, so the rewrite had to fit the same line.

Why

The objectui pin was retired when the Console moved into this workspace: origin/main has no .objectui-sha, no scripts/build-console.sh, and the root manifest's only console script is console:build (turbo run build:dist --filter=@objectstack/console). Every checklist run and dogfood session reads these two lines and was told to run a script that no longer exists, loud only as a pnpm "command not found" after the agent had already planned around it. Slices 2 and 3 of the card (PR #26052, PR #26063) rewrote the ungoverned docs and the CLI remedy strings; this is the governed remainder.

Tests

No code changed; no test file is touched. The two skills' examples still run:

pnpm console:build, this worktree at 153be45, under scripts/pm/os-verify-lock.sh
NODE_OPTIONS=--max-old-space-size=4096 pnpm console:build --concurrency=2
@objectstack/console:build:dist: ✓ @objectstack/console dist ready (80844 KB) from ui/apps/console, with the tracked sdui.manifest.json
 Tasks:    71 successful, 71 total
  Time:    14m7.542s
os-verify-lock: VERDICT command-exit 0 · held the lock 849s (14m09s) · waited 0s

Cold worktree (fresh pnpm install --frozen-lockfile, 58.7 s), shared 4-core box; the wall figure is a shared-box reading, not an idle-box one. packages/console/dist/index.html present afterwards.

Acceptance notes

  • Acceptance as the card's: git grep -nE "objectui:(build|refresh|bump|clean)" -- .claude/skills on the branch prints nothing (exit 1); on origin/main d2ca7079 it printed exactly the two lines above.
  • Left in place, outside the two named lines (noted, not filed; the seat decides whether a sibling slice carries them): the surrounding dogfood-verification bullets (L76–L93) still describe the pin route as live — the /_console UI "is a vendored objectui build pinned by .objectui-sha", build-console.sh stamping packages/console/dist/.objectui-sha, and pnpm check:console-sha, a root script that no longer exists in package.json. The stamp-drift refusal and OS_ALLOW_CONSOLE_DRIFT=1 themselves still exist in packages/cli/src/utils/console.ts (slice 3 kept that path and re-pointed its remedy), so those two sentences are not wrong, only the pin-as-live framing around them. The grep acceptance does not reach any of this because none of it names an objectui:* script.
  • checklist-test/SKILL.md L68 still says "vendored console dist"; pnpm console:build does copy the built Console into packages/console/dist/, so the phrase stays accurate.

Verification

Derived gate families: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack printed 16 families; each ran from the printed command with its exit captured before any pipe, all exit 0; --ran reconciliation: 16 derived, 16 run, 0 NOT-MEASURED.

the 16 families and their exits
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
node scripts/pm/check-harness-current.mjs --self-test :: exit 0
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:pm-skill-ratchet :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:skill-frame-sync :: exit 0
pnpm check:watch-hint-literal :: exit 0
✓ dispatch-gates --ran: 16 derived famil(ies) accounted for — 16 run, 0 NOT-MEASURED
✓ check-skill-line-ratchet: .claude/skills/checklist-test/SKILL.md is 238 lines (ceiling 238; headroom 0).
✓ check-skill-line-ratchet: .claude/skills/dogfood-verification/SKILL.md is 148 lines (ceiling 157; headroom 9).

Also run: node scripts/check-commit-card-trailers.mjs --range origin/main..HEAD (1 commit, no card relation, no model identifier in the trailer pair). Repo-wide pnpm lint and the rest of the farm are CI's run on this PR.

Governance: this diff touches .claude/** (Tier H). The ruling's yes spends the CONTRACT_REVIEW_TIER contract review the card asked for; the PR stays draft with no auto-merge and lands by a GOVERNED_APPROVERS approval. skip-changeset: .claude/** publishes nothing.

Human Minimum

Each item is one rule from
CONTRIBUTING.md › Human Minimum,
which links the AGENTS.md text that states it.

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (not touched)
  • 2. Every name I added uses the casing for its kind. (no names added)
  • 3. No formatter ran; pnpm lint passes. (no formatter ran; lint is CI's run here)
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. (publishes nothing; skip-changeset)
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (not touched)
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English. (the 维护者速读 block is the maintainer's Chinese digest the dev contract requires)
  • The Before Submitting list in CONTRIBUTING.md is done.

🤖 Generated with Claude Code

https://claude.ai/code/session_01ADHkmTQqaSwGFt1FkfF8pF


Generated by Claude Code

… prescribed the retired objectui:build

The objectui pin and its scripts are gone from main; the Console builds in
this workspace from ui/apps/console with `pnpm console:build`. The two
playbook lines that still told a checklist run or a dogfood session to run
`pnpm objectui:build` from the pinned .objectui-sha now name the in-workspace
flow: run `pnpm console:build` at the repo root, and edit the Console under
ui/. Line counts are unchanged (the checklist-test ceiling sits at 0 headroom).

Claude-Session: https://claude.ai/code/session_01ADHkmTQqaSwGFt1FkfF8pF
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 27, 2026
@github-actions github-actions Bot added size/xs documentation Improvements or additions to documentation labels Oct 27, 2026
@objectstack-fleet
objectstack-fleet Bot requested a review from os-steve October 27, 2026 07:09
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 153be45da1e1a6064c21597c5faadf580f5945b7
Local-runs: none
Scope: .claude/skills/checklist-test/SKILL.md, .claude/skills/dogfood-verification/SKILL.md + package.json (root scripts), turbo.json, packages/console/package.json, packages/console/build-dist.sh, ui/apps/console/package.json, packages/cli/src/utils/console.ts, scripts/pm/check-skill-line-ratchet.mjs, scripts/check-dev-prereqs.mjs

Inputs: card #26035 body and all 9 comments (ruling 6435329940 letter A, claim 6435602582, os-dev-report 6435948225); PR #26536 body, file list and git diff d2ca7079..153be45d (2 files, +3/-3, no changeset); the 42 check-runs on the head. No PR comments, reviews or review threads exist on the head.

Check-runs on 153be45 at read time: every completed run is success or skipped (skips are path-filtered: UI shards, Build Core, docs, dogfood shards, opt-in harnesses); no run concluded failure. Succeeded: Governed Surface Queue Guard, Check Changeset, Check PR Size, the three claim guards (same issue / same single-writer path / card claims this branch), Part-of guard, Test Core, Dogfood Regression Gate, Lint · ESLint, Lint · repo & tooling gates (the job that runs pnpm check:pm-skill-ratchet, lint.yml L513/L944), Lint · CI release & engine gates, Lint · PM dispatch-gates, the three scoped Lint jobs, Type Check · workspace. Still in_progress at read time: Type Check · source gates, Type Check · consumer gates, Type Check · debt ledger, Lint · docs & code guards — none of them reads .claude/** for a judgment this diff could move, but their conclusions are not yet on the head.

① Derived judgments

  • Accept-set: none widened, none narrowed. The diff rewrites two prose instructions inside .claude/skills/**; no gate, hook, test, schema, script or workflow changes. The acceptance grep the ruling names (git grep -nE "objectui:(build|refresh|bump|clean)" -- .claude/skills) returns exactly the two lines on origin/main d2ca707 (checklist-test L69, dogfood-verification L90) and nothing on the head (exit 1) — right, and it is the ruling's own measure.
  • Public surface: none. .claude/** is internal agent protocol, never published (check-skill-frame-sync header; package.json files of no package includes it). No exports, no packages/spec, no generated artifact touched — right.
  • Governed-path face: .claude/** is a governed rules path, so the review is owed at CONTRACT_REVIEW_TIER and the PR lands by a GOVERNED_APPROVERS approval; the PR is draft, auto-merge not armed, Ruling-ref: 6435329940 on the body — right, and matches claim 6435602582.
  • Line ratchet (scripts/pm/check-skill-line-ratchet.mjs): counts unchanged, 238/238 (checklist-test, headroom 0) and 148/157 (dogfood-verification); every edited line is within MAX_LINE_BYTES = 120 (checklist-test L69 is 119 bytes + newline, dogfood L90 97, L91 80). The gate ran green in Lint · repo & tooling gates — right. One render-level caveat is in ④.

② Semver level

Clause-②: no on the PR body, consistent with the claim and the ruling. No changeset in the diff and the skip-changeset label is on the PR; Check Changeset concluded success. The diff publishes nothing (.claude/** ships in no package), so skip-changeset matches what the diff publishes — right. No (narrowing) arm, no ! in the title, no dogfood battery owed.

③ Boundary flags

  • PR author login: objectstack-fleet[bot] (relay); the commit author on 153be45 is os-steve, the account the claim names. Branch claude/project-thread-pr6axl matches the claim's identity record; the card-claims-branch guard concluded success.
  • open_questions: [] in os-dev-report 6435948225 — nothing to answer.
  • out_of_scope_findings (one, carrier none): dogfood-verification L76–L93 still frames the retired pin route as live (/_console "pinned by .objectui-sha", build-console.sh stamping packages/console/dist/.objectui-sha, and pnpm check:console-sha). Verified on origin/main: there is no .objectui-sha, no scripts/build-console.sh, and no root check:console-sha script in package.json (packages/cli/src/utils/console.ts L542 records it as retired; scripts/check-dev-prereqs.mjs comments still mention it but the root dev script no longer runs it). The drift refusal and OS_ALLOW_CONSOLE_DRIFT=1 do still exist in console.ts L407–L531, kept by slice 3 for the objectos overlay, so the two sentences about them are not false. Escalated, not blocking: ruling 6435329940 letter A spends this review on the two objectui:* lines only, and the dev disclosed the remainder. The seat decides whether a sibling slice of docs(devx): 32 files still prescribe the retired objectui pin scripts (objectui:build / objectui:refresh) — AGENTS.md and 3 skills among them #26035 carries L76–L93; recommended, since L91 (an edited line) still ends by prescribing pnpm check:console-sha, which cannot run.
  • Dev flags in the PR body: "vendored console dist" on checklist-test L68 kept — verified: packages/console/build-dist.sh copies ui/apps/console/dist into packages/console/dist, so the phrase holds. The cold-build budget "~10–30 分钟" on L71 is consistent with the dev's measured 14m7s under lock.
  • Nothing in the dev's gates line is contradicted by CI: the 16 derived families the dev ran all exit 0 and the corresponding CI jobs concluded success.

④ Design judgment

Per hits file, read against the cited code on origin/main d2ca707 and the ruling's acceptance ("grep → 0; the two skills' examples still run"):

.claude/skills/checklist-test/SKILL.md L69 — "在仓库根目录跑 pnpm console:build,源码在 ui/,改 Console 就改那里". True on main: root package.json L27 console:build = turbo run build:dist --filter=@objectstack/console; turbo.json L80–83 makes @objectstack/console#build:dist depend on @object-ui/console#build, whose package lives at ui/apps/console (@object-ui/console 18.2.0, build = tsc + vite build + sdui manifest + plugin); packages/console/build-dist.sh copies that dist into packages/console/dist with the tracked sdui.manifest.json. The surrounding paragraph still holds: "它与 showcase 工作区闭包分开构建" is true because turbo.json declares no @objectstack/console#build task and packages/console has only build:dist, so the root pnpm build (task build) does not produce the console dist; the following clause (first boot 404 on /_console/ until it exists) matches the CLI's not-built path. The sentence reads coherently inside its bullet; the replaced "从钉住的 .objectui-sha 构建" was the only false claim on the line. The dev's own run (@objectstack/console dist ready … from ui/apps/console) is the acceptance's "example still runs". Holds.

.claude/skills/dogfood-verification/SKILL.md L90–91 — remedy sentence "跑 pnpm console:build(在仓库根目录跑,从本仓 ui/ 下的 Console 源码重建;改 Console 就改 ui/ 下的源码)再重启". True on main and identical to the CLI's own remedy: console.ts describeConsoleShaDrift prints "Rebuild the console: pnpm console:build" (L516), formatConsoleShaDriftWarning names the same script (L490), and detectConsoleShaDrift L478 treats an unstamped dist (what every pnpm console:build since #25745 produces) as no drift — so the prescribed remedy does clear the refusal it is attached to. The dropped objectui:refresh clause described a script and a ../objectui pin bump that no longer exist. Within the sentence the edit is coherent. Two residuals, neither on the ruling's two lines:

  1. The bullet's framing (L86–89: build-console.sh stamps .objectui-sha; the repo's pin) and the next sentence on L91 (pnpm check:console-sha reports the same comparison without booting) describe a route main no longer has; check:console-sha is not a root script. The edited sentence is true inside a stale frame. Should-fix via a sibling slice (③), not a defect of this diff.
  2. Render: L90 now ends on a Han character followed by ASCII ; (…源码重建; then newline). That is exactly the [finding] The #11106 mechanical re-wrap left 45 soft breaks sitting after an ASCII comma between Chinese clauses — each renders as a stray mid-sentence space #12081 junction the ratchet header documents — invisible in source, rendered as a space ("重建; 改 Console") for the agent reading the rendered skill. The gate does not red it (lines of 120 bytes or fewer are never re-wrapped, wrapLine only refuses to offer that break), so CI is green, but the corpus rule is to not end a line there. Should-fix, one-token move: carry "改 Console" onto L90 (97 → 109 bytes) so L91 starts "就改 ui/ 下的源码)再重启。", or break after the ). Not blocking.

Both files: no rule was added, removed or narrowed; the two instructions now point at a script that exists and at the source tree that the build reads. The card's acceptance holds on the head; no gate is skipped.

Implemented-by: claude/project-thread-pr6axl
Reviewed-by: session_01Q4MDXRbEJCNdPAP4SiXwp9

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · devx seat 2 · 2026-10-27T07:16Z

Seat domain:devx#2 (#20163) · session_01Q4MDXRbEJCNdPAP4SiXwp9 · reviewed head 153be45d · card #26035 slice 1 (claim 6435602582, branch claude/project-thread-pr6axl), ruling 6435329940 letter A. Thread-read: none.

  • Diff: two files under .claude/skills/**, +3/−3, line counts unchanged. objectui:build / objectui:refresh are replaced by pnpm console:build, which is the root script on main (turbo run build:dist --filter=@objectstack/console, built from ui/apps/console) and the remedy packages/cli itself prints for console drift.
  • Acceptance: git grep -nE "objectui:(build|refresh|bump|clean)" -- .claude/skills hits the two lines on d2ca7079 and nothing on this head. The thread ran pnpm console:build (exit 0).
  • Contract review: the ## Contract review record above, at CONTRACT_REVIEW_TIER on 153be45da1, is a PASS, rendered by an isolated reviewer and adopted by this seat. check-governed-merges reads this PR as governed (Tier S).
  • CI: 44 check-runs on the head, 25 success and 19 path-skipped, none red.
  • Left for a later slice, not this PR: the same bullet in dogfood-verification/SKILL.md (L76–93) still describes the retired pin route (.objectui-sha, build-console.sh, and pnpm check:console-sha, which is no longer a root script). The record's should-fix about L90 ending on Han + ASCII ; lands in that rewrite too. Noted on docs(devx): 32 files still prescribe the retired objectui pin scripts (objectui:build / objectui:refresh) — AGENTS.md and 3 skills among them #26035.

Landing: the PR stays a draft with auto-merge off. This seat does not ready or arm a governed PR; it waits for a maintainer (GOVERNED_APPROVERS) to approve and land it. The card stays open for its later slices.

@os-zhuang
os-zhuang marked this pull request as ready for review October 27, 2026 09:50
@os-zhuang
os-zhuang enabled auto-merge October 27, 2026 09:50
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit 9ebdabb Oct 27, 2026
45 checks passed
@os-zhuang
os-zhuang deleted the claude/project-thread-pr6axl branch October 27, 2026 10:05
os-tesla pushed a commit that referenced this pull request Oct 27, 2026
Conflicts in three skill files main also edited (#26536, #26569): kept main's
root-run console:build wording and its ninth required context (Test UI), kept
this branch's removal of the objectui-only lines and the retired SHA-stamp
drift bullet (no .objectui-sha pin or build-console.sh exists any more).

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9qibvE77Ed7MKdzPxJTQQ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs(devx): 32 files still prescribe the retired objectui pin scripts (objectui:build / objectui:refresh) — AGENTS.md and 3 skills among them

2 participants