Epic: #121 · Depends on: FM-930
Context
#109's remaining scope is the web editor slice; recipes/versions/builds/promotion exist in API and CLI.
Goal
An Images page using the pipeline layout (recipes → versions → templates → environments, with lineage highlighting), a structured Proxmox editor paired with a raw .pkr.json editor that preserves unknown fields, build start with live log, and manual promotion showing its evidence.
Architecture reference
docs/planning/web-console.md (Lab/Images); mockup lab-b-pipeline.html; FM-700/701.
Dependencies
FM-930
Research required
CodeMirror 6 JSON mode (license).
Acceptance criteria
Non-goals
Tests
Round-trip tests, component tests, e2e build/promote against the stub API.
Epic: #121 · Depends on: FM-930
Context
#109's remaining scope is the web editor slice; recipes/versions/builds/promotion exist in API and CLI.
Goal
An Images page using the pipeline layout (recipes → versions → templates → environments, with lineage highlighting), a structured Proxmox editor paired with a raw
.pkr.jsoneditor that preserves unknown fields, build start with live log, and manual promotion showing its evidence.Architecture reference
docs/planning/web-console.md(Lab/Images); mockuplab-b-pipeline.html; FM-700/701.Dependencies
FM-930
Research required
CodeMirror 6 JSON mode (license).
Acceptance criteria
Non-goals
Tests
Round-trip tests, component tests, e2e build/promote against the stub API.