Skip to content

Phase 10 — Walking Skeleton

Defined 2026-08-24 at the goal reset (plan.md). Serves Goal B (backbone maturity): a clean clone walks end-to-end on real accounts, scripted and machine-checkable, with the demo scaffolding deleted.

Why first

Every later phase verifies against this walk. Phase 9's fix avalanche (~30 integration-seam issues) came from verifying units while no automated end-to-end walk existed; this phase makes the walk the platform's permanent verification spine before the showcase work begins.

Scope — the demo-purge sequence (epic #895)

In dependency order; all issues already specified:

Order Issue What Repo
1 #889 First-class environment bootstrap (org/admin/roles via CL_BOOTSTRAP_ADMIN_*, compose one-shot, RLS-guarded, idempotent) — replaces demo seeding backbone
2 #890 scripts/smoke_e2e.py real-journey walk (bootstrap → boundaries → real ingest of the reference raster → queued compute → assert); rewires sdk-smoke.yml off demo.py backbone
3 #892 Delete the demo layer whole (seed_demo.py, demo.py, demo_data/, CL_SEED_DEMO/CL_DEMO_USER_PASSWORD, lifespan seeding, demotion filter) backbone
4 #894 Docs rewrite to the persistent-users walk (MVP slice, DEPLOYMENT, RUNBOOK, quickstarts) backbone
4 ui#120 Remove demo onboarding wiring (banner, tour, demo creds) UI
#893 Owner-gated attended prod cleanup (acme-demo rows, MinIO sweep) — not on the critical path backbone

Also scheduled in this phase's window (phase-independent ops): #954 — rotate the leaked prod credentials.

Notes for the build

  • These issue bodies were written 2026-08-13, before the goal reset — run the pre-dispatch premise check (grep named symbols against current src/, check sibling closing PRs) and post corrections on the issue before dispatching.
  • The coastal walk debt carried from Phase 9 (deploy + per-org POST /v1/impact-functions/seed + first coastal 3×3 grid) rides the first post-#890 release, proven by the new walk.
  • After #890 lands, sdk-smoke.yml becomes the walking-skeleton run: dispatch it at wave/phase boundaries (~6.5 min/run), not per PR — see the CI model in CLAUDE.md.

Exit criteria

  1. From a clean clone: docker compose up + bootstrap env vars + scripts/smoke_e2e.py completes the full journey with exit 0.
  2. sdk-smoke.yml is green running that walk (no demo.py, no SEED_READY sentinel).
  3. The demo layer is gone from the codebase and the docs describe only the real walk.