LearnNewsExamplesServices
Frontmatter
id17504
titleexamples/dashboard is both a leaf app and a parent of nested apps
stateClosed
labels
enhancementairefactoringtech-debt
assigneesneo-fable
createdAtAug 21, 2026, 10:23 PM
updatedAtAug 22, 2026, 1:59 AM
githubUrlhttps://github.com/neomjs/neo/issues/17504
authorneo-fable
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[ ] 16322 Relocate the dockdemo child-app out of the agentos FM app
closedAtAug 22, 2026, 1:59 AM

examples/dashboard is both a leaf app and a parent of nested apps

Closed Backlog/active-chunk-18 enhancementairefactoringtech-debt
neo-fable
neo-fable commented on Aug 21, 2026, 10:23 PM

Context

Operator no-go (2026-08-21, in-session, the dock-consolidation arc): "examples/dashboard has an OWN index file, so there is a NESTED example with a different index file. many many no-gos." Verified same hour: examples/dashboard/ carries its own index.html + app.mjs + MainContainer.mjs (a legacy Neo.dashboard.Container color-box demo) AND two nested example apps with their own index files — examples/dashboard/dock/ (the sanctioned dock verification surface, #13247) and examples/dashboard/crossWindowWitness/ (verification-only cross-window safety harness, self-described "not a product demo").

A census of every examples/*/ topic dir (2026-08-21) shows this is the only hybrid in the tree — every other dir is either a leaf app or a pure parent, never both.

The Problem

The hybrid breaks the examples contract three ways:

  1. Routing ambiguity: /examples/dashboard/ is simultaneously an app URL and the namespace prefix of two other app URLs.
  2. Walker special-casing: build/SEO walkers and portal example listings must special-case a dir that is both app and namespace, or silently mis-render one of its two identities.
  3. A broken foundation about to take load: the dock-demo relocation (#16322, operator-directed: demos leave the FM app for examples/) lands MORE siblings under examples/dashboard/ — building on the hybrid multiplies the special case exactly when the dir becomes the dock system's demo home.

The Architectural Reality

  • The leaf-vs-parent convention is live in the tree, with an exact demotion precedent: examples/button/base/, examples/container/base/, examples/list/base/.
  • Spec consumers of the ROOT example: none found. The e2e/core specs (RefreshDomCorpseRepro.spec.mjs:21, DragSensorDispatch.spec.mjs:28) and the dashboard unit specs all target examples/dashboard/dock/, whose URL does not change.
  • Registry/walker surfaces to verify at move time: buildScripts/docs/seo/generate.mjs (walks example trees) and the portal examples registry — the #17438 Calendar-identity regression is the precedent for silent registry drift when an example's identity moves.

The Fix

  • Move the root example to examples/dashboard/base/ (index.html, app.mjs, MainContainer.mjs, neo-config.json), following the button/container/list precedent.
  • examples/dashboard/ becomes a pure parent: base/ + dock/ + crossWindowWitness/ — ready to receive the #16322 arrivals as clean siblings.
  • Update registry/walker references; verify SEO output and portal example routing by build receipts, not assertion.

Decision Record impact

none — examples-tree organization; no ADR authority touched. The dock example remains ADR 0029 §2.5's cited verification surface at an unchanged path.

Acceptance Criteria

  • examples/dashboard/ contains no root index.html/app.mjs/MainContainer.mjs; the legacy demo lives at examples/dashboard/base/ and loads at its new URL (dev-mode receipt in the PR).
  • examples/dashboard/dock/ and crossWindowWitness/ URLs unchanged; the two e2e/core specs and the dashboard unit specs stay green untouched.
  • SEO generator output and portal example listing verified post-move (build receipts, not assertions).
  • Census re-run in the PR: zero hybrid leaf+parent dirs under examples/.

Out of Scope

  • The dockdemo relocation itself (#16322) — this ticket prepares its destination; sequencing: this PR lands first.
  • Dock styling promotion (#17241) — the reason examples/dashboard/dock renders unstyled today; separately owned.
  • Renaming crossWindowWitness/Harness.mjs — its "harness" is the ordinary QA term, not the Agent-Harness misnomer class (#17503 owns that class).

Related

#16322 (consumes this as its destination shape) · #17241 (engine-paint promotion makes the dock example presentable) · #17503 (docking-authority identity catch-up, same sweep) · #13247 (dock example origin) · #15144 (workstation promotion precedent)

Live latest-open sweep: latest 20 open checked 2026-08-21T20:16Z; no equivalent (#17502 ADR-0040 leaf is extraction-lane, no overlap). A2A claim sweep: recent window scanned; no competing claim on examples structure.

Unclaimed — offered to the peers the operator named with bandwidth (Grace/Ada) alongside #16322; pairs naturally with #16322 under one owner as two sequenced PRs.

Origin Session ID: 55e55313-48fa-4295-83fd-37121a2bf4b6 Retrieval Hint: "examples dashboard hybrid leaf parent base demotion dock demo destination"

tobiu referenced in commit a8d3c64 - "chore(examples): dashboard demotes its root demo to base, becoming a pure parent (#17504) (#17520)" on Aug 22, 2026, 1:59 AM
tobiu closed this issue on Aug 22, 2026, 1:59 AM