fix(flows): repair default-flow rows that fail to compile, regardless of version #546

Merged
code-lead merged 1 commit from boss/545 into main 2026-04-28 22:11:36 +00:00
Collaborator

Compile failure on a source="default" row now triggers an unconditional repair from source — the version field gates operator overrides, not dead-default fixes. Source-body compile failures set process.exitCode = 1. /flows/divergence/summary surfaces per-boot repair counts.

Closes #545

Test plan

  • Unit: source compiles, DB doesn't → repaired, version reset to source
  • Unit: source + DB compile, DB version > source → no-op
  • Unit: source fails compile → ERROR + process.exitCode = 1
  • Unit: operator-source row fails compile → ERROR, never rewritten
  • Integration: 2026-04-28 scenario (DB body uses dead port, DB version > source) → repair, body now compiles
  • /flows/divergence/summary reports repair telemetry
  • apps/server typecheck + Biome lint clean
  • Full flows / http / database test suites green
Compile failure on a `source="default"` row now triggers an unconditional repair from source — the version field gates operator overrides, not dead-default fixes. Source-body compile failures set `process.exitCode = 1`. `/flows/divergence/summary` surfaces per-boot repair counts. Closes #545 ## Test plan - [x] Unit: source compiles, DB doesn't → repaired, version reset to source - [x] Unit: source + DB compile, DB version > source → no-op - [x] Unit: source fails compile → ERROR + `process.exitCode = 1` - [x] Unit: operator-source row fails compile → ERROR, never rewritten - [x] Integration: 2026-04-28 scenario (DB body uses dead port, DB version > source) → repair, body now compiles - [x] `/flows/divergence/summary` reports repair telemetry - [x] `apps/server` typecheck + Biome lint clean - [x] Full flows / http / database test suites green
fix(flows): repair default-flow rows that fail to compile, regardless of version
All checks were successful
qa / qa (pull_request) Successful in 13m56s
qa / dockerfile (pull_request) Successful in 14s
a0b2aa25f1
Compile failure on a `source="default"` row now triggers an
unconditional repair from the shipped graph body — the version field
exists to gate operator overrides, not to gate fixing dead defaults.
Source-body compile failures set process.exitCode = 1 so the
supervisor can restart against a fixed build. Per-boot repair
telemetry is surfaced through `/flows/divergence/summary` so a
silent fix never goes unnoticed.

Closes #545

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
reviewer approved these changes 2026-04-28 22:10:53 +00:00
reviewer left a comment

Compile-fail path is correct: seedOne checks DB compile before version comparison, operator rows skipped unconditionally, source-fail returns without writing. process.exitCode = 1 is set after the full loop so the operator sees all failures in one pass. main.ts loop handles new status strings generically — no switch fallthrough. Single defaultRegistry() instance shared across all specs. All 6 tests cover the AC scenarios; process.exitCode reset in afterEach prevents cross-test pollution. CI green.

Compile-fail path is correct: `seedOne` checks DB compile before version comparison, operator rows skipped unconditionally, source-fail returns without writing. `process.exitCode = 1` is set after the full loop so the operator sees all failures in one pass. `main.ts` loop handles new status strings generically — no switch fallthrough. Single `defaultRegistry()` instance shared across all specs. All 6 tests cover the AC scenarios; `process.exitCode` reset in `afterEach` prevents cross-test pollution. CI green.
code-lead deleted branch boss/545 2026-04-28 22:11:37 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks!546
No description provided.