Decision graphs
An agent that knows every tool still has to choose one. Left to diligence, it prints the generator list and hand-writes three files the list covered. Routing therefore lives in the tool's own answers rather than in the agent's memory.
The router
droost_decide is a read-only tool that walks a decision graph shipped as data (resources/decision/*.graph.yml) and returns a directive: the surface, the exact command, and the reason. Server-side probes along the walk consult things only the site knows: which surfaces exist here, the current gate state, whether a run is active, and this site's live drush generate table.
"which surface builds a permissions file?"
→ drush generate yml:permissions
no droost blueprint covers it; the generator does
"which surface builds a taxonomy vocabulary?"
→ droost_structure_create kind=bundle entity_type=taxonomy_term
gate: allow_scaffold (armed)Prose matching ranks exact construct names first, then all-words matches, then a construct named inside the query, then keyword tokens, and says when a runner-up was close.
The doctrine it enforces
Droost extends Drush and never competes with it. When a construct has no Droost blueprint but drush generate produces it, Droost is the one that says so: droost_scaffold's refusal for an uncovered construct names the covering generator, the capabilities listing carries the Drush column, and the workflow's plan phase writes its Tooling plan from one droost_decide call per construct. Hand-writing is allowed only with the map's own reason.
The graphs shipped today
build-surface: the router. Content types, fields, view modes, menus, displays, views, services, plugins, hooks, tests, permissions, routing, settings forms, and the rest of what a ticket asks for.config-change: surface → gate → export →config_clean. Any change to configuration walks to the check that a fresh export changes nothing.
The growth path is exactly "Droost directs the agent with decision trees the entire way": each recurring operation the live-agent evals expose becomes a graph. Debugging (logs → cache → container), upgrades and content-model changes are next on the roadmap. Graphs are data files, lintable, shipped like guideline topics.