9cc51ca9af
Reference/analysis track. Produces 0 code changes. Artifacts (conductor/tracks/nagent_review_20260608/): - spec.md (240 lines) - track wrapper with Application/Meta-Tooling framing - report.md (571 lines) - 14-section deep-dive; primary deliverable - comparison_table.md (79 lines) - flat side-by-side reference - decisions.md (286 lines) - 10 future-track candidates with priority matrix - nagent_takeaways_20260608.md (363 lines) - 10 actionable patterns grounded in code (file:line refs into nagent source and Manual Slop source) - metadata.json (132 lines) - structured metadata + verification criteria - state.toml (113 lines) - per-task tracking + user-corrections log (7 entries) 14 nagent principles covered in report.md (durable work, text-in/text-out, editable state, visible protocol, the loop, per-file memory, repo history, neighborhoods, sub-conversations, controlled writes, large files, tool discovery, framework differences, build your own). 6 pitfalls (revised from 8 after user-corrections): 1. No structured output protocol in Application AI (opaque function calling) 2. Provider-specific history in process globals (ai_client._anthropic_history + _deepseek_history + _minimax_history) 3. RAG is not 'history as data' (fuzzy, not auditable) 4. AI client is a stateful singleton (2,685-line ai_client.py) 5. No non-MMA disposable sub-conversations (1:1 gap; user-flagged want) 6. Hard-coded tool discovery (45-tool if/elif in mcp_client.py) User-corrections applied (3 rounds, 7 total corrections recorded): - Editable discussions: PARTIAL -> PARITY (DIFFERENT FOCUS) with full A1-A7 per-entry + B1-B11 discussion-level + C1-C5 undo/redo operation matrix - Per-file memory: DOMAIN MISMATCH -> MANUAL SLOP IS STRONGER IN CURATION DIMENSION (FileItem + ContextPreset vs nagent's inode-keyed conversation log; complementary, not equivalent) - Sub-conversations: MMA has it; 1:1 does not -> 'PARITY for MMA; GAP for 1:1 discussions' (user wants this) - RAG: opt-in, not gap; user wants pre-staging via sub-conversation - Personas: config bundling (can opt out via AI settings) - Tool discovery: deferred (user has 'intent based DSL' idea but 'no where near that ideation yet') 10 actionable takeaways (separate from the 6 pitfalls - those are diagnosis, these are prescription): 1. State visibility (UI inspector for in-process state) 2. Readable conversation log (text-greppable, not just JSON-L) 3. Sub-agents for 1:1 (HIGH priority - user-flagged) 4. File-identity over file-path (st_dev:st_ino rename-safe) 5. One loop shape visible in diagnostics 6. Visible retry on protocol failure 7. Meta-Tooling DSL (intent-based, deferred) 8. Self-describing tools (subsumed by mcp_architecture_refactor_20260606) 9. Single source of truth for disc_entries + provider history 10. Sub-agent return type constraint (bake into candidate #1 spec) Domain classification: every recommendation tagged Application / Meta-Tooling / Both per docs/guide_meta_boundary.md. nagent lives in the Meta-Tooling domain; Manual Slop's Application AI is a different kind of thing. No code modified by this track (reference/analysis only). All 7 files parse cleanly (JSON, TOML, Markdown). All internal cross-links resolve. Track is 'active' awaiting human review; future-track candidates live in decisions.md and nagent_takeaways_20260608.md.
114 lines
8.7 KiB
TOML
114 lines
8.7 KiB
TOML
# Track state for nagent_review_20260608
|
|
# Reference/analysis track — no implementation phases
|
|
# Updated by Tier 2 Tech Lead as track progresses (currently: complete)
|
|
|
|
[meta]
|
|
track_id = "nagent_review_20260608"
|
|
name = "nagent Review (Mike Acton's data-oriented LLM agent reference)"
|
|
status = "active"
|
|
current_phase = 0 # 0 = pre-completion; this track produces no code phases
|
|
last_updated = "2026-06-08"
|
|
|
|
[user_corrections_log]
|
|
# Corrections applied to the first draft based on direct user feedback during review
|
|
# Format: 2026-06-08_NN = "correction" (NN is sequence number to ensure TOML key uniqueness)
|
|
2026-06-08_1 = "Editable discussions: PARTIAL -> PARITY (DIFFERENT FOCUS). User pointed at HistoryManager, project_manager.branch_discussion, UISnapshot — Manual Slop has editable UI state, not editable raw transcripts."
|
|
2026-06-08_2 = "Per-file memory: DOMAIN MISMATCH -> MANUAL SLOP IS STRONGER IN CURATION DIMENSION. User pointed at FileItem (path + view_mode + ast_mask + custom_slices), ContextPreset, aggregate.py. Manual Slop's per-file memory is the curation kind, not the conversation-log kind."
|
|
2026-06-08_3 = "Sub-conversations: removed 'PARITY stronger' claim. User clarified MMA has it but 1:1 discussions do not. Added 'GAP for 1:1 discussions' + user-flagged 'want' for future sub-conversation track."
|
|
2026-06-08_4 = "RAG: clarified as opt-in, not gap. User wants pre-staging via sub-conversation ('Would be cool to have a sub agent maybe prepare a rag chunks before I use them in a run')."
|
|
2026-06-08_5 = "Personas: reframed as config bundling, not gap. User noted personas can be completely opted out by using AI settings directly. They 'just bundle preparatory cruft.'"
|
|
2026-06-08_6 = "Tool discovery: downgraded to 'intentional, low priority'. User has 'intent based DSL' idea but 'no where near that ideation yet.'"
|
|
2026-06-08_7 = "Editable discussions: REVISED AGAIN. User pointed out the report's §3 verdict (PARITY/DIFFERENT FOCUS) didn't enumerate the per-entry operations. After re-reading gui_2.py:3770-3853 (render_discussion_entry) and gui_2.py:4239-4260 (render_discussion_entry_controls) and history.py (UISnapshot/HistoryManager), the report's §3 now lists the full A1-A7 per-entry + B1-B11 discussion-level + C1-C5 undo/redo operations. The verdict remains PARITY (DIFFERENT FOCUS) but the gap is more precisely scoped: Manual Slop's editing is more granular at the typed-entry layer; nagent's is deeper at the raw-transcript layer. The 'raw transcript is in process globals' framing in the previous draft is still correct as a *layer* description, but the report now correctly characterizes Manual Slop's editing as comprehensive at the user-visible layer."
|
|
|
|
[tasks]
|
|
# Reference track; no implementation tasks. Future-track candidates live in decisions.md.
|
|
# Listing for accountability:
|
|
|
|
t_reference_01 = { status = "completed", commit_sha = "", description = "Read nagent README + bin/nagent in full" }
|
|
t_reference_02 = { status = "completed", commit_sha = "", description = "Read all 6 nagent helper files in full (cli, llm, file_edit, file_split, file_patch, file_summarize)" }
|
|
t_reference_03 = { status = "completed", commit_sha = "", description = "Read all 4 nagent executable scripts in full (nagent-file-edit, nagent-file-split, nagent-file-patch, nagent-file-summarize)" }
|
|
t_reference_04 = { status = "completed", commit_sha = "", description = "Read Manual Slop docs/ in full (12 guides + Readme)" }
|
|
t_reference_05 = { status = "completed", commit_sha = "", description = "Read Manual Slop src/ files selectively for user-corrections (models.py FileItem + ContextPreset, context_presets.py, project_manager.py, aggregate.py, history.py)" }
|
|
t_write_01 = { status = "completed", commit_sha = "", description = "Draft spec.md (track wrapper)" }
|
|
t_write_02 = { status = "completed", commit_sha = "", description = "Draft report.md (14-section deep-dive analysis; primary deliverable)" }
|
|
t_write_03 = { status = "completed", commit_sha = "", description = "Draft comparison_table.md (flat side-by-side reference)" }
|
|
t_write_04 = { status = "completed", commit_sha = "", description = "Draft decisions.md (10 future-track candidates)" }
|
|
t_write_05 = { status = "completed", commit_sha = "", description = "Create metadata.json + state.toml" }
|
|
t_write_06 = { status = "completed", commit_sha = "", description = "Draft nagent_takeaways_20260608.md (10 actionable patterns; companion to report.md)" }
|
|
t_write_07 = { status = "pending", commit_sha = "", description = "Add entry to conductor/tracks.md (post-commit)" }
|
|
t_write_08 = { status = "pending", commit_sha = "", description = "Human review of report.md + nagent_takeaways_20260608.md (final)" }
|
|
t_archive = { status = "pending", commit_sha = "", description = "Move track to conductor/tracks/archive/ when follow-up tracks are specced (or sooner if no value remains)" }
|
|
|
|
[user_wants_recorded]
|
|
# User explicitly wants these in priority order (see decisions.md for full detail)
|
|
want_1_sub_conversation_runner = "EXPLICIT: 'I probably want to add that for just 1:1 discussions where I use a sub-agent manually for specific points'"
|
|
want_2_rag_pre_staging = "EXPLICIT: 'Would be cool to have a sub agent maybe prepare a rag chunks before I use them in a run'"
|
|
deferred_intent_dsl = "EXPLICIT but deferred: 'I want to add an intent based dsl to help with discovery or combinatorics but no where near that ideation yet'"
|
|
|
|
[verification]
|
|
# Reference/analysis track; verification is artifact presence + user-correction application
|
|
|
|
report_md_exists = true
|
|
comparison_table_md_exists = true
|
|
decisions_md_exists = true
|
|
spec_md_exists = true
|
|
metadata_json_exists = true
|
|
state_toml_exists = true
|
|
nagent_takeaways_md_exists = true
|
|
|
|
# All 14 nagent principles have a corresponding section in report.md
|
|
all_14_principles_covered = true
|
|
|
|
# All user-corrections applied to first draft
|
|
all_user_corrections_applied = true
|
|
|
|
# All pitfalls are domain-tagged (Application / Meta-Tooling / Both)
|
|
all_pitfalls_domain_tagged = true
|
|
|
|
# Track produces no code (it's a reference/analysis track)
|
|
no_code_modified = true
|
|
|
|
# No links broken in comparison_table.md, decisions.md, report.md, spec.md, nagent_takeaways_20260608.md
|
|
all_internal_links_valid = true # verified by post-edit grep
|
|
|
|
# 10 actionable takeaways grounded in actual code (file:line refs)
|
|
takeaways_grounded_in_code = true
|
|
|
|
[nagent_principles_covered]
|
|
# 14 of 14 — full coverage
|
|
durable_work = "covered in report §1"
|
|
text_in_text_out = "covered in report §2"
|
|
editable_state = "covered in report §3"
|
|
visible_protocol = "covered in report §4"
|
|
the_loop = "covered in report §5"
|
|
per_file_memory = "covered in report §6"
|
|
repo_history = "covered in report §7"
|
|
neighborhoods = "covered in report §8"
|
|
sub_conversations = "covered in report §9"
|
|
controlled_writes = "covered in report §10"
|
|
large_files = "covered in report §11"
|
|
tool_discovery = "covered in report §12"
|
|
differences_from_frameworks = "covered in report §13"
|
|
build_your_own = "covered in report §14"
|
|
|
|
[future_track_candidates]
|
|
# See decisions.md for full detail. 10 candidates.
|
|
|
|
candidate_01_sub_conversation_runner = { priority = "HIGH", user_flag = "explicit want", domain = "App + MT", effort = "Medium" }
|
|
candidate_02_rag_pre_staging = { priority = "HIGH", user_flag = "explicit want", domain = "App", effort = "Small (depends on #1)" }
|
|
candidate_03_stateless_llm_client = { priority = "MEDIUM", user_flag = "none", domain = "App", effort = "Large" }
|
|
candidate_04_intent_dsl = { priority = "LOW", user_flag = "explicit but deferred", domain = "MT", effort = "Research" }
|
|
candidate_05_self_describing_tools = { priority = "LOW", user_flag = "implicit", domain = "BOTH", effort = "Medium (subsumed by mcp_architecture_refactor)" }
|
|
candidate_06_git_history_injection = { priority = "MEDIUM", user_flag = "none", domain = "App", effort = "Medium" }
|
|
candidate_07_per_file_conversation_log = { priority = "LOW", user_flag = "none", domain = "App", effort = "Small" }
|
|
candidate_08_coedited_files_tools = { priority = "LOW", user_flag = "none", domain = "App", effort = "Small (bundle with #6)" }
|
|
candidate_09_split_patch_lib = { priority = "DEFER", user_flag = "none", domain = "App", effort = "Medium (defer until need)" }
|
|
candidate_10_raw_transcript_persistence = { priority = "LOW", user_flag = "none", domain = "App", effort = "Small" }
|
|
|
|
[status]
|
|
# Track is a reference/analysis track; "active" means the artifacts are ready for review
|
|
# The track will move to "completed" and be archived when:
|
|
# (a) At least one of the follow-up tracks (candidates 1-2) is specced, OR
|
|
# (b) The user explicitly says the analysis is no longer needed
|
|
status = "active (reference artifacts ready; awaiting human review + follow-up track scoping)"
|