Prose Map Driver
Prose Plans Become Map Runs
The map driver learned to turn prose into checked, durable fan-out specs.
3 milestones 12 tasks 28 agents
6 plan 10 execute 15 review
149k peak context
96k median execute
1h 47m total 6m 23s per task
7m 28s plan 46m 24s execute 21m 2s review
77 edits 738 commands
codex harness
This run taught map mode to accept an operator's prose request as the source for a fan-out. The work moved from a deterministic front door, through generated spec validation, into bounded repair, resume behavior, and documentation. Its own reviews kept finding the exact places where the invariant was still weak: support prompts had to be proven, terminal preflight rejection had to become repairable, and planner-composed rows still needed a stronger provenance check.
The current tree has since absorbed the original driver files into the pattern runtime, but the feature is still present. Map mode can write a generated spec, empirically check it against real repository data, retry rejected specs with diagnostics, and only then enter the ordinary map fan-out.
How this walkthrough is structured
Feature
What did the run build and ship?
Gantry now routes prose map sources through a generated spec authoring and validation loop before normal fan-out work begins.
Build
How did Gantry structure the work?
The run was cut as a front door, an empirical spec check, and a final repair pass, with milestone reviews driving each later tightening.
Milestone 1
Prose Planning Entry
4 tasks 11 agents 48m 13s wall time 149k peak context
The surviving entry behavior is documented in map mode: spec-shaped input must parse as a spec, while plain prose is routed through the map planning pass. The prompt and runtime now use the current write-map-spec name rather than the old path from this run, but the generated artifacts are still the map spec, worker preamble, and optional checkpoint prompt. The original smoke-test scaffolding has been refactored, yet the user-visible capability remains the same path into map fan-out.
This milestone carried the first working prose path without trying to prove every honesty rule at once. Its child sprints separated classification, planner output, resume, and smoke coverage, which made the feature small enough for fresh agents to build in order. The inner sprint gates stayed green, but the milestone review found that referenced support artifacts were not yet fully enforced. That review note became the handoff into the empirical check milestone.
Map Source Entry
1 agents 9m 3s wall time 97k peak context
The map spec parser still exposes the structural discriminator this sprint introduced. A non-comment assignment or section header makes the source spec-shaped, and only text without those declarations is treated as prose. Current driver documentation repeats that rule, so operators can predict the branch without relying on filenames or model judgment.
This sprint defined the map source contract before any planner work could depend on it. The task was narrow: classify an input as a ready spec or prose waiting for a planning pass, while malformed spec-like text remained a spec error. Its gate and review stayed green, so later sprints could consume that boundary instead of reopening startup semantics.
Planner Artifacts
2 agents 10m 1s wall time 149k peak context
The generated artifact contract still stands, though the prompt now lives in the bundled agent prompt tree under the write-map-spec name. That prompt tells the planner to author the machine rather than the work list, to use direct command syntax, and to reference support files through stable orchestration paths. The prompt catalog documents the same generated files and the current repair context placeholder.
This sprint added the prose planner pass after the source classifier had a pending-prose state to hand it. The brief kept the worker focused on the generated artifact contract: spec, worker preamble, optional checkpoint prompt, prompt lookup, and collision coverage. It passed cleanly, leaving resume and smoke coverage to prove the artifacts could be reused.
Spec Resume Flow
2 agents 10m 14s wall time 100k peak context
The modern map pattern still treats the operator source as the declared plan source and stores the generated spec under the orchestration directory. Resume proceeds from recorded artifacts rather than asking the planner again once the generated spec is accepted. Later pattern-runtime work changed the implementation surface, but the durable generated-spec handoff remains part of map mode.
This sprint made generated specs durable before end-to-end smoke relied on them. Its scope was identity and persistence: a prose source owns the run identity, while the produced spec is the artifact later fan-out work reads. The run facts show no recovery here, which matches a boundary that depended only on the prior source and artifact contracts.
Prose Smoke Check
2 agents 6m 53s wall time 101k peak context
The old smoke harness file from this sprint is no longer present, but its coverage purpose survives in current map and pattern tests. Map mode still has a stubbed, money-free route for proving generated specs can reach ordinary fan-out behavior. Malformed spec-shaped input also remains on the spec-error path rather than being silently reclassified as prose.
This sprint closed the milestone by proving the early path without spending model calls. The brief intentionally used stub planning and stub worker behavior so the agent could exercise the integration without adding the later honesty checks. Its green result showed the prose and hand-written spec paths could converge, while the review still left harder generated-spec validation for the next milestone.
Milestone 2
Spec Verification Pass
5 tasks 14 agents 35m 19s wall time 96k peak context
The core validation module still stands in the current tree. It runs the generated enumerator, validates real fields against templates and support files, rejects shell-dependent command assumptions, checks for static planner-authored row data, and probes gates against absent artifacts. Later work strengthened parts of this milestone, so the surviving feature is the combined checker rather than only the checks present at this intermediate boundary.
This milestone took the gap found by the first review and made generated specs prove themselves before workers could start. The sprints walked from real enumeration through template and support checks, command honesty, gate falsifiability, and integration into the prose path. All child units stayed green, but the milestone review found that rejection was still terminal and static work-list detection was too narrow. That finding forced the final milestone to add repair and stronger provenance.
Generated Spec Contract
2 agents 5m 53s wall time 87k peak context
The generated spec checker still begins by running the real map enumerator with the same slice arguments fan-out will use. Its accepted report carries actual units and observed field names, while rejection carries an operator-facing diagnostic. The map unit model still exposes the field map that later template and schema checks inspect.
This sprint created the reusable check entry point before any later validation could consume its report. It asked one agent to run the real enumerator in the clean worktree and return either ordered unit data or a concrete rejection. The sprint stayed green, giving the following checks a shared model rather than separate parsers.
Template Validation
2 agents 4m 19s wall time 80k peak context
The current checker still rejects unresolved or malformed placeholders in prompt, artifact, gate, skip-test, and checkpoint templates. It also verifies that the generated worker preamble exists and that a checkpoint prompt exists when the spec references one. The artifact placeholder is resolved through the same unit substitution behavior later used by the fan-out.
This sprint extended the contract from real rows into every generated template and referenced support prompt. The cut was small because enumeration had already produced the unit data it needed; the worker only had to prove substitutions and file existence from that data. It stayed green, so command honesty could build on a checker that already knew the generated spec was wired.
Honesty Guardrails
2 agents 5m 8s wall time 71k peak context
The checker still scans generated enumerator, gate, and skip-test commands for shell syntax that would not work under direct spawning. It allows an explicit shell program when that is intentionally named, while rejecting bare pipes, redirects, boolean chains, variables, and glob assumptions. It also preserves the older literal work-list rejection for obvious printers before deeper provenance checks run.
This sprint narrowed in on command shape and the invariant that the planner must not compose the roster. The brief separated direct command syntax from valid explicit shell invocation, letting one agent focus on early rejection rather than fan-out behavior. Its green result made the following gate probe run only after commands had passed the map execution contract.
Falsifiability Probe
2 agents 5m 19s wall time 84k peak context
Generated specs are still rejected when a build gate or skip-test passes for a unit whose artifact is absent. The checker fills the same command templates the map driver will later use and reports failures as generated-spec diagnostics rather than per-unit worker problems. That keeps a bad authority from being promoted into the fan-out ledger.
This sprint made the generated gate prove it could fail before any worker output existed. It consumed the earlier checker stages, so its worker only had to execute substituted gate and skip-test commands against an absent artifact and interpret the exit status. The unit stayed green, turning always-green validation commands into pre-fan-out defects.
Prose Path Preflight
2 agents 5m 31s wall time 96k peak context
The current map pattern has an explicit validate-map-spec step between writing the generated spec and entering the fan-out. A rejected spec branches back through the spec authoring loop rather than reaching unit workers. Hand-written specs still avoid the prose planner, preserving the existing map startup contract.
This sprint connected the completed checker to the prose path. Its boundary was the integration point: after planning writes the spec, the spec must pass before persistence and fan-out. It stayed green, but the milestone review recorded that invalid specs still stopped terminally, which meant the final milestone had to add a repair lifecycle instead of accepting a dead end.
Milestone 3
Repair and Final Coverage
3 tasks 9 agents 30m 3s wall time 119k peak context
The current map pattern now loops spec writing and validation under a repair rule before fan-out. The prompt receives the previous check diagnostic on repair attempts, and the prompt catalog documents durable repair state and accepted-spec promotion. The static provenance guard exists in code, though the run's own review warned that the architecture was not a complete proof against every encoded or composed helper-data shape.
This milestone finished the guarantees that the empirical pass had exposed but not completed. Its sprints added bounded generated-spec repair, strengthened provenance, and closed acceptance documentation. The child units stayed green, while the top-level review still noted a remaining bypass in the static-row guard. That caveat is part of the honest boundary for what this run left behind.
Generated Spec Repair
2 agents 8m 22s wall time 115k peak context
Map mode now retries rejected generated specs with the checker diagnostic supplied back to the spec-writing prompt. The bundled pattern declares a spec-writing loop before fan-out, and the prompt catalog describes the repair record and accepted-spec promotion. Once a generated spec has been accepted, the ordinary map fan-out consumes that artifact instead of rerunning the planner.
This sprint turned generated-spec failure from a terminal stop into a bounded lifecycle. It had to come before stronger provenance because later rejection diagnostics needed somewhere useful to go. The run facts show it passed without recovery, so the repair state became a stable dependency for the final checks.
Work-List Provenance
1 agents 8m 53s wall time 48k peak context
The current checker inspects the enumerator command text and planner-authored files reachable from it for complete static row data. It rejects generated specs that appear to replay a planner-authored work list instead of deriving rows from committed repository data. The code also follows referenced helper files, which extends the old literal-printer guard while leaving the documented caveat about clever laundering shapes.
This sprint attacked the remaining invariant gap: a planner should not hide a composed roster behind an executable shape. Because repair already existed, this unit could reject more generated specs without making the whole prose path a terminal dead end. It passed green, but the parent review later recorded that the guard was still pattern-based rather than a full provenance architecture.
Acceptance Docs
2 agents 4m 43s wall time 119k peak context
The documentation now explains when map mode treats a source as prose, what generated files the planner writes, and how rejected specs are retried. The prompt catalog and driver docs both describe the empirical validation before fan-out. Current smoke and unit tests continue to cover successful prose-to-spec flow, invalid generated specs, resume behavior, support artifacts, shell syntax, static rows, and gate falsifiability.
This sprint closed the run by exercising the full workflow and writing the operator-facing account of it. It was last because it consumed repair state, provenance verdicts, resume behavior, and the compatibility surface for hand-written specs. Its own gate and review stayed green, so the remaining limitation came from the milestone-level review rather than from a failing final unit.