<feed xmlns='http://www.w3.org/2005/Atom'>
<title>somhairles-dream-fsharp.git/src/SomhairlesDream.Server/ArtifactRunCoordinator.fs, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/somhairles-dream-fsharp.git/atom?h=main</id>
<link rel='self' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/'/>
<updated>2026-09-21T04:53:57+00:00</updated>
<entry>
<title>fix(steps): failed/idle live entries no longer shadow on-disk step artifacts; running stays protected</title>
<updated>2026-09-21T04:53:57+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T04:53:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=c332e2efa767c76037540a3fa1c649c9f2e0498e'/>
<id>urn:sha1:c332e2efa767c76037540a3fa1c649c9f2e0498e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(boot): failed live attempt no longer shadows pre-published history; boot-default submit picks a fresh live run id</title>
<updated>2026-09-21T02:58:44+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T02:58:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=7a4e0b4677e0241ab19489ef40a462810f841415'/>
<id>urn:sha1:7a4e0b4677e0241ab19489ef40a462810f841415</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(boot): surface pre-published probe replay on landing page</title>
<updated>2026-09-21T02:14:24+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T02:14:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=958e24b0fd08e4bc92656964e832606dbf7d3fa3'/>
<id>urn:sha1:958e24b0fd08e4bc92656964e832606dbf7d3fa3</id>
<content type='text'>
- boot loads the completed run from /api/artifacts/manifest and renders its
  latest checkpoint with concrete build-review labels (no fake unknown-state
  wording); offline fallback still shows the honest placeholder
- artifact manifest/steps endpoints now fall back to disk when a completed
  run has no in-memory registry entry, keeping pre-published history browsable
  after a service restart (digest-verified, .glb-only / steps/ / logs/ rejected)
- driver: heritage flows pin heritage ids explicitly; new checks for the
  boot probe replay and its labels; 72/72 green with zero console errors
</content>
</entry>
<entry>
<title>feat(probe): YJ-01 real-probe 7-stage dataset + probe design branch in pipeline/CLI</title>
<updated>2026-09-21T01:27:28+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-21T01:27:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=07d6690b9b9de7db7debe25e8e3def5c0d68bb26'/>
<id>urn:sha1:07d6690b9b9de7db7debe25e8e3def5c0d68bb26</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Harden artifact serving: root-chain link validation, deterministic stream disposal</title>
<updated>2026-09-20T23:54:39+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T23:54:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=bba99bea934fe397b6aed59d3f33a5315799fa28'/>
<id>urn:sha1:bba99bea934fe397b6aed59d3f33a5315799fa28</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Secure artifact serving: manifest/checkpoint membership, hash validation, link rejection</title>
<updated>2026-09-20T23:37:51+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T23:37:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=56800fbbd4488db20abd4f44f0d39e48599be0ab'/>
<id>urn:sha1:56800fbbd4488db20abd4f44f0d39e48599be0ab</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(viewer): stream live pipeline GLBs into the browser viewport</title>
<updated>2026-09-20T17:18:53+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T17:18:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=0397c375acea763d3110163b045d259155ba2341'/>
<id>urn:sha1:0397c375acea763d3110163b045d259155ba2341</id>
<content type='text'>
Protocol: RunSnapshot gains CompletedSteps (accumulated from checkpoint
artifact paths, reset on start) so the frontend can tell when real
pipeline geometry exists. New coordinator method StepArtifact plus
GET /api/artifacts/steps serves steps/*.glb while a run is active (any
lifecycle status), traversal-guarded and .glb-only, so stages appear
without waiting for run completion.

Frontend: GLTFLoader loads the latest completed step into the viewport
group as soon as its checkpoint lands over SSE; replay placeholder
frames render only while no step artifacts exist. ?freeze=1 query param
stops rotation for deterministic screenshot verification. Three.js r160
and GLTFLoader (with BufferGeometryUtils) are vendored under public/
vendor with an import map and a window.THREE shim, replacing the CDN
UMD script; the ~1.4MB vendored three.js files are third-party
dependencies (MIT), not project assets.

Tests: store accumulation of completed artifact paths; steps endpoint
serves GLB during an active run, rejects traversal, 404s missing files.

Verified: dotnet build Debug+Release clean, 42/42 tests pass, Fable
compile clean, release server smoke serves index/vendor/steps endpoint.
</content>
</entry>
<entry>
<title>feat(pipeline): add runnable artifact pipeline increment</title>
<updated>2026-09-20T16:58:15+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-20T16:58:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/somhairles-dream-fsharp.git/commit/?id=7b29dbff7e43e87741476f47df17ad1582b16546'/>
<id>urn:sha1:7b29dbff7e43e87741476f47df17ad1582b16546</id>
<content type='text'>
[Change Nature]
- This commit adds the first runnable increment of the F# artifact
  pipeline: CLI, server, frontend bundle, stage fixture, and tests.
  It is feature work, not a bug fix.

[New Capability]
- CLI `run` executes the three-step Blender fixture through the process
  bridge and writes GLBs, step logs, events, and a manifest; `verify`
  validates a manifest without Blender.
- Server exposes run start, run-scoped SSE, artifact manifest/file
  routes, and serves the Fable frontend from its build output.
- Frontend starts runs, follows run-scoped SSE progress, and links the
  artifact manifest on completion.

[Implementation]
- Shared layer holds domain, run state, replay, and artifact contracts;
  Modeling holds the pipeline, 120s bridge timeout, and result-file
  protocol; stage/blender/fixture.py owns geometry in Python (bpy owns
  geometry, F# owns orchestration).
- Fable bundle is regenerated into public/ and copied by the server
  project; solution includes all projects with warnings-as-errors.
- README documents build, Fable, server, interpreter/env, fixture
  limitations, and current verification status.

[Impact]
- Verified: 40/40 solution tests pass; Release build 0 warnings/errors;
  real CLI run with bpy 5.0.1 produced 3 GLBs, 3 logs, and a
  verify-clean manifest; isolated-port server smoke flow succeeded.
- Not yet verified: browser end-to-end behavior and production
  fidelity. Artifacts and caches are gitignored.
</content>
</entry>
</feed>
