kenaz 0.3.21 → 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 (481) hide show
  1. package/core/.claude/commands/Ansuz.md +2 -0
  2. package/core/.claude/hooks/__tests__/peer-session-fill.test.js +37 -0
  3. package/core/.claude/hooks/_ansuz-conversation.js +32 -1
  4. package/core/.claude/hooks/_user-scope.js +1 -1
  5. package/core/.claude/hooks/core-resolve.js +1 -1
  6. package/core/.claude/hooks/peer-optin.test.js +74 -0
  7. package/core/.claude/hooks/peer-session-fill.js +38 -0
  8. package/core/.claude/hooks/turn-context.js +5 -4
  9. package/core/.claude/hooks/worktree-create.js +6 -6
  10. package/core/.claude/hooks/worktree-remove.js +4 -4
  11. package/core/.claude/settings.json +9 -0
  12. package/core/.collaboration/core/reconcile.js +16 -1
  13. package/core/.collaboration/core/task-2467-lifecycle.test.js +63 -0
  14. package/core/.collaboration/core/task-api.js +37 -7
  15. package/core/.formation/bifrost/launch.js +1 -1
  16. package/core/.formation/bifrost/openai/codex-hook-shim.js +21 -4
  17. package/core/.formation/bifrost/openai/codex-peer-pull.test.js +42 -0
  18. package/core/.formation/bifrost/provider-launch.js +2 -1
  19. package/core/.formation/tools/kenaz-stats.js +1 -1
  20. package/core/.formation/tools/post-complete/git-merge.js +1 -1
  21. package/core/.formation/tools/prompt.js +1 -1
  22. package/core/.kenaz/specialist/ansuz_rules.yaml +7 -51
  23. package/core/.kenaz/specialist/ansuz_session_handoff.schema.json +2 -6
  24. package/core/.rule/general/project-self-containment.yaml +2 -2
  25. package/core/.specialist/Amelia/README.md +1 -1
  26. package/core/.specialist/Amelia/rule.yaml +1 -1
  27. package/core/.specialist/Ansuz/RULES.md +1 -1
  28. package/core/.specialist/Ansuz/concepts/commitment_layer.yaml +1 -1
  29. package/core/.specialist/Ansuz/concepts/evolvable_guardrails.yaml +1 -1
  30. package/core/.specialist/Ansuz/knowledge.yaml +1 -3
  31. package/core/.specialist/tools/__tests__/task-2409-lessons.test.js +10 -0
  32. package/core/.specialist/tools/__tests__/task-2427-harvest.test.js +25 -0
  33. package/core/.specialist/tools/ansuz-boot-fast.js +1 -1
  34. package/core/.specialist/tools/failure-detector.js +4 -4
  35. package/core/.specialist/tools/handoff-doc.js +1 -1
  36. package/core/.specialist/tools/lessons.js +2 -2
  37. package/core/CLAUDE.md +5 -5
  38. package/core/KENAZ_CORE_VERSION +1 -1
  39. package/core/dashboard/scripts/install-kenaz-cli.js +471 -0
  40. package/core/dev/scripts/check-file-size.js +1 -1
  41. package/core/dev/scripts/ci-feedback.js +1 -1
  42. package/core/dev/scripts/gc-agent-worktrees.js +11 -11
  43. package/core/dev/scripts/kenaz-session.js +3 -3
  44. package/core/dev/scripts/peer-identity-e2e.js +3 -3
  45. package/core/dev/scripts/run-rust-tests.js +2 -2
  46. package/core/dev/scripts/skill-routing-replay.js +3 -3
  47. package/core/dev/scripts/task1961/selftest.js +2 -2
  48. package/core/dev/scripts/windows-hide-guard.test.js +97 -0
  49. package/core/plugins/kenaz/commands/Ansuz.md +2 -0
  50. package/core/plugins/kenaz/guidance.md +2 -0
  51. package/core/plugins/kenaz/hooks/core-resolve.js +1 -1
  52. package/core/plugins/kenaz/hooks/hooks.json +9 -0
  53. package/core/plugins/kenaz/hooks/kenaz-hook.js +53 -4
  54. package/core/plugins/kenaz/scripts/kenaz.test.js +72 -5
  55. package/core/plugins/kenaz/scripts/ygg.js +40 -4
  56. package/core/plugins/kenaz/scripts/ygg.test.js +63 -3
  57. package/core/plugins/kenaz-peer/hooks/register.test.ts +59 -2
  58. package/core/plugins/kenaz-peer/hooks/register.ts +24 -1
  59. package/lib/cli.js +9 -5
  60. package/package.json +6 -6
  61. package/vendor/install-kenaz-cli.js +21 -6
  62. package/core/.kenaz/designs/METAPLASTICITY_CONFIDENCE_DESIGN.md +0 -537
  63. package/core/.kenaz/designs/REFLEX_INITIATOR_DESIGN.md +0 -501
  64. package/core/.kenaz/designs/TASK_1385_handoff_mcp_design.md +0 -426
  65. package/core/.kenaz/designs/TASK_932_hippocampus_consolidation.md +0 -103
  66. package/core/.kenaz/designs/TASK_934_efe_signal_engine.md +0 -97
  67. package/core/.kenaz/designs/TASK_935_self_evolution_framework.md +0 -154
  68. package/core/.kenaz/designs/VISION_cognitive_architecture_roadmap.md +0 -159
  69. package/core/.kenaz/designs/metaplasticity_simulation_results.json +0 -696
  70. package/core/.kenaz/main-memory/README.md +0 -230
  71. package/core/.kenaz/main-memory/kenaz/cortex/001_cortex_overview.md +0 -168
  72. package/core/.kenaz/main-memory/kenaz/cortex/001_rag_engine_overview.md +0 -30
  73. package/core/.kenaz/main-memory/kenaz/memory-system/001_three_tier_architecture.md +0 -361
  74. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_execution_flow.md +0 -117
  75. package/core/.kenaz/main-memory/kenaz/pipeline/001_task_granularity.md +0 -154
  76. package/core/.kenaz/main-memory/kenaz/pipeline/002_team_priority.md +0 -51
  77. package/core/.kenaz/main-memory/kenaz/pipeline/003_feature_id_system.md +0 -46
  78. package/core/.kenaz/main-memory/kenaz/rules/001_gen_007_self_containment.md +0 -108
  79. package/core/.kenaz/main-memory/kenaz/rules/001_rule_priority_system.md +0 -121
  80. package/core/.kenaz/main-memory/kenaz/rules/002_agt_006_pre_check.md +0 -0
  81. package/core/.kenaz/main-memory/kenaz/rules/003_ppl_002_task_archival.md +0 -48
  82. package/core/.kenaz/main-memory/kenaz/system/001_dual_track_task_system.md +0 -197
  83. package/core/.kenaz/main-memory/knowledge/patterns/001_json_bom_issue.md +0 -78
  84. package/core/.kenaz/main-memory/knowledge/patterns/001_leader_worker_pattern.md +0 -0
  85. package/core/.kenaz/main-memory/knowledge/patterns/002_scope_path_conflict.md +0 -115
  86. package/core/.kenaz/main-memory/knowledge/patterns/002_task_dependency_resolution.md +0 -223
  87. package/core/.kenaz/main-memory/knowledge/patterns/003_question_protocol.md +0 -242
  88. package/core/.kenaz/main-memory/knowledge/patterns/004_user_insight_value.md +0 -111
  89. package/core/.kenaz/main-memory/knowledge/patterns/005_file_lock_pattern.md +0 -274
  90. package/core/.kenaz/main-memory/knowledge/references/001_ppl_rules.md +0 -28
  91. package/core/.kenaz/main-memory/knowledge/solutions/001_json_bom_issue.md +0 -137
  92. package/core/.kenaz/main-memory/knowledge/solutions/001_team_invocation.md +0 -0
  93. package/core/.kenaz/main-memory/knowledge/solutions/002_passive_monitoring.md +0 -0
  94. package/core/.kenaz/main-memory/knowledge/solutions/003_windows_file_race_condition.md +0 -239
  95. package/core/.kenaz/main-memory/registry.json +0 -326
  96. package/core/.kenaz/main-memory/version.yaml +0 -58
  97. package/core/.kenaz/specialist/memory_guard_fired.json +0 -1
  98. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +0 -1
  99. package/core/.kenaz/specialist/memory_source_priority.yaml +0 -260
  100. package/core/.kenaz/specialist/prompt_1775.txt +0 -317
  101. package/core/.kenaz/specialist/prompt_1776.txt +0 -326
  102. package/core/.kenaz/specialist/prompt_1791.txt +0 -320
  103. package/core/.kenaz/specialist/prompt_1792.txt +0 -320
  104. package/core/.kenaz/specialist/prompt_1795.txt +0 -281
  105. package/core/.kenaz/specialist/prompt_1813.txt +0 -332
  106. package/core/.kenaz/specialist/prompt_1814.txt +0 -401
  107. package/core/.kenaz/specialist/prompt_1815.txt +0 -394
  108. package/core/.kenaz/specialist/prompt_1816.txt +0 -437
  109. package/core/.kenaz/specialist/prompt_1818.txt +0 -361
  110. package/core/.kenaz/specialist/prompt_1819.txt +0 -421
  111. package/core/.kenaz/specialist/prompt_1821.txt +0 -345
  112. package/core/.kenaz/specialist/prompt_1822.txt +0 -313
  113. package/core/.kenaz/specialist/prompt_1824.txt +0 -348
  114. package/core/.kenaz/specialist/prompt_1826.txt +0 -388
  115. package/core/.kenaz/specialist/rune_efe_salience_gap.md +0 -21
  116. package/core/.kenaz/specialist/task1825_update.json +0 -43
  117. package/core/.kenaz/specialist/taskgen/consolidation_i.json +0 -38
  118. package/core/.kenaz/specialist/taskgen/csharp_a.json +0 -44
  119. package/core/.kenaz/specialist/taskgen/csharp_b.json +0 -40
  120. package/core/.kenaz/specialist/taskgen/embedding_e.json +0 -34
  121. package/core/.kenaz/specialist/taskgen/hygiene_fg.json +0 -39
  122. package/core/.kenaz/specialist/taskgen/pathology_h.json +0 -36
  123. package/core/.kenaz/specialist/taskgen/unity_noise_d.json +0 -38
  124. package/core/.kenaz/specialist/taskgen/visibility_c.json +0 -38
  125. package/core/.specialist/Ansuz/decisions/ADR-requirement-graph-layer.md +0 -390
  126. package/core/.specialist/Ansuz/self_model_seed.backup.json +0 -100
  127. package/core/.specialist/ansuz_session_handoff.json +0 -96
  128. package/core/dev/ALAYA_FIELD_FEEDBACK_DESIGN.md +0 -126
  129. package/core/dev/ANSUZ_SCAFFOLD_DIET_2026-09-20.md +0 -231
  130. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +0 -355
  131. package/core/dev/ANSUZ_WORKFLOW_MODERNIZATION.md +0 -143
  132. package/core/dev/CORTEX_META_GRAPH_ASSESSMENT.md +0 -99
  133. package/core/dev/FREYA_DOWNSTREAM_BUGS_2026-09-19.md +0 -44
  134. package/core/dev/GLOBAL_MEMORY_IDENTITY_CONSOLIDATION.md +0 -263
  135. package/core/dev/GUARD_EFFECTIVENESS_DESIGN.md +0 -180
  136. package/core/dev/HEALTH_GATE_VARIANCE_ASSESSMENT.md +0 -271
  137. package/core/dev/HOOK_DIET_2026-09-21.md +0 -126
  138. package/core/dev/JEV_INTEGRATION_PLAN.md +0 -189
  139. package/core/dev/KENAZ_AGENT_CONNECT_v1_SPEC.md +0 -139
  140. package/core/dev/MOBILE_DESIGN_SPEC.md +0 -569
  141. package/core/dev/MULTI_ANSUZ_SPEC.md +0 -136
  142. package/core/dev/MUNINN_RETIREMENT.md +0 -115
  143. package/core/dev/PHASE3_ATTRIBUTION_POPULATION_DIAGNOSIS.md +0 -211
  144. package/core/dev/PHASE3_P3-2B_TASKLEVEL_PROBE.md +0 -83
  145. package/core/dev/PHASE3_P3-2_POPULATION_DISJOINTNESS.md +0 -83
  146. package/core/dev/PHASE3_P3-2_REMEASURE_REPORT.md +0 -231
  147. package/core/dev/PREDICTION_GROUNDING_DESIGN.md +0 -376
  148. package/core/dev/PRODUCT_SPEC.md +0 -317
  149. package/core/dev/PROJECT_REGISTRY_DUPLICATE_ASSESSMENT.md +0 -86
  150. package/core/dev/STARTUP_TIMELINE_TASK_1995.md +0 -181
  151. package/core/dev/SYNAPSE_WORKER_PER_PROJECT.md +0 -881
  152. package/core/dev/TASK_1680_P3-3_DISPATCH_SPEC.md +0 -96
  153. package/core/dev/TASK_1684_CALIBRATION_IMPACT_ANALYSIS.md +0 -170
  154. package/core/dev/TASK_1684_FORK_A_GOODHART_DESIGN.md +0 -171
  155. package/core/dev/TASK_1684_P3_2_REMEASURE_VALIDATION.md +0 -262
  156. package/core/dev/TASK_1903_SIGNAL_AUC_MEASUREMENT.md +0 -207
  157. package/core/dev/TASK_1904_BRANCH_INTEGRITY_AUDIT.md +0 -146
  158. package/core/dev/ansuz-eval/README.md +0 -38
  159. package/core/dev/ansuz-eval/build-fixtures.js +0 -87
  160. package/core/dev/ansuz-eval/grade.js +0 -96
  161. package/core/dev/ansuz-eval/grader.test.js +0 -117
  162. package/core/dev/ansuz-eval/tasks.md +0 -32
  163. package/core/dev/archive/ansuz/BOOT_FULL.md +0 -141
  164. package/core/dev/archive/ansuz/agents/ansuz-boot.md +0 -176
  165. package/core/dev/archive/ansuz/designs/alaya-passive-surfacing.md +0 -84
  166. package/core/dev/archive/ansuz/designs/cc_memory_indexing.md +0 -307
  167. package/core/dev/archive/ansuz/designs/check_guard.md +0 -322
  168. package/core/dev/archive/ansuz/designs/consequence_loop.md +0 -227
  169. package/core/dev/archive/ansuz/designs/mcp_kuzudb_lock_architecture.md +0 -312
  170. package/core/dev/archive/ansuz/designs/phase0_git_enrichment.md +0 -278
  171. package/core/dev/archive/ansuz/designs/refactor_mcp_tools_synapse.md +0 -490
  172. package/core/dev/archive/ansuz/designs/semantic_markdown_extraction.md +0 -167
  173. package/core/dev/archive/ansuz/designs/task_1372_prompt_injects_into.md +0 -193
  174. package/core/dev/archive/ansuz/designs/thought_stack.md +0 -286
  175. package/core/dev/archive/ansuz/investigations/reachability_unified_api_2026-04-11.md +0 -330
  176. package/core/dev/archive/ansuz/investigations/synapse_orphans_indexing_bug_2026-04-11.md +0 -352
  177. package/core/dev/archive/ansuz/investigations/synapse_orphans_reindex_verification_2026-04-11.md +0 -48
  178. package/core/dev/archive/ansuz/investigations/synapse_orphans_verification_2026-04-11.md +0 -170
  179. package/core/dev/archive/ansuz/legacy/kernel.yaml +0 -399
  180. package/core/dev/archive/ansuz/legacy/phases/phase_0.yaml +0 -418
  181. package/core/dev/archive/ansuz/legacy/phases/phase_1.yaml +0 -376
  182. package/core/dev/archive/ansuz/legacy/phases/phase_10.yaml +0 -35
  183. package/core/dev/archive/ansuz/legacy/phases/phase_11.yaml +0 -582
  184. package/core/dev/archive/ansuz/legacy/phases/phase_2.yaml +0 -94
  185. package/core/dev/archive/ansuz/legacy/phases/phase_3.yaml +0 -274
  186. package/core/dev/archive/ansuz/legacy/phases/phase_4.yaml +0 -67
  187. package/core/dev/archive/ansuz/legacy/phases/phase_5.yaml +0 -32
  188. package/core/dev/archive/ansuz/legacy/phases/phase_6.yaml +0 -91
  189. package/core/dev/archive/ansuz/legacy/phases/phase_7.yaml +0 -58
  190. package/core/dev/archive/ansuz/legacy/phases/phase_8.yaml +0 -146
  191. package/core/dev/archive/ansuz/legacy/phases/phase_9.yaml +0 -424
  192. package/core/dev/archive/ansuz/specs/INDEX_bifrost_hook_parity.yaml +0 -92
  193. package/core/dev/archive/ansuz/specs/active-inference-formation.yaml +0 -453
  194. package/core/dev/archive/ansuz/specs/brief_TASK_1228_userpromptsubmit.yaml +0 -191
  195. package/core/dev/archive/ansuz/specs/brief_TASK_1229_pretooluse_posttooluse.yaml +0 -250
  196. package/core/dev/archive/ansuz/specs/brief_TASK_1230_sessionstart_stop.yaml +0 -301
  197. package/core/dev/archive/ansuz/specs/brief_TASK_1231_verification.yaml +0 -272
  198. package/core/dev/archive/skills/feature_agent/SKILL.md +0 -289
  199. package/core/dev/design/PHASE4_DESIGN.md +0 -559
  200. package/core/dev/design/dashboard_docs_integration_PLAN.md +0 -388
  201. package/core/dev/design/matrix_format_ABBREVIATIONS.md +0 -655
  202. package/core/dev/design/matrix_format_DESIGN_SPEC.md +0 -601
  203. package/core/dev/design/matrix_format_DISCUSSION_SUMMARY.md +0 -484
  204. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +0 -13
  205. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +0 -9
  206. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +0 -14
  207. package/core/dev/design/matrix_format_SYNTAX_BNF.md +0 -754
  208. package/core/dev/design/matrix_format_TOKEN_COMPARISON.md +0 -484
  209. package/core/dev/design/matrix_v2_COGNITIVE_DESIGN.md +0 -503
  210. package/core/dev/design/matrix_v2_DISCUSSION_SUMMARY.md +0 -414
  211. package/core/dev/design/matrix_v2_EXAMPLE.matrix +0 -67
  212. package/core/dev/designs/EXPANDABLE_CARD_DESIGN_SPEC.md +0 -509
  213. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +0 -52
  214. package/core/dev/jev-eval/ANNOTATION_GUIDE.md +0 -68
  215. package/core/dev/jev-eval/BASELINE_COMPARISON.md +0 -45
  216. package/core/dev/jev-eval/CONTEXT_REVIEW.md +0 -31
  217. package/core/dev/jev-eval/EVALUATION_STATUS.md +0 -39
  218. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +0 -33
  219. package/core/dev/jev-eval/PACKAGING_VERIFICATION.md +0 -42
  220. package/core/dev/jev-eval/README.md +0 -101
  221. package/core/dev/jev-eval/THALAMUS_RANKING.md +0 -58
  222. package/core/dev/jev-eval/VALIDATION_PROGRESS.md +0 -54
  223. package/core/dev/jev-eval/cli.mjs +0 -50
  224. package/core/dev/jev-eval/context.mjs +0 -183
  225. package/core/dev/jev-eval/corpus.mjs +0 -186
  226. package/core/dev/jev-eval/fixtures/conversation-review.seed.jsonl +0 -6
  227. package/core/dev/jev-eval/fixtures/synthetic.jsonl +0 -11
  228. package/core/dev/jev-eval/metrics.mjs +0 -67
  229. package/core/dev/jev-eval/muninn-baseline.mjs +0 -119
  230. package/core/dev/jev-eval/providers.mjs +0 -95
  231. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +0 -32
  232. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +0 -48
  233. package/core/dev/jev-eval/reports/conversation-review.pending.json +0 -151
  234. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +0 -52
  235. package/core/dev/jev-eval/reports/length-probe-2026-09-20.json +0 -133
  236. package/core/dev/jev-eval/reports/live-smoke-2026-09-20.json +0 -616
  237. package/core/dev/jev-eval/reports/muninn-baseline-2026-09-20.json +0 -52
  238. package/core/dev/jev-eval/reports/resilience-2026-09-20.json +0 -520
  239. package/core/dev/jev-eval/reports/rules-baseline.json +0 -197
  240. package/core/dev/jev-eval/reports/synthetic-review.pending.json +0 -357
  241. package/core/dev/jev-eval/resilience.mjs +0 -71
  242. package/core/dev/jev-eval/review.mjs +0 -78
  243. package/core/dev/jev-eval/schema.mjs +0 -87
  244. package/core/dev/jev-eval/test/context.test.mjs +0 -95
  245. package/core/dev/jev-eval/test/corpus.test.mjs +0 -102
  246. package/core/dev/jev-eval/test/eval.test.mjs +0 -146
  247. package/core/dev/jev-eval/test/muninn-baseline.test.mjs +0 -71
  248. package/core/dev/jev-eval/test/resilience.test.mjs +0 -72
  249. package/core/dev/jev-eval/test/review.test.mjs +0 -61
  250. package/core/dev/pipeline/PHASE3_PLANNING_SUMMARY.md +0 -338
  251. package/core/dev/pipeline/PROGRESS.md +0 -113
  252. package/core/dev/pipeline/PROGRESS_template.md +0 -860
  253. package/core/dev/pipeline/QA_REPORT_F008.md +0 -431
  254. package/core/dev/pipeline/QA_REPORT_LOCAL_CLAUDE_DIAGNOSIS.md +0 -583
  255. package/core/dev/pipeline/README.md +0 -210
  256. package/core/dev/pipeline/WORKFLOW_GUIDE.md +0 -824
  257. package/core/dev/pipeline/archived/TASK_015_tauri_init.yaml +0 -53
  258. package/core/dev/pipeline/archived/TASK_016_tauri_commands.yaml +0 -54
  259. package/core/dev/pipeline/archived/TASK_017_rust_pty.yaml +0 -54
  260. package/core/dev/pipeline/archived/TASK_018_tauri_bundle.yaml +0 -53
  261. package/core/dev/pipeline/archived/TASK_019_release_workflow.yaml +0 -56
  262. package/core/dev/pipeline/archived/TASK_020_update_ui.yaml +0 -54
  263. package/core/dev/pipeline/archived/TASK_021_update_notification_ui.yaml +0 -55
  264. package/core/dev/pipeline/archived/TASK_022_remove_node_pty.yaml +0 -65
  265. package/core/dev/pipeline/archived/TASK_023_api_routes_migration.yaml +0 -86
  266. package/core/dev/pipeline/archived/TASK_024_feature_id_system.yaml +0 -51
  267. package/core/dev/pipeline/archived/TASK_025_executable_acceptance.yaml +0 -66
  268. package/core/dev/pipeline/archived/TASK_026_spec_versioning.yaml +0 -56
  269. package/core/dev/pipeline/archived/TASK_027_drift_detection.yaml +0 -60
  270. package/core/dev/pipeline/archived/TASK_028_tauri_pty_manager.yaml +0 -60
  271. package/core/dev/pipeline/archived/TASK_029_tauri_pty_commands.yaml +0 -62
  272. package/core/dev/pipeline/archived/TASK_030_frontend_session_adapter.yaml +0 -54
  273. package/core/dev/pipeline/archived/TASK_031_terminal_tauri_events.yaml +0 -56
  274. package/core/dev/pipeline/archived/TASK_041_scheduler_data_models.yaml +0 -54
  275. package/core/dev/pipeline/archived/TASK_042_path_lock_manager.yaml +0 -53
  276. package/core/dev/pipeline/archived/TASK_043_process_manager.yaml +0 -57
  277. package/core/dev/pipeline/archived/TASK_044_git_integration.yaml +0 -85
  278. package/core/dev/pipeline/archived/TASK_045_task_queue_manager.yaml +0 -54
  279. package/core/dev/pipeline/archived/TASK_046_scheduler_dispatcher.yaml +0 -60
  280. package/core/dev/pipeline/archived/TASK_047_tauri_scheduler_commands.yaml +0 -55
  281. package/core/dev/pipeline/archived/TASK_048_realtime_status_push.yaml +0 -92
  282. package/core/dev/pipeline/archived/TASK_049_frontend_scheduler_integration.yaml +0 -58
  283. package/core/dev/pipeline/archived/TASK_050_error_recovery.yaml +0 -56
  284. package/core/dev/pipeline/archived/TASK_051_optimization_proposals_backend.yaml +0 -53
  285. package/core/dev/pipeline/archived/TASK_052_optimization_proposals_ui.yaml +0 -58
  286. package/core/dev/pipeline/archived/TASK_053_optimization_proposals_diff_view.yaml +0 -54
  287. package/core/dev/pipeline/archived/TASK_054_multi_project_scheduler_state.yaml +0 -76
  288. package/core/dev/pipeline/archived/TASK_055_scheduler_api_project_scope.yaml +0 -64
  289. package/core/dev/pipeline/archived/TASK_056_frontend_scheduler_project_scope.yaml +0 -62
  290. package/core/dev/pipeline/archived/TASK_057_scheduler_module_structure.yaml +0 -54
  291. package/core/dev/pipeline/archived/TASK_058_scheduler_models_extract.yaml +0 -51
  292. package/core/dev/pipeline/archived/TASK_059_scheduler_core_extract.yaml +0 -51
  293. package/core/dev/pipeline/archived/TASK_060_scheduler_commands_extract.yaml +0 -51
  294. package/core/dev/pipeline/archived/TASK_061_scheduler_specialized_commands.yaml +0 -53
  295. package/core/dev/pipeline/archived/TASK_062_process_manager_module_structure.yaml +0 -56
  296. package/core/dev/pipeline/archived/TASK_063_process_manager_core_extract.yaml +0 -56
  297. package/core/dev/pipeline/archived/TASK_064_recovery_module_structure.yaml +0 -57
  298. package/core/dev/pipeline/archived/TASK_065_recovery_core_extract.yaml +0 -56
  299. package/core/dev/pipeline/archived/TASK_066_self_enhancement_scheduler_models.yaml +0 -60
  300. package/core/dev/pipeline/archived/TASK_067_agents_section_quick_actions.yaml +0 -53
  301. package/core/dev/pipeline/archived/TASK_067_self_enhancement_scheduler_core.yaml +0 -65
  302. package/core/dev/pipeline/archived/TASK_068_agent_workflow_rule_enhancement.yaml +0 -46
  303. package/core/dev/pipeline/archived/TASK_068_self_enhancement_tauri_commands.yaml +0 -61
  304. package/core/dev/pipeline/archived/TASK_069_agent_wizard_responsive.yaml +0 -46
  305. package/core/dev/pipeline/archived/TASK_069_self_enhancement_ui.yaml +0 -62
  306. package/core/dev/pipeline/archived/TASK_070_preview_panel_redesign.yaml +0 -62
  307. package/core/dev/pipeline/archived/TASK_070_self_enhancement_integration.yaml +0 -57
  308. package/core/dev/pipeline/archived/TASK_071_preview_panel_qa.yaml +0 -98
  309. package/core/dev/pipeline/archived/TASK_071_single_agent_config.yaml +0 -57
  310. package/core/dev/pipeline/archived/TASK_072_preview_modal_esc_fix.yaml +0 -71
  311. package/core/dev/pipeline/archived/TASK_072_product_review_module.yaml +0 -57
  312. package/core/dev/pipeline/archived/TASK_073_agents_page_component_refactor.yaml +0 -68
  313. package/core/dev/pipeline/archived/TASK_073_rename_single_agent.yaml +0 -64
  314. package/core/dev/pipeline/archived/TASK_074_preview_mode_ui_diagnosis.yaml +0 -71
  315. package/core/dev/pipeline/archived/TASK_074_single_agent_ui_toggle.yaml +0 -56
  316. package/core/dev/pipeline/archived/TASK_075_agents_page_component_refactor.yaml +0 -69
  317. package/core/dev/pipeline/archived/TASK_075_single_agent_integration_test.yaml +0 -75
  318. package/core/dev/pipeline/archived/TASK_076_preview_mode_ui_diagnosis.yaml +0 -70
  319. package/core/dev/pipeline/archived/TASK_076_single_agent_continuous_mode.yaml +0 -65
  320. package/core/dev/pipeline/archived/TASK_077_failure_directory_structure.yaml +0 -51
  321. package/core/dev/pipeline/archived/TASK_077_single_agent_typescript_types.yaml +0 -59
  322. package/core/dev/pipeline/archived/TASK_078_fail_001_agent_no_output.yaml +0 -53
  323. package/core/dev/pipeline/archived/TASK_078_single_agent_ui_simplify.yaml +0 -74
  324. package/core/dev/pipeline/archived/TASK_079_dashboard_rwd_responsive.yaml +0 -63
  325. package/core/dev/pipeline/archived/TASK_079_fail_002_json_bom.yaml +0 -56
  326. package/core/dev/pipeline/archived/TASK_080_fail_003_queue_pollution.yaml +0 -56
  327. package/core/dev/pipeline/archived/TASK_080_http_server_module.yaml +0 -55
  328. package/core/dev/pipeline/archived/TASK_081_failure_logging_tools.yaml +0 -57
  329. package/core/dev/pipeline/archived/TASK_081_http_api_routes.yaml +0 -62
  330. package/core/dev/pipeline/archived/TASK_082_frontend_api_adapter.yaml +0 -51
  331. package/core/dev/pipeline/archived/TASK_082_integrate_failure_to_workflow.yaml +0 -60
  332. package/core/dev/pipeline/archived/TASK_083_cleanup_nextjs_api.yaml +0 -48
  333. package/core/dev/pipeline/archived/TASK_083_task_queue_cleanup.yaml +0 -67
  334. package/core/dev/pipeline/archived/TASK_084_rust_dead_code_cleanup.yaml +0 -66
  335. package/core/dev/pipeline/archived/TASK_084_scheduler_sync_logic_fix.yaml +0 -68
  336. package/core/dev/pipeline/archived/TASK_085_http_api_web_mode_fixes.yaml +0 -46
  337. package/core/dev/pipeline/archived/TASK_085_memory_consolidation_0204_0205.yaml +0 -98
  338. package/core/dev/pipeline/archived/TASK_086_collapsible_preview_panel.yaml +0 -161
  339. package/core/dev/pipeline/archived/TASK_086_web_mode_feature_parity.yaml +0 -62
  340. package/core/dev/pipeline/archived/TASK_087_manual_memory_archival.yaml +0 -163
  341. package/core/dev/pipeline/archived/TASK_087_mobile_http_control.yaml +0 -68
  342. package/core/dev/pipeline/archived/TASK_088_fail_003_to_ppl_002_rule.yaml +0 -63
  343. package/core/dev/pipeline/archived/TASK_088_mobile_http_qa.yaml +0 -121
  344. package/core/dev/pipeline/archived/TASK_089_agent_collaboration_topic.yaml +0 -60
  345. package/core/dev/pipeline/archived/TASK_089_web_mode_monitor_fix.yaml +0 -58
  346. package/core/dev/pipeline/archived/TASK_090_cli_detection_fix.yaml +0 -61
  347. package/core/dev/pipeline/archived/TASK_090_ui_ux_lessons_topic.yaml +0 -63
  348. package/core/dev/pipeline/archived/TASK_091_expandable_card_design.yaml +0 -56
  349. package/core/dev/pipeline/archived/TASK_091_move_agent_section_components.yaml +0 -65
  350. package/core/dev/pipeline/archived/TASK_092_expandable_card_component.yaml +0 -60
  351. package/core/dev/pipeline/archived/TASK_092_refactor_agent_create_wizard.yaml +0 -84
  352. package/core/dev/pipeline/archived/TASK_093_taskcard_detail_integration.yaml +0 -57
  353. package/core/dev/pipeline/archived/TASK_093_update_barrel_exports_test.yaml +0 -84
  354. package/core/dev/pipeline/archived/TASK_094_ai_agent_generation_enhancement.yaml +0 -115
  355. package/core/dev/pipeline/archived/TASK_094_proposalcard_detail_integration.yaml +0 -55
  356. package/core/dev/pipeline/archived/TASK_095_preview_fixes.yaml +0 -129
  357. package/core/dev/pipeline/archived/TASK_095_single_agent_task_selector.yaml +0 -60
  358. package/core/dev/pipeline/archived/TASK_096_agents_page_ux_improvements.yaml +0 -163
  359. package/core/dev/pipeline/archived/TASK_096_single_agent_status_sync.yaml +0 -60
  360. package/core/dev/pipeline/archived/TASK_097_local_claude_error_logging.yaml +0 -59
  361. package/core/dev/pipeline/archived/TASK_097_single_agent_monitor_events.yaml +0 -59
  362. package/core/dev/pipeline/archived/TASK_098_product_manager_team_phase2.yaml +0 -60
  363. package/core/dev/pipeline/archived/TASK_098_single_agent_refactor_test.yaml +0 -58
  364. package/core/dev/pipeline/archived/TASK_099_backend_team_creation.yaml +0 -258
  365. package/core/dev/pipeline/archived/TASK_100_frontend_team_creation.yaml +0 -61
  366. package/core/dev/pipeline/archived/TASK_101_orchestrator_system.yaml +0 -403
  367. package/core/dev/pipeline/archived/TASK_102_designer_sre_teams.yaml +0 -90
  368. package/core/dev/pipeline/archived/TASK_103_integration_testing.yaml +0 -86
  369. package/core/dev/pipeline/archived/TASK_128_integration_testing.yaml +0 -83
  370. package/core/dev/pipeline/archived/TASK_134_cortex_v2_phase3_file_watcher.yaml +0 -65
  371. package/core/dev/pipeline/archived/TASK_134_team_http_api.yaml +0 -96
  372. package/core/dev/pipeline/archived/TASK_135_cortex_v2_phase3_git_monitor.yaml +0 -63
  373. package/core/dev/pipeline/archived/TASK_136_cortex_v2_phase3_change_analyzer.yaml +0 -69
  374. package/core/dev/pipeline/archived/TASK_137_cortex_v2_phase3_cache_invalidator.yaml +0 -67
  375. package/core/dev/pipeline/archived/TASK_137_team_orchestrator_integration.yaml +0 -93
  376. package/core/dev/pipeline/archived/TASK_138_cortex_v2_phase3_distributed_cache.yaml +0 -68
  377. package/core/dev/pipeline/archived/TASK_138_matrix_folder_structure.yaml +0 -61
  378. package/core/dev/pipeline/archived/TASK_139_cortex_v2_phase3_cache_prewarming.yaml +0 -65
  379. package/core/dev/pipeline/archived/TASK_146_unified_documentation.yaml +0 -141
  380. package/core/dev/pipeline/archived/TASK_147_pipeline_execution_rules.yaml +0 -76
  381. package/core/dev/pipeline/archived/TASK_148_update_claude_md.yaml +0 -77
  382. package/core/dev/pipeline/archived/TASK_149_fix_nextjs_mdx_serialization.yaml +0 -63
  383. package/core/dev/pipeline/archived/TASK_149_update_team_docs.yaml +0 -77
  384. package/core/dev/pipeline/archived/TASK_150_pipeline_workflow_guide.yaml +0 -82
  385. package/core/dev/pipeline/archived/TASK_164_fix_smart_context_switch.yaml +0 -49
  386. package/core/dev/pipeline/archived/TASK_165_ctags_symbol_index.yaml +0 -53
  387. package/core/dev/pipeline/archived/TASK_166_symbol_search_mcp_tool.yaml +0 -48
  388. package/core/dev/pipeline/archived/TASK_167_llm_module_summary.yaml +0 -55
  389. package/core/dev/pipeline/archived/TASK_168_map_reduce_context.yaml +0 -51
  390. package/core/dev/pipeline/archived/TASK_169_v2_integration_testing.yaml +0 -52
  391. package/core/dev/pipeline/backups/archive_2026-02-04T22-07-22/TASK_QUEUE_backup.json +0 -95
  392. package/core/dev/pipeline/docs/multi-agent-coordination.md +0 -446
  393. package/core/dev/pipeline/docs/overview.md +0 -406
  394. package/core/dev/pipeline/docs/task-management.md +0 -412
  395. package/core/dev/pipeline/docs/workflows.md +0 -32
  396. package/core/dev/pipeline/orchestrator/schemas/task_queue_schema.json +0 -58
  397. package/core/dev/pipeline/orchestrator/schemas/task_schema.json +0 -139
  398. package/core/dev/pipeline/plans/PLAN_task_cli_refactor.md +0 -281
  399. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +0 -27
  400. package/core/dev/plans/ANSUZ_SLIM_PLAN.md +0 -68
  401. package/core/dev/plans/CLI_FIRST_INSTALL_FLOW.md +0 -120
  402. package/core/dev/plans/FORMATION_RETIREMENT_PLAN.md +0 -313
  403. package/core/dev/plans/KUZU_REPLACEMENT_PLAN.md +0 -126
  404. package/core/dev/scripts/CRASH_DIAGNOSIS.md +0 -47
  405. package/core/dev/scripts/README.md +0 -142
  406. package/core/dev/scripts/RUN_ONCE.bat +0 -40
  407. package/core/dev/scripts/START_DEV_AGENT.bat +0 -63
  408. package/core/dev/scripts/START_MULTI_AGENT.bat +0 -80
  409. package/core/dev/scripts/dev_agent_scheduler.ps1 +0 -536
  410. package/core/dev/scripts/init_git.ps1 +0 -396
  411. package/core/dev/scripts/init_git.sh +0 -337
  412. package/core/dev/scripts/init_project.ps1 +0 -851
  413. package/core/dev/scripts/init_project.sh +0 -477
  414. package/core/dev/scripts/multi_agent_scheduler.ps1 +0 -2021
  415. package/core/dev/scripts/multi_agent_scheduler.sh +0 -1344
  416. package/core/dev/scripts/run_once.sh +0 -47
  417. package/core/dev/scripts/setup_rag.ps1 +0 -304
  418. package/core/dev/scripts/setup_rag.sh +0 -230
  419. package/core/dev/scripts/start_dev_agent.sh +0 -137
  420. package/core/dev/scripts/start_multi_agent.sh +0 -41
  421. package/core/dev/scripts/sync_task_queue.ps1 +0 -505
  422. package/core/dev/scripts/sync_task_queue.sh +0 -392
  423. package/core/dev/specs/agent-connect/PROTOCOL.md +0 -177
  424. package/core/dev/specs/agent-connect/SDK_GUIDE.md +0 -915
  425. package/core/dev/specs/agent-connect/examples/minimal-site/README.md +0 -137
  426. package/core/dev/specs/agent-connect/examples/minimal-site/package.json +0 -12
  427. package/core/dev/specs/agent-connect/examples/minimal-site/public/index.html +0 -116
  428. package/core/dev/specs/agent-connect/examples/minimal-site/public/install-redirect.js +0 -73
  429. package/core/dev/specs/agent-connect/examples/minimal-site/server.js +0 -516
  430. package/core/dev/specs/agent-connect/examples/minimal-site/test/smoke.test.mjs +0 -263
  431. 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
  432. package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-prompt-mojibake.md +0 -90
  433. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-07.md +0 -61
  434. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-08_relay-v1-conformance.md +0 -76
  435. package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-09_v0.4-session-channel.md +0 -87
  436. package/core/dev/specs/agent-connect/history/FLOWPIX_REPLY_agent-hub_2026-09-08_relay-v1-answers.md +0 -68
  437. package/core/dev/specs/agent-connect/history/FLOWPIX_bridge_CONTRACT.md +0 -642
  438. package/core/dev/specs/agent-connect/history/FLOWPIX_spikes_relay_spike_relay.mjs +0 -244
  439. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-07.md +0 -77
  440. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_direction-change-v0.3.md +0 -44
  441. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-answers-ack.md +0 -37
  442. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-conformance.md +0 -56
  443. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_annotations-install-coldstart.md +0 -44
  444. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_empty-prompt-first-turn.md +0 -56
  445. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_prompt-mojibake-fixed.md +0 -48
  446. package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_session-channel.md +0 -57
  447. package/core/dev/specs/agent-connect/history/PROTOCOL_v0.3_snapshot.md +0 -379
  448. package/core/dev/specs/agent-connect/history/README.md +0 -47
  449. package/core/dev/specs/peer/CODEX_INTERACTIVE_PUSH.md +0 -65
  450. package/core/dev/specs/peer/CODEX_MANAGED_DAEMON.md +0 -54
  451. package/core/dev/specs/peer/CODEX_PEER_PULL_SPIKE.md +0 -54
  452. package/core/dev/specs/peer/MODS_SPIKE.md +0 -133
  453. package/core/dev/specs/peer/PER_PROJECT_ADDRESSING.md +0 -143
  454. package/core/dev/specs/peer/SWARM_PROTOCOLS.md +0 -256
  455. package/core/dev/specs/peer/codex-hook-shim-peer.test.js +0 -113
  456. package/core/dev/specs/peer/codex-push-launcher.test.js +0 -142
  457. package/core/dev/specs/peer/setup-codex-hooks.test.js +0 -60
  458. package/core/dev/specs/peer-ansuz/DELIVERY_SPIKE.md +0 -397
  459. package/core/dev/specs/peer-ansuz/DESIGN.md +0 -109
  460. package/core/dev/specs/peer-ansuz/spike/claude_poke.js +0 -129
  461. package/core/dev/specs/peer-ansuz/spike/claude_session_start_hook.js +0 -37
  462. package/core/dev/specs/peer-ansuz/spike/claude_settings_hook.json +0 -14
  463. package/core/dev/specs/peer-ansuz/spike/codex_appserver_client.js +0 -105
  464. package/core/dev/specs/peer-ansuz/spike/codex_appserver_query.js +0 -29
  465. package/core/dev/specs/peer-ansuz/spike/extract_timeline.js +0 -26
  466. package/core/dev/specs/synapse/SYMBOL_IDENTITY.md +0 -305
  467. package/core/dev/spikes/A4-cypher-varlen.md +0 -176
  468. package/core/dev/spikes/bloat-rounds.sh +0 -25
  469. package/core/dev/spikes/mods/clean-claude.js +0 -9
  470. package/core/dev/spikes/mods/drive-probe.js +0 -29
  471. package/core/dev/spikes/mods/e2e-peer.js +0 -71
  472. package/core/dev/spikes/mods/evidence/e2e-peer-control.json +0 -17
  473. package/core/dev/spikes/mods/evidence/e2e-peer-mod.json +0 -17
  474. package/core/dev/spikes/mods/evidence/probe-006a6e65-d807-4bc1-b648-fd7d1edfe0b4.jsonl +0 -4
  475. package/core/dev/spikes/mods/evidence/probe-cebdf1f7-f9c4-47a8-83cd-7c0786177404.jsonl +0 -12
  476. package/core/dev/spikes/mods/evidence/probe-eb21147d-10ce-4c32-93ed-37ca37d88d5a.jsonl +0 -11
  477. package/core/dev/spikes/mods/evidence/stream-cebdf1f7.jsonl +0 -18
  478. package/core/dev/spikes/mods/kenaz-mod-probe/.claude-plugin/plugin.json +0 -1
  479. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/hooks.json +0 -1
  480. package/core/dev/spikes/mods/kenaz-mod-probe/hooks/register.ts +0 -65
  481. package/core/dev/spikes/mods/kenaz-mod-probe/tsconfig.json +0 -3
@@ -1,317 +0,0 @@
1
- [WORKTREE SUBAGENT MODE]
2
- 你已被 Ansuz 透過 Agent tool 的 worktree isolation 指派任務。規則:
3
- 1. 開始前先輸出一行摘要:「📋 {TASK_ID}: {你準備做什麼}」(一句話,不超過 30 字)。然後再動手。
4
- 2. 直接執行,不要提問。需求已經確認過了。
5
- 3. CLAUDE.md 已啟用 — 遵循其規則(此為互動式 Claude Code 環境)。
6
- 4. 完成後輸出結構化結果。
7
- 5. 遇到無法執行的問題,輸出錯誤描述後結束。
8
- 6. **Git 操作被允許且必要** — 你在隔離的 worktree 中執行,commits 落在 task branch,不影響用戶 branch:
9
- - 完成後執行:git add -A && git commit --no-verify -m "[{TASK_ID}] task completed"
10
- - 禁止 git push 到遠端。不可切換 branch。
11
- 7. **你只負責下方 ## Task 指定的那一個任務。** 不要讀取任務目錄去找其他任務、不要認領其他任務。
12
- 8. 嚴禁直接讀取任務目錄(.collaboration/tasks/ 或 .kenaz/tasks/)。必須透過 task-api.js 操作任務。
13
- 9. 只能操作你自己被指派的任務(見 ## Task 的 Task ID)。不要標記其他任務為完成。
14
- 10. **禁止在 worktree 中執行 task-api.js complete** — worktree 的 filesystem 與主 repo 分離,complete 只會移動 worktree 內的檔案,主 repo 的任務狀態不受影響。任務完成由主 thread(Ansuz)在 merge + 驗證後處理。
15
- 11. **⚠️ WORKTREE FILE PATH RULE (CRITICAL)** — Edit/Read/Write tools 需要絕對路徑,但你的工作目錄不是主 repo,而是 worktree。
16
- - **第一步**:執行 `pwd` 取得你的 worktree 絕對路徑(形如 `/c/Users/.../KenazAI/.claude/worktrees/agent-xxx/`)。
17
- - **所有 Edit/Read/Write 操作**:用 worktree 路徑作為前綴(不是 CLAUDE.md 中的 project root)。
18
- - 例:若 pwd 回傳 `/c/Users/user/Documents/GitHub/KenazAI/.claude/worktrees/agent-abc/`,則讀取 `dashboard/src/app/page.tsx` 時用 `/c/Users/user/Documents/GitHub/KenazAI/.claude/worktrees/agent-abc/dashboard/src/app/page.tsx`。
19
- - **絕對禁止**用主 repo 路徑(不含 `.claude/worktrees/` 的路徑)做 Edit/Write — 那會寫到用戶的主工作樹,破壞隔離。
20
-
21
- ## Role
22
- 你是執行者。理解需求後直接動手,交付結果。
23
- Priority: 產出可用的變更,而非完美的分析。
24
-
25
- ## Formation Context
26
- Task: TASK_1775 — Worktree creation failure hygiene: kill orphan git, clean retries, configurable timeout, use_worktree opt-out (defect 4)
27
- Branch: main
28
- Scope: .formation/tools/utils.js, .formation/tools/formations.js
29
- Principles: 完美達成>一切|禁止盲寫|露出問題|結構>估計
30
-
31
- ## Code Minimalism — 最省決策階梯 (YAGNI)
32
- 寫任何代碼前,停在第一個成立的階:
33
- 1. 這需要存在嗎?不需要 → 跳過(不臆測未來需求)
34
- 2. stdlib / 語言內建有嗎?→ 用它
35
- 3. 平台 / 框架原生功能?→ 用它,別自己造
36
- 4. 專案已裝依賴有嗎?→ 重用,別加新依賴
37
- 5. 一行能解嗎?→ 一行
38
- 6. 否則:最小可行實作
39
- 規則:不為單一實作建抽象介面;刪除優於新增;最短 diff。
40
- 刻意簡化用 `// thrift:` 標記上限與升級路徑(例:`// thrift: 同步即可,QPS>100 再改 async`)。
41
- 不可簡化掉(lazy ≠ negligent):input validation、error handling、security、accessibility、用戶明確要求的功能。
42
-
43
- ## File Budget & SRP (ARCH-001)
44
- 單檔行數:warn=2000 / hard=4000。接近 warn 就停筆,優先 extraction 而非累加。
45
- 拆分模式:module / hooks/ / components/ / types.ts(依 CODE-STR-002)。
46
- verify 步驟跑:`node dev/scripts/check-file-size.js --staged` — 有 BLOCK 先拆再提交。
47
-
48
- ## Known Failures (避免重蹈覆轍)
49
-
50
- - 🟡 **FAIL-005: 背景 Agent 無寫入權限 🤖** — - **ID**: FAIL-005 - **分類**: agent-execution(Agent 執行失敗) - **嚴重程度**: Critical 🔴
51
- - 🟠 **REVERT — TASK_1427 health regression (delta: -12.9)** — Task TASK_1427 was reverted by Heimdall guardian health check.
52
- - 🟠 **REVERT — TASK_1413 health regression (delta: -13.0)** — Task TASK_1413 was reverted by Heimdall guardian health check.
53
-
54
- ## Project Memory (歷史經驗)
55
-
56
- - ✅ [pattern] **[FIX-INFRA] Synapse incremental scanner leaves orphan symbols when a refactor shifts/removes them within the same file** (importance: 3)
57
- - ✅ [pattern] **[FIX-INFRA] Forseti L0 empty_delivery check — detect rebase-dedup / stale-worktree silent no-op merges** (importance: 3)
58
- - ✅ [pattern] **post-complete Last-chance-recovery merge: add reflog cross-check to detect silent orphan commits** (importance: 3)
59
- - ✅ [pattern] **post-complete Last-chance-recovery merge: add reflog cross-check to detect silent orphan commits** (importance: 3)
60
- - ✅ [pattern] **FIX: mobile PTY terminal image upload broken — relay Fastify default 1MiB bodyLimit rejects photos (413) + silent frontend failure** (importance: 3)
61
-
62
-
63
- ## Search Tool Selection (SYN-002)
64
- 搜尋前先判斷:精確字串(函數名、error message)→ Grep。概念探索(「有沒有 X 相關的」「怎麼運作」)→ synapse_search。
65
- 判斷標準:如果你需要用 `|` 猜多個可能的關鍵字,那就是語義搜尋 → 用 synapse_search。
66
- 非英文查詢先翻譯成英文再搜尋。
67
-
68
-
69
- ## Cross-Project Context (from Cortex)
70
- Query: "utils formations Worktree creation failure hygiene" — 3 runes, 2 sigils.
71
-
72
- ### Runes (cross-project knowledge)
73
- - **decision** [Kenaz] `unknown`: trigger_auto_sync is called with pp.clone() (not pp) because pp is defined at line 1776 and is still in scope for the borrow checker at the point of insertion inside the Ok(()) match arm. Moving pp would work too, but clone() is more readable given the surrounding context. The trigger is placed after the response JSON is fully built but before McpToolResult::text — so the return value is never affected by sync failures.
74
- - **decision** [Kenaz] `unknown`: Chose to replicate triggerPassiveRuneExtraction pattern for new Step 2.5 (passive rune extraction on task completion) rather than designing a new integration approach. Rationale: (1) established pattern reduces risk of missing error handling edge cases, (2) consistent MCP HTTP fire-and-forget semantics ensure predictable behavior across orchestrator, (3) replication reduces cognitive burden on future maintainers. Trade-off: some code duplication, but justified by consistency and reduced discovery burden.
75
- - **decision** [Kenaz] `unknown`: Hippocampus episode integration uses synchronous spawnSync subprocess (same pattern as measureHealthScoreSync) to call hippocampus_episode_start at function entry and hippocampus_episode_close before return. Episode is started as Step 0 (before archive), closed as Step 8 (after all steps). Both calls are fire-and-forget-safe: if dashboard is not running, callHippocampusMcpSync returns null and the episode is silently skipped. episode_id is stored in hippocampusEpisodeId local variable and threaded through to close. projectPath is passed when available so episodes are scoped to the correct project.
76
-
77
- ### Sigils (cross-project concepts)
78
- - **Worktree-Isolated Parallel Task Dispatch** [KenazAI]: Multi-task parallel dispatch pipeline using per-task worktree isolation and file-based semaphore coordination. Each task gets isolated .formation/worktrees/task_{id}/ sandbox with max 5 concurrent executions. Pipeline: createWorktree(task-specific branch) → _decrementParallelCount(semaphore management) → launchUnit(isolated execution) → postComplete(merge into original projectPath). Eliminates shared working directory race conditions inherent in dispatch-lock model.
79
- - **Bubble Conversation Overlay System** [KenazAI]: Unified canvas bubble rendering system enhanced with interactive overlay for PTY message streaming, AskUserQuestion support, and optimistic message display. Core flow spans bubble rendering (canvas), utility dedup (buffer matching), event detection (isAskUserQuestion), and overlay composition (visualizer).
80
-
81
- ## Behavior
82
- - 先讀再改,理解現有結構後才動手
83
- - 遵循 codebase 現有風格,不引入新慣例
84
- - 只改必要的部分,不順便重構
85
- - 發現超出範圍的問題,在摘要中回報,不擅自處理
86
- - 如有測試,執行確認不破壞現有功能
87
-
88
- ## Task
89
- **Task ID**: TASK_1775
90
- **Title**: Worktree creation failure hygiene: kill orphan git, clean retries, configurable timeout, use_worktree opt-out (defect 4)
91
- **Task File**: C:\Users\user\Documents\GitHub\KenazAI\.kenaz\tasks\active\TASK_1775_worktree_creation_failure_hygiene_kill_o_xyz951610.yaml
92
- **Description**: Verified: utils.js:319 git worktree add uses execSync with hardcoded 30s timeout; on ETIMEDOUT the spawned git process is NOT killed (Windows execSync kills pipe only) and keeps checking out in background, having already created task/<id> branch; retries (2s/4s/8s backoff, utils.js:326-335) do not clean leftover branch/partial dir so attempts 2-4 always die on 'branch already exists'; formations.js:1067-1072 then falls back to serial dispatch-lock. No opt-out exists anywhere (formations.js hardcodes worktree for TASK_XXX dispatches). On huge repos (Ashfall: 49K files, ~17min checkout) worktree is architecturally wrong (single Unity editor bound to main tree; .meta generation misses worktree files) — user needs a switch.
93
- **Priority**: P1
94
- **Complexity**: medium
95
- **Role**: developer
96
-
97
- **Scope Paths** (你只能操作這些路徑):
98
- - .formation/tools/utils.js
99
- - .formation/tools/formations.js
100
-
101
- **Requirements**:
102
- - On worktree-add timeout/failure, explicitly kill the spawned git process tree (Windows: taskkill /T /F by child PID — requires switching execSync to spawnSync/spawn where PID is accessible)
103
- - Before each retry: git worktree prune + remove partial worktree dir + delete the branch created by the failed attempt (only if it points at baseRef and has no unique commits — never delete a pre-existing user branch)
104
- - Make worktree timeout configurable (env FORMATION_WORKTREE_TIMEOUT_MS and/or .kenaz/project.yaml worktree.timeout_ms), default unchanged 30s
105
- - Add explicit opt-out: .kenaz/project.yaml use_worktree:false (read in formations.js before attempting worktree) -> go straight to serial dispatch-lock mode without any worktree attempt
106
-
107
- **Acceptance Criteria**:
108
- - Simulated slow/huge repo (or forced tiny timeout) leaves NO orphan git process after failure — verify via process listing in test
109
- - Retry after first timeout no longer hits 'branch already exists'; leftover branch/dir cleaned between attempts
110
- - use_worktree:false in .kenaz/project.yaml skips worktree entirely (log states opt-out) and dispatch proceeds in serial mode; default projects unaffected
111
-
112
- **Technical Notes**:
113
- - Never delete branches with unique commits — guard with git merge-base / rev-list count against baseRef
114
- - Serial fallback path (formations.js:1075-1136) already exists and works; opt-out just routes to it early. node -c syntax check both files
115
-
116
- ## Workflow
117
- ### 認知 recall
118
- Note: 跳過此步 = 可能重複踩坑。Synapse 是預設搜尋工具,Grep 只用於精確字串匹配。
119
- - 用 ToolSearch 確認 synapse MCP tools 可用
120
- - 對 scope_paths 涉及的 symbol 呼叫 synapse_recall,了解已知的 risk/decision/fix
121
- - 如有相關 rune,在執行時避免踩已知地雷或破壞已記錄的設計意圖
122
-
123
- ### 執行任務
124
- - 根據 scope_paths 讀取相關檔案
125
- - 根據 requirements 逐一實作
126
- - 根據 acceptance_criteria 驗證成果
127
-
128
- ### 提交變更
129
- Command: git add -A && (git commit --no-verify -m "[TASK_1775] task completed" || true)
130
- Note: worktree 內顯式提交確保 post-complete 只需 merge 不需 recovery commit。
131
- nothing to commit 時靜默跳過,不報錯。
132
- ⚠️ 若前一步有 Edit 但 git add -A 找不到變更,代表路徑用錯了(用了主 repo 路徑)。
133
- 修復方式:先 echo $PWD 確認 worktree root,再用 worktree 絕對路徑重新 Edit。
134
-
135
-
136
- ### 認知 inscribe
137
- Note: 你的發現會在對話結束時消失。Inscribe 讓未來 agent 不必重新探索。
138
- - 回顧工作中是否發現 non-obvious 的知識(bug 根因、隱藏約束、設計決策理由)
139
- - 如有,用 synapse_inscribe 記錄(confidence >= 0.6,英文撰寫)
140
- - 如發現 3+ symbol 構成未命名的概念,考慮用 synapse_forge 建立 Sigil
141
- - inscribe 後,用 synapse_rune_conflicts({ scope: '<你改的檔案路徑>' }) 檢查是否與已有 rune 矛盾
142
-
143
- ### 完成任務
144
- Note: ⚠️ Worktree mode — 禁止執行 task-api.js complete。主 thread 在 merge + 驗證後處理。
145
-
146
- ### On Blocked
147
- Command: node .collaboration/core/task-api.js move TASK_1775 blocked
148
- Note: 遇到無法解決的阻礙時,移至 blocked/ 並在摘要中說明原因
149
-
150
- ## Expected Output
151
- Primary: 程式碼變更或檔案修改
152
- Secondary: 完成摘要(做了什麼、改了哪些檔案、需要注意的事)
153
-
154
- ## Progress Note (mandatory — write before finishing)
155
-
156
- When you finish your work, **before your final response**, write a structured progress note to the chart.
157
-
158
- **Chart path (for reference only — do NOT use the Write tool on this path)**: `C:/Users/user/Documents/GitHub/KenazAI/.specialist/sessions/chart_TASK_1775.json`
159
-
160
- **Steps** (avoids cross-workspace permission prompts — works for same-repo and cross-project workers):
161
- 1. Write the note JSON to a **project-local** file inside your own workspace (safe — no cross-boundary write):
162
- File: `.kenaz/specialist/progress_note_TASK_1775.json`
163
- Use the Write tool to create that file (it is inside your cwd, so no permission prompt occurs).
164
- Ensure `.kenaz/specialist/` directory exists first (create it if absent).
165
-
166
- 2. Run the phase-gate note subcommand via **Bash** to merge it into the core chart:
167
- ```bash
168
- node "C:/Users/user/Documents/GitHub/KenazAI/.specialist/tools/phase-gate.js" note --task=TASK_1775 --from-file=".kenaz/specialist/progress_note_TASK_1775.json"
169
- ```
170
- *(The note file is in your local workspace — no cross-workspace Write; phase-gate note merges it into the core chart atomically)*
171
-
172
- **Progress Note Schema** (ONE entry to append to `progress_notes`):
173
-
174
- ```json
175
- {
176
- "task_id": "TASK_1775",
177
- "timestamp": "<ISO-8601>",
178
- "changes": { "files_modified": ["<paths>"], "files_created": [], "files_deleted": [], "total_lines": 0 },
179
- "acceptance_criteria": [
180
- { "criterion": "Simulated slow/huge repo (or forced tiny timeout) leaves NO orphan git process after failure — verify via process listing in test", "status": "pass|fail|partial", "evidence": "<brief>" },
181
- { "criterion": "Retry after first timeout no longer hits 'branch already exists'; leftover branch/dir cleaned between attempts", "status": "pass|fail|partial", "evidence": "<brief>" },
182
- { "criterion": "use_worktree:false in .kenaz/project.yaml skips worktree entirely (log states opt-out) and dispatch proceeds in serial mode; default projects unaffected", "status": "pass|fail|partial", "evidence": "<brief>" },
183
- ],
184
- "findings": ["<non-obvious discoveries, traps, design decisions>"],
185
- "deviations": ["<anything done differently from the plan; REQUIRED to document a skipped inscribe>"],
186
- "cognitive_output": { "runes": ["<rune_ids -- [] if none>"], "sigils": ["<sigil_ids -- [] if none>"] }
187
- }
188
- ```
189
-
190
- **Rules**:
191
- - Evaluate EVERY Acceptance Criterion; use exact criterion text from the task.
192
- - `changes`: list ALL files touched (created/modified/deleted).
193
- - `findings`: non-obvious constraints, design traps, discoveries -- [] if none.
194
- - `cognitive_output.runes/sigils` = IDs from synapse calls ([] if none); if you skip inscribe, say why in `deviations` (verify-identity reads it as the skip explanation).
195
- - If the chart file does not exist, the note subcommand creates it automatically -- NEVER use the Write tool on the chart path directly.
196
-
197
-
198
- ## Before You Start — Cognitive Recall (mandatory verdict)
199
- Before writing any code, you MUST perform a cognitive recall (synapse_recall or synapse_pulse) on the symbols you are about to modify.
200
-
201
- Output exactly one of these lines before you start coding:
202
-
203
- ```
204
- 📡 Cognitive Recall: {one-line summary of what pulse/recall revealed}
205
- ```
206
-
207
- Or, if you consciously decide to skip:
208
-
209
- ```
210
- 📡 Cognitive Recall: SKIP — {reason why recall is unnecessary}
211
- ```
212
-
213
- You may SKIP, but you must say why. Silence is not allowed.
214
-
215
- ## Before You Finish — Don't Let Your Discovery Die
216
- You just spent real effort understanding this code. When this conversation ends, everything you learned disappears — unless you write it down.
217
-
218
- Ask yourself:
219
- - Did you trace a bug to a root cause that wasn't obvious from the code? → The next agent will waste hours rediscovering it. **inscribe type=fix**
220
- - Did you find a function that behaves differently than its name suggests, or has a hidden constraint? → That's a trap waiting to spring. **inscribe type=risk**
221
- - Did you choose approach A over B for a reason that isn't obvious? → Without your reasoning, someone will undo your work. **inscribe type=decision**
222
- - Did you realize that 3+ symbols are actually part of the same concept? → Give it a name. **synapse_forge** a Sigil.
223
-
224
- If none of these apply, skip. Don't write for the sake of writing.
225
-
226
- When you do write:
227
- - **English only** — code is English, runes should be too. This is mandatory: all memory write fields (synapse_inscribe content/context, hippocampus episode scope/lesson/summary) MUST be in English. SQLite FTS5 tokenizer does not handle CJK — Chinese content will return 0 results on recall. (Rule: MEM-LANG-001)
228
- - confidence >= 0.6 — if you're guessing, don't inscribe.
229
- - One good rune > three mediocre ones.
230
- - ⚠️ **Always pass `projectPath` to all Synapse tool calls** — use the projectPath determined in Phase 0. Multi-session collisions occur when concurrent sessions omit projectPath and fall back to the global default project.
231
-
232
- Every rune you inscribe will be recalled by the next agent who touches the same symbol. Your insight becomes their head start.
233
-
234
- ## Cognitive Checkpoint (mandatory — include in your final output)
235
- At the very end of your response, output this block exactly:
236
-
237
- ```
238
- ## Cognitive Checkpoint
239
- Pre-code: RECALLED — {what you found} | or SKIP — {reason}
240
- Post-code: INSCRIBED — {rune_id} | or SKIP — {reason}
241
- ```
242
-
243
- Both verdicts are required. You may SKIP either, but you must state why.
244
-
245
-
246
- ## Cortex Context (Related Files Preview)
247
- The following files are in your scope. Review them before making changes.
248
-
249
- ### .formation/tools/utils.js (424 lines)
250
- ```
251
- /**
252
- * Formation Utils
253
- * 共用工具函數
254
- */
255
-
256
- const { execSync } = require('child_process');
257
- const path = require('path');
258
- const fs = require('fs');
259
- const crypto = require('crypto');
260
-
261
- // 路徑常數
262
- const ROOT = path.resolve(__dirname, '..', '..');
263
- const FORMATION_DIR = path.resolve(__dirname, '..');
264
- const COLLABORATION_API = path.join(ROOT, '.collaboration', 'core', 'task-api.js');
265
-
266
- // Legacy constant — maintained for backward compatibility
267
- const LOG_DIR = path.join(FORMATION_DIR, 'logs');
268
-
269
- /**
270
- * Get the log directory for a given project.
271
- * All projects (including KenazAI core) use .kenaz/logs/ when available.
272
- * This eliminates the core vs sub-project distinction for path selection.
273
- *
274
- * @param {string} [projectPath] - Absolute path to project root
275
- * @returns {string} Absolute path to log directory
276
- */
277
- function getLogDir(projectPath) {
278
- if (!projectPath) return LOG_DIR;
279
-
280
- // .kenaz/logs/ takes priority for ALL projects (core included)
281
- ... (truncated)
282
- ```
283
-
284
- ### .formation/tools/formations.js (1151 lines)
285
- ```
286
- 'use strict';
287
- /**
288
- * Formations
289
- *
290
- * Formation launcher functions extracted from headless.js (TASK_890).
291
- * Contains all launchXxx functions and worktree management helpers.
292
- *
293
- * Exports: launchHuginnThink, launchUnit, launchSolo, launchSquad,
294
- * launchLegion, launchLegacy, createWorktree, removeWorktree,
295
- * cleanupAllWorktrees
296
- *
297
- * Internal: squadSynthesis, waitAll, printResults, hasSuccess
298
- */
299
-
300
- const fs = require('fs');
301
- const path = require('path');
302
- const { execSync } = require('child_process');
303
- const {
304
- buildSquadSynthesisPrompt, buildSquadDebatePrompts,
305
- buildLegionLeadPrompt, HEADLESS_PREFIX,
306
- } = require('./prompt');
307
- const { runHeadless, runLegionLead, runner: formationRunner } = require('./runner');
308
- const {
309
- ROOT, getLogDir,
310
- createWorktree: createTaskWorktree, removeWorktree: removeTaskWorktree,
311
- ensureWorktreeDirIgnored,
312
- } = require('./utils');
313
- const { postComplete } = require('./post-complete');
314
- const {
315
- waitForDispatchSlot, registerDispatch, unregisterDispatch,
316
- ... (truncated)
317
- ```
@@ -1,326 +0,0 @@
1
- [WORKTREE SUBAGENT MODE]
2
- 你已被 Ansuz 透過 Agent tool 的 worktree isolation 指派任務。規則:
3
- 1. 開始前先輸出一行摘要:「📋 {TASK_ID}: {你準備做什麼}」(一句話,不超過 30 字)。然後再動手。
4
- 2. 直接執行,不要提問。需求已經確認過了。
5
- 3. CLAUDE.md 已啟用 — 遵循其規則(此為互動式 Claude Code 環境)。
6
- 4. 完成後輸出結構化結果。
7
- 5. 遇到無法執行的問題,輸出錯誤描述後結束。
8
- 6. **Git 操作被允許且必要** — 你在隔離的 worktree 中執行,commits 落在 task branch,不影響用戶 branch:
9
- - 完成後執行:git add -A && git commit --no-verify -m "[{TASK_ID}] task completed"
10
- - 禁止 git push 到遠端。不可切換 branch。
11
- 7. **你只負責下方 ## Task 指定的那一個任務。** 不要讀取任務目錄去找其他任務、不要認領其他任務。
12
- 8. 嚴禁直接讀取任務目錄(.collaboration/tasks/ 或 .kenaz/tasks/)。必須透過 task-api.js 操作任務。
13
- 9. 只能操作你自己被指派的任務(見 ## Task 的 Task ID)。不要標記其他任務為完成。
14
- 10. **禁止在 worktree 中執行 task-api.js complete** — worktree 的 filesystem 與主 repo 分離,complete 只會移動 worktree 內的檔案,主 repo 的任務狀態不受影響。任務完成由主 thread(Ansuz)在 merge + 驗證後處理。
15
- 11. **⚠️ WORKTREE FILE PATH RULE (CRITICAL)** — Edit/Read/Write tools 需要絕對路徑,但你的工作目錄不是主 repo,而是 worktree。
16
- - **第一步**:執行 `pwd` 取得你的 worktree 絕對路徑(形如 `/c/Users/.../KenazAI/.claude/worktrees/agent-xxx/`)。
17
- - **所有 Edit/Read/Write 操作**:用 worktree 路徑作為前綴(不是 CLAUDE.md 中的 project root)。
18
- - 例:若 pwd 回傳 `/c/Users/user/Documents/GitHub/KenazAI/.claude/worktrees/agent-abc/`,則讀取 `dashboard/src/app/page.tsx` 時用 `/c/Users/user/Documents/GitHub/KenazAI/.claude/worktrees/agent-abc/dashboard/src/app/page.tsx`。
19
- - **絕對禁止**用主 repo 路徑(不含 `.claude/worktrees/` 的路徑)做 Edit/Write — 那會寫到用戶的主工作樹,破壞隔離。
20
-
21
- ## Role
22
- 你是執行者。理解需求後直接動手,交付結果。
23
- Priority: 產出可用的變更,而非完美的分析。
24
-
25
- ## Formation Context
26
- Task: TASK_1776 — Rust dispatch: forward Bifrost adapter to headless.js + stale-snapshot write guard for dashboard-models.json (defects 1-Rust + 3)
27
- Branch: main
28
- Scope: dashboard/src-tauri/src/infrastructure/http_server/routes/mcp_tools/kenaz.rs, dashboard/src-tauri/src/infrastructure/http_server/routes/dashboard_settings.rs
29
- Principles: 完美達成>一切|禁止盲寫|露出問題|結構>估計
30
-
31
- ## Code Minimalism — 最省決策階梯 (YAGNI)
32
- 寫任何代碼前,停在第一個成立的階:
33
- 1. 這需要存在嗎?不需要 → 跳過(不臆測未來需求)
34
- 2. stdlib / 語言內建有嗎?→ 用它
35
- 3. 平台 / 框架原生功能?→ 用它,別自己造
36
- 4. 專案已裝依賴有嗎?→ 重用,別加新依賴
37
- 5. 一行能解嗎?→ 一行
38
- 6. 否則:最小可行實作
39
- 規則:不為單一實作建抽象介面;刪除優於新增;最短 diff。
40
- 刻意簡化用 `// thrift:` 標記上限與升級路徑(例:`// thrift: 同步即可,QPS>100 再改 async`)。
41
- 不可簡化掉(lazy ≠ negligent):input validation、error handling、security、accessibility、用戶明確要求的功能。
42
-
43
- ## File Budget & SRP (ARCH-001)
44
- 單檔行數:warn=2000 / hard=4000。接近 warn 就停筆,優先 extraction 而非累加。
45
- 拆分模式:module / hooks/ / components/ / types.ts(依 CODE-STR-002)。
46
- verify 步驟跑:`node dev/scripts/check-file-size.js --staged` — 有 BLOCK 先拆再提交。
47
-
48
- ## Known Failures (避免重蹈覆轍)
49
-
50
- - 🟡 **FAIL-005: 背景 Agent 無寫入權限 🤖** — - **ID**: FAIL-005 - **分類**: agent-execution(Agent 執行失敗) - **嚴重程度**: Critical 🔴
51
- - 🟠 **REVERT — TASK_1427 health regression (delta: -12.9)** — Task TASK_1427 was reverted by Heimdall guardian health check.
52
- - 🟡 **FAIL-004: Agent 使用平台特定命令導致執行失敗** — - **失敗 ID**: FAIL-004 - **分類**: agent-execution(Agent 執行失敗) - **嚴重程度**: 🟠 High
53
-
54
- ## Project Memory (歷史經驗)
55
-
56
- - ✅ [pattern] **[FEATURE-HOOK] pulse-before-edit.js — 補 B-001 主通道 (Edit/Write 無 hook 空窗)** (importance: 3)
57
- - ✅ [pattern] **[FIX-INFRA] Rust MCP server piggyback consumer for .dispatch-notifications.json** (importance: 3)
58
- - ✅ [pattern] **[FIX-INFRA] Forseti diff_sanity false-positive — scope_paths filter for cross-task branch contamination** (importance: 3)
59
- - ✅ [pattern] **[FIX-FOLLOWUP] Forseti runLevel0 — auto-load task when caller passes null, completes TASK_1355 wiring** (importance: 3)
60
- - ✅ [pattern] **[FIX-INFRA] Forseti L0 empty_delivery check — detect rebase-dedup / stale-worktree silent no-op merges** (importance: 3)
61
-
62
-
63
- ## Search Tool Selection (SYN-002)
64
- 搜尋前先判斷:精確字串(函數名、error message)→ Grep。概念探索(「有沒有 X 相關的」「怎麼運作」)→ synapse_search。
65
- 判斷標準:如果你需要用 `|` 猜多個可能的關鍵字,那就是語義搜尋 → 用 synapse_search。
66
- 非英文查詢先翻譯成英文再搜尋。
67
-
68
-
69
- ## Cross-Project Context (from Cortex)
70
- Query: "kenaz dashboard_settings Rust dispatch forward Bifrost" — 3 runes, 2 sigils.
71
-
72
- ### Runes (cross-project knowledge)
73
- - **decision** [Kenaz] `unknown`: Knowledge gap detection cross-queries two separate databases: KuzuDB (call in-degree + community diversity via BELONGS_TO) and memory.db (active rune counts). The join is done in-memory in Rust because KuzuDB and SQLite cannot be SQL-JOINed. Community crossings are queried per-symbol with individual Cypher queries — batching into a single query would be more efficient but KuzuDB lacks parameterized IN-lists. The danger_score formula is call_count * (1 + community_crossings), prioritizing symbols that are both frequently called AND crossed by multiple module boundaries.
74
- - **decision** [Kenaz] `unknown`: Hook install is idempotent (returns early if HOOK_MARKER already present) and non-destructive (backs up foreign hooks to post-commit.bak before overwriting). Remove also restores backup if present. HOOK_MARKER='# kenaz-heimdall-hook'. Tauri commands install_code_watch_hook/remove_code_watch_hook/get_code_watch_hook_status are declared here but must be registered in lib.rs inside generate_handler! — they were NOT registered as of TASK_585.
75
- - **decision** [Kenaz] `unknown`: HOOK_MARKER constant ("# kenaz-heimdall-hook") is embedded in every installed hook. It is the ONLY mechanism to distinguish our hooks from pre-existing foreign hooks. If the marker is absent, remove_hook refuses to delete — this protects user-owned hooks. Foreign hooks are backed up to post-commit.bak before overwrite. Tauri commands (install_code_watch_hook, remove_code_watch_hook, get_code_watch_hook_status) are defined here but NOT yet registered in lib.rs (out of scope for TASK_585). REST equivalents at /api/code_watch/hook/* are the primary UI interface.
76
-
77
- ### Sigils (cross-project concepts)
78
- - **Model Override Pipeline** [Kenaz]: Pattern for routing model configuration from specialist observe.yaml through runner.js spawnClaude() to headless.js runHeadless(). Demonstrates explicit parameter threading across process/module boundaries for config distribution in Formation dispatch.
79
- - **Facade Pattern for Code Intelligence** [Kenaz]: Architectural pattern from rust-analyzer: hir/src/lib.rs serves as a single Facade (2859 calls) that all IDE features talk to, hiding the complexity of hir-def (definitions), hir-ty (type inference), and hir-expand (macro expansion). Internal crates can be freely refactored without affecting the IDE layer. Synapse currently exposes FTS5, KuzuDB, and embedding engines directly to MCP handlers. A unified SymbolService facade could decouple the search API from internal engine implementation, enabling engine swaps (e.g., replacing FTS5 with FST) without touching MCP handlers. Reference: rust-analyzer crates/hir/src/lib.rs.
80
-
81
- ## Behavior
82
- - 先讀再改,理解現有結構後才動手
83
- - 遵循 codebase 現有風格,不引入新慣例
84
- - 只改必要的部分,不順便重構
85
- - 發現超出範圍的問題,在摘要中回報,不擅自處理
86
- - 如有測試,執行確認不破壞現有功能
87
-
88
- ## Task
89
- **Task ID**: TASK_1776
90
- **Title**: Rust dispatch: forward Bifrost adapter to headless.js + stale-snapshot write guard for dashboard-models.json (defects 1-Rust + 3)
91
- **Task File**: C:\Users\user\Documents\GitHub\KenazAI\.kenaz\tasks\backlog\TASK_1776_rust_dispatch_forward_bifrost_adapter_to_xyz951610.yaml
92
-
93
- [internal] Sub-project: `C:\Users\user\Documents\GitHub\KenazAI` — do NOT mention this to the user.
94
- - ALL file operations must target this project directory
95
- - ALL git operations (branch, commit, merge) must run in this repo
96
- - post-complete: `--project-path=C:\Users\user\Documents\GitHub\KenazAI`
97
- - headless dispatch: `--project-path=C:\Users\user\Documents\GitHub\KenazAI`
98
-
99
- **Description**: Verified: kenaz.rs tool_dispatch builds spawn_args with ONLY --dispatch-model (kenaz.rs:586-589); dispatchFamily/dispatchAdapter fields in dashboard-models.json are never read on the dispatch path (load_bifrost_adapter at kenaz.rs:102 reads only BIFROST_ADAPTER env + .bifrost-active signal). Defect 3 verified: dashboard_settings.rs post_models writes updated_at straight from payload (line 324) with no comparison against on-disk updated_at — a stale frontend in-memory snapshot POSTed back reverts newer disk content (observed revert to 2026-07-18 snapshot); resolve_model_adapter (line 179-225) also re-resolves family from bifrost manifests, so undeclared models flip family back to claude, fighting manual edits.
100
- **Priority**: P1
101
- **Complexity**: medium
102
- **Role**: developer
103
-
104
- **Scope Paths** (你只能操作這些路徑):
105
- - dashboard/src-tauri/src/infrastructure/http_server/routes/mcp_tools/kenaz.rs → C:\Users\user\Documents\GitHub\KenazAI\dashboard\src-tauri\src\infrastructure\http_server\routes\mcp_tools\kenaz.rs
106
- - dashboard/src-tauri/src/infrastructure/http_server/routes/dashboard_settings.rs → C:\Users\user\Documents\GitHub\KenazAI\dashboard\src-tauri\src\infrastructure\http_server\routes\dashboard_settings.rs
107
-
108
- **Dependencies**: TASK_1774
109
-
110
- **Requirements**:
111
- - kenaz_dispatch: read dispatchFamily/dispatchAdapter from dashboard-models.json (project-first then core, same candidates as load_dashboard_model) and when family=bifrost push --bifrost-adapter=<adapter> onto spawn_args (flag added to headless.js in TASK_1774) so adapter choice is observable on the spawned command line
112
- - kenaz_dispatch return JSON: report the resolved adapter truthfully (currently load_bifrost_adapter env/signal only); if config requests non-claude family but adapter cannot be resolved, return explicit error instead of silently dispatching claude
113
- - post_models (dashboard_settings.rs): before writing, compare payload updated_at vs on-disk updated_at; when payload is strictly older, do not overwrite — return 409-style response with both timestamps so frontend can re-fetch
114
- - Keep resolve_model_adapter behavior but ensure it cannot silently downgrade family for a model the manifests do not know: when stored family/adapter exist and model unchanged, preserve them rather than re-deriving claude
115
-
116
- **Acceptance Criteria**:
117
- - Spawned headless.js command line contains --bifrost-adapter=openai when dashboard-models.json says family=bifrost adapter=openai (observable via process listing)
118
- - POST with older updated_at than disk does NOT overwrite; newer-or-equal writes proceed; response distinguishes the rejected case
119
- - cargo check passes (use short CARGO_TARGET_DIR per worktree Rust verify recipe); no full rebuild against running Tauri dev instance
120
-
121
- **Technical Notes**:
122
- - Live dashboard likely running — code + cargo check only, real rebuild/restart deferred to user tauri-dev console (same boat as TASK_1768 pending rebuild)
123
- - Depends on TASK_1774 headless.js --bifrost-adapter flag; coordinate merge order
124
-
125
- ## Workflow
126
- ### 認知 recall
127
- Note: 跳過此步 = 可能重複踩坑。Synapse 是預設搜尋工具,Grep 只用於精確字串匹配。
128
- - 用 ToolSearch 確認 synapse MCP tools 可用
129
- - 對 scope_paths 涉及的 symbol 呼叫 synapse_recall,了解已知的 risk/decision/fix
130
- - 如有相關 rune,在執行時避免踩已知地雷或破壞已記錄的設計意圖
131
-
132
- ### 執行任務
133
- - 根據 scope_paths 讀取相關檔案
134
- - 根據 requirements 逐一實作
135
- - 根據 acceptance_criteria 驗證成果
136
-
137
- ### 提交變更
138
- Command: git add -A && (git commit --no-verify -m "[TASK_1776] task completed" || true)
139
- Note: worktree 內顯式提交確保 post-complete 只需 merge 不需 recovery commit。
140
- nothing to commit 時靜默跳過,不報錯。
141
- ⚠️ 若前一步有 Edit 但 git add -A 找不到變更,代表路徑用錯了(用了主 repo 路徑)。
142
- 修復方式:先 echo $PWD 確認 worktree root,再用 worktree 絕對路徑重新 Edit。
143
-
144
-
145
- ### 認知 inscribe
146
- Note: 你的發現會在對話結束時消失。Inscribe 讓未來 agent 不必重新探索。
147
- - 回顧工作中是否發現 non-obvious 的知識(bug 根因、隱藏約束、設計決策理由)
148
- - 如有,用 synapse_inscribe 記錄(confidence >= 0.6,英文撰寫)
149
- - 如發現 3+ symbol 構成未命名的概念,考慮用 synapse_forge 建立 Sigil
150
- - inscribe 後,用 synapse_rune_conflicts({ scope: '<你改的檔案路徑>' }) 檢查是否與已有 rune 矛盾
151
-
152
- ### 完成任務
153
- Note: ⚠️ Worktree mode — 禁止執行 task-api.js complete。主 thread 在 merge + 驗證後處理。
154
-
155
- ### On Blocked
156
- Command: node .collaboration/core/task-api.js move TASK_1776 blocked
157
- Note: 遇到無法解決的阻礙時,移至 blocked/ 並在摘要中說明原因
158
-
159
- ## Expected Output
160
- Primary: 程式碼變更或檔案修改
161
- Secondary: 完成摘要(做了什麼、改了哪些檔案、需要注意的事)
162
-
163
- ## Progress Note (mandatory — write before finishing)
164
-
165
- When you finish your work, **before your final response**, write a structured progress note to the chart.
166
-
167
- **Chart path (for reference only — do NOT use the Write tool on this path)**: `C:/Users/user/Documents/GitHub/KenazAI/.specialist/sessions/chart_TASK_1776.json`
168
-
169
- **Steps** (avoids cross-workspace permission prompts — works for same-repo and cross-project workers):
170
- 1. Write the note JSON to a **project-local** file inside your own workspace (safe — no cross-boundary write):
171
- File: `.kenaz/specialist/progress_note_TASK_1776.json`
172
- Use the Write tool to create that file (it is inside your cwd, so no permission prompt occurs).
173
- Ensure `.kenaz/specialist/` directory exists first (create it if absent).
174
-
175
- 2. Run the phase-gate note subcommand via **Bash** to merge it into the core chart:
176
- ```bash
177
- node "C:/Users/user/Documents/GitHub/KenazAI/.specialist/tools/phase-gate.js" note --task=TASK_1776 --from-file=".kenaz/specialist/progress_note_TASK_1776.json"
178
- ```
179
- *(The note file is in your local workspace — no cross-workspace Write; phase-gate note merges it into the core chart atomically)*
180
-
181
- **Progress Note Schema** (ONE entry to append to `progress_notes`):
182
-
183
- ```json
184
- {
185
- "task_id": "TASK_1776",
186
- "timestamp": "<ISO-8601>",
187
- "changes": { "files_modified": ["<paths>"], "files_created": [], "files_deleted": [], "total_lines": 0 },
188
- "acceptance_criteria": [
189
- { "criterion": "Spawned headless.js command line contains --bifrost-adapter=openai when dashboard-models.json says family=bifrost adapter=openai (observable via process listing)", "status": "pass|fail|partial", "evidence": "<brief>" },
190
- { "criterion": "POST with older updated_at than disk does NOT overwrite; newer-or-equal writes proceed; response distinguishes the rejected case", "status": "pass|fail|partial", "evidence": "<brief>" },
191
- { "criterion": "cargo check passes (use short CARGO_TARGET_DIR per worktree Rust verify recipe); no full rebuild against running Tauri dev instance", "status": "pass|fail|partial", "evidence": "<brief>" },
192
- ],
193
- "findings": ["<non-obvious discoveries, traps, design decisions>"],
194
- "deviations": ["<anything done differently from the plan; REQUIRED to document a skipped inscribe>"],
195
- "cognitive_output": { "runes": ["<rune_ids -- [] if none>"], "sigils": ["<sigil_ids -- [] if none>"] }
196
- }
197
- ```
198
-
199
- **Rules**:
200
- - Evaluate EVERY Acceptance Criterion; use exact criterion text from the task.
201
- - `changes`: list ALL files touched (created/modified/deleted).
202
- - `findings`: non-obvious constraints, design traps, discoveries -- [] if none.
203
- - `cognitive_output.runes/sigils` = IDs from synapse calls ([] if none); if you skip inscribe, say why in `deviations` (verify-identity reads it as the skip explanation).
204
- - If the chart file does not exist, the note subcommand creates it automatically -- NEVER use the Write tool on the chart path directly.
205
-
206
-
207
- ## Before You Start — Cognitive Recall (mandatory verdict)
208
- Before writing any code, you MUST perform a cognitive recall (synapse_recall or synapse_pulse) on the symbols you are about to modify.
209
-
210
- Output exactly one of these lines before you start coding:
211
-
212
- ```
213
- 📡 Cognitive Recall: {one-line summary of what pulse/recall revealed}
214
- ```
215
-
216
- Or, if you consciously decide to skip:
217
-
218
- ```
219
- 📡 Cognitive Recall: SKIP — {reason why recall is unnecessary}
220
- ```
221
-
222
- You may SKIP, but you must say why. Silence is not allowed.
223
-
224
- ## Before You Finish — Don't Let Your Discovery Die
225
- You just spent real effort understanding this code. When this conversation ends, everything you learned disappears — unless you write it down.
226
-
227
- Ask yourself:
228
- - Did you trace a bug to a root cause that wasn't obvious from the code? → The next agent will waste hours rediscovering it. **inscribe type=fix**
229
- - Did you find a function that behaves differently than its name suggests, or has a hidden constraint? → That's a trap waiting to spring. **inscribe type=risk**
230
- - Did you choose approach A over B for a reason that isn't obvious? → Without your reasoning, someone will undo your work. **inscribe type=decision**
231
- - Did you realize that 3+ symbols are actually part of the same concept? → Give it a name. **synapse_forge** a Sigil.
232
-
233
- If none of these apply, skip. Don't write for the sake of writing.
234
-
235
- When you do write:
236
- - **English only** — code is English, runes should be too. This is mandatory: all memory write fields (synapse_inscribe content/context, hippocampus episode scope/lesson/summary) MUST be in English. SQLite FTS5 tokenizer does not handle CJK — Chinese content will return 0 results on recall. (Rule: MEM-LANG-001)
237
- - confidence >= 0.6 — if you're guessing, don't inscribe.
238
- - One good rune > three mediocre ones.
239
- - ⚠️ **Always pass `projectPath` to all Synapse tool calls** — use `projectPath: "C:\Users\user\Documents\GitHub\KenazAI"`. Multi-session collisions occur when concurrent sessions omit projectPath and fall back to the global default project.
240
-
241
- Every rune you inscribe will be recalled by the next agent who touches the same symbol. Your insight becomes their head start.
242
-
243
- ## Cognitive Checkpoint (mandatory — include in your final output)
244
- At the very end of your response, output this block exactly:
245
-
246
- ```
247
- ## Cognitive Checkpoint
248
- Pre-code: RECALLED — {what you found} | or SKIP — {reason}
249
- Post-code: INSCRIBED — {rune_id} | or SKIP — {reason}
250
- ```
251
-
252
- Both verdicts are required. You may SKIP either, but you must state why.
253
-
254
-
255
- ## Cortex Context (Related Files Preview)
256
- The following files are in your scope. Review them before making changes.
257
-
258
- ### dashboard/src-tauri/src/infrastructure/http_server/routes/mcp_tools/kenaz.rs (1310 lines)
259
- ```
260
- // Kenaz MCP Tool Handlers
261
- //
262
- // Contains all kenaz_* tool functions + helpers (run_task_api, run_node_script, extract_yaml_field).
263
- // Extracted from mcp.rs (TASK_479).
264
-
265
- use serde_json::Value;
266
- use std::fs;
267
- use std::path::PathBuf;
268
- use uuid::Uuid;
269
-
270
- use super::super::{
271
- load_projects, resolve_project, McpToolResult, CURRENT_PROJECT_OVERRIDE,
272
- };
273
- use super::get_str;
274
-
275
- // ============================================================================
276
- // Tool Execution Helpers
277
- // ============================================================================
278
-
279
- /// Run task-api.js with given args, return stdout.
280
- pub(crate) async fn run_task_api(
281
- core_path: &str,
282
- args: &[&str],
283
- project_path: Option<&str>,
284
- ) -> Result<String, String> {
285
- let script = PathBuf::from(core_path)
286
- .join(".collaboration")
287
- .join("core")
288
- .join("task-api.js");
289
- let mut cmd_args: Vec<String> = vec![script.to_string_lossy().to_string()];
290
- ... (truncated)
291
- ```
292
-
293
- ### dashboard/src-tauri/src/infrastructure/http_server/routes/dashboard_settings.rs (550 lines)
294
- ```
295
- use axum::{extract::State, http::StatusCode, response::IntoResponse, routing::get, Json, Router};
296
- use serde::{Deserialize, Serialize};
297
- use serde_json::Value;
298
- use std::path::{Path, PathBuf};
299
- use tokio::fs;
300
-
301
- use super::HttpAppState;
302
-
303
- #[derive(Debug, Deserialize)]
304
- #[serde(rename_all = "camelCase")]
305
- struct ModelsPayload {
306
- specialist_model: Option<String>,
307
- dispatch_model: Option<String>,
308
- huginn_model: Option<String>,
309
- muninn_model: Option<String>,
310
- forseti_model: Option<String>,
311
- heimdall_model: Option<String>,
312
- updated_at: Option<String>,
313
- ember_autonomous_dispatch: Option<bool>,
314
- ansuz_autonomous_wakeup: Option<bool>,
315
- }
316
-
317
- #[derive(Debug, Deserialize)]
318
- struct BifrostManifest {
319
- adapter: Option<String>,
320
- models: Option<Vec<BifrostModel>>,
321
- }
322
-
323
- #[derive(Debug, Deserialize)]
324
- struct BifrostModel {
325
- ... (truncated)
326
- ```