diff --git a/roadmap.md b/roadmap.md index 24582db3..7cab9089 100644 --- a/roadmap.md +++ b/roadmap.md @@ -149,6 +149,40 @@ category's pass rate stops improving under the repair loop. Exit: a measured pass rate per category, with the failure taxonomy Phase 0 calls for. +Measured (width equation, the bootstrap order's first category): the seam +(`crates/layout/src/width.rs` -- `WidthInputs`/`WidthOutputs`/`WidthResolver`) isolates +CSS 2.1 10.3.3's auto-margin balancing and over-constraint resolution behind one +plain-data function, depending on neither `dom` nor Stylo, so a candidate crate compiles +against it alone (`crates/generation` -- `candidate_crate::write`). +`bin/ground_truth_cache.rs` caches the 227-case corpus's engine dumps to a gitignored +directory; every step after that reads the cache and never starts a browser +(`docs/infrastructure.md` -> "Verification tier"). A hand-written discrimination proof +(`bin/generation_loop.rs`) ran four candidates through the permanent regression set gate +(`roadmap.md` -> "Re-verify"): the baseline hand rule 94/227 passed (seeding the +regression set, since nothing had been admitted before), a candidate implementing auto +margins and direction-aware over-constraint resolution 112/227 and admitted, and two +seeded-wrong candidates -- one that centers every box regardless of whether its margins +are actually `auto`, one that recalculates the wrong margin under over-constraint -- 0/227 +each and rejected, both losing every one of the 94 previously-passing cases. The +admitted candidate's gain over baseline is exactly the `MarginAutoLeft` (0/10 to 10/10) +and `MarginAutoBoth` (0/8 to 8/8) categories; `MarginAutoRight` and `OverConstrained` +were already correct under baseline by construction (the categories' own recipes put +the auto or over-constrained margin on the side whose used value the corpus's geometry +never observes). Percentage resolution, margin collapsing and min/max clamping +categories remain at 0 passed, outside this seam's scope. Provenance record: +`corpus/candidates/provenance/correct.provenance.json` (gitignored, not committed -- +regenerate with `bin/generation_loop.rs`). + +A small laptop-model run (not the rig; `GENERA_MODEL`, an OpenAI-compatible endpoint, +`model::RemoteCandidateSource`) against the same seam and gate did not produce a +candidate: the endpoint answers `GET /v1/models` (reporting the target model as +`"loaded"`) but every `POST /v1/chat/completions` attempted -- including a one-word, +`max_tokens: 10` request sent directly, outside this project's own client -- did not +return within 120 seconds, and three retries with backoff each exhausted a 600-second +timeout before `bin/real_model_run.rs` gave up. Router-level reachability and +completion-level responsiveness are different failure modes, and only the first one +held. + Throughout: the determinism check runs from the first generated algorithm, and the constraint space is complete even though nothing caches yet.