Skip to content

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

Closed

Description

@objectstack-fleet

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)

  1. 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.
  2. 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-sha to objectstack main HEAD; the four ui/ SKILL.md frontmatter flags (metadata.internal: true for .claude/skills/objectui-contributor, .claude/skills/verify, packages/plugin-dashboard; see decision C for skills/objectui); re-run git apply --check scripts/ui-import/4a-ui-side.patch against that objectui main and refresh the patch if it fails (bill item 10). objectui main is then frozen (branch protection: maintainer, or the seat stops merging).
  3. Refresh the verify branch on that objectui main with the recipe in scratchpad/notes (non-squash git subtree pull --prefix=ui, helper files --theirs, lock = pnpm install --lockfile-only on the spliced lock then pnpm dedupe, ⛔ never re-run splice-lockfile.mjs --out on 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.
  4. 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.mjs then pnpm 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); root pnpm-workspace.yaml overrides scoped so objectui's dependency lines are not rewritten (react-router 7, happy-dom 21 — 5a);
    • ui/ manifests: every @objectstack/* dependency workspace:^; ui/package.json whole-suite test script dropped (item 4); ui/turbo.json parked as turbo.objectui.json (root turbo.json owns the graph); QUICK_REFERENCE rows on workspace:^;
    • gates: check-type-check-coverage.mjs accepts objectui's type-check spelling for members under ui/ and the remaining findings get ledger rows (item 1); check:lockfile-integrity per-package verdict (dedupe or allowlist with reason) and check:lockfile-dedupe run from the workspace root (items 6/7); root build filter may tighten to !./ui/apps/site (item 3);
    • census: packages/client/src/envelope-caller-census.test.ts converts the recorded OBJECTUI_CENSUS constant into a live LEDGER row for ui/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 → root skills/ (C); root eslint.config.mjs global ignores gains ui/** (G1, item 25); check:test-source-alias vitest-alias half scoped to non-ui/ members (F, item 21d); check:dts-closure expands * subpath patterns against dist (item 22); scripts/js-comment-mask.mjs stops reading JSX text as a comment opener, with a pinned self-test (item 23); check:adr-anchors allowlist rows for the ui/**/CHANGELOG.md ADR-0075 lines (item 19); check:undeclared-dep-imports ledger row for ui/apps/console/src with the bundled-SPA evidence (item 20); watch-hint / population declarations list ui/** (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.
  5. 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 drop objectui#, ui/AGENTS.md nests, 18 governance workflows merged or retired (parent #25677, 4b/6) #25712: README Export Check port, ui/.changeset presence gates, sdui manifest from ui/, AGENTS.md cross-repo convention rewrite, the six ui/** Tier H rows with item 16; items 2/13 — QUICK_REFERENCE moved to 4a). Each lands with main green or with only the classes the previous PR in the chain is about to clear; the seat posts the 维护者速读 + ## 席位核对 finale on each.
  6. Repository settings (maintainer): required checks — drop Spec Shape Gate, Console Pin Gate, prerelease-pin-watch contexts, add Test 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's docs-deploy.yml). The seat lists the exact context names in a comment before this step.
  7. 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=ui onto an objectstack branch and re-opened as an objectstack PR (Part of its transferred card); the ~28 open objectui cards transfer to objectstack with scripts/pm/issue-transfer.mjs (same organisation), labels mapped (domain:ui lane folds in per 4b); objectui seat notes closed; stale claude/* branches (382, one with a PR) deleted after the transfer.
  8. 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 on main with objectui's history; 4a, PR B and 4b PR 2 are merged; main is green except for classes the maintainer has explicitly accepted into ledgers.
  • No .objectui-sha / .objectstack-sha and 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.

风险

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-ui scope (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 the changeset-release.yml 4a deletes and 4a's ui patch already edits ui/QUICK_REFERENCE.md); 4b PR 2 drops the item.
  • C (17d). Move ui/skills/objectui into the root skills/ catalog; mark the three contributor skills under ui/ metadata.internal: true (packages/plugin-dashboard in 2c round 2 (a); .claude/skills/objectui-contributor and .claude/skills/verify in 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-ui stays in the changesets fixed group (4a implements: root .changeset/config.json fixed gains object-ui, check-changeset-fixed accepts the declared private member).
  • E (17e). Rename the 9 @object-ui/types duration 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-alias names (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, one ignores entry 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 under ui/**, mostly react-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)

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

  1. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    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; objectstack main pauses 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.

    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 onto main by 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

  2. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Step 2 done — objectui main is frozen at 9e1fe032866965c7cb0460cff2b6af09350236b7

    The final pin objectui#13545 (.objectstack-sha → objectstack 5e7cf63e71d92198a77cc88ed22f34afb1e86cb6) merged through the queue at 15:40Z; #25727 is closed. From here objectui main takes no commit: the cutover PR's git subtree add --prefix=ui imports exactly that tip, and any later objectui branch is ported to ui/ 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 of check: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

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    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 into main are stopped by the maintainer until the four are in; no release tonight. 4b PR 2a #25833 is already on main. Progress is recorded on each PR; this card gets the closing summary after step 5.

  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Sitting closing summary 2026-10-26T00:39Z — steps 1–6 done, 7–8 carded · epic PM session_01RSDL3SFtJaKzcymvCD8RsU

    The 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.

    step result
    1–3 freeze notice posted; objectui main frozen at 9e1fe03286 (2026-10-25T15:40Z); verify branch run 11 read, every red on the bill
    4 cutover PR #25825 merged 2026-10-25T22:51Z → main fd40831416 (subtree + adaptation series J #25803)
    5 4a #25745 merged 2026-10-25T23:29Z (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)
    6 required checks: Lint UI + Build & E2E UI added by the maintainer 2026-10-26T00:25Z; nothing to drop (neither retired gate was in the set, PR B measured). --verify-required-set on e167956e3f: 7 live, 2 required-but-unpinned → repo half is #25853. Type Check UI joins after #25855 (bill 49); Test UI not added (ruling 30). npm token: decision A, no change. Vercel docs project: #25753.
    7–8 carded as #25854 (6 bot PRs to close, 69 open issues to transfer or close, migration-notice README PR, 381 claude/* branches, then the maintainer's archive click)

    main after the sitting (e167956e3f): push CI run 40249186268 — success (every required lane green). Lint & Type Check push runs stay red on one lane, Lint · PM dispatch-gates, since fd40831416 — 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 UI 8/16 and 9/16 read the deleted ui/.github/workflows/* (next #25712 PR); Test UI 3/16 and Test Core 5/8 are fixed by #25852 (ready, auto-merge armed).

    Done-when read-back: ui/ is on main with objectui's history ✓; 4a, PR B, 4b PR 2 merged ✓; no .objectui-sha / .objectstack-sha and none of 4a's pin scripts in the tree ✓ (git ls-files | grep -c 'objectui-sha\|objectstack-sha\|bump-objectui' = 0 at e167956e3f); 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.md items 1–50; superseded cards closing: #25829 (Console Pin Gate repair, gate deleted by PR B), #25810 (pin bump, pin deleted by 4a).

  5. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Addendum 2026-10-26T00:48Z — correction to the closing summary: objectui's history is NOT on main · epic PM session_01RSDL3SFtJaKzcymvCD8RsU

    The #25854 seat measured it (00:46Z) and I confirmed on a fresh fetch: the cutover PR #25825 landed as a squash — fd40831416 has one parent (e2aaaf1c07), and compare/9e1fe03286...main answers "No common ancestor". The PR's branch carried the git subtree add merge with objectui's history, but the maintainer's admin merge squashed it, so main holds objectui's content at 9e1fe03286 and 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:

  6. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling 31 2026-10-26T01:01Z — content-only import accepted · epic PM session_01RSDL3SFtJaKzcymvCD8RsU

    Maintainer (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 to 9e1fe03286 lives 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 ✓".

  7. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    决策卡: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):

    选项 × 真实代价 × 工作量:

    选项 做什么 后果 工作量
    A(推荐) 维护者在 Settings → Rulesets → main → Required status checks 加上 Type Check UI 并 Save ui 类型错误在合并队列被拦下;登记与设置一致,sweep 读 8/0/0 维护者 1 次点击;PM 复读 sweep
    B 不加,PM 派一个小 PR 删掉 REQUIRED_CONTEXTS 的 Type Check UI 行 Type Check UI 继续只是建议性检查,ui 类型回归可以进 main devx · 1 个 S PR · 先例 #9533(删一对行)

    业务含义直译: A = 门禁登记了,也把闸真正装上;B = 撤掉登记,承认这道闸不拦人。

    os-decision-facets

    推荐: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 表示不加。

  8. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruled: Type Check UI is 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 main ruleset, so the decision card above is answered with option A.

    Read-back on main 2a728ba2ac, from node scripts/check-required-contexts.mjs --verify-required-set:

    required-set sweep: 8 live required context(s) on main, 0 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 · Type Check UI
      ✅ the live required set and this registry agree in both directions.
    

    Step 6 of this card is complete. The required set names no retired gate, and all three of Lint UI, Build & E2E UI and Type Check UI are required. Test UI stays advisory under ruling 30 = B. The needs-user-decision label 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.

  9. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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 under ui/ here. Full record: #25854.


    Generated by Claude Code

  10. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Closing child 5 as completed (2026-10-26T07:51Z). Every step of the procedure is done:

    "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 is Dogfood 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:devxpm:epicpriority:p1High: required for production / M2tooling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions