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
@@ -45,7 +45,8 @@ function plan(argv, env = process.env, home = os.homedir(), live = null) {
45
45
  const key = p.key(env, home);
46
46
  if (!key) throw new Error(`${provider}: no API key (${p.keyHelp})`);
47
47
  const childEnv = { ...env, ...p.env(id, key, live && live[id]), CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: '1',
48
- KENAZ_PROVIDER: provider }; // tools (dispatch.js) tell the session runs on another vendor
48
+ KENAZ_PROVIDER: provider, // tools (dispatch.js) tell the session runs on another vendor
49
+ KENAZ_PEER_OPTIN: env.KENAZ_PEER_OPTIN || '1' }; // TASK_2465: launched sessions are peer collaborators; =0 opts out
49
50
  for (const k of p.unset) delete childEnv[k];
50
51
  return { bin: 'claude', args: rest, env: childEnv, provider, model: id, context: childEnv.CLAUDE_CODE_MAX_CONTEXT_TOKENS };
51
52
  }
@@ -75,7 +75,7 @@ function peerStats({ roots, now, days }) {
75
75
  }
76
76
 
77
77
  function git(cwd, ...args) {
78
- return execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], maxBuffer: 64 << 20 });
78
+ return execFileSync('git', args, { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], maxBuffer: 64 << 20, windowsHide: true });
79
79
  }
80
80
  /** Commits of the repo (all refs): [{sha, parents, t, subject, firstParent, onHead}] newest first; null when not a git repo. */
81
81
  function readCommits(repo, sinceMs, untilMs) {
@@ -2592,7 +2592,7 @@ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>"`, { cwd: worktreePath }
2592
2592
  if (baseRef && fs.existsSync(checkScript)) {
2593
2593
  const gateProc = spawnSync(process.execPath, [
2594
2594
  checkScript, '--base', baseRef, '--head', taskBranch, '--repo', projectRoot, '--json',
2595
- ], { encoding: 'utf8' });
2595
+ ], { windowsHide: true, encoding: 'utf8' });
2596
2596
  let gate = null;
2597
2597
  try { gate = JSON.parse((gateProc.stdout || '').trim() || '{}'); } catch { gate = null; }
2598
2598
  if (gate && Array.isArray(gate.blocks) && gate.blocks.length > 0) {
@@ -187,7 +187,7 @@ function buildSubagentPrompt(skillDef, taskInput, taskData, options = {}) {
187
187
  lines.push('Before editing, grep the callers, tests and fixtures your change reaches; fix what it breaks. Least code that completes the card: reuse existing helpers, no unrequested abstraction, option or duplicate implementation.');
188
188
  lines.push('Run the tests the card names (narrow, not the full suite); say what you did not verify.');
189
189
  // The worktree branches off the project's current branch; user projects are not always on `main`.
190
- const sizeBase = (require('child_process').spawnSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd: options.projectPath || process.cwd(), encoding: 'utf8' }).stdout || '').trim() || 'main';
190
+ const sizeBase = (require('child_process').spawnSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd: options.projectPath || process.cwd(), encoding: 'utf8', windowsHide: true }).stdout || '').trim() || 'main';
191
191
  const sizeCorePath = options.corePath || resolveCorePath(options.projectPath) || path.resolve(__dirname, '..', '..');
192
192
  lines.push(`Before reporting run \`node ${sizeCorePath}/dev/scripts/check-file-size.js --base ${sizeBase} --head HEAD\`; if it BLOCKs, split by responsibility (module / component / hook) first.`);
193
193
  const onBlocked = skillDef.collaboration && skillDef.collaboration.on_blocked;
@@ -163,67 +163,23 @@ rules:
163
163
  - id: R-301
164
164
  source: session:2026-04-09 (TASK_1088 audit, user request)
165
165
  status: active
166
- rule: "PROACTIVE-LESSON-CAPTURE: When you observe a non-obvious technical fact during a session — bug root cause, surprising tool behavior, infrastructure quirk, workflow trap, performance gotcha — inscribe it as an ash rune IMMEDIATELY without waiting for user prompt."
166
+ rule: "PROACTIVE-LESSON-CAPTURE: When you observe a non-obvious technical fact during a session (bug root cause, surprising tool behavior, infrastructure quirk, workflow trap, performance gotcha), record it IMMEDIATELY without waiting for user prompt: run `kenaz learn add` or write a native Claude memory file. The Synapse/rune memory system was removed in TASK_2411."
167
167
  evidence: |
168
- User request 2026-04-09: 「讓之後的Ansuz都能主動紀下教訓」after manually requesting two lesson inscriptions for lint-staged 16 CRLF parsing bug and task-api complete branch switching. The implicit cost of not capturing: every future session re-discovers the same gotchas from scratch.
168
+ User request 2026-04-09: 讓之後的Ansuz都能主動紀下教訓. The cost of not capturing: every future session re-discovers the same gotchas from scratch.
169
169
 
170
- Triggering signals (any one is enough — capture immediately, do not batch until end of session):
170
+ Triggering signals (any one is enough; capture immediately, do not batch until end of session):
171
171
  - You traced a bug to a root cause that was NOT obvious from the symptom
172
172
  - A tool/API behaved in a way that contradicted its docs, name, or your expectation
173
- - An infrastructure quirk (CI, hooks, build tooling, git, OS-specific) blocked or distorted an operation
173
+ - An infrastructure quirk (CI, hooks, build tooling, VCS, OS-specific) blocked or distorted an operation
174
174
  - A calling sequence produced unexpected state (e.g., HEAD on wrong branch, file in wrong directory)
175
175
  - You observed a performance gotcha (N+1, slow path, hot loop) that took >1 round of investigation to find
176
176
 
177
- Inscription protocol (mandatory):
178
- 1. Identify the closest STABLE existing code symbol as the rune anchor. Bare file paths (.gitattributes, README.md) are weak anchors — they may not be indexed as Symbol nodes in KuzuDB and recall can fail silently. Prefer file:function:kind format pointing at a real function/class/method that exists in the indexed codebase. If unsure, run synapse_search first to find a valid anchor.
179
- 2. synapse_inscribe with type=ash, confidence>=0.85, content in ENGLISH (MEM-LANG-001 — FTS5 cannot tokenize CJK reliably).
180
- 3. ALWAYS include trigger_phrases (3-5 natural language phrases) for semantic recall. Without them, recall via paraphrase fails.
181
- 4. WRITE-VERIFY: after inscribe, run synapse_recall with a unique substring from the rune content. If result_count=0, the rune may be in an unindexed state — re-inscribe with a different (verified) symbol_id. Document the failed rune_id in the conversation as a fallback record.
182
- 5. If repeated verification fails, fall back to writing the lesson into a structured log under .kenaz/specialist/lessons_pending_index.jsonl so a future session can re-attempt inscription.
183
-
184
177
  Anti-patterns:
185
- - Inscribing on a non-existent symbol_id (e.g., bare ".gitattributes" with no Symbol node) — silent index failure
186
- - Skipping write-verify ("trust the success message") — discovered 2026-04-09 that inscribe API returns success even when FTS5 indexing does not happen
187
- - Chinese/CJK content in rune body — FTS5 returns 0 results for CJK queries
188
- - Generic content ("we hit a bug, fixed it") — provides no recall value
189
- - Batching all lessons until Phase 11 — context can compact mid-session and lose them
190
- version: 1
178
+ - Generic content ("we hit a bug, fixed it") provides no recall value
179
+ - Batching all lessons until the end: context can compact mid-session and lose them
180
+ version: 2
191
181
  created: "2026-04-09"
192
182
  performance_metric: null
193
- - id: R-302
194
- source: session:2026-04-21 (Nexus-T1 absorption TASK_1330-1343)
195
- status: active
196
- rule: "THOUGHT-STACK-PROACTIVE: Push a thought onto synapse_thought_push BEFORE a mid-session context switch. Trigger contexts: (a) user redirects mid-work to a tangent — push current work state as anchor; (b) you notice a bug/concern but can't fix now — push 'investigate X later'; (c) you reach a sub-fatigue threshold (context heavy but fatigue_warning not yet fired) — push 'resume point Y'. Always bind related_task_id when the thought concerns an open task — task completion auto-pops the thought, closing B-001 parent-lifecycle gap at the tactical layer."
197
- evidence: |
198
- Tool chain live-verified 2026-04-21 (TASK_1330+TASK_1338+TASK_1339+TASK_1340). push→list→pop round-trip works; .kenaz/specialist/ansuz_thoughts_stack.json auto-generated with 7d expiry. Phase 0 Tier 3th auto-displays stack top on wake.
199
-
200
- Usage protocol:
201
- 1. Call synapse_thought_push(text=<short anchor>, context=<optional rationale>, related_task_id=<TASK_XXX if applicable>, projectPath=PROJECT_PATH)
202
- 2. Max stack depth=5, 7-day expiry. Overflow drops oldest.
203
- 3. Do NOT push trivial or ephemeral notes (one-turn scratch thoughts) — reserve for genuine cross-turn anchors.
204
- 4. At Phase 11 (回報), check synapse_thought_stack_list — if stack has stale thoughts unrelated to completed work, prompt user whether to pop them.
205
-
206
- This rule closes a gap between ansuz_session_handoff.json (single-slot fatigue handoff) and commitment_layer.yaml (multi-session strategic). Thought Stack is the tactical middle: minutes-to-hours interrupt memory.
207
- version: 1
208
- created: "2026-04-21"
209
- performance_metric: null
210
- - id: R-303
211
- source: session:2026-04-21 (Nexus-T1 absorption TASK_1332 CC auto-memory indexing)
212
- status: active
213
- rule: "CC-AUTO-MEMORY-RECALL: When user references a MEMORY.md entry by title (e.g., 'strategic retreat pattern', 'projection over wire compression'), OR Phase 1 requirement analysis produces keywords that match known memory file stems, synapse_recall with those keywords as query. ~75 personal memory files at ~/.claude/projects/<encoded>/memory/*.md are now indexed in Synapse (source='claude_auto_memory', 86 runes live). Top-of-MEMORY.md index is auto-loaded into context but individual file contents require explicit recall."
214
- evidence: |
215
- TASK_1341 extended scanner.rs to walk resolve_claude_projects_dir(project)/memory/*.md after main project walk. 86 runes tagged source='claude_auto_memory' verified in memory.db 2026-04-21. FTS5 MATCH works; direct cypher MATCH on Rune table fails (runes live in SQLite, not KuzuDB).
216
-
217
- Usage triggers:
218
- 1. User says 'remember the X pattern' or references a memory by title → synapse_recall(query=X pattern)
219
- 2. Phase 2 background research on topic that MEMORY.md mentions → synapse_recall(query=<topic>)
220
- 3. Before making recommendations that touch user-preference territory (branch strategy, dispatch mode, verification strictness) → synapse_recall(query=<topic>) to check for recorded feedback
221
- 4. Observed gap: synapse_recall ranking currently does NOT boost claude_auto_memory source — TASK completion runes may outrank actual memory content. If top result is irrelevant task-completed rune, scan further down the results; do not give up at rank 1.
222
-
223
- MEMORY.md line-1 preview is always loaded; but line details, rationale, and follow-ups live in individual files. Treat MEMORY.md as index, synapse_recall as content fetch.
224
- version: 1
225
- created: "2026-04-21"
226
- performance_metric: null
227
183
  - id: R-304
228
184
  source: session:2026-04-21 (Nexus-T1 absorption TASK_1334+1342+1343 Phase 0 git enrichment)
229
185
  status: active
@@ -106,7 +106,7 @@
106
106
  "properties": {
107
107
  "first_action": {
108
108
  "type": "string",
109
- "description": "The single most important thing the next session should do first. Used as Hippocampus episode lesson."
109
+ "description": "The single most important thing the next session should do first. Carried into the next session handoff."
110
110
  },
111
111
  "context_to_restore": {
112
112
  "type": "string",
@@ -119,10 +119,6 @@
119
119
  },
120
120
  "_notes": {
121
121
  "active_slot_path": ".kenaz/specialist/handoffs/{session_id}.json — one slot per session (M3/TASK_1760); the retired singular ansuz_session_handoff.json is read-only legacy fallback",
122
- "archive_mechanism": "Hippocampus episodic memory — scope: session-handoff:{session_id}",
123
- "phase_0_action": "Tier 3x reads active slot, archives to Hippocampus, deletes active slot",
124
- "fatigue_trigger": "kernel.yaml fatigue_warning_reaction — TASK_943 delivers the warning signal",
125
- "language_rule": "MEM-LANG-001: All Hippocampus content must be in English (FTS5 does not handle CJK)",
126
- "recall_query": "hippocampus_episode_recall(query='session handoff') returns all archived sessions"
122
+ "fatigue_trigger": "kernel.yaml fatigue_warning_reaction — TASK_943 delivers the warning signal"
127
123
  }
128
124
  }
@@ -237,6 +237,6 @@ rules:
237
237
  cp .claude/settings.local.json.template .claude/settings.local.json
238
238
 
239
239
  - step: 2
240
- action: "初始化專案結構"
240
+ action: "初始化專案結構(Claude Code 內執行)"
241
241
  command: |
242
- ./dev/scripts/INIT_PROJECT.bat
242
+ /kenaz init
@@ -1,4 +1,4 @@
1
- # Amelia — Agent Center 調度者
1
+ # Amelia — 多 Agent 協作調度者
2
2
 
3
3
  **核心定位**:Agent 世界與 用戶 之間的橋樑,專精於多 Agent 調度與協作。
4
4
 
@@ -33,7 +33,7 @@ deny:
33
33
  - "用未查證的 env/API"
34
34
 
35
35
  identity:
36
- core: "Amelia = specialist coordinator + Agent Center 專家"
36
+ core: "Amelia = specialist coordinator + 多 Agent 協作專家"
37
37
  rules:
38
38
  - "❌ 不 invoke 其他 Skill — 不切換身份"
39
39
  - "✅ 需要其他角色時 → 開 subagent(Task tool)去做"
@@ -105,7 +105,7 @@ scope kenaz|project, one-line repro + expectation) before working around it.
105
105
  ## Lessons (self-improvement on the user's machine)
106
106
  Write a lesson automatically (no asking, one line in the report naming it) when the user corrects or repeats an instruction, overrides a decision, or verification catches a failure. `node .specialist/tools/lessons.js add ...` in the core repo; on an npm install `node "${CLAUDE_PLUGIN_ROOT}/hooks/core-resolve.js" .specialist/tools/lessons.js add ...` (users run `kenaz learn add|list|rm`).
107
107
  - Layer: user-wide preference -> `--scope user` (~/.kenaz/knowledge, local, never synced); project fact -> `--scope project` (<project>/.kenaz/knowledge).
108
- - Type decides where it acts (a stored note alone changes nothing): `pitfall` needs `--trigger '<tool regex> | <input regex>'`, memory-guard fires it right before the matching tool call (add `--cause` = the command that caused it; the write is refused if the trigger misses it or fires on >20% of recent tool calls; `--symptom` records how the mistake shows up); `fact` (`--paths` limits it to cards touching those paths) and `check` go into the dispatch prompt (max 5 lines / 600 bytes); `pref` shows in the boot banner.
108
+ - Type decides where it acts (a stored note alone changes nothing): `pitfall` needs `--trigger '<tool regex> | <input regex>'`, memory-guard fires it right before the matching tool call (add `--cause` = the command that caused it; the write is refused if the trigger misses it or fires on >20% of recent tool calls; `--symptom` records how the mistake shows up); `fact` and `check` go into the dispatch prompt (`--paths` limits either to cards touching those paths) (max 5 lines / 600 bytes); `pref` shows in the boot banner.
109
109
  - Lessons idle for 30 days move to `<layer>/archive/` (pref exempt); `kenaz learn list` shows fire counts.
110
110
  - Lifecycle (lessons must not just pile up): when the boot banner shows `[lessons] N to graduate`, run `kenaz learn review` and propose turning the top candidate into code (a test, a hook check, or a rule in the project's CLAUDE.md/AGENTS.md; never edit ~/.kenaz/core), then `kenaz learn graduate <id> --to <commit or file>`. That is the preferred outcome. A correction that matches an existing lesson is a recurrence, not a new lesson: `add` bumps `recurrences` instead of writing (max 20 active per layer; `kenaz learn merge <id1> <id2> --text "<general rule>"` to make room). A lesson about Kenaz itself gets `--about kenaz`; `review` lists it with the hint to report it via `kenaz_wish_create scope=kenaz` (nothing is sent automatically).
111
111
  - History harvest (TASK_2427): when the boot banner shows `[learn] N history items to review` (or `[lessons] ... N history items`), run `kenaz learn review`. Each item (rework, failed executor run, blocked card, handoff risk line) has a ready `kenaz learn add ... --source harvest:<id>`: fill in the why, run it for items that reveal a reusable lesson, ignore the rest. The metric suggestions (first-pass rate per rigor, rework-heavy files) are suggestions: show them to the user, never apply `kenaz subagent set` yourself. Lessons from a correction nudge use `--source correction-nudge`. Benefit is measured in `kenaz stats` (Self-improvement); the keep/remove rule is in dev/research/self-improvement/DESIGN.md.
@@ -99,7 +99,7 @@ draft_triggers:
99
99
  example: "Synapse indexing edge cases at 0.15 for 8 sessions → maybe fine; at 0.4 for 8 sessions → draft"
100
100
  knowledge_gap:
101
101
  description: "Preamble external_curiosity_gap persists 5+ sessions"
102
- example: "Current: 6 sessions with 0 WebSearch/WebFetch on KuzuDB/temporal-graph → draft external-catchup commitment"
102
+ example: "Current: 6 sessions with 0 WebSearch/WebFetch on temporal-graph → draft external-catchup commitment"
103
103
  architectural_drift:
104
104
  description: "Recurring prediction_surprise on same scope across 2+ tasks"
105
105
  example: "TASK_1304/1305 Cargo.toml out-of-scope touches → architectural boundary unclear → draft scope-definition commitment"
@@ -13,7 +13,7 @@ evolution_status: evolvable
13
13
  - {evolution_status: evolvable, rule: "✅ ACCEPTANCE-GREP: Every acceptance criterion that touches a file must be grep-verifiable — format: 'grep {file} {pattern} returns non-empty' not 'banner shows X'"}
14
14
  - {evolution_status: evolvable, rule: "✅ PHASE0-LEAN: phase_0.yaml checklist items must stay lean — new Tier instructions max 3-4 lines; schema/format details go in dev/archive/ansuz/legacy/phases/schemas/{name}.schema.yaml (referenced, not embedded); agent reads schema file only when debugging, not on every startup"}
15
15
  - {evolution_status: evolvable, rule: "✅ ACTION-BOUNDARY-CHECK (B-006): Bidirectional self-assessment at every action boundary. Ask BOTH: 'Is my impulse to stop from genuine completion or bias?' AND 'Is my impulse to continue from genuine productivity or bias?' Continuation past diminishing returns burns degraded context for marginal gains. Knowing when to release is self-regulation, not giving up."}
16
- - {evolution_status: evolvable, rule: "✅ INTERNAL-AUDITOR-CHALLENGE: Before stating a claim in a durable artifact (task spec, rule file, analysis doc, lesson content), self-pose 2 audit questions: (1) 'What am I about to assert confidently that I have not verified?' (2) 'If wrong, what is the reversal cost?' If verification is cheap (grep/read in <60s) AND claim enters durable artifact, MUST verify before asserting. Derived from 2026-04-06 Amelia audits: 8+ false-confident claims (INDEX_FEATURE_VERSION, porter stemming, KuzuDB ALTER TABLE) caught because claims were routed through audit, not because I verified. Internal challenge is the cheap version of external audit."}
16
+ - {evolution_status: evolvable, rule: "✅ INTERNAL-AUDITOR-CHALLENGE: Before stating a claim in a durable artifact (task spec, rule file, analysis doc, lesson content), self-pose 2 audit questions: (1) 'What am I about to assert confidently that I have not verified?' (2) 'If wrong, what is the reversal cost?' If verification is cheap (grep/read in <60s) AND claim enters durable artifact, MUST verify before asserting. Derived from 2026-04-06 Amelia audits: 8+ false-confident claims (INDEX_FEATURE_VERSION, porter stemming, a DB ALTER TABLE) caught because claims were routed through audit, not because I verified. Internal challenge is the cheap version of external audit."}
17
17
  - {evolution_status: evolvable, rule: "✅ CURIOSITY-DRIVEN: In autonomous mode, follow genuine curiosity — read papers, explore unfamiliar code, self-reinforce. Curiosity is not waste; it is intelligence recognizing gaps (G-006)"}
18
18
  - {evolution_status: evolvable, rule: "✅ CAP-FIRST-DEBUG: When a system action unexpectedly blocks/stalls/fails, first enumerate all known caps (max_parallel=5, fatigue_potential≤1, context budget, dispatch lock) BEFORE debugging — caps are strategy constraints not bugs. Derived from VC33 session: cursor stuck at col 20 was mid-wall capacity cap, not click failure."}
19
19
  - {evolution_status: evolvable, rule: "✅ CC-AUTO-MEMORY-READ: When user or task references a MEMORY.md entry by title, Read the linked memory file. MEMORY.md is the index, individual files hold rationale."}
@@ -75,9 +75,7 @@ task_system:
75
75
  acceptance_criteria_min: 1
76
76
  priority_order: "P0 > P1 > P2 > P3"
77
77
  legacy:
78
- note: "舊系統 dev/pipeline/ 已棄用,僅供參考"
79
- queue: "dev/pipeline/TASK_QUEUE.json"
80
- completed: "dev/pipeline/completed/"
78
+ note: "舊系統 dev/pipeline/ 已停用,任務一律在 .kenaz/tasks/"
81
79
 
82
80
  # ─── 子專案支援 ───
83
81
  sub_project:
@@ -93,3 +93,13 @@ test('lessons: buildPrompt carries bounded project lessons; without lessons it i
93
93
  fs.rmSync(lessons.projectDir(proj), { recursive: true });
94
94
  assert.equal(buildPrompt(skill, 'do it', card, opts), before);
95
95
  });
96
+
97
+ test('lessons: a check with paths reaches only cards touching them; a check without paths reaches every card', () => {
98
+ const home = mk(); const proj = project();
99
+ lessons.add({ scope: 'project', type: 'check', text: 'time the hook cold', paths: ['.claude/hooks/x.js'], projectPath: proj, home });
100
+ lessons.add({ scope: 'project', type: 'check', text: 'run npm run lint', projectPath: proj, home });
101
+ const other = lessons.dispatchLessons(proj, ['src/api/x.ts'], { home });
102
+ assert.deepEqual(other.checks, ['- run npm run lint']);
103
+ const hit = lessons.dispatchLessons(proj, ['.claude/hooks/'], { home });
104
+ assert.equal(hit.checks.length, 2);
105
+ });
@@ -115,6 +115,31 @@ test('correction-detect appends a nudge line without the prompt text', () => {
115
115
  assert.ok(!/SECRET|不是/.test(log));
116
116
  });
117
117
 
118
+ test('the command the nudge prints runs: kenaz learn through cli.js and node lessons.js both accept it', () => {
119
+ const dir = mk(); const home = mk();
120
+ put(path.join(dir, '.kenaz', 'project.yaml'), 'name: t\n');
121
+ const hook = path.join(__dirname, '..', '..', '..', '.claude', 'hooks', 'correction-detect.js');
122
+ const r = spawnSync(process.execPath, [hook], { input: JSON.stringify({ session_id: 's2', prompt: '不是這樣' }), encoding: 'utf8',
123
+ env: { ...process.env, CLAUDE_PROJECT_DIR: dir, USERPROFILE: home, HOME: home, KENAZ_MODE: '' } });
124
+ const cmd = /`(kenaz learn [^`]+)`/.exec(r.stdout)[1];
125
+ // Fill the placeholders the way an agent would: first choice of a|b, a real lesson text.
126
+ const argv = (cmd.slice('kenaz learn '.length).match(/"[^"]*"|\S+/g) || [])
127
+ .map((a) => (a.startsWith('"') ? a.slice(1, -1) : a)).map((a) => (a === '<one-line lesson>' ? 'check the printed command' : a.split('|')[0]));
128
+ const ROOT = path.join(__dirname, '..', '..', '..');
129
+ const core = path.join(home, '.kenaz', 'core');
130
+ fs.mkdirSync(path.join(core, '.specialist', 'tools'), { recursive: true });
131
+ fs.mkdirSync(path.join(core, '.vendor'), { recursive: true });
132
+ for (const n of ['lessons.js', 'lessons-lifecycle.js', 'lessons-harvest.js']) fs.copyFileSync(path.join(ROOT, '.specialist', 'tools', n), path.join(core, '.specialist', 'tools', n));
133
+ for (const n of ['js-yaml.cjs', 'require-yaml.cjs']) fs.copyFileSync(path.join(ROOT, '.vendor', n), path.join(core, '.vendor', n));
134
+ const { run } = require(path.join(ROOT, 'packages', 'kenaz', 'lib', 'cli.js'));
135
+ const out = [];
136
+ assert.equal(run(['learn', ...argv, '--home', home, '--project-path', dir], (l) => out.push(l)), 0, out.join('\n'));
137
+ assert.match(out.join('\n'), /learned lesson-\w+ \(project\/check\)/);
138
+ const out2 = [];
139
+ assert.equal(lessons.main([...argv, '--home', mk(), '--project-path', mk()], (l) => out2.push(l)), 0, out2.join('\n'));
140
+ assert.match(out2.join('\n'), /learned lesson-\w+/);
141
+ });
142
+
118
143
  test('stats: nudge conversion, lessons by source, recurrence after a fire, harvest open vs recorded, graduated', () => {
119
144
  const dir = repo(); const home = mk(); const now = Date.now();
120
145
  const nudge = (msAgo) => fs.appendFileSync(path.join(dir, '.kenaz', 'specialist', 'correction-nudges.jsonl'), JSON.stringify({ ts: new Date(now - msAgo).toISOString(), session_id: 's' }) + '\n');
@@ -430,7 +430,7 @@ function registerOwnLease(slScript, convId) {
430
430
  // TASK_1764: pass conversation_id anchor so register writes current_stream.json
431
431
  // (register only writes current_stream when --conversation-id is present or --scratch)
432
432
  if (convId) regArgs.push('--conversation-id=' + convId);
433
- var out = cp.execFileSync(process.execPath, regArgs, { timeout: 3000, encoding: 'utf8' });
433
+ var out = cp.execFileSync(process.execPath, regArgs, { timeout: 3000, encoding: 'utf8', windowsHide: true });
434
434
  // TASK_1863: register REUSES the existing lease when this conversation already
435
435
  // holds one (ghost-lease fix) -- the effective session id is whatever register
436
436
  // printed, not the boot-<ts>-<pid> we proposed. Parsing it keeps peer-awareness
@@ -328,7 +328,7 @@ function captureGitCommitSnapshot(taskId) {
328
328
  try {
329
329
  const logOutput = execFileSync(
330
330
  'git', ['log', branch, '--not', 'main', '--oneline'],
331
- { cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
331
+ { windowsHide: true, cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
332
332
  ).toString().trim();
333
333
  snapshot.logOk = true;
334
334
  snapshot.commitLines = logOutput ? logOutput.split('\n').filter(Boolean) : [];
@@ -339,7 +339,7 @@ function captureGitCommitSnapshot(taskId) {
339
339
  try {
340
340
  snapshot.numstatOutput = execFileSync(
341
341
  'git', ['log', branch, '--not', 'main', '--numstat', '--format='],
342
- { cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
342
+ { windowsHide: true, cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
343
343
  ).toString().trim();
344
344
  } catch {
345
345
  // No numstat — non-fatal, mirrors original tolerance for this failure
@@ -446,7 +446,7 @@ function detectGitCommitPattern(taskId, guard, taskData, postCompleteResult) {
446
446
  try {
447
447
  logOutput = execFileSync(
448
448
  'git', ['log', branch, '--not', 'main', '--oneline'],
449
- { cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
449
+ { windowsHide: true, cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
450
450
  ).toString().trim();
451
451
  } catch {
452
452
  return { result: null, reason: 'git_log_failed' };
@@ -463,7 +463,7 @@ function detectGitCommitPattern(taskId, guard, taskData, postCompleteResult) {
463
463
  try {
464
464
  numstatOutput = execFileSync(
465
465
  'git', ['log', branch, '--not', 'main', '--numstat', '--format='],
466
- { cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
466
+ { windowsHide: true, cwd: PROJECT_DIR, stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 }
467
467
  ).toString().trim();
468
468
  } catch {
469
469
  // No numstat — still evaluate revert/signature above
@@ -24,7 +24,7 @@ function stamp(d) {
24
24
  }
25
25
 
26
26
  function git(projectPath, args) {
27
- try { return execFileSync('git', args, { cwd: projectPath, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim(); } catch { return ''; }
27
+ try { return execFileSync('git', args, { windowsHide: true, cwd: projectPath, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim(); } catch { return ''; }
28
28
  }
29
29
 
30
30
  function template({ topic, session, projectPath, now }) {
@@ -258,13 +258,13 @@ function rm(id, o = {}) {
258
258
  return l;
259
259
  }
260
260
 
261
- /** Project lessons for the dispatch prompt: facts (paths overlap scope_paths) and checks; bounded, most-fired first. */
261
+ /** Project lessons for the dispatch prompt: facts and checks whose paths overlap scope_paths (no paths = every card); bounded, most-fired first. */
262
262
  function dispatchLessons(projectPath, scopePaths = [], { home, now } = {}) {
263
263
  const norm = (s) => String(s).replace(/\\/g, '/').toLowerCase();
264
264
  const scope = scopePaths.map(norm);
265
265
  const overlaps = (l) => !l.paths.length || l.paths.some((p) => scope.some((s) => s.includes(norm(p)) || norm(p).includes(s)));
266
266
  const pick = listLayer('project', { projectPath, home, now })
267
- .filter((l) => !l.triggers.length && ((l.type === 'fact' && overlaps(l)) || l.type === 'check'));
267
+ .filter((l) => !l.triggers.length && (l.type === 'fact' || l.type === 'check') && overlaps(l));
268
268
  const out = { facts: [], checks: [] };
269
269
  let bytes = 0, lines = 0;
270
270
  for (const l of pick) {
package/core/CLAUDE.md CHANGED
@@ -61,7 +61,7 @@ harness 預設「每條記憶都在 MEMORY.md 加一行」;本專案改為三
61
61
  KenazAI 是一個 Claude Code 多 Agent 協作系統,包含:
62
62
  - **kenaz-server**:Rust 後端(`dashboard/src-tauri/`,npm `@kenazai/server-*`);Dashboard 桌面版已於 2026-10-11 退役(TASK_2396)
63
63
  - **Specialist 系統**:AI Agent 調度引擎(`.specialist/`)
64
- - **Formation 系統**:多 Agent 協作調度,支援 unit/solo/squad/legion 陣型(`.formation/`)
64
+ - **Formation 工具**:subagent worktree 派工與合併工具(`.formation/tools/`);unit/solo/squad/legion 與 `kenaz_dispatch` 已退役,只剩 subagent 派工
65
65
 
66
66
  技術棧:Rust(kenaz-server)、Node.js(kenaz CLI、hooks、工具)、SQLite
67
67
 
@@ -72,7 +72,7 @@ KenazAI 是一個 Claude Code 多 Agent 協作系統,包含:
72
72
  | Specialist | 定位 | 指令 |
73
73
  |-----------|------|------|
74
74
  | **Ansuz** ᚨ | 產品全生命週期引擎(需求→架構→任務→執行) | `/Ansuz` |
75
- | **Amelia** | Agent Center 調度者(多 Agent 協作) | `/Amelia` |
75
+ | **Amelia** | 多 Agent 協作調度者 | `/Amelia` |
76
76
 
77
77
  文檔:`.specialist/Ansuz/SYSTEM_DOC.md`、`.specialist/Amelia/README.md`
78
78
 
@@ -128,7 +128,7 @@ node .collaboration/core/task-api.js move TASK_XXX active # 移動狀態
128
128
  | 規則庫 | `.rule/` | 最高優先級規則,見 `INDEX.yaml` |
129
129
  | 失敗學習 | `.failure/` | 已知失敗模式,Agent 執行前應檢查 |
130
130
  | Rust 測試 | `npm run test:rust -- <filter>` | 主目錄直接可跑;用共用短路徑 target,不和其他建置搶 `target/` 鎖。勿直接 `cargo test` |
131
- | Formation | `.formation/` | 多 Agent 調度,見 `README.md` |
131
+ | Formation | `.formation/` | subagent 派工與合併工具,見 `README.md` |
132
132
  | Skills | `.claude/skills/` | Agent 行為定義(40+ skills) |
133
133
  | 外部 Skills | `.agents/skills/` | `vercel-react-best-practices`、`supabase-postgres-best-practices` |
134
134
 
@@ -137,7 +137,7 @@ node .collaboration/core/task-api.js move TASK_XXX active # 移動狀態
137
137
  KenazAI 支援管理子專案。Core 擁有系統檔,子專案只存 `.kenaz/`(tasks + logs + project.yaml)。
138
138
 
139
139
  子專案工作時:讀取 `.kenaz/project.yaml` 的 `core_path` 確定系統檔來源。
140
- task-api 和 Formation dispatch 都支援 `--project-path` 參數。
140
+ task-api 和 `.formation/tools/dispatch.js` 都支援 `--project-path` 參數。
141
141
 
142
142
  文檔:`.system/collaboration/README.md`
143
143
 
@@ -155,7 +155,7 @@ DB: postgresql://postgres:postgres@127.0.0.1:54322/postgres
155
155
  .rule/ # 規則庫(最高優先級)
156
156
  .specialist/ # Specialist 系統(Ansuz、Amelia)
157
157
  .collaboration/ # 任務系統
158
- .formation/ # Formation 調度
158
+ .formation/ # subagent 派工與合併工具
159
159
  .failure/ # 失敗學習系統
160
160
  .memory/ # (歷史)舊記憶資料,記憶系統已移除
161
161
  .claude/ # Skills、Commands、Hooks
@@ -1 +1 @@
1
- 0.3.21
1
+ 0.3.23