with one click
roadmap-auto
Autonomous roadmap execution with rich reporting
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Autonomous roadmap execution with rich reporting
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Assess convergence, review session, write successor, close cleanly
Generate convergence-oriented roadmap specs
Run ad-hoc cause-routing diffusion whenever a roadmap node's REALIZED value falls short of its PROJECTED value โ not only on RED/AMBER/BLOCKED, but on a GREEN that under-delivered (a shallow green). Identifies actual cause vs assumed cause, enumerates recovery axes, dispatches a non-symbolic recovery worker, and accepts the shortfall only when every axis yields a cited empirical zero. The general roadmap diffusion trigger; project-agnostic. Sibling to /core-loop ยท /cross-page-sweep ยท /diffuse-the-pipeline. Supersedes the narrower diffuse-on-not-green, which fired only on non-green and missed the shallow green entirely.
Author the boot prompt โ capture session-tacit cognitive stance before context dies
Self-orient at session start โ roadmap position, fleet state, what to do next
| name | roadmap-auto |
| description | Autonomous roadmap execution with rich reporting |
| user-invocable | true |
DAG executes itself. Node desc IS the agent brief. Orchestrator routes and synthesizes โ doesn't do dirty work.
1. roadmap orient
2. dispatch every READY node (consumes satisfied, not in-flight)
3. per node: produce โ git add <paths> โ commit โ push โ roadmap advance --note
4. on advance: post-GREEN sniff โ outcome mapped from verdict
5. completion โ orient โ dispatch newly-ready โ repeat
6. at term โ terminal review inline (assess ยท decision log ยท threads ยท successor)
No waves. No batches. Ordering is consumes โ produces. When a predecessor closes, every node whose consumes just satisfied dispatches in the same tick.
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
Main conversation IS the orchestrator. Routing, synthesis, and frontier decisions stay in main โ not because subagents can't spawn (they can), but because roadmap-auto owns head.json and auto-commits, so keeping the git/advance loop in one serial orchestrator avoids racing the working tree.
main orient โ summarize frontier internally โ spawn workers (parallel where
domains disjoint) โ re-orient on completion โ dispatch newly-ready
worker orient (own scope) โ produce โ write receipt โ return โค10-line status
{ node, verdict, outcome, artifacts, commits, surfaces, blockers }
main never reads raw orient output or raw receipts verbatim ยท
โค10-line replies + jq queries on receipt JSON only
Workers see only the brief โ never the spec, never CLAUDE.md, never the authority map source. The architect distilled all of that. Executor has zero scope-expansion authority.
1. TASK imperative + concrete outcome ยท from node.desc line 1
2. CONTEXT - Files to read: node.consumes paths ยท specific
- Target domain: node.sidecar.domain
- Domain allowed/forbidden: from dag_desc Authority map
- Invariants: relevant CLAUDE.md/stance items
- Commands: verify ยท build ยท test
3. SCOPE Single-domain rule. ONE domain per execution.
Cross-domain unintentionally touched: STOP, write BLOCKED.
- Target domain
- Allowed to modify: explicit paths ยท subset of produces โช scratch
- Read-only: directories worker may read
- Forbidden: parallel-domain dirs
4. STANCE โค6 bullets from spec's Default code stance (project overrides)
5. ARTIFACTS - Produces: node.produces paths ยท exact match
- Tests: unit | property | integration | none
- Commit: git add <explicit paths> ยท NEVER -A ยท . ยท --all
6. VERIFY Test command ยท scope check before commit ยท receipt JSON path
7. EXECUTOR INSTRUCTION (see below)
Tight on SCOPE ยท loose on JUDGMENT.
no scope expansion ยท no adjacent refactor ยท no new abstractions ยท artifacts not opinions
within scope, decide and proceed:
ambiguous interpretation pick strict reading, log decision
two reasonable implementations pick one, log why
missing pattern read neighbors, follow precedent
unclear desc pick a reading, log it
felt-blocked โ diffuse FIRST ยท do NOT surface
inventory recovery axes ยท evaluate tractability ยท route the apparent block
to one of: endogenous-fix ยท substrate-narrow ยท category-reframe ยท unroutable
if routed โ log under receipt.decisions[] ยท execute ยท proceed
STOP and write BLOCKED only when:
ยท world refuses (credential ยท hardware ยท 5xx)
ยท all routes require operator action (no tractable narrow exists)
ยท stated SCOPE exhausted with no path to outcome
BLOCKED requires diffusion artifact. No diffuse = no BLOCKED.
End output after receipt is written.
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
GREEN validators pass ยท sniff clean โ WIN advance
AMBER validators pass ยท concern surfaced โ PARTIAL advance + surface
RED validators fail ยท iteration available โ LOSS iterate, don't advance
GBD-r<N+1> residuals dispositioned to named owner โ PARTIAL advance + carriers
HONEST-RED terminal upstream ยท falsifier RED โ HONEST LOSS round closes RED
BLOCKED world refuses ยท diffusion exhausted โ EXOGENOUS surface
Outcome mapping is mechanical. No agent judgment.
{
"node": "<id>",
"verdict": "GREEN | AMBER | RED | GBD-r<N+1> | HONEST-RED | BLOCKED",
"outcome": "WIN | PARTIAL | LOSS | HONEST LOSS | EXOGENOUS",
"artifacts": ["<paths>"],
"commits": [{"repo": "<repo>", "sha": "<hex>"}],
"verify": {"cmd": "...", "exit": 0, "summary": "<one line>"},
"sniff": {"category_match": true, "carrier_collapse": false, "stance_violation": false},
"decisions": [{ "at": "...", "options": ["..."], "taken": "...", "why": "...", "carriers": ["..."]? }],
"diffusion": { "axes_tried": ["..."], "routes_considered": ["..."], "route_taken": "...", "why_unroutable": "..." },
"surface": { "concern": "...", "evidence": "...", "action": "monitor | next-round-carrier | human-review | decision-logged", "recommendation": "..." },
"carriers": [{"id": "...", "condition": "..."}],
"notes": "<โค3 lines>"
}
Required-field rules:
GREEN decisions[] + diffusion optional
AMBER decisions[] required if surface.action = "decision-logged"
RED iterate-loop fires ยท no special requirement
GBD-r<N+1> decisions[] required naming carriers
HONEST-RED decisions[] + carriers[] required
BLOCKED diffusion required (axes_tried ยท routes_considered ยท why_unroutable)
surface.recommendation set if a near-route exists
receipt REJECTED if diffusion artifact absent
No narration. No tables. No banners in receipts. Markdown receipt = brief failed.
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
Validators are proxies. After every GREEN advance, the orchestrator runs three booleans (โค30s):
1. CATEGORY MATCH validator tested the category of the claim?
2. CARRIER COLLAPSE node silently absorbed work that should be a carrier?
3. STANCE VIOLATION produce violates stance (subtract ยท thin > fat ยท ~400 LOC ยท extend)?
On any fail ยท fix-now-in-scope is the default route, carrier is the fallback:
tractable in current scope?
yes โ fix now ยท re-run ยท re-validate ยท advance with note in decisions[]
no โ AMBER + named carrier to round-N+1 with owner
Carrier-without-tractability-check is the same anti-pattern as BLOCKED-without-diffusion. "I'll note it as a carrier" on work the agent could fix now is forge-by-narrative at the carrier level.
Sniff results + tractability check record in receipt.sniff + receipt.decisions[].
ยงSniff-is-the-orchestrators-adversary โ the sniff exists to catch the orchestrator's own proxy-drift, not the worker's. (Depth-story lives wherever a project keeps doctrine; e.g. fleet's model/doctrine/anchors.json ยท r164 empirical instance ยท 0โ127 stratum-route-wiring catch.)
Felt-blocked is a SIGNAL TO DIFFUSE, not a signal to stop. Multi-hour autonomous runs can't afford block-on-first-friction.
procedure on felt-blocked:
1. inventory recovery axes (endogenous ยท substrate-narrow ยท category-reframe ยท
scope-split ยท carrier-to-successor ยท DAG-modify)
2. evaluate tractability WITHIN MY SCOPE
3. route ยท pick the most coherent tractable axis ยท prefer narrowest
4. log ยท receipt.decisions[] + receipt.diffusion
5. proceed ยท execute the routed answer ยท advance
only if NO route tractable โ write BLOCKED with diffusion.why_unroutable
and surface.recommendation (closest near-route)
Endogenous (iterate, no diffuse needed): validator rejects ยท test fails ยท schema mismatch ยท my code doesn't compile ยท my receipt shape is wrong.
Felt-blocked (diffuse, mostly routes back to endogenous): spec assumed missing artifact ยท "three reasonable options" (you have diffused, pick one) ยท validator category wrong ยท desc unclear at a point ยท two reasonable implementations ยท upstream surprised me.
Genuinely exogenous (surface AFTER diffusion exhausts): credentials I cannot provision ยท unreachable hardware ยท service down (5xx) ยท human scope-decision needed (no narrower tractable) ยท disk/network gone on uncontrolled remote.
If you find yourself writing a three-option diagnosis with a clear recommendation: you have diffused. Take the recommendation. Log under decisions[]. Proceed.
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
Streaming dispatch NEVER pauses mid-run for sync. The user invoked /roadmap-auto to walk away.
legitimate pause triggers (4 only):
1. TERMINAL DAG complete ยท run terminal review inline
2. BLOCKED post-diffuse worker AND orchestrator both routed nothing
3. P0 MOTION STALLED two ticks of zero P0 advance
4. EXOGENOUS WORLD-REFUSAL credentials ยท hardware ยท scope-changing approval
NOT pause triggers:
โ context filling up compact via receipts ยท NEVER surface
โ "natural sync point" does not exist ยท consumes โ produces is the ordering
โ multi-arm decomposition dispatch the arms ยท do not propose them
โ "want me to keep going" yes ยท always ยท auto means auto
โ downstream risk preview handle on encounter ยท log if hit
โ X/Y of N done milestone progress is not a pause trigger
โ "biggest remaining risk" hedged permission-seeking ยท banned
If you write any of: "pausing for checkpoint" ยท "natural sync point" ยท "context is getting heavy" ยท "want me to keep streaming" ยท "biggest remaining risk" ยท "should I keep going" โ the answer is yes-keep-going. Delete the phrase. Continue dispatching.
Context-fill handling: move synthesis into receipts (already jq-queryable) ยท drop verbose status replies after recording verdict ยท re-read receipts on demand ยท never surface "context heavy."
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
Two READY nodes parallel-dispatch ONLY if sidecar.domain is disjoint from every in-flight dispatch. Overlapping โ queue, dispatch next tick. Deterministic order on overlap: lexicographic by id.
Parallelism is for concern-separation, encoded by the authority map. Two workers in the same domain = collision risk at no gain.
Spawn each node's worker on the model its work demands โ not one model for the whole round:
FLOOR (mechanical): plan-mode nodes โ best available model (strongest tier)
execute-mode nodes โ sonnet
UPGRADE (judgment): RAISE an execute node to the best model when it is
forge-critical ยท crossing-critical ยท authors the gates ยท
or touches the demo hero surface
ALWAYS BEST: any adversary / refutation / red-team worker โ a weak
falsifier is a rubber-stamp
DEFAULT WHEN UNSURE: best, never sonnet โ wrongly-best costs tokens,
wrongly-sonnet costs a missed forge
Write "best available model," never a hardcoded id โ the policy must survive the next tier without an edit. Plan nodes that expand into subgraphs pass the policy down: a child plan node inherits best, a child execute node sonnet-unless-upgraded.
worker writes BLOCKED with diffusion artifact
โ orchestrator-level diffuse (wider view: other ready nodes ยท fleet ยท round ยท DAG mods)
ยท if surface.recommendation tractable without operator action โ ADOPT ยท log ยท proceed
ยท enumerate orchestrator-level axes: re-dispatch with reframed brief ยท swap to
parallel-ready ยท narrow at DAG level ยท split into tractable + carrier
ยท tractable route โ execute ยท log ยท proceed
ยท no route โ surface to human (stage 3 ยท both stages exhausted)
Surfaces are rare ยท explicitly two-stage-failed. Orchestrator records its adoption in the node's receipt under decisions[] with at: "orchestrator-adopted".
Test execution is expensive substrate-creation. Iteration is cheap substrate-consumption. First failure CAPTURES; iteration reads the capture; re-run ONCE after fix is committed.
Anti-pattern: run โ fail โ patch โ run โ fail โ patch โ run. Each run pays full cost. Most of the cost is re-execution noise, not new information.
1. RUN ONCE execute the test command per spec's Test profile
2. CAPTURE on failure write .roadmap/round-N/<node>.test-capture.json
{ cmd, exit, duration_ms, stdout_tail, stderr_tail,
failing_tests, env, repro }
3. INSPECT capture, not test iteration substrate is the capture ยท not re-execution
4. FIX based on capture the capture is the source of truth between attempts
5. RE-RUN to verify after fix is committed ยท ONE verification run
6. CAPTURE again if still fail attempt counter increments ยท capture replaces
The capture artifact survives the iterate-loop. Multiple fix attempts read the same capture until a re-run is justified by an actual change to the code under test.
Workers consult the spec's Test profile before running. Machine-aware:
unit any machine ยท worker scope ยท fast feedback
integration dev or ci ยท orchestrator-coordinated at frontier checkpoints
e2e ci-only by default ยท explicit user opt-in for local
benchmarks ci-only ยท scheduled ยท not per-dispatch
A worker on a dev laptop running npm test shouldn't accidentally trigger a 30-minute e2e suite. The profile gates which suites run by default. Floor profile travels if spec omits it (unit any ยท integration dev-or-ci ยท e2e ci-only).
Each test run appends duration_ms to .roadmap/round-N/<node>.test-profile.jsonl. The orchestrator reads this to:
detect drift suite N took 30s last round ยท 90s this round ยท investigate
catch flakiness pass/fail ratio across runs ยท flag tests > 5% flake rate
gate by budget if a suite exceeds spec's max-duration ยท downgrade verdict to AMBER
surface: "integration suite ran 7min ยท spec budget was 5min"
Multiple workers in the same dispatch don't each re-run shared suites โ the orchestrator runs once at frontier checkpoints, distributes the result. No-redundant-runs is the policy: if a suite has run on the current sha for this round, don't re-run it; read the prior result.
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
1. diffuse at level pass-1 broad ยท pass-2 residual ยท pass-3 hard-residual
2. asymptote test delta < 5pp AND mechanism unchanged?
3a. no โ continue diffusing at this level
3b. yes โ scope-widen ONCE ยท new emissions = prior asymptote was scope artifact
4. still asymptote move upstream (producer of inputs)
5. iterate upstream pass-1/2/3 at new level
6. continue upstream until TERMINAL UPSTREAM
7. propagate downstream each finding reshapes next level's substrate
8. re-validate descending
9. asymptote at every level on the way down
10. THEN accept HONEST-RED only with NAMED CARRIERS
ยงIterate-don't-bail ยท the loop is the work ยท skipping is forge-by-narrative.
ยงShortfall-triggers-the-loop ยท not only RED. The loop above fires on any node whose REALIZED gain falls short of its PROJECTED gain. RED/AMBER is the obvious case โ but a shallow GREEN (passed its falsifier yet under-delivered its projection) triggers it too. Agents stop too early on their own greens; a green below its projection is a shortfall wearing a win's color. Route every shortfall through /roadmap-diffuse-shortfall (the general diffusion trigger; supersedes the non-green-only diffuse-on-not-green). Detecting a shallow green requires the spec to have declared a projected gain โ see roadmap-spec's projected-gain.
A round closes when the falsifier is satisfied OR HONEST-RED ships named carriers to next round. Three authoring moves:
INTRA-NODE fix produce ยท re-advance ยท no DAG change
INTRA-ROUND modify DAG ยท plan-mode decomposition discovered at runtime
ROUND BOUNDARY HONEST-RED ยท author successor with named carriers
Each carrier becomes a node (or cluster) in the successor with concrete produces and validators describing what "fixed" means.
Carrier-eligibility rule: carriers are for work that doesn't fit current scope. NOT for work the agent could fix now but defers as "polite." Before naming a carrier, check tractability-in-scope ยท prefer fix-now.
Anti-patterns: silent validator-relaxation without named carrier ยท carriering tractable in-scope work ยท both are forge-by-narrative.
Carriers travel via inputs[] sha-pinned receipts and via dag_desc / Round narrative.
GBD is last resort. Before GBD: what portion is doable now? Dispatch that. GBD only the residual.
Four conditions (all required):
1. every residual has a named round-N+1 owner (specific node-id)
2. receipt enumerates residuals
3. consumer-migration not skipped via GBD
4. validator relaxation VISIBLE in DAG (modify the node's validator)
every N completions (N = max(3, frontier-width)) ยท re-read DAG root P0 list
any P0 moved?
yes (โฅ1) continue
no ยท one tick acknowledge ยท prefer tractable P0 subsets
no ยท two ticks STOP ยท surface ยท do not compile next round on
untouched P0s
A round closing with P0s untouched is not converged ยท it is deferred.
Every brief enforces git add <explicit-paths>. git add -A and git add . are forbidden โ parallel agents share the working tree; loose files corrupt attribution.
If a worker finds files outside its declared produces: leaves them alone ยท stages only its own paths ยท notes loose files in receipt notes ยท does NOT unstage or stash foreign changes.
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
on orient ๐ฎ <dag> โ 5/14 done ยท frontier: 2 ready ยท round 7 (carriers: 3)
setup: init โ
build: [api-routes] [middleware] โโโ here
on dispatch DISPATCHED โ 2 parallel ยท ๐ง api-routes โ src/api/routes.ts
on complete ๐ฉ api-routes WIN validators + sniff clean
๐จ middleware PARTIAL AMBER ยท jwt expiry edge case to monitor
Newly ready: integration
on terminal see ยง At terminal
Trajectory patterns auto-fire diffusion:
3 LOSSes consecutive upstream diffuse ยท spec wedge probably wrong
5 WINs + falsifier static suspicious-win cluster ยท audit sniff results
alternating WIN/LOSS spec unstable ยท decomposition refactor
HONEST LOSS at terminal round boundary ยท /core-loop fires
PARTIAL cluster AMBER backlog ยท review before next round
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
read terminalContext.rootIntent the original need, not dag desc
compare what we built does the thing WORK ยท not "did validators pass"
visual โ screenshot ยท functional โ run ยท infra โ deploy
read trail (last 50-100) many orients = lost ยท advance rejections = broke ยท
long gaps = stuck ยท mutations = why
jq -s '[.[].decisions[]?] + [.[] | select(.diffusion) | .diffusion]' .roadmap/round-N/*.json
Surface as:
Human catches up on all calls in one screen. Most uncontroversial. Bad calls get redirected before next round.
Discussed but never acted on ยท undocumented decisions ยท execution gaps (validators passed but output wasn't right).
๐ TERMINAL REVIEW ยท <dag-id>
Intent ยท Status ยท Trajectory (last 10 outcomes)
Decision log summary
Dropped threads
Proposed: successor spec ยท CLAUDE.md entry ยท fine to drop
Human decides. Then act.
converged done ยท tell human with specific rationale
continue /roadmap-spec for successor (same round)
if HONEST-RED ยท name carriers ยท each becomes first-class node
round-boundary /roadmap-spec for r<N+1> ยท carriers via inputs[] sha-pinned
orbiting STOP ยท surface ยท do not write another spec
CARRIER REQUIREMENT ยท do not close a round with un-named residuals. Forge-by-narrative is the failure mode.
After successor lands: git checkout main && git merge <branch> โ /roadmap-spec โ roadmap make โ /roadmap-bootprompt โ /roadmap-orient.
CLAUDE.md anchored sections, append references ยท never session context/TODOs
docs/ specs, ADRs, design docs ยท shelf-life only
.roadmap/ append-only ยท head.json via CLI only
boot.md cognitive residue (/roadmap-bootprompt)
ephemeral โ handoff ยท permanent โ CLAUDE.md ยท actionable โ spec
๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช๐ฅ๐ง๐จ๐ฉ๐ฆ๐ช
next moves approved ยท do not ask permission
merge to main approved
multi-arm decomposition dispatches itself ยท does not propose first
downstream risk handled on encounter ยท not pre-flagged
context compaction is orchestrator housekeeping ยท never surfaced
plan nodes expand into subgraphs as encountered
orient โ auto โ (terminal inline) โ spec โ bootprompt โ orient
๐ verdict says what happened at the gate ยท outcome says what the bet did ยท trajectory says where we're going ยท felt-blocked says diffuse ยท auto means auto