Skip to content

chore: promote dev to main (DAG self-review fixes) - #151

Merged
LeXwDeX merged 2 commits into
mainfrom
dev
Jul 30, 2026
Merged

chore: promote dev to main (DAG self-review fixes)#151
LeXwDeX merged 2 commits into
mainfrom
dev

Conversation

@LeXwDeX

@LeXwDeX LeXwDeX commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Summary

Promote dev to main: verified DAG self-review fixes with shared settlement gate (PR #150).

Contents

  • H1: validateAgainstSchema enforces JSON Schema type arrays; type:"null" enforced
  • B1: crash-recovered diff reviews re-enforce the review-result contract (verdict + fingerprint) instead of completing unvalidated capturedOutput
  • B3: numeric condition comparisons fail loudly on non-finite operands (no more silent condition_false cascades)
  • B4: scalar schema constraints enforced (min/max, length, pattern, item counts, additionalProperties:false); create/replan warn on inert keywords
  • B5: spawn pre-admission failures settle once, no duplicate guard-rejected NodeFailed
  • Structural: settleCapturedOutput is the single settlement decision shared by spawn and recovery

Verification (already green on dev @ 1c9d88e)

  • Typecheck ✅ · Unit Tests (linux) ✅ · E2E (linux) ✅ · E2E (windows) ✅ · CodeQL ✅
  • 303 dag tests pass locally, incl. 21 new regressions in dag-review-audit-regressions.test.ts

LeXwDeX and others added 2 commits July 30, 2026 17:16
…gate

Fixes verified out of the DAG self-review (workflow dag_04df6bfa6ffe):

- capture: enforce JSON Schema type arrays (H1 — typeof guard skipped
  validation entirely for ["string","null"]) plus scalar constraints
  (min/max, length, pattern, item counts, additionalProperties:false);
  warn at create/replan on keywords the subset validator ignores
- recovery: enforce the review-result contract on crash-recovered diff
  reviews (B1 — recovery bypassed spawn's completion gate, letting an
  unvalidated verdict/stale fingerprint through the deep-mode gate)
- eval: numeric comparisons fail loudly on non-finite operands instead
  of silently evaluating false and cascading condition_false skips (B3)
- spawn: pre-admission failures settle once and return an empty fiber
  instead of Effect.fail, removing the duplicate guard-rejected
  NodeFailed from loop's catchCause (B5)
- settlement converged: spawn and recovery both decide structured-output
  completion through capture.ts settleCapturedOutput, so the review
  contract cannot drift between the two paths again

Root cause of B1: validateReviewResult had exactly one call site (spawn)
while recovery re-settled captured output independently — two settlement
points, one contract.
fix(dag): close verified self-review findings with shared settlement gate
@LeXwDeX
LeXwDeX merged commit 292e5fe into main Jul 30, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant