Goal
Remove repository-development setup from the normal user path: obtain Performance Lab, launch it locally, connect an external inference target and reach Find best setup without cloning the repo or manually assembling Python/frontend environments.
Delivery / REAL_ENVIRONMENT policy
Software slices may be integrated incrementally into dev once their repository-owned deterministic gates pass. REAL_ENVIRONMENT acceptance is intentionally deferred until the planned software modifications are integrated and dev is the consolidated candidate. VALUE-08D remains required for final representative install/use acceptance, but it no longer blocks integrating VALUE-08A/B/C software.
Current gap on dev
- release packaging already builds an immutable ZIP containing the built frontend plus Python wheel and validates it with package smoke/full product E2E;
- the artifact still requires the user to create an isolated Python environment, install the wheel, author a
StarterRunConfig, and run performance-lab-ui manually;
- normal local development still requires
uv, Node/pnpm and repository checkout;
- serving/model lifecycle must remain external; Performance Lab must not become a model downloader/server.
Vertical slices
VALUE-08A — Artifact-owned launcher
Define and implement the narrowest supported launcher path that owns Performance Lab setup/runtime lifecycle while keeping model serving external. The launcher must remain loopback-only, bounded and cleanly stoppable.
VALUE-08B — First-run connection flow
Allow a user to launch the product without pre-authoring JSON, connect/probe a Local LLM Server/OpenAI-compatible target from the existing UI, and persist only safe local connection preferences (never raw credentials).
VALUE-08C — Distributed artifact acceptance
Exercise the exact distributed artifact from clean state through launch -> connect -> Find best setup -> one bounded evaluation using the deterministic fixture, then retain package/source identity and cleanup evidence.
VALUE-08D — Representative install/use smoke
After software convergence on dev, on a representative desktop verify the documented installation/launch path and a real external LLS connection without repository-development tooling.
Material decision intentionally not guessed
The repository does not currently choose a native desktop container/installer technology. VALUE-08A must first prefer the smallest extension of the existing validated ZIP/wheel/browser product unless a native-app requirement is explicitly adopted. Do not introduce Electron/Tauri/PyInstaller/DMG/MSI packaging speculatively.
Acceptance
- normal usage does not require cloning/editing/building the repository;
- user does not need Node/pnpm or the source tree;
- launch owns only bounded local Performance Lab processes/listeners;
- inference serving/download lifecycle remains external;
- connection setup reaches the existing decision-first UI;
- distributed artifact has immutable source/build identity, checksum and packaged E2E evidence;
- credentials are never persisted in portable evidence.
Non-goals
- bundling Local LLM Server/model weights;
- hosted SaaS/control plane;
- choosing a native desktop framework before product need requires it.
Goal
Remove repository-development setup from the normal user path: obtain Performance Lab, launch it locally, connect an external inference target and reach Find best setup without cloning the repo or manually assembling Python/frontend environments.
Delivery / REAL_ENVIRONMENT policy
Software slices may be integrated incrementally into
devonce their repository-owned deterministic gates pass. REAL_ENVIRONMENT acceptance is intentionally deferred until the planned software modifications are integrated anddevis the consolidated candidate. VALUE-08D remains required for final representative install/use acceptance, but it no longer blocks integrating VALUE-08A/B/C software.Current gap on dev
StarterRunConfig, and runperformance-lab-uimanually;uv, Node/pnpm and repository checkout;Vertical slices
VALUE-08A — Artifact-owned launcher
Define and implement the narrowest supported launcher path that owns Performance Lab setup/runtime lifecycle while keeping model serving external. The launcher must remain loopback-only, bounded and cleanly stoppable.
VALUE-08B — First-run connection flow
Allow a user to launch the product without pre-authoring JSON, connect/probe a Local LLM Server/OpenAI-compatible target from the existing UI, and persist only safe local connection preferences (never raw credentials).
VALUE-08C — Distributed artifact acceptance
Exercise the exact distributed artifact from clean state through launch -> connect -> Find best setup -> one bounded evaluation using the deterministic fixture, then retain package/source identity and cleanup evidence.
VALUE-08D — Representative install/use smoke
After software convergence on
dev, on a representative desktop verify the documented installation/launch path and a real external LLS connection without repository-development tooling.Material decision intentionally not guessed
The repository does not currently choose a native desktop container/installer technology. VALUE-08A must first prefer the smallest extension of the existing validated ZIP/wheel/browser product unless a native-app requirement is explicitly adopted. Do not introduce Electron/Tauri/PyInstaller/DMG/MSI packaging speculatively.
Acceptance
Non-goals