Reference Documentation Build
Source Built Reference
A generated reference dataset became the public documentation surface.
4 milestones 22 tasks 48 agents
5 plan 24 execute 26 review 1 fix
240k peak context
200k median execute
32h 11m total 25m 15s per task
7h 13m execute 2h 17m review
480 edits 1.9k commands
claude harness
322.3M tokens in 2M tokens out
$280.01 nominal cost
This run turned Gantry's own registries, prompt files, pattern files, and operator vocabularies into the material for a public reference section. The plan had a large shape, but its decomposition kept the risk local: first make the command line describable as data, then export every source-owned inventory, then add the vocabulary that needed mirrored descriptions, then teach the Rails site to render the committed dataset.
The durable result is not just a set of pages. The current tree still carries the exporter, the committed dataset, the web copy, the Rails reader and catalog, and tests that compare the copies and walk the dataset-backed pages. Some web paths have since moved under a docs naming layer, but the reference model and route contract still serve the same source-derived section.
How this walkthrough is structured
Feature
What did the run build and ship?
Gantry still ships a generated reference dataset and a public section that renders command, configuration, harness, tool, pattern, prompt, menu, stop, and journal facts from source-owned data.
Build
How did Gantry structure the work?
The run cut a broad documentation plan into source extraction, dataset proof, vocabulary completion, and web publication, with the hardest stress concentrated where generated facts first met the Rails page surface.
Milestone 1
CLI Specification Table
5 tasks 13 agents 3h 4m wall time 223k peak context $57.04 nominal cost
The command surface is still represented by a specification module that parser code and reference export code can read. Usage fixtures remain in the tree, and command dispatch still consults the table rather than a separate prose-only inventory. Later edits changed some surrounding code, but the command facts are still data.
This milestone carried the only deep refactor before the exporter could exist. Its boundary was the command line itself: preserve every accepted spelling and every line of usage while moving the facts into a declarative table. The top-level gate stayed green, so the cut was small enough for the child sprints to prove behaviour before any downstream page leaned on it.
Pin Current Usage
2 agents 26m 45s wall time 56k peak context 12.3k tokens out $1.57 nominal cost
The usage fixtures still exist under the test fixture directory and continue to describe the compiled feature combinations. Their value is as a guardrail: a command wording change now has to be explicit. The feature is mostly test infrastructure, but it is still present.
This sprint froze the current usage output before the refactor touched production behavior. A fresh worker only had to capture and assert the existing text, which made later changes measurable instead of interpretive. The gates stayed green, giving the milestone a byte-level baseline for every later step.
Verb Rows and Dispatch
2 agents 31m wall time 148k peak context 60.6k tokens out $6.24 nominal cost
Verb rows remain in the CLI specification module with canonical names, aliases, visibility, availability, and dispatch identity. The current command lookup still resolves a bare first argument through that specification. The exported reference data can therefore list verbs without scraping help text.
This sprint introduced the specification module and limited itself to verb identity and dispatch. That was a good clean-context unit because each row could be checked against one accepted command spelling and its aliases. The run facts show no repair pressure here, so the parser contract held while the table took shape.
Flag Rows
2 agents 39m 40s wall time 223k peak context 115.2k tokens out $13.89 nominal cost
Flag rows still live beside the verb rows and carry the metadata the exporter and usage renderer need. The tests still have fixture-backed usage output to catch accidental wording or availability drift. The flag inventory is no longer a hand-maintained list.
This sprint moved the entry point's flag spellings and metadata into the same table model. The brief made the boundary concrete: accepted spellings, value shape, ownership by parsing site, and visible ordering. It stayed inside behaviour preservation, so the worker could prove agreement without redesigning parsing.
Unify Flag Parsers
2 agents 35m 43s wall time 196k peak context 71.9k tokens out $11.87 nominal cost
The command code still routes flag recognition through table-owned spellings for the main parsing surfaces. Harness and driver selections remain part of the same command specification contract that the reference exporter reads. That keeps hidden or feature-gated command facts available without promoting them in public help.
This sprint finished the parser agreement work by bringing the remaining driver and harness flag sites under the table. Its scope was recognition rather than display, so a fresh worker could focus on accepted spellings and ownership without touching usage text. The boundary stayed green.
Unified Usage Text
2 agents 22m 12s wall time 222k peak context 58.9k tokens out $12.21 nominal cost
Usage text is still generated from structured command facts rather than duplicated constants. The fixture set continues to check the emitted help for the supported build configurations. The public command documentation can rely on the same rows the binary uses.
This sprint collapsed the handwritten usage constants into a renderer over the table. It was sequenced last because every row of command and flag data had to exist before output could be assembled from it. The existing fixtures made the boundary exact, and the sprint passed without a repair branch.
Milestone 2
Inventory Extraction
4 tasks 11 agents 1h 56m wall time 216k peak context $50.76 nominal cost
The exporter and committed dataset still stand in the root tree. The reference dataset module names the inventory contract and exports settings, environment variables, command rows, harnesses, roles, stages, and MCP tools from source-owned declarations. The root drift test still treats the committed dataset as generated output.
This milestone built the exporter and filled it with the inventories that already had source registries. Its decomposition kept the contract first, then added settings, command rows, and harness surfaces as separate loads on that contract. The milestone stayed green because each child sprint could regenerate the same dataset and prove drift locally.
Exporter and Drift Detection
2 agents 29m 46s wall time 216k peak context 77.7k tokens out $15.73 nominal cost
The development-only export command is still documented in the source-side dataset module and in the maintenance loop. The committed root dataset remains in the reference data directory. Tests still compare generated bytes against the committed copy and name the regeneration path when they disagree.
This sprint created the reference export verb and the committed output file before the individual inventories grew large. That made determinism and drift detection the first contract, not a cleanup after content existed. The worker had a crisp proof target: same source, same dataset, readable failure when the file drifted.
Configuration Settings Inventory
2 agents 12m 49s wall time 84k peak context 24.1k tokens out $3.18 nominal cost
The dataset module still derives configuration rows from the settings catalog, including key paths, defaults, value kinds, precedence, environment binding, and write behavior. The current site renders those rows on the configuration page. Later documentation can link to that page instead of copying the roster.
This sprint added configuration settings as source-derived rows. The brief constrained it to the existing settings schema, so the worker did not need to restate documentation prose. The boundary was strong because a missing setting or stale field could be found mechanically.
CLI Surface Inventory
2 agents 25m 16s wall time 210k peak context 82k tokens out $13.11 nominal cost
The reference dataset still exports command verbs and flags from the CLI specification module. The web command page reads those inventories and marks build availability from the exported facts. The same table therefore feeds parsing, usage rendering, and documentation.
This sprint consumed the table made by the previous milestone and exported command facts. Its work was intentionally downstream: prove the table can serve another reader without changing the binary. The run stayed green because the command refactor had already separated accepted behavior from presentation.
Environment and Harness Surface
2 agents 26m 36s wall time 205k peak context 81.2k tokens out $11.30 nominal cost
Harness rows, role rows, stage rows, and environment variable rows still come from the source modules that use them at runtime. The exporter expands harness-specific environment keys from the registry instead of maintaining a separate list. The website still has pages that render those inventories from the app copy.
This sprint gathered the harness registry, roles, stage mapping, and environment surface into the dataset. The cut was right-sized because each fact already belonged to a registry or settings binding. The child sprint closed the milestone without recorded repair pressure.
Milestone 3
Vocabulary Documentation
6 tasks 14 agents 2h 52m wall time 240k peak context $63.85 nominal cost
The current dataset module still includes bundled patterns, bundled prompts, registry tiers, menu rows, keybinding groups, handover vocabulary, and journal event vocabulary. The vocabulary module still holds description tables guarded by exhaustive matches. Documentation pins and the maintenance loop also remain in the tree.
This milestone completed the dataset with file-backed inventories and closed vocabularies. It was broader than the registry pass because patterns, prompts, menus, and enum descriptions needed new extraction or mirrored tables. Most child sprints stayed green; the headless menu extraction sprint recorded an execute failure before a later gate accepted the result, locating the awkward boundary around terminal-free TUI data.
Patterns Inventory
2 agents 18m 50s wall time 148k peak context 48.7k tokens out $6.38 nominal cost
Bundled pattern rows still come from the compiled pattern registry. The exporter preserves parameters, tier information, parse state, and ordered segments for each file. The public pattern pages can therefore show the pattern text as source-owned content.
This sprint added bundled patterns as dataset rows with their source text split into comment and code segments. That was a narrow extraction unit: it read the built-in pattern registry and proved the exported segments could reproduce the file. The clean boundary gave the later site a rendering format without asking Rails to parse pattern files.
Prompt Inventory
2 agents 24m 59s wall time 159k peak context 67.8k tokens out $9.70 nominal cost
The prompt catalog still exists, and the exporter still carries bundled prompt rows from the prompt tree. The current docs retain the authored prompt catalog while the reference dataset provides the file-backed inventory. Prompt pages on the site can show the exact text agents receive.
This sprint did the same source extraction for bundled agent prompts. The brief kept authored descriptions out of the dataset and asked for file facts: identity, role, stage, full Markdown, and override order. The gate stayed green, so prompt discovery became a generated inventory without changing prompt resolution.
UI Configuration Extraction
1 agents 1m 40s wall time
Menu and keybinding inventories still appear in the dataset module, and the TUI menu model exposes rows that can be read without opening a terminal screen. The website's menus page still groups key actions as the help overlay does. Some original test lines have since been rewritten, but the headless inventory surface remains.
This sprint asked for menu rows and keybindings without depending on a terminal. That was the first root extraction unit to push against runtime assumptions, and the run facts record a failed execute attempt before the gate accepted the final work. The stress fits the boundary: turning live TUI structures into headless inventory required separating registry construction from display state.
Reference Vocabulary
2 agents 28m 44s wall time 213k peak context 80.4k tokens out $10.01 nominal cost
The reference vocabulary module still exports handover sets with tokens, labels, descriptions, and notes. Its tables are still written as exhaustive matches over the source enums. The run-stop page renders that generated vocabulary rather than keeping a second explanation of statuses and choices.
This sprint introduced mirrored descriptions for the handover vocabulary an operator sees when a run stops or asks a question. The brief made the manual prose accountable by requiring exhaustive enum matches. The worker could focus on naming existing values and describing them, while the compiler guarded future additions.
Event Vocabulary Catalog
2 agents 25m 15s wall time 200k peak context 74k tokens out $10.09 nominal cost
Journal event vocabulary still comes from the source types and serialization names. The dataset carries the event families with descriptions for readers building on the run stream. The website's events page renders those rows from the same app-side dataset copy.
This sprint extended the same mirrored-table pattern to run journal events, pattern events, and step phases. It was a contained vocabulary unit because the brief asked for wire names and meanings, not payload schemas. The run stayed green, which fits a repeatable pattern after the handover vocabulary proved the approach.
Documentation Maintenance
2 agents 39m 34s wall time 240k peak context 81.3k tokens out $15.43 nominal cost
The development guide still documents the reference dataset, regeneration command, web sync, and drift gates. The command, prompt, and harness documents retain containment checks against source-owned inventories. That keeps narrative documentation connected to the same facts the public reference section renders.
This sprint closed the root side by pinning narrative documents against generated inventories and documenting the maintenance loop. Its boundary was documentation correctness, not new product behavior. It stayed green because the exporter already supplied the rows the pins needed.
Milestone 4
Reference Publication
7 tasks 21 agents 4h 20m wall time 230k peak context $93.15 nominal cost
The public site still serves the reference section from the committed app copy of the dataset. Later file names moved under a docs-oriented layer, but the route, catalog, dataset reader, helpers, page partials, and coverage tests still carry the source-derived reference experience. The section remains reachable from the site and backed by generated rows.
This milestone moved from root-side data to public Rails pages. The top-level milestone itself came under stress, and the configuration plus command page sprint carried the hardest local repair path with failed and errored gates before it passed. The rest of the page families then landed on the established reader, catalog, and frame.
Synced Data And Gates
2 agents 13m 29s wall time 81k peak context 23.9k tokens out $3.82 nominal cost
The app still carries its own reference dataset copy, and the root test still compares it with the generated root copy. The dataset reader names the same sync command the exporter declares. The site therefore reads deployable app data without losing the source-owned origin.
This sprint copied the root dataset into the app and added the identity gate before any page read it. The scope deliberately stopped at data flow, so the fresh worker did not have to design views while proving the copy contract. The ledger shows retries in the milestone wrapper, but this child unit itself passed its local boundary.
Reference Hub Frame
2 agents 30m 47s wall time 203k peak context 77.8k tokens out $10.75 nominal cost
The catalog still owns the list of reference pages and each page's inventory keys. A single controller action still resolves requests through that catalog and hands the parsed dataset to views. The hub and navigation are generated from the catalog rather than maintained as a second list.
This sprint built the page catalog, shared frame, route, and hub before any specialized table page existed. That made later page sprints simple consumers of a stable reader and navigation contract. It passed without repair, giving the milestone a frame that later rows could extend rather than reargue.
Config & CLI Pages
6 agents 1h 19m wall time 216k peak context 253.2k tokens out $33.64 nominal cost 1 fix
Configuration and command pages still render from dataset inventories, with tests that walk the rows instead of asserting a hand-written count. The current files have been renamed under the docs surface, but the model classes and integration tests still prove the same reference pages. Some original view fragments are gone after later restructuring, while the rendered capability remains.
This sprint is where the website work fought back. It had to render settings, environment variables, verbs, and flags from the dataset while respecting build availability and hidden surface. The run facts show repeated starts, failed and errored gates, troubleshooting, and a fix before acceptance, marking this as the main integration stress between generated rows and Rails views.
Harness And MCP Pages
2 agents 26m 4s wall time 141k peak context 46.9k tokens out $6.83 nominal cost
Harness and tool pages still exist in the reference section and are covered by dataset-driven integration tests. The harness page reads registry rows, role rows, and stage mappings; the tool page reads the MCP tool contract and schema shape. Those pages remain generated facts with only minimal framing prose.
This sprint added harness, role, stage, and MCP tool pages on the frame built earlier. The brief kept the split clear: harness configuration belongs with harnesses, general environment variables stay on configuration, and tool schemas render from data. The run stayed green because it followed an established page pattern after the configuration page work settled the table conventions.
Menus, Keys, And Events
2 agents 22m 57s wall time 184k peak context 75.1k tokens out $9.91 nominal cost
The menus, stops, and events pages still render from the exported menu, keyboard, handover, and journal inventories. Their tests walk nested vocabulary values as well as top-level rows, so a new source value needs a page representation. The pages preserve generated descriptions rather than rewriting them into view copy.
This sprint carried the section's densest table work: menus, keybindings, run-stop vocabulary, and journal events. The cut was still manageable because the previous milestone had already exported the rows and descriptions. It passed cleanly by grouping the long surfaces rather than trimming them.
Pattern And Prompt Pages
2 agents 40m 7s wall time 230k peak context 104.4k tokens out $15.10 nominal cost
Pattern and prompt indexes and item pages still exist in the reference section. Pattern pages render ordered comment and code segments, while prompt pages show the bundled Markdown and override context. The page family machinery derives item URLs from dataset rows, so new bundled content becomes reachable through the same path.
This sprint built the generated page families for patterns and prompts. Its key boundary was letting the catalog derive item pages from dataset rows rather than hand-writing routes or page entries. It stayed green because the exporter had already shaped pattern segments and prompt text for direct rendering.
Coverage And Launch
2 agents 20m 47s wall time 105k peak context 34.1k tokens out $5.06 nominal cost
Coverage tests still walk the dataset and catalog to ensure every inventory has an owning page and every catalog page is reachable. The navigation and hub links come from the same catalog the controller uses. The current tree therefore keeps the reference section honest after later inventories or page entries change.
This final sprint proved the section as a whole instead of one page at a time. The brief asked for dataset inventory ownership, page reachability, narrative cross-links, and end-to-end closeout of earlier promises. It passed without repair, making coverage a continuing gate rather than a launch checklist.