0.53.0 · core 2026-07-14
Breaking Change
- Eliminated
.stelow/{date}/{hash}/index.jsonmirror entirely —stelow.jsonis now the single canonical source of truth. No mirrors, no write-through, no drift detection. All TUI consumers (muxy panel, herdr TUI, doctor, pulse) read directly fromstelow.json.
Removed
extensions/stelow/state.ts—updateWorkflowIndexJson()function (110+ lines).archiveWorkflowOnDisk()function.scanWorkflowDirs()rewritten to readstelow.jsoninstead of scanningindex.jsonfiles.writeTracking()no longer iterates over workflows to mirror state.extensions/stelow/start.ts—cmdStartno longer writesindex.json(onlystelow.json).extensions/stelow/commands.ts— 3 sites that calledupdateWorkflowIndexJsonafterarchiveWorkflowOnDisk.extensions/stelow/index.ts— agent-end hook no longer callsupdateWorkflowIndexJson.extensions/stelow/doctor.ts—readWorkflowIndexSnapshot()removed. Drift detection removed (single source = no drift possible). Zombie detection now readsstelow.jsoninstead of scanningindex.jsonfiles.extensions/stelow/pulse/pulse.sh— existence check now looks forstelow.jsonentry instead of per-workflowindex.json.skills/stelow-product-orchestrator/stages/setup.md— workflow existence checks + resume workflow logic now readsstelow.jsondirectly.integrations/muxy/stelow/src/panel/data.js—scanArtifactDirs()rewritten to readstelow.jsonworkflow entries directly.integrations/herdr/stelow/src/main.rs—load_index_json()removed.WorkflowEntrystruct now deserializesdraftContentandscopes[]directly fromstelow.json#workflows[].i.tests/unit/scan-workflow-dirs.test.ts— deleted (function now reads from stelow.json).tests/unit/config-symmetry.test.ts— rewritten (removed TS write-through tests).tests/unit/state-real.test.ts— removedreconcileTracking/archiveWorkflowOnDiskblocks.tests/unit/doctor.test.ts— removeddetects missing index and global mismatchtest.
Architecture
Before v0.53.0:
stelow.json index.json (per workflow)
────────── ────────────────────
config (canonical) →→ config (mirror)
scopes (canonical) →→ scopes (mirror)
status (canonical) →→ status (mirror)
... draft (canonical here only!)
Two sources, must be kept in sync via write-through loop, drift detection.
After v0.53.0:
stelow.json
──────────
config ✓
scopes ✓
status ✓
draftContent ✓
phases ✓
artifacts ✓
...all in one place
One source. No sync. No drift. KISS / DRY / CoC compliant.
Migration
- In-flight workflows: Nothing to do.
stelow.jsonalready has all the data. Theindex.jsonfile becomes orphaned but is harmless (no code reads it). - Integrations (muxy, herdr): Updated automatically (this release). No user action.
- Custom scripts reading
index.json: Update to readstelow.json#workflows[].ifor the workflow of interest (bynameordirHash). - Filesystem artifacts:
.stelow/{date}/{hash}/directory layout unchanged. Plans, interfaces, critiques, scopes still live there. Only theindex.jsonfile inside is gone.
Tests
- 806 tests passing (was 835 in v0.52.1). Net change: -29 (removed tests for eliminated code paths).