From b8e49e1b8b57393f47bcc9a29664a7f509584ba2 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Mon, 21 Sep 2026 10:15:07 +0800 Subject: docs(readme): probe design branch, --design CLI flag, boot replay deployment notes --- README.md | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 4c23116..bc96f29 100644 --- a/README.md +++ b/README.md @@ -113,16 +113,37 @@ Environment variables (all optional): - `SOMHAIRLES_ARTIFACT_ROOT` — artifact output root (default `.artifacts`) - `SOMHAIRLES_STAGE_ROOT` — stage directory containing `blender/fixture.py` - (default `stage`) -- `SOMHAIRLES_BPYTHON` — Python interpreter used to run the fixture - (default `python3`) + and `blender/probe.py` (default `stage`) +- `SOMHAIRLES_BPYTHON` — Python interpreter used to run those blender + scripts; must be able to `import bpy` (default `python3`) + +### Probe design branch + +The real-probe dataset lives alongside the heritage fixture: steps +`probe-01-bus` … `probe-07-livery` are defined in +`src/SomhairlesDream.Modeling/Definitions.fs` (`Design.probeSteps`) and +rendered by `stage/blender/probe.py` (7 cumulative bpy exports, clay until +`probe-07-livery` applies the livery pass). Steps are selected by project id +prefix: any `probe-…` project id resolves to the probe design both in the +server coordinator and in the CLI (`run --design probe` accepts/uses the +probe id defaults), while all other project ids keep the heritage design. + +The public landing page boots into a pre-published probe run +(`probe-001 / run-probe-real-2`): after startup the frontend fetches +`GET /api/artifacts/manifest` for that run and renders its latest +checkpoint with 构建-重演 labels. Serving works for completed runs that are +no longer in the in-memory run registry: `GET /api/artifacts/manifest` and +`GET /api/artifacts/steps` fall back to the on-disk verified manifest +(integrity checks unchanged; unknown/offline environments stay on the honest +placeholder idle state). To publish a fresh probe run, run the pipeline +against the artifact root the server reads and a new run id. Routes used by the frontend: `POST /api/runs/start`, `GET /api/runs/events?projectId=...&runId=...` (run-scoped SSE), `GET /api/artifacts/manifest`, `GET /api/artifacts/file`, and `GET /api/artifacts/steps?projectId=...&runId=...&path=steps/.glb` -(serve a step GLB while a run is still active; `.glb` files under `steps/` -only, traversal-guarded). Artifact serving is integrity-checked: `file` +(serve a step GLB for an active or completed run; `.glb` files under +`steps/` only, traversal-guarded). Artifact serving is integrity-checked: `file` serves only paths published in the verified run manifest (logs, the manifest itself, and stray files are never exposed), `steps` serves only checkpointed GLBs (manifest members for completed runs), and every served @@ -148,7 +169,9 @@ dotnet run --project src/SomhairlesDream.Cli -- verify ``` `run` options: `--project-id`, `--run-id`, `--base-id`, `--target-id`, -`--output-root`, `--stage-root`, `--python`, `--render`. `SOMHAIRLES_BPYTHON` +`--output-root`, `--stage-root`, `--python`, `--render`, +`--design heritage|probe` (probe selects the real-probe design; ids still at +the heritage defaults are swapped to the probe defaults). `SOMHAIRLES_BPYTHON` sets the default interpreter. Exit codes: `0` success, `2` usage, `3` bridge failure, `4` pipeline/verify failure. On success it prints the manifest path. -- cgit v1.2.3