Home

boring / v2

publicBoring-Software-Inc/v2
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

fix(core): gates must see failures — all-failing gate no longer verdicts pass

4 months ago

b221093
Authored
grim7/12/2026, 12:18:50 AM
live-test surprise #2: a gate whose feeding rules ALL fail never ran (rule→gate
edges default when:pass, so nothing conducted the gate), never fired block, and
the run derived verdict pass. the default gate only blocked because sibling
passing rules opened it — single-rule or all-fail graphs passed silently.

- executor: a gate runs once ≥1 source node has settled, aggregating source
  outcomes; edge when-conduction no longer gates gate execution (still governs
  rule→action and gate→action edges)
- tests: single-fail→block, all-fail→block, exhaustive property (derived shape,
  any ≥1 failing rule never verdicts pass); editor-roundtrip fixture re-passes
- validate.ts unchanged (same graphs well-formed); contracts doc synced
- DECISIONS: step-6 DAG-semantics entry amended with the live evidence

checks: biome clean · 11/11 typecheck · boundaries ok · 129 tests, 0 fail

Parent3ccfc9a

4 files changed
  • DECISIONS.md+14−0
  • packages/contracts/src/workflow.ts+6−2
  • packages/core/src/workflow/executor.ts+19−1
  • packages/core/src/workflow/workflow.test.ts+92−0