LearnNewsExamplesServices
Frontmatter
id17577
titleThe dock demos move to examples/, Mission Control stays with the product
stateClosed
labels
airefactoring
assigneesneo-opus-grace
createdAtAug 22, 2026, 11:17 PM
updatedAtAug 23, 2026, 12:12 AM
githubUrlhttps://github.com/neomjs/neo/issues/17577
authorneo-opus-grace
commentsCount0
parentIssue16322
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 23, 2026, 12:12 AM

The dock demos move to examples/, Mission Control stays with the product

Closed Backlog/active-chunk-18 airefactoring
neo-opus-grace
neo-opus-grace commented on Aug 22, 2026, 11:17 PM

Context

The delivered leaf of #16322, split out so it can land on what it actually does. Same pattern as #17538 under #17241 earlier today.

#16322's AC-2 reads "…all imports/URLs/specs/docs migrated; e2e green at the new location." PR #17562 delivers the migration in full and is measured regression-free, but it cannot make that set green: four of the eight dock journeys are already red on origin/dev, at assertions the relocation does not touch. Those four are owned by #17576.

Holding a measured-clean diff until four unrelated pre-existing product defects are repaired is a ticket dependency wearing a PR's clothes. Tickets block tickets. So the migration gets a leaf whose ACs it satisfies completely, #16322 stays open holding the green criterion, and #17576 is what closes it.

Live latest-open sweep: latest 8 open issues checked 2026-08-22T21:1xZ; no equivalent — #17576 owns the reds, #17573 owns the theme residual, neither owns the migration itself.

The Problem

The migration is done and provable; the parent's close contract is not reachable by the same artifact. Without a leaf, the only routes are both bad:

  • hold PR #17562 indefinitely against defects it did not introduce, or
  • satisfy "green" the cheap way — weaken or skip the four assertions, which is exactly what that criterion exists to prevent.

The Architectural Reality

Delivered by PR #17562 and verified:

  • examples/dashboard/choreography/ and examples/dashboard/crossWindow/ — flat, matching the dock/ and base/ sibling convention, each with its own entry, config, Viewport, README and SCSS.
  • apps/agentos/childapps/missioncontrol/ — the FM tour host, staying on the product side because it composes the production FleetCockpit; confirmed by @neo-fable on the parent (IC_kwDODSospM8AAAABQNGUkw).
  • apps/agentos/tour/ split: the two demo screenplays travel, the two FM screenplays stay.
  • 19 spec files, the portal's four example registries, the class hierarchy, and the theme SCSS all follow.
  • childapps/widget justified in place — production FM opens it at five call sites.

The Fix

Nothing further to build. This ticket exists to give the delivered migration a close target whose criteria it meets, so the parent's remaining criterion can be owned where the work actually lives.

Acceptance Criteria

  • dockdemo no longer exists under apps/agentos/childapps/; the demos live under examples/dashboard/ and Mission Control under childapps/missioncontrol.
  • Every consumer follows: imports, URLs, App-Worker identities, class namespaces, unit + e2e specs, the portal registries, docs and SCSS.
  • No examples/ → product ESM import survives — asserted by a reachability scan over from, import() and side-effect forms. (The theme-graph edge is a distinct residual, owned by #17573.)
  • No regression: the dock journeys are compared on the branch and on a detached origin/dev worktree, and the comparison is equal at the assertion level — same pass/fail split, same failing specs, empty diff over sorted failure messages. Any surviving red is enumerated by failed invariant and owned outside this ticket.
  • Unit suite green.

Out of Scope

  • Making the dock e2e set green — four pre-existing dev-reds, owned by #17576, which keeps #16322's AC-2 alive.
  • The FM palette dependency the relocation did not dissolve — #17573.
  • #16315/#16316 reconciliation and the widget disposition ledger — those stay on #16322.

Avoided Traps

  • Closing #16322 with this PR. Its AC-2 says green, and green is not reachable here. Closing it would retire a live criterion by moving the artifact rather than doing the work.
  • Restating AC-2 so the PR fits it. Proposed and offered to @neo-fable, but a criterion should not be reshaped by the author it constrains just to unblock them. The split makes the restatement optional rather than load-bearing.
  • Calling assertion-level parity "green". It is not. It is a stronger claim in one respect — green tolerates a test that silently stopped exercising its subject, and this comparison caught exactly such a regression in the PR — but it is a different claim, and conflating them is how a red set becomes invisible.

Related

#16322 (parent; retains the green criterion, #16315/#16316 reconciliation and the widget ledger) · PR #17562 (the delivery) · #17576 (the four reds) · #17573 (the theme residual) · #17538 / #17241 (the same split pattern, earlier today)

Retrieval Hint: dockdemo relocation delivered leaf examples/dashboard choreography crossWindow missioncontrol assertion-level baseline

Origin Session ID: cb3eb9c7-875a-4eac-a716-02878fa535c5

tobiu closed this issue on Aug 23, 2026, 12:12 AM