kenaz 0.3.22 → 0.3.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/core/.claude/hooks/_user-scope.js +1 -1
  2. package/core/.claude/hooks/core-resolve.js +1 -1
  3. package/core/.claude/hooks/worktree-create.js +6 -6
  4. package/core/.claude/hooks/worktree-remove.js +4 -4
  5. package/core/.collaboration/core/reconcile.js +16 -1
  6. package/core/.collaboration/core/task-2467-lifecycle.test.js +63 -0
  7. package/core/.collaboration/core/task-api.js +37 -7
  8. package/core/.formation/bifrost/launch.js +1 -1
  9. package/core/.formation/tools/kenaz-stats.js +1 -1
  10. package/core/.formation/tools/post-complete/git-merge.js +1 -1
  11. package/core/.formation/tools/prompt.js +1 -1
  12. package/core/.kenaz/specialist/ansuz_rules.yaml +7 -51
  13. package/core/.kenaz/specialist/ansuz_session_handoff.schema.json +2 -6
  14. package/core/.rule/general/project-self-containment.yaml +2 -2
  15. package/core/.specialist/Amelia/README.md +1 -1
  16. package/core/.specialist/Amelia/rule.yaml +1 -1
  17. package/core/.specialist/Ansuz/RULES.md +1 -1
  18. package/core/.specialist/Ansuz/concepts/commitment_layer.yaml +1 -1
  19. package/core/.specialist/Ansuz/concepts/evolvable_guardrails.yaml +1 -1
  20. package/core/.specialist/Ansuz/knowledge.yaml +1 -3
  21. package/core/.specialist/tools/__tests__/task-2409-lessons.test.js +10 -0
  22. package/core/.specialist/tools/__tests__/task-2427-harvest.test.js +25 -0
  23. package/core/.specialist/tools/ansuz-boot-fast.js +1 -1
  24. package/core/.specialist/tools/failure-detector.js +4 -4
  25. package/core/.specialist/tools/handoff-doc.js +1 -1
  26. package/core/.specialist/tools/lessons.js +2 -2
  27. package/core/CLAUDE.md +5 -5
  28. package/core/KENAZ_CORE_VERSION +1 -1
  29. package/core/dashboard/scripts/install-kenaz-cli.js +21 -6
  30. package/core/dev/scripts/check-file-size.js +1 -1
  31. package/core/dev/scripts/ci-feedback.js +1 -1
  32. package/core/dev/scripts/gc-agent-worktrees.js +11 -11
  33. package/core/dev/scripts/kenaz-session.js +3 -3
  34. package/core/dev/scripts/peer-identity-e2e.js +3 -3
  35. package/core/dev/scripts/run-rust-tests.js +2 -2
  36. package/core/dev/scripts/skill-routing-replay.js +3 -3
  37. package/core/dev/scripts/task1961/selftest.js +2 -2
  38. package/core/dev/scripts/windows-hide-guard.test.js +97 -0
  39. package/core/plugins/kenaz/guidance.md +1 -0
  40. package/core/plugins/kenaz/hooks/core-resolve.js +1 -1
  41. package/core/plugins/kenaz/hooks/kenaz-hook.js +52 -4
  42. package/core/plugins/kenaz/scripts/kenaz.test.js +72 -5
  43. package/lib/cli.js +9 -5
  44. package/package.json +6 -6
  45. package/vendor/install-kenaz-cli.js +21 -6
  46. package/core/.kenaz/designs/METAPLASTICITY_CONFIDENCE_DESIGN.md +0 -537
  47. package/core/.kenaz/designs/REFLEX_INITIATOR_DESIGN.md +0 -501
  48. package/core/.kenaz/designs/TASK_1385_handoff_mcp_design.md +0 -426
  49. package/core/.kenaz/designs/TASK_932_hippocampus_consolidation.md +0 -103
  50. package/core/.kenaz/designs/TASK_934_efe_signal_engine.md +0 -97
  51. package/core/.kenaz/designs/TASK_935_self_evolution_framework.md +0 -154
  52. package/core/.kenaz/designs/VISION_cognitive_architecture_roadmap.md +0 -159
  53. package/core/.kenaz/designs/metaplasticity_simulation_results.json +0 -696
  54. package/core/.kenaz/main-memory/README.md +0 -230
  55. package/core/.kenaz/main-memory/kenaz/cortex/001_cortex_overview.md +0 -168
  56. package/core/.kenaz/main-memory/kenaz/cortex/001_rag_engine_overview.md +0 -30
  57. package/core/.kenaz/main-memory/kenaz/memory-system/001_three_tier_architecture.md +0 -361
  58. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_execution_flow.md +0 -117
  59. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_granularity.md +0 -154
  60. package/core/.kenaz/main-memory/kenaz/pipeline/002_team_priority.md +0 -51
  61. package/core/.kenaz/main-memory/kenaz/pipeline/003_feature_id_system.md +0 -46
  62. package/core/.kenaz/main-memory/kenaz/rules/001_gen_007_self_containment.md +0 -108
  63. package/core/.kenaz/main-memory/kenaz/rules/001_rule_priority_system.md +0 -121
  64. package/core/.kenaz/main-memory/kenaz/rules/002_agt_006_pre_check.md +0 -0
  65. package/core/.kenaz/main-memory/kenaz/rules/003_ppl_002_task_archival.md +0 -48
  66. package/core/.kenaz/main-memory/kenaz/system/001_dual_track_task_system.md +0 -197
  67. package/core/.kenaz/main-memory/knowledge/patterns/001_json_bom_issue.md +0 -78
  68. package/core/.kenaz/main-memory/knowledge/patterns/001_leader_worker_pattern.md +0 -0
  69. package/core/.kenaz/main-memory/knowledge/patterns/002_scope_path_conflict.md +0 -115
  70. package/core/.kenaz/main-memory/knowledge/patterns/002_task_dependency_resolution.md +0 -223
  71. package/core/.kenaz/main-memory/knowledge/patterns/003_question_protocol.md +0 -242
  72. package/core/.kenaz/main-memory/knowledge/patterns/004_user_insight_value.md +0 -111
  73. package/core/.kenaz/main-memory/knowledge/patterns/005_file_lock_pattern.md +0 -274
  74. package/core/.kenaz/main-memory/knowledge/references/001_ppl_rules.md +0 -28
  75. package/core/.kenaz/main-memory/knowledge/solutions/001_json_bom_issue.md +0 -137
  76. package/core/.kenaz/main-memory/knowledge/solutions/001_team_invocation.md +0 -0
  77. package/core/.kenaz/main-memory/knowledge/solutions/002_passive_monitoring.md +0 -0
  78. package/core/.kenaz/main-memory/knowledge/solutions/003_windows_file_race_condition.md +0 -239
  79. package/core/.kenaz/main-memory/registry.json +0 -326
  80. package/core/.kenaz/main-memory/version.yaml +0 -58
  81. package/core/.kenaz/specialist/memory_guard_fired.json +0 -1
  82. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +0 -1
  83. package/core/.kenaz/specialist/memory_source_priority.yaml +0 -260
  84. package/core/.kenaz/specialist/prompt_1775.txt +0 -317
  85. package/core/.kenaz/specialist/prompt_1776.txt +0 -326
  86. package/core/.kenaz/specialist/prompt_1791.txt +0 -320
  87. package/core/.kenaz/specialist/prompt_1792.txt +0 -320
  88. package/core/.kenaz/specialist/prompt_1795.txt +0 -281
  89. package/core/.kenaz/specialist/prompt_1813.txt +0 -332
  90. package/core/.kenaz/specialist/prompt_1814.txt +0 -401
  91. package/core/.kenaz/specialist/prompt_1815.txt +0 -394
  92. package/core/.kenaz/specialist/prompt_1816.txt +0 -437
  93. package/core/.kenaz/specialist/prompt_1818.txt +0 -361
  94. package/core/.kenaz/specialist/prompt_1819.txt +0 -421
  95. package/core/.kenaz/specialist/prompt_1821.txt +0 -345
  96. package/core/.kenaz/specialist/prompt_1822.txt +0 -313
  97. package/core/.kenaz/specialist/prompt_1824.txt +0 -348
  98. package/core/.kenaz/specialist/prompt_1826.txt +0 -388
  99. package/core/.kenaz/specialist/rune_efe_salience_gap.md +0 -21
  100. package/core/.kenaz/specialist/task1825_update.json +0 -43
  101. package/core/.kenaz/specialist/taskgen/consolidation_i.json +0 -38
  102. package/core/.kenaz/specialist/taskgen/csharp_a.json +0 -44
  103. package/core/.kenaz/specialist/taskgen/csharp_b.json +0 -40
  104. package/core/.kenaz/specialist/taskgen/embedding_e.json +0 -34
  105. package/core/.kenaz/specialist/taskgen/hygiene_fg.json +0 -39
  106. package/core/.kenaz/specialist/taskgen/pathology_h.json +0 -36
  107. package/core/.kenaz/specialist/taskgen/unity_noise_d.json +0 -38
  108. package/core/.kenaz/specialist/taskgen/visibility_c.json +0 -38
  109. package/core/.specialist/Ansuz/decisions/ADR-requirement-graph-layer.md +0 -390
  110. package/core/.specialist/Ansuz/self_model_seed.backup.json +0 -100
  111. package/core/.specialist/ansuz_session_handoff.json +0 -96
  112. package/core/dev/ALAYA_FIELD_FEEDBACK_DESIGN.md +0 -126
  113. package/core/dev/ANSUZ_SCAFFOLD_DIET_2026-09-20.md +0 -231
  114. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +0 -355
  115. package/core/dev/ANSUZ_WORKFLOW_MODERNIZATION.md +0 -143
  116. package/core/dev/CORTEX_META_GRAPH_ASSESSMENT.md +0 -99
  117. package/core/dev/FREYA_DOWNSTREAM_BUGS_2026-09-19.md +0 -44
  118. package/core/dev/GLOBAL_MEMORY_IDENTITY_CONSOLIDATION.md +0 -263
  119. package/core/dev/GUARD_EFFECTIVENESS_DESIGN.md +0 -180
  120. package/core/dev/HEALTH_GATE_VARIANCE_ASSESSMENT.md +0 -271
  121. package/core/dev/HOOK_DIET_2026-09-21.md +0 -126
  122. package/core/dev/JEV_INTEGRATION_PLAN.md +0 -189
  123. package/core/dev/KENAZ_AGENT_CONNECT_v1_SPEC.md +0 -139
  124. package/core/dev/MOBILE_DESIGN_SPEC.md +0 -569
  125. package/core/dev/MULTI_ANSUZ_SPEC.md +0 -136
  126. package/core/dev/MUNINN_RETIREMENT.md +0 -115
  127. package/core/dev/PHASE3_ATTRIBUTION_POPULATION_DIAGNOSIS.md +0 -211
  128. package/core/dev/PHASE3_P3-2B_TASKLEVEL_PROBE.md +0 -83
  129. package/core/dev/PHASE3_P3-2_POPULATION_DISJOINTNESS.md +0 -83
  130. package/core/dev/PHASE3_P3-2_REMEASURE_REPORT.md +0 -231
  131. package/core/dev/PREDICTION_GROUNDING_DESIGN.md +0 -376
  132. package/core/dev/PRODUCT_SPEC.md +0 -317
  133. package/core/dev/PROJECT_REGISTRY_DUPLICATE_ASSESSMENT.md +0 -86
  134. package/core/dev/STARTUP_TIMELINE_TASK_1995.md +0 -181
  135. package/core/dev/SYNAPSE_WORKER_PER_PROJECT.md +0 -881
  136. package/core/dev/TASK_1680_P3-3_DISPATCH_SPEC.md +0 -96
  137. package/core/dev/TASK_1684_CALIBRATION_IMPACT_ANALYSIS.md +0 -170
  138. package/core/dev/TASK_1684_FORK_A_GOODHART_DESIGN.md +0 -171
  139. package/core/dev/TASK_1684_P3_2_REMEASURE_VALIDATION.md +0 -262
  140. package/core/dev/TASK_1903_SIGNAL_AUC_MEASUREMENT.md +0 -207
  141. package/core/dev/TASK_1904_BRANCH_INTEGRITY_AUDIT.md +0 -146
  142. package/core/dev/ansuz-eval/README.md +0 -38
  143. package/core/dev/ansuz-eval/build-fixtures.js +0 -87
  144. package/core/dev/ansuz-eval/grade.js +0 -96
  145. package/core/dev/ansuz-eval/grader.test.js +0 -117
  146. package/core/dev/ansuz-eval/tasks.md +0 -32
  147. package/core/dev/archive/ansuz/BOOT_FULL.md +0 -141
  148. package/core/dev/archive/ansuz/agents/ansuz-boot.md +0 -176
  149. package/core/dev/archive/ansuz/designs/alaya-passive-surfacing.md +0 -84
  150. package/core/dev/archive/ansuz/designs/cc_memory_indexing.md +0 -307
  151. package/core/dev/archive/ansuz/designs/check_guard.md +0 -322
  152. package/core/dev/archive/ansuz/designs/consequence_loop.md +0 -227
  153. package/core/dev/archive/ansuz/designs/mcp_kuzudb_lock_architecture.md +0 -312
  154. package/core/dev/archive/ansuz/designs/phase0_git_enrichment.md +0 -278
  155. package/core/dev/archive/ansuz/designs/refactor_mcp_tools_synapse.md +0 -490
  156. package/core/dev/archive/ansuz/designs/semantic_markdown_extraction.md +0 -167
  157. package/core/dev/archive/ansuz/designs/task_1372_prompt_injects_into.md +0 -193
  158. package/core/dev/archive/ansuz/designs/thought_stack.md +0 -286
  159. package/core/dev/archive/ansuz/investigations/reachability_unified_api_2026-04-11.md +0 -330
  160. package/core/dev/archive/ansuz/investigations/synapse_orphans_indexing_bug_2026-04-11.md +0 -352
  161. package/core/dev/archive/ansuz/investigations/synapse_orphans_reindex_verification_2026-04-11.md +0 -48
  162. package/core/dev/archive/ansuz/investigations/synapse_orphans_verification_2026-04-11.md +0 -170
  163. package/core/dev/archive/ansuz/legacy/kernel.yaml +0 -399
  164. package/core/dev/archive/ansuz/legacy/phases/phase_0.yaml +0 -418
  165. package/core/dev/archive/ansuz/legacy/phases/phase_1.yaml +0 -376
  166. package/core/dev/archive/ansuz/legacy/phases/phase_10.yaml +0 -35
  167. package/core/dev/archive/ansuz/legacy/phases/phase_11.yaml +0 -582
  168. package/core/dev/archive/ansuz/legacy/phases/phase_2.yaml +0 -94
  169. package/core/dev/archive/ansuz/legacy/phases/phase_3.yaml +0 -274
  170. package/core/dev/archive/ansuz/legacy/phases/phase_4.yaml +0 -67
  171. package/core/dev/archive/ansuz/legacy/phases/phase_5.yaml +0 -32
  172. package/core/dev/archive/ansuz/legacy/phases/phase_6.yaml +0 -91
  173. package/core/dev/archive/ansuz/legacy/phases/phase_7.yaml +0 -58
  174. package/core/dev/archive/ansuz/legacy/phases/phase_8.yaml +0 -146
  175. package/core/dev/archive/ansuz/legacy/phases/phase_9.yaml +0 -424
  176. package/core/dev/archive/ansuz/specs/INDEX_bifrost_hook_parity.yaml +0 -92
  177. package/core/dev/archive/ansuz/specs/active-inference-formation.yaml +0 -453
  178. package/core/dev/archive/ansuz/specs/brief_TASK_1228_userpromptsubmit.yaml +0 -191
  179. package/core/dev/archive/ansuz/specs/brief_TASK_1229_pretooluse_posttooluse.yaml +0 -250
  180. package/core/dev/archive/ansuz/specs/brief_TASK_1230_sessionstart_stop.yaml +0 -301
  181. package/core/dev/archive/ansuz/specs/brief_TASK_1231_verification.yaml +0 -272
  182. package/core/dev/archive/skills/feature_agent/SKILL.md +0 -289
  183. package/core/dev/design/PHASE4_DESIGN.md +0 -559
  184. package/core/dev/design/dashboard_docs_integration_PLAN.md +0 -388
  185. package/core/dev/design/matrix_format_ABBREVIATIONS.md +0 -655
  186. package/core/dev/design/matrix_format_DESIGN_SPEC.md +0 -601
  187. package/core/dev/design/matrix_format_DISCUSSION_SUMMARY.md +0 -484
  188. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +0 -13
  189. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +0 -9
  190. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +0 -14
  191. package/core/dev/design/matrix_format_SYNTAX_BNF.md +0 -754
  192. package/core/dev/design/matrix_format_TOKEN_COMPARISON.md +0 -484
  193. package/core/dev/design/matrix_v2_COGNITIVE_DESIGN.md +0 -503
  194. package/core/dev/design/matrix_v2_DISCUSSION_SUMMARY.md +0 -414
  195. package/core/dev/design/matrix_v2_EXAMPLE.matrix +0 -67
  196. package/core/dev/designs/EXPANDABLE_CARD_DESIGN_SPEC.md +0 -509
  197. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +0 -52
  198. package/core/dev/jev-eval/ANNOTATION_GUIDE.md +0 -68
  199. package/core/dev/jev-eval/BASELINE_COMPARISON.md +0 -45
  200. package/core/dev/jev-eval/CONTEXT_REVIEW.md +0 -31
  201. package/core/dev/jev-eval/EVALUATION_STATUS.md +0 -39
  202. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +0 -33
  203. package/core/dev/jev-eval/PACKAGING_VERIFICATION.md +0 -42
  204. package/core/dev/jev-eval/README.md +0 -101
  205. package/core/dev/jev-eval/THALAMUS_RANKING.md +0 -58
  206. package/core/dev/jev-eval/VALIDATION_PROGRESS.md +0 -54
  207. package/core/dev/jev-eval/cli.mjs +0 -50
  208. package/core/dev/jev-eval/context.mjs +0 -183
  209. package/core/dev/jev-eval/corpus.mjs +0 -186
  210. package/core/dev/jev-eval/fixtures/conversation-review.seed.jsonl +0 -6
  211. package/core/dev/jev-eval/fixtures/synthetic.jsonl +0 -11
  212. package/core/dev/jev-eval/metrics.mjs +0 -67
  213. package/core/dev/jev-eval/muninn-baseline.mjs +0 -119
  214. package/core/dev/jev-eval/providers.mjs +0 -95
  215. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +0 -32
  216. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +0 -48
  217. package/core/dev/jev-eval/reports/conversation-review.pending.json +0 -151
  218. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +0 -52
  219. package/core/dev/jev-eval/reports/length-probe-2026-09-20.json +0 -133
  220. package/core/dev/jev-eval/reports/live-smoke-2026-09-20.json +0 -616
  221. package/core/dev/jev-eval/reports/muninn-baseline-2026-09-20.json +0 -52
  222. package/core/dev/jev-eval/reports/resilience-2026-09-20.json +0 -520
  223. package/core/dev/jev-eval/reports/rules-baseline.json +0 -197
  224. package/core/dev/jev-eval/reports/synthetic-review.pending.json +0 -357
  225. package/core/dev/jev-eval/resilience.mjs +0 -71
  226. package/core/dev/jev-eval/review.mjs +0 -78
  227. package/core/dev/jev-eval/schema.mjs +0 -87
  228. package/core/dev/jev-eval/test/context.test.mjs +0 -95
  229. package/core/dev/jev-eval/test/corpus.test.mjs +0 -102
  230. package/core/dev/jev-eval/test/eval.test.mjs +0 -146
  231. package/core/dev/jev-eval/test/muninn-baseline.test.mjs +0 -71
  232. package/core/dev/jev-eval/test/resilience.test.mjs +0 -72
  233. package/core/dev/jev-eval/test/review.test.mjs +0 -61
  234. package/core/dev/pipeline/PHASE3_PLANNING_SUMMARY.md +0 -338
  235. package/core/dev/pipeline/PROGRESS.md +0 -113
  236. package/core/dev/pipeline/PROGRESS_template.md +0 -860
  237. package/core/dev/pipeline/QA_REPORT_F008.md +0 -431
  238. package/core/dev/pipeline/QA_REPORT_LOCAL_CLAUDE_DIAGNOSIS.md +0 -583
  239. package/core/dev/pipeline/README.md +0 -210
  240. package/core/dev/pipeline/WORKFLOW_GUIDE.md +0 -824
  241. package/core/dev/pipeline/archived/TASK_015_tauri_init.yaml +0 -53
  242. package/core/dev/pipeline/archived/TASK_016_tauri_commands.yaml +0 -54
  243. package/core/dev/pipeline/archived/TASK_017_rust_pty.yaml +0 -54
  244. package/core/dev/pipeline/archived/TASK_018_tauri_bundle.yaml +0 -53
  245. package/core/dev/pipeline/archived/TASK_019_release_workflow.yaml +0 -56
  246. package/core/dev/pipeline/archived/TASK_020_update_ui.yaml +0 -54
  247. package/core/dev/pipeline/archived/TASK_021_update_notification_ui.yaml +0 -55
  248. package/core/dev/pipeline/archived/TASK_022_remove_node_pty.yaml +0 -65
  249. package/core/dev/pipeline/archived/TASK_023_api_routes_migration.yaml +0 -86
  250. package/core/dev/pipeline/archived/TASK_024_feature_id_system.yaml +0 -51
  251. package/core/dev/pipeline/archived/TASK_025_executable_acceptance.yaml +0 -66
  252. package/core/dev/pipeline/archived/TASK_026_spec_versioning.yaml +0 -56
  253. package/core/dev/pipeline/archived/TASK_027_drift_detection.yaml +0 -60
  254. package/core/dev/pipeline/archived/TASK_028_tauri_pty_manager.yaml +0 -60
  255. package/core/dev/pipeline/archived/TASK_029_tauri_pty_commands.yaml +0 -62
  256. package/core/dev/pipeline/archived/TASK_030_frontend_session_adapter.yaml +0 -54
  257. package/core/dev/pipeline/archived/TASK_031_terminal_tauri_events.yaml +0 -56
  258. package/core/dev/pipeline/archived/TASK_041_scheduler_data_models.yaml +0 -54
  259. package/core/dev/pipeline/archived/TASK_042_path_lock_manager.yaml +0 -53
  260. package/core/dev/pipeline/archived/TASK_043_process_manager.yaml +0 -57
  261. package/core/dev/pipeline/archived/TASK_044_git_integration.yaml +0 -85
  262. package/core/dev/pipeline/archived/TASK_045_task_queue_manager.yaml +0 -54
  263. package/core/dev/pipeline/archived/TASK_046_scheduler_dispatcher.yaml +0 -60
  264. package/core/dev/pipeline/archived/TASK_047_tauri_scheduler_commands.yaml +0 -55
  265. package/core/dev/pipeline/archived/TASK_048_realtime_status_push.yaml +0 -92
  266. package/core/dev/pipeline/archived/TASK_049_frontend_scheduler_integration.yaml +0 -58
  267. package/core/dev/pipeline/archived/TASK_050_error_recovery.yaml +0 -56
  268. package/core/dev/pipeline/archived/TASK_051_optimization_proposals_backend.yaml +0 -53
  269. package/core/dev/pipeline/archived/TASK_052_optimization_proposals_ui.yaml +0 -58
  270. package/core/dev/pipeline/archived/TASK_053_optimization_proposals_diff_view.yaml +0 -54
  271. package/core/dev/pipeline/archived/TASK_054_multi_project_scheduler_state.yaml +0 -76
  272. package/core/dev/pipeline/archived/TASK_055_scheduler_api_project_scope.yaml +0 -64
  273. package/core/dev/pipeline/archived/TASK_056_frontend_scheduler_project_scope.yaml +0 -62
  274. package/core/dev/pipeline/archived/TASK_057_scheduler_module_structure.yaml +0 -54
  275. package/core/dev/pipeline/archived/TASK_058_scheduler_models_extract.yaml +0 -51
  276. package/core/dev/pipeline/archived/TASK_059_scheduler_core_extract.yaml +0 -51
  277. package/core/dev/pipeline/archived/TASK_060_scheduler_commands_extract.yaml +0 -51
  278. package/core/dev/pipeline/archived/TASK_061_scheduler_specialized_commands.yaml +0 -53
  279. package/core/dev/pipeline/archived/TASK_062_process_manager_module_structure.yaml +0 -56
  280. package/core/dev/pipeline/archived/TASK_063_process_manager_core_extract.yaml +0 -56
  281. package/core/dev/pipeline/archived/TASK_064_recovery_module_structure.yaml +0 -57
  282. package/core/dev/pipeline/archived/TASK_065_recovery_core_extract.yaml +0 -56
  283. package/core/dev/pipeline/archived/TASK_066_self_enhancement_scheduler_models.yaml +0 -60
  284. package/core/dev/pipeline/archived/TASK_067_agents_section_quick_actions.yaml +0 -53
  285. package/core/dev/pipeline/archived/TASK_067_self_enhancement_scheduler_core.yaml +0 -65
  286. package/core/dev/pipeline/archived/TASK_068_agent_workflow_rule_enhancement.yaml +0 -46
  287. package/core/dev/pipeline/archived/TASK_068_self_enhancement_tauri_commands.yaml +0 -61
  288. package/core/dev/pipeline/archived/TASK_069_agent_wizard_responsive.yaml +0 -46
  289. package/core/dev/pipeline/archived/TASK_069_self_enhancement_ui.yaml +0 -62
  290. package/core/dev/pipeline/archived/TASK_070_preview_panel_redesign.yaml +0 -62
  291. package/core/dev/pipeline/archived/TASK_070_self_enhancement_integration.yaml +0 -57
  292. package/core/dev/pipeline/archived/TASK_071_preview_panel_qa.yaml +0 -98
  293. package/core/dev/pipeline/archived/TASK_071_single_agent_config.yaml +0 -57
  294. package/core/dev/pipeline/archived/TASK_072_preview_modal_esc_fix.yaml +0 -71
  295. package/core/dev/pipeline/archived/TASK_072_product_review_module.yaml +0 -57
  296. package/core/dev/pipeline/archived/TASK_073_agents_page_component_refactor.yaml +0 -68
  297. package/core/dev/pipeline/archived/TASK_073_rename_single_agent.yaml +0 -64
  298. package/core/dev/pipeline/archived/TASK_074_preview_mode_ui_diagnosis.yaml +0 -71
  299. package/core/dev/pipeline/archived/TASK_074_single_agent_ui_toggle.yaml +0 -56
  300. package/core/dev/pipeline/archived/TASK_075_agents_page_component_refactor.yaml +0 -69
  301. package/core/dev/pipeline/archived/TASK_075_single_agent_integration_test.yaml +0 -75
  302. package/core/dev/pipeline/archived/TASK_076_preview_mode_ui_diagnosis.yaml +0 -70
  303. package/core/dev/pipeline/archived/TASK_076_single_agent_continuous_mode.yaml +0 -65
  304. package/core/dev/pipeline/archived/TASK_077_failure_directory_structure.yaml +0 -51
  305. package/core/dev/pipeline/archived/TASK_077_single_agent_typescript_types.yaml +0 -59
  306. package/core/dev/pipeline/archived/TASK_078_fail_001_agent_no_output.yaml +0 -53
  307. package/core/dev/pipeline/archived/TASK_078_single_agent_ui_simplify.yaml +0 -74
  308. package/core/dev/pipeline/archived/TASK_079_dashboard_rwd_responsive.yaml +0 -63
  309. package/core/dev/pipeline/archived/TASK_079_fail_002_json_bom.yaml +0 -56
  310. package/core/dev/pipeline/archived/TASK_080_fail_003_queue_pollution.yaml +0 -56
  311. package/core/dev/pipeline/archived/TASK_080_http_server_module.yaml +0 -55
  312. package/core/dev/pipeline/archived/TASK_081_failure_logging_tools.yaml +0 -57
  313. package/core/dev/pipeline/archived/TASK_081_http_api_routes.yaml +0 -62
  314. package/core/dev/pipeline/archived/TASK_082_frontend_api_adapter.yaml +0 -51
  315. package/core/dev/pipeline/archived/TASK_082_integrate_failure_to_workflow.yaml +0 -60
  316. package/core/dev/pipeline/archived/TASK_083_cleanup_nextjs_api.yaml +0 -48
  317. package/core/dev/pipeline/archived/TASK_083_task_queue_cleanup.yaml +0 -67
  318. package/core/dev/pipeline/archived/TASK_084_rust_dead_code_cleanup.yaml +0 -66
  319. package/core/dev/pipeline/archived/TASK_084_scheduler_sync_logic_fix.yaml +0 -68
  320. package/core/dev/pipeline/archived/TASK_085_http_api_web_mode_fixes.yaml +0 -46
  321. package/core/dev/pipeline/archived/TASK_085_memory_consolidation_0204_0205.yaml +0 -98
  322. package/core/dev/pipeline/archived/TASK_086_collapsible_preview_panel.yaml +0 -161
  323. package/core/dev/pipeline/archived/TASK_086_web_mode_feature_parity.yaml +0 -62
  324. package/core/dev/pipeline/archived/TASK_087_manual_memory_archival.yaml +0 -163
  325. package/core/dev/pipeline/archived/TASK_087_mobile_http_control.yaml +0 -68
  326. package/core/dev/pipeline/archived/TASK_088_fail_003_to_ppl_002_rule.yaml +0 -63
  327. package/core/dev/pipeline/archived/TASK_088_mobile_http_qa.yaml +0 -121
  328. package/core/dev/pipeline/archived/TASK_089_agent_collaboration_topic.yaml +0 -60
  329. package/core/dev/pipeline/archived/TASK_089_web_mode_monitor_fix.yaml +0 -58
  330. package/core/dev/pipeline/archived/TASK_090_cli_detection_fix.yaml +0 -61
  331. package/core/dev/pipeline/archived/TASK_090_ui_ux_lessons_topic.yaml +0 -63
  332. package/core/dev/pipeline/archived/TASK_091_expandable_card_design.yaml +0 -56
  333. package/core/dev/pipeline/archived/TASK_091_move_agent_section_components.yaml +0 -65
  334. package/core/dev/pipeline/archived/TASK_092_expandable_card_component.yaml +0 -60
  335. package/core/dev/pipeline/archived/TASK_092_refactor_agent_create_wizard.yaml +0 -84
  336. package/core/dev/pipeline/archived/TASK_093_taskcard_detail_integration.yaml +0 -57
  337. package/core/dev/pipeline/archived/TASK_093_update_barrel_exports_test.yaml +0 -84
  338. package/core/dev/pipeline/archived/TASK_094_ai_agent_generation_enhancement.yaml +0 -115
  339. package/core/dev/pipeline/archived/TASK_094_proposalcard_detail_integration.yaml +0 -55
  340. package/core/dev/pipeline/archived/TASK_095_preview_fixes.yaml +0 -129
  341. package/core/dev/pipeline/archived/TASK_095_single_agent_task_selector.yaml +0 -60
  342. package/core/dev/pipeline/archived/TASK_096_agents_page_ux_improvements.yaml +0 -163
  343. package/core/dev/pipeline/archived/TASK_096_single_agent_status_sync.yaml +0 -60
  344. package/core/dev/pipeline/archived/TASK_097_local_claude_error_logging.yaml +0 -59
  345. package/core/dev/pipeline/archived/TASK_097_single_agent_monitor_events.yaml +0 -59
  346. package/core/dev/pipeline/archived/TASK_098_product_manager_team_phase2.yaml +0 -60
  347. package/core/dev/pipeline/archived/TASK_098_single_agent_refactor_test.yaml +0 -58
  348. package/core/dev/pipeline/archived/TASK_099_backend_team_creation.yaml +0 -258
  349. package/core/dev/pipeline/archived/TASK_100_frontend_team_creation.yaml +0 -61
  350. package/core/dev/pipeline/archived/TASK_101_orchestrator_system.yaml +0 -403
  351. package/core/dev/pipeline/archived/TASK_102_designer_sre_teams.yaml +0 -90
  352. package/core/dev/pipeline/archived/TASK_103_integration_testing.yaml +0 -86
  353. package/core/dev/pipeline/archived/TASK_128_integration_testing.yaml +0 -83
  354. package/core/dev/pipeline/archived/TASK_134_cortex_v2_phase3_file_watcher.yaml +0 -65
  355. package/core/dev/pipeline/archived/TASK_134_team_http_api.yaml +0 -96
  356. package/core/dev/pipeline/archived/TASK_135_cortex_v2_phase3_git_monitor.yaml +0 -63
  357. package/core/dev/pipeline/archived/TASK_136_cortex_v2_phase3_change_analyzer.yaml +0 -69
  358. package/core/dev/pipeline/archived/TASK_137_cortex_v2_phase3_cache_invalidator.yaml +0 -67
  359. package/core/dev/pipeline/archived/TASK_137_team_orchestrator_integration.yaml +0 -93
  360. package/core/dev/pipeline/archived/TASK_138_cortex_v2_phase3_distributed_cache.yaml +0 -68
  361. package/core/dev/pipeline/archived/TASK_138_matrix_folder_structure.yaml +0 -61
  362. package/core/dev/pipeline/archived/TASK_139_cortex_v2_phase3_cache_prewarming.yaml +0 -65
  363. package/core/dev/pipeline/archived/TASK_146_unified_documentation.yaml +0 -141
  364. package/core/dev/pipeline/archived/TASK_147_pipeline_execution_rules.yaml +0 -76
  365. package/core/dev/pipeline/archived/TASK_148_update_claude_md.yaml +0 -77
  366. package/core/dev/pipeline/archived/TASK_149_fix_nextjs_mdx_serialization.yaml +0 -63
  367. package/core/dev/pipeline/archived/TASK_149_update_team_docs.yaml +0 -77
  368. package/core/dev/pipeline/archived/TASK_150_pipeline_workflow_guide.yaml +0 -82
  369. package/core/dev/pipeline/archived/TASK_164_fix_smart_context_switch.yaml +0 -49
  370. package/core/dev/pipeline/archived/TASK_165_ctags_symbol_index.yaml +0 -53
  371. package/core/dev/pipeline/archived/TASK_166_symbol_search_mcp_tool.yaml +0 -48
  372. package/core/dev/pipeline/archived/TASK_167_llm_module_summary.yaml +0 -55
  373. package/core/dev/pipeline/archived/TASK_168_map_reduce_context.yaml +0 -51
  374. package/core/dev/pipeline/archived/TASK_169_v2_integration_testing.yaml +0 -52
  375. package/core/dev/pipeline/backups/archive_2026-02-04T22-07-22/TASK_QUEUE_backup.json +0 -95
  376. package/core/dev/pipeline/docs/multi-agent-coordination.md +0 -446
  377. package/core/dev/pipeline/docs/overview.md +0 -406
  378. package/core/dev/pipeline/docs/task-management.md +0 -412
  379. package/core/dev/pipeline/docs/workflows.md +0 -32
  380. package/core/dev/pipeline/orchestrator/schemas/task_queue_schema.json +0 -58
  381. package/core/dev/pipeline/orchestrator/schemas/task_schema.json +0 -139
  382. package/core/dev/pipeline/plans/PLAN_task_cli_refactor.md +0 -281
  383. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +0 -27
  384. package/core/dev/plans/ANSUZ_SLIM_PLAN.md +0 -68
  385. package/core/dev/plans/CLI_FIRST_INSTALL_FLOW.md +0 -120
  386. package/core/dev/plans/FORMATION_RETIREMENT_PLAN.md +0 -313
  387. package/core/dev/plans/KUZU_REPLACEMENT_PLAN.md +0 -126
  388. package/core/dev/scripts/CRASH_DIAGNOSIS.md +0 -47
  389. package/core/dev/scripts/README.md +0 -142
  390. package/core/dev/scripts/RUN_ONCE.bat +0 -40
  391. package/core/dev/scripts/START_DEV_AGENT.bat +0 -63
  392. package/core/dev/scripts/START_MULTI_AGENT.bat +0 -80
  393. package/core/dev/scripts/dev_agent_scheduler.ps1 +0 -536
  394. package/core/dev/scripts/init_git.ps1 +0 -396
  395. package/core/dev/scripts/init_git.sh +0 -337
  396. package/core/dev/scripts/init_project.ps1 +0 -851
  397. package/core/dev/scripts/init_project.sh +0 -477
  398. package/core/dev/scripts/multi_agent_scheduler.ps1 +0 -2021
  399. package/core/dev/scripts/multi_agent_scheduler.sh +0 -1344
  400. package/core/dev/scripts/run_once.sh +0 -47
  401. package/core/dev/scripts/setup_rag.ps1 +0 -304
  402. package/core/dev/scripts/setup_rag.sh +0 -230
  403. package/core/dev/scripts/start_dev_agent.sh +0 -137
  404. package/core/dev/scripts/start_multi_agent.sh +0 -41
  405. package/core/dev/scripts/sync_task_queue.ps1 +0 -505
  406. package/core/dev/scripts/sync_task_queue.sh +0 -392
  407. package/core/dev/specs/agent-connect/PROTOCOL.md +0 -177
  408. package/core/dev/specs/agent-connect/SDK_GUIDE.md +0 -915
  409. package/core/dev/specs/agent-connect/examples/minimal-site/README.md +0 -137
  410. package/core/dev/specs/agent-connect/examples/minimal-site/package.json +0 -12
  411. package/core/dev/specs/agent-connect/examples/minimal-site/public/index.html +0 -116
  412. package/core/dev/specs/agent-connect/examples/minimal-site/public/install-redirect.js +0 -73
  413. package/core/dev/specs/agent-connect/examples/minimal-site/server.js +0 -516
  414. package/core/dev/specs/agent-connect/examples/minimal-site/test/smoke.test.mjs +0 -263
  415. package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-empty-prompt-no-first-turn.md +0 -77
  416. package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-prompt-mojibake.md +0 -90
  417. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-07.md +0 -61
  418. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-08_relay-v1-conformance.md +0 -76
  419. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-09_v0.4-session-channel.md +0 -87
  420. package/core/dev/specs/agent-connect/history/FLOWPIX_REPLY_agent-hub_2026-09-08_relay-v1-answers.md +0 -68
  421. package/core/dev/specs/agent-connect/history/FLOWPIX_bridge_CONTRACT.md +0 -642
  422. package/core/dev/specs/agent-connect/history/FLOWPIX_spikes_relay_spike_relay.mjs +0 -244
  423. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-07.md +0 -77
  424. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_direction-change-v0.3.md +0 -44
  425. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-answers-ack.md +0 -37
  426. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-conformance.md +0 -56
  427. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_annotations-install-coldstart.md +0 -44
  428. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_empty-prompt-first-turn.md +0 -56
  429. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_prompt-mojibake-fixed.md +0 -48
  430. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_session-channel.md +0 -57
  431. package/core/dev/specs/agent-connect/history/PROTOCOL_v0.3_snapshot.md +0 -379
  432. package/core/dev/specs/agent-connect/history/README.md +0 -47
  433. package/core/dev/specs/peer/CODEX_INTERACTIVE_PUSH.md +0 -65
  434. package/core/dev/specs/peer/CODEX_MANAGED_DAEMON.md +0 -54
  435. package/core/dev/specs/peer/CODEX_PEER_PULL_SPIKE.md +0 -54
  436. package/core/dev/specs/peer/MODS_SPIKE.md +0 -133
  437. package/core/dev/specs/peer/PER_PROJECT_ADDRESSING.md +0 -143
  438. package/core/dev/specs/peer/SWARM_PROTOCOLS.md +0 -256
  439. package/core/dev/specs/peer/codex-hook-shim-peer.test.js +0 -113
  440. package/core/dev/specs/peer/codex-push-launcher.test.js +0 -142
  441. package/core/dev/specs/peer/setup-codex-hooks.test.js +0 -60
  442. package/core/dev/specs/peer-ansuz/DELIVERY_SPIKE.md +0 -397
  443. package/core/dev/specs/peer-ansuz/DESIGN.md +0 -109
  444. package/core/dev/specs/peer-ansuz/spike/claude_poke.js +0 -129
  445. package/core/dev/specs/peer-ansuz/spike/claude_session_start_hook.js +0 -37
  446. package/core/dev/specs/peer-ansuz/spike/claude_settings_hook.json +0 -14
  447. package/core/dev/specs/peer-ansuz/spike/codex_appserver_client.js +0 -105
  448. package/core/dev/specs/peer-ansuz/spike/codex_appserver_query.js +0 -29
  449. package/core/dev/specs/peer-ansuz/spike/extract_timeline.js +0 -26
  450. package/core/dev/specs/synapse/SYMBOL_IDENTITY.md +0 -305
  451. package/core/dev/spikes/A4-cypher-varlen.md +0 -176
  452. package/core/dev/spikes/bloat-rounds.sh +0 -25
  453. package/core/dev/spikes/mods/clean-claude.js +0 -9
  454. package/core/dev/spikes/mods/drive-probe.js +0 -29
  455. package/core/dev/spikes/mods/e2e-peer.js +0 -71
  456. package/core/dev/spikes/mods/evidence/e2e-peer-control.json +0 -17
  457. package/core/dev/spikes/mods/evidence/e2e-peer-mod.json +0 -17
  458. package/core/dev/spikes/mods/evidence/probe-006a6e65-d807-4bc1-b648-fd7d1edfe0b4.jsonl +0 -4
  459. package/core/dev/spikes/mods/evidence/probe-cebdf1f7-f9c4-47a8-83cd-7c0786177404.jsonl +0 -12
  460. package/core/dev/spikes/mods/evidence/probe-eb21147d-10ce-4c32-93ed-37ca37d88d5a.jsonl +0 -11
  461. package/core/dev/spikes/mods/evidence/stream-cebdf1f7.jsonl +0 -18
  462. package/core/dev/spikes/mods/kenaz-mod-probe/.claude-plugin/plugin.json +0 -1
  463. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/hooks.json +0 -1
  464. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/register.ts +0 -65
  465. package/core/dev/spikes/mods/kenaz-mod-probe/tsconfig.json +0 -3
@@ -1,313 +0,0 @@
1
- # Formation Retirement Plan (TASK_2359)
2
-
3
- Status: plan only, no code removed by this card. Date: 2026-10-09.
4
- Decision (user, 2026-10-09): the Agent-tool subagent is the only dispatch path; Formation (the `claude -p` headless supervisor) is retired.
5
- Companion direction (user, 2026-10-09): agents are launched inside the target project folder (native `claude` + kenaz plugin, TASK_2358), not from the core repo with a `[專案: X]` pin.
6
-
7
- All line numbers are from main at commit 43fc13878 (worktree wt-566fcb6b). Re-run the verification commands in section 7 before acting on any row; line numbers drift.
8
-
9
- ---
10
-
11
- ## 0. Findings that change the shape of the plan
12
-
13
- 1. **post-complete is not Formation-only.** `task-api.js complete` runs `postComplete()` in-process by default (`.collaboration/core/task-api.js:2142-2160`, `require('../../.formation/tools/post-complete.js')`). The subagent path lands through it. `post-complete.js` (3660 LOC) plus `post-complete/*` stay. Only the `FORMATION_HEADLESS` / `FORMATION_SCHEDULER` comments and tests around it are Formation-specific (`task-api.js:2120,2143-2144`; the env is only *set* by `runner.js:944,1105`, never read by task-api code).
14
- 2. **`dispatch.js` is two programs in one file.** Subagent path: `getSubagentDispatchParams` (`dispatch.js:1454`, entry `:1372`). Formation path: `runSingle`/`runParallel` calls at `dispatch.js:1106,1166` (`require('./runner')` at `:24`), squad/legion prompt branches at `:1067,1075`, `--formation` default at `:1300`. The subagent path does NOT need `runner.js`. Wave 4 splits them.
15
- 3. **`dispatchMode` defaults to `formation`** in `dispatch.js:1546` and in the Dashboard (`ModelSelectionPanel.tsx:89`, `dashboard_settings.rs:38`). Ansuz rules + the Dashboard setting were already switched, but the code default is still the Formation path. Wave 1 flips it before anything is deleted.
16
- 4. **Formation is also the only unattended runner.** Non-task callers spawn `headless.js` with no parent Claude session: Heimdall trigger (`heimdall.rs:197-272,749`), code_watch trigger (`code_watch.rs:165-273`), agent_scheduler (`agent_scheduler/service.rs`), Ansuz sleep/wake on exit and project switch (`lib.rs:138-258,867-870`), `kenaz_specialist_dispatch` (Amelia/Huginn, `kenaz.rs:988-1160`), and the Legacy Scheduler script (`script/manager.rs:215-246,793-799`). The Agent tool only exists inside a live session, so "subagent is the only path" does not cover these. **Decision needed before Wave 2** (section 6, Q1).
17
- 5. **Codex/Bifrost workers run only through Formation today** (section 4). Removing Formation first strands every Codex user's worker dispatch.
18
- 6. **Dead code already in place:** `headless.js:290` is `if (false && !process.env.BIFROST_ADAPTER)`; the `.bifrost-active` auto-detect block never runs. `analytics.js` has exactly one writer (`dispatch-registry.js:71`).
19
- 7. **`roles/_shared/modules/*.yaml` is live** (`prompt.js:103,808`). Only `roles/<name>/role.yaml` is Formation/headless-v2-only.
20
-
21
- ---
22
-
23
- ## 1. Caller map
24
-
25
- Notation: `file:line` = a real reference found by `git grep` (command in section 7). "R" = require/spawn (hard dependency), "C" = comment/doc/message only, "T" = test.
26
-
27
- ### 1.1 headless.js (1071 LOC)
28
-
29
- | Caller | Line | Kind |
30
- |---|---|---|
31
- | `dashboard/src-tauri/.../mcp_tools/kenaz.rs` (`tool_dispatch`, `tool_specialist_dispatch`) | 672-675, 1030-1033 | R spawn |
32
- | `.../routes/heimdall.rs` | 204,214,749 | R spawn |
33
- | `.../routes/code_watch.rs` | 172,182,273 | R spawn |
34
- | `features/agent_scheduler/config.rs` (path), `service.rs` (exec) | config.rs:111-116, service.rs:71 | R spawn |
35
- | `features/script/manager.rs` (scripts: legacy-scheduler, start-task, 2 more) | 217,227,237,246 | R spawn |
36
- | `src-tauri/src/lib.rs` (Ansuz sleep/wake fallback) | 140,145,209,214,258,867-870 | R spawn |
37
- | `.formation/tools/formations.js` | 5,360,1031 | C (extracted from headless) |
38
- | `.formation/tools/prompt.js` | 901,903 | C: prompt text tells project agents to call `headless.js` |
39
- | `.formation/tools/task-utils.js` | 39 | R (`headlessPath` string for re-dispatch) |
40
- | `.formation/tools/dispatch.js` | 1277,1822,1830 | C (help text, parity comments) |
41
- | `k-cli/src/dispatch/run.ts` | 40,87,88,130 | R: generates prompt text invoking headless-v2/headless |
42
- | `.specialist/Ansuz/SYSTEM_DOC.md` | 149 | C (doc) |
43
- | `.specialist/tools/session.js` | 1375 | C |
44
- | `.collaboration/core/task-api.js` | 2120,2144 | C |
45
- | `.formation/bifrost/launch.js` | 308 | C+writes `.bifrost-active` consumed by headless (dead, see 0.6) |
46
- | T: `headless-dryrun.test.js`, `headless-branch-recovery.test.js`, `task2028-headless-worktree.test.js`, `tests/headless-mcp-args-plumbing.test.js`, `dashboard-models-chain.test.js:56-57`, `post-complete/task2345.test.js:35-36`, `spec/task_operations.parity.test.js:31`, `__tests__/m1-hmap-convid.test.js`, `task-2281-singleton-readers.test.js` | various | T |
47
-
48
- ### 1.2 headless-v2.js (659 LOC)
49
-
50
- Callers: `k-cli/src/dispatch/run.ts:39,45,55,125-133,174-178` (prompt text only). No other `require`. It reads `role-map.yaml` (`headless-v2.js:43`) and `roles/*/role.yaml`. Self-contained; safe to delete once k-cli prompt text is rewritten.
51
-
52
- ### 1.3 formations.js (1203 LOC)
53
-
54
- | Caller | Line |
55
- |---|---|
56
- | `headless.js` | 53 (`require('./formations')`) |
57
- | `formations.js` self-requires `./legacy-scheduler` | 988 |
58
- | T: `__tests__/task2030-worktree-node-modules.test.js:20` (comment), `post-complete/task2028.test.js:16` (comment) | |
59
- | `dev/scripts/gc-agent-worktrees.js` | 11 (C) |
60
-
61
- ### 1.4 legacy-scheduler.js (1994 LOC)
62
-
63
- | Caller | Line |
64
- |---|---|
65
- | `formations.js` | 988 (R) |
66
- | `features/script/manager.rs` `formation-legacy-scheduler` | 215, 793-794 (spawns `--formation=legacy --skill=scheduler`) |
67
- | Dashboard UI: `AgentMonitor.tsx:27`, `LegacySchedulerCard.tsx:16-19` (306 LOC), `legacy-scheduler-section/LegacySchedulerSection.tsx:7`, `QuickActionsPanel.tsx:10`, `ScriptsSection.tsx:71` | |
68
- | `.claude/commands/legacy_dev.md`, `multi-agent.md`, skill `legacy_dev` | doc |
69
-
70
- ### 1.5 broadcast.js (103 LOC)
71
-
72
- Required only by `formations.js:38` and `headless.js:83`. Lazy-loads `supabase-client`, `task-sync`, `commit-sync`. Dies with them (those three stay, see keep-list).
73
-
74
- ### 1.6 process-state.js (33 LOC)
75
-
76
- Required only by `formations.js:37` and `headless.js:52`. Dies with them.
77
-
78
- ### 1.7 dispatch-registry.js (346 LOC)
79
-
80
- | Caller | Line | Verdict |
81
- |---|---|---|
82
- | `headless.js` | 51 | dies |
83
- | `formations.js` | 35 | dies |
84
- | `task-utils.js` | 14 | dies (task-utils is headless/formations-only) |
85
- | `.specialist/tools/session.js` | 1554 (`readActiveDispatches`, `isProcessAlive` for orphan detection) | **reader stays until rewritten** (Wave 3) |
86
- | `dev/scripts/verify-task-1839.js` | 36 | one-off verifier, delete with it |
87
- | `.kenaz/specialist/verify_1838.js` | 22 | runtime artefact |
88
- | T: `merge-lock-heartbeat.test.js:7` (`cleanupStaleLocks`) | | moves with whatever keeps merge-lock |
89
- | Rust writer of `.formation/.active-dispatches.json`: `kenaz.rs:545-640` (`write_preliminary_dispatch`, `set_dispatch_pid_if_unset`), `agent_flow.rs:746` | | dies with `kenaz_dispatch` |
90
- | Readers of that file: `.claude/hooks/handoff-staleness.js:23,107` (route 1) | | route 1 removed, route 2 (dispatch brief) stays |
91
-
92
- ### 1.8 analytics.js (172 LOC)
93
-
94
- Only writer: `dispatch-registry.js:57,71` (`recordDispatch`). No other `require`. Retires with the registry (Wave 3). `dev/scripts/dispatch-stats.js` reads `dispatch_prompt_stats.jsonl` and `phase9_dispatch_outcomes.jsonl`, not analytics JSONL, so it is unaffected.
95
-
96
- ### 1.9 Other Formation-only modules (not in the requirement list but verified by grep)
97
-
98
- | Module (LOC) | Only callers | Verdict |
99
- |---|---|---|
100
- | `runner.js` (1332) | `dispatch.js:24` (Formation branch), `formations.js:22`, `headless.js:46`, `headless-v2.js:31`, `legacy-scheduler.js:39`; T: `pre-dispatch-snapshot.test.js:33`, `worktree-leak.test.js:33` | dies in Wave 4 (after dispatch.js trim) |
101
- | `logger.js` (273), `log-reader.js` (232) | runner / legacy-scheduler / `kenaz_dispatch_status` | dies with runner |
102
- | `task-utils.js` (344) | `formations.js:39`, `headless.js:87` | dies |
103
- | `coordinator.js` (350) | only its own `require`s (supabase-client, task-sync) | no production caller found; confirm then delete |
104
- | `dispatch-notifier.js` (84) | `formations.js:36` | dies |
105
- | `test-drift.js`, `revert-daemon-state.js`, `jev-correction.js`, `guard-attribution.js`, `memory-loader.js` | not required by Formation modules; **do not assume Formation-only**, re-grep before touching (memory-loader is required by `prompt.js:17`, stays) | out of scope |
106
-
107
- ### 1.10 Formation directories and data
108
-
109
- | Path | Tracked files | Who reads it | Verdict |
110
- |---|---|---|---|
111
- | `.formation/unit/{do,plan,think,heimdall}.yaml` | 4 | `loader.js:27` via `dispatch.js:858,1382,1463` (subagent path loads `unit/do`) | **KEEP** (subagent assembly) |
112
- | `.formation/solo/*` (2), `squad/*` (4), `legion/*` (2) | 8 | `loadSkill(formation, ...)` when `--formation=solo|squad|legion`; `prompt.js:620-622` members; `dispatch.js:1067,1075` | retire Wave 5 (after confirming no subagent run uses them; subagent path defaults `unit`, `dispatch.js:1454`) |
113
- | `.formation/roles/_shared/modules/*.yaml` (3) | 3 | `prompt.js:103,808` | **KEEP** |
114
- | `.formation/roles/<backend,code_reviewer,...>/role.yaml` (10) | 10 | `headless-v2.js` `--role` only | retire Wave 5 |
115
- | `.formation/lead.yaml` | 1 | `formation_lead` skill / `/lead` command (doc-level) | retire Wave 5 with skill |
116
- | `.formation/role-map.yaml` | 1 | `headless-v2.js:43`; points at `legacy.bak/*` (lines 195,212) | retire Wave 5 |
117
- | `.formation/legacy.bak/*` (6) | 6 | `role-map.yaml`, `loadSkill('legacy', ...)` in `legacy-scheduler.js:819,1402` | retire Wave 5 |
118
- | `.formation/skills/coordinator.yaml`, `briefs/scheduler-evolution.md` | 2 | docs | retire Wave 5 |
119
- | `.formation/native/claude/*` (README, models.json) | 2 | verify before touching | out of scope |
120
- | `.formation/runes/*`, `.formation/Users/...` | 5 | stray artefacts (a `.synapse/db/graph` path under `.formation/Users/` is a mis-rooted write) | housekeeping, separate card |
121
- | `.formation/logs/<formation>/` | runtime | `kenaz.rs:663-670`, `heimdall.rs:132` | stops being written after Wave 2 |
122
-
123
- ### 1.11 Rust MCP tools and Dashboard
124
-
125
- | Item | Locations |
126
- |---|---|
127
- | `kenaz_dispatch` | `mcp.rs:745` (arg rewrite), `:818` (route); `definitions.rs:477`; `kenaz.rs:638-847` (`tool_dispatch`) |
128
- | `kenaz_dispatch_status` | `mcp.rs:819`; `definitions.rs:491`; `kenaz.rs:849-~985` |
129
- | `kenaz_specialist_dispatch` (same headless spawn) | `mcp.rs:745,(route)`; `definitions.rs:504`; `kenaz.rs:988-1160` |
130
- | Helpers only they use | `kenaz.rs` `load_bifrost_adapter:107`, `load_dispatch_routing:205`, `load_dispatch_model:185`, `write_preliminary_dispatch:551`, `dispatch_entry_liveness:581`, `set_dispatch_pid_if_unset:607` |
131
- | Dispatch-mode UI/setting | `ModelSelectionPanel.tsx:24-137,254-295` (Dispatch Routing selector, `DispatchMode` type `:41`); `use-cli-settings.ts` (dispatchModel only, **keep**: model choice feeds subagent); `lib/models.ts:27` (comment); `dashboard_settings.rs:31-38,76-78,137-142` (`dispatch_mode`, `VALID_DISPATCH_MODES`) |
132
- | Tests asserting formation default | `__tests__/subagent-bifrost-guard.test.js:87,128,137` |
133
- | Agent scheduler feature | `features/agent_scheduler/*.rs` (~820 LOC), `routes/agent_scheduler.rs` (377) |
134
- | Unattended triggers | `routes/heimdall.rs` (882), `routes/code_watch.rs` (373) |
135
-
136
- ### 1.12 Hooks and other references
137
-
138
- | Item | Lines | Verdict |
139
- |---|---|---|
140
- | `.claude/hooks/post-dispatch-handoff-nudge.js` | whole file; fires on `kenaz_dispatch` PostToolUse (`:4`) | retire with the tool (Wave 2). Replacement for subagent path: handoff reminder already comes from `handoff-staleness.js` route 2 |
141
- | `.claude/hooks/handoff-staleness.js` | route 1 `:23,107` (reads `.active-dispatches.json`); route 2 (dispatch brief `.kenaz/specialist/dispatch_prompt_<task>`) | **KEEP**, delete route 1 only (Wave 2) |
142
- | `.claude/settings.json` / plugin hook wiring for the nudge | find with `git grep post-dispatch-handoff-nudge` (no settings hit in this checkout; user-level settings may carry it) | check user settings.json (31 machine-absolute paths per TASK_2358) |
143
- | `.specialist/Ansuz/elixir.yaml:3,61-63` | text: "formation: kenaz_dispatch / claude -p" path description, `how:` and `mandate:` evaluating both paths, `dispatchMode` override | edit text in Wave 5 (it is *prompt content*, not code; `bifrost/shared/ansuz-boot-policy.js` "elixir" is the unrelated boot *depth* name, keep) |
144
- | `.specialist/Ansuz/SYSTEM_DOC.md:149-150`, `RULES.md:52` | `headless.js --project-path` example | edit Wave 3/5 |
145
- | `k-cli/src/dispatch/run.ts` | prompt text + paths | rewrite or delete with k-cli dispatch command |
146
- | `.claude/commands/{lead,legacy_dev,multi-agent,dev}.md`, skill `formation_lead` | slash entry points for squad/legion | retire Wave 5 (confirm `/dev` and `/multi-agent` usage with user) |
147
-
148
- ---
149
-
150
- ## 2. Keep-list (with reasons)
151
-
152
- | Keep | Reason / evidence |
153
- |---|---|
154
- | `dispatch.js` subagent path (`getSubagentDispatchParams:1454`, scope gate, claim/lease, model resolution, worktree isolation) | It *is* the subagent payload builder (Ansuz RULES.md:52). Formation branch removed in Wave 4. |
155
- | `prompt.js`, `loader.js`, `utils.js`, `remote-conflict.js`, `memory-loader.js`, `alaya-gate.js` | required by `dispatch.js:18-31`, `prompt.js:17,39`. |
156
- | `.formation/unit/{do,plan,think,heimdall}.yaml`, `roles/_shared/modules/` | `loadSkill` and `prompt.js:103`. |
157
- | WorktreeCreate hook `.claude/hooks/worktree-create.js` | independent of Formation; exports are required by `post-complete/git-merge.js` (`worktree-create.js:1164`). Not touched. |
158
- | `worktree-reclaim.js` | `task-api.js:2781` (`worktrees --reclaim`) and `dispatch.js:1616` (`ensureWorktreeSpace`). |
159
- | `analytics.js` | **Not kept**: only writer is `dispatch-registry.js:71` (finding 0.6). If product wants dispatch telemetry for the subagent path, `dispatch-stats.js` already reads `dispatch_prompt_stats.jsonl` + phase9 outcomes. Retire in Wave 3. |
160
- | `post-complete.js` + `post-complete/{git-merge,health,outcome,cognitive,staging,testing,wish,integration-gaps,bounded-http,subagent-transcript-stats}.js` | `task-api.js complete` default path (`:2147`), `task-api.js:202` (health.js for snapshots). Subagent landing runs through it. |
161
- | Modules post-complete requires: `integration.js` (`post-complete.js:2329`), `forseti-verify.js` (`:2658`), `verify-acceptance.js` (`:301`, `git-merge.js:14`), `commit-sync.js` (`:2354`), `git-salvage.js` (`git-merge.js:19`), `transcript-recorder.js` (`outcome.js:12`), `supabase-client.js`, `task-sync.js`, `yggdrasil-local.js`, `pool-status-push.js` | all reached from `post-complete` or `task-api.js:306,324,1128` |
162
- | `.specialist/Ansuz/tools/verify-and-land.js` | requires only `utils.js` (`:77`); subagent landing pipeline. After Wave 4 its `utils.js` imports must still resolve (they do; `utils.js` stays). |
163
- | `dispatch-registry.js` read side (`readActiveDispatches`, `isProcessAlive`) | `session.js:1554` orphan detection, until rewritten (Wave 3). |
164
- | `.formation/bifrost/*` | see section 4; interactive Codex launch is independent of headless.js. |
165
- | Which part of post-complete does `task-api complete` need? | All of it by default: archive, git merge/landing, commit-sync, rune extraction, outcome log, inbox signal, health KEEP/REVERT, episode close (steps listed at `post-complete.js:2185-3451`). The only Formation-specific piece is the `--skip-post-complete` + `FORMATION_HEADLESS` handshake. |
166
-
167
- ---
168
-
169
- ## 3. Staged removal
170
-
171
- LOC estimates are raw `wc -l` of whole files unless marked (est). Tests listed move or die with their wave. Each wave is independently landable and leaves main green.
172
-
173
- ### Wave 0: measure (this card + one small follow-up)
174
- - Run section 7 commands, store output in the follow-up card.
175
- - Record a 7-day count of `kenaz_dispatch` / `headless.js` invocations (from `.formation/logs/` and `.active-dispatches.json` history) to confirm nobody depends on them.
176
- - Resolve open questions Q1-Q3 (section 6).
177
-
178
- ### Wave 1: flip defaults, remove the choice (no deletions of code paths)
179
- - `dispatch.js:1546` default `formation` -> `subagent`; invalid value warns then uses `subagent`.
180
- - Dashboard: remove the Dispatch Routing selector (`ModelSelectionPanel.tsx:254-295`, `:41-137`), keep `dispatchModel`. Rust: `dashboard_settings.rs` stop accepting/writing `dispatch_mode` (read tolerates legacy key).
181
- - Update `subagent-bifrost-guard.test.js:87,128,137` (assertions expect `formation`).
182
- - Verification: `node .formation/tools/__tests__/subagent-bifrost-guard.test.js`, `dispatch-model-policy.test.js`, `m1-claim-gate.test.js`; Dashboard `npm run test:rust -- dashboard_settings`; manual: Ansuz dispatch with no `dispatchMode` in `.kenaz/dashboard-models.json` yields `effectiveMode: subagent`.
183
- - LOC removed (est): ~150 (UI + Rust setting). Tests move: 3 assertions.
184
- - Blocker: none. Codex still reaches Formation because the `bifrost` refusal at `dispatch.js:1498-1505` tells callers to use `kenaz_dispatch`.
185
-
186
- ### Wave 2: remove MCP entry points and unattended callers (gated on Q1 and TASK_2315)
187
- - Delete `tool_dispatch`, `tool_dispatch_status`, helpers (`kenaz.rs:107-640` subset, 638-985; est ~600 LOC), `definitions.rs:477-504` entries, `mcp.rs:745,818-819`.
188
- - `kenaz_specialist_dispatch` (`kenaz.rs:988-1160`, ~170): decide per Q1 (Amelia/Huginn need a runner).
189
- - Remove Heimdall/code_watch/agent_scheduler/script-manager spawn paths or re-point them (Q1): `heimdall.rs` 882, `code_watch.rs` 373, `agent_scheduler/*` ~820 + route 377, `script/manager.rs` formation entries (~60), Legacy Scheduler UI ~320.
190
- - Hooks: delete `post-dispatch-handoff-nudge.js` and its settings entry; remove route 1 from `handoff-staleness.js` (`:23,107`).
191
- - `lib.rs` Ansuz sleep/wake fallbacks (`:138-258,867-870`): remove the headless.js fallback branches; SDK-runner path (`:244,3266`) is already primary.
192
- - Verification: `npm run test:rust -- mcp` (and `dashboard_settings`, `script`), then a live smoke: Ansuz `kenaz_ping`, `dispatch.js --dispatch-mode=subagent` for a P3 doc task, `verify-and-land.js`. `node .claude/hooks/handoff-staleness.js` fixture test. Expect `kenaz_dispatch` to return "unknown tool".
193
- - LOC removed (est): 3000-3500 Rust/TS. Tests die: Rust tests inside `kenaz.rs`, `script/manager_tests.rs` formation cases (5 refs), `agent_scheduler` tests.
194
- - Hard dependency: **TASK_2315** must be landed (or Codex worker loss accepted by the user) before this wave.
195
-
196
- ### Wave 3: delete Formation-only JS
197
- - Delete: `headless.js` (1071), `headless-v2.js` (659), `formations.js` (1203), `legacy-scheduler.js` (1994), `broadcast.js` (103), `process-state.js` (33), `task-utils.js` (344), `dispatch-notifier.js` (84), `analytics.js` (172), `dispatch-registry.js` (346; first move `readActiveDispatches`/`isProcessAlive` needs of `session.js:1554` into session.js or drop the orphan-detection input), `coordinator.js` (350, after re-grep), `log-reader.js` (232).
198
- - Edit: `prompt.js:895-905` (remove the "headless" hint), `task-api.js:2120,2143-2144` comments, `k-cli/src/dispatch/run.ts` (rewrite/delete), `SYSTEM_DOC.md:149`.
199
- - Verification: `git grep -n -E "headless(-v2)?\.js|formations\.js|legacy-scheduler|broadcast\.js|process-state|dispatch-registry|analytics\.js" -- ':!.kenaz' ':!dev/plans'` returns only history/comments; `node --test` for `.formation/tools/post-complete/*.test.js`, `post-complete.test.js`, `prompt.test.js`, `.collaboration/core/task-2264-*.test.js`, `task-2288-followups.test.js`; `node .collaboration/core/task-api.js complete <test task> --dry-run`.
200
- - LOC removed: about 6600 (sum above, incl. coordinator/log-reader). Tests die: `headless-dryrun.test.js`, `headless-branch-recovery.test.js`, `task2028-headless-worktree.test.js`, `tests/headless-mcp-args-plumbing.test.js`, `merge-lock-heartbeat.test.js` (or retarget if merge-lock survives), `pool-status-push` stays. Tests move: `dashboard-models-chain.test.js:56-57` (re-point at `dispatch.js`), `post-complete/task2345.test.js:35-36`, `spec/task_operations.parity.test.js:31` (drop `headless` entry), `task-2288-followups.test.js` env cases (`FORMATION_HEADLESS`/`SCHEDULER` rows).
201
-
202
- ### Wave 4: trim dispatch.js, runner.js, logger.js
203
- - `dispatch.js`: remove the Formation CLI path (`--formation` branches `:1067,1075`, `runSingle/runParallel` `:1106,1166`, `:24` import) and keep `getSubagentDispatchParams`, scope gate, claim, lease, worktree prep. Estimated 800-1000 LOC removed from 1913 (est; measure on a branch).
204
- - Delete `runner.js` (1332), `logger.js` (273). Check `utils.js` for runner-only exports (`getClaudeEnv`, `detectClaudeCmd` are still used by `verify-acceptance.js:22`, keep).
205
- - Verification: `.formation/tools/__tests__/{subagent-bifrost-guard,m1-claim-gate,m1-hmap-convid,task-1863-claim-late-release,task-2265-singleton-identity}*.test.js`, `.formation/tools/{dispatch-dryrun,dispatch-model-policy,dispatch-cortex-context,route-audit}.test.js`, `.specialist/tools/__tests__/freya-cli-contract.test.js`, `.specialist/Ansuz/tools/verify-and-land.test.js`.
206
- - Tests die: `pre-dispatch-snapshot.test.js` and `worktree-leak.test.js` (both import `runner.detectWorktreeLeak`; if the leak check is still wanted for the subagent path, move `detectWorktreeLeak` to `utils.js` first).
207
- - LOC removed: ~2400.
208
-
209
- ### Wave 5: data, skills, docs
210
- - Delete `.formation/solo`, `squad`, `legion`, `roles/<8 non-shared>`, `legacy.bak`, `lead.yaml`, `role-map.yaml`, `skills/coordinator.yaml`, `briefs/`, skill `formation_lead`, commands `lead`, `legacy_dev`, `multi-agent` (confirm `/dev`).
211
- - Rewrite `elixir.yaml:3,61-63` (single path), `SYSTEM_DOC.md`, `.formation/README.md`, CLAUDE.md Formation lines, `.rule` entries that cite Formation dispatch.
212
- - Update `dashboard/scripts/kenaz-core-staging.js:27,118-120,249,266-267` once `.formation` shrinks (it stages the whole dir; excludes for logs/worktrees can stay).
213
- - Verification: `git grep -n -E "formation=(solo|squad|legion|legacy)|\.formation/(solo|squad|legion|roles|legacy)"` empty outside history; `loadSkill('unit','do')` smoke; `node dev/scripts/check-file-size.js --staged`.
214
- - LOC/lines removed: ~3900 YAML + docs.
215
-
216
- ### Wave 6: naming cleanup (optional)
217
- - Rename `.formation/tools` to something neutral only if desired; touching this path affects `task-api.js`, 40+ hooks/tests, Rust. Not recommended unless TASK_2358 plugin packaging forces new paths.
218
-
219
- Total estimate: ~16-17k LOC across JS/Rust/TS/YAML (est). JS tooling: `cat .formation/tools/*.js | wc -l` = 26,792 today; Formation-only share is ~11k of it.
220
-
221
- ---
222
-
223
- ## 4. Bifrost / Codex
224
-
225
- **Where the dependency is:**
226
- - Interactive Codex (`node .formation/bifrost/launch.js --specialist Ansuz`) does not call headless.js. Its only coupling is writing `.formation/.bifrost-active` (`launch.js:308-310`, cleared `:441`), whose single consumer is the dead `if (false && ...)` block at `headless.js:290-296` plus `resolveLaunchBifrostAdapter` (`headless.js:176-196`). Removing headless.js therefore does not break interactive launch; the signal write can be deleted in Wave 3.
227
- - Codex **workers** are the problem. A Codex Ansuz cannot use `dispatch.js --dispatch-mode=subagent`: it refuses on purpose when `dispatchFamily=bifrost` (`dispatch.js:1498-1505`, test `subagent-bifrost-guard.test.js:98-99,178-179`, the error text names `kenaz_dispatch`). The only remaining route is `kenaz_dispatch` -> `headless.js` -> `runner.js` -> Bifrost relay (`runner.js:706-770,1104`, `bifrost/openai/relay.js`, `bifrost/session.js`) -> `codex exec`. Rust also tracks these headless Codex threads (`codex_wake.rs`, `codex-session-registry.js`, `relay.js:35,236,523`).
228
- - `kenaz.rs:107-129,205` (`load_bifrost_adapter`, `load_dispatch_routing`) feed `--bifrost-adapter` into headless.
229
-
230
- **Dependency on TASK_2315** (backlog, P3): "`dispatch.js --dispatch-mode=subagent --harness=codex`: emit a Codex-native sub-agent payload (prompt + isolated cwd, model inherited from the session)". That card is the replacement for the Codex worker path. It is a Wave 2 prerequisite. Suggest raising it from P3 to P1 and treating "Codex worker parity" as the gate for Wave 2.
231
-
232
- **What Codex users lose if Formation is removed before TASK_2315:**
233
- 1. All worker dispatch (no `kenaz_dispatch`, no subagent for the bifrost family). Ansuz-in-Codex would have to do every task inline in its own context.
234
- 2. Scope-gate + claim + worktree isolation for workers (those happen inside `dispatch.js`, which they can no longer call for bifrost).
235
- 3. Headless Codex peer threads (`relay.js` `registerCodexHeadless`) and the `codex_wake.rs` headless discovery become dead code that should be deleted with them in Wave 3.
236
- 4. Unaffected: interactive Codex session, `bifrost/session.js` boot/capsule (used by Ansuz boot, not by dispatch), peer messaging.
237
-
238
- Interim option if Wave 2 must go first: keep `kenaz_dispatch` + `headless.js` + `runner.js` + `bifrost/*` as a "Codex-only legacy path" (about 4.5k LOC) and delete everything else (squad/legion/legacy/headless-v2/scheduler). This is the recommended fallback.
239
-
240
- ---
241
-
242
- ## 5. Launch from the target project
243
-
244
- Direction (2026-10-09): start agents inside the target project folder with native `claude` + the kenaz plugin (TASK_2358, in progress), instead of from the core repo with `/Ansuz [專案: X]`.
245
-
246
- ### 5.1 What assumes cwd = core today
247
-
248
- | Assumption | Where | Effect |
249
- |---|---|---|
250
- | Session pin: prompt text `[專案: X]` / `--project-path X` binds a core-cwd session to a project | `.claude/commands/Ansuz.md:4-8,33,43`; `.claude/hooks/ansuz-session-pin.js:75-77` (parser), `_session-pin.js:23-26` (loads `project-resolver.js` from inside `projectDir` = core), consumers `lease-touch.js:86-94`, `turn-context.js:52-61`, `_peer-waiting-line.js:21` | Pin exists only because cwd = core. With cwd = project, the pin is redundant. |
251
- | `--project-path` threaded through every tool call | `task-api.js:2629-2682` (flag parse) and `:504-577` (cwd fallback + warnings that already assume cwd may be the wrong dir), `.specialist/tools/session.js:34-44,71` (BASE_DIR vs state root diverge), `ansuz-boot-fast.js`, `phase-gate.js`, `dispatch.js` (`--project-path`), `BOOT_FULL.md:19,108,140`, `RULES.md:52,69`, `SYSTEM_DOC.md:138-150` | With cwd = project these default correctly; the flag becomes override-only. |
252
- | `core_path` resolution to find tool scripts | `.kenaz/project.yaml` `core_path` written by `project/manager.rs:292-327,381-427` (sentinel `__kenaz_core__` at `:654`), read by `.claude/hooks/core-resolve.js:10-11,76-95,161-181`, `collaboration/hooks/install.js:81-96`, `worktree-create.js:75,127` (token resolver), Rust `resolve_project_for_write` -> `project.core_path` (`kenaz.rs:647,672,1030`), fallback `KENAZ_SOURCE_DIR` (set by `lib.rs` at startup; used by `lease-touch.js:26`, `lease-release.js:38`, `task-api.js:277-279`) | Project sessions run core scripts (`task-api.js`, `dispatch.js`, `verify-and-land.js`, hooks) from `core_path`. Native launch still needs a way to find them. |
253
- | Hooks resolve from the core repo | project hooks installed by `install.js` call `core-resolve`; user-level `settings.json` has 31 machine-absolute paths (TASK_2358 description) | Plugin hooks via `${CLAUDE_PLUGIN_ROOT}` replace these. |
254
- | Prompt tells project agents to call core `headless.js` | `prompt.js:895-905` | removed Wave 3. |
255
- | MCP is localhost dashboard | `http://127.0.0.1:18080`, project selected by Dashboard `kenaz_project_switch`, or by `projectPath` argument on every `synapse_*`/`kenaz_*` call | with a native session, MCP needs the plugin `.mcp.json`; project identity should come from `CLAUDE_PROJECT_DIR`. |
256
-
257
- ### 5.2 Which waves remove or simplify it
258
-
259
- | Wave | Effect on cwd=core assumptions |
260
- |---|---|
261
- | 2 | Removes `kenaz.rs` use of `project.core_path` to locate `headless.js` and the `log_dir` split (`:663-670`). Removes `lib.rs` `KENAZ_SOURCE_DIR` headless fallbacks. |
262
- | 3 | Removes the `prompt.js` core-headless hint and `SYSTEM_DOC.md:149-150` `{CORE}/.formation/tools/headless.js --project-path` example. Leaves `task-api.js`/`dispatch.js` examples (they still need `{CORE}`). |
263
- | 4 | `dispatch.js` becomes cwd-relative by default (`projectPath = null` path at `:1454`); simplest place to make `--project-path` optional. |
264
- | 5 | Update Ansuz.md/BOOT_FULL/RULES wording; mark `[專案: X]` as a fallback. |
265
- | New Wave 7 (after TASK_2358 lands) | Retire `ansuz-session-pin.js`/`_session-pin.js` pin path for plugin sessions (keep for core-launched sessions during a deprecation window), reduce `core-resolve.js` to `${CLAUDE_PLUGIN_ROOT}`, drop `install.js` core_path hook bootstrap, make `core_path` optional in `project.yaml`. |
266
-
267
- ### 5.3 Open items specific to this direction
268
- - Where do `task-api.js`, `dispatch.js`, `verify-and-land.js`, `phase-gate.js` live for a native session? Options: plugin ships them (largest change), or plugin calls them through `KENAZ_SOURCE_DIR`/Dashboard HTTP. Decide in TASK_2358.
269
- - `lease-*` hooks and `worktree-create.js` already resolve `KENAZ_SOURCE_DIR` or walk up; verify they work with `CLAUDE_PROJECT_DIR` = target project and no core on disk (installed users).
270
- - The Dashboard "selected project" (`kenaz_project_current`) is global state; native sessions in several folders need per-call `projectPath` (already mandatory in CLAUDE.md) or derivation from `CLAUDE_PROJECT_DIR` server-side.
271
- - Wave 2 should land before the plugin ships hooks, otherwise the plugin would carry the `post-dispatch-handoff-nudge` hook for a tool that is going away.
272
-
273
- ---
274
-
275
- ## 6. Open questions for the user
276
-
277
- - **Q1 (blocks Wave 2):** unattended jobs (Heimdall trigger, code_watch, scheduled agents, Amelia/Huginn `kenaz_specialist_dispatch`, Ansuz exit-sleep). Options: (a) keep a minimal headless runner (`claude -p` one-shot, no formations, ~600 LOC) for these only; (b) drop the features; (c) re-implement them as Ansuz-session-triggered subagents. Recommendation: (a) for Heimdall + sleep/wake, (b) for agent_scheduler / Legacy Scheduler.
278
- - **Q2:** accept Codex worker loss during the gap, or hold Wave 2 for TASK_2315 (recommended)?
279
- - **Q3:** are `/dev`, `/multi-agent`, `/lead` still used? They route to Formation squads.
280
-
281
- ---
282
-
283
- ### Resolved 2026-10-09
284
- - **Q1 -> drop every unattended runner (option b, Heimdall re-homed).** Usage evidence (30 days to 2026-10-09): 96 of 98 headless dispatches were Heimdall; 64 Heimdall proposals June-10-04 with 0 accepted, while the 30 cards that did land came from one in-session triage (30/30 done); agent_scheduler never ran (enabled:false, lastRunAt:null); Legacy Scheduler and Amelia 0 runs; no evidence any sleep/wake output was read; TASK_2242 shows the unattended Heimdall path checking out main in a user's repo. Heimdall becomes a record-only post-commit hook plus an in-session scan offered at /Ansuz boot. The in-process Rust synapse_sleep_cycle stays. No ~600 LOC headless runner.
285
- - **Q2 -> hold the kenaz_dispatch removal for TASK_2315** (raised to P1). Unattended-runner removal does not depend on Codex and goes first as Wave 2a.
286
- - **Q3 -> /dev, /multi-agent, /lead are unused; retire them in Wave 1.**
287
-
288
- ## 7. Verification commands
289
-
290
- Run from repo root. Each should list every file named in section 1; blank for a row means the row is stale.
291
-
292
- ```bash
293
- # 7.1 headless / headless-v2 / formations / legacy-scheduler / broadcast / process-state / dispatch-registry / analytics
294
- git grep -n -E "headless(-v2)?\.js|headless-v2" -- '*.js' '*.ts' '*.tsx' '*.rs' '*.sh' '*.mjs' ':!dev/research'
295
- git grep -n -E "require\(.*(formations|legacy-scheduler|broadcast|process-state|dispatch-registry|analytics|task-utils|dispatch-notifier|runner|logger)(\.js)?['\"]\)" -- '*.js' '*.ts' ':!dev/research'
296
- # 7.2 callers outside .formation of post-complete / worktree-reclaim / verify-and-land / dispatch.js (keep-list)
297
- git grep -n -E "post-complete|worktree-reclaim|verify-and-land|dispatch\.js" -- '*.js' '*.ts' '*.tsx' '*.rs' ':!.formation' ':!dev/research' ':!.kenaz'
298
- # 7.3 directories and data files
299
- git ls-files .formation/unit .formation/solo .formation/squad .formation/legion .formation/roles .formation/legacy.bak .formation/lead.yaml .formation/role-map.yaml
300
- git grep -n -E "lead\.yaml|role-map\.yaml|legacy\.bak|roles/_shared|loadSkill\(" -- '*.js' '*.ts' '*.rs' '*.yaml' ':!dev/research' ':!.kenaz'
301
- # 7.4 Rust MCP tools and Dashboard
302
- git grep -n -E "kenaz_dispatch|kenaz_dispatch_status|kenaz_specialist_dispatch" -- '*.rs' '*.ts' '*.tsx' '*.js' ':!dev/research' ':!.kenaz'
303
- git grep -n -E "dispatchMode|dispatch_mode|dispatch-mode" -- '*.rs' '*.ts' '*.tsx' '*.js' ':!dev/research' ':!.kenaz'
304
- # 7.5 hooks and elixir
305
- git grep -n -E "handoff-staleness|post-dispatch-handoff-nudge|elixir\.yaml" -- '.claude' '.specialist' '.formation' ':!*.json'
306
- # 7.6 Launch-from-target-project assumptions
307
- git grep -n -E "project-path|core_path|__kenaz_core__|KENAZ_SOURCE_DIR|\[專案" -- '.claude' '.specialist' '.collaboration' 'dashboard/src-tauri/src' ':!*.test.js'
308
- # 7.7 LOC and file counts
309
- wc -l .formation/tools/*.js | sort -rn | head -40
310
- git ls-files .formation/unit .formation/solo .formation/squad .formation/legion .formation/roles .formation/legacy.bak | wc -l
311
- ```
312
-
313
- After each wave, the same commands are the regression check: counts must drop to the "keep" rows listed above and nothing else.
@@ -1,126 +0,0 @@
1
- # Kuzu replacement plan (draft for user review)
2
-
3
- Date: 2026-10-07. Owner: Ansuz. Status: EXECUTED 2026-10-07 - see Outcome at the end.
4
-
5
- ## Why
6
-
7
- Pre-registered experiment on this repo (dev/research/code-graph-eval/RESULTS.md): for
8
- "who calls X", Synapse code graph recall 0.56 vs LSP 0.97 (precision 1.00 vs 0.94);
9
- cross-language 0.33 vs grep-on-entry-string 1.00; impact failed on 25% of symbols.
10
- Kuzu also carries most of our maintenance load (graph bloat TASK_2294/2316, CHECKPOINT
11
- poisoning TASK_2293/2317, SEH crashes, index lock "unavailable while indexing", 16-min
12
- release builds, 33 MB vendored fork whose upstream is archived).
13
-
14
- ## Decisions taken (user, 2026-10-07)
15
-
16
- | Topic | Decision |
17
- |---|---|
18
- | Kuzu | Remove completely in ONE change. No legacy switch; rollback = git revert / previous release. |
19
- | Caller / impact questions | LSP, exposed as Kenaz MCP tools so Claude Code and Bifrost Codex share one implementation; installer provisions the language servers. |
20
- | Norn (heat, co-change, ΔGraph, curiosity, preamble, EFE, attention, thalamus, pulse) | Remove. |
21
- | Health score / Heimdall | Drop graph metrics, keep the non-graph ones. |
22
- | Graph-based hooks and prompts (pulse-before-*, Active Signals, thalamus, synapse-first) | Remove; synapse-first nudge becomes an LSP nudge. |
23
- | Episodes + transcripts (stored in Kuzu today) | Move to SQLite and migrate existing data on every machine via a one-time export helper shipped with the release (removed again in the following release). |
24
- | LSP languages | Rust (rust-analyzer), TypeScript/JavaScript (typescript-language-server), C# (csharp-ls, Unity projects such as Ashfall), Python (pyright). |
25
- | Old graph files | After a verified migration, the new version deletes .synapse/db/graph* and graph backups. |
26
- | Symbol search (synapse_search) + symbol index | Remove. Pre-registered experiment: grep 20/20 in 32 calls vs synapse_search 12/20 in 69 calls. |
27
-
28
- ## Target architecture
29
-
30
- ```
31
- Agents (Claude Code, Bifrost Codex)
32
- | MCP (existing kenaz-dashboard endpoint)
33
- v
34
- Kenaz backend
35
- |- LSP service (NEW): spawns rust-analyzer / typescript-language-server per project,
36
- | lazy start, kept warm; tools: kenaz_lsp_callers (call hierarchy, depth N),
37
- | kenaz_lsp_references, kenaz_lsp_definition, kenaz_lsp_symbols
38
- |- Memory (SQLite, unchanged): runes, sigils, cortex, alaya, bija
39
- |- Episodes + transcripts (MOVED to SQLite)
40
- `- Health (non-graph metrics), field reports, peer, Yggdrasil ... (unchanged)
41
- ```
42
-
43
- ## Workstreams (one integration branch, parallel worktrees, single merge + release)
44
-
45
- | WS | Content | Notes |
46
- |---|---|---|
47
- | W1 LSP service | Rust module managing one language server per (project, language): rust-analyzer (buildScripts off, separate targetDir), typescript-language-server, csharp-ls, pyright; lazy start on first query for that language, kept warm, idle shutdown; MCP tools kenaz_lsp_callers (call hierarchy, depth N), kenaz_lsp_references, kenaz_lsp_definition, kenaz_lsp_symbols; returns a clear warming-up status (rust-analyzer measured 188 s cold on this repo). Same tools reach Bifrost Codex through the existing MCP endpoint. | Reuse the JSON-RPC client from dev/research/code-graph-eval/harness. |
48
- | W2 Episodes to SQLite | SQLite tables for Episode, EpisodeEntry, links (LED_TO, CONTINUES, REFERENCES, IN_SCOPE), touched symbols as stable-id strings, TranscriptSession/Chunk; port hippocampus episode.rs + transcript.rs. Migration: a separate small crate `tools/kuzu-export` (outside the main workspace, the only thing that still links kuzu) builds `kenaz-kuzu-export.exe`; the app runs it once at startup when an old graph exists, imports its JSON into SQLite, verifies counts, records success, then deletes the graph files. | Main app stays kuzu-free; the helper is dropped in the next release. |
49
- | W3 Indexer | Delete the whole indexer (scanner, index_*, calls/imports/exports/implements/dataflows/varflows, community/process detection, stable_id_migration, reconcile, symbol FTS/embeddings, file watcher auto-index). Rune inscribe validates that the referenced FILE exists instead of a graph symbol. | Largest diff; pure deletion. |
50
- | W4 Remove graph features | Delete Kuzu plumbing (connection pool, writer gate, worker processes, db_pool, quarantine, crash/SEH guards specific to kuzu, IS_INDEXING), graph MCP tools (context, impact, pulse, map, cypher, trace_route, pain_paths, orphans, import_cycles, detect_changes, link_cognitive, ...), Norn, thalamus, attention, pulse, EFE; strip graph_context from recall; drop "symbol exists in graph" gates on inscribe/declare; synapse_status reports SQLite stores only. | ~56k LOC production + ~13k tests. |
51
- | W5 Hooks, rules, prompts | Remove pulse-before-read/edit, jev-thalamus-context, synapse-first-*, Active Signals in turn-context; rewrite CLAUDE.md (SYN, Norn sections), .rule (synapse-code-intelligence, cognitive-fusion, ddx-synapse-stack), Ansuz elixir/exo_cortex/core, Heimdall/Huginn skills, Formation dispatch/post-complete callers of impact/pulse/context. Post-commit hook (HOOK_VERSION 4): keep Heimdall trigger, drop Norn on-commit. | Agents must never be told to call a removed tool. |
52
- | W6 Frontend | Remove Synapse graph viewer, thalamus/pulse views, EFE panel; Synapse page becomes memory + search (+ LSP status). | |
53
- | W7 Build + provisioning | Remove kuzu crate, vendor/kuzu (33 MB, 2,857 files), build.rs kuzu guard, c_shim, cxx pin, CI/sccache/verify-script kuzu handling. Installer/startup provisioning (pattern of TASK_2319) installs language servers on demand: rust-analyzer via rustup component, typescript-language-server and pyright via npm, csharp-ls via dotnet tool (report clearly if the .NET SDK is missing). | Last; proves the app builds with no kuzu in cargo tree (helper crate excluded). |
54
-
55
- ## Verification (gate for the single merge)
56
-
57
- 1. `cargo tree | grep -i kuzu` empty; release build succeeds; build time recorded (was ~10 min, kuzu C++ ~16 min cold).
58
- 2. Full Rust tests, dashboard tsc + jest, node tests for hooks/specialist/formation touched.
59
- 3. Rerun the code-graph experiment harness against the new kenaz_lsp_callers tool: recall >= 0.95 on the same 27 symbols.
60
- 4. Episodes: count and spot-check content after migration equals pre-migration; hippocampus recall works.
61
- 5. Memory: synapse_recall, inscribe, sigils, cortex/alaya unchanged (existing tests + live check).
62
- 6. Live: Claude Code session and a Bifrost Codex session each call kenaz_lsp_callers successfully.
63
- 7. Prompt audit: grep all live prompt/rule/hook files for removed tool names = 0.
64
- 8. Clean-machine install: language servers provisioned, no Kuzu files created.
65
-
66
- ## Risks
67
-
68
- - Data loss if episode migration runs after Kuzu is gone (see question 1).
69
- - Agents calling removed tools from docs we missed (mitigated by verification 7).
70
- - rust-analyzer resource use (RAM, first warm-up ~3 min) on team machines.
71
- - Team projects in other languages lose code navigation unless their language server is provisioned (see question 2).
72
- - Large single diff: conflicts with other work on main during the change window.
73
-
74
- ## Execution order (all on one integration branch `kuzu-removal`, merged to main once)
75
-
76
- 1. W1 LSP service and W2 episode storage + export helper, in parallel. Both are additive
77
- and are tested while Kuzu still exists (migration tested against this machine's real
78
- graph copy).
79
- 2. W5 hooks/rules/prompts and W6 frontend, in parallel, pointing everything at the new
80
- LSP tools and memory-only Synapse.
81
- 3. W3 + W4 deletion (indexer, graph features, Norn, plumbing).
82
- 4. W7 build removal + language-server provisioning.
83
- 5. Verification gate (section above) on the integration branch, then ONE merge to main,
84
- release, and the migration runs on each machine at first start.
85
-
86
- Main keeps moving meanwhile: the integration branch merges main in at each step; other
87
- work should avoid src-tauri/src/features/synapse during the window.
88
-
89
- ## Open questions
90
-
91
- None left from planning.
92
-
93
- ## Outcome (2026-10-07)
94
-
95
- Executed in one change (merge d90658b64). Cards: TASK_2333 (W1 LSP), 2334 (W2 episodes),
96
- 2335/2336/2340/2341 (W5 prompts, hooks, specialist, health gate), 2337 (W6 frontend),
97
- 2338 (W3+W4 deletion), 2339 (W7 provisioning + helper bundling), 2342 (CommonJS callers).
98
-
99
- Verification:
100
- 1. Cargo.lock has no kuzu; dev rebuild 50 s (was ~10 min with the kuzu C++ build).
101
- 2. Rust lib tests 1930 passed / 0 failed; dashboard tsc clean; jest 444/444; node suites
102
- touched by each card green.
103
- 3. kenaz_lsp_callers on a checkout of afec99026 (the experiment commit): callers recall
104
- 0.974 at first (TS 0.925: tsserver find-references does not follow CommonJS
105
- `module.exports = { f }`); after TASK_2342 (definition-verified text pass) 0.981 overall,
106
- R 1.00, TS 0.97, X-lang 0.667, 0.995 excluding X-lang. Synapse was 0.56. Gate 0.95 PASS.
107
- 4. Migration on this machine: 14 projects; every marker has expected == stored (one project
108
- skipped 6 orphan entries no episode owned, by design). KenazAI's live graph already had 0
109
- episodes (all 2,120 were in memory.db). Legacy graph + backups deleted (3.4 GB here).
110
- 5. synapse_status / recall / health and hippocampus episode + transcript recall answer live.
111
- 6. Claude Code (`claude -p`) and Codex (`codex exec` with Bifrost's `-s danger-full-access`)
112
- both got the same 11 call sites from kenaz_lsp_callers. Codex in a read-only sandbox with
113
- approval=never refuses MCP calls unless the tool is approved in config.toml.
114
- 7. Prompt audit: removed tool names remain only in dated design/investigation docs and in
115
- tests that assert their absence.
116
- 8. Clean-machine install: pending the release.
117
-
118
- Deviations:
119
- - vendor/kuzu stays for this release: tools/kuzu-export builds from the same fork that wrote
120
- the old graphs. Drop vendor/kuzu, tools/kuzu-export and tauri.kuzu-migration.conf.json
121
- together in the next release.
122
- - Health is record-only (score_version memory-v1): a memory score cannot judge a code change,
123
- so it no longer reverts or gates merges.
124
- - synapse_declare stays (writes a decision rune); POST /api/synapse/verify stays; spike-bus
125
- routes stay on an in-memory buffer.
126
- - Provisioned TypeScript is pinned to typescript@5: TypeScript 7 (native) has no tsserver.js.
@@ -1,47 +0,0 @@
1
- # Crash Diagnosis Toolkit (native KuzuDB / C++ ACCESS_VIOLATION)
2
-
3
- Self-contained tools to diagnose Windows native crashes (e.g. the Specialist-dispatch
4
- KuzuDB `0xc0000005` documented in `crash_guard.rs` + Synapse runes). They drive the
5
- **system `dbghelp.dll`** — no WinDbg/cdb install needed — against the **GUID-matched
6
- local release PDB** (`dashboard/src-tauri/target/release/kenaz_dashboard.pdb`).
7
-
8
- Run with the real Python (the `python` on PATH may be the disabled Store alias):
9
- `C:\Users\user\AppData\Local\Python\bin\python.exe`
10
-
11
- ## Workflow
12
-
13
- ### 1. You have RVAs from a crash report (no dump needed)
14
- The matched PDB resolves RVA → function+line directly:
15
- ```
16
- python dev/scripts/symbolize_rva.py "dashboard/src-tauri/target/release/kenaz-dashboard.exe" 0x1fe2970 0x15e2060 ...
17
- ```
18
- First verify the local PDB matches the crashing build: the script parses the exe's
19
- RSDS debug-dir GUID; compare to the report's PDB GUID.
20
-
21
- ### 2. You have (or can produce) a crash dump
22
- ```
23
- python dev/scripts/analyze_latest_dump.py
24
- ```
25
- Picks the newest `%LOCALAPPDATA%\CrashDumps\kenaz-dashboard.exe.*.dmp`, then calls
26
- `minidump_stack.py` to parse the minidump (module list, exception context Rip/Rsp/Rcx,
27
- stack memory) and raw-scan the crashing thread's stack — symbolicating every in-module
28
- return address. The frame **above** `kuzu::FactorizedTable` names the Rust caller (the
29
- offending query). The script WARNS if the dump's module GUID ≠ the matched PDB (you ran
30
- a different build → symbols will be garbage).
31
-
32
- **Reproducing the dispatch crash:** run the matched release build and dispatch a
33
- Specialist (Amelia ~1s, Ansuz ~30s). The crash is STATE-DEPENDENT — a clean restart that
34
- checkpoints the WAL before the first dispatch query clears it. **If it recurs, run
35
- `analyze_latest_dump.py` BEFORE restarting**, or the repro window closes.
36
-
37
- ### 3. Validate the SEH guard mechanism in isolation
38
- ```
39
- rustc dev/scripts/seh_probe.rs -L native=<cc OUT_DIR with kenaz_seh_guard.lib> -l static=kenaz_seh_guard -o probe.exe
40
- ```
41
- Triggers a real null-write AV inside `kenaz_guarded_call`; expect `0xc0000005` caught +
42
- process survives. Bypasses the rfd/comctl32-manifest `cargo test` limitation
43
- (`STATUS_ENTRYPOINT_NOT_FOUND`) that blocks the in-crate unit test.
44
-
45
- ## Background
46
- - Root cause + fix: Synapse runes (recall "dashboard crashes on dispatch").
47
- - Fix: `c_shim/kenaz_seh_guard.c` + `seh_guard.rs` (TASK_1555), startup WAL hygiene (TASK_1556).