Skip to main content
/ The module

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.

text
"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.

Verified against droost 2.0.0-alpha4 · workflow 0.6.9 · 2026-09-03