Skip to content

Northwind dashboard: refer to the classes by the names they actually have - #2308

Merged
rbuergi merged 2 commits into
mainfrom
fix/northwind-dashboard-stale-class-names
Aug 26, 2026
Merged

rbuergi merged 2 commits into
mainfrom
fix/northwind-dashboard-stale-class-names

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Northwind/AnalyticsCatalog does not compile. DashboardLayoutAreas.cs names four classes that do not exist:

Referenced Actual class Member named
OrderViews.OrderSummary OrderLayoutAreas already declares OrderSummary
SalesViews.SalesByCategory SalesLayoutAreas already declares SalesByCategory
SupplierViews.SupplierSummary SupplierLayoutAreas already declares SupplierSummary
ProductViews.ProductOverview ProductLayoutAreas already declares ProductOverview

Northwind/Product then fails after it — Supplier and Category are declared in AnalyticsCatalog's own Source/, so a red root makes the dependent red too.

Behaviour is identical

All four sites are nameof(X.Y), which evaluates to "Y" regardless of X. Every layout-area name passed to Controls.LayoutArea is byte-for-byte what it was. This repairs the compile and changes nothing at runtime.

This is latent on main, not new

In-mesh source compiles at runtime, never in dotnet build — and a NodeType keeps its cached bundle until the framework identity changes, at which point every dynamic NodeType recompiles at once. So this breakage is invisible on main and detonates on the first change that mints a new framework build.

That is how it surfaced: it turned #2285 (which moves types between assemblies) red, on a gate that is green on main with the identical broken file. Worth noting for anyone reading that red as "#2285 broke Northwind" — it did not; it recompiled it.

Verification

Deliberately not verified by dotnet build: samples/Graph/** is <None> content and is never type-checked by any build or test. The Doc content compiles and runs gate is the verification, which is where the failure was observed:

Compilation failed for 'Northwind/AnalyticsCatalog':
  CS0103 'OrderViews' does not exist in the current context   (+3 more)
Compilation failed for 'Northwind/Product':
  CS0246 The type or namespace name 'Supplier' could not be found   (+1 more)
NodeType 'Northwind/Product' PARKED after compile failure

Expected after this change: 31/31 NodeType(s) compiled where the run showed 28/31.

…have

DashboardLayoutAreas referenced OrderViews, SalesViews, SupplierViews and
ProductViews. No such classes exist — they are OrderLayoutAreas,
SalesLayoutAreas, SupplierLayoutAreas and ProductLayoutAreas, and each already
declares the exact member being named. So Northwind/AnalyticsCatalog failed to
compile, and Northwind/Product failed after it because Supplier and Category
are declared in AnalyticsCatalog's own Source.

This is latent on main, not new. In-mesh source compiles at runtime, never in
`dotnet build`, and a NodeType keeps its cached bundle until the framework
identity changes — so the breakage stays invisible until some change mints a
new framework build and every dynamic NodeType recompiles at once. The lift in
#2285 does exactly that, which is how this surfaced there rather than here.

Behaviour is identical: nameof(X.Y) evaluates to "Y" whatever X is, so all four
layout-area names are byte-for-byte what they were. This only repairs the
compile.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 26, 2026 06:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a runtime NodeType compilation failure in the Northwind sample analytics dashboard by updating nameof(...) references to match the actual layout-area classes, ensuring Northwind/AnalyticsCatalog (and downstream Northwind/Product) can compile again during in-portal dynamic compilation. Adds a corresponding “What’s New” entry documenting the user-visible impact (dashboard tiles rendering again).

Changes:

  • Update DashboardLayoutAreas to reference OrderLayoutAreas, SalesLayoutAreas, SupplierLayoutAreas, and ProductLayoutAreas (instead of non-existent *Views types) while keeping the resulting layout-area names unchanged.
  • Add a “What’s New” entry describing the restored Northwind analytics dashboard rendering after the compile fix.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
samples/Graph/Data/Northwind/AnalyticsCatalog/Source/DashboardLayoutAreas.cs Corrects nameof(...) type qualifiers to match existing layout-area classes so the NodeType compiles again.
src/MeshWeaver.Documentation/Data/WhatsNew/2026-08-26-northwind-dashboard-compiles.md Documents the fix as a user-visible “Fix” entry for the changelog.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

    9 files  ±0      9 suites  ±0   6m 9s ⏱️ -2s
1 827 tests ±0  1 823 ✅ ±0  4 💤 ±0  0 ❌ ±0 
2 370 runs  +1  2 366 ✅ +1  4 💤 ±0  0 ❌ ±0 

Results for commit 24d2d27. ± Comparison against base commit b53aed0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

1 202 tests  ±0   1 202 ✅ ±0   14m 48s ⏱️ - 1m 34s
    9 suites ±0       0 💤 ±0 
    9 files   ±0       0 ❌ ±0 

Results for commit 24d2d27. ± Comparison against base commit b53aed0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

   10 files  ±0     10 suites  ±0   7m 12s ⏱️ -15s
1 310 tests ±0  1 309 ✅ ±0  1 💤 ±0  0 ❌ ±0 
1 311 runs  ±0  1 310 ✅ ±0  1 💤 ±0  0 ❌ ±0 

Results for commit 24d2d27. ± Comparison against base commit b53aed0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

2 122 tests  ±0   1 822 ✅ ±0   10m 41s ⏱️ - 1m 28s
    9 suites ±0     300 💤 ±0 
    9 files   ±0       0 ❌ ±0 

Results for commit 24d2d27. ± Comparison against base commit b53aed0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

3 438 tests  ±0   3 438 ✅ ±0   9m 30s ⏱️ -2s
    8 suites ±0       0 💤 ±0 
    8 files   ±0       0 ❌ ±0 

Results for commit 24d2d27. ± Comparison against base commit b53aed0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

1 815 tests  ±0   1 815 ✅ ±0   9m 25s ⏱️ +4s
   10 suites ±0       0 💤 ±0 
   10 files   ±0       0 ❌ ±0 

Results for commit 24d2d27. ± Comparison against base commit b53aed0.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

    55 files  ±0      55 suites  ±0   57m 47s ⏱️ - 3m 18s
11 714 tests ±0  11 409 ✅ ±0  305 💤 ±0  0 ❌ ±0 
12 258 runs  +1  11 953 ✅ +1  305 💤 ±0  0 ❌ ±0 

Results for commit 24d2d27. ± Comparison against base commit b53aed0.

♻️ This comment has been updated with latest results.

The samples gate is a one-way ratchet: a listed failure that starts passing
fails the run until its line goes, so the list can only shrink. Repairing the
stale class names moved the gate from 28/31 to 29/31 NodeTypes compiled, which
made 'Northwind/AnalyticsCatalog compile' a stale entry.

'Northwind/Product compile' stays. It is a SEPARATE latent defect of the same
class, not a cascade of the first: ProductContent declares
[Dimension(typeof(Supplier))] and [Dimension(typeof(Category))], and those
records live in AnalyticsCatalog's Source, which Product's NodeType does not
reference. Paying that one down means giving Product access to those types —
a change to what compiles, not a rename, so it is deliberately not bundled here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

2 participants