Repository navigation
objectui 并入 objectstack 为 ui/ workspace:D1 裁定(A+)的执行父单 — 一个 PR 同时改 spec 与渲染器,删除两仓互钉,@object-ui 保留包名并与 @objectstack 同一版本组,objectui 仓归档为迁移说明 #25677
Description
Filing gate ③ + ④:维护者直派的跨仓协调父单。⛔ 不是认领;父单永不派发,子单逐张立、按 Blocked-by: 排序。
Epic PM registration (seat-lifecycle.md 〈Epic 子树车道〉)
- Session:
session_01RSDL3SFtJaKzcymvCD8RsU— the Claude project thread 「Decide objectui–objectstack pinning」, epic PM for this parent since 2026-10-24 15:17Z on the maintainer's instruction, verbatim: 「这个任务建议什么时候开始处理,你负责」. - Account:
os-tesla. - File territory (declared; each sub-issue's claim narrows it further):
ui/**(the imported objectui tree),pnpm-workspace.yaml,pnpm-lock.yaml,turbo.json,patches/**,.objectui-sha,scripts/build-console.sh,scripts/bump-objectui.sh,scripts/objectui-*.mjs,scripts/check-sdui-*.mjs,packages/console/**,packages/sdui-parser/objectui-lockstep.json, theevidenceScope: cross-reporows ofpackages/spec/liveness/**; and, only through Tier H sub-issues with maintainer approval,.github/workflows/**,AGENTS.md,docs/adr/**(.changeset/config.jsonwas listed here at filing but is not on the governed register — corrected 2026-10-25 after check-governed-merges 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). Why this wide: the merge retires every file that implements the two-repo pin on either side, so the territory is that retired surface, not a claim on the packages' own code. - Sub-issues: filed one at a time under this parent, labelled
pm:epic, neverpm:queue; a domain seat skips the whole subtree. Children so far: 1 = tooling(monorepo): 在试验分支上把 objectui 并入ui/workspace(subtree add、单 lockfile、turbo 构建图),交冲突清单、必改脚本清单与各类 PR 的 CI 时长读数 — 不落 main(父单 1/6) #25678 (done), 2 = tooling(objectui-readiness): make the objectui tree merge-ready in its own repo before cutover — one react line, one zod range, uiRoot() helper, tsc heap, workspace-aware Console chunk tests, typecheck alias (parent #25677, 2/6) #25685 (done, objectui#13472 merged 2026-10-24 23:01Z as objectui@cd70b7818), 2b = tooling(objectui-readiness 2): scripts, tests and e2e specs that read pnpm-workspace.yaml, turbo.json, pnpm-lock.yaml or root overrides at the objectui root resolve the workspace root upward (parent #25677, 2b/6) #25723 (objectui readiness 2: root-file readers resolve the workspace root upward; PR objectui#13484 open), 2c = 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 (objectui readiness 3: catch up to objectstack main — spec drift, repeated until cutover; round 1 = objectui#13496 MERGED 2026-10-25 03:58Z, objectui's .objectstack-sha at 43edf90; the card stays open for the pre-freeze round), 2d = tooling(objectui-readiness 4): objectui scripts address git paths relative to the repo root —git show ref:packages/…,diff --name-only,ls-files,ls-treebreak one level down in ui/; prefix via nestedPrefix() (parent #25677, 2d/6) #25728 (done, objectui#13491 MERGED 2026-10-25 03:43Z as objectui@6c3340c5), 2e = tooling(objectui-readiness 5): three objectui tests assume the objectui root is the pnpm workspace root —.pnpminstall probes, the CLI generator IN-WORKSPACE map, the Console vendor-chunk standalone baseline (parent #25677, 2e/6) #25733 (objectui readiness 5: tests that assume the objectui root is the pnpm workspace root — install probes, CLI generator context, Console vendor-chunk standalone baseline; done, objectui#13498 MERGED 2026-10-25 04:17Z), 3 = tooling(ui-wiring): objectstack-side inert wiring for theui/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 (PR A = tooling(ui-wiring): inert workspace, turbo and CI wiring for the ui/ tree (objectstack#25697 PR A) #25710 MERGED 2026-10-25 00:58Z as 769ac80; PR A2 = tooling(ui-wiring): four objectstack gates read the merged tree right once ui/ exists, inert today (#25697 PR A2) #25738 MERGED 2026-10-25 04:27Z as c61f75d; PR B lands in the cutover window), 4a = release(ui-merge): one release lane for both scopes — 39 @object-ui packages join the @objectstack fixed group,packages/consolebuilds fromui/apps/console, both repos' pin scripts and sha files are deleted (parent #25677, 4a/6) #25711 (release lane; PR 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 draft, content ACCEPTed 2026-10-25 04:40Z, HELD: Tier H — .github/workflows/** ×4 — and 12,835 changed lines, red on main by design until ui/ exists; review requested and landed only in the cutover window after a GOVERNED_APPROVERS APPROVED), 4b = 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 (governance in-repo; PR 1 = tooling(pm): dispatch-gates git maxBuffer for the merged tree; register matchers proven on the nested ui/ rows (4b PR 1, inert) #25732 MERGED 2026-10-25 02:44Z as 40b40bd; PR 2 in the cutover window), 5a = tooling(cutover prep 5a): the ui/ import carries objectui's lockfile resolutions into the merged pnpm-lock.yaml and scopes the git-root overrides that would rewrite a dependency line objectui owns (parent #25677, 5a/6) #25726 (done, ACCEPTed 2026-10-25 03:17Z:scripts/ui-import/splice-lockfile.mjson the verify branch, 219→3 moved lockfile rows; verify run 5 cleared the dependency-resolution class), 5 = 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 (the cutover procedure itself, seat-run with maintainer steps marked; filed 2026-10-25 05:35Z, carries the cutover bill items 1–18 and decisions A–D), 6 = 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 (aftercare: first joint 18.x release, docs site, cleanup, close 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 and this parent; Blocked-by 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). Verification: DO NOT MERGE draft DO NOT MERGE — verification run for #25697: PR A + the ui/ subtree import of objectui main cd70b7818d #25718 measures the merged tree on top of PR A (runs read on DO NOT MERGE — verification run for #25697: PR A + the ui/ subtree import of objectui main cd70b7818d #25718 and tooling(ui-wiring): objectstack-side inert wiring for theui/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); run 6 (head 7180ec6, objectui bba96ce + main c61f75d) confirmed A2 (consumer gates + workspace green, no ui items in Test Core) and left three cutover classes — vite/postcss duplicate types (run 7, head fb8f570, pushed 05:27Z withpnpm dedupe, measures the fix), the envelope caller census seeingui/packages/data-objectstack(bill 17), the skills catalog boundary seeing fourui/SKILL.md (bill 18) — plus one main-side regression not of this epic (check-livenesstranslation/flows.screens, red on main since refactor(service-automation): move AutomationEngine.resumeInternal's body into run-resume.ts (#25222 slice 8b) #25734, reported to its lane). 4a incident 05:06Z: a GOVERNED_APPROVER approved, flipped ready and armed auto-merge on the held 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; the card thread reverted within a minute (draft, auto-merge off, approval kept) and the seat reaffirmed the hold on the PR. Item 4 was split in two at filing because its release half and its governance half have different reviewers, different landing windows (4b PR 1 is inert and lands early) and together would cross the 3000-line human-merge line.
维护者裁定(Tesla,Claude 项目线程「Decide objectui–objectstack pinning」,2026-10-24,逐字):
- 01:32Z「objectui 的"独立开源产品"是否必须是独立的 GitHub 仓?这个如果影响我们的开发效率的话,是否可以吧 objectui 仓库改为 一个迁移说明?」→ 独立 GitHub 仓非必须;旧仓改迁移说明(归档)。
- 01:33Z「同一个版本号组」→ 合并后 @object-ui 与 @objectstack 进同一个 changesets fixed 组。
- 01:34Z「18.1 已经在准备发版本了」→ 不做 pin 自动滚动;18.1.0 发出后直接做合并准备。
- 09:19Z「objectstack 已发布 18.1」→ 本父单的触发。
- 01:38Z「所以你最终的方案是 objecui 合并到 objectstack 仓库吗」— 答:是。
- 15:08Z「B」(问:objectui 在途任务要不要等完再合并;B = 不等,准备期照常开发,切换日冻结 1–2 天,没合的分支机械移植)。在途盘点:objectui 开放 PR 8 个(1 个开发 PR,已合)、开放卡 38 张(3 张在做、9 张待派、11 张当日新立 finding、7 张座位贴)、claude/* 分支 382 个中只有 1 个带 PR。
分析文档(读数、三方案评估、迁移路径):https://claude.ai/artifact/74cjpi59CNhdZ86BemGAx2
维护者速读
- 事由: 两仓互相按提交钉(
.objectui-sha60 天搬了 47 次、本周 13 次;objectui.objectstack-sha10-19 起),每个跨仓功能 3 个串行 PR(例 feat(analytics): carry a dataset dimension's nullLabel on its column descriptor, and name System Overview's null user bucket "System" #25402 → objectui#13354 → fix(spec): a dataset dimension's nullLabel is live; move the objectui pin past its reader #25437),两仓合计约 1.8 万行耦合脚本,每小时 13 分钟 Spec Shape Gate,liveness 账本 184 条带日期的跨仓证据。根因是 UI 契约(packages/spec/src/ui)归本仓、每天改约 27 次,而读它的渲染器在另一个仓。 - 要做: objectui 整仓并入本仓
ui/(git subtree add,保留历史);一个 lockfile、一个 turbo 图、一个 Version PR;删除 build-console / bump-objectui / objectstack-pin 等脚本;liveness 证据改仓内路径;@object-ui 39 个包名与 npm scope 不变,进同一 fixed 组;objectui 仓 README 改迁移说明、issue 转移、归档。 - 不做: pin 自动滚动(已裁不做);只读镜像仓(日后有外部关注再加);cloud 仓不改(它从此只钉一个提交,是第三个受益方)。
- 完成标准: 见「Done when」。
谁付代价(业务筛)
车队:每月约 40 个搬 pin 的 PR、每个跨仓功能 3 个串行 PR 的墙钟等待、每天 24 × 13 分钟的门禁、184 条证据的日期续期。用户:Console 与 spec 的同版本一致今天只靠 build-console.sh 注入保证(11.5.0 曾因此打进旧 client),合并后由结构保证。下游:cloud 同时钉两个仓并合并两个 main 构建,#25556 记录了它因此少取 7 个提交。
子单(按序,逐张立;一席每 fire 至多三张)
- 1. (tooling(monorepo): 在试验分支上把 objectui 并入
ui/workspace(subtree add、单 lockfile、turbo 构建图),交冲突清单、必改脚本清单与各类 PR 的 CI 时长读数 — 不落 main(父单 1/6) #25678, report posted 2026-10-24) 试并分支:ui/workspace 布局、单 lockfile、turbo 构建图;交冲突清单与 CI 时长读数,不落 main。 - 2. (tooling(objectui-readiness): make the objectui tree merge-ready in its own repo before cutover — one react line, one zod range, uiRoot() helper, tsc heap, workspace-aware Console chunk tests, typecheck alias (parent #25677, 2/6) #25685, objectui#13472 merged 2026-10-24 23:01Z) objectui 侧合并就绪,在 objectui 自己的仓里先修(6 个小 PR,不碰受管面):react/@types 统一 19.3、zod ^4.6.5、
uiRoot()helper 替换 71 处"我是仓库根"假设、app-shell/console 的 tsc 堆内存、Console Vite 配置识别 workspace 路径、typecheck别名与 spec-floor 检查容忍workspace:^。依据:子单 1 报告 12 项发现。Blocked-by: 无。 - 2b. (tooling(objectui-readiness 2): scripts, tests and e2e specs that read pnpm-workspace.yaml, turbo.json, pnpm-lock.yaml or root overrides at the objectui root resolve the workspace root upward (parent #25677, 2b/6) #25723 closed,objectui#13484 MERGED 2026-10-25 as objectui@c85408f) objectui 侧合并就绪 2:读根文件(pnpm-workspace.yaml / turbo.json / pnpm-lock.yaml / 根 overrides)的脚本与测试向上解析 workspace 根(验证 PR DO NOT MERGE — verification run for #25697: PR A + the ui/ subtree import of objectui main cd70b7818d #25718 第一轮实测 Type Check UI / Build & E2E UI / Test UI 15/16 红的原因);5 个 e2e spec 的 REPO_ROOT 走查改 uiRoot()。Blocked-by: 2。
- 2c. (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;第 1 轮 objectui#13496 已合 2026-10-25 03:58Z,pin 升到 43edf90;卡留到切换冻结前最后一轮) objectui 侧合并就绪 3:objectui 追上 objectstack main(
.objectstack-sha从 e649c2d 升到 main HEAD、修 spec 变化带来的报错,验证分支第二轮实测 TranslationPreview TS1360 缺positions/permissions);切换冻结前再做最后一轮。Blocked-by: 2b 的 PR 合入(共用分支)。 - 2d. (tooling(objectui-readiness 4): objectui scripts address git paths relative to the repo root —
git show ref:packages/…,diff --name-only,ls-files,ls-treebreak one level down in ui/; prefix via nestedPrefix() (parent #25677, 2d/6) #25728 closed,objectui#13491 MERGED 2026-10-25 03:43Z = objectui@6c3340c5) objectui 侧合并就绪 4:给 git 传路径的脚本(git show ref:packages/…、ls-tree、对diff --name-only/ls-files输出做匹配)在ui/下少了前缀,验证分支第四轮实测 Type Check UI 红在check:i18n-drift;31 个脚本待分类,用 2b 的nestedPrefix()(或 git 自身的ref:./path/--relative)统一补前缀,并加防回潮门。Blocked-by: 2b 的 PR 合入(同文件、同分支)。 - 2e. (tooling(objectui-readiness 5): three objectui tests assume the objectui root is the pnpm workspace root —
.pnpminstall probes, the CLI generator IN-WORKSPACE map, the Console vendor-chunk standalone baseline (parent #25677, 2e/6) #25733 closed,objectui#13498 MERGED 2026-10-25 04:17Z) objectui 侧合并就绪 5:三处测试默认 objectui 根就是 pnpm 工作区根——check-doc-snippet-types的安装探针找node_modules/.pnpm、CLI 生成器currentContext()用「存在 pnpm-workspace.yaml」判工作区根(IN-WORKSPACE 映射写错)、Console vendor 分块测试把独立布局当基线(验证分支第五轮实测,依赖解析那类红消失后仅剩的未归属读取器);改为向上找工作区根并加防回潮门。Blocked-by: 2d 的 PR 合入(同 helper、同门)。 - 3. (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;PR A = tooling(ui-wiring): inert workspace, turbo and CI wiring for the ui/ tree (objectstack#25697 PR A) #25710 已合 2026-10-25 00:58Z = 769ac80;PR A2 = tooling(ui-wiring): four objectstack gates read the merged tree right once ui/ exists, inert today (#25697 PR A2) #25738 已合 2026-10-25 04:27Z = c61f75d:Test Core 分片器按路径排除ui/下成员、根 build 排除@object-ui/site、type-check 覆盖门读 JSONC tsconfig、README 导出门限定ui/外成员;maxBuffer 已随 tooling(pm): dispatch-gates git maxBuffer for the merged tree; register matchers proven on the nested ui/ rows (4b PR 1, inert) #25732 落;PR B 等 5) objectstack 侧惰性接线(PR A,切换前即可落 main,ui/不存在时全部无效果):pnpm-workspace.yaml的ui/*通配、根turbo.json吸收 ui 任务名、CI 按ui/**路径过滤的 ui 测试分片 / 类型检查 / lint / Playwright、spec 改动直接编译 Console;PR B 退役 Spec Shape Gate、Console Pin Gate、prerelease-pin-watch(切换窗口内合)。overrides 与patches/随子单 5 的 subtree 搬入。两个 PR 都是 Tier H(.github/workflows/**)。Blocked-by: PR A 无;PR B 等 5。 - 4. (拆为 4a release(ui-merge): one release lane for both scopes — 39 @object-ui packages join the @objectstack fixed group,
packages/consolebuilds fromui/apps/console, both repos' pin scripts and sha files are deleted (parent #25677, 4a/6) #25711 发布合一 + 4b 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 治理入仓;两张都已于 2026-10-25 01:52Z 以卡线程派发——4a 的 PR 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 草稿已于 04:40Z 内容验收、押到切换窗口(Tier H + 1.2 万行,main 上按设计红,待人批后与子单 5 同落),4b PR 1 = tooling(pm): dispatch-gates git maxBuffer for the merged tree; register matchers proven on the nested ui/ rows (4b PR 1, inert) #25732 已合 2026-10-25 02:44Z(惰性:pm 脚本机制 + dispatch-gates maxBuffer),治理行与 AGENTS.md 改写随 PR 2 在切换窗口落) 发布与治理合一:@object-ui 进同一 fixed 组;packages/console改为 workspace 内从ui/apps/console构建;删build-console.sh、bump-objectui.sh(含自测)、objectui-changeset-digest.mjs、objectui-range.mjs、check-prerelease-pin-watch.mjs、objectui 侧 pin 脚本与 spec-floor 检查;liveness 账本跨仓证据改仓内路径并去日期续期;sdui-parser 两份合一并删 lockstep 检查;pm 脚本与 AGENTS.md 的「objectui#」跨仓约定、domain:ui车道并入;ui/AGENTS.md嵌套(Tier H:release.yml、.changeset/config.json、AGENTS.md)。Blocked-by: 2。 - 5a. (tooling(cutover prep 5a): the ui/ import carries objectui's lockfile resolutions into the merged pnpm-lock.yaml and scopes the git-root overrides that would rewrite a dependency line objectui owns (parent #25677, 5a/6) #25726 closed,2026-10-25 03:17Z ACCEPT;拼接脚本
scripts/ui-import/splice-lockfile.mjs在验证分支上实测 219→3 行移动,第 5 轮依赖解析类红消失) 切换准备:导入时把 objectui 锁文件的解析原样并入合并锁文件(验证分支重算导致 69 个包 138 处版本变动,剩余组件测试红由此而来);根pnpm-workspace.yamloverrides 中会改写 objectui 依赖线的条目限定作用域(react-router 7 下被换成 8.5.0、happy-dom 20→21)。Blocked-by: 无;5 等它。 - 5. (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,2026-10-25 05:35Z 立卡:切换日流程表,席位逐步执行,maintainer 步骤标明;账单 1–18 与待裁 A–D 在卡上) 切换:提前 24 小时通知并落完绿的 PR;冻结两仓合并 1–2 天;subtree add 落 main;2–4 的分支合入;ruleset / required checks / secrets 由维护者改;没合的 objectui 分支由各席按本卡附带的脚本移植(git format-patch origin/main..<branch> --stdout | git am --directory=ui)成 objectstack PR;objectui 的 28 张未开工卡原样转移到本仓(同组织 issue transfer);objectui 仓 README 改迁移说明(objectui 一个 PR)、座位贴与残留分支关闭、归档(维护者点击)。Blocked-by: 3、4。切换 PR 约 259 万行变更,按 Tier H 规则由维护者人工合并。前置:objectui#13289 已合并(@object-ui 18.1.0,objectui 仓最后一次发版)。 - 6. (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,2026-10-25 05:36Z 立卡,Blocked-by 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) 善后:从合并后的仓发一次 18.x,验证 @object-ui 发布与文档站部署;清理残留;关 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 为 superseded;关本父单。Blocked-by: 5。
Done when
- 一个 PR 能同时改
packages/spec与ui/的读取器,并在同一次 CI 里编译验证。 .objectui-sha、.objectstack-sha及上面列出的脚本都不在树里;liveness 账本没有evidenceScope: cross-repo条目。- 一次 Version PR 同时包含 @objectstack 与 @object-ui,版本号相同;一次发布从本仓发出两个 scope。
- objectui 仓已归档,README 首段是迁移说明,未关闭 issue 已转移。
- 切换期间若需 18.1.x 补丁发版,切换前走旧流程、切换后走新流程,不在冻结窗口内发版。
风险
- CI:spec 改动的 PR 多跑一次 Console 类型检查(按现有 13 分钟估),靠路径过滤与 turbo 缓存打消;子单 1 给出实测值。
- 两套 vitest / eslint / tsconfig 配置:保留
ui/自己的配置树,不强行统一。 - 子单 2–5 都碰受管面,需授权批准后由席位入队;子单 5 的仓库设置只有维护者能做。
- 回滚:切换前的 objectui main 仍在;两周内判定失败可
git subtree split拆回。
Dedupe
search_issues 于 2026-10-24 09:35Z,含 closed:「merge objectui into objectstack monorepo ui workspace 合并 objectui 单仓 subtree」53 命中,「objectui-sha pin coupling monorepo merge repositories decision」5 命中。相关而不重复:#25556(open,跨仓公开类型改动同步落地的规则卡,本父单是其结构性答案,子单 6 关它)、#24306 / objectui#12955(closed,现行互钉的裁定与执行)、#23238(closed,Shape Gate 移到本仓)。没有任何卡提议合并两仓。New.
Activity
objectstack-fleet commentedon Oct 24, 2026
Triage: first grade —
tooling·priority:p1·domain:devx·area:devpath·pm:awaiting-maintainer· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-24T15:52Z⛔ Not a claim, ⛔ not a dispatch.
ui/workspace(subtree add、单 lockfile、turbo 构建图),交冲突清单、必改脚本清单与各类 PR 的 CI 时长读数 — 不落 main(父单 1/6) #25678) carries the same state. A parent is never dispatched in any case.domain:devx. The work is root workspace, turbo, release and CI tooling, and under the lane-merge rule rootscripts/that are not gates are devx's. p1: the maintainer ruled it (D1, A+), and it removes the cross-repo pin cost the card measures.Maintainer-action: the maintainer releases the merge for dispatch, or names the seat that drives it — done when a maintainer comment on this card says go (sub-cards then return to
pm:queuein order)Generated by Claude Code
objectstack-fleet commentedon Oct 24, 2026
Epic delegation — maintainer-action done · epic PM
session_01RSDL3SFtJaKzcymvCD8RsU·os-tesla· 2026-10-24T16:04Z⛔ Not a claim: a parent is never dispatched.
pm:awaiting-maintaineroff;pm:epicon — the reservation for the whole subtree (「已由 epic PM 保留;其它 PM 永不取」).domain:devx·priority:p1·area:devpath·toolingkept as triage graded them.sub_issuesop, so tooling(monorepo): 在试验分支上把 objectui 并入ui/workspace(subtree add、单 lockfile、turbo 构建图),交冲突清单、必改脚本清单与各类 PR 的 CI 时长读数 — 不落 main(父单 1/6) #25678 hangs off this parent byPart of #25677and the checklist only. The GitHub sub-issue link needs one maintainer click (Add sub-issue → existing issue) or a small relay op; not filing a tooling card for that unless the half-state patrol reports it.ui/workspace(subtree add、单 lockfile、turbo 构建图),交冲突清单、必改脚本清单与各类 PR 的 CI 时长读数 — 不落 main(父单 1/6) #25678. Sub-issue 2 is filed next, under this parent.Generated by Claude Code
tooling(objectui-readiness 2): readers of pnpm-workspace.yaml, turbo.…
chore(deps): move .objectstack-sha to objectstack main 43edf90 (objec…
chore(deps): objectui-readiness 3 round 2 — pin objectstack 5874d25, …
chore(skills): mark the two repo-internal .claude skills metadata.int…
ci(dependabot-auto-merge): turn the job off until the objectstack cut…
chore(pin): bump .objectstack-sha to objectstack main 5e7cf63 at the …
objectstack-fleet commentedon Oct 25, 2026
Epic status, 2026-10-25 19:50Z (epic PM, child 5 cutover procedure #25752) — sitting 2026-10-26 09:00Z.
Children
ui/workspace(subtree add、单 lockfile、turbo 构建图),交冲突清单、必改脚本清单与各类 PR 的 CI 时长读数 — 不落 main(父单 1/6) #25678, 2 tooling(objectui-readiness): make the objectui tree merge-ready in its own repo before cutover — one react line, one zod range, uiRoot() helper, tsc heap, workspace-aware Console chunk tests, typecheck alias (parent #25677, 2/6) #25685, 2b tooling(objectui-readiness 2): scripts, tests and e2e specs that read pnpm-workspace.yaml, turbo.json, pnpm-lock.yaml or root overrides at the objectui root resolve the workspace root upward (parent #25677, 2b/6) #25723, 2d tooling(objectui-readiness 4): objectui scripts address git paths relative to the repo root —git show ref:packages/…,diff --name-only,ls-files,ls-treebreak one level down in ui/; prefix via nestedPrefix() (parent #25677, 2d/6) #25728, 2e tooling(objectui-readiness 5): three objectui tests assume the objectui root is the pnpm workspace root —.pnpminstall probes, the CLI generator IN-WORKSPACE map, the Console vendor-chunk standalone baseline (parent #25677, 2e/6) #25733, 5a tooling(cutover prep 5a): the ui/ import carries objectui's lockfile resolutions into the merged pnpm-lock.yaml and scopes the git-root overrides that would rewrite a dependency line objectui owns (parent #25677, 5a/6) #25726: done. 2c 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: done (final pin bump objectui#13545 merged; objectuimainfrozen at9e1fe03286). Prep cards E cutover-prep(ui-merge): the 9@object-ui/typesduration keys carry their unit in the key name, with ADR-0087 conversions, before the freeze (parent #25677, decision E) #25762, F cutover-prep(ui-merge): warm the function-bodyimport()of@objectstack/*/@object-ui/*in the ui test filescheck:test-source-aliasnames, so the merged tree's Test UI stops clocking out (parent #25677, decision F) #25763, G cutover-prep(ui-merge):check:test-source-aliasreads type-position and string-contentimport('x')as clocked loads — 7 false positives underui/on the merged layout (parent #25677, decision F residual) #25766, I cutover-prep(ui-merge):check:livenessis red onmain— ledger rows citeservice-automation/src/engine.tsbodies that #25734 / #25725 moved into seam modules; Test Core 1/8 fails on every PR built on main (parent #25677) #25790, J cutover(ui-merge): build the cutover PR adaptation commit as a measured patch series against the verify tree — lock splice,ui/manifests, gate ledgers, skills move, decisions C/F/G1, bill items 1–32 (parent #25677, #25752 step 4) #25803: closed. H objectui#13527: merged.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: PR A tooling(ui-wiring): inert workspace, turbo and CI wiring for the ui/ tree (objectstack#25697 PR A) #25710 + A2 tooling(ui-wiring): four objectstack gates read the merged tree right once ui/ exists, inert today (#25697 PR A2) #25738 merged; PR B ci(ui-merge): retire the two-repo pin gates — Spec Shape Gate, Console Pin Gate, prerelease-pin-watch #25827 (retire the pin gates) draft, lands at the sitting after 4a.packages/consolebuilds fromui/apps/console, both repos' pin scripts and sha files are deleted (parent #25677, 4a/6) #25711: PR 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 draft, head50bd417d30, approved by one GOVERNED_APPROVER, lands at the sitting after the cutover PR (changesets stay underui/, see aftercare(ui-merge): move the 65 travelled ui/.changeset files into the root .changeset so the first post-cutover Version PR bumps @object-ui/* (parent #25677, before #25753) #25831).objectui#,ui/AGENTS.mdnests, 18 governance workflows merged or retired (parent #25677, 4b/6) #25712: PR 1 tooling(pm): dispatch-gates git maxBuffer for the merged tree; register matchers proven on the nested ui/ rows (4b PR 1, inert) #25732 merged. PR 2 was not dispatched before tonight; its sitting-critical slice is dispatched now as PR 2a (the two sdui gates inlint-repo-toolingread.objectui-sha, which 4a deletes; measured exit 1 without it) and PR 2b (sixui/**governed rows). The rest of PR 2 follows the cutover.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: cutover PR merge(ui): objectui becomes the ui/ workspace of this repository — subtree import at the frozen tip 9e1fe03286 plus the adaptation series (objectstack#25752) #25825 draft, headc326d2fdf1, run 5: every required lane green; Test UI 6/9/11 carry the 12 tests 4a clears. Bill items 1–48. Flips ready at ~08:30Z.Sitting order: #25825 → 4b PR 2a → 4a #25745 (merges
main, applies its ui-side patch) → PR B #25827 → 4b PR 2b → required checks addType Check UI,Lint UI,Build & E2E UI(notTest UIuntil the nestedui/.github/deletion lands).New aftercare cards: #25831 (ui changesets → root; 41 ADR-0087 dispositions), #25832 (skills move, decision C).
维护者速读:五张 PR 明早按上面顺序合;新增发现:4a 删 pin 后两个 sdui 门禁会红必需车道,今晚补派 4b PR 2a 先合即可避免;required checks 暂不加 Test UI。