Skip to content

Commit 744900d

Browse files
ci(ui-merge): register Type Check UI in REQUIRED_CONTEXTS (#25878)
<!-- claude-projects-attribution: {"github_login":"os-tesla"} --> _Requested by **Tesla** · [project thread](https://claude.ai/code/project/chan_01AXsQkLFKRdQCqQ3RTr6Jao?thread=cmsg_01AXsQkLFKRdQCqQ3RTr6JaoVor7wZeUGoT2cwA6ZNospy)_ Part of #25752 (cutover step 6, the registry half). Part of #25677. Clause-②: no Metadata-protocol: none This follows #25857 (merged as 3fca599), which registered `Lint UI` and `Build & E2E UI`. It has no closing keyword: #25853 closed with #25857, and #25855 closed with #25856. **Tier H.** `AGENTS.md` and `.claude/**` change because the registry's `statesTheSet` rule makes both instruction surfaces name the registry exactly. `check-governed-merges --test` reads GOVERNED, landing tier H(人合). Draft; the seat lands it once the ruling is on record. ## What changed - `scripts/check-required-contexts.mjs`: one `REQUIRED_CONTEXTS` row, the same shape as the two #25857 added. `ci.yml` job `type-check-ui` publishes `Type Check UI`, and `carries` says: the type-check + vitest-setup type-check family of the `ui/` workspace. The two `statesTheSet` surfaces' `mustName` arrays gain the literal, and the history comments now read 7→8. - `AGENTS.md`, the merge-queue sentence: "seven contexts block" becomes "eight" and names `Type Check UI`; "those seven" becomes "those eight" twice. The five lines are re-filled in place, so the file stays at 1117 lines with no clause dropped and no ceiling raised. The widest touched line is 109 bytes. - `.claude/skills/pm-dispatch/references/platform-readings.md`: 七个 becomes 八个 and the reading names `Type Check UI`. The file stays at 460 lines; the widest touched line is 95 bytes, under the 120-byte cap. `Test UI` is not added; it was ruled out at the sitting (item 30 B). ## The `authorized` field (open until the ruling is relayed) The row's `authorized` currently reads `PENDING the maintainer ruling — asked 2026-10-26T01:42Z …`. The maintainer was asked to add `Type Check UI` to the `main` ruleset after #25856 closed bill item 49. Once the director relays his words, the field will quote them verbatim and this PR gets a push. It stays draft until then. ## Deviation from the card #25853 item 4 said "⛔ Do not add `Type Check UI`", and gave the reason: it joins after bill item 49. Item 49 is now closed. #25856 merged as fc2aaae, and `Type Check UI` was green on the main push run 40253800516 (job 121351290708). The epic PM ordered this row on 2026-10-26 at 01:42Z, so it is recorded here as a deviation that the epic PM ordered. ## Verification (head 4a5dec3, base `main` `c475b45b`) - `node scripts/check-required-contexts.mjs` exits 0: `8 required context name(s) pinned across 3 workflow(s); 6 instruction surface(s) scanned`. - `node scripts/check-required-contexts.mjs --self-test` exits 0. - `NODE_OPTIONS=--use-env-proxy node scripts/check-required-contexts.mjs --verify-required-set` on the branch exits 0. It is report-only. Direction A reads **1**, because the ruleset click has not happened yet; direction B reads 0: ```text required-set sweep: 7 live required context(s) on main, 1 registered-but-not-required, 0 required-but-unpinned. • ruleset main (id 12119582, Repository-sourced — objectstack-ai/objectstack) required: TypeScript Type Check required: Test Core required: Build Core required: Lint & Repo Gates required: Governed Surface Queue Guard required: Lint UI required: Build & E2E UI ⛔ direction A — registered here, NOT in the live required set (1). • Type Check UI — ci.yml job 'type-check-ui' ``` Once `Type Check UI` is in the ruleset, the same command reads 0 / 0. That reading will be re-taken and posted here before landing. - Derived gates (`node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack`): 44 commands, all exit 0 on 4a5dec3 after `pnpm install --frozen-lockfile` and `pnpm --filter '@objectstack/lint...' build`; `--ran` reconciles 44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN. - Changeset: none. Every path is repo-root tooling or instruction text and ships in no package (`skip-changeset`). ## 维护者速读(草稿) **改了什么:** 把 `Type Check UI` 登记进仓库的必过检查注册表;AGENTS.md 和 pm-dispatch 读数表里的名单同步从七个改成八个。 **为什么改:** bill 49 已由 #25856 修好:没改 `ui/` 包的 PR 上,这个检查不会再莫名变红,所以可以把它设为必过。这个 PR 是仓库这一半的改动;规则集那一半要你在设置里点。 **风险与代价(含回滚):** 只改登记和说明文字,不动 CI job 本身。你点之前,注册表多出一行,核对脚本会报“已登记、未设为必过”,只报告、不变红。回滚就是 revert 本 PR。 **席位意见:** **你要做的:** 1) 在 `main` 规则集里加上 `Type Check UI`,并说一句(例如「加上了」),原话会写进这一行的 `authorized` 字段;2) 批准本 PR(os-zhuang)。 --- _Generated by [Claude Code](https://claude.ai/code/session_012CB8WDTpTbuW2XrEyjKHVo)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6e0597f commit 744900d

3 files changed

Lines changed: 23 additions & 11 deletions

File tree

‎.claude/skills/pm-dispatch/references/platform-readings.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -387,9 +387,9 @@
387387
- 本车道强制多是过宽的回忆:`dispatch-gates.mjs --tier PATH` 逐路径现推,路径线是下限非放行。
388388
- 该脚本只答自己那棵树:姊妹仓路径回 absent from this tree,姊妹仓的档位与条款②只能手推。
389389
- `os-verify-lock.sh` 只住 objectstack:objectui 无它,跑本仓副本读的是容器级锁,非该仓深度。
390-
- required checks 的名单是每仓事实,objectstack 七个:
391-
`TypeScript Type Check` · `Lint & Repo Gates` · `Test Core` · `Build Core` ·
392-
`Governed Surface Queue Guard` · `Lint UI` · `Build & E2E UI`。
390+
- required checks 的名单是每仓事实,objectstack 八个:
391+
`TypeScript Type Check` · `Lint & Repo Gates` · `Test Core` · `Build Core` · `Lint UI` ·
392+
`Governed Surface Queue Guard` · `Type Check UI` · `Build & E2E UI`。
393393
- ⭐ 本表的 `mustName` 声明 `statesTheSet` ⇒ 必须逐字等于注册表,加注册行不跟改本表即红。
394394
- ⇒ 门绿即名单逐字齐全的读数;⛔ 但数量词未钉:实测 七→六 照绿,只能手跟改。
395395
- ⛔ 聚合命令同样不作判定:`check:type-check-debt` 可在包级 typecheck 绿时红。

‎AGENTS.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -523,11 +523,11 @@ Even inside your own worktree, operate defensively:
523523
yet"; `in_progress` is not a pass. Arming a red PR does not queue it, it hides it:
524524
every poll then misreads "not on `main` yet" as "queued". Always read *two* things:
525525
the queue branch **and** `origin/main`. And **the queue enforces only the required
526-
set** — seven contexts block: `Lint & Repo Gates` (all `check:*` gates), `TypeScript Type Check`,
527-
`Test Core`, `Build Core`, `Governed Surface Queue Guard`, `Lint UI` and `Build & E2E UI`. A
528-
check outside those seven is advisory and rides through, and an advisory red that lands rides
529-
`main`'s merge ref into every later PR until stanched. A required context is matched by
530-
check-run name, so a rename detaches its gate silently — treat those seven names as contract.
526+
set** — eight contexts block: `Lint & Repo Gates` (all `check:*` gates), `TypeScript Type Check`,
527+
`Test Core`, `Build Core`, `Governed Surface Queue Guard`, `Lint UI`, `Type Check UI` and
528+
`Build & E2E UI`. A check outside those eight is advisory and rides through, and an advisory red
529+
that lands rides `main`'s merge ref into every later PR until stanched. A required context is
530+
matched by check-run name, so a rename detaches its gate silently — treat those eight names as contract.
531531
**Two speeds** (ruling record 6120820653): PR and queue runs carry the fast set, 10 minutes of
532532
wall per queue entry; `main`'s hourly and push runs carry the full battery — dogfood, e2e,
533533
`Temporal Conformance (live PG + MySQL)` — read by the publish lane before

‎scripts/check-required-contexts.mjs‎

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,15 @@ export const REQUIRED_CONTEXTS = [
461461
'added to the `main` ruleset the same minute; this row is the repo half (#25853)',
462462
carries: 'the Console build from `ui/apps/console` and its Playwright e2e',
463463
},
464+
{
465+
workflow: 'ci.yml',
466+
job: 'type-check-ui',
467+
context: 'Type Check UI',
468+
authorized:
469+
'#25752 step 6, maintainer ruling 2026-10-26T02:56Z in the project thread, verbatim 「Type Check UI 加了」 — ' +
470+
'after #25856 (fc2aaaec52) closed bill item 49 with the job green on the main push run 40253800516',
471+
carries: 'the type-check + vitest-setup type-check family of the `ui/` workspace',
472+
},
464473
];
465474

466475
/**
@@ -575,8 +584,9 @@ export const INSTRUCTION_SURFACES = [
575584
// with every gate green, which is what put the exclusivity rule below in
576585
// the judge. Then 7→5 by #22998 (two-speed CI: the dogfood and temporal
577586
// contexts moved to the full battery). Then 5→7 by #25853 (the `ui/`
578-
// import's `Lint UI` and `Build & E2E UI`). The full set is pinned here so
579-
// the corrected sentence cannot rot back — a rename in ANY of the seven
587+
// import's `Lint UI` and `Build & E2E UI`) and 7→8 with `Type Check UI`
588+
// once bill item 49 closed (#25856). The full set is pinned here so the
589+
// corrected sentence cannot rot back — a rename in ANY of the eight
580590
// reddens this gate instead.
581591
file: 'AGENTS.md',
582592
statesTheSet: true,
@@ -588,6 +598,7 @@ export const INSTRUCTION_SURFACES = [
588598
'Governed Surface Queue Guard',
589599
'Lint UI',
590600
'Build & E2E UI',
601+
'Type Check UI',
591602
],
592603
},
593604
{
@@ -618,6 +629,7 @@ export const INSTRUCTION_SURFACES = [
618629
'Governed Surface Queue Guard',
619630
'Lint UI',
620631
'Build & E2E UI',
632+
'Type Check UI',
621633
],
622634
},
623635
{
@@ -640,7 +652,7 @@ export const INSTRUCTION_SURFACES = [
640652
* of the six surfaces have one; `AGENTS.md` does not, because a repo-root FILE
641653
* has no separator to be found by — so an AGENTS.md card derived this gate not
642654
* at all, while that surface is the one carrying `mustName` for every
643-
* required context (widened 2→6 by #9677, 6→7 by #17798, 7→5 by #22998, 5→7 by #25853). Editing the merge-queue
655+
* required context (widened 2→6 by #9677, 6→7 by #17798, 7→5 by #22998, 5→7 by #25853, 7→8). Editing the merge-queue
644656
* paragraph there is precisely how this gate goes red, and it was reachable
645657
* only by judgment.
646658
*

0 commit comments

Comments
 (0)