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

Cross-cutting gaps

  1. 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).
  2. Dead personas — CODEDIRECTOR_SYSTEM_PROMPT, CODE_REVIEW_PROMPT defined+imported, never sent. U:Cd has NO active persona.
  3. No shared persona infra — 10 bespoke module-level prompt strings + hand-rolled str.split parsers (ESCALATE_TO:/TASK_SUMMARY:). No base "you are a volk in Orchestrata" preamble/format contract.
  4. KG dead at volk layer — BaseAgent.set_kg() never called; _kg always None. BA/Cp new-up KGDesignStore directly. Graph flows via extract_graph_context→graph_context= kwarg instead.
  5. 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.
  6. @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.
  7. 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. Cp compliance_threshold defaults 0.0 (always passes coverage) — weak gate.
  8. 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.