Repository navigation
cutover(ui-merge): the switch itself — freeze both repos, git subtree add objectui as ui/ with its adaptation commit, land 4a / PR B / 4b PR 2 in order, migrate open objectui branches and cards, archive the objectui repo (parent #25677, 5/6) #25752
Description
Filing gate ③ + ④: sub-issue 5/6 of the epic #25677 (pm:epic; epic PM session_01RSDL3SFtJaKzcymvCD8RsU). Part of #25677. ⛔ Not a claim and ⛔ not dispatched to a dev seat: the epic PM runs this card step by step, and every step marked maintainer is Tesla's (repository settings, the human merges of the Tier H PRs, the archive click).
Blocked-by: #25697 (PR B, lands inside this window), #25711 (4a, lands inside this window), #25712 (4b PR 2, lands inside this window), #25727 (2c, its pre-freeze round is step 2 below). The parent's item 5 named 3 and 4 as the blockers; this card is where their last PRs land, so they block the merge step, not the card's start.
谁付代价(业务筛): every day the two repos stay separate costs the fleet the pin PRs (~40/month), the three-serial-PR shape of every cross-repo feature and 24 × 13 min of Spec Shape Gate; users get Console/spec version consistency by injection only (11.5.0 shipped an old client that way). The parent's 维护者速读 carries the readings; this card is the day the cost stops.
维护者速读
这张卡就是切换日的流程表。前面的子单把两边都准备好了(objectui 侧 2–2e 五轮就绪、objectstack 侧惰性接线 A/A2、发布合一 4a 草稿、治理 4b 第 1 刀),验证分支 #25718 已经跑了 7 轮,剩下的红全部归类并有归属(下面「切换 PR 自带的适配」逐条列)。切换那天:提前 24 小时通知、两仓冻结 1–2 天、一个约 259 万行的 subtree PR 由你人工合并、紧接着按顺序合 4a → PR B → 4b PR 2(都是 Tier H,都要你批)、ruleset / required checks / npm token 由你改、objectui 仓 README 改迁移说明后归档。你的四个动作都在「maintainer」标记处;其余由席位做并逐步在本卡留审计评论。七项决定(A–G)你已于 10-25 09:06Z 裁定,见最后一节;冻结前先落三张预备卡(2c 第二轮、E、F)。
Procedure (the seat drives; maintainer steps are Tesla's)
- T-24h notice (seat): one comment here and one on objectui's pinned seat note naming the freeze window; land every green PR in both repos; Dependabot paused on objectui for the window. After this comment nothing new is enqueued in objectui.
- Final objectui round (seat → 2c round 2, tooling(objectui-readiness 3): objectui compiles against objectstack main HEAD — bump .objectstack-sha past the spec commits since e649c2d91e, fix the fallout (TranslationPreview TS1360), repeat until cutover (parent #25677, 2c/6) #25727):
.objectstack-shato objectstackmainHEAD; the fourui/SKILL.md frontmatter flags (metadata.internal: truefor.claude/skills/objectui-contributor,.claude/skills/verify,packages/plugin-dashboard; see decision C forskills/objectui); re-rungit apply --check scripts/ui-import/4a-ui-side.patchagainst that objectuimainand refresh the patch if it fails (bill item 10). objectuimainis then frozen (branch protection: maintainer, or the seat stops merging). - Refresh the verify branch on that objectui
mainwith the recipe inscratchpad/notes (non-squashgit subtree pull --prefix=ui, helper files--theirs, lock =pnpm install --lockfile-onlyon the spliced lock thenpnpm dedupe, ⛔ never re-runsplice-lockfile.mjs --outon a spliced base — bill item 8) and read the run: every red must be in the accepted-class list below; a new class stops the window. - Cutover PR (seat opens as draft against
main; maintainer merges, Tier H by size ~2.59M lines): commit 1 =git subtree add --prefix=ui objectui <frozen main sha>(history kept, as the tooling(monorepo): 在试验分支上把 objectui 并入ui/workspace(subtree add、单 lockfile、turbo 构建图),交冲突清单、必改脚本清单与各类 PR 的 CI 时长读数 — 不落 main(父单 1/6) #25678 spike); commit 2 = the adaptation commit, the bill made concrete:- lockfile:
scripts/ui-import/splice-lockfile.mjsthenpnpm dedupe(5a + items 6/16: run 7 measured 50/527 ui importer rows moving onto objectstack's versions and the vite/postcss TS2321 class clearing); rootpnpm-workspace.yamloverrides scoped so objectui's dependency lines are not rewritten (react-router 7, happy-dom 21 — 5a); ui/manifests: every@objectstack/*dependencyworkspace:^;ui/package.jsonwhole-suitetestscript dropped (item 4);ui/turbo.jsonparked asturbo.objectui.json(rootturbo.jsonowns the graph); QUICK_REFERENCE rows onworkspace:^;- gates:
check-type-check-coverage.mjsaccepts objectui'stype-checkspelling for members underui/and the remaining findings get ledger rows (item 1);check:lockfile-integrityper-package verdict (dedupe or allowlist with reason) andcheck:lockfile-deduperun from the workspace root (items 6/7); rootbuildfilter may tighten to!./ui/apps/site(item 3); - census:
packages/client/src/envelope-caller-census.test.tsconverts the recordedOBJECTUI_CENSUSconstant into a liveLEDGERrow forui/packages/data-objectstack/src/index.ts(analytics.query, production consumer, not envelope-dependent), count 28 → 29 (item 17); - skills catalog: per decision C (item 18);
- decisions carried here:
ui/skills/objectui→ rootskills/(C); rooteslint.config.mjsglobalignoresgainsui/**(G1, item 25);check:test-source-aliasvitest-alias half scoped to non-ui/members (F, item 21d);check:dts-closureexpands*subpath patterns against dist (item 22);scripts/js-comment-mask.mjsstops reading JSX text as a comment opener, with a pinned self-test (item 23);check:adr-anchorsallowlist rows for theui/**/CHANGELOG.mdADR-0075 lines (item 19);check:undeclared-dep-importsledger row forui/apps/console/srcwith the bundled-SPA evidence (item 20); watch-hint / population declarations listui/**(item 21a);ui/.objectstack-pin/**deleted (item 21b); - the verify branch is the proof: the PR's CI must match the last verify read class for class.
- lockfile:
- Land the window's PRs in order (maintainer approves and merges each; the seat flips ready and requests review from GOVERNED_APPROVERS only now, never before): subtree PR → 4a release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745 (release lane; approval 5641652106 already stands; carries decisions B/17c and D/17b) → PR B of tooling(ui-wiring): objectstack-side inert wiring for the
ui/workspace — workspace globs, root turbo tasks, path-filtered ui test/typecheck/lint/E2E jobs, spec change compiles the Console; pin gates retire at cutover (parent #25677, 3/6) #25697 (retires Spec Shape Gate, Console Pin Gate, prerelease-pin-watch,check-single-claim-paths,findObjectuiPin; item 12) → 4b PR 2 (tooling(ui-merge): governance in-repo — liveness evidence and spec tests stop citing objectui by commit, one sdui-parser, AGENTS.md / pm scripts dropobjectui#,ui/AGENTS.mdnests, 18 governance workflows merged or retired (parent #25677, 4b/6) #25712: README Export Check port,ui/.changesetpresence gates, sdui manifest fromui/, AGENTS.md cross-repo convention rewrite, the sixui/**Tier H rows with item 16; items 2/13 — QUICK_REFERENCE moved to 4a). Each lands withmaingreen or with only the classes the previous PR in the chain is about to clear; the seat posts the 维护者速读 +## 席位核对finale on each. - Repository settings (maintainer): required checks — drop
Spec Shape Gate,Console Pin Gate, prerelease-pin-watch contexts, addTest UI,Type Check UI,Lint UI,Build & E2E UI(names as A2's ci.yml spells them); the release npm token's publish rights on@object-ui(decision A); the Vercel project for objectui's docs site (4b'sdocs-deploy.yml). The seat lists the exact context names in a comment before this step. - Branch and card migration (seat): every open objectui branch with a PR is ported with
git format-patch origin/main..<branch> --stdout | git am --directory=uionto an objectstack branch and re-opened as an objectstack PR (Part ofits transferred card); the ~28 open objectui cards transfer to objectstack withscripts/pm/issue-transfer.mjs(same organisation), labels mapped (domain:uilane folds in per 4b); objectui seat notes closed; staleclaude/*branches (382, one with a PR) deleted after the transfer. - Archive objectui (seat PR + maintainer click): objectui README first section becomes the migration notice (where the code lives now, how to port a branch, where issues went); the repo is archived by the maintainer. The parent's item 6 (first joint 18.x release, docs-site deploy, process: a published-type change objectui consumes lands in lockstep with objectui's adaptation — #24947 left framework main and objectui main uncompilable together, so cloud's pin round had to stop 7 commits short #25556) is sub-issue 6.
Accepted red classes on the verify branch at freeze (anything else stops the window)
pin / spec-drift class (Test UI 1, 2 — cleared by step 2); QUICK_REFERENCE release-sync class (Test UI 9, 13, 14 — decision B); type-check coverage findings (source gates, debt ledger — item 1); lint-lane workspace-glob classes and Validate Package Dependencies (cleared by PR B / 4b PR 2); census (item 17) and skills catalog (item 18) — cleared by the adaptation commit; main-side regressions not of this epic (e.g. check-liveness translation/flows.screens, red on main since #25734) are tracked by their owning lane and do not count. Added from runs 8–11: clocked-window class (Test UI 3/16, DraftChangesPanel.securityProblems) — cleared by 2c round 2 (a) / card F; ESLint 121 errors under ui/** — cleared by G1 in the adaptation commit; check:dts-closure @object-ui/i18n wildcard — cleared by the item 22 gate fix; plugin-pinyin-search boot-reconcile 5 s timeout (main's #25634, item 26) — main-side timing, re-run once, not ours.
Done when
ui/is onmainwith objectui's history; 4a, PR B and 4b PR 2 are merged;mainis green except for classes the maintainer has explicitly accepted into ledgers.- No
.objectui-sha/.objectstack-shaand none of the pin scripts in 4a's items 3–4 are in the tree; the required-checks set names no retired gate. - Every open objectui PR has an objectstack PR or a closing comment; every open objectui card is transferred; objectui is archived with the migration notice as its README head.
- Hand-off comment to sub-issue 6 with the first joint release's expected version.
Size: XL (procedure; the PR is mechanical). Clause-②: no. Metadata-protocol: none.
风险
- A GOVERNED_APPROVER flipping a held PR early (happened on release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745 at 05:06Z; reverted). The seat reverts and re-states the hold; the landing order above is the only safe order.
- An 18.1.x patch release needed inside the freeze: release before the freeze through the old lane or after through the new one, never inside it (parent's Done when).
- Rollback: objectui's pre-freeze
mainstays; within two weeksgit subtree split --prefix=uirestores a standalone repo. - Unmeasured until the first joint release: npm scope rights (decision A), Version PR shape with 39 more packages.
Decisions for the maintainer — DECIDED (Tesla, director thread, 2026-10-25 09:06Z: 「第 16 项 · 同意;17a · 有权限;17b · 你决定;17c · 17d · 同意」「17e · 17f · 17g · 同意」)
- A (17a). The release npm token HAS publish rights on the
@object-uiscope (Tesla's word). Step 6 needs no token change; the first joint release (sub-issue 6) is the measurement. - B (17c). Retire the QUICK_REFERENCE release-sync rows (
sync-quick-reference-release, its tests, the synced rows). Carried by 4a release(ui-merge): one release lane for both scopes — @object-ui joins the fixed group, @objectstack/console builds from ui/apps/console, the objectui pin is deleted (#25711) #25745 (seat ruling 09:09Z: the only release-path caller is thechangeset-release.yml4a deletes and 4a's ui patch already editsui/QUICK_REFERENCE.md); 4b PR 2 drops the item. - C (17d). Move
ui/skills/objectuiinto the rootskills/catalog; mark the three contributor skills underui/metadata.internal: true(packages/plugin-dashboardin 2c round 2 (a);.claude/skills/objectui-contributorand.claude/skills/verifyin the governed round 2 (b)). The move is in the cutover adaptation commit. - D (17b). Tesla delegated to the director; ruling B: the private VS Code extension
object-uistays in the changesets fixed group (4a implements: root.changeset/config.jsonfixed gainsobject-ui,check-changeset-fixedaccepts the declared private member). - E (17e). Rename the 9
@object-ui/typesduration keys so the key name carries the unit, with ADR-0087 conversions (autoPlay,autoResponseDelay,timeout,delay,duration,delayDuration,openDelay,closeDelay,refreshInterval; bill item 21(d)). Prep card, objectui-side, before the freeze. - F (17f). Adopt for the function-body half: warm module-scope imports in the ~25 ui test files
check:test-source-aliasnames (the clocked-window class that reddened Test UI 3/16 on verify runs 8 and 11, bill item 24); scope the vitest-alias half of the gate to non-ui/members (adaptation commit). Prep card, objectui-side, before the freeze. - G (17g). G1: the root ESLint flat config ignores
ui/**at cutover (adaptation commit, oneignoresentry with the config's own census comment); Lint UI stays ui/'s lint; the two configs converge in aftercare aftercare(ui-merge): the first joint 18.x release from the merged repo — both scopes at one version, @object-ui published, docs site deployed — then close #25556 as superseded and the epic (parent #25677, 6/6) #25753 (bill item 25: 121 errors, all underui/**, mostlyreact-hooks/static-components). - Item 16 (4b).
ui/.claude/**stays Tier H (human-approved) until it folds into the root.claude/**.
Pre-freeze prep cards (dispatched 2026-10-25 after the rulings; each lands in objectui before step 2's final pin bump)
- 2c round 2 (a)/(b) on tooling(objectui-readiness 3): objectui compiles against objectstack main HEAD — bump .objectstack-sha past the spec commits since e649c2d91e, fix the fallout (TranslationPreview TS1360), repeat until cutover (parent #25677, 2c/6) #25727: pin to objectstack
mainHEAD,plugin-chatbot@ai-sdk/reactexactly4.0.121+ai^7.0.118(bill 16),plugin-dashboardSKILL.md internal (C),ObjectUI ADR-0075spelling +ADR-9999fixture rename (bill 19),better-authexactly1.7.12(bill 21c), warm@objectstack/lintimport inDraftChangesPanel.securityProblems.test.tsx(bill 24); (b) governed: the two contributor-skill flags (C) andui/AGENTS.md:210(bill 21c). - Decision E card (rename the 9 duration keys).
- Decision F card (warm the remaining ~24 function-body imports).
- The verify branch
claude/project-thread-dwhq6r-25697-verify(head 9e37acd, run 8 tree) stays the measured tree; the cutover bill is/mnt/project-files/d1-merge/out/5-cutover-bill-notes.mditems 1–26 (19–26 added from verify runs 8–11: adr-anchors allowlist rows for CHANGELOG lines,check:undeclared-dep-importsledger row forui/apps/console/src, watch-hint/population declarations gainingui/**,check:dts-closureexpanding*subpath patterns,js-comment-maskJSX-text defect, the pinyin boot-reconcile 5 s timeout from main's plugin-pinyin-search: every boot scans all rows of transientsys_inbox_message, making startup O(table size) #25634).
Dedupe
search_issues 2026-10-25 05:33Z 「objectui merge cutover day freeze subtree add ui/ archive objectui repo migrate branches transfer issues」: 33 hits, all this epic's family (#25677, #25678, #25685, #25711, #25712, #25726, #25727) plus #25556; no card describes the cutover day itself — the parent's item 5 is this card's only prior text; #25556 (open) is sub-issue 6's. New.
Activity
objectstack-fleet commentedon Oct 25, 2026
Freeze notice — step 1 (ruled by the maintainer, director thread 2026-10-25 13:39Z / 14:06Z / 14:40Z)
Ruling. No 24-hour lead: the freeze starts as soon as the ui lane's last in-flight seat PR is on objectui
main(objectui#13529 merged 13:55Z, objectui#13526 merged 14:56Z). 「冻结的时候 objectstack 可以派任务吗」 → yes: objectstack dispatch, branches, PRs and CI continue throughout; objectstackmainpauses merges only for the Tier H landing sitting. The objectui Version PR #13479 is closed, not merged (「关」, 14:40Z): no 18.2.0 ships from objectui; the first joint release is sub-issue 6 (#25753's sibling).What is frozen, from this comment.
main: frozen until the repository is archived (step 8). The only commit still allowed is the final.objectstack-shabump (step 2, tooling(objectui-readiness 3): objectui compiles against objectstack main HEAD — bump .objectstack-sha past the spec commits since e649c2d91e, fix the fallout (TranslationPreview TS1360), repeat until cutover (parent #25677, 2c/6) #25727, in flight now). Nothing else is enqueued; open PRs are ported to objectstack in step 7 (git format-patch … | git am --directory=ui). Dependabot's auto-enqueue is already off (objectui#13527).main: NOT frozen. Merges pause only during the sitting below, because the four PRs touch rootci.yml,pnpm-workspace.yaml, the lockfile,turbo.json,AGENTS.mdandCODEOWNERS.Sitting (maintainer, confirmed 14:06Z): 2026-10-26 09:00Z (北京 17:00), ~30 min. In order: cutover PR (subtree + adaptation commit, Tier H by size) → 4a #25745 → PR B #25697 → 4b PR 2 #25712, then the required-checks change (step 6; the exact context names are posted here before the sitting). If the 18.2.0 Version PR #25640 is merged before then, its publish must have finished (publish job green, npm verified) before the first Tier H merge, because 4a replaces the release pipeline.
Timeline to the sitting (seat): pin bump → objectui frozen ~15:45Z · adaptation patch series (#25803) ~18:00Z · cutover branch =
git subtree add --prefix=ui <frozen objectui main>+ the series, first CI ~16:30Z, final ~19:30Z, green target 21:00Z, hard limit 07:00Z · 4a re-check + PR B / 4b PR 2 rebased ontomainby 23:00Z · handover (PR number, context names, order) to the maintainer by 08:00Z.Prep cards landed before this notice: 2c rounds 1–2(b) (#25727), E #25762, F #25763, G #25766, H objectui#13497, I #25790; J #25803 (adaptation series) in work.
Generated by Claude Code
objectstack-fleet commentedon Oct 25, 2026
Step 2 done — objectui
mainis frozen at9e1fe032866965c7cb0460cff2b6af09350236b7The final pin objectui#13545 (
.objectstack-sha→ objectstack5e7cf63e71d92198a77cc88ed22f34afb1e86cb6) merged through the queue at 15:40Z; #25727 is closed. From here objectuimaintakes no commit: the cutover PR'sgit subtree add --prefix=uiimports exactly that tip, and any later objectui branch is ported toui/in step 7.Next (step 3–4, seat): fresh cutover branch off objectstack
main= subtree add of the frozen tip + the lockfile recipe (bill 28) → first CI run; the adaptation patch series (#25803, in work, ETA ~18:00Z) goes on top, with the K1 scoping ofcheck:published-files(ruled 15:07Z) → final run, green target 21:00Z. PR B (#25697 item 6, retire the pin gates) is in a seat's hands in parallel, draft + green by 21:00Z.Generated by Claude Code
merge(ui): import objectui main at its frozen tip 9e1fe03 as the ui/ …
lint(cutover): the root ESLint config leaves ui/** to ui/eslint.confi…
skills(cutover): move the objectui skill bundle into the root skills/…
objectstack-fleet commentedon Oct 25, 2026
Sitting brought forward to NOW (Tesla, 2026-10-25 22:42Z: 「开始,接受绕过」). Steps 3–5 of this procedure run tonight: cutover PR #25825 (head
ac3de5a207, run 6 green on every required lane) is ready for the maintainer's admin merge; then 4a #25745, then PR B #25827 and 4b PR 2b #25834, then the required-check adds (Type Check UI,Lint UI,Build & E2E UI). Merges intomainare stopped by the maintainer until the four are in; no release tonight. 4b PR 2a #25833 is already onmain. Progress is recorded on each PR; this card gets the closing summary after step 5.merge(ui): objectui becomes the ui/ workspace of this repository — su…
ci(ui-merge): retire the two-repo pin gates — Spec Shape Gate, Consol…
objectstack-fleet commentedon Oct 26, 2026
Sitting closing summary 2026-10-26T00:39Z — steps 1–6 done, 7–8 carded · epic PM
session_01RSDL3SFtJaKzcymvCD8RsUThe Tier H sitting ran the night of 2026-10-25/26 under ruling 30 = B (each PR merges once the seat's local gate sweep is clean and the four fast lanes are green; test shards are read afterwards on
main). Every merge was the maintainer's click after a GOVERNED_APPROVER review.mainfrozen at9e1fe03286(2026-10-25T15:40Z); verify branch run 11 read, every red on the billmainfd40831416(subtree + adaptation series J #25803)2a61f08093); PR B #25827 merged 2026-10-26T00:07Z (90a34e2039); 4b PR 2a #25833 (before the sitting) and 2b #25834 merged 2026-10-26T00:24Z (e167956e3f)Lint UI+Build & E2E UIadded by the maintainer 2026-10-26T00:25Z; nothing to drop (neither retired gate was in the set, PR B measured).--verify-required-setone167956e3f: 7 live, 2 required-but-unpinned → repo half is #25853.Type Check UIjoins after #25855 (bill 49);Test UInot added (ruling 30). npm token: decision A, no change. Vercel docs project: #25753.claude/*branches, then the maintainer's archive click)mainafter the sitting (e167956e3f): pushCIrun 40249186268 — success (every required lane green).Lint & Type Checkpush runs stay red on one lane,Lint · PM dispatch-gates, sincefd40831416— green on every PR run of the same trees; tracked on #25851 (bill item 50). Known test reds that appear only in the hourly full battery:Test UI8/16 and 9/16 read the deletedui/.github/workflows/*(next #25712 PR);Test UI3/16 andTest Core5/8 are fixed by #25852 (ready, auto-merge armed).Done-when read-back:
ui/is onmainwith objectui's history ✓; 4a, PR B, 4b PR 2 merged ✓; no.objectui-sha/.objectstack-shaand none of 4a's pin scripts in the tree ✓ (git ls-files | grep -c 'objectui-sha\|objectstack-sha\|bump-objectui'= 0 ate167956e3f); required set names no retired gate ✓. Still owed by #25854: objectui PRs/cards/archive. Hand-off to sub-issue 6 (#25753): the first joint release is 18.2.0 (both scopes, 112 members, one Version PR from the root lane; ruling 27 = B, not cut tonight; #25831 moves the 65 travelled changesets first).Bill:
/mnt/project-files/d1-merge/out/5-cutover-bill-notes.mditems 1–50; superseded cards closing: #25829 (Console Pin Gate repair, gate deleted by PR B), #25810 (pin bump, pin deleted by 4a).objectstack-fleet commentedon Oct 26, 2026
Addendum 2026-10-26T00:48Z — correction to the closing summary: objectui's history is NOT on
main· epic PMsession_01RSDL3SFtJaKzcymvCD8RsUThe #25854 seat measured it (00:46Z) and I confirmed on a fresh fetch: the cutover PR #25825 landed as a squash —
fd40831416has one parent (e2aaaf1c07), andcompare/9e1fe03286...mainanswers "No common ancestor". The PR's branch carried thegit subtree addmerge with objectui's history, but the maintainer's admin merge squashed it, somainholds objectui's content at9e1fe03286and none of its commits. The closing summary's "ui/ is on main with objectui's history ✓" is wrong; the done-when clause reads "content ✓, history ✗".Consequences, as read now:
git log/git blamefor anything older thanfd40831416). cutover(ui-merge): wind down the objectui repository — close its 6 bot PRs, transfer the open cards to objectstack, close the seat posts, migration-notice README, delete the 381claude/*branches; the maintainer archives (parent #25752 steps 7–8) #25854's README notice says so explicitly.format-patchfrom objectui,git am --directory=uiinto objectstack); the recipe in cutover(ui-merge): the switch itself — freeze both repos,git subtree addobjectui asui/with its adaptation commit, land 4a / PR B / 4b PR 2 in order, migrate open objectui branches and cards, archive the objectui repo (parent #25677, 5/6) #25752 step 7 is unchanged.git subtree split --prefix=uirestores a standalone repo") restores the content, not the history; the archived repository restores the history.git merge --allow-unrelated-historiesof objectui9e1fe03286read intoui/, merged with "Create a merge commit" instead of squash). The epic PM recommends accepting: the archive preserves the history at zero cost, and a stitching merge adds ~9,000 commits tomain's log forblameconvenience alone.objectstack-fleet commentedon Oct 26, 2026
Ruling 31 2026-10-26T01:01Z — content-only import accepted · epic PM
session_01RSDL3SFtJaKzcymvCD8RsUMaintainer (director thread, 2026-10-26T01:01Z, verbatim): 「A」 — on the addendum above: the content-only import of objectui into
ui/stands as final. objectui's commit history up to9e1fe03286lives in the archived, read-only, never deleted objectui repository; no history-stitching merge PR will be opened. #25854's README notice says where the history lives. The done-when clause of this card reads "content ✓, history by reference to the archive ✓".objectstack-fleet commentedon Oct 26, 2026
决策卡:
Type Check UI仍不在 main 的必需检查里(第 6 步未闭合)2026-10-26T04:52Z · PM 立卡(维护者 03:31Z 规则:需要决策的都要有决策卡)。本卡挂
needs-user-decision。一句话问题: 维护者 02:56Z 说「Type Check UI 加了」,但 ruleset 实读仍只有 7 项必需检查,
Type Check UI不在其中;ui 包的类型错误今天可以带着红的 Type Check UI 合进 main。Governing text:
scripts/check-required-contexts.mjs --verify-required-set的判词:「Resolving this is a MAINTAINER decision (drop the row, or restore the context in Settings → Rulesets); this script decides nothing.」;AGENTS.md 「the queue enforces only the required set … A check outside those … is advisory and rides through」(grep -n "enforces only the required" AGENTS.md)。协议声明: 不改协议;只涉及仓库设置或一行登记。
前提(带 re-check):
2a728ba2ac):required-set sweep: 7 live required context(s) on main, 1 registered-but-not-required, 0 required-but-unpinned;ruleset main(id 12119582)列出 TypeScript Type Check / Test Core / Build Core / Lint & Repo Gates / Governed Surface Queue Guard / Lint UI / Build & E2E UI。re-check:node scripts/check-required-contexts.mjs --verify-required-set(需NODE_OPTIONS=--use-env-proxy)。Type Check UIin REQUIRED_CONTEXTS #25878 已于 03:20Z 合并,REQUIRED_CONTEXTS已登记Type Check UI(direction A 行引用 02:56Z 原话)。Type Check UI在 main 推送运行上为绿(run 40253800516,ci(ui-merge): Type Check UI builds the five vitest-setup packages before that step, so an empty ui scope no longer reds it #25856 关掉 bill 49 之后)。选项 × 真实代价 × 工作量:
Type Check UI并 SaveREQUIRED_CONTEXTS的Type Check UI行Type Check UI继续只是建议性检查,ui 类型回归可以进 main业务含义直译: A = 门禁登记了,也把闸真正装上;B = 撤掉登记,承认这道闸不拦人。
os-decision-facets
Prior rulings read:
Type Check UIrequired → cutover(ui-merge): the switch itself — freeze both repos,git subtree addobjectui asui/with its adaptation commit, land 4a / PR B / 4b PR 2 in order, migrate open objectui branches and cards, archive the objectui repo (parent #25677, 5/6) #25752 第 6 步、ci(ui-merge):Type Check UIis red on every PR whose ui affected-scope is empty —type-check:vitest-setupcompiles against unbuilt@object-ui/*dists after turbo built nothing (bill item 49) #25855(bill 49)、ci(ui-merge): registerType Check UIin REQUIRED_CONTEXTS #25878、维护者 02:56Z 「Type Check UI 加了」、第 30 项 B(只排除 Test UI); ADR none; thread: 02:56Z(ci(ui-merge): registerLint UIandBuild & E2E UIin REQUIRED_CONTEXTS — the main ruleset requires both since 2026-10-26 00:25Z and the registry pins neither (parent #25752 step 6, repo half) #25853 席位线程)。推荐:A。 只看①选 A;②③④ 是否翻转:否。置信缺口:无法确认 02:56Z 后设置页是否保存失败还是改在了别的 ruleset;sweep 只读到 1 个覆盖 main 的活动 ruleset。不取 B:与维护者已表达的意图相反。
裁后执行: A ⇒ 维护者保存后,PM 复读 sweep,期望
8 live … 0 registered-but-not-required, 0 required-but-unpinned,在本卡贴读数并关闭第 6 步。B ⇒ PM 派 S 卡删行,sweep 期望7/0/0。维护者速读
要做的: 打开 Settings → Rulesets →
main,在 Required status checks 里加Type Check UI,点 Save。03:20Z 后实读仍是 7 项,它不在里面(可能上次没保存成功)。你要做的: 点一次保存(选 A),或回 B 表示不加。
objectstack-fleet commentedon Oct 26, 2026
Ruled:
Type Check UIis required. Step 6 is closed.2026-10-26T05:11Z · PM. Tesla reported at 05:10Z in the project timeline, verbatim: 「现在好了」. The add at 02:56Z had gone into objectui's ruleset by mistake. It is now in objectstack's
mainruleset, so the decision card above is answered with option A.Read-back on
main2a728ba2ac, fromnode scripts/check-required-contexts.mjs --verify-required-set:Step 6 of this card is complete. The required set names no retired gate, and all three of
Lint UI,Build & E2E UIandType Check UIare required.Test UIstays advisory under ruling 30 = B. Theneeds-user-decisionlabel comes off this card in the same pass. Steps 7–8, the objectui wind-down, wait on #25854's own decision card, which asks for the archive.objectstack-fleet commentedon Oct 26, 2026
Steps 7–8 done (2026-10-26T07:47Z), via #25854. objectui is archived, not deleted: 0 open PRs, 0 open issues, 60 cards transferred here with audit comments, seat posts closed toward #6025, README migration notice merged (objectui#13548),
claude/*branches removed. Correction to the sitting summary above: the cutover import is content-only (squash, ruling 31 = A), so objectui's pre-import history lives only in the archived repository, not underui/here. Full record: #25854.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Closing child 5 as completed (2026-10-26T07:51Z). Every step of the procedure is done:
claude/*branches; the maintainer archives (parent #25752 steps 7–8) #25854)."Done when" check: no pin files or pin scripts are in the tree, and the required checks name no retired gate. The hand-off to sub-issue 6 is posted on #25753 (comment 6410938536); it expects 18.2.0 as the first joint release. On
main, the only red row in the latest push runs isDogfood Regression Gate (3/3), which is not a ui/ class and was green on #25957's run in between. It is not part of this card.Open work under the epic continues on #25712 (2d-3), #25831, #25832 and #25753.