Skip to content

Check the dependency map's package table, and bring the map and the gate messages up to date - #445

Merged
jeff377 merged 3 commits into
mainfrom
claude/p3-dependency-map
Nov 12, 2026
Merged

jeff377 merged 3 commits into
mainfrom
claude/p3-dependency-map

Conversation

@jeff377

@jeff377 jeff377 commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Part of #441

check-dependency-map.sh now checks the external package table. The table in docs/*/architecture/dependency-map.md was the one part of the map nothing checked, and it had drifted twice (Mud, Fluent and the WebAssembly host were missing). Between new dependency-map:packages markers, the script compares each project's row with the PackageReference and FrameworkReference items its csproj passes on to consumers:

  • items marked PrivateAssets all are left out, as an attribute or a child element, in either case;
  • Include values in single quotes or with spaces around = are read;
  • only names are compared, not versions; a row may list several projects with /; (none) means no packages;
  • it reports a project missing from the table or in two rows, a package missing on either side, and a package named twice in a row;
  • limits stated in its header: shared props/targets are not seen, Condition is not evaluated, and items inside XML comments count (both report a difference rather than hide one).

Checked by breaking it on purpose: removing a row, adding a package that does not exist, duplicating a package, and a temporary csproj with every Include/PrivateAssets spelling. Each was reported; the restored tree passes.

Map and notes (en and zh-TW): the table gains Mud, Fluent and the WebAssembly host; Polhem.Web.Blazor (not the Server host) takes the expression engine; the WebAssembly host is a plain class library and always remote; the Cli reads workbooks through tools/Polhem.Definition.Spreadsheet (MiniExcel); DefineEditor runs as dotnet polhem-define.

Gate messages: the POLHEM9001 text, the header of src/Directory.Build.targets and .claude/rules/dependency-boundary.md named three of the eight *DependencyGateTests classes; they now point to the classes, and the header points to the condition that lists every governed project. src/Polhem.UI.Avalonia/CLAUDE.md no longer says the WebAssembly host was removed.

An adversarial review ran on the script and the documents; its findings are fixed in the second and third commits.

Verified locally: check-dependency-map.sh, the other documentation checks, and a Release build of Polhem.Core (the targets file). Lite CI.

…ate messages up to date

check-dependency-map.sh now also compares the external package table with the PackageReference and FrameworkReference items each src project passes on (PrivateAssets all left out; names only). The table gains Mud, Fluent and the WebAssembly host. The map's notes say Polhem.Web.Blazor takes the expression engine, that the WebAssembly host is a plain class library and always remote, and that the Cli reads workbooks through MiniExcel. The POLHEM9001 message, the targets header and the dependency-boundary rule point to the *DependencyGateTests classes instead of naming three of the eight. The Avalonia CLAUDE.md no longer says the WebAssembly host was removed.
…and state its limits

Review follow-up: an Include or PrivateAssets value in single quotes, or with spaces around the equals sign, is read; a package named twice in one row is reported; the header states that Condition is not evaluated and that items inside XML comments count. The targets header points to the condition that lists every governed project.
@jeff377
jeff377 enabled auto-merge (squash) November 12, 2026 13:04
@jeff377
jeff377 merged commit a7e5c4f into main Nov 12, 2026
3 checks passed
@jeff377
jeff377 deleted the claude/p3-dependency-map branch November 12, 2026 13:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant