|
| 1 | +# Supervisory generation-control gaps |
| 2 | + |
| 3 | +Status: non-blocking follow-ups to the supervisory-control implementation in PR #123. |
| 4 | + |
| 5 | +The main concept is working: a synthesized supervisor controls compile, stage, verify, |
| 6 | +promote, recovery, and abstention; strict YAML compiles to the existing JSON plan IR; |
| 7 | +an independent evaluator checks the generated bytes; and tested failures preserve the |
| 8 | +previous artifact. The deterministic evaluation and CI require no model calls. |
| 9 | + |
| 10 | +These items are hardening or measurement improvements, not merge blockers. |
| 11 | + |
| 12 | +## Higher-priority hardening |
| 13 | + |
| 14 | +1. **Crash-durable promotion recovery.** Promotion has in-process rollback, but there is |
| 15 | + no durable journal spanning a process or machine crash between rename, state, and |
| 16 | + final-receipt writes. A future change should add a small write-ahead promotion record |
| 17 | + and recovery test matrix. |
| 18 | +2. **Stronger replay closure.** Stored receipts recheck the decision chain and released |
| 19 | + output. They could additionally bind and revalidate every retained lifecycle artifact, |
| 20 | + including the compiled plan, reference output, staged output, and engine state. |
| 21 | +3. **Narrow schema TOCTOU exposure.** Freeze schema bytes once and pass that immutable |
| 22 | + value through staging and verification rather than reopening the source path at later |
| 23 | + phases. |
| 24 | +4. **Pre-materialization resource bounds.** Reject obviously oversized finite products |
| 25 | + from their cardinality before expanding rows or compiling a plan. |
| 26 | + |
| 27 | +## Lower-priority completeness |
| 28 | + |
| 29 | +5. Preserve exact integer condition comparisons above JavaScript's safe-integer range; |
| 30 | + the current condition evaluator uses floating-point numeric comparison. |
| 31 | +6. Reject additional ambiguous YAML scalar spellings if interoperability demands a |
| 32 | + narrower lexical format. |
| 33 | +7. Increase common-mode independence between the compiler and reference evaluator by |
| 34 | + splitting any remaining shared low-level expansion helpers. |
| 35 | +8. Add an explicit direct-spec order assertion. Full byte comparison already detects |
| 36 | + ordering differences, but the source language does not expose order as an assertion. |
| 37 | +9. Harden artifact-path handling against concurrent symlink replacement and other |
| 38 | + filesystem races beyond the current path and staging checks. |
| 39 | +10. Expand the Pareto report with compiled-plan bytes, timing, and mutation-coverage |
| 40 | + metrics if those measurements become useful for selecting later AI candidates. |
| 41 | + |
| 42 | +## Explicit boundaries |
| 43 | + |
| 44 | +- The supervisor cannot infer incorrectly approved or unstated intent; external approval |
| 45 | + or a task oracle remains necessary. |
| 46 | +- The current proof is for the declared finite-state model and tested runtime boundary, |
| 47 | + not a claim against arbitrary operating-system, hardware, or privileged-adversary faults. |
| 48 | +- The deterministic comparison establishes correctness and interface size only. It does |
| 49 | + not establish model-token or cost savings without a later controlled AI evaluation. |
| 50 | + |
0 commit comments