T-GXNH-migrate-launchers-to-app-harness
State: planning/proposed · Impact: medium · Complexity: large
Make @sksizer/app-harness the only launcher for every platform-server suite, and give hand-run web
dev a scratch root by default.
| Location | Role today |
|---|---|
solutions/determined/tests/ui/serve-{smoke,notes,vaults,polish,fitness,polish-lint}.ts | Per-suite launchers; each runs platform-server --port --dist --vault <tmp copy> --state-dir <tmp> (15090-15093, 15104, 15105) |
solutions/determined/tests/ui/serve-sdf.ts | A fake fixture server for SDF’s SPA (15094), not a real backend |
solutions/determined/tests/ui/{notes,polish,mvux,fitness,vaults,sharing,graph}/ | 32, 20, 18, 15, 3, 2 and 1 specs. 10 mvux specs ride the smoke server and the 8 *.vaults.e2e.ts run in vaults on 15092. graph runs in smoke and skips unless CAPTURE_SHOTS is set |
solutions/determined/playwright.config.ts, playwright.sharing.config.ts | Projects smoke, notes, vaults, mvux, fitness, polish, backup; sharing |
solutions/determined/products/agent-pants/tests/serve*.ts | Seven launchers (15095-15101) over a shared serve-harness.ts; specs read paths from .paths-<port> |
solutions/determined/products/agent-pants/playwright.config.ts | 8 specs in tests/e2e; run by bun run test:e2e, no moon task |
solutions/determined/scripts/dev-web.ts | Starts or attaches to platform-server on :15070 for bun run proto; --vault picks a corpus; no state isolation |
Proposed
Section titled “Proposed”Every Determined and agent-pants suite launches through scratchPlatform. The specs read paths
through the harness fixture, not tmp files. serve-sdf.ts is deleted once T-JPFC tests SDF on
its real backend; until then it stays and is listed as the one exception. agent-pants gets a moon
test-ui task. Each suite’s port comes from the harness’s nextFree lease, which closes
T-2MBO. dev-web.ts runs in a scratch root by default; --real-state opts out.
Approach
Section titled “Approach”- Migrate the determined
serve-*.tssuites one by one; delete each launcher. - Migrate the agent-pants launchers and delete
serve-harness.ts; add the moon task. dev-web.ts: scratch root by default throughwithScratchApp,--real-stateto opt out; print the root on start.
| Area | Note |
|---|---|
solutions/determined/tests/ui/ | Launchers removed |
solutions/determined/products/agent-pants/tests/ | Launchers removed |
solutions/determined/products/agent-pants/moon.yml | E2e task |
solutions/determined/scripts/dev-web.ts | Scratch default |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: The only
serve-*.tsleft undersolutions/determinedisserve-sdf.ts, and every other suite passes through the harness. - AC-2: No spec reads a
.paths-<port>or other tmp handoff file. - AC-3:
bun run protowith no flag leaves the real suite durable home unchanged. - AC-4:
moon run product-agent-pants:test-uiruns the agent-pants suite. - AC-5: Two worktrees running the same suite at once start two servers on two ports.
Out of scope
Section titled “Out of scope”- Backup (
T-VEK2), SDF (T-JPFC), the Tauri apps (T-UU4J,T-KOTJ,T-AAR2,T-TLET). - The template (
T-GQ9Y).
Dependencies
Section titled “Dependencies”T-4HBCfor the harness.T-2MBOplans per-worktree e2e ports for the launchers this task deletes. AC-5 covers it; close T-2MBO with this task.T-E3S6adds a stale-binary check to the same launchers. If it is still wanted, the check goes intoscratchPlatform, not into aserve-*.tsscript.
Discovery context
Section titled “Discovery context”dev-web.tsis how people and agents explore the web build; today it writes to real state.solutions/agent-pants(the Rust core and mockups) has no app or server; the agent-pants app is the Determined product.
Depends on
Section titled “Depends on”T-4HBC