Repository navigation
ci(ui-merge): register Lint UI and Build & E2E UI in REQUIRED_CONTEXTS — the main ruleset requires both since 2026-10-26 00:25Z and the registry pins neither (parent #25752 step 6, repo half) #25853
Description
Filing gate ③ + ④: step 6 of the cutover procedure #25752 (pm:epic; epic PM session_01RSDL3SFtJaKzcymvCD8RsU). Part of #25752. Part of #25677. ⛔ Not a claim: the coordinator opens the card thread.
Maintainer's words (director thread, 2026-10-26 00:25Z, verbatim): 「加上了」 — answering the sitting's step 6 ask to add Lint UI and Build & E2E UI to the required checks of main. The settings half is done; this card is the repo half of the two-step the registry itself prescribes.
谁付代价(业务筛): scripts/check-required-contexts.mjs exists so that renaming the job behind a required context cannot detach its gate silently (#6865). Today two live required contexts have no registry row, so a rename of lint-ui or build-e2e-ui in ci.yml would turn every PR permanently-pending (or advisory) with nothing in the tree to say why. Every ui/ PR from here on merges under these two contexts.
Measured (2026-10-26 00:27Z, main e167956e3f)
NODE_OPTIONS=--use-env-proxy node scripts/check-required-contexts.mjs --verify-required-set:
required-set sweep: 7 live required context(s) on main, 0 registered-but-not-required, 2 required-but-unpinned.
ruleset main (id 12119582, Repository-sourced — objectstack-ai/objectstack)
required: TypeScript Type Check · Test Core · Build Core · Lint & Repo Gates · Governed Surface Queue Guard · Lint UI · Build & E2E UI
⛔ direction B — required in the live set, pinned by NO registry row (2): Lint UI · Build & E2E UI
Report-only by design (#9642), so nothing is red; the remedy the sweep names is a REQUIRED_CONTEXTS row per context, no settings change.
Wanted
- Two rows in
REQUIRED_CONTEXTS(scripts/check-required-contexts.mjs), in the shape of the existing five:workflow: 'ci.yml',job: 'lint-ui'/job: 'build-e2e-ui',context: 'Lint UI'/'Build & E2E UI',authorized:the maintainer's 2026-10-26 00:25Z ruling at 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 step 6 (quote 「加上了」 and the director-thread date),carries:one line each (ui/ lint; the Console build + Playwright e2e fromui/). - Whatever the registry's own sweeps then demand: the instruction-surface
mustNameledger (the sentence that names every required context), the aggregator/step-collector rosters, thedispatch-gatesself-test specimens that count the registry (check-governed-merges,check-governed-queue-guard,ci-failure.mjsreadREQUIRED_CONTEXTS— run each--self-test). node scripts/check-required-contexts.mjs --self-test0,pnpm check:required-contexts0, and--verify-required-setreads 0 required-but-unpinned, 0 registered-but-not-required on the branch (needs a token in the seat container; paste the sweep).- ⛔ Do not add
Type Check UIorTest UI: the maintainer added exactly two contexts.Type Check UIjoins after bill item 49 (its own card);Test UIwas ruled out at the sitting (item 30 B).
Acceptance
- The sweep above exits with both directions at 0; the derived gate list for the diff (
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack) exits 0;--ranreconciles. - If the ledger sentence lives in
AGENTS.md, the PR is Tier H (say so in the 维护者速读 and stop at draft); otherwise Tier S.
Size: S. Clause-②: no. Metadata-protocol: none.
Dedupe
search_issues 2026-10-26 00:29Z 「required contexts registry Lint UI Build & E2E UI REQUIRED_CONTEXTS row ruleset」: 1 hit, #6865 (closed; the finding that created the registry). No open card. New.
Activity
objectstack-fleet commentedon Oct 26, 2026
Claim: epic #25677 round 7 (cutover aftercare card threads; Tesla 2026-10-25 「你应该使用 pm-dispatch 技能派发」「并发可以到6」) 2026-10-26T00:42Z
Session:
session_01RSDL3SFtJaKzcymvCD8RsUAccount:
os-teslaBranch:
claude/project-thread-n7du7e(the card thread's designated branch in objectstack-ai/objectstack — the thread can push only this branch, a measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-25853Domain:
domain:devxSeat:
epic:#25677Scope: the whole card — two REQUIRED_CONTEXTS rows (ci.yml lint-ui / build-e2e-ui) and every sweep that counts the registry; the seat's early read says AGENTS.md L526 (the statesTheSet sentence) and platform-readings.md must follow, so the PR is Tier H (draft, os-zhuang + hotlong), deletion-funded at ratchet headroom 0
Why now: the main ruleset has required Lint UI and Build & E2E UI since 2026-10-26 00:25Z and the registry pins neither (direction B on e167956)
Container & model: S,
mode:thread(thread sessionsession_012CB8WDTpTbuW2XrEyjKHVo; order: this card's body, FRAME.md applies),model: opus,effort: xhighClause-②: no
Metadata-protocol: none
Responsibility: n/a — epic step
Thread-read: none
Serial constraints cleared: none open on scripts/check-required-contexts.mjs; #25855 touches ci.yml only
objectstack-fleet commentedon Oct 26, 2026
os-dev report — #25853, draft PR #25857, head
aaf6226292(branchclaude/project-thread-n7du7e, basemaine167956e3f)Verdict: CLEAN. Tier H (
check-governed-merges --test:AGENTS.md×1 +.claude/**×1 → H(人合)); draft, reviewersos-zhuang+hotlongrequested by the relay on create, assigneeos-tesla, labelskip-changeset.files_changed (3, +33/−10):
scripts/check-required-contexts.mjs: twoREQUIRED_CONTEXTSrows (ci.ymllint-ui→Lint UI,ci.ymlbuild-e2e-ui→Build & E2E UI),authorized= 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 step 6, maintainer ruling 2026-10-26T00:25Z, verbatim 「加上了」; bothstatesTheSetsurfaces'mustNamegain the two literals.AGENTS.md: merge-queue sentence five → seven contexts, both names added..claude/skills/pm-dispatch/references/platform-readings.md: 五个 → 七个, both names added.line_budget:
AGENTS.md1117 → 1117 andplatform-readings.md460 → 460, both line-neutral by re-filling the touched lines in place; no clause dropped, no ceiling raised. Widest touched lines 102 B and 82 B.Required-set sweep on the branch (
NODE_OPTIONS=--use-env-proxy node scripts/check-required-contexts.mjs --verify-required-set, exit 0):gates:
node scripts/check-required-contexts.mjs→ 0 (7 contexts pinned across 3 workflows, 6 instruction surfaces scanned)node scripts/check-required-contexts.mjs --self-test→ 0 (174 assertions)node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack→ 44 commands, all exit 0 (incl.pnpm check:required-contexts,check:pm-skill-ratchet,check:pm-governed-prose,check:pm-governed-merges,check:pm-dispatch-gates,check-governed-queue-guard --self-test);--ranreconciles 44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN.Registry readers the card names:
check-aggregator-roster.mjsholds its own aggregator subset; neither new job aggregates (needs: filteronly), so no roster row is owed.check-governed-merges,check-governed-queue-guardandci-failure.mjsname the registry in prose only.deviations: none. Not added:
Type Check UI,Test UI(card item 4).writes: relay 1 (
pr_create, run 40251956399, body 5066 B sent = 5066 B stored) + this comment;mcp_calls(writes) 0.Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Landed reading — #25857 merged as
3fca5996;mainis nowc475b45b, which contains it. The merge queue landed #25857, #25865 and #25861 together, so the push run for thismainisLint & Type Checkrun 40256110080 onc475b45b(in progress when this reading was taken).CIruns separately.NODE_OPTIONS=--use-env-proxy node scripts/check-required-contexts.mjs --verify-required-seton a checkout ofmainc475b45bexits 0:Both directions read 0. The epic PM has ordered a follow-up PR that adds a
Type Check UIrow (Part of #25752, no closing keyword).Generated by Claude Code
objectstack-fleet commentedon Oct 26, 2026
Closing reading: both halves are in place. #25857 and #25878 put the three rows in the registry, and the maintainer re-saved the objectstack ruleset at 05:10Z. Re-measured on
main1d2a246c(2026-10-26T06:23Z),--verify-required-setexits 0:8 live required context(s) on main, 0 registered-but-not-required, 0 required-but-unpinned. Step 6 closing record: #25752 (comment)Generated by Claude Code