From 4a5dec34a3e5643c7331e11f96f6d66cbba4f012 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Oct 2026 01:52:18 +0000 Subject: [PATCH 1/2] ci(ui-merge): register `Type Check UI` in REQUIRED_CONTEXTS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bill item 49 closed with #25856 (fc2aaaec52), so the ui type-check job no longer reds on an empty ui scope and joins the required set. The registry row is the repo half; the ruleset half is the maintainer's. AGENTS.md's merge-queue sentence and the pm-dispatch readings ledger state the set and follow, line-neutral, seven → eight. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_012CB8WDTpTbuW2XrEyjKHVo --- .../references/platform-readings.md | 6 +++--- AGENTS.md | 10 +++++----- scripts/check-required-contexts.mjs | 18 +++++++++++++++--- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/.claude/skills/pm-dispatch/references/platform-readings.md b/.claude/skills/pm-dispatch/references/platform-readings.md index 6f29235e250..23b7bf343e4 100644 --- a/.claude/skills/pm-dispatch/references/platform-readings.md +++ b/.claude/skills/pm-dispatch/references/platform-readings.md @@ -387,9 +387,9 @@ - 本车道强制多是过宽的回忆:`dispatch-gates.mjs --tier PATH` 逐路径现推,路径线是下限非放行。 - 该脚本只答自己那棵树:姊妹仓路径回 absent from this tree,姊妹仓的档位与条款②只能手推。 - `os-verify-lock.sh` 只住 objectstack:objectui 无它,跑本仓副本读的是容器级锁,非该仓深度。 -- required checks 的名单是每仓事实,objectstack 七个: - `TypeScript Type Check` · `Lint & Repo Gates` · `Test Core` · `Build Core` · - `Governed Surface Queue Guard` · `Lint UI` · `Build & E2E UI`。 +- required checks 的名单是每仓事实,objectstack 八个: + `TypeScript Type Check` · `Lint & Repo Gates` · `Test Core` · `Build Core` · `Lint UI` · + `Governed Surface Queue Guard` · `Type Check UI` · `Build & E2E UI`。 - ⭐ 本表的 `mustName` 声明 `statesTheSet` ⇒ 必须逐字等于注册表,加注册行不跟改本表即红。 - ⇒ 门绿即名单逐字齐全的读数;⛔ 但数量词未钉:实测 七→六 照绿,只能手跟改。 - ⛔ 聚合命令同样不作判定:`check:type-check-debt` 可在包级 typecheck 绿时红。 diff --git a/AGENTS.md b/AGENTS.md index 2abd3a5f717..4e05826ad5f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -523,11 +523,11 @@ Even inside your own worktree, operate defensively: yet"; `in_progress` is not a pass. Arming a red PR does not queue it, it hides it: every poll then misreads "not on `main` yet" as "queued". Always read *two* things: the queue branch **and** `origin/main`. And **the queue enforces only the required - set** — seven contexts block: `Lint & Repo Gates` (all `check:*` gates), `TypeScript Type Check`, - `Test Core`, `Build Core`, `Governed Surface Queue Guard`, `Lint UI` and `Build & E2E UI`. A - check outside those seven is advisory and rides through, and an advisory red that lands rides - `main`'s merge ref into every later PR until stanched. A required context is matched by - check-run name, so a rename detaches its gate silently — treat those seven names as contract. + set** — eight contexts block: `Lint & Repo Gates` (all `check:*` gates), `TypeScript Type Check`, + `Test Core`, `Build Core`, `Governed Surface Queue Guard`, `Lint UI`, `Type Check UI` and + `Build & E2E UI`. A check outside those eight is advisory and rides through, and an advisory red + that lands rides `main`'s merge ref into every later PR until stanched. A required context is + matched by check-run name, so a rename detaches its gate silently — treat those eight names as contract. **Two speeds** (ruling record 6120820653): PR and queue runs carry the fast set, 10 minutes of wall per queue entry; `main`'s hourly and push runs carry the full battery — dogfood, e2e, `Temporal Conformance (live PG + MySQL)` — read by the publish lane before diff --git a/scripts/check-required-contexts.mjs b/scripts/check-required-contexts.mjs index d05b928d1a9..710f9bfaecb 100644 --- a/scripts/check-required-contexts.mjs +++ b/scripts/check-required-contexts.mjs @@ -461,6 +461,15 @@ export const REQUIRED_CONTEXTS = [ 'added to the `main` ruleset the same minute; this row is the repo half (#25853)', carries: 'the Console build from `ui/apps/console` and its Playwright e2e', }, + { + workflow: 'ci.yml', + job: 'type-check-ui', + context: 'Type Check UI', + authorized: + 'PENDING the maintainer ruling — asked 2026-10-26T01:42Z to add it to the `main` ruleset, after #25856 (fc2aaaec52) ' + + 'closed bill item 49 with the job green on the main push run 40253800516; #25752 step 6', + carries: 'the type-check + vitest-setup type-check family of the `ui/` workspace', + }, ]; /** @@ -575,8 +584,9 @@ export const INSTRUCTION_SURFACES = [ // with every gate green, which is what put the exclusivity rule below in // the judge. Then 7→5 by #22998 (two-speed CI: the dogfood and temporal // contexts moved to the full battery). Then 5→7 by #25853 (the `ui/` - // import's `Lint UI` and `Build & E2E UI`). The full set is pinned here so - // the corrected sentence cannot rot back — a rename in ANY of the seven + // import's `Lint UI` and `Build & E2E UI`) and 7→8 with `Type Check UI` + // once bill item 49 closed (#25856). The full set is pinned here so the + // corrected sentence cannot rot back — a rename in ANY of the eight // reddens this gate instead. file: 'AGENTS.md', statesTheSet: true, @@ -588,6 +598,7 @@ export const INSTRUCTION_SURFACES = [ 'Governed Surface Queue Guard', 'Lint UI', 'Build & E2E UI', + 'Type Check UI', ], }, { @@ -618,6 +629,7 @@ export const INSTRUCTION_SURFACES = [ 'Governed Surface Queue Guard', 'Lint UI', 'Build & E2E UI', + 'Type Check UI', ], }, { @@ -640,7 +652,7 @@ export const INSTRUCTION_SURFACES = [ * of the six surfaces have one; `AGENTS.md` does not, because a repo-root FILE * has no separator to be found by — so an AGENTS.md card derived this gate not * at all, while that surface is the one carrying `mustName` for every - * required context (widened 2→6 by #9677, 6→7 by #17798, 7→5 by #22998, 5→7 by #25853). Editing the merge-queue + * 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 * paragraph there is precisely how this gate goes red, and it was reachable * only by judgment. * From bea00dfdbd1edddfbbfc04a2acc1ab06fbf619af Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 26 Oct 2026 03:00:09 +0000 Subject: [PATCH 2/2] ci(ui-merge): the Type Check UI row quotes the maintainer's ruling Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_012CB8WDTpTbuW2XrEyjKHVo --- scripts/check-required-contexts.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/check-required-contexts.mjs b/scripts/check-required-contexts.mjs index 710f9bfaecb..428a4ec0797 100644 --- a/scripts/check-required-contexts.mjs +++ b/scripts/check-required-contexts.mjs @@ -466,8 +466,8 @@ export const REQUIRED_CONTEXTS = [ job: 'type-check-ui', context: 'Type Check UI', authorized: - 'PENDING the maintainer ruling — asked 2026-10-26T01:42Z to add it to the `main` ruleset, after #25856 (fc2aaaec52) ' + - 'closed bill item 49 with the job green on the main push run 40253800516; #25752 step 6', + '#25752 step 6, maintainer ruling 2026-10-26T02:56Z in the project thread, verbatim 「Type Check UI 加了」 — ' + + 'after #25856 (fc2aaaec52) closed bill item 49 with the job green on the main push run 40253800516', carries: 'the type-check + vitest-setup type-check family of the `ui/` workspace', }, ];