9.5 KiB
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 isnagent_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).