Repository navigation
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
Merged
Conversation
…m the repository root's workflows GitHub runs only the root .github/workflows/. The gate read objectui's nested ui/.github/workflows/, which runs nowhere since the monorepo merge, and went red on ten dead steps that still name the deleted scripts/objectstack-pin.mjs. The population is now the root workflow steps, ahead of their job's install, that run an objectui gate: `pnpm --dir ui run <alias>` resolved through ui/package.json, `node ui/scripts/<x>`, or `pnpm --dir ui exec node scripts/<x>`. A bare `node scripts/<x>` in a root workflow is the root's own script and stays out. The self-test gains the four spelling cases. The test's floor lists the root rows: type-check-ui's coverage check and lint-ui's three gates. The rest of objectui#6148's table ran in workflows nothing runs. Each one is named with the roster row of the #25697 audit that carries it, or with the port that brings it back. The gate is not in its own derived population until the root Lint UI job runs it, so the test walks its graph by name. The header's pointer resolves against the root. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS
…mpts/, and check:prompt-keys reads them there VS Code reads prompt files from the workspace root's .github/prompts/, and objectui's nested .github/ is being retired. The three *.prompt.md files move unchanged. check-prompt-component-keys derives its registry under the objectui root and now reads the prompts under a separate root. promptsRoot() is the repository root. analyze() takes it as an option, and a fixture tree passes one directory for both roots, so the fixture cases are unchanged. The CLI defaults to the repository root and has a --prompts-root flag. The live-tree cases read the root prompts. Two new cases cover the move: no prompt file is left under the objectui root, and the bare command, as CI runs it, passes. The markdown-test-inputs ledger drops the three prompt paths from the two entries that declared them; they are no longer under the objectui tree. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS
os-tesla
pushed a commit
that referenced
this pull request
Oct 26, 2026
…derives 30 to 40 #25957 retargeted check:pre-install-import-graph at the root workflows, and it is green on the merged tree, so the step held back for 2d-3 runs now. The F13 rule re-derived with the gates' ~174 s added (558 + 174 = 732 s) gives 40; turbo-cache-save-bound.test.ts pins the new value. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015MoCPtpv6AtTo899tF8Ktq
This was referenced Oct 26, 2026
This was referenced Oct 26, 2026
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 (4b PR 2d-3a: the pre-install import graph reads the root workflows, and the prompt files move to the root
.github/prompts/).Part of objectstack#25677.
Clause-②: no
Metadata-protocol: none
维护者速读(草稿)
check-pre-install-import-graph的总体改为从仓库根目录的.github/workflows/推导。它只收根 workflow 里在 install 之前运行 objectui gate 的步骤,写法有三种:pnpm --dir ui run <alias>(经ui/package.json解析)、node ui/scripts/<x>、pnpm --dir ui exec node scripts/<x>。ui/.github/prompts/下的 3 个 prompt 文件原样移到根目录.github/prompts/。check:prompt-keys改为在仓库根读取 prompt,在 objectui 根推导 registry。markdown-test-inputsledger 删掉 3 个已移走的路径。ui/.github/workflows/,那里有 10 个永远不会运行的步骤还在引用已删除的scripts/objectstack-pin.mjs,所以它在main上一直是红的(Queue-flake anchor: scripts/__tests__/check-pre-install-import-graph.test.ts #25863,24 小时内有 11 个 PR 因此被踢出合并队列)。本 PR 合入后,这一行变绿。prompt 文件移到根目录,VS Code 才能读到。.github/prompts/不在受管清单里,也没有 CODEOWNERS 规则)。在 2d-3c 给ui过滤器加上.github/prompts/**之前,只改 prompt 的 PR 不会触发 Lint UI 和 Test UI(见 F16)。回滚 = revert 本 PR。席位核对
(left for the dispatch seat)
Why
GitHub runs only the repository root's
.github/workflows/. Since the cutover (#25825), objectui's own workflows sit atui/.github/workflows/and run nowhere.check-pre-install-import-graphderived its population from that directory. Ten of the steps there still run the deletedscripts/objectstack-pin.mjs, so the gate, andTest UIwith it, has been red onmainwithunresolved: scripts/objectstack-pin.mjs(#25863).This is the first of three PRs that finish 2d (the dispatcher's split of 2026-10-26):
ui/.github/workflows/**andui/.github/dependabot.yml, and changes the Lint UI steps.What changes
ui/scripts/check-pre-install-import-graph.mjs.workflowRoot(), the parent of the objectui root. Only the root workflow steps that run an objectui gate before their job's first install count, in three spellings:pnpm --dir ui run <alias>. The alias is resolved throughui/package.json'sscripts, and everynode scripts/<x>in its body is a row. This is the spelling the rootci.ymlprescribes for objectui's commands.node ui/scripts/<x>.pnpm --dir ui exec node scripts/<x>.node scripts/<x>in a root workflow is objectstack's own script, resolved against the repository root, and stays out of the population.--listnames the alias each row came through.check-pre-install-import-graph.test.ts.node ui/scripts/<x>). One new case covers the alias spelling and the exclusion of the root's own scripts.type-check-ui→check-type-check-coverage, andlint-ui→check-lint-coverage,check-entry-guard,check-bash32-floor.ci.ymlschedules..github/workflowsagainst the repository root.ui/.github/prompts/{component,engine,ui-library}.prompt.mdmove to.github/prompts/unchanged. VS Code reads prompt files from the workspace root.ui/scripts/check-prompt-component-keys.mjs.promptsRoot()(the repository root) is where.github/prompts/is read.analyze()takes the prompts root as an option. A fixture tree passes one directory for both roots, so the fixture cases are unchanged.--prompts-rootflag.check-prompt-component-keys.test.ts.ui/scripts/markdown-test-inputs.mjs. The three prompt paths leave the two entries that declared them (ci-cd-pipeline-doc,dollar-dialect-alias-census), because they are no longer in the objectui tree.--audit: 114 candidates, all adjudicated, 81 entries, all present.Disposition table
check-pre-install-import-graphpopulationui/.github/workflows/.github/workflows/, ui gates onlyci.yml(type-check-ui,lint-ui)changeset-guard.yml : no-majorchangeset-presence.yml : changeset-presenceci.yml : changeset-checkci.yml : type-checkandlint.yml : lint(entry guard)type-check-uiandlint-ui, pluslint-ui's other two pre-install gatesrepo-gates.yml : repo-gatesfloor rowslint-uiin 2d-3c.github/prompts/*.prompt.md(3 files).github/prompts/check-prompt-component-keysprompt surfaceui/.github/prompts/promptsRoot().github/prompts/Untouched here: the pre-install test's wiring and header-count sections still read objectui's
repo-gates.yml, the gate's home until 2d-3c gives it a root step.ui/.github/labeler.ymlstays, pending sub-issue 4 (F12 = B).Follow-up rows (not folded here)
F16. The root
filterjob'suiglobs (ui/**, the lockfile, the workspace file,turbo.json,ci.yml) do not match.github/prompts/**. So a PR that only changes a prompt runs neither Lint UI (wherecheck:prompt-keysruns once ci(ui-merge): run objectui's Repo Gates in the root Lint UI job (18 of 19; the pre-install import graph waits for ui/.github to retire) #25902 lands) nor Test UI. Proposed for 2d-3c: add.github/prompts/**to theuifilter in rootci.yml(Tier H).F17. The moved prompts cite paths relative to the objectui root, and objectui's script names. Read from the repository root, some of these are wrong:
packages/components/src/renderers/action/,packages/fields/src/widgets/types.tsandapps/consoleneed aui/prefix;pnpm check:prompt-keysneedspnpm --dir ui run check:prompt-keys.packages/spec/...paths inengine.prompt.mdalready resolve from the root.This PR moves the files unchanged. The content edit belongs with 2h (the instruction-file rewrite) or sub-issue 4.
Verification
This head is
maind65cbb61(with #25940) plus two commits. Test runs are fromui/, perui/AGENTS.md.node scripts/check-pre-install-import-graph.mjsci.yml(6f2cb2ab)type-check-ui1,lint-ui17), 23 modules, 0 findingstypescriptimport added toscripts/check-lint-coverage.mjsscripts/check-lint-coverage.mjs reaches the package typescript(reverted)node scripts/check-pre-install-import-graph.mjs --self-testnode scripts/check-prompt-component-keys.mjsmarkdown-test-inputs,dollar-dialect-alias-census,markdown-fence-scanscripts/__tests__suite, at this headcheck-pre-install-import-graph, the base red, is green.ui/.github/workflows/andui/.github/dependabot.ymlmoved aside (the 2d-3c layout)check-prompt-component-keys: 47 passed.check-pre-install-import-graph: red onENOENT ui/.github/workflows/repo-gates.yml, its sections 4 and 5, which 2d-3c retargets with the gate's root Lint UI step (see "Untouched here").pnpm type-check:scriptspackages/components/src/renderers/action/resolve-icon.ts(265,69)TS2339, identical on unmodifiedmain; none in a touched filepnpm exec eslint --max-warnings=0(touched files),lint:coverage,check:test-path-roots,check:entry-guard,markdown-test-inputs --auditDerived gates (
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack): 29 families from this PR's 11 paths (the tool counts each moved file as two). All 29 exit 0, and--ranreconciles 29 run, 0 NOT-MEASURED, 0 UNRUN. The slowest werecheck:query-options-erasure(340 s),check-comment-mask-corpus(233 s) andcheck:engine-double-contract(73 s).Push-environment battery (
GITHUB_ACTIONS=true GITHUB_EVENT_NAME=push node scripts/pm/check-dispatch-gates.mjs, both tiers), at this head:✓ dispatch-gates self-test: 2182 cases pass.(fast 1917 cases in 402.5 s, slow 265 in 1144.5 s), exit 0, 0 failed.CI at this head: 58 check runs, 45 passed, 13 skipped, 0 failed.
🤖 Generated with Claude Code
https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS