Orchestrata Ultimate › Plans › research › audit-01-volks
Audit 01 — Volks: personas, tools, LLM wiring, gaps
Source: plans/research/audit-01-volks.md at 8a2cb42ad · last changed 2026-08-19 · first committed 2026-07-04 · 42 lines.
Prose pending.
Plan text
Audit 01 — Volks: personas, tools, LLM wiring, gaps
Volks in src/orchestrata_ultimate/agents/volks/. Kernel registers 9
(kernel/pipeline.py:118-138): Cx, PM, Ux, Ar, Cd, Junior, Qa, BA, Cp. Two aux
NOT in pipeline: Documentor (U:Do), SeniorDev (U:SD).
Base: agents/volks/base.py:32 BaseAgent(BaseModel) — identity, CXP send()/emit_event(),
abstract process()(123), _call_llm(152)/_call_reasoner(173)/_call_llm_with_tools(184, 10-turn loop),
set_postman(60), set_kg(73).
Per-volk
| Volk | Impl | Spec | Persona | Persona source | LLM | Tools granted (unused unless noted) |
|---|---|---|---|---|---|---|
| U:Cx Concierge | concierge/volk.py:112 (410) | 032 | STRONG live | CONCIERGE_SYSTEM_PROMPT:19-94 (7 D-dims) | sonnet, temp=1.3 on intake | search_code,ast_query |
| U:BA Analyst | analyst/agent.py:33 (320) | 019 (shared, no own spec) | MEDIUM (template) | analyst/prompts.py:17-73 | sonnet | search_code,ast_query,read_file |
| U:PM PM | pm/volk.py:159 (353) | 012 | MEDIUM | pm/volk.py:16-36 | sonnet temp=0.3 | ast_query,read_file |
| U:Ux UX | ux/volk.py:81 (241) | 013 | STRONG live | ux/volk.py:11-65 (5-step UCD) | sonnet temp=0.5 | read_file,search_code |
| U:Ar Architect | architect/volk.py:42 (337, many mixins) | 030 | STRONG live | architect_prompts.py:12 | opus (only reasoning tier) via call_reasoner | read_file,search_code,ast_query,list_dir (prompt says "use tools" but NONE wired) |
| U:Cd CodeDirector | codedirector/volk.py:42 (397) | 029 (+061) | DEAD — persona written, never sent; thin coordinator, no _call_llm | codedirector/prompts.py:9-53 (imported noqa, unused) | full write set, unused | |
| J:Junior | junior/volk.py:87 (711) | 027 | PARTIAL — review persona live, implement path none | DESIGN_REVIEW_PROMPT:31-71 | review sonnet temp=0; impl via ClaudeAPIDriver | read/write/run_shell/list/search, unused at volk layer |
| U:Qa QA | qa/volk.py:176 (1032, mixins) | 031 | MIXED — QA_SYSTEM_PROMPT(30-60) live for test-gen; CODE_REVIEW_PROMPT(62-166) DEAD | sonnet temp=0; review is deterministic (3 gates + 13 regex autofix) | read/write/run_shell/search/check_coverage, unused (shells directly) | |
| U:Cp Compliance | compliance/volk.py:51 (459) | 026 | NONE by design (deterministic, no LLM) | — | none | [] |
| U:Do Documentor (aux) | documentor/volk.py:26 (164) | — | STRONG, only volk that calls _call_llm_with_tools (:103) |
documentor/prompts.py:7-56 | tools ACTUALLY used | |
| U:SD SeniorDev (aux) | senior_dev.py:49 (125) | 000 | Strong oscillation-recovery; call_reasoner(opus); emits prompt_refinement→U:Cx | SENIOR_DEV_PROMPT:16 |
LLM/provider wiring
- Per-volk routing real:
core/infra_config.py:175-185 VOLK_CONFIG(all sonnet except U:Ar→opus,_REASONING_VOLKS={"U:Ar"}:199).get_volk_model/provider:228-231.llm/client.pyhonorsvolk=. - BUG (confirmed): hardcoded model
session/controller/_core.py:163 ai_model="Claude Opus 4.5"(+session/models.py:215,portfolio.py:146,cli/lifecycle.py:27,examples/basic_usage.py:34). Separate from volk path. - Stale models:
infra_config.py:194-197 _PROVIDER_MODELS["anthropic"]pins claude-opus-4-5-20250514/sonnet-4-5; adapter registers 4-6 (llm/client.py:167); OpenRouter comment says 4.8 — three generations referenced, none current 4.8.
Cross-cutting gaps
- Tool stack wired but unused — only U:Do calls
_call_llm_with_tools; 8 pipeline volks pass no tools despite prompts advertising them (SPEC-062 target). - Dead personas — CODEDIRECTOR_SYSTEM_PROMPT, CODE_REVIEW_PROMPT defined+imported, never sent. U:Cd has NO active persona.
- No shared persona infra — 10 bespoke module-level prompt strings + hand-rolled
str.splitparsers (ESCALATE_TO:/TASK_SUMMARY:). No base "you are a volk in Orchestrata" preamble/format contract. - KG dead at volk layer —
BaseAgent.set_kg()never called;_kgalways None. BA/Cp new-up KGDesignStore directly. Graph flows viaextract_graph_context→graph_context=kwarg instead. - Fixed linear chain — Cx→BA→PM→(Ux)→Ar⇄Junior→Cd⇄Junior→Qa⇄Cd→Cp→HUMAN. Only Ar↔Junior, Qa↔Cd bidirectional. No dynamic addressing/broadcast/discovery.
- @traces uneven — many methods reuse placeholder
@traces(spec="SPEC-005",story="US-005-001",reqs=["REQ-001-US-005-001"]), undercutting the RTM U:Cp scores. - Orphans/missing specs — U:BA no own spec; U:Do/U:SD spec=000;
ux/js_mixin.py+ux/ux_js_scaffold.py(816 LOC) not imported by UX volk. Cpcompliance_thresholddefaults 0.0 (always passes coverage) — weak gate. - SPEC-061 CheetahClaws (real U:Cd code agent) NOT wired — only in gateway/TUI bridge (
integrations/cheetahclaws/,gateway/handlers/ultimatetui.py), never imported by codedirector/volk.py or driver_factory.py.
Highest-leverage
(a) route pipeline volks through _call_llm_with_tools (or wire CheetahClaws as U:Cd per 061/062); (b) activate-or-delete dead personas; (c) shared persona/format base; (d) fix stale hardcoded models.