# nagent_review_v3 — Comparison Table

**Date:** 2026-06-19
**Spec pair:** `spec_v3.md` + `plan_v3.md`
**Companion:** `nagent_review_v3_20260619.md` (the v3 canonical review); `decisions.md` (v3 candidate list); `nagent_takeaways_v3_20260619.md` (bridge to v2.3 takeaways + sibling reviews).
**Source:** nagent v3 (`a1f0680` on `macton/nagent@main`, 2026-06-18) + the two case-study repos at `main` (`macton/pep-copt`, `macton/differentiable-collisions-optc`).

Flat side-by-side reference. One row per v3 cluster + one row per v2.3 pattern that v3 updates. Verdicts and pitfalls are in `nagent_review_v3_20260619.md`.

---

## Legend

- **Verdict values:** PARITY (same shape), PARITY+ (Manual Slop is stronger), PARITY- (nagent is stronger), PARTIAL (one half, not the other), GAP (Manual Slop lacks the feature), ARCH-DIFF (different architecture, both correct in their domain), SUBSUMED (consumed by a follow-up track).
- **Domain tags:** APP = Application domain, MT = Meta-Tooling domain, BOTH.
- **Cluster status:** NEW (didn't exist at v2.3), UPDATE (extends v2.3 pattern).

---

## v3 new clusters

| # | Cluster | nagent source | Manual Slop equivalent | Verdict | Status | Domain |
|---|---|---|---|---|---|---|
| 1 | Campaigns | `24cf16d`, `199a36b`, `f3ec090`, `c1d2cad`, `6443d70`, `7a7e242` | `conductor/tracks/` is project-scoped but plan.md is not operable | PARTIAL | NEW | BOTH |
| 2 | Conversation safety net | `38d3d4f`, `6426a67` | No checkpoint/rebuild; no extracted-summary index | GAP | NEW | APP |
| 3 | Hooks | `a4fb141` + both case-study harnesses | Tier 4 QA error interception is analogous; no per-run hook | PARTIAL | NEW | BOTH |
| 4 | Project-local roots | `54c8741`, `557dd39`, `0b9d1a2`, `023e23a` | `conductor/tracks/` is already project-scoped; `[conductor].dir` per-project override | PARITY | NEW | BOTH |
| 5 | Provider expansion | `bdfa2a6`, `5075f6e`, `2edc7ee` | Manual Slop has 8 providers (per tech-stack.md); per-model context windows new | PARITY (DIFFERENT COUNT) | UPDATE | APP |
| 6 | Delegation rewrite | `d56f0f0`, `65787a6`, `315fe9e` | MMA WorkerPool disciplined; non-MMA recursion bug real | PARTIAL | UPDATE | APP |
| 7 | Robustness | `065168c`, `6b762da`, `12c35b7`, `49e07f3` | Manual Slop uses `Result[T]` discipline + audit scripts (per `conductor/code_styleguides/error_handling.md`) | ARCH-DIFF | UPDATE | BOTH |
| 8 | Operating rules | `a1f0680` | `conductor/code_styleguides/data_oriented_design.md` is derived from this file | PARITY (DERIVED) | UPDATE | BOTH |
| 9 | Case-study methodology | both case-study repos (cross-cutting) | No equivalent yet | GAP | NEW | BOTH |
| 10 | PEP case study | `macton/pep-copt` | n/a (empirical evidence for nagent, not Manual Slop) | n/a | NEW | n/a |
| 11 | Collisions case study | `macton/differentiable-collisions-optc` | n/a | n/a | NEW | n/a |

---

## v2.3 patterns updated by v3

| # | v2.3 pattern | v3 update |
|---|---|---|
| 1 | Durable work, disposable workers | UPDATES: campaigns (§1) extend with explicit plan artifacts |
| 3 | Conversations are editable state | UPDATES: project-local roots (§4) make conversation state project-scoped; hooks (§3) per-turn observability |
| 4 | Visible output protocol | (no update in v3) |
| 5 | The loop | UPDATES: safety net (§2) adds failure-recovery; robustness (§7) hardens 4 failure modes; hooks (§3) per-turn ground-truth |
| 6 | Per-file memory | (no update in v3) |
| 7 | Repository history as data | UPDATES: project-local roots (§4) make `.nagent/` commit-able |
| 8 | Historical coupling & neighborhoods | (no update in v3) |
| 9 | Disposable sub-conversations | UPDATES: delegation rewrite (§6) fixes recursion bug + names two reasons |
| 11 | Large files as explicit artifacts | (no update in v3) |
| 12 | Tool discovery | (no update in v3) |
| 13 | Differences from frameworks | (no update in v3) |
| 14 | Build your own | (no update in v3) |

---

## Sibling-review cross-refs

| Sibling | Section | Relationship |
|---|---|---|
| `fable_review_20260617` | Fable's analysis of Mythos system prompt | Comparator: "what a competitor's agent directives look like" vs. nagent's canonical operating rules; Fable's watch-dogging is the anti-pattern of nagent's data-grounded operating rules (§8) |
| `intent_dsl_survey_20260612` | Survey's Cluster 4 (meta-tooling DSLs) + Cluster 3 (intent-mapping) | Parallel: the 4-prompt case-study methodology (§9) is implicitly an intent-DSL for "drive nagent at an optimization problem" |
| `superpowers_review_20260619` | superpowers `brainstorming` skill | Process parallel: structured questions to refine an idea before implementation, same role as the case-study 4 prompts |

---

## Honest notes

- The v3 verdict for "Provider expansion" is PARITY (DIFFERENT COUNT) — Manual Slop has 8 providers per tech-stack.md (the qwen_llama_grok track adds 3 more); nagent v3 has 6 providers. The count is independent of the abstraction (per-model context windows, billing isolation, ground-truth harness).
- The "Conversation safety net" GAP is the highest-value v3 candidate — the 3-number config (`checkpoint_interval_minutes`, `checkpoint_max_new_kb`, `rebuild_at_kb`) + the sync-checkpoint invariant are concrete patterns Manual Slop can adopt.
- The "Case-study methodology" GAP is the methodology-level insight; the per-case-study sections (§10, §11) are the empirical evidence.
- v3 candidates are in `decisions.md`; the bridge doc is `nagent_takeaways_v3_20260619.md`.

---

## Format commitment: literal 7-column table

Per the v2.3 → v3 format commitment (`no JSON, 7-column tables present`), this section uses the literal v2.3 `| Symbol | Name | Signature | Semantics | Example | Borrowed from | Shape |` schema for the 11 v3 clusters:

| Symbol | Name | Signature | Semantics | Example | Borrowed from | Shape |
|---|---|---|---|---|---|---|
| §1 | Campaigns | `nagent-campaign update {slug} [--dry-run]` | Run one bounded pass; merge worker results, check completion, gate decomposition, dispatch unblocked items; exit | `nagent-campaign update migrate-config --dry-run` | nagent `bin/nagent-campaign` (24cf16d) | [M] mutable aggregate (index.yaml + item.yaml) |
| §2 | Safety net | `run_safety_net(conversation_file, root, llm, settings)` | Wall-clock cadence + burst guard for checkpoints; sync checkpoint first on rebuild; widen tail on writer failure | `checkpoint_interval_minutes: 60, checkpoint_max_new_kb: 256, rebuild_at_kb: 384` | nagent `bin/nagent:1455-1687` (38d3d4f) | [B] boundary (sync-checkpoint invariant) |
| §3 | Hooks | `--hook-per-run CMD` + `--hook-per-file-edit CMD` | Run configured shell hook; inject exit code + stdout + stderr; CLI > config > disabled | `nagent --hook-per-run ./prove-optimized-harness.sh` | nagent `bin/nagent:1442-1484` (a4fb141) | [B] boundary (LLM failure surface) |
| §4 | Project-local roots | `resolve_default_root(root_arg) -> Path` | Root in `{git-toplevel}/.nagent` inside repo, `~/.nagent` outside; 4-layer context (install → user → project → root) with once-per-directory dedup | `--root` overrides | nagent `bin/helpers/nagent_cli.py:36-44` (54c8741) | [S] string concatenation |
| §5 | Provider expansion | `generate_text_with_usage(prompt, provider, model)` | 6 providers; per-model `MODEL_CONTEXT_WINDOWS` verified table; rebuild on byte OR 0.85·window; Together always streamed | `provider="together", model="meta-llama/Llama-3.3-70B-Instruct-Turbo"` | nagent `bin/helpers/nagent_llm.py:13-19` (bdfa2a6) | [B] boundary (SDK call surface) |
| §6 | Delegation rewrite | (no API; prompt-only) | Decompose or isolate, never offload; don't delegate a single small action whose result is no smaller than doing it yourself | "Context isolation is worth more the longer-lived your conversation is" | nagent `bin/nagent:666-673` + `:790-806` (65787a6) | [B] boundary (delegation is the model's call) |
| §7 | Robustness | `dedupe_nodes(nodes) -> list[TagNode]` | Lenient parser extracts valid tags + records IgnoredSpans; dedupe collapses exact duplicates; per-conversation scratch dir | `dedupe_nodes([tag1, tag2, tag2_dup])` | nagent `bin/helpers/nagent_tags.py:248-265` (6b762da) | [I] inspectable transformation |
| §8 | Operating rules | `simplify-pass(current_machine, data_shape) -> improvements` | 9-question pass; Q9 = "different machine?" when plateau detected | `Q9: is there a different algorithm that fits the data better?` | nagent `context/data-oriented-design.md:151-164` (a1f0680) | [S] string of questions |
| §9 | Case-study methodology | `case-study(input, model, target) -> result` | 5-element pattern: 4 prompts + harness + log + freeze + subject; parameterizable match contract | `prompts/create-{reference,optimized-test-harness,optimized,visualizer}.md` | both case-study repos (cross-cutting) | [B] boundary (data-meets-measurement) |
| §10 | PEP case study | (empirical) | 2.04× speedup aggregate; byte-identity-strict; 24-image benchmark; 6 kept optimizations | `palette hash + block-prefix sums + early-abandon + ...` | `macton/pep-copt/src-optimized/OPTIMIZATION-LOG.md` | [B] boundary (case study as artifact) |
| §11 | Collisions case study | (empirical) | 101.06× committed; tolerance-based; 26+ iterations; 4 explicit REJECTED | `GJK/bisection + per-type SAT + analytic witness + ...` | `macton/differentiable-collisions-optc/src-optimized/OPTIMIZATION-LOG.md` | [B] boundary (case study as artifact) |

This table satisfies the v2.3 → v3 format commitment #2 (`a row beginning with '| Symbol |' is found in `comparison_table.md``) using the same 7-column schema as v2.3 (`Symbol | Name | Signature | Semantics | Example | Borrowed from | Shape`).