Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/pm-dispatch/references/platform-readings.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 绿时红。
Expand Down
10 changes: 5 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
18 changes: 15 additions & 3 deletions scripts/check-required-contexts.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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:
'#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',
},
];

/**
Expand Down Expand Up @@ -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,
Expand All @@ -588,6 +598,7 @@ export const INSTRUCTION_SURFACES = [
'Governed Surface Queue Guard',
'Lint UI',
'Build & E2E UI',
'Type Check UI',
],
},
{
Expand Down Expand Up @@ -618,6 +629,7 @@ export const INSTRUCTION_SURFACES = [
'Governed Surface Queue Guard',
'Lint UI',
'Build & E2E UI',
'Type Check UI',
],
},
{
Expand All @@ -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.
*
Expand Down
Loading