v0.0.49 — lead-directed scout survey
Planning now runs a survey team that decides its own shape
The pre-planning survey used to send four hardcoded lenses at every repo, blind to whether it faced a twelve-package monorepo or a single src/. Each scout started from zero, so four of them paid for the same discovery before answering anything.
- A repo map, built without an LLM (
workspace/repo-skeleton.ts) —git ls-filesfolded into a ranked directory tree plus root manifests, handed to every agent downstream. - A scout lead decides how many scouts and where, then briefs each one with sub-questions, start paths, files to read whole, and the identifiers this codebase actually uses. One scout is a legitimate answer: a scout is unrationed, so splitting only pays when the ground genuinely divides.
- Scouts roam. The briefing is a floor, not a ceiling — cover it, correct it where the map misled, follow the code past it. Findings come back anchored to
file:lineand schema-capped, so raw reads stay out of the Planner's context. - A gap round lets the lead close specific holes, bounded at two rounds.
- The tracked-file size gate is gone; the lead sizes the wave with actual information instead.
One fan-out knob
subagentLimit (default 10 — 1 main agent + 10 subagents) replaces editorConcurrency. Shared by scout waves and the Worker's editor fanout, and now per-run overridable:
aitm start "…" --subagents 20 # or AITM_SUBAGENTS=20It caps concurrency, not work: each lead decides how much help it needs, and each subagent reads as much as it judges necessary.
Fixed
A planner transcript could be left open forever if anything threw between beginTranscript and the finally that closes it. The survey now runs before the transcript opens.