Forge Platform

Self-Host Alpha close assay (prompt 28)

Post-implementation closure checklist. Ready for selfhost-alpha implementation is satisfied when all items below are true.

Gates

Gate Evidence
M1 static chain sprints/selfhost-alpha/samples/ + validate_selfhost_chain.py green via check_foundation
Local runner contract schemas/local_runner_*.v1.schema.json, scripts/selfhost_runner.py allowlist + approval gate + events.ndjson
Run store docs/selfhost-run-store.md; layout under .forge/runs/<frun_*>/
Evidence import scripts/selfhost_import_evidence.py merges LocalRunnerResult into EvidencePacket / ForgeRun
Lenses API + Studio page + docs (lenses-selfhost-handoff.md, http-api-and-routes.md)
E2E vertical-demo.md — foundation run + gap-register run
Roadmap SELFHOST-ALPHA called out in roadmap / milestone docs; M2-lenses-control-plane/charge.md scopes M2-lite vs SELFHOST

Assay answers (short)

  1. ForgeRun from sample — Yes: sprints/selfhost-alpha/samples and fixtures under fixtures/frun_*.
  2. Full chain representation — Yes: static JSON set + README; LCDL/Fleet placeholders explicit.
  3. Lenses ingest — Yes: forge-runs list/read + Studio UI.
  4. Safe local without Fleet — Yes: allowlisted actions only; no raw shell.
  5. Whitelisted EvidencePacket — Yes: importer updates packet + pointers.
  6. Human approval — Yes: forge.approval_request.v1 must be approved and gate matching action.
  7. Sparks from evidence — Yes: sample follow_on_sparks; gap-run sparks for Architecture/BA; importer spark on import.
  8. Alpha out of scope — Hermes automation, arbitrary repo writes, non-allowlisted commands.

Recommendation

Manual self-hosting available now for foundation checks and gap-register generation on a local forge-platform tree with Lenses visibility.