Skip to content

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

Closed

Description

@objectstack-fleet

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

  1. 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 add objectui as ui/ 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 from ui/).
  2. Whatever the registry's own sweeps then demand: the instruction-surface mustName ledger (the sentence that names every required context), the aggregator/step-collector rosters, the dispatch-gates self-test specimens that count the registry (check-governed-merges, check-governed-queue-guard, ci-failure.mjs read REQUIRED_CONTEXTS — run each --self-test).
  3. node scripts/check-required-contexts.mjs --self-test 0, pnpm check:required-contexts 0, and --verify-required-set reads 0 required-but-unpinned, 0 registered-but-not-required on the branch (needs a token in the seat container; paste the sweep).
  4. ⛔ Do not add Type Check UI or Test UI: the maintainer added exactly two contexts. Type Check UI joins after bill item 49 (its own card); Test UI was 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; --ran reconciles.
  • 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

  1. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: epic #25677 round 7 (cutover aftercare card threads; Tesla 2026-10-25 「你应该使用 pm-dispatch 技能派发」「并发可以到6」) 2026-10-26T00:42Z
    Session: session_01RSDL3SFtJaKzcymvCD8RsU
    Account: os-tesla
    Branch: 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 to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-25853
    Domain: domain:devx
    Seat: epic:#25677
    Scope: 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 session session_012CB8WDTpTbuW2XrEyjKHVo; order: this card's body, FRAME.md applies), model: opus, effort: xhigh
    Clause-②: 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

  2. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev report — #25853, draft PR #25857, head aaf6226292 (branch claude/project-thread-n7du7e, base main e167956e3f)

    Verdict: CLEAN. Tier H (check-governed-merges --test: AGENTS.md ×1 + .claude/** ×1 → H(人合)); draft, reviewers os-zhuang + hotlong requested by the relay on create, assignee os-tesla, label skip-changeset.

    files_changed (3, +33/−10):

    line_budget: AGENTS.md 1117 → 1117 and platform-readings.md 460 → 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):

    required-set sweep: 7 live required context(s) on main, 0 registered-but-not-required, 0 required-but-unpinned.
      read 1 ruleset(s); 1 active and covering the default branch; strict_required_status_checks_policy: false
        • 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
    
      ✅  the live required set and this registry agree in both directions.
    

    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); --ran reconciles 44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN.

    Registry readers the card names: check-aggregator-roster.mjs holds its own aggregator subset; neither new job aggregates (needs: filter only), so no roster row is owed. check-governed-merges, check-governed-queue-guard and ci-failure.mjs name 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

  3. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed reading — #25857 merged as 3fca5996; main is now c475b45b, which contains it. The merge queue landed #25857, #25865 and #25861 together, so the push run for this main is Lint & Type Check run 40256110080 on c475b45b (in progress when this reading was taken). CI runs separately.

    NODE_OPTIONS=--use-env-proxy node scripts/check-required-contexts.mjs --verify-required-set on a checkout of main c475b45b exits 0:

    required-set sweep: 7 live required context(s) on main, 0 registered-but-not-required, 0 required-but-unpinned.
      read 1 ruleset(s); 1 active and covering the default branch; strict_required_status_checks_policy: false
        • 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
    
      ✅  the live required set and this registry agree in both directions.
    

    Both directions read 0. The epic PM has ordered a follow-up PR that adds a Type Check UI row (Part of #25752, no closing keyword).


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    ContributorAuthor

    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 main 1d2a246c (2026-10-26T06:23Z), --verify-required-set exits 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

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