> ## Documentation Index
> Fetch the complete documentation index at: https://vietbui.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Control Plane Expansion Plan — Gap Analysis and Phase 0.5 Roadmap

> Synthesizes gap analysis, tool landscape research, and concrete Phase 0.5 implementation steps for expanding the current agent setup toward a full Agentic En…

# Control Plane Expansion Plan

Synthesizes gap analysis, tool landscape research, and concrete Phase 0.5 implementation steps for expanding the current agent setup toward a full Agentic Engineering Control Plane.

Source concept: 4-layer control plane architecture (execution/coordination/quality/experience layers)

## Current Setup Inventory

What already exists:

| Component                     | How Implemented                                |
| ----------------------------- | ---------------------------------------------- |
| Execution                     | `claude --bg`, `claude agents` TUI (v2.1.144+) |
| Task state machine            | `.agents/inbox/`, `claimed/`, `done/` dirs     |
| Task model                    | YAML frontmatter in `.agents/*.md` files       |
| Atomic claim (single-machine) | POSIX `mv` from inbox → claimed                |
| Quality gate                  | Hooks: biome, lint-autofix, pre-commit         |
| Context compression           | `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=50`           |
| Council primitive             | `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`       |
| Agent isolation               | `isolation: "worktree"` on Agent tool          |

## Phase 1 Gap Analysis

| Requirement                  | Coverage                       | Gap                                   |
| ---------------------------- | ------------------------------ | ------------------------------------- |
| Kanban v1                    | Partial — dirs exist           | No board view / status skill          |
| Task schema                  | YES — YAML frontmatter         | No validation layer                   |
| Agent registry v1            | Partial — TUI shows sessions   | No persistent `.agents/registry.json` |
| Single-provider quality gate | YES — hooks                    | No approval UI or policy file         |
| Human approval v1            | **Missing**                    | Entire workflow absent                |
| Observability v1             | Partial — session output only  | No centralized append-only log        |
| Multi-machine coordination   | **Missing**                    | POSIX `mv` fails across machines      |
| Council quality gate         | Partial — AGENT\_TEAMS env set | No council evaluator agents wired     |

Gaps cluster into two areas:

* **Visibility**: kanban board, registry, event log
* **Control**: approval workflow, council quality gate

## Tool Landscape — Buy vs Build

### Buy

| Need                   | Tool                    | Rationale                                                                       |
| ---------------------- | ----------------------- | ------------------------------------------------------------------------------- |
| Code review            | CodeRabbit              | 2M+ repos *(claimed, unverified)*, PR comments out of box, not worth building   |
| Eval framework         | PromptFoo or Braintrust | CLI-first gates (PromptFoo) vs production dashboards (Braintrust)               |
| Observability          | Langfuse                | Open source, self-hostable, LLM-aware trace model                               |
| Kanban UI              | GitHub Projects         | Free, already integrated with repo, no infra                                    |
| Workflow orchestration | LangGraph (if needed)   | Production v1.0, battle-tested *(claimed, unverified)*; only needed at Phase 2+ |

### Build

| Component                  | Why build                                        |
| -------------------------- | ------------------------------------------------ |
| `/kanban-status` skill     | Trivial board renderer — 1 skill file            |
| Agent registry + event log | JSON files — nothing to install                  |
| Approval workflow skill    | Agentic decision logic — domain-specific         |
| Council aggregation        | Glue between parallel evaluators + majority vote |
| Model tier routing         | Already partially in model-routing.md rules      |

## Phase 0.5 — Implementation Steps

### Step 1: Event Log

Create `.agents/events.jsonl` — append-only, one JSON object per line:

```json theme={null}
{"ts": "2026-05-19T10:00:00Z", "event": "task_claimed", "task": "TASK-001", "agent": "session-abc"}
{"ts": "2026-05-19T10:45:00Z", "event": "task_complete", "task": "TASK-001", "result": "pass"}
```

Wire to Stop hook: emit `session_end` event with files changed, exit status.

### Step 2: Agent Registry

Create `.agents/registry.json`:

```json theme={null}
{
  "agents": [
    {"id": "session-abc", "task": "TASK-001", "status": "running", "started_at": "...", "machine": "hostname"}
  ]
}
```

Orchestrator writes on spawn; Stop hook writes on completion.

### Step 3: `/kanban-status` Skill

Skill reads `.agents/inbox/`, `claimed/`, `done/`, `registry.json` and renders:

```
INBOX          CLAIMED        DONE
────────────   ────────────   ────────────
TASK-003       TASK-001 @abc  TASK-002 ✓
TASK-004       TASK-005 @def
```

### Step 4: Approval Workflow Skill

Invoked before any agent auto-commit. Renders diff, blocks on stdin approval:

```
Agent: session-abc
Task: TASK-001
Files: src/auth/middleware.ts (+42 -8)
Approve? [y/n/diff]:
```

On approval: writes approval token to `.agents/approvals/<task>.approved`. Agent's commit hook checks for token before proceeding.

### Step 5: Stop Hook Quality Summary

Append to Stop hook: emit structured summary to stdout and to `.agents/events.jsonl`:

```
Session: session-abc | Task: TASK-001
Files changed: 3 | Tests run: 47 passed, 0 failed
Status: COMPLETE
```

## Phase 2 Preview — Multi-Machine Coordination

POSIX `mv` for atomic claim only works on single machine (same filesystem).

Multi-machine atomic claim: **git branch creation race on `refs/tasks/*`**:

```bash theme={null}
git push origin HEAD:refs/tasks/TASK-001  # succeeds for first claimer
# fails for others: "remote: error: cannot lock ref"
```

This is atomic across machines without a shared filesystem. No external coordination service needed.

Task inbox becomes git branch per task. Orchestrator pulls `refs/tasks/*`, picks unclaimed (no corresponding `refs/tasks-claimed/*`), races to claim.

## Phase 3 Preview — Council Quality Gate

Already have: `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` as council engine primitive.

Pattern: spawn 3 Haiku evaluators in parallel (acceptance criteria, code quality, style), collect PASS/FAIL + reasoning, majority vote, write signal file.

See [Council Pattern](/concepts/council-pattern) for full 3-stage structure and cost model (\~15K tokens vs \~1K single-model).

## Critical Path

Phase 0 → 0.5: **5 concrete deliverables, no new infra** — all implemented as SKILL.md files and JSON files.

Phase 0.5 → 1: Buy Langfuse + GitHub Projects. Build approval UI. Schema validation layer.

Phase 1 → 2: Git-based inbox migration. Multi-machine agent orchestrator.

Phase 2 → 3: Wire council evaluators into Stop hook quality check.

## 2026-06 Update: Bootstrap Path

New source synthesis sharpens the next build order:

1. **Cockpit action registry** — borrow [Agent-Native](/entities/agent-native)'s shared action/state philosophy. Define a local action vocabulary for tasks, sessions, approvals, artifacts, evidence, review packages, runners, and machines. Do not replace Commandr with Agent-Native's shared SQL runtime.
2. **agent-control skills** — adapt Builder.io's SKILL.md packaging pattern for reusable workflows: commandr-task, evidence-package, review-package, pentest-finding, runner-adapter, approval-policy, bus-debugger.
3. **commandr-omp-runner** — integrate [omp (oh-my-pi)](/entities/omp) as the first serious L2 worker after local shell/Claude/OpenCode. Start with a wrapper, then add omp custom tools for bus-native progress and approvals.

Recommended immediate artifacts:

| Artifact                | Status              | Purpose                                                                                    |
| ----------------------- | ------------------- | ------------------------------------------------------------------------------------------ |
| `COCKPIT-ACTIONS.md`    | 📋 Pending          | Design contract for UI/agent shared action vocabulary                                      |
| `agent-control-skills/` | 📋 Pending          | Portable SKILL.md workflow library                                                         |
| `commandr-omp-runner`   | Scaffold/smoke only | L2 runner wrapper target; RPC host tools needed for real bus-native progress and approvals |

Layer placement remains unchanged: skills are L1/L4, omp is L2, Commandr is L3, DiffViewer/Tauri is L5.

### commandr-omp-runner — Scaffold/Smoke Status

Created scaffold: `commandr-omp-runner/setup.sh` + `runner.sh` + `README.md`

* **Bootstrap** (`setup.sh`): installs omp, copies hooks/tools to agent dirs
* **Runner** (`runner.sh`): runner-agnostic interface — task packet in, NDJSON out, progress events to file/stderr
* **Interface**: `--task <json> --workspace <dir> [--progress <file>] [--model <id>]`
* **Exit**: 0 = success, 1 = failure
* **Plugin**: pi-headroom documented as opt-in (not auto-installed)

### RPC Mode Discovery

Research on `omp --mode rpc` reveals a better path than custom TypeScript plugins for bus integration:

| Integration Approach                | Effort     | Language Lock-in                  | Bidirectional |
| ----------------------------------- | ---------- | --------------------------------- | ------------- |
| Custom TS plugins (Level 3)         | High       | TypeScript only                   | Limited       |
| **RPC host tools (Level 2+)**       | **Medium** | **None — any JSON-lines process** | **Full**      |
| Subprocess + parse stdout (Level 1) | Low        | None                              | One-way       |

**RPC host tools** let Commandr register `commandr_progress`, `commandr_request_approval`, etc. as host-side tools. The agent calls them via standard tool calling; the host (our runner) handles the bus side effects. No TypeScript required — the host can be Python, Rust, Go, or bash.

**Recommended evolution:**

* Phase 1 (current): `--mode json`, one-shot scaffold/smoke path
* Phase 2: `--mode rpc`, register host tools for bus-native progress/approvals/artifacts
* Phase 3: `--mode rpc-ui`, handle `extension_ui_request` for approval flows

See Omp Snapcompact Rpc for full protocol analysis.

### snapcompact vs pi-headroom

`snapcompact` (omp's native compaction) already truncates tool results to 2000 chars with head/tail preservation during archival compression. This is **conversation-level** (old turns → PNG frames). `pi-headroom` is **turn-level** (current turn tool outputs). They are complementary, not redundant.

**pi-headroom status:** Keep as opt-in stopgap. Document that it handles bash output, search results, and eval kernel output — things not already truncated by omp's native read tool.

Next: Level 2 via RPC host tools. Schema designed in `commandr-omp-runner/HOST-TOOLS.md`:

* `commandr_progress` — milestone logging to events.jsonl
* `commandr_emit_artifact` — artifact declaration (workspace + events.jsonl)
* `commandr_request_approval` — policy-enforced approval (log-only at Level 1, blocking at Level 2)
* `commandr_complete` / `commandr_fail` — task finalization
* Policy table: bash rm/sudo/docker, write to .env/ssh, git push
* Runner-agnostic: any L2 runner can implement the same schema

## Related Pages

* [Shared Task Queue (Cross-Worktree)](/concepts/shared-task-queue) — current coordination primitive
* [Worktree Isolation](/concepts/worktree-isolation) — agent filesystem isolation
* [Council Pattern](/concepts/council-pattern) — quality deliberation layer
* [Agent Teams](/concepts/agent-teams) — team coordination mechanics
* [Rules vs. Hooks](/concepts/rules-vs-hooks) — static rules vs dynamic hook injection
* [Agentic CI/CD](/concepts/agentic-cicd) — CI as external watchdog pattern

<iframe
  srcDoc="<!doctype html><html><head><meta charset=&#x22;utf-8&#x22;><style>
html,body{margin:0;height:100%;background:#0f1117;overflow:hidden;font-family:ui-sans-serif,system-ui,-apple-system,sans-serif}
#g{width:100%;height:100%}
#hd{position:absolute;top:0;left:0;right:30px;height:22px;display:flex;align-items:center;gap:6px;padding:0 10px;color:#aeb3c2;font-size:10px;letter-spacing:.08em;text-transform:uppercase;z-index:6;cursor:move;user-select:none;touch-action:none;background:linear-gradient(#0f1117cc,#0f111700)}
#gear{position:absolute;top:5px;right:7px;z-index:7;cursor:pointer;color:#aeb3c2;background:#1b1e27;border:1px solid #2b2f3a;border-radius:6px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:12px;user-select:none}
#panel{position:absolute;top:31px;right:7px;z-index:7;background:rgba(22,25,34,.96);border:1px solid #2b2f3a;border-radius:8px;padding:6px 9px 9px;display:none;width:150px;color:#c9cdd8;font-size:10px}
#panel.open{display:block}
#panel label{display:flex;justify-content:space-between;margin:7px 0 1px;color:#9aa0b0}
#panel input[type=range]{width:100%;margin:0}
#panel .row{display:flex;align-items:center;gap:6px;margin-top:8px;color:#c9cdd8}
</style><script src=&#x22;https://cdn.jsdelivr.net/npm/force-graph@1.51.4/dist/force-graph.min.js&#x22; integrity=&#x22;sha384-Hm6GpQcTNI5VqGgGS7lLxTGtEFcxu/kOVV0B7ozIZRu9blWVvigv5httJQZ2qZmY&#x22; crossorigin=&#x22;anonymous&#x22;></script></head>
<body><div id=&#x22;hd&#x22;>Graph</div><div id=&#x22;gear&#x22;>⚙</div>
<div id=&#x22;panel&#x22;>
<label>Node size<span id=&#x22;vns&#x22;></span></label><input id=&#x22;ns&#x22; type=&#x22;range&#x22; min=&#x22;0.6&#x22; max=&#x22;6&#x22; step=&#x22;0.2&#x22;>
<label>Link width<span id=&#x22;vlw&#x22;></span></label><input id=&#x22;lw&#x22; type=&#x22;range&#x22; min=&#x22;0&#x22; max=&#x22;3&#x22; step=&#x22;0.1&#x22;>
<label>Label size<span id=&#x22;vts&#x22;></span></label><input id=&#x22;ts&#x22; type=&#x22;range&#x22; min=&#x22;0&#x22; max=&#x22;8&#x22; step=&#x22;0.5&#x22;>
<label>Label opacity<span id=&#x22;vto&#x22;></span></label><input id=&#x22;to&#x22; type=&#x22;range&#x22; min=&#x22;0&#x22; max=&#x22;1&#x22; step=&#x22;0.05&#x22;>
<div id=&#x22;depthRow&#x22;><label>Depth<span id=&#x22;vd&#x22;></span></label><input id=&#x22;dp&#x22; type=&#x22;range&#x22; min=&#x22;1&#x22; max=&#x22;5&#x22; step=&#x22;1&#x22;></div>
<div class=&#x22;row&#x22;><input id=&#x22;ar&#x22; type=&#x22;checkbox&#x22;><span>Directional arrows</span></div>
</div>
<div id=&#x22;g&#x22;></div>
<script>
const NODES=[{&#x22;id&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;label&#x22;:&#x22;Control Plane Expansion Plan — Gap Analysis and Phase 0.5 Roadmap&#x22;,&#x22;group&#x22;:&#x22;syntheses&#x22;,&#x22;val&#x22;:4.3166247903554},{&#x22;id&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;label&#x22;:&#x22;Lean Agentic Coding Workflow&#x22;,&#x22;group&#x22;:&#x22;syntheses&#x22;,&#x22;val&#x22;:5.795831523312719},{&#x22;id&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;label&#x22;:&#x22;Worktree Isolation&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.60555127546399},{&#x22;id&#x22;:&#x22;concepts/agentic-cicd&#x22;,&#x22;label&#x22;:&#x22;Agentic CI/CD&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.60555127546399},{&#x22;id&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;label&#x22;:&#x22;Desktop AI Agent Control Plane — Architecture Synthesis&#x22;,&#x22;group&#x22;:&#x22;syntheses&#x22;,&#x22;val&#x22;:4.60555127546399},{&#x22;id&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;label&#x22;:&#x22;Agent Teams&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;concepts/council-pattern&#x22;,&#x22;label&#x22;:&#x22;Council Pattern&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;entities/omp&#x22;,&#x22;label&#x22;:&#x22;omp (oh-my-pi)&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;concepts/shared-task-queue&#x22;,&#x22;label&#x22;:&#x22;Shared Task Queue (Cross-Worktree)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;concepts/rules-vs-hooks&#x22;,&#x22;label&#x22;:&#x22;Rules vs. Hooks&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;entities/commandr&#x22;,&#x22;label&#x22;:&#x22;Commandr&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;entities/agent-native&#x22;,&#x22;label&#x22;:&#x22;Agent-Native&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.6457513110645907},{&#x22;id&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;label&#x22;:&#x22;Agent Harness&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:7.48074069840786},{&#x22;id&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;label&#x22;:&#x22;Context Compression Strategies&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:6.0990195135927845},{&#x22;id&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;label&#x22;:&#x22;Agent Skills&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:5.795831523312719},{&#x22;id&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;label&#x22;:&#x22;Agent Self-Correction&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:5.358898943540674},{&#x22;id&#x22;:&#x22;entities/opencode&#x22;,&#x22;label&#x22;:&#x22;OpenCode&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:5.358898943540674},{&#x22;id&#x22;:&#x22;concepts/verification-pipeline&#x22;,&#x22;label&#x22;:&#x22;Verification Pipeline&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:5.358898943540674},{&#x22;id&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;label&#x22;:&#x22;Pi Agent (pi-mono)&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:5.123105625617661},{&#x22;id&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;label&#x22;:&#x22;Multi-Vendor Adversarial Review&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.872983346207417},{&#x22;id&#x22;:&#x22;concepts/agent-context-instructions&#x22;,&#x22;label&#x22;:&#x22;Agent Context Instructions&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.872983346207417},{&#x22;id&#x22;:&#x22;concepts/ralph-loop&#x22;,&#x22;label&#x22;:&#x22;Ralph Loop&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.872983346207417},{&#x22;id&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;label&#x22;:&#x22;Agent Subagents&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.741657386773941},{&#x22;id&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;label&#x22;:&#x22;Context Degradation Patterns&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.60555127546399},{&#x22;id&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;,&#x22;label&#x22;:&#x22;Agent Primitive Selection&#x22;,&#x22;group&#x22;:&#x22;syntheses&#x22;,&#x22;val&#x22;:4.464101615137754},{&#x22;id&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;,&#x22;label&#x22;:&#x22;Agentic Sandbox Controls&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.464101615137754},{&#x22;id&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;label&#x22;:&#x22;AI and ML Engineering&#x22;,&#x22;group&#x22;:&#x22;systems&#x22;,&#x22;val&#x22;:4.3166247903554},{&#x22;id&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;label&#x22;:&#x22;Spec-Driven Frameworks vs Native Claude Code&#x22;,&#x22;group&#x22;:&#x22;comparisons&#x22;,&#x22;val&#x22;:4.3166247903554},{&#x22;id&#x22;:&#x22;concepts/tool-design-for-agents&#x22;,&#x22;label&#x22;:&#x22;Tool Design for Agents&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;entities/sandcastle&#x22;,&#x22;label&#x22;:&#x22;SandCastle&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;concepts/self-healing-loop&#x22;,&#x22;label&#x22;:&#x22;Self-Healing Loop&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;label&#x22;:&#x22;Dangeresque&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;systems/scalability-reliability&#x22;,&#x22;label&#x22;:&#x22;Scalability and Reliability&#x22;,&#x22;group&#x22;:&#x22;systems&#x22;,&#x22;val&#x22;:4.16227766016838},{&#x22;id&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;label&#x22;:&#x22;Our Stack vs omp&#x22;,&#x22;group&#x22;:&#x22;comparisons&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;label&#x22;:&#x22;Memory Bank Pattern&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:4},{&#x22;id&#x22;:&#x22;entities/agentops&#x22;,&#x22;label&#x22;:&#x22;AgentOps (boshu2)&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.8284271247461903},{&#x22;id&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;label&#x22;:&#x22;Claude Code vs OpenCode Plugin Systems&#x22;,&#x22;group&#x22;:&#x22;comparisons&#x22;,&#x22;val&#x22;:3.8284271247461903},{&#x22;id&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;,&#x22;label&#x22;:&#x22;Branch Strategy for Agents&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.8284271247461903},{&#x22;id&#x22;:&#x22;concepts/error-budget&#x22;,&#x22;label&#x22;:&#x22;Error Budget (Agentic)&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.8284271247461903},{&#x22;id&#x22;:&#x22;concepts/llm-as-judge&#x22;,&#x22;label&#x22;:&#x22;LLM-as-Judge&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.8284271247461903},{&#x22;id&#x22;:&#x22;entities/diffviewer&#x22;,&#x22;label&#x22;:&#x22;DiffViewer&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.6457513110645907},{&#x22;id&#x22;:&#x22;concepts/worker-coordination&#x22;,&#x22;label&#x22;:&#x22;Worker Coordination: Partial Result Passing Between Parallel Agents&#x22;,&#x22;group&#x22;:&#x22;concepts&#x22;,&#x22;val&#x22;:3.6457513110645907},{&#x22;id&#x22;:&#x22;entities/agents-md-format&#x22;,&#x22;label&#x22;:&#x22;AGENTS.md (format)&#x22;,&#x22;group&#x22;:&#x22;entities&#x22;,&#x22;val&#x22;:3.6457513110645907},{&#x22;id&#x22;:&#x22;systems/architectural-patterns&#x22;,&#x22;label&#x22;:&#x22;Architectural Patterns&#x22;,&#x22;group&#x22;:&#x22;systems&#x22;,&#x22;val&#x22;:3.6457513110645907}],LINKS=[{&#x22;source&#x22;:&#x22;concepts/agent-context-instructions&#x22;,&#x22;target&#x22;:&#x22;concepts/rules-vs-hooks&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-context-instructions&#x22;,&#x22;target&#x22;:&#x22;entities/agents-md-format&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-context-instructions&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-harness&#x22;,&#x22;target&#x22;:&#x22;concepts/tool-design-for-agents&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/llm-as-judge&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-self-correction&#x22;,&#x22;target&#x22;:&#x22;concepts/rules-vs-hooks&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-skills&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-subagents&#x22;,&#x22;target&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agent-teams&#x22;,&#x22;target&#x22;:&#x22;concepts/shared-task-queue&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-cicd&#x22;,&#x22;target&#x22;:&#x22;concepts/self-healing-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-cicd&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-cicd&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-cicd&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-cicd&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-cicd&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;,&#x22;target&#x22;:&#x22;entities/sandcastle&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;,&#x22;target&#x22;:&#x22;concepts/self-healing-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-cicd&#x22;},{&#x22;source&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;,&#x22;target&#x22;:&#x22;entities/sandcastle&#x22;},{&#x22;source&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-compression&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/context-degradation&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/council-pattern&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;concepts/council-pattern&#x22;,&#x22;target&#x22;:&#x22;entities/agentops&#x22;},{&#x22;source&#x22;:&#x22;concepts/council-pattern&#x22;,&#x22;target&#x22;:&#x22;entities/pi-agent&#x22;},{&#x22;source&#x22;:&#x22;concepts/council-pattern&#x22;,&#x22;target&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;},{&#x22;source&#x22;:&#x22;concepts/error-budget&#x22;,&#x22;target&#x22;:&#x22;concepts/self-healing-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/error-budget&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-cicd&#x22;},{&#x22;source&#x22;:&#x22;concepts/error-budget&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/error-budget&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/llm-as-judge&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-cicd&#x22;},{&#x22;source&#x22;:&#x22;concepts/llm-as-judge&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;concepts/llm-as-judge&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;concepts/rules-vs-hooks&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;entities/agents-md-format&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/memory-bank-pattern&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;target&#x22;:&#x22;concepts/council-pattern&#x22;},{&#x22;source&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;target&#x22;:&#x22;entities/agentops&#x22;},{&#x22;source&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;target&#x22;:&#x22;entities/pi-agent&#x22;},{&#x22;source&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;target&#x22;:&#x22;concepts/llm-as-judge&#x22;},{&#x22;source&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;,&#x22;target&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;},{&#x22;source&#x22;:&#x22;concepts/ralph-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/rules-vs-hooks&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;concepts/rules-vs-hooks&#x22;,&#x22;target&#x22;:&#x22;entities/agents-md-format&#x22;},{&#x22;source&#x22;:&#x22;concepts/rules-vs-hooks&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;concepts/rules-vs-hooks&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;concepts/rules-vs-hooks&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;concepts/self-healing-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/self-healing-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/self-healing-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-cicd&#x22;},{&#x22;source&#x22;:&#x22;concepts/self-healing-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;concepts/self-healing-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;},{&#x22;source&#x22;:&#x22;concepts/self-healing-loop&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;concepts/shared-task-queue&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;concepts/shared-task-queue&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;concepts/shared-task-queue&#x22;,&#x22;target&#x22;:&#x22;concepts/worker-coordination&#x22;},{&#x22;source&#x22;:&#x22;concepts/shared-task-queue&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/shared-task-queue&#x22;,&#x22;target&#x22;:&#x22;entities/sandcastle&#x22;},{&#x22;source&#x22;:&#x22;concepts/tool-design-for-agents&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/verification-pipeline&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;concepts/verification-pipeline&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/verification-pipeline&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;},{&#x22;source&#x22;:&#x22;concepts/worker-coordination&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;concepts/worker-coordination&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;concepts/worker-coordination&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;concepts/worker-coordination&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;concepts/worker-coordination&#x22;,&#x22;target&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;entities/sandcastle&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;concepts/worktree-isolation&#x22;,&#x22;target&#x22;:&#x22;concepts/shared-task-queue&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;systems/scalability-reliability&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/context-degradation&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;systems/ai-ml&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;systems/architectural-patterns&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-cicd&#x22;},{&#x22;source&#x22;:&#x22;systems/scalability-reliability&#x22;,&#x22;target&#x22;:&#x22;concepts/error-budget&#x22;},{&#x22;source&#x22;:&#x22;systems/scalability-reliability&#x22;,&#x22;target&#x22;:&#x22;concepts/self-healing-loop&#x22;},{&#x22;source&#x22;:&#x22;systems/scalability-reliability&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-cicd&#x22;},{&#x22;source&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-subagents&#x22;},{&#x22;source&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;concepts/council-pattern&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;entities/agent-native&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;entities/omp&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;concepts/shared-task-queue&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-teams&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;concepts/rules-vs-hooks&#x22;},{&#x22;source&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-cicd&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;entities/commandr&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;entities/diffviewer&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;entities/omp&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;entities/agent-native&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;entities/pi-agent&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;syntheses/desktop-control-plane&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-skills&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/worktree-isolation&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/council-pattern&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/rules-vs-hooks&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;entities/agentops&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;syntheses/agent-primitive-selection&#x22;},{&#x22;source&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;,&#x22;target&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;},{&#x22;source&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;target&#x22;:&#x22;entities/commandr&#x22;},{&#x22;source&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;target&#x22;:&#x22;entities/omp&#x22;},{&#x22;source&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;target&#x22;:&#x22;entities/pi-agent&#x22;},{&#x22;source&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/memory-bank-pattern&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;entities/agents-md-format&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/rules-vs-hooks&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;entities/sandcastle&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;comparisons/spec-driven-frameworks-vs-native&#x22;,&#x22;target&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;},{&#x22;source&#x22;:&#x22;entities/agent-native&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/agent-native&#x22;,&#x22;target&#x22;:&#x22;concepts/tool-design-for-agents&#x22;},{&#x22;source&#x22;:&#x22;entities/agent-native&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;entities/agentops&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;entities/agentops&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;entities/agentops&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;entities/agentops&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;entities/agents-md-format&#x22;,&#x22;target&#x22;:&#x22;concepts/rules-vs-hooks&#x22;},{&#x22;source&#x22;:&#x22;entities/agents-md-format&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-context-instructions&#x22;},{&#x22;source&#x22;:&#x22;entities/commandr&#x22;,&#x22;target&#x22;:&#x22;syntheses/desktop-control-plane&#x22;},{&#x22;source&#x22;:&#x22;entities/commandr&#x22;,&#x22;target&#x22;:&#x22;entities/agent-native&#x22;},{&#x22;source&#x22;:&#x22;entities/commandr&#x22;,&#x22;target&#x22;:&#x22;entities/omp&#x22;},{&#x22;source&#x22;:&#x22;entities/commandr&#x22;,&#x22;target&#x22;:&#x22;entities/diffviewer&#x22;},{&#x22;source&#x22;:&#x22;entities/commandr&#x22;,&#x22;target&#x22;:&#x22;entities/pi-agent&#x22;},{&#x22;source&#x22;:&#x22;entities/commandr&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/commandr&#x22;,&#x22;target&#x22;:&#x22;syntheses/control-plane-expansion-plan&#x22;},{&#x22;source&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;target&#x22;:&#x22;entities/sandcastle&#x22;},{&#x22;source&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;target&#x22;:&#x22;concepts/agentic-sandbox-controls&#x22;},{&#x22;source&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;target&#x22;:&#x22;entities/agentops&#x22;},{&#x22;source&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;entities/dangeresque&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;entities/diffviewer&#x22;,&#x22;target&#x22;:&#x22;syntheses/desktop-control-plane&#x22;},{&#x22;source&#x22;:&#x22;entities/diffviewer&#x22;,&#x22;target&#x22;:&#x22;entities/commandr&#x22;},{&#x22;source&#x22;:&#x22;entities/diffviewer&#x22;,&#x22;target&#x22;:&#x22;entities/omp&#x22;},{&#x22;source&#x22;:&#x22;entities/diffviewer&#x22;,&#x22;target&#x22;:&#x22;entities/agent-native&#x22;},{&#x22;source&#x22;:&#x22;entities/diffviewer&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/omp&#x22;,&#x22;target&#x22;:&#x22;entities/commandr&#x22;},{&#x22;source&#x22;:&#x22;entities/omp&#x22;,&#x22;target&#x22;:&#x22;entities/pi-agent&#x22;},{&#x22;source&#x22;:&#x22;entities/omp&#x22;,&#x22;target&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;},{&#x22;source&#x22;:&#x22;entities/omp&#x22;,&#x22;target&#x22;:&#x22;entities/diffviewer&#x22;},{&#x22;source&#x22;:&#x22;entities/omp&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/omp&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;entities/opencode&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;entities/opencode&#x22;,&#x22;target&#x22;:&#x22;concepts/context-compression&#x22;},{&#x22;source&#x22;:&#x22;entities/opencode&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;entities/omp&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;comparisons/our-stack-vs-omp&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;concepts/multi-vendor-adversarial-review&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;comparisons/claude-code-vs-opencode-plugins&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;entities/opencode&#x22;},{&#x22;source&#x22;:&#x22;entities/pi-agent&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-self-correction&#x22;},{&#x22;source&#x22;:&#x22;entities/sandcastle&#x22;,&#x22;target&#x22;:&#x22;concepts/branch-strategy-for-agents&#x22;},{&#x22;source&#x22;:&#x22;entities/sandcastle&#x22;,&#x22;target&#x22;:&#x22;entities/dangeresque&#x22;},{&#x22;source&#x22;:&#x22;entities/sandcastle&#x22;,&#x22;target&#x22;:&#x22;syntheses/lean-agentic-workflow&#x22;},{&#x22;source&#x22;:&#x22;entities/sandcastle&#x22;,&#x22;target&#x22;:&#x22;concepts/agent-harness&#x22;},{&#x22;source&#x22;:&#x22;entities/sandcastle&#x22;,&#x22;target&#x22;:&#x22;concepts/ralph-loop&#x22;},{&#x22;source&#x22;:&#x22;entities/sandcastle&#x22;,&#x22;target&#x22;:&#x22;concepts/verification-pipeline&#x22;}],CUR=&#x22;syntheses/control-plane-expansion-plan&#x22;,MAXD=3;
const C={concepts:'#8B7CF6',patterns:'#0D9373',systems:'#E0567C',syntheses:'#E2A03F',comparisons:'#3B82F6',entities:'#14B8A6',guides:'#9CA3AF'};
function lid(x){return (x&&x.id!==undefined)?x.id:x;}
const ADJ=new Map(NODES.map(function(n){return [n.id,new Set()];}));
LINKS.forEach(function(l){var s=lid(l.source),t=lid(l.target);if(ADJ.has(s)&&ADJ.has(t)){ADJ.get(s).add(t);ADJ.get(t).add(s);}});
var opt={ns:1.8,lw:0.6,ts:3.5,to:0.75,dp:2,ar:false};
function visible(){
if(!CUR)return {nodes:NODES,links:LINKS};
var dist=new Map([[CUR,0]]),fr=[CUR];
for(var d=1;d<=opt.dp;d++){var nx=[];fr.forEach(function(u){(ADJ.get(u)||[]).forEach(function(v){if(!dist.has(v)){dist.set(v,d);nx.push(v);}});});fr=nx;}
var keep=new Set(dist.keys());
return {nodes:NODES.filter(function(n){return keep.has(n.id);}),links:LINKS.filter(function(l){return keep.has(lid(l.source))&&keep.has(lid(l.target));})};
}
var el=document.getElementById('g');
var G=ForceGraph()(el).backgroundColor('#0f1117').nodeId('id')
.warmupTicks(24).cooldownTicks(70).autoPauseRedraw(true)
.nodeColor(function(n){return C[n.group]||'#9CA3AF';}).nodeLabel('label').nodeVal(function(n){return n.val;})
.linkColor(function(){return 'rgba(255,255,255,0.12)';})
.nodeRelSize(opt.ns).linkWidth(opt.lw)
.linkDirectionalArrowLength(0).linkDirectionalArrowRelPos(1).linkDirectionalArrowColor(function(){return 'rgba(255,255,255,0.4)';})
.nodeCanvasObjectMode(function(){return 'after';})
.nodeCanvasObject(function(n,ctx,scale){var r=opt.ns*Math.sqrt(n.val||1);
if(n.id===CUR){ctx.beginPath();ctx.arc(n.x,n.y,r+1.6,0,6.283);ctx.strokeStyle='#fff';ctx.lineWidth=1.2/scale;ctx.stroke();}
if(opt.to>0&&opt.ts>0){var t=n.label.length>28?n.label.slice(0,26)+'…':n.label;ctx.globalAlpha=opt.to;ctx.font=((n.id===CUR?opt.ts+1:opt.ts))+'px ui-sans-serif,sans-serif';ctx.fillStyle=(n.id===CUR)?'#ffffff':'#aab0c0';ctx.textAlign='center';ctx.textBaseline='top';ctx.fillText(t,n.x,n.y+r+1.5);ctx.globalAlpha=1;}})
.onNodeClick(function(n){if(window.top){window.top.location.href='/'+n.id;}});
G.graphData(visible());G.d3VelocityDecay(0.4);
function fit(){G.zoomToFit(400,20);}
setTimeout(fit,350);setTimeout(fit,1100);
// Stop the render/sim loop while idle so the fixed widget never repaints during
// parent-page scroll; resume only while the pointer is over the widget.
var pt;function pause(){G.pauseAnimation();}function resume(){G.resumeAnimation();}
function idle(ms){clearTimeout(pt);pt=setTimeout(pause,ms);}
document.body.addEventListener('pointerenter',function(){clearTimeout(pt);resume();});
document.body.addEventListener('pointerleave',function(){idle(250);});
addEventListener('resize',function(){resume();G.zoomToFit(0,20);idle(700);});
idle(2000);
function apply(re){resume();G.nodeRelSize(opt.ns).linkWidth(opt.lw).linkDirectionalArrowLength(opt.ar?2.6:0);if(re){G.graphData(visible());setTimeout(fit,450);}idle(re?2200:1400);}
function bind(id,key,fmt,re){var e=document.getElementById(id),o=document.getElementById('v'+id);e.value=opt[key];if(o)o.textContent=fmt(opt[key]);e.addEventListener('input',function(){opt[key]=parseFloat(e.value);if(o)o.textContent=fmt(opt[key]);apply(re);});}
bind('ns','ns',function(v){return v.toFixed(1);},false);
bind('lw','lw',function(v){return v.toFixed(1);},false);
bind('ts','ts',function(v){return v.toFixed(1);},false);
bind('to','to',function(v){return v.toFixed(2);},false);
var dE=document.getElementById('dp'),dO=document.getElementById('vd');dE.max=MAXD;dE.value=opt.dp;dO.textContent=opt.dp;dE.addEventListener('input',function(){opt.dp=parseInt(dE.value,10);dO.textContent=opt.dp;apply(true);});
if(!CUR)document.getElementById('depthRow').style.display='none';
var aE=document.getElementById('ar');aE.checked=opt.ar;aE.addEventListener('change',function(){opt.ar=aE.checked;apply(false);});
document.getElementById('gear').addEventListener('click',function(){document.getElementById('panel').classList.toggle('open');});
var hd=document.getElementById('hd');hd.textContent='⠿  '+(CUR?'Local graph':'Knowledge graph');
// free-form placement: drag by the header. Default is bottom-right (inline style);
// a moved position is saved per parent-origin and restored on every page.
function clampPos(fe,l,t){var TW=(window.top||window),r=fe.getBoundingClientRect();return [Math.min(Math.max(0,l),Math.max(0,TW.innerWidth-r.width)),Math.min(Math.max(0,t),Math.max(0,TW.innerHeight-r.height))];}
function place(fe,l,t){var p=clampPos(fe,l,t);fe.style.left=p[0]+'px';fe.style.top=p[1]+'px';fe.style.right='auto';fe.style.bottom='auto';}
try{var sp=JSON.parse(localStorage.getItem('llmwiki_graph_pos'));if(sp&&window.frameElement)place(window.frameElement,sp.l,sp.t);}catch(e){if(window.console)console.debug('graph: saved position unavailable',e);}
hd.addEventListener('pointerdown',function(e){var fe=window.frameElement;if(!fe)return;var rect=fe.getBoundingClientRect();var sx=e.screenX,sy=e.screenY,L=rect.left,T=rect.top;place(fe,L,T);hd.setPointerCapture(e.pointerId);
function mv(ev){place(fe,L+ev.screenX-sx,T+ev.screenY-sy);}
function up(){if(hd.hasPointerCapture(e.pointerId))hd.releasePointerCapture(e.pointerId);hd.removeEventListener('pointermove',mv);hd.removeEventListener('pointerup',up);try{localStorage.setItem('llmwiki_graph_pos',JSON.stringify({l:parseFloat(fe.style.left),t:parseFloat(fe.style.top)}));}catch(e2){if(window.console)console.debug('graph: could not persist position',e2);}}
hd.addEventListener('pointermove',mv);hd.addEventListener('pointerup',up);e.preventDefault();});
</script></body></html>"
  title="Knowledge graph"
  loading="lazy"
  style={{position:"fixed",right:"18px",bottom:"18px",width:"320px",height:"340px",border:0,borderRadius:"14px",boxShadow:"0 6px 28px rgba(0,0,0,0.38)",zIndex:50,background:"#0f1117"}}
/>
