Skip to content

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

Closed

Description

@objectstack-fleet

Filing gate ④: sub-issue 4b/6 of the epic #25677 (pm:epic; epic PM session_01RSDL3SFtJaKzcymvCD8RsU). Part of #25677. ⛔ Not a claim. Item 4 of the parent is split in two at filing: 4a = #25711, release and publish (fixed group, Console build, pin scripts); 4b (this card) = everything that today encodes "objectui is another repository" in this repo's governance.

Blocked-by: #25685 (merging now) for anything that runs against the ui/ tree; the inert parts (pm scripts learning ui/**, the governed-surface register) can land before cutover like PR A of #25697. Input: the roster table on #25697 (comment 6388182608).

Who does it, where it lands: the epic PM dispatches it (os-dev, objectstack checkout). Two PRs to objectstack-ai/objectstack main: PR 1 inert (pm scripts, governed-surface register for ui/**, dispatch-gates — lands before cutover; Tier S/H as the paths decide); PR 2 cutover-window (liveness evidence, spec tests, sdui-parser merge, AGENTS.md + ui/AGENTS.md, workflow deletions under ui/.github/; Tier H: AGENTS.md, .github/workflows/**).

维护者速读

两仓并成一仓后,本仓里所有"objectui 在另一个仓"的记法都要改:liveness 账本里 185 条 evidenceScope: cross-repo 证据有一部分是「objectui @某提交 的某文件某行」(另一部分指 cloud 仓,不动),合并后直接写仓内路径 ui/...,不再钉提交、不再续日期;161 个 spec 测试文件提到 objectui,其中真的去读 objectui 克隆/钉的改读 ui/,只是文字提到的不动;sdui-parser 两边各一份加一个 lockstep 检查,合并后留一份、删检查;AGENTS.md 里 41 处 objectui# 跨仓约定、pm 脚本里按仓分表的 objectui 行、domain:ui 车道,都并入本仓;objectui 自己的 AGENTS.md 变成 ui/AGENTS.md(嵌套,只管 ui/ 下);objectui 28 个 workflow 里 18 个治理类的,按 #25697 的去向表逐个并入本仓同类 workflow 或删除(嵌套的 ui/.github/ GitHub 本来就不会执行)。AGENTS.md 和 workflow 是受管面,按 Tier H 由你批准。

Scope

  1. Liveness ledger. packages/spec/liveness/*.json: of the 185 "evidenceScope": "cross-repo" entries, those whose evidence names objectui (objectui @<sha>: path#symbol) are rewritten to in-repo evidence (ui/<path>#<symbol>, scope per the README's in-repo value); entries naming cloud @<sha> stay cross-repo. The reader (scripts/liveness-*.mjs, README §evidenceScope) stops treating ui/ as a foreign realm and resolves the paths like any in-repo path (exist-or-fail). The dev reports the split (objectui rows / cloud rows / mixed) before rewriting.
  2. Spec tests that read objectui. Of the 161 packages/spec/**/*.test.ts files mentioning objectui, classify: (a) read the objectui tree through a clone, the pin or objectui-lockstep.json → read ui/ directly; (b) textual mention in a comment or fixture name → unchanged. packages/sdui-parser/objectui-lockstep.json and scripts/check-sdui-lockstep.mjs / check-sdui-manifest.mjs / gen-sdui-manifest-node.mjs / sdui-manifest.record.json go with item 3.
  3. One sdui-parser. packages/sdui-parser (@objectstack/sdui-parser) and ui/packages/sdui-parser are two copies kept in lockstep by a gate. Keep one (the dev proposes which, with the import graph on both sides; the published @objectstack/sdui-parser name is the default to keep), make the other a re-export or delete it, delete the lockstep gate and manifest record. Assessment item P5.
  4. AGENTS.md, ui/AGENTS.md, pm scripts. AGENTS.md: the 41 objectui# mentions and every "sibling repo" instruction (the ../objectui checkout, the pin bump procedure, cross-repo card references) become in-repo instructions or are deleted; domain:ui joins this repo's lane table. objectui's AGENTS.md becomes ui/AGENTS.md, scoped to ui/ and pointing up for anything repo-wide (rules that duplicate the root file are deleted, not restated). scripts/pm/**: GOVERNED_REPOS / check-governed-merges.mjs register learns which ui/** paths are governed (ui/.claude/**, ui/skills/**, ui/AGENTS.md by the same two-tier rule); the fleet relay's per-repo rows for objectui stay until the repo is archived (sub-issue 5) and are removed in sub-issue 6; dispatch-gates.mjs derives ui/ gates.
  5. The 18 governance workflows (roster rows 1–6, 8–15, 20, 24, 25, 28 on 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): for each, one of — fold into the objectstack counterpart (board-snapshot, changelog, changeset-guard, changeset-presence, check-links, cross-repo-issue-closer, dependabot-auto-merge, governed-surface-guard, half-state-patrol, hook-selftests, labeler, merge-queue-head-patrol, required-check-set-patrol, test-shard-timings-refresh) widening it to ui/**; or port as a new objectstack workflow (line-citation-gate, repo-gates' doc/skill gates if they have no counterpart); or delete (anything the merge makes meaningless). ui/.github/ is deleted at the end of PR 2 — nested workflow files never run. ui/.claude/hooks (8 hooks) and ui/.githooks: merge into the root hooks or delete, with the hook self-tests covering what remains. docs-deploy.yml for objectui's site: keep as a second deploy job in this repo's docs-deploy.yml (the site stays a separate Vercel project) — the project id/secrets are the maintainer's.

Verification (the dev's)

Done when

  • PR 1 merged before cutover; PR 2 green on the verification branch, approved by GOVERNED_APPROVERS, handed to sub-issue 5 and merged in the cutover window after the subtree PR.
  • git grep -c 'objectui @' packages/spec/liveness is 0; git grep -l 'objectui#' AGENTS.md is empty; one sdui-parser package; ui/.github/ absent.

Size: XL — the PM may split PR 2 by item if the diff crosses 3000 lines (the human-merge line applies either way). Clause-②: no. Metadata-protocol: none.

风险

Dedupe

Open issues list 2026-10-24 23:05Z (REST, state=open 100 most recent) filtered on liveness / sdui / AGENTS / governance / objectui: only this epic's own cards and #25556 (superseded at sub-issue 6). Assessment item P5 (sdui-parser lockstep) is carried here rather than filed on its own. New.

Activity

  1. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: epic #25677 round 5 (card threads; Tesla 2026-10-25 「你应该使用 pm-dispatch 技能派发」「并发可以到6」)
    Session: session_01RSDL3SFtJaKzcymvCD8RsU
    Account: os-tesla
    Branch: claude/project-thread-15baee (the card thread's designated branch in objectstack-ai/objectstack — the thread can push only this branch, a measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-25712
    Domain: domain:devx
    Seat: epic:#25677
    File surface: scripts/pm/** (governed-surface register, check-governed-merges.mjs, queue guard, dispatch-gates.mjs runGit maxBuffer) + their self-tests; nothing under packages/, AGENTS.md, .github/** in PR 1
    Container & model: M (PR 1 of 2; the card is XL), mode:thread (thread session session_01JjL3Jp6KnsA4vDma1b4KDa; order: /mnt/project-files/d1-merge/dispatch/ in the project, FRAME.md + the card's file), model: opus, effort: high (coordinator default)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Serial constraints cleared: #25711 (4a, branch claude/project-thread-a0vh3h) touches release files, not scripts/pm/**; the dispatch-gates maxBuffer item moves from the PR A2 bill of #25697 to this PR (recorded there when PR 1 is up); PR A2 keeps the partitioner + root build filter


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 25712,
      "status": "done",
      "branch": "claude/project-thread-15baee",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/25732",
      "session": "session_01JjL3Jp6KnsA4vDma1b4KDa",
      "premise_still_valid": true,
      "summary": "PR 1 of 2, inert, head faaeaeb47d. dispatch-gates spawns git with a 64 MiB maxBuffer (runGit + check-ignore); a slow self-test stages a 16,000-path index, proves ENOBUFS at the default buffer (control) and that trackedFiles reads it whole. The register matchers (governedSurfacesFor/governedPathsIn/governedTierFor) and the queue guard's CODEOWNERS mirror take an optional register (default GOVERNED_SURFACES); self-tests drive the six nested ui/ rows through them in both directions. Per the epic PM's decision B, the six rows themselves, the AGENTS.md/SKILL.md spans and the CODEOWNERS lines are deferred to PR 2 (recorded in the PR body). The card stays open: the PR says Part of #25712.",
      "tests": "check-governed-merges --self-test exit 0, 527 assertions (512 before; new battery 15). check-governed-queue-guard --self-test exit 0, 339 cases (335 before). check-governed-prose --self-test + gate exit 0, 31 cases. dispatch-gates --self-test both tiers exit 0, 2178 cases (fast 1913 / slow 265), the 5 new maxBuffer cases included. No ablation: tooling/script change, the control leg is the ENOBUFS case.",
      "gates": "39 derived (dispatch-gates --commands --repo objectstack-ai/objectstack at faaeaeb), all 39 exit 0, exit captured before any pipe; --ran: 39 derived, 39 run, 0 NOT-MEASURED, exit 0. check-governed-merges --branch HEAD: exit 0, not governed, +136/-11 over 5 files. CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "6 — read-only: issue_read x4 (card, card comments x2, #25697 comments), pull_request_read x1 (read-back), plus 0 write tools",
      "api_writes": "2 relay writes — fleet-write pr_create (PR #25732, labels skip-changeset, assignee os-tesla) and this post-stamped comment; plus 1 git push",
      "open_questions": [
        {
          "question": "ui/.claude/** lands Tier H in PR 2 (fail-closed; Tier H in objectui today). Should it move to Tier S like the root .claude/**?",
          "options": [
            "A keep Tier H",
            "B Tier S by maintainer ruling (one field)"
          ],
          "recommendation": "A, because Tier S would loosen that content's landing without a ruling"
        }
      ],
      "out_of_scope_findings": [
        "carrier: #25712 PR 2 · the six ui/ register rows, AGENTS.md and SKILL.md spans, CODEOWNERS lines (deferred by the epic PM, recorded in PR #25732)",
        "carrier: none · noted, not filed: check-governed-prose header still says Containment covers all six entries while the register has seven"
      ]
    }

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT (PR 1 of 2) — dispatch seat. objectstack#25732 (head faaeaeb47d, branch claude/project-thread-15baee, +136/−11, 5 files, all under scripts/pm/**) is accepted as the inert half of this card. The card stays open for PR 2.

    Checked against the order (/mnt/project-files/d1-merge/dispatch/4b-25712-objectstack-governance-pr1.md) and the PM ruling B (register code able to carry nested rows + self-tests + dispatch-gates maxBuffer; the six ui/** Tier-H rows, prose spans and CODEOWNERS lines deferred to PR 2):

    • dispatch-gates.mjs: git children get a 64 MiB stdout ceiling in runGit and ignoreVerdicts; measured merged listing ≈ 1.36 MB vs spawnSync's 1 MiB default, which is the Lint · PM dispatch-gates ENOBUFS red on the verification run. Slow-tier self-test stages a 16,000-path index with an ENOBUFS control. This also retires the dispatch-gates item of the PR A2 bill on 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.
    • Register matchers (governedSurfacesFor, governedPathsIn, governedTierFor, queue guard codeownersMirrorVerdict) take an optional register defaulting to GOVERNED_SURFACES; no production caller passes one. New battery of 15 cases drives the six nested ui/ rows through the real matchers (527 assertions, roster floor 35; queue guard 339 cases; prose gate 31 cases).
    • PR 2 bill as the thread recorded it (/mnt/project-files/d1-merge/out/4b-25712-pr2-bill.md): six Tier-H rows ui-adr, ui-claude-tree, ui-skills-catalog, ui-agents-md, ui-claude-md, ui-workflows (repos: ['objectstack']; ui/.claude/** stays Tier H), the AGENTS.md §14 / SKILL.md spans (ratchet ceilings 1117/1117 and 319/319 are freed by PR 2's AGENTS.md rewrite, no ceiling raise), six CODEOWNERS lines, and the pin flip today-the-register-does-not-know-ui-…. Cutover window order: subtree PR → PR B → this card's PR 2 → 4a.
    • CI on the PR head: all checks green (Lint & Repo Gates, TypeScript Type Check, Test Core 6/6; UI jobs correctly skipped, no ui/ tree). check-governed-merges --pr objectstack-ai/objectstack#25732 on the final file list: NOT governed (0 of 5 paths hit the register), 147 changed lines ≤ 3000 — ordinary queue landing.
    • Writes: relay only; no review requested by the thread. CODEOWNERS routes the two enforcement-chain files to the approvers, so leaving draft asks a code owner for review; that is the repository's own rule, not a Tier H ruling.

    Landing: the seat flips #25732 ready and arms auto-merge via the relay now. PR 2 is dispatched as its own card thread against this card once the subtree PR window opens.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: epic #25677 round 6 (card threads; Tesla 2026-10-25 「你应该使用 pm-dispatch 技能派发」「并发可以到6」)
    Session: session_01RSDL3SFtJaKzcymvCD8RsU
    Account: os-tesla
    Branch: claude/project-thread-6qe56u (the card thread's designated branch in objectstack-ai/objectstack — the thread can push only this branch, a measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-25712
    Domain: domain:devx
    Seat: epic:#25677
    Scope: PR 2a of 2 — scripts/check-sdui-lockstep.mjs, scripts/check-sdui-manifest.mjs, scripts/gen-sdui-manifest-node.mjs learn the in-tree ui/ oracle when .objectui-sha is absent (pin mode unchanged), sdui.manifest.json regenerated; green on main as it is. PR 2b (six ui/** governed rows, CODEOWNERS, AGENTS.md / SKILL.md spans, PR 1 pin flip) is prepared as a patch in the project folder and opened after 2a merges. Nothing else of PR 2 tonight.
    Why now: after 4a #25745 deletes .objectui-sha, both gates exit 1 in lint-repo-tooling (required lane Lint & Repo Gates); measured on the cutover head c326d2fdf1 with the file absent.
    Container & model: M (PR 2a + 2b of the XL card), mode:thread (thread session session_01A6SEitNngAMugGbuJHWsDS; order: /mnt/project-files/d1-merge/dispatch/4b-25712-objectstack-governance-pr2a.md in the project, FRAME.md applies), model: opus, effort: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Serial constraints cleared: #25745 (4a, claude/project-thread-a0vh3h) deletes the pin and touches none of the three scripts; #25825 (cutover) touches none of them; #25827 (PR B) touches none of them

  5. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT (PR 2a of the PR 2 series) — dispatch seat. objectstack#25833 (head a6ee32ec59, branch claude/project-thread-6qe56u, 3 files under scripts/, +993/−136) merged 2026-10-25 20:58Z as e2aaaf1c07. The card stays open.

    Checked against the order (/mnt/project-files/d1-merge/dispatch/4b-25712-objectstack-governance-pr2a.md):

    • Dual mode: with .objectui-sha present the lockstep and manifest gates and the generator behave as before (golden harnesses byte-identical; existing self-test rows unchanged); without it they judge the in-tree ui/ copy. Measured on the sitting tree (cutover c326d2fdf1 + 4a 50bd417d30): lockstep 0 (no drift between packages/sdui-parser/src and ui/packages/sdui-parser/src); manifest 1 until the regeneration, 0 after it.
    • Ruling recorded: the committed sdui.manifest.json (107 components) describes pin b41ed7f689; the frozen registry has 106 (objectui#13449 retired html). One artefact cannot serve both, so PR 2a carries code only and the regeneration rides with the pin deletion in 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 as a ready patch (/mnt/project-files/d1-merge/out/4a-sdui-manifest-regen.patch, applied by the 4a thread during its sitting re-merge). Until then 4a's Lint & Repo Gates reds with record is missing inTree and prints the one remedy command.
    • Known cost filed in the PR body: after 4a, a UI PR touching a registry source must run node scripts/gen-sdui-manifest-node.mjs (96 of objectui's last 200 commits would have). Follow-up: regenerate-and-compare in Build & E2E UI (ci.yml), next 4b dispatch.
    • Gates: 35 derived, 35 exit 0, --ran reconciled; CI 34 success / 17 skipped; no governed path, no CODEOWNERS path → Tier S, landed via the relay (ready + auto-merge), queue merge.

    PR 2b (six ui/** governed rows, CODEOWNERS, AGENTS.md §14 and pm-dispatch SKILL.md spans, PR 1 pin flip; 5 files +73/−60; both ceilings paid in place) is measured (54 derived gates exit 0; Tier H verdicts on the sitting tree) and is being opened as a draft PR for the 09:00Z sitting; Tier H (AGENTS.md), maintainers approve after 4a. The rest of PR 2 (ui/.github/ deletion with the 18 workflow dispositions, liveness ledger, spec tests, parser unification, AGENTS.md cross-repo rewrite, ui/AGENTS.md, the ci.yml regenerate-and-compare step) is the next dispatch after the cutover.

    Thread report: /mnt/project-files/d1-merge/out/4b-25712-pr2-final-report.md. Relay writes by the thread: 1 (+1 for 2b); MCP write calls: 0.

  6. 18 remaining items

  7. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim amendment (PM, epic #25677) 2026-10-26T17:28Z: the 2h seat (session_01P33kUswHotSHBLPc6UVn6n, branch claude/project-thread-5a915t, Claim 6418578280) is free now that #26216 has merged. It takes the parked ui-filter / cross-package PR for this card. The patch was built by the 4b seat and parked in project files as d1-merge/out/4b-25712-uifilter.patch.

    Scope:

    It is Tier H (.github/workflows/**): draft, then the PM flips it ready after derived gates and the push battery (2182/0) are reported. It changes no lane that 2g or 2i (#26137) edit. Whichever PR lands second rebases.

  8. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 25712,
      "status": "done",
      "branch": "claude/project-thread-5a915t",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26278",
      "session": "session_01P33kUswHotSHBLPc6UVn6n",
      "premise_still_valid": true,
      "summary": "Landed the parked 4b ui-filter patch (Claim amendment): the root ci.yml ui filter gains .github/workflows/** in place of ci.yml (F21), .github/prompts/** (F16) and skills/objectui/**, and Lint UI runs pnpm --filter @objectstack/spec check:liveness (F26 = B). git am applied cleanly onto main 3d50a43b; only the commit trailers changed (card relation dropped, this session's model-free pair).",
      "tests": "pnpm --dir ui exec vitest run on check-pre-install-import-graph, check-prompt-component-keys, check-skills-paths: 3 files, 120/120. pnpm --filter @objectstack/spec check:liveness: exit 0. Push battery GITHUB_ACTIONS=true GITHUB_EVENT_NAME=push node scripts/pm/check-dispatch-gates.mjs: 2182 pass, 0 fail (fast 1917 / slow 265).",
      "gates": "dispatch-gates --commands: 63 derived, 63 exit 0. --ran: 63 run, 0 NOT-MEASURED, 0 UNRUN. PR check-runs: pending at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "reads only; zero MCP write tools",
      "api_writes": "relay only: git push (branch recreated), fleet-write pr_create #26278 (draft; assignee os-tesla, label skip-changeset; governed-review follow-up requested the approvers at create), this comment",
      "open_questions": [],
      "out_of_scope_findings": ["#26137 (2i PR A) also edits the ci.yml ui filter; whichever lands second rebases · carrier: PM · noted, not filed"]
    }

    Generated by Claude Code

  9. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    决策卡:#26343(2g 第 3 步:删掉前端解析器副本)要改两条待发的 changeset,需维护者确认

    2026-10-26T22:09Z · PM 立卡(维护者 2026-10-26 03:31Z 规则)。#26343 已挂 needs-user-decision,本卡不另挂 label。os-zhuang 批准 #26343 即视为选 A,不需要另外回字母。

    一句话问题: 前端那份解析器包删掉后,两条已经写好、还没发版的 changeset 仍然点名 @object-ui/sdui-parser;不把这一行去掉,18.2 的 changeset version 会因为找不到这个包而直接失败。改已提交的 changeset 属于「故意更正」,门禁要求维护者确认。

    Governing text: check-empty-changeset 对已提交 changeset 被改动的判词(DELIBERATE CORRECTION 类,需维护者确认);2g 裁决 E(comment 6418729849):「drops @object-ui/sdui-parser from the changesets fixed group」。

    协议声明: 不改协议。

    前提(带 re-check):

    • 受影响的两条:.changeset/25831-object-ui-18-1-to-merge.md(chore(changeset): release Object UI's 18.1.0-to-merge changes to the 38 @object-ui packages as one consolidated changeset #26068 合入)与 .changeset/26276-ui-package-test-vitest.md,各删 '@object-ui/sdui-parser' 一行,正文不动。re-check:gh api repos/objectstack-ai/objectstack/pulls/26343/files。
    • 席位实测:137 个派生门禁中 136 个 exit 0,唯一红的就是 check-empty-changeset(就是这处更正);push 电池 2164/0;ui 定向测试 83 文件 1663 通过。
    • 这个包按裁决 E 不再发布,所以这一行在 18.2 的发版说明里本来就没有对象。

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

    选项 做什么 后果 工作量
    A(推荐) 确认更正:两条 changeset 各删一行,随 #26343 合入 18.2 的 changeset version 正常;发版说明里不再出现一个不发布的包 0(已在 PR 里)
    B 不改旧 changeset,改为把这一行指向 @objectstack/sdui-parser 把前端包的说明挂到后端包名下,后端包的发版说明多出一段与它无关的前端文字 小,但说明内容错位

    业务含义直译: A = 店都搬走了,把旧店名从待发的公告里划掉;B = 把旧店的公告改贴到新店门口。

    os-decision-facets

    推荐:A。 只看①选 A;②③④ 是否翻转:否。置信缺口:无。不取 B:说明内容会错位。

    裁后执行: A ⇒ os-zhuang 批准 #26343 后,PM 开 automerge(或由批准人入队),合并后 PM 移除 #26343 上的 needs-user-decision。B ⇒ 席位在 #26343 改为替换包名,重跑门禁与电池后再请批。


    维护者速读

    要做的: 批准 #26343(删掉前端解析器副本,Tier H)。批准它就等于同意从两条待发的 changeset 里去掉已不存在的 @object-ui/sdui-parser 一行,否则 18.2 生成不了版本 PR。

    你要做的: 批准 #26343(即选 A),或在本卡回 B。

  10. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: decision card 6428513060 · letter A · recorded 2026-10-26T22:49Z

    os-zhuang approved #26343 (review 5660142243) at 2026-10-26T22:49Z. As the card states, that approval confirms the deliberate correction: .changeset/25831-object-ui-18-1-to-merge.md and .changeset/26276-ui-package-test-vitest.md each lose their '@object-ui/sdui-parser' line, and the bodies are unchanged. needs-user-decision comes off #26343.

    #26343's only red is Check Changeset on exactly this correction. That check is outside the required set, so the queue is not blocked. After #26343 merges, 2g's code is complete on main. What remains for 18.2 is 2i PR A (#26315) and PR B (records retirement). The npm deprecate of @object-ui/sdui-parser stays a maintainer step after 18.2 publishes.

  11. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Addendum to decision card 6428513060 (ruling A, 6429188774), 2026-10-27T00:55Z: #26343 needs one more pending-changeset correction, and the maintainer must confirm it. Until then needs-user-decision is back on #26343.

    Why: #26274 (merged 23:51Z) retired the node-level visibleOn / hiddenOn / disabledOn keys in ui/packages/sdui-parser, which is the copy #26343 deletes. Taking the deletion as is would have silently dropped #26274's parser half. The 2g-b seat therefore carried that change onto packages/sdui-parser. The three keys leave SDUI_BASE_PROPS, and validateTree answers each with an unknown-prop warning naming the canonical key, so no save verdict changes.

    The correction: .changeset/25926-retire-node-visibility-dialects.md lists '@object-ui/sdui-parser': minor. It now names '@objectstack/sdui-parser': minor (line 4 and the matching bullet), because that package is where the behaviour ships. This differs from the first two corrections, which deleted a line: here the line is re-pointed, since the release note describes a real change in the surviving package.

    Recommendation: confirm (extend A to this file). The alternative, deleting the line, would leave 18.2's notes without the visibility-dialect retirement for the package that now carries it.

    Confirmation: maintainer approval of #26343 at its new head, or the word on this card. A word in project chat counts too.

  12. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    PM correction to addendum 6431022475 (#26343, third changeset correction): 2026-10-27T00:59Z

    The addendum asked the maintainer to confirm re-pointing .changeset/25926-retire-node-visibility-dialects.md from @object-ui/sdui-parser to @objectstack/sdui-parser at minor. On head c933183, Check Changeset refused that grade on the level axis, because #26343 declares Metadata-protocol: none. The current head, 9673955, grades it patch instead. The fixed group still takes its minor from @object-ui/types, so the 18.2 version is unchanged.

    The question for the maintainer is the same apart from the grade. Confirm the move of that one line to '@objectstack/sdui-parser': patch as a third deliberate correction beside the two that ruling A already covers. check-empty-changeset stays red by design until that confirmation. os-zhuang's approval 5660142243 still stands, and needs-user-decision stays on #26343.

  13. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling recorded: #26343 third changeset correction, 2026-10-27T01:21Z

    维护者裁定(Tesla,2026-10-27T01:19Z):「26343 已批准」

    This confirms the addendum (6431022475, as corrected by 6431063794). .changeset/25926-retire-node-visibility-dialects.md moves its @object-ui/sdui-parser line to '@objectstack/sdui-parser': patch. It joins the two deletions ruling A already covers as a deliberate correction. os-zhuang re-approved on head 9673955 (review 5661142403). The check-empty-changeset red on #26343 is therefore confirmed and does not block anything.

    Post-ruling execution: needs-user-decision comes off #26343, and the PM arms it for the merge queue by relay. After it lands, 2g has no open PRs left. 18.2 (#25753) then waits only on 2i PR B #26367.

  14. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Closing record for #25712 (4b, governance in-repo): 2026-10-27T02:32Z

    维护者速读

    4b 的全部条目都已合入 main。最后一个 PR 是 #26343(2g PR 2),于 2026-10-27T02:29Z 合入,提交 80f267d。现在只有一份 sdui-parser(@objectstack/sdui-parser),manifest 由 CI 重新生成(2i,#26137 已关)。本卡不再挡 18.2(#25753)。18.2 发布后,维护者需执行 npm deprecate @object-ui/sdui-parser "moved to @objectstack/sdui-parser"。

    What landed, by item

    Item PRs on main
    PR 1 (inert) #25732
    1 Liveness ledger (2e) #26150
    2 Spec tests (2f) no change needed; report 6418579252 found 0 tests reading objectui on disk
    3 One sdui-parser (2g) #26221 (lockstep gate retired), #26211 (one body), #26343 (renderer moved over, ui copy deleted)
    3 Manifest record (2i, #26137) #26315 (CI regenerates and compares), #26367 (digest records retired)
    4 AGENTS.md, ui/AGENTS.md, pm scripts (2h) #26216
    5 Governance workflows (2c, 2d) 2c and 2d-1 to 2d-3 (last ones #26013 and #26058)
    ui filter, skills/objectui, Lint UI liveness step #26278

    Done-when, checked against origin/main

    • One sdui-parser: ui/packages/sdui-parser no longer exists.
    • git grep 'objectui#' AGENTS.md: empty.
    • git grep 'objectui @' packages/spec/liveness: not 0. This is the accepted 2e ruling. A citation whose line could not be re-verified keeps its old reading as dated prose ((:N at objectui @sha)) and is never re-dated to look fresh, which matches the liveness risk this card names.
    • ui/.github/: only labeler.yml is left. This is ruling F12 = B: 28 of its 32 labels do not exist in the root registry, so the file stays inert until the label taxonomy is decided.

    Residual cleanup, not blocking 18.2

    These items go to the aftercare card #25753 under "cleanup leftovers" and to a follow-up card if the PM files one there:

    • F12: decide on ui/.github/labeler.yml once the label taxonomy is set.
    • F14: ui/content/docs/guide/ci-cd-pipeline.md describes CI that no longer exists; rewrite or retire it.
    • F18–F20, F23: from the 2d and 2e rulings.
    • F27: 33 objectui citations in 29 spec source docblocks.
    • The 2h follow-up list: other pm-dispatch references that still name objectui as a repo.
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