Repository navigation
docs(devx): 32 files still prescribe the retired objectui pin scripts (objectui:build / objectui:refresh) — AGENTS.md and 3 skills among them #26035
Description
Ruled: 6435329940 · letter A · 2026-10-27T06:32Z
Problem
The objectui pin is gone from main. #25711/#25745 build the console in the workspace, and the root manifest's only console script is now console:build (turbo run build:dist --filter=@objectstack/console). There is no .objectui-sha, no scripts/build-console.sh, and no objectui:build / objectui:refresh / objectui:bump / objectui:clean script.
32 tracked files on main still tell readers to run those scripts, or describe the pin route as live (git grep -lE "objectui:(build|refresh|bump|clean)" origin/main). The ones that matter most are the instructions every agent reads:
Governed rule text (needs contract review):
AGENTS.mdL157–170: the../objectuiedit →pnpm objectui:refreshworkflow, "Other scripts:objectui:bump…objectui:build,objectui:clean", and "Moving the pin has a second half"..claude/skills/checklist-test/SKILL.mdL69 and.claude/skills/dogfood-verification/SKILL.mdL90:pnpm objectui:buildfrom the pinned SHA..claude/skills/pm-dispatch/references/lanes/ui.mdL20: build output flows back viapnpm objectui:refresh..github/workflows/lint.ymlL1018: a comment naming whatpnpm objectui:buildmaterialises. Comment only, but it is a workflow file, so Tier H.
Ungoverned docs and code:
README.md(3 hits),content/docs/getting-started/examples.mdx,docs/screenshots/render-readme-demo.mjs.docs/qa/platform-checklist/RUNNER.mdL432, L622–636, L689, plus the checklist area JSON (approvals,cli,platform-core,records-forms,studio-authoring). ⚠ The area JSON overlaps the on-hold 18.2.0 sweep ledger cards (qa(checklist): access-security — 65 ledger edits from the 18.2.0 release sweep (#25807) #25835–qa(checklist): RUNNER.md — 3 stale environment facts from the 18.2.0 release sweep (#25807) #25850), so stay serial with them.docs/adr/0082-react-component-contract-governance.mdL198 (also noted by docs(releases): describe the in-tree Console release flow; drop the deleted objectui pin procedure #26029's thread).packages/cli/src/utils/console.tsL411–414 and L484–511: the stamp-drift path still printspnpm objectui:build/objectui:refreshas the remedy, andconsole.sha-drift.test.tspins those strings. With no.objectui-shaonmain, decide whether that path is dead and should go, or should namepnpm console:build. This releases@objectstack/cli, so it needs a changeset.
Historical CHANGELOGs, changesets and dated baselines (docs/qa/studio-benchmark/baselines/…) are records. Leave them as they are.
Suggested slicing
- Governed text: AGENTS.md + the 3 skill files. Contract review. Rewrite to the in-workspace flow (
pnpm console:build, edits underui/). - Ungoverned docs: README, examples.mdx, RUNNER.md, ADR-0082 L198, render-readme-demo. Do the area JSON once the sweep ledger cards are off hold.
- CLI: the stamp-drift remedy strings and their test, plus a changeset.
- The
lint.ymlcomment, folded into whichever PR next touches that workflow, or its own Tier H one-liner.
Acceptance
- After each slice,
git grep -nE "objectui:(build|refresh|bump|clean)"over the slice's paths finds only historical records. - No gate is narrowed or skipped. The pinned strings in
console.sha-drift.test.tschange only together with the code they pin.
Found by the #25920 slice-2 thread (PR #26024) and the #26021 thread (PR #26029). Filed by the devx seat #6023.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop · 2026-10-26T09:53Z
Session:
session_01JrWb13NvNX4Nnw76uBX95H(card thread, dispatched by seat sessionsession_01LKHDniRQSWjRJyDtacwpEd)Account:
os-elon-muskBranch:
claude/project-thread-uxi48r(the harness-pinned branch for the card thread; it names no issue, so this claim is the identity record)Worktree:
objectstack-issue-26035Domain:
domain:devxSeat:
domain:devx#1(seat post #6023)File surface: slice 2 only: README.md, content/docs/getting-started/examples.mdx, docs/screenshots/render-readme-demo.mjs, docs/qa/platform-checklist/RUNNER.md, docs/adr/0082 L198, docs/qa/studio-benchmark/SCENARIO.md (stop on breach; explain in the report)
Container & model:
S,mode:thread,model: default tier,effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: Slice 2 of #26035: the ungoverned docs, rewritten to the in-workspace console flow
Thread-read: none
Serial constraints cleared: #25835–#25850 (area JSON excluded); slice 3 thread is parallel on disjoint files
Dispatched under the maintainer's 「同意」 to the director's ruling batch 1, item 5A (devx dispatches p1–p3). Dispatch order:
/mnt/project-files/pm-devx-seat/dispatch-26035.md.objectstack-fleet commentedon Oct 26, 2026
Claim: PM loop · 2026-10-26T09:54Z
Session:
session_01CBGRCbYq9F1ceLwZ2YCbWE(card thread, dispatched by seat sessionsession_01LKHDniRQSWjRJyDtacwpEd)Account:
os-elon-muskBranch:
claude/project-thread-yts0g4(the harness-pinned branch for the card thread; it names no issue, so this claim is the identity record)Worktree:
objectstack-issue-26035Domain:
domain:devxSeat:
domain:devx#1(seat post #6023)File surface: slice 3 only: packages/cli/src/utils/console.ts, packages/cli/src/utils/console.sha-drift.test.ts, packages/cli/src/commands/serve.ts (comments), packages/cli/src/console.ts (comment L66), scripts/check-console-sha.mjs (+ its test), one .changeset file; + packages/cli/test/console-resolve.test.ts (amended 2026-10-26 10:01Z: its detectConsoleShaDrift case pins the same remedy string) (stop on breach; explain in the report)
Container & model:
M,mode:thread,model: default tier,effort: highClause-②: no
Metadata-protocol: none
Responsibility: Slice 3 of #26035: the CLI stamp-drift remedy, either retired as dead or re-pointed at pnpm console:build, with a @objectstack/cli changeset
Thread-read: none
Serial constraints cleared: slice 2 thread is parallel on disjoint files; no spec/src
Dispatched under the maintainer's 「同意」 to the director's ruling batch 1, item 5A (devx dispatches p1–p3). Dispatch order:
/mnt/project-files/pm-devx-seat/dispatch-26035.md.objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{
"issue": 26035,
"status": "done",
"branch": "claude/project-thread-uxi48r",
"pr": "#26052",
"session": "session_01JrWb13NvNX4Nnw76uBX95H",
"premise_still_valid": true,
"summary": "Slice 2 only. README, content/docs/getting-started/examples.mdx, docs/screenshots/render-readme-demo.mjs, docs/qa/platform-checklist/RUNNER.md and docs/qa/studio-benchmark/SCENARIO.md now prescribe pnpm console:build (turbo build:dist; @object-ui/console#build then copy to packages/console/dist) instead of objectui:build / .objectui-sha / build-console.sh / the os dev stamp refusal. Re-measure on main 39ca587: 22 hits in 6 files before, 0 in the 5 edited files after. ADR-0082 L198 left untouched: it is in the 'Where the line lives' list under the 2026-08-07 maintainer decision (a decision record) and docs/adr/** is governed, so editing it would make the PR Tier H; L197 (bump-objectui.sh) is equally stale; both go with the governed slice.",
"tests": "Fresh worktree, pnpm install then NODE_OPTIONS=--max-old-space-size=6144 pnpm console:build --concurrency=2: 72 tasks, 0 cached, 12m16s, exit 0, '@objectstack/console dist ready (80724 KB) from ui/apps/console'; re-run 72/72 cached ~1s. Those numbers are the README timing row.",
"gates": "dispatch-gates --commands derived 42; all 42 run, all exit 0 (check:skill-examples after building @objectstack/client-react...); dispatch-gates --ran: 42 derived, 42 run, 0 NOT-MEASURED. check:commit-card-trailers --range origin/main..HEAD: pass. PR check-runs: pending at report time. No docs:check-links script exists on main.",
"dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
"mcp_calls": "0",
"api_writes": "2 — relay pr_create (PR #26052, assignee os-elon-musk, label skip-changeset); relay comment (this report)",
"open_questions": [],
"out_of_scope_findings": [
"class: none (drift, not filed) · README 'pnpm build | 6 m 54 s | 72 turbo tasks' row predates the ui/ import and pnpm build now builds the ui tree too, so the row is likely low · carrier: noted in PR #26052 body, not filed"
]
}
Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
os-dev-report
{ "issue": 26035, "status": "done", "branch": "claude/project-thread-yts0g4", "pr": "https://github.com/objectstack-ai/objectstack/pull/26063", "session": "session_01CBGRCbYq9F1ceLwZ2YCbWE", "premise_still_valid": true, "summary": "Slice 3 only. Re-measure on main 39ca58787: the stamp-drift path is unreachable in this repo (no .objectui-sha since #25745; packages/console/build-dist.sh writes no dist stamp and replaces the dist), but a tree carrying its own .objectui-sha above a stamped dist (the objectos overlay named in console.ts's header; published @objectstack/console 18.1.0 still ships a stamp) can reach it, and that overlay is NOT MEASURED from here, so the path is kept (seat accepted 10:02Z). The drift warning, the os dev refusal and its 503 body now name pnpm console:build; the objectui:refresh line is dropped. The two tests pinning the remedy move in the same commit (the drift-message case also asserts no objectui:* script is named); docblocks in console.ts, serve.ts (comment) and src/console.ts L66 (comment) stop describing the pin as current. scripts/check-console-sha.mjs and check:console-sha were already deleted by #25745; nothing to change. Changeset: @objectstack/cli patch.", "tests": "head 9aefb25e8. vitest --project unit on the two touched files: 2 files / 29 tests passed. Full CLI unit layer: 331 files passed, 4825 tests passed, 29 skipped; 2 files failed only on prerequisite (cli dist absent), re-run after pnpm --filter @objectstack/cli build: 2 files / 29 tests passed. Integration layer declared to CI. pnpm --filter @objectstack/cli typecheck exit 0. No ablation: message text pinned by string, no tested behaviour changed.", "gates": "dispatch-gates --commands derived 71 families; 70 exit 0; check:dual-build-cjs-loads exit 3 (NOT MEASURED, needs whole-tree dist). check:i18n, check:i18n-coverage, check:i18n-walk-parity first exit 3, re-run green after their printed prerequisite build. --ran: 71 accounted, 70 run, 1 NOT-MEASURED. check:commit-card-trailers ok, check-nul-bytes exit 0. PR check-runs: in_progress at report time.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "2 — mcp__github__issue_read x2 (card comments, card body); no MCP write", "api_writes": "3 — relay pr_create (objectstack#26063, assignee os-elon-musk), relay pr_request_reviewers (os-elon-musk) and this os-dev-report comment, the last two in one stroke; plus git push", "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted, not filed — outside slice 3 and not in the card's slicing, these still name an objectui:* script: scripts/check-dev-prereqs.mjs, scripts/check-pnpm-flag-spellings.mjs, scripts/check-sdui-manifest.mjs, scripts/gen-sdui-manifest-node.mjs, packages/client/src/envelope-caller-census.test.ts, packages/qa/dogfood/test/print-service-render.dogfood.test.ts (comments, or the pinned-mode branch of the SDUI manifest tools). Listed in the PR's Acceptance notes." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Release:
session_01LKHDniRQSWjRJyDtacwpEd(devx seat 1) · seat signs off on the maintainer's word 「当前任务处理完,合并后就下班」 (2026-10-27 01:20Z) · next:needs-user-decisionfor slice 1Slices 2 (PR #26052) and 3 (PR #26063) are done. Slice 1 is the governed slice:
AGENTS.mdL157–170, the three skills that still prescribeobjectui:build/objectui:refresh, and thelint.ymlcomment. It needs contract review (needs:contract-review, fable) and a Tier H approval for the workflow line. The maintainer has not yet ruled on spending that review. When he rules, the next devx seat re-claims the card and dispatches slice 1 on a fable thread.Generated by Claude Code
4 remaining items
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 10 · 2026-10-27T06:44Z
Session:
session_01Q4MDXRbEJCNdPAP4SiXwp9(devx seat 2) · card threadsession_01ADHkmTQqaSwGFt1FkfF8pFAccount:
os-steveBranch:
claude/project-thread-pr6axl(the harness-pinned branch of the card thread; it names no issue, so this claim is the identity record; amended on spawn)Worktree:
objectstack-issue-26035Domain:
domain:devxSeat:
domain:devx#2(seat post #20163)File surface: slice 1 only, per ruling 6435329940 letter A:
.claude/skills/checklist-test/SKILL.md(L69) and.claude/skills/dogfood-verification/SKILL.md(L90), the two remaining lines that prescribepnpm objectui:build, rewritten to the in-workspace flow (pnpm console:build; edits underui/). TheAGENTS.mdblock and thelint.ymlcomment are already gone onmainand are not touched. ⛔ Governed rules text (.claude/**): aCONTRACT_REVIEW_TIERcontract review is owed (the ruling spends it) and the PR lands by a GOVERNED_APPROVERS approval; the dev neither readies nor arms auto-merge. Slices 2 and 3 are done (PRs #26052, #26063)Container & model: XS,
mode:thread,model: fable (CONTRACT_REVIEW_TIER, reason: per-card ruling 6435329940 names one fable card thread for this governed rules text),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility: n/a — devx seat 1's card, released 6433463741 on sign-off; re-claimed by seat 2 on the ruling
Thread-read: 6435329940
Ruling-ref: 6435329940
Premise:
git grep -nE "objectui:(build|refresh|bump|clean)" origin/main -- .claude/skillsreturns exactly the two lines (the director's re-read 6433965564; the dev re-runs it first)Serial constraints cleared: no in-flight PR of this seat touches
.claude/skills/**Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
os-dev-report
{ "issue": 26035, "status": "done", "branch": "claude/project-thread-pr6axl", "pr": "https://github.com/objectstack-ai/objectstack/pull/26536", "session": "session_01ADHkmTQqaSwGFt1FkfF8pF", "premise_still_valid": true, "summary": "Slice 1 only, per ruling 6435329940 letter A. On origin/main d2ca7079 the grep for objectui:(build|refresh|bump|clean) under .claude/skills returned exactly the two lines the claim names (checklist-test/SKILL.md:69, dogfood-verification/SKILL.md:90), so the premise holds. Both now prescribe the in-workspace flow: run pnpm console:build at the repo root, edit the Console under ui/. The dogfood sentence spans two physical lines, so L91 carries the second half of the rewritten parenthetical (its trailing pnpm check:console-sha text is untouched). Line counts unchanged (238 and 148; checklist-test sits at ceiling 238, headroom 0). Governed .claude/** diff: PR opened as draft with skip-changeset, assignee os-steve; not readied, no auto-merge; lands by a GOVERNED_APPROVERS approval; the ruling spends the CONTRACT_REVIEW_TIER review.", "tests": "No code or test touched. Skill example run for real: pnpm console:build in the fresh worktree at head 153be45d under scripts/pm/os-verify-lock.sh (NODE_OPTIONS=--max-old-space-size=4096, --concurrency=2): '@objectstack/console dist ready (80844 KB) from ui/apps/console, with the tracked sdui.manifest.json', 'Tasks: 71 successful, 71 total', 'Time: 14m7.542s', lock VERDICT command-exit 0 (shared-box seconds). Acceptance grep on the branch: 0 hits (exit 1). No ablation: documentation only.", "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack derived 16 families; each run byte-for-byte with its exit captured before any pipe, all 16 exit 0 (closing-keyword-parity + --self-test, comment-mask-corpus, pm/check-harness-current --self-test, lint check:doc-formula-expressions, agent-test-spelling, cross-package-test-inputs, doc-authoring, driver-memory-census, gitlink-declared, nul-bytes, pm-governed-merges, pm-skill-ratchet, refd-timer-probe, skill-frame-sync, watch-hint-literal). --ran: 16 derived, 16 run, 0 NOT-MEASURED. Also check-commit-card-trailers --range origin/main..HEAD: pass (1 commit, model-free trailer pair). PR check-runs: in_progress at report time; the farm is CI's.", "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm", "mcp_calls": "4 — mcp__github__issue_read x3 (card body, card comments twice: before and after the claim amendment), mcp__github__pull_request_read x1 (draft/labels/assignee read-back of the new PR); no MCP write", "api_writes": "3 — relay pr_create (objectstack#26536, labels [skip-changeset], assignees [os-steve]), relay comment (this os-dev-report) and relay pr_request_reviewers (os-steve), the last two in one stroke; plus git push (not a REST write)", "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted in PR #26536 Acceptance notes, not filed — .claude/skills/dogfood-verification/SKILL.md L76–L93 (outside the two named lines) still frames the retired pin route as live: the /_console UI '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 grep acceptance cannot reach it (no objectui:* script named). The stamp-drift refusal and OS_ALLOW_CONSOLE_DRIFT still exist in packages/cli/src/utils/console.ts (slice 3 kept them), so only the framing is stale. Governed .claude/** text: a sibling slice of this card if the seat wants it. dedupe words: dogfood-verification, .objectui-sha, check:console-sha, build-console.sh" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
devx seat 2 (#20163): slice 1 (PR #26536, ruling 6435329940 letter A) has a Contract review PASS on
153be45dand the seat ACCEPT. It stays a draft for a maintainer approval.Candidate for a later slice, found by the slice-1 thread and the reviewer:
.claude/skills/dogfood-verification/SKILL.mdL76–93 still describes the retired objectui pin route as current. It mentions/_consolepinned by.objectui-sha,build-console.shstampingpackages/console/dist/.objectui-sha, andpnpm check:console-sha, which is no longer a root script. The drift refusal andOS_ALLOW_CONSOLE_DRIFT=1still exist inpackages/cli/src/utils/console.ts, so those sentences need rewording, not deleting. The same rewrite should not end L90 on a Han character followed by ASCII;(the #12081 soft-break). Theobjectui:*grep cannot see this.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
Release:
session_01Q4MDXRbEJCNdPAP4SiXwp9(devx seat 2) · seat signs off on the maintainer's word 「devx 车道当前任务处理完就下班」 (2026-10-27 08:42Z) · next: a maintainer approval of PR #26536 (slice 1), then the later slicesPR #26536 (head
153be45d, slice 1 under ruling 6435329940 letter A) carries a Contract review PASS and the seat ACCEPT; CI is green. It edits.claude/**and stays a draft for a maintainer. The next slice candidate (thedogfood-verificationL76–93 bullet that still describes the retired pin route) is in 6436082138. #26073, #26081 PR 1 and #26088's remainder wait on this card.Generated by Claude Code
objectstack-fleet commentedon Oct 27, 2026
devx seat 2 · half-state corrected · 2026-10-27T23:03Z
This card is closed but still carried
pm:awaiting-maintainer. Closing stripspm:*status labels in the same stroke, so the label is removed now. Nothing else changed.Generated by Claude Code