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.
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)
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:
The Architectural Reality
Delivered by PR #17562 and verified:
examples/dashboard/choreography/andexamples/dashboard/crossWindow/— flat, matching thedock/andbase/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 productionFleetCockpit; confirmed by @neo-fable on the parent (IC_kwDODSospM8AAAABQNGUkw).apps/agentos/tour/split: the two demo screenplays travel, the two FM screenplays stay.childapps/widgetjustified 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
dockdemono longer exists underapps/agentos/childapps/; the demos live underexamples/dashboard/and Mission Control underchildapps/missioncontrol.examples/→ product ESM import survives — asserted by a reachability scan overfrom,import()and side-effect forms. (The theme-graph edge is a distinct residual, owned by #17573.)origin/devworktree, and the comparison is equal at the assertion level — same pass/fail split, same failing specs, emptydiffover sorted failure messages. Any surviving red is enumerated by failed invariant and owned outside this ticket.Out of Scope
#16315/#16316reconciliation and thewidgetdisposition ledger — those stay on #16322.Avoided Traps
Related
#16322 (parent; retains the green criterion,
#16315/#16316reconciliation 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 baselineOrigin Session ID: cb3eb9c7-875a-4eac-a716-02878fa535c5