13 KiB
nagent_review_v3.1 — Comparison Table
Date: 2026-06-20
Spec pair: spec_v3.1.md + plan_v3.1.md
Companion: nagent_review_v3_1_report_20260620.md (the v3.1 thickened main review); decisions.md (v3.1 candidate list); nagent_takeaways_v3_1_20260620.md (bridge to v3 takeaways + sibling reviews); nagent_review_v3_20260619.md (the v3 main review, preserved unchanged per user directive 2026-06-20).
Source: nagent v3.1 (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.1 cluster + one row per v2.3 pattern that v3.1 updates. Verdicts and pitfalls are in nagent_review_v3_1_report_20260620.md.
File-naming note (user directive 2026-06-20). The v3.1 thickened content is in a NEW file (
nagent_review_v3_1_report_20260620.md), not innagent_review_v3_20260619.md(the v3 main review, which is preserved unchanged). The delta summary isnagent_review_v3_1_20260620.md. Seemetadata.jsonv3_1_file_separationfield for the file structure.
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 v3), UPDATE (extends v3 cluster).
v3.1 new sections
| # | Section | nagent source | Manual Slop equivalent | Verdict | Status | Domain |
|---|---|---|---|---|---|---|
| 12 | YAML avoidance | nagent uses YAML for campaigns/distill/knowledge; user does NOT adopt | SUBSUMED (Manual Slop convention: markdown + custom DSL) | NEW | n/a | BOTH |
| 13 | Agent context-window observations | n/a (empirical findings from the user) | Manual Slop's docs/ + conductor/ markdown navigation is partial mitigation; agents frequently forget to read |
GAP | NEW | BOTH |
| 14 | Fine-tuning observations | n/a (user interest + vendor notice) | Manual Slop could provide the curated dataset; vendor selection is separate | n/a (observation, not comparison) | NEW | n/a |
v3 clusters (carried forward, thickened in v3.1)
| # | 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.1
| # | v2.3 pattern | v3.1 update |
|---|---|---|
| 1 | Durable work, disposable workers | UPDATES: campaigns (§1) extend with explicit plan artifacts; v3.1 §13 notes that "different machine" (Q9) is a more radical form of "disposable" |
| 3 | Conversations are editable state | UPDATES: project-local roots (§4) make conversation state project-scoped; hooks (§3) per-turn observability; v3.1 §13 notes the per-turn hook as the structural mechanism for the cycle |
| 4 | Visible output protocol | (no update in v3.1) |
| 5 | The loop | UPDATES: safety net (§2) adds failure-recovery; robustness (§7) hardens 4 failure modes; hooks (§3) per-turn ground-truth; v3.1 §13 reframes the cycle as compact→re-warm→continue |
| 6 | Per-file memory | (no update in v3.1) |
| 7 | Repository history as data | UPDATES: project-local roots (§4) make .nagent/ commit-able |
| 8 | Historical coupling & neighborhoods | (no update in v3.1) |
| 9 | Disposable sub-conversations | UPDATES: delegation rewrite (§6) fixes recursion bug + names two reasons |
| 11 | Large files as explicit artifacts | (no update in v3.1) |
| 12 | Tool discovery | (no update in v3.1) |
| 13 | Differences from frameworks | (no update in v3.1) |
| 14 | Build your own | (no update in v3.1) |
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) + Cluster 5 (SSDL shape primitives) | Parallel: the 4-prompt case-study methodology (§9) is implicitly an intent-DSL for "drive nagent at an optimization problem"; v3.1 §12 (YAML avoidance) cites the survey's Cluster 5 as the project's DSL primitive |
superpowers_review_20260619 |
superpowers brainstorming skill |
Process parallel: structured questions to refine an idea before implementation, same role as the case-study 4 prompts; v3.1 §12 (YAML avoidance) cites the superpowers review as the project's markdown-driven convention |
Honest notes
- The v3.1 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.1 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.
- The "YAML avoidance" SUBSUMED is a "do not adopt" flag, not a "must not exist" ban. The user can still read and parse YAML (e.g., when reading nagent's source); the avoidance is for new Manual Slop artifacts.
- The "Agent context-window observations" GAP is the structural insight (warm-up + window + safe zone + cycle); the nagent
--hook-per-runpattern is the structural mechanism that closes the gap. - The "Fine-tuning observations" is observational, not a comparison. Vendor analysis is a separate future track.
- v3.1 candidates are in
decisions.md; the bridge doc isnagent_takeaways_v3_1_20260620.md.
Format commitment: literal 7-column table
Per the v2.3 → v3 → v3.1 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 14 v3.1 sections (11 clusters + 3 new):
| 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 (markdown + frontmatter, NOT YAML per §12) |
| §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) |
| §12 | YAML avoidance | (do not adopt) | nagent uses YAML for campaigns/distill/knowledge; Manual Slop uses markdown + frontmatter (TOML precedent) + custom DSL (survey grammar + SSDL) | +++ slug = "..." +++ TOML frontmatter + markdown body |
user directive 2026-06-20; intent_dsl_survey_20260612 Cluster 5; superpowers_review_20260619 |
[M] mutable aggregate (markdown+DSL, NOT YAML) |
| §13 | Agent context-window observations | (empirical) | ~100-150k warm-up; ~500k window (MiniMax M3); 250-350k safe zone; compact→re-warm→continue; nagent --hook-per-run is the structural mechanism |
--hook-per-run "cat conductor/workflow.md" |
user directive 2026-06-20; nagent §3 Hooks cluster | [B] boundary (per-turn ground-truth injection) |
| §14 | Fine-tuning observations | (observational) | Current models bottlenecked by not having conventions baked in; curated dataset (Manual Slop's own tracks + styleguides); 6 prosumer vendors surveyed; vendor selection deferred | Together.ai, Fireworks.ai, OpenAI 4o-mini, Anthropic Haiku, Gemini Flash, local Unsloth | user directive 2026-06-20 | n/a (observation, not comparison) |
This table satisfies the v2.3 → v3 → v3.1 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).