Repository navigation
ci(ui-merge): the ui filter covers the roots the ui gates read outside ui/, and Lint UI runs the spec liveness gate - #26278
Merged
Conversation
…e ui/, and Lint UI runs the spec liveness gate The root `filter` job's `ui` globs named `ui/**`, the lockfile, the workspace, turbo.json and ci.yml. Three roots outside `ui/` are read by the ui jobs' gates and tests, and a change confined to one of them started no ui job: - every root workflow (F21): Lint UI's pre-install import graph check scans all of `.github/workflows/`, not ci.yml alone. `.github/workflows/**` replaces the ci.yml entry; - `.github/prompts/**` (F16): objectui's prompts moved there in #25957, and Lint UI's prompt-keys check reads them; - `skills/objectui/**` (cutover bill item 35): objectui's skill bundle moved to the root catalog in #26097; Lint UI's skill gates and Test UI's skill readers find it through `ui/scripts/skill-bundle-root.mjs`. Lint UI also runs `pnpm --filter @objectstack/spec check:liveness` after its install (F26, PM ruling B). Since #26150 the liveness ledger cites the renderer under `ui/`, and Spec Liveness Check neither runs on a ui-only pull request nor is required. The step takes about 3 s, against about 25 runner-minutes per push for the alternative of declaring `ui/` as a spec test input and starting Test Core on every ui pull request. Three ui tests pin the new coverage by path: the pre-install test now requires every root workflow to be matched, and the prompt-keys and skills-paths tests pin their Lint UI home and the root they read. Claude-Session: https://claude.ai/code/session_01P33kUswHotSHBLPc6UVn6n Co-authored-by: Claude <noreply@anthropic.com>
os-zhuang
approved these changes
Oct 26, 2026
os-tesla
pushed a commit
that referenced
this pull request
Oct 26, 2026
#26278 widened the ci.yml `ui` filter (every root workflow, .github/prompts, skills/objectui). Both sides kept: main's entries, then this PR's turbo globalDependencies and the SDUI manifest's four files. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Tesla · project thread
Part of #25712
Part of objectstack#25677
What
The root
filterjob'suiglobs namedui/**, the lockfile, the workspace,turbo.jsonandci.yml. Three roots outsideui/are read by the ui jobs' gates and tests, and a change confined to one of them started no ui job. This PR (the parked 4b patch, applied onto currentmain) closes that gap and adds one step to Lint UI:.github/workflows/**replaces theci.ymlentry. Lint UI's pre-install import graph check scans every root workflow, notci.ymlalone..github/prompts/**is added. objectui's prompts moved there in ci(ui-merge): the pre-install import graph reads the repository root's workflows; objectui's prompt files move to the root .github/prompts/ #25957, and Lint UI's prompt-keys check reads them.skills/objectui/**is added (cutover bill item 35). The skill bundle moved to the root catalog in skills(ui-merge): move the objectui skill bundle into the root skills/ catalog (decision C) #26097; Lint UI's skill gates and Test UI's skill readers find it throughui/scripts/skill-bundle-root.mjs.pnpm --filter @objectstack/spec check:livenessafter its install. Since refactor(spec-liveness): the renderer's ledger evidence is in-repo under ui/; objectui becomes a retired realm that fails #26150 the liveness ledger cites the renderer underui/, and Spec Liveness Check neither runs on a ui-only pull request nor is required. The step takes about 3 s.Three ui tests pin the new coverage by path:
check-pre-install-import-graph.test.tsnow requires every root workflow to be matched, andcheck-prompt-component-keys.test.tsandcheck-skills-paths.test.tspin their Lint UI home and the root they read.Measured cost of F21
Over the 211 merges of the 7 days before this change, 3 changed another root workflow and no ui path. Those 3 would newly start the 4 ui lanes (Lint UI, Type Check UI, Build & E2E UI, Test UI). Every other merge is unaffected.
Clause-②: no
Metadata-protocol: none
Verification
81471c06, one commit onmain3d50a43b; 4 files, +82 / −12.pnpm --dir ui exec vitest runon the three pinning tests: 3 files, 120/120.pnpm --filter @objectstack/spec check:liveness: exit 0.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack: 63 derived gates, 63 exit 0;--ran: 63 run, 0 NOT-MEASURED, 0 UNRUN.GITHUB_ACTIONS=true GITHUB_EVENT_NAME=push node scripts/pm/check-dispatch-gates.mjs, both tiers): 2182 cases pass, 0 fail (fast 1917, slow 265).维护者速读(草稿)
ci.yml的ui过滤器补上 ui 门禁实际读取的三处ui/之外的根路径(全部根 workflow、.github/prompts/**、skills/objectui/**);Lint UI 增加 spec 活性账本检查一步。ui/下的渲染器,而 ui-only PR 不跑 Spec Liveness Check。🤖 Generated with Claude Code
https://claude.ai/code/session_01P33kUswHotSHBLPc6UVn6n