Repository navigation
fix(ci): project scope reads glob inputs/links; a shipped static asset reaches no referencing project - #6021
Conversation
…tic asset reaches no referencing project node-repo-project-scope.py selected every portal-host suite whose compiled closure contained a changed project, and read linked includes and declared inputs as literal prefixes. MeshWeaver.Plugins#2734 changed only the vendored Monaco bundle under src/MeshWeaver.Blazor/wwwroot/ and owed 14 host suites. - An input or a linked include holding * or ? is a glob matched whole; a ;-separated Include is read as each of its patterns. - A file under <project>/wwwroot/ of a project the caller declares image-shipped (project-closure.py platform_shipped) selects only the owner, its sibling .Test, and entries that link or declare it. The caller's scripts/ci-tests.py applies the same rules, so the reconcile agrees. Self-test: 29 assertions. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Test Results (shard 0) 1 files 1 suites 3m 9s ⏱️ Results for commit c204fbf. |
Test Results (shard 4)839 tests 646 ✅ 2m 22s ⏱️ Results for commit c204fbf. |
Test Results (shard 2) 4 files 4 suites 3m 39s ⏱️ Results for commit c204fbf. |
Test Results (shard 1) 3 files 3 suites 5m 15s ⏱️ Results for commit c204fbf. |
Test Results (shard 5) 4 files 4 suites 12m 45s ⏱️ Results for commit c204fbf. |
Test Results (shard 3) 4 files 4 suites 12m 54s ⏱️ Results for commit c204fbf. |
Test Results 20 files 20 suites 40m 6s ⏱️ Results for commit c204fbf. |
Why
Maintainer, 2026-10-03: "why are ci run so long? should only run test of delta plugin not all" … "run only affected parts … incl dependencies".
MeshWeaver.Plugins#2734 changed two files under
src/MeshWeaver.Blazor/wwwroot/lib/monaco-editor/(the vendored Monaco bundle and itsversions.json).node-repo-project-scope.pyselected 14 portal-host suites for it (run 37124132005), four ~22-minute Blazor legs among them, because:src/MeshWeaver.Blazorwas selected, although no compiler reads awwwroot/file and MeshWeaver.Blazor is image-shipped, so no module bundle carries it either;../MeshWeaver.Blazor/**/*.razor(Blazor.Views.Test) read as "all of src/MeshWeaver.Blazor";src/**/*.cshad to declaresrc/.What changed (
.github/scripts/node-repo-project-scope.py)*or?is a glob (input_covers):**/spans zero or more directories,**anything,*/?stay inside a segment. A;-separatedIncludeis read as each pattern. A pattern without a wildcard is the prefix it always was.<project>/wwwroot/…) of a project the caller declares image-shipped (project-closure.py→platform_shipped) reaches only the owner, its sibling<owner>.Test, and entries that link or declare it. A caller without that helper keeps the plain closure rule (the loud direction).Architecture/BuildScopeNarrowing.md, section Separate compiled validation from content publication.Self-test: 29 assertions (11 new), each new rule with its negative control (an asset BESIDE a source change in the owner still takes the closure; an asset of a non-shipped project still takes the closure; a
wwwrootish/folder is a compile input).Measured against the Plugins tree (dry run of this selector + Plugins' declared selector)
Store/Plugin/Test/*.cs)wwwroot/)Hosting/Deployment/{Source,Test}, a page)The paired Plugins change (declared selector + policy globs) declares
Core-refto this PR: until this reaches a sealed set, Plugins' reconcile would be RED on an asset-only diff (core selecting suites the declaration no longer names).Nothing a running instance serves changes; no recycle is owed.
🤖 Generated with Claude Code