Local Full-Stack Evidence
Date: 2026-05-05
Objective
Make the "first rebuild it local" requirement explicit.
The existing local smoke proves the non-Python platform surfaces can run together. This evidence contract is stricter: the local rebuild is not complete until the Python Query Engine, the Ingestion Worker, and one Agent/AI runtime response are observed with the rebuilt Studio API, Picasso, and Zweistein services.
What Was Added
scripts/local-full-stack-evidence.mjsLive-probe evidence collector and contract checker for the local full-stack rebuild.package.jsonscripts:local:full-stack:planlocal:full-stack:doctorlocal:full-stack:probelocal:full-stack:templatelocal:full-stack:collectlocal:full-stack:check
port:completion:*now includeslocal-full-stack-evidenceas a hard completion criterion.
Safety Rules
- It does not start servers.
- It does not build Docker images.
- It does not run migrations.
- It does not read or print env values.
local:full-stack:doctoris read-only and reports disk, Docker, Docker Compose, artifacts, Python runtime directories, Query Enginetorchimport, Ingestion Workerredisimport, HTTP probes, and observation flags.local:full-stack:probeis read-only and only reports current live state.local:full-stack:collectwrites evidence only when every live HTTP probe passes and the verifier explicitly confirms the manual observations.- It intentionally fails until real local full-stack evidence exists.
Commands
Print the evidence plan:
npm run local:full-stack:plan
Show the current blockers before attempting a local full-stack evidence run:
npm run local:full-stack:doctor
Probe the currently running local stack without writing evidence:
npm run local:full-stack:probe
Print a pending evidence template:
npm run local:full-stack:template
Write complete evidence only after live probes pass and the worker plus Agent/AI behavior were observed:
LOCAL_FULL_STACK_VERIFIER="Your Name" \
LOCAL_FULL_STACK_EVIDENCE_CONFIRM=1 \
LOCAL_INGESTION_WORKER_OBSERVED=1 \
LOCAL_AGENT_AI_OBSERVED=1 \
npm run local:full-stack:collect
Fail until a completed evidence file exists:
npm run local:full-stack:check
Evidence Contract
The completed evidence must live in a file named like:
docs/evidence/<timestamp>-local-full-stack.md
It must include:
# Local Full-Stack Runtime Verification
Status: complete
Target: local
Verifier:
Studio API HTTP 200: yes
Zweistein Server HTTP 200: yes
Zweistein Admin HTTP 200: yes
Zweistein Embedding Widget HTTP 200: yes
Picasso Houston HTTP 200: yes
Picasso Editor HTTP 200: yes
Picasso Widget HTTP 200: yes
Query Engine HTTP 200: yes
Ingestion Worker observed: yes
Agent/AI response observed: yes
Runtime status command: npm run legacy:runtime:status
Evidence collector command: npm run local:full-stack:collect
Live probe source: scripts/local-full-stack-evidence.mjs
Current Local Verification Evidence
npm run legacy:runtime:smoke:non-pythonproves the seven non-Python services can run together.npm run local:full-stack:planprints the stricter full-stack evidence workflow.npm run local:full-stack:doctornow combines local disk readiness, Docker CLI, Docker Compose, rebuilt artifacts, Python runtime directories, Query Enginetorchimport, Ingestion Workerredisimport, live HTTP probes, and manual observation flags into one read-only readiness check.npm run local:full-stack:probenow performs live HTTP checks for the seven non-Python URLs plus the Query Engine URL and fails while they are not all responding.npm run local:full-stack:templateprints a pending template and does not create a fake evidence file.npm run local:full-stack:collectrefuses to write evidence unless all live probes pass,LOCAL_FULL_STACK_VERIFIERis set,LOCAL_FULL_STACK_EVIDENCE_CONFIRM=1is set, and both manual observation flags are set.npm run local:full-stack:checkfails locally as expected while Python runtime and Agent/AI evidence are missing.- After the real Query Engine Docker build attempt,
npm run local:full-stack:doctorreports13 blocker(s): the current Mac is below the 20 GiB Python Docker build disk guard, Query Enginetorchimport still fails, Ingestion Workerredisimport still fails, the app HTTP probes are stopped, Query Engine HTTP is not responding, and the worker/Agent observation flags are not set.
Current Boundary
This does not replace the Hetzner Python gate.
It makes the local boundary honest: the local rebuild has strong non-Python proof, but the full local platform is still incomplete until the Python services and an Agent/AI response are observed in the same local rebuild context.