T1 — Resolver routing audit

Resolver - Cross-Company Routing Audit (MC #10357 T1) 
 Date: 2026-04-30 22:00 
 Trigger: Manual (CEO directive) 
 Auditor: Resolver meta-company
 --- 
 1. CURRENT ROUTING TOPOLOGY 
 Agent-to-Company Mapping (specialist-mapping.json) 
 Total agents mapped: 28 agents across 12 companies
 | Company | Agent Count | Agents |
|---------|-------------|--------|
| CodeCraft | 7 | martin-kleppmann, bruce-momjian, petter-graff, sentinel-developer, hadi-hariri, lee-robinson, sindre-sorhus |
| Proveo | 7 | angie-jones, sentinel-tester, sentinel-validator, james-bach, lisa-crispin, dorota-huizinga, maria-santos |
| AgentForge | 4 | chip-huyen, georgi-gerganov, claude-code-guide, anthropic-chief-architect, openai-chief-architect |
| Securion | 2 | parisa-tabriz, sentinel-architect |
| Vizu | 2 | brad-frost, lea-verou |
| Skybound | 2 | paul-hudson, sentinel-ba |
| FlowForge | 1 | kelsey-hightower |
| Finverge | 1 | markos-zachariadis |
| Lexicon | 1 | lexicon.md |
| SkillForge | 1 | skillforge.md |
| Resolver | 1 | resolver.md | 
 Companies with ZERO Agent Assignment 
 Datavera - data/analytics/ml domain - NO AGENTS HelixSupport - merged into FlowForge (2026-03-31), references still in cross-company-routes.json Proxima - merged into Lexicon (2026-03-31) 
 
 Dispatch Surface Distribution 
 | Surface | Volume Today | Notes |
|---------|--------------|-------|
| Task Tool (John direct) | ~95% | All interactive work bypasses MC+pi-orch |
| pi-orchestrator daemon | ~0% | Idle since 2026-04-28 (last completions: #10042, #10044) |
| company-worker LaunchAgents | 2 active | com.john.company-proveo, com.john.company-securion |
| resolver-daemon (6h cron) | 4 runs today | Detected issues, created 0 tasks (all SKIP - duplicates exist) |
| cross-company-bus | 4 runs today | 85 matches, 1 task created | 
 Evidence: pi-orchestrator.log shows continuous "No eligible tasks" since 2026-04-28 22:24:29Z. The 3 review-blocking tasks (#10038, #10039, #10043) are stuck in `ready_for_review` status with owner `pi-orchestrator`.
 --- 
 2. GAPS - WHERE ROUTING BREAKS 
 2.1 Orphan Agents (17 agents in ~/.claude/agents/ but NOT in specialist-mapping.json) 
 agentforge.md codecraft.md finverge.md proveo.md
alem-clone.md devils-advocate.md flowforge.md redzo-reviewer.md
builder.md dzevad-jahic.md gemini-reviewer.md securion.md
mehanik.md skybound.md sylfest-lomheim.md validator.md
vizu.md
 
 Impact: These agents can be invoked via Task tool but discover.js routing queries won't return them. John cannot programmatically route to them.
 2.2 Companies Without Agent Coverage 
 | Company | Domain | Gap |
|---------|--------|-----|
| Datavera | data/analytics/ml | CRITICAL: 0 agents. ML work goes nowhere. |
| Finverge | finance/payment | 1 agent only (markos-zachariadis) - thin coverage |
| FlowForge | devops/infra | 1 agent only (kelsey-hightower) - thin coverage |
| Lexicon | legal/docs | 1 agent only - thin coverage | 
 2.3 Dual-Store Problem 
 Agent definitions exist in TWO locations:
 `~/.claude/agents/` (40 files) - Claude Code reads from here `~/system/agents/definitions/` (57 files) - System scripts read from here 
 
specialist-mapping.json only indexes 28 agents. Sync script exists (`~/bin/agent-definitions-sync.sh`) but mapping registry is stale.
 2.4 Rules Without Enforcement Hooks 
 | Rule | Status |
|------|--------|
| cross-company-routes.json | 10 rules defined. Enforcement via cross-company-bus.js (6h cron). No real-time hook. |
| ZAKON #7 (complex task >2h -> route through company) | NO HOOK. Policy only. John bypasses freely. |
| tier-routing.json | Engine/model tiers defined. No enforcement - pi-orch is idle. | 
 --- 
 3. PATTERN DETECTION (Last 7 Days) 
 HiveMind Intel by Agent (top 10) 
 | Agent | Entries | % |
|-------|---------|---|
| john | 3311 | 89.7% |
| email-agent | 96 | 2.6% |
| pi-orchestrator | 55 | 1.5% |
| alem | 46 | 1.2% |
| codecraft | 45 | 1.2% |
| proveo | 34 | 0.9% |
| agent-reporter | 30 | 0.8% |
| daemon-fleet-watchdog | 22 | 0.6% |
| validator | 21 | 0.6% |
| system | 17 | 0.5% | 
 Pattern 1: John dominates HiveMind (90%). Companies barely log activity.
 Mission Control Task Distribution 
 | Status | Count |
|--------|-------|
| done | 6,605 |
| paused | 2,202 |
| open | 891 |
| blocked | 492 |
| ready_for_review | 29 |
| in_progress | 1 | 
 Pattern 2: 2,694 tasks stuck (paused+blocked) = 26% of active inventory.
 Owner Distribution (open/blocked/paused) 
 | Owner | Count | Status |
|-------|-------|--------|
| pi-orchestrator | 1,619 | 1,324 paused + 295 blocked |
| proveo | 390 | open |
| autowork | 326 | paused |
| edita | 186 | open |
| john | 253 | 71 open + 118 blocked + 64 paused |
| codecraft | 66 | open | 
 Pattern 3: pi-orchestrator owns 1,619 tasks but is IDLE. No pickup mechanism.
 Top 3 Recurring Failures (from resolver.log) 
 1. task_failures - 16-20 tasks paused/blocked per 6h window (systemic)
2. daemon-fleet-watchdog alerts - 7+ daemons in failed state (infrastructure)
3. orchestrator_error patterns - routing/quality-based selection failures 
 --- 
 4. WHERE DOES WHAT GO? (Canonical Routing Table) 
 Task Type -> Company -> Agent -> Surface 
 | Task Type | Company | Primary Agent | Surface |
|-----------|---------|---------------|---------|
| DEV/BUILD | | | |
| Backend API | CodeCraft | hadi-hariri (Kotlin/Ktor), lee-robinson (Next.js) | Task tool |
| Database | CodeCraft | bruce-momjian (PostgreSQL) | Task tool |
| Distributed systems | CodeCraft | martin-kleppmann | Task tool |
| CLI tooling | CodeCraft | sindre-sorhus | Task tool |
| DESIGN | | | |
| Frontend/UI | Vizu | brad-frost (design systems), lea-verou (CSS) | Task tool |
| AUDIT/QA | | | |
| Test automation | Proveo | angie-jones, lisa-crispin | company-worker (12h) |
| Exploratory testing | Proveo | james-bach, maria-santos | company-worker |
| Performance testing | Proveo | dorota-huizinga | company-worker |
| SECURITY | | | |
| Security audit | Securion | parisa-tabriz | company-worker (12h) |
| Architecture audit | Securion | sentinel-architect | company-worker |
| DEPLOY/OPS | | | |
| Kubernetes/CI/CD | FlowForge | kelsey-hightower | Task tool |
| Incident/support | FlowForge | (no agent - gap) | Manual |
| ML/DATA | | | |
| ML pipeline | AgentForge | chip-huyen | Task tool |
| Local LLM | AgentForge | georgi-gerganov | Task tool |
| Analytics | Datavera | (NO AGENT - GAP) | BROKEN |
| LEGAL/DOCS | | | |
| Contracts/compliance | Lexicon | lexicon.md | Task tool |
| Runbooks/knowledge | SkillForge | skillforge.md | Task tool |
| FINANCE | | | |
| Payments/fintech | Finverge | markos-zachariadis | Task tool |
| PRODUCT | | | |
| iOS/mobile | Skybound | paul-hudson | Task tool |
| Business analysis | Skybound | sentinel-ba | Task tool |
| META | | | |
| Cross-company routing | Resolver | resolver.md | cron (6h) | 
 Query Mechanism 
 # Current: discover.js routing
node ~/system/tools/discover.js routing "<task description>"
 Returns: Tools (6), Skills (0), Agents (2), MCP (0) 
 Problem: Only searches indexed sources. 17 orphan agents invisible. 

 --- 
 5. DAY-TO-DAY ROUTING DEFICIT 
 What's Missing for Automatic Routing 
 Current State: John manually picks agents via Task tool. No pre-dispatch classifier. No enforcement of company boundaries.
 Required Mechanism (3-Layer Fix) 
 #### Layer 1: Pre-Dispatch Classifier Hook 
 File: `~/.claude/hooks/pre-dispatch-classifier.sh` (does not exist)
 Specification: 
 # Input: task title + description (from Task tool invocation)
 Output: { company: "X", agent: "Y", tier: "N" } 
 Action: Inject routing decision into task metadata before dispatch 

 Hooks to create:
 `~/.claude/hooks/pre-dispatch-classifier.sh` - classify task -> company `~/.claude/hooks/company-boundary-enforcer.sh` - block cross-company drift 
 
#### Layer 2: Unified Agent Registry
 Fix: Merge specialist-mapping.json to include ALL 57 agents from ~/system/agents/definitions/ + 40 from ~/.claude/agents/.
 Files to update: 
 `~/system/agents/specialist-mapping.json` - add 17 orphan agents `~/system/config/domain-to-company.json` - already correct (11 companies) 
 
#### Layer 3: Slash Command for Routing Query
 Proposal: `/route ` -> Returns company + agent + reasoning
 Implementation: 
 Add skill: `~/.claude/skills/route-task.md` Wire to: `node ~/system/tools/discover.js routing "$1"` 
 
 Files That Need Modification 
 | File | Action |
|------|--------|
| `~/system/agents/specialist-mapping.json` | Add 17 orphan agents |
| `~/.claude/hooks/pre-dispatch-classifier.sh` | Create (does not exist) |
| `~/system/config/cross-company-routes.json` | Remove HelixSupport references (merged) |
| `~/.claude/skills/route-task.md` | Create /route slash command skill | 
 --- 
 Verdict for John 
 Summary: The routing infrastructure exists but is BYPASSED. John dispatches 95%+ of work directly via Task tool, never touching pi-orchestrator, company-worker LaunchAgents, or cross-company-bus. The specialist-mapping.json is 39% incomplete (17/45 agents orphaned). Datavera has zero agent coverage - ML/analytics tasks have nowhere to go. Three review-blocking tasks (#10038, #10039, #10043) have stalled pi-orchestrator for 48+ hours. The 6h resolver-daemon cron detects patterns but creates duplicate tasks that get SKIP'd. To make routing automatic, John needs: (1) a pre-dispatch classifier hook that maps task->company before spawn, (2) specialist-mapping.json expanded to cover all 57 agents, and (3) a /route slash command for quick lookup. Until then, company routing is documentation, not enforcement.
 --- 
 Report generated: 2026-04-30T22:00:00Z 
 Next scheduled resolver-daemon run: 2026-05-01T01:44:00Z