diff --git a/.agents/session-log.md b/.agents/session-log.md index 074f715..e5d229b 100644 --- a/.agents/session-log.md +++ b/.agents/session-log.md @@ -389,5 +389,7 @@ - 2026-04-10: Completed issue #342 primary workbench ownership. The renderer now marks workbench-heavy surfaces explicitly and collapses the outer support lane plus internal two-column workbench grids earlier, so `Runs`, `Compare`, `Candidates`, `Run Detail`, and `Paper Ops` stop holding two side rails at the same laptop-width breakpoint. Validation passed with `node --check desktop/renderer/app.js`, `npm run smoke:fallback`, and `npm run smoke:real-path`. - 2026-04-10: Started issue #346 to harden `desktop-smoke` result persistence after CI repeatedly failed with raw `ENOENT` on missing `result.json` in a planning-only PR. The slice is limited to `desktop/main.js`, `desktop/scripts/smoke.js`, and `.agents` continuity so smoke emits structured failures instead of crashing when Electron exits too early. - 2026-04-10: Added the desktop layout regression remediation block after reviewing the post-merge desktop state in real screenshots. Opened issues #342, #343, and #344 to target empty-pane collapse, stronger active-surface focus and context containment, and better runs-family density plus right-rail space budgeting without reopening core or `research_ui` scope. +<<<<<<< HEAD +- 2026-04-10: Added the Desktop architecture migration block after accepting the ADR direction for the new shell foundation. Opened issues #350, #354, #353, #355, #352, #359, #351, #357, #358, and #356 so the migration is tracked as real slices rather than dozens of micro-backlog items. - 2026-04-10: Started the desktop shared contracts foundation slice on branch `codex/desktop-shared-workspace-contract`. The goal is to establish the first real shared Desktop contract layer before opening the larger `desktop-typescript-base` slice, limited to workspace, runtime/snapshot, and smoke boundaries. - 2026-04-10: Completed the desktop shared contracts foundation slice. Added `desktop/shared` contracts for IPC channels, envelopes, workspace state, runtime state, snapshot status, and smoke results, and connected them back into `desktop/main.js`, `desktop/preload.js`, `desktop/renderer/app.js`, and `desktop/scripts/smoke.js` via narrow JSDoc typing only, without changing desktop behavior. diff --git a/.agents/tasks/issue-350-desktop-target-architecture-and-shared-contract-guardrails.md b/.agents/tasks/issue-350-desktop-target-architecture-and-shared-contract-guardrails.md new file mode 100644 index 0000000..b80a106 --- /dev/null +++ b/.agents/tasks/issue-350-desktop-target-architecture-and-shared-contract-guardrails.md @@ -0,0 +1,14 @@ +# Issue #350 — Desktop Target Architecture and Shared Contract Guardrails + +## Goal +Lock the migration direction and guardrails for the Desktop architecture so later slices do not reopen stack, boundary, or target-state debates. + +## Expected deliverable +- accepted ADR +- explicit transition rules +- shared-contract-first ordering + +## Done when +- the architecture direction is fixed +- `research_ui` is explicitly transitional +- the next slice can move into TypeScript base real cleanly diff --git a/.agents/tasks/issue-351-migrate-run-detail-and-artifacts.md b/.agents/tasks/issue-351-migrate-run-detail-and-artifacts.md new file mode 100644 index 0000000..991832b --- /dev/null +++ b/.agents/tasks/issue-351-migrate-run-detail-and-artifacts.md @@ -0,0 +1,11 @@ +# Issue #351 — Migrate Run Detail and Artifacts + +## Goal +Move run-level evidence review into the new renderer stack after core workstation surfaces. + +## Expected deliverable +- migrated Run Detail +- migrated Artifacts + +## Done when +- evidence review no longer depends on the legacy shell path diff --git a/.agents/tasks/issue-352-minimal-react-shell-frame.md b/.agents/tasks/issue-352-minimal-react-shell-frame.md new file mode 100644 index 0000000..9280d26 --- /dev/null +++ b/.agents/tasks/issue-352-minimal-react-shell-frame.md @@ -0,0 +1,14 @@ +# Issue #352 — Minimal React Shell Frame + +## Goal +Introduce the new shell frame without migrating all surfaces at once. + +## Expected deliverable +- shell layout +- sidebar +- topbar +- support lane frame +- focused surface tabs + +## Done when +- the React shell exists and hosts transitional surfaces without uncontrolled drift diff --git a/.agents/tasks/issue-353-modularize-desktop-main-process.md b/.agents/tasks/issue-353-modularize-desktop-main-process.md new file mode 100644 index 0000000..a973767 --- /dev/null +++ b/.agents/tasks/issue-353-modularize-desktop-main-process.md @@ -0,0 +1,12 @@ +# Issue #353 — Modularize Desktop Main Process + +## Goal +Split the Electron main process by responsibility after the TypeScript base exists. + +## Expected deliverable +- thin `main.js` +- typed modules for bootstrap, window, workspace, IPC, and smoke support + +## Done when +- responsibilities are separated into coherent modules +- runtime behavior stays unchanged diff --git a/.agents/tasks/issue-354-typescript-base-across-desktop.md b/.agents/tasks/issue-354-typescript-base-across-desktop.md new file mode 100644 index 0000000..234379e --- /dev/null +++ b/.agents/tasks/issue-354-typescript-base-across-desktop.md @@ -0,0 +1,15 @@ +# Issue #354 — TypeScript Base Across Desktop + +## Goal +Establish the real TypeScript base for `desktop/` without changing runtime behavior. + +## Expected deliverable +- `tsconfig.json` +- `types/global.d.ts` +- `typecheck` +- native use of `desktop/shared` + +## Done when +- current Desktop JS entrypoints pass typecheck +- smoke remains green +- no functional change is introduced diff --git a/.agents/tasks/issue-355-typed-preload-bridge-and-stable-ipc-surface.md b/.agents/tasks/issue-355-typed-preload-bridge-and-stable-ipc-surface.md new file mode 100644 index 0000000..5e8ae94 --- /dev/null +++ b/.agents/tasks/issue-355-typed-preload-bridge-and-stable-ipc-surface.md @@ -0,0 +1,13 @@ +# Issue #355 — Typed Preload Bridge and Stable IPC Surface + +## Goal +Turn preload into the stable typed bridge between main and renderer. + +## Expected deliverable +- typed preload API +- typed event subscriptions +- stable Desktop surface exposed to the renderer + +## Done when +- preload is fully typed +- renderer depends on a clear bridge contract diff --git a/.agents/tasks/issue-356-retire-legacy-shell-renderer.md b/.agents/tasks/issue-356-retire-legacy-shell-renderer.md new file mode 100644 index 0000000..bd6b73f --- /dev/null +++ b/.agents/tasks/issue-356-retire-legacy-shell-renderer.md @@ -0,0 +1,11 @@ +# Issue #356 — Retire Legacy Shell Renderer + +## Goal +Remove the transitional shell path once the new architecture owns Desktop end to end. + +## Expected deliverable +- legacy shell retirement +- removal of transitional duplication + +## Done when +- the new Desktop architecture is the only maintained shell path diff --git a/.agents/tasks/issue-357-migrate-paper-ops-system-experiments.md b/.agents/tasks/issue-357-migrate-paper-ops-system-experiments.md new file mode 100644 index 0000000..5f92caa --- /dev/null +++ b/.agents/tasks/issue-357-migrate-paper-ops-system-experiments.md @@ -0,0 +1,12 @@ +# Issue #357 — Migrate Paper Ops, System, and Experiments + +## Goal +Move the remaining operational Desktop surfaces into the new renderer architecture. + +## Expected deliverable +- migrated Paper Ops +- migrated System +- migrated Experiments + +## Done when +- those surfaces are owned by the new shell architecture diff --git a/.agents/tasks/issue-358-decide-and-resolve-launch-target-state.md b/.agents/tasks/issue-358-decide-and-resolve-launch-target-state.md new file mode 100644 index 0000000..d3df6e0 --- /dev/null +++ b/.agents/tasks/issue-358-decide-and-resolve-launch-target-state.md @@ -0,0 +1,11 @@ +# Issue #358 — Decide and Resolve Launch Target-State + +## Goal +Make Launch explicit as product and architecture target-state instead of preserving embedded continuity by inertia. + +## Expected deliverable +- explicit Launch target-state decision +- implementation aligned with the new shell architecture + +## Done when +- Launch is no longer architecturally ambiguous diff --git a/.agents/tasks/issue-359-migrate-core-workstation-surfaces.md b/.agents/tasks/issue-359-migrate-core-workstation-surfaces.md new file mode 100644 index 0000000..52b88e0 --- /dev/null +++ b/.agents/tasks/issue-359-migrate-core-workstation-surfaces.md @@ -0,0 +1,11 @@ +# Issue #359 — Migrate Core Workstation Surfaces + +## Goal +Move Runs, Compare, and Candidates into the new renderer stack. + +## Expected deliverable +- migrated core decision surfaces +- preserved selection and compare continuity + +## Done when +- these surfaces no longer depend on the legacy shell path diff --git a/.agents/tasks/issue-block-desktop-architecture-migration.md b/.agents/tasks/issue-block-desktop-architecture-migration.md new file mode 100644 index 0000000..4c7554f --- /dev/null +++ b/.agents/tasks/issue-block-desktop-architecture-migration.md @@ -0,0 +1,20 @@ +# Desktop Architecture Migration Block + +This block groups the real migration slices for the QuantLab Desktop architecture transition. + +Order: + +1. `#350` Desktop target architecture and shared contract guardrails +2. `#354` TypeScript base real across main, preload, shared, and renderer +3. `#353` Modularize the desktop main process +4. `#355` Complete typed preload bridge and stable Desktop IPC surface +5. `#352` Establish the minimal React shell frame +6. `#359` Migrate core workstation surfaces: Runs, Compare, Candidates +7. `#351` Migrate Run Detail and Artifacts +8. `#357` Migrate Paper Ops, System, and Experiments +9. `#358` Decide and resolve Launch target-state +10. `#356` Retire the legacy shell renderer + +Principle: +- one real slice = one issue = one branch = one PR +- micro-cuts stay inside the slice branch and do not become backlog units