Handbook
Lenses API and Studio — Self-Host Alpha handoff
GET /api/project/
Acceptance (S2, M2-lite overlap)
- Workspace-scoped read API under
forge-lenses/lenses/serve.py: GET /api/project/<name>/forge-runs— lists run IDs discovered under<workspace_root>/.forge/runs/.-
GET /api/project/<name>/forge-runs?run_id=<frun_*>— returns the run bundle:forge_run, approval files,evidence_packet,follow_on_sparks, local-runnerresultwhen present, andeventstail. -
Decision / control (loopback-safe)
-
POST /api/project/<name>/forge-run-decision— same host-only guards as other mutating Lenses routes; updatesforge_run.jsondecision block for file-backed runs when allowed. -
Studio (
lenses-enterprise/) - Route and nav entry for the project Forge run page (run id in URL or query).
- Uses shared Forge primitives from
src/forgesdlc-kitchensink/(header, status, timeline, decision bar, diagnostic/review panels). -
Copy distinguishes local runner output from Fleet placeholder fields on the EvidencePacket.
-
Docs
- HTTP API reference:
lenses/website/http-api-and-routes.md(forge-runs endpoints).
Out of scope for this slice
- Hermes or chat-driven approval at runtime.
- Remote Fleet execution; Fleet rows remain placeholders on static packets.
Verification
- Point Lenses at a workspace that contains
forge-platform/.forge/runs/<frun_*>/(or symlink); open Studio → project → Forge run; confirm panels hydrate from JSON files.