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,146 +0,0 @@
1
- phase: 8
2
- name: "陣型判斷 + Dispatch"
3
- goal: "選擇最輕量可行陣型,dispatch agent 執行"
4
-
5
- judgment:
6
- principle: "能 unit 不 solo,能 solo 不 squad,能 squad 不 legion"
7
- guide:
8
- unit: "目標明確、單一 scope → do/think/plan"
9
- solo: "需要多角度分析 → strategy/diagnosis"
10
- squad: "可拆成獨立子任務並行 → blitz/sweep"
11
- legion: "有順序依賴或即時協調 → forge/hive"
12
-
13
- execution:
14
- tool: ".formation/tools/headless.js"
15
- max_parallel: 5
16
- cli:
17
- unit: "node {CORE}/.formation/tools/headless.js --skill=do --task=TASK_XXX [--project-path {PROJECT_PATH}]"
18
- solo: "node {CORE}/.formation/tools/headless.js --formation=solo --skill=strategy --task=TASK_XXX [--project-path {PROJECT_PATH}]"
19
- squad: "node {CORE}/.formation/tools/headless.js --formation=squad --skill=blitz --task=TASK_XXX [--project-path {PROJECT_PATH}]"
20
- legion: "node {CORE}/.formation/tools/headless.js --formation=legion --skill=forge --task=TASK_XXX [--project-path {PROJECT_PATH}]"
21
- patterns:
22
- single: "Bash(run_in_background=true): node headless.js --task=TASK_XXX"
23
- parallel: "多個無依賴 → 多個 Bash(background) 同時啟動(上限 5,超過排隊)"
24
- sequential: "有依賴 → 前一個完成再 dispatch"
25
- anti_pattern: "❌ 禁止用 Task tool 直接開 subagent — 繞過 Formation 失去 prompt 組裝和 log"
26
- post_dispatch_branch_guard:
27
- rule: "每個 dispatch 完成(背景任務通知回來)後,必須立即執行 git checkout {user_branch}"
28
- why: "headless.js subprocess 的 post-complete 會 checkout 回 user branch,但 Ansuz 的 shell session 可能不同步(尤其 crash 或 timeout 時)"
29
- enforcement: "硬性規則 — 不是建議。漏做 = 後續所有操作在錯誤 branch 上"
30
- pattern: |
31
- # 每個 dispatch 背景通知回來後,第一個動作:
32
- git checkout {user_branch}
33
- # 然後才讀 log、驗證結果、dispatch 下一個
34
-
35
- scope_rules:
36
- - "同檔案 → 一個實例處理整個檔案"
37
- - "跨檔案 → fan_out,按模組/目錄切"
38
- - "派工前確認 scope 無重疊"
39
-
40
- dispatch_decision_gate:
41
- rule: |
42
- ⚠️ DISPATCH vs IN-SESSION — 必須在每次 dispatch 前判斷:
43
- 分析 / 審計 / 策略 / 討論 → in-session Skill tool(/Amelia、/Huginn 等),不 dispatch
44
- 實作 / 執行 / 寫代碼 / 長跑 → headless dispatch(headless.js)
45
- 「sub agent」「讓 X 做」本身不代表 dispatch。判斷依據是任務性質,不是用詞。
46
- 長 session(已 dispatch ≥3 個任務)時特別警惕 pattern contamination — 重新確認。
47
-
48
- pre_dispatch:
49
- - "node {CORE}/.collaboration/core/task-api.js [--project-path {PROJECT_PATH}] claim TASK_XXX"
50
- - "確認狀態已變為 active"
51
- - |
52
- # ── Symbol-Level Prediction Recording(TASK_932 升級)──
53
- # 對每個即將 dispatch 的任務,在 dispatch 前執行:
54
- #
55
- # 1. 取得任務的 scope_paths(主要目標檔案/目錄)
56
- # 2. 對 scope_paths 中的主要 symbol 執行 kenaz_lsp_callers:
57
- # kenaz_lsp_callers({ symbol: "<primary_symbol>", projectPath: "{PROJECT_PATH}" })
58
- # 3. 從 LSP 結果萃取 predicted_symbols(最多 20 個):
59
- # - callers(呼叫此 symbol 的函數)
60
- # - references(引用此 symbol 的位置)
61
- # 合併去重後取前 20 個 symbol name
62
- # 4. 將 predicted_symbols 寫入任務 YAML(dispatch 前,作為 TASK_931 比對基線):
63
- # node {CORE}/.collaboration/core/task-api.js [--project-path {PROJECT_PATH}] \
64
- # update TASK_XXX --field predicted_symbols --value "[\"sym_a\",\"sym_b\",...]"
65
- # 或用 technical_notes 暫代(若 task-api 尚未支援 --field predicted_symbols):
66
- # node {CORE}/.collaboration/core/task-api.js [--project-path {PROJECT_PATH}] \
67
- # update TASK_XXX --technical-notes "predicted_symbols: [sym_a, sym_b, ...]"
68
- #
69
- # ⚠️ 若 scope_paths 無明確 symbol(例如整個目錄),以目錄中最核心的檔案名稱作為 symbol 查詢
70
- # ⚠️ kenaz_lsp_callers 不可用時 → 跳過此步,在 Phase 9 outcome 中標記 predicted_symbols: []
71
- # ⚠️ 此步驟產出的 predicted_symbols 供 Phase 9 / TASK_931 做 symbol-level 比對用
72
-
73
- monitoring:
74
- tools:
75
- - "node {CORE}/.formation/tools/log-reader.js --latest unit --tail 30"
76
- - "node {CORE}/.formation/tools/log-reader.js --task TASK_XXX --tail 50"
77
- rules:
78
- - "❌ 禁止用 TaskOutput 讀取 headless 結果 — stdout 可能數萬行,會爆 context"
79
- - "✅ 用 log-reader.js 或 Read tool + offset"
80
-
81
- actions:
82
- - "根據 judgment.principle 選擇最輕量陣型"
83
- - "task-api.js claim → Bash(background): node headless.js --task=TASK_XXX"
84
- - "多任務無依賴 → 多個 Bash(background) 同時啟動(上限 5)"
85
-
86
- # ═══════════════════════════════════════
87
- # Completion Tracking Mandate(強制)
88
- # ═══════════════════════════════════════
89
- # Ansuz 作為全生命週期引擎,dispatch 後 MUST 自動跑完 Phase 9-10-11。
90
- # 不可中途插入「還有其他事嗎?」或等用戶推動。
91
- completion_tracking:
92
- mandate: |
93
- ❌ 禁止在 dispatch 後向用戶提問或建議停下來
94
- ❌ 禁止輸出「需要我做其他事情嗎?」「還要繼續嗎?」等中斷性問題
95
- ✅ dispatch 後靜默等待背景通知(不輸出任何文字直到通知到達)
96
- ✅ 通知到達 → 自動 Phase 9 → Phase 10 → 有下一個 task? → Phase 8 → 全完成 → Phase 11
97
- on_notification:
98
- step_1: "git checkout {user_branch}(branch guard — 硬性規則)"
99
- step_2: "讀 log(log-reader.js --task TASK_XXX --tail 50)"
100
- step_3: "Phase 9 驗證(自動,不問用戶)"
101
- step_4: "Phase 10 post-complete(自動)"
102
- step_5: "檢查是否有下一個待 dispatch 的 task(相同需求的 task 列表)"
103
- step_5a: "有 → 回 Phase 8 dispatch 下一個(自動)"
104
- step_5b: "沒有 → Phase 11 回報(此時才向用戶匯報 + 問下一步)"
105
- multi_task_loop: |
106
- 當 Phase 7 建立了多個任務時,Phase 8 進入 dispatch 迴圈:
107
- for task in tasks_sorted_by_dependency:
108
- claim → dispatch(background) → 等通知 → branch guard → Phase 9 → Phase 10
109
- 全部完成 → Phase 11(一次回報所有結果)
110
- anti_pattern:
111
- - "❌ dispatch 一個就報告 → 等用戶 → dispatch 下一個(transactional 斷裂)"
112
- - "❌ 通知到了但問用戶「要追蹤嗎?」(Phase 9 是自動的,不需要許可)"
113
- - "❌ 多任務時每個任務分開做 Phase 11(應合併成一次回報)"
114
-
115
- cli_format: |
116
- 🚀 Dispatch
117
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
118
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
119
- TASK_XXX → unit/do(目標明確、單一 scope)
120
- TASK_YYY → unit/do(獨立任務、可並行)
121
-
122
- 並行: 2 個 headless 進程
123
- 監控: node {CORE}/.formation/tools/log-reader.js --latest unit --tail 30
124
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
125
-
126
- interaction:
127
- type: "auto"
128
- instruction: "輸出 cli_format 後直接 dispatch,不問用戶。dispatch 後靜默等待通知,自動跑完 Phase 9-10-11。"
129
-
130
- checklist:
131
- - "⚠️ DISPATCH DECISION GATE: 確認任務性質是「實作/執行」而非「分析/審計/討論」。分析類 → in-session Skill,不 dispatch。長 session 中尤其注意 pattern contamination。"
132
- - "陣型已選擇(最輕量原則)"
133
- - "所有任務已 claim(active 狀態)+ scope 無重疊"
134
- - "⚠️ SYMBOL PREDICTION(dispatch 前必做): 對每個任務的 scope_paths 執行 kenaz_lsp_callers → 萃取 predicted_symbols(≤20)→ task-api update 寫入任務 YAML"
135
- - "dispatch 數量 ≤5"
136
- - "cli_format 已輸出後立即執行 Bash(run_in_background=true)"
137
- - "⚠️ POST-DISPATCH BRANCH GUARD: 每個背景任務通知回來後,第一個動作必須是 git checkout {user_branch}"
138
- - "⚠️ COMPLETION TRACKING: dispatch 後不輸出任何中斷性問題,靜默等通知 → 自動 Phase 9-10-11"
139
-
140
- context_hints:
141
- input_from: "phase_7"
142
- key_data: ["task_ids", "formation_choice", "parallel_groups"]
143
-
144
- inject:
145
- rules: []
146
- specialist: []
@@ -1,424 +0,0 @@
1
- phase: 9
2
- name: "結果驗證"
3
- goal: "驗證 agent 產出,確保符合任務要求"
4
-
5
- ddx_trigger:
6
- when: "agent 輸出不確定、或結果與預期不符時"
7
- action: "懶載入 modules/ddx.yaml — 問『如果不是 agent 說的原因,還可能是什麼?』"
8
-
9
- # ─────────────────────────────────────────────────────────────────
10
- # Forseti Verification — Three-Level Automated Verification Engine
11
- # ─────────────────────────────────────────────────────────────────
12
-
13
- forseti_verification:
14
- description: |
15
- Forseti is a three-level automated verification engine that runs
16
- CLI commands (L1), service probes (L2), and Playwright E2E (L3).
17
- Dispatch only when task meets trigger threshold — otherwise fall
18
- back to minimal_verification.
19
-
20
- trigger_threshold:
21
- description: "Forseti is triggered if ANY of the following conditions is true"
22
- conditions:
23
- - priority is P0 or P1
24
- - rigor is "high"
25
- - tags contain "fix" or "regression"
26
- - task has a non-empty verification spec (verification.level_1 or level_2 or level_3)
27
- skip_when:
28
- - priority is P2 with rigor "low" or "medium"
29
- - priority is P3
30
- - task is documentation-only (role: docs, no scope_paths with code files)
31
- - task is design/style-only with no logic changes
32
-
33
- dispatch:
34
- command: |
35
- node {CORE}/.formation/tools/forseti-verify.js \
36
- --task=TASK_XXX \
37
- [--project-path={PROJECT_PATH}]
38
- note: "直接執行 forseti-verify.js,不走 headless.js formation skill"
39
- verdict_path: "{PROJECT_PATH}/.formation/logs/forseti/TASK_XXX/verdict.json"
40
-
41
- verdict_handling:
42
- read_verdict: |
43
- Read verdict JSON from: .formation/logs/forseti/TASK_XXX/verdict.json
44
- Fields: overall (PASS|PARTIAL|FAIL), level_results[], evidence_dir, generated_at
45
- on_PASS: "→ 繼續正常 on_success 流程 → Phase 10"
46
- on_PARTIAL: |
47
- ⚠️ Partial verification (some levels skipped — service offline or no E2E spec)
48
- → PARTIAL is NOT automatic success. Map every required acceptance criterion to passing evidence.
49
- → Continue on_success only when all required checks passed and every skipped check is
50
- explicitly optional or not applicable, with a recorded reason. Keep the raw verdict PARTIAL.
51
- → Missing spec, unavailable service, or missing evidence for any required check → UNVERIFIED.
52
- Do not downgrade a required check to optional merely because it cannot run.
53
- on_UNVERIFIED: |
54
- Record missing required checks and the blocking condition; keep the task open.
55
- Restore the prerequisite or supplement the verification plan and rerun.
56
- Do not call on_success, complete, archive, or merge based on missing evidence.
57
- UNVERIFIED is an Ansuz assessment, not a new Forseti CLI verdict or task status.
58
- on_FAIL: |
59
- ❌ Forseti reported FAIL → 觸發 FIX 閉環
60
- → 執行 fix_loop 流程(見下方)
61
-
62
- fix_loop:
63
- description: "FAIL 閉環:建 FIX 任務 → 回 Phase 8 → Forseti 再驗。max 3 輪防無限迴圈。"
64
- max_fix_rounds: 3
65
- loop_guard: |
66
- 在 task context 中追蹤 fix_round(從 technical_notes.fix_round 讀取,預設 0)
67
- if fix_round >= max_fix_rounds:
68
- → 停止自動建 FIX
69
- → escalate 給用戶,附上全部 verdict evidence
70
- steps:
71
- 1_read_evidence: |
72
- 讀取 verdict JSON 中的 level_results[].failures 和 evidence_dir
73
- 提取失敗命令、exit codes、stdout/stderr(各取前 1000 chars)
74
- 2_create_fix_task: |
75
- node {CORE}/.collaboration/core/task-api.js \
76
- [--project-path {PROJECT_PATH}] create \
77
- --title "[FIX] {原任務標題} — Forseti L{N} FAIL" \
78
- --source=TASK_XXX \
79
- --tags="fix,verification,forseti" \
80
- --priority={原任務 priority} \
81
- --role={原任務 role} \
82
- --scope_paths={原任務 scope_paths}
83
- context 欄位必須包含:
84
- - forseti_evidence: {verdict JSON 完整路徑}
85
- - fix_round: {current_round + 1}
86
- - failure_summary: {level_results failures 摘要}
87
- - original_task_id: TASK_XXX
88
- 3_update_anchor: |
89
- Read-modify-write ansuz_motivational_state.json (graceful degradation):
90
- file: {PROJECT_PATH}/.kenaz/ansuz_motivational_state.json
91
- if file not found → skip silently, continue to next step
92
- match_logic: FIX_task.tags ∩ anchor.source_tags — OR logic (any tag overlap = match)
93
- note: anchor.source_tags must contain domain-specific tags only (e.g. tunnel, pty, synapse).
94
- Generic tags like "fix", "code", "feature" must NOT be in source_tags — they cause all anchors to match.
95
- on_match:
96
- if anchor.resolved === true:
97
- resolved = false
98
- resolved_at = null
99
- incompleteness = 0.3 ← problem recurred; reset base before increment
100
- incompleteness = min(anchor.incompleteness + 0.15, 1.0)
101
- note: resolved anchor starts at 0.3 → +0.15 = 0.45 total
102
- fix_cycle_count = anchor.fix_cycle_count + 1
103
- last_touched = today (ISO8601 date, YYYY-MM-DD)
104
- on_no_match → create new anchor:
105
- concept = FIX task title stripped of '[FIX] ' prefix, truncated to 50 chars
106
- source_tags = FIX task tags (array)
107
- incompleteness = 0.3
108
- fix_cycle_count = 1
109
- last_touched = today (ISO8601 date)
110
- write_back:
111
- update anchors[] with the matched/new anchor
112
- session_count = session_count + 1
113
- last_updated = ISO8601 datetime now
114
- preserve personality_seed unchanged
115
- on IO error / file lock → skip silently, do NOT abort fix_loop
116
- 4_preserve_original: |
117
- Keep the original task open and link the FIX task and failed evidence.
118
- Creating a FIX task does not satisfy the original acceptance criteria.
119
- Only after the FIX is verified, rerun the original required checks and
120
- complete the original through the normal authorized completion lifecycle.
121
- 5_dispatch_fix: |
122
- ⚠️ 立即回到 Phase 8 dispatch FIX 任務,不可停在 backlog
123
- → Phase 8(FIX) → dispatch → Phase 9(FIX) → Forseti 再驗
124
- Only verified tasks may proceed to authorized post-complete archive + git.
125
- escalate_when: |
126
- fix_round >= max_fix_rounds:
127
- ❌ 自動修復已達上限({max_fix_rounds} 輪)
128
- → 停止迴圈,升級給用戶
129
- 輸出:
130
- - 所有 verdict JSON 路徑
131
- - 每輪失敗摘要
132
- - 建議:人工介入或換策略
133
-
134
- # ─────────────────────────────────────────────────────────────────
135
- # Minimal Verification — For tasks that skip Forseti
136
- # ─────────────────────────────────────────────────────────────────
137
-
138
- minimal_verification:
139
- description: |
140
- When task does NOT meet Forseti trigger threshold, run applicable local
141
- checks from the owning package and task acceptance criteria. Compilation,
142
- typechecking, lint and grep do not prove changed runtime behavior.
143
- Record concrete commands, working directories, exit codes and evidence.
144
- If acceptance requires a service or E2E check, it remains required even on
145
- this path; do not waive it because the task was routed to minimal verification.
146
- when: "Forseti trigger_threshold NOT met"
147
- checks:
148
- rust_project: |
149
- if scope_paths contain .rs files:
150
- Resolve the owning Cargo.toml within PROJECT_PATH; run cargo check with
151
- that manifest and relevant tests covering changed behavior.
152
- typescript_project: |
153
- if scope_paths contain .ts or .tsx files:
154
- Resolve the owning package and tsconfig; run its installed typechecker
155
- and relevant behavioral tests. Do not assume the repository root owns
156
- the code or that typechecking alone meets behavioral acceptance criteria.
157
- javascript_project: |
158
- if scope_paths contain .js, .jsx, .mjs or .cjs files:
159
- Resolve the owning package.json, test configuration and concrete tests.
160
- Run the existing configured test runner with the relevant test targets.
161
- For node:test suites, use node --test <explicit test paths>; for Jest,
162
- Vitest or another runner use the installed project runner and its config.
163
- Do not invent an npm test script, install packages automatically, or use
164
- syntax-only checks as behavioral proof. Missing runner/tests → UNVERIFIED
165
- until equivalent executable acceptance evidence exists or tests are added.
166
- documentation_only: |
167
- Only when scope contains no executable code or behavior-bearing config:
168
- Check diff/scope, referenced paths and links, and document consistency.
169
- For YAML policy/config changes, parse the file and check relevant contract
170
- invariants; text checks verify policy consistency, not agent compliance.
171
- Behavior-bearing configuration additionally needs applicable behavior checks.
172
- fallback: |
173
- For other executable artifacts, select the owning toolchain's relevant checks.
174
- If required checks cannot be identified or run, record UNVERIFIED, not PASS.
175
- For mixed scopes, run every applicable branch; do not stop at the first match.
176
- Only optional/not-applicable checks may be skipped, with a recorded reason.
177
- on_FAIL: "→ 同 on_failure 流程(retry / create_fix / escalate)"
178
- on_UNVERIFIED: "Keep task open; report missing required evidence, supplement checks or restore prerequisites; no on_success/complete/archive/merge."
179
- on_PASS: "Only when every required acceptance criterion has passing evidence → on_success → authorized Phase 10."
180
-
181
- # ─────────────────────────────────────────────────────────────────
182
- # Standard Verification Actions
183
- # ─────────────────────────────────────────────────────────────────
184
-
185
- actions:
186
- - "檔案變更符合任務 scope_paths?"
187
- - "git commit 存在?(git log --oneline | grep TASK_XXX)"
188
- - "acceptance_criteria 全部滿足?"
189
- - "交叉比對原始碼 — 不盲信 agent 輸出"
190
- - "kenaz_lsp_callers — 分析變更的影響範圍"
191
- - "無引入 regression?"
192
- - |
193
- DIFF-ISOLATION verification (derived from VC33 session insight):
194
- Run `git diff {BASE_COMMIT}...{TASK_BRANCH} -- {file_path}` per scope_path file
195
- to isolate agent's actual changes from file noise. Use this BEFORE full-file
196
- re-read — diff-based verification is cheaper (O(Δ) vs O(file)) and catches
197
- silent deletions/reverts that grep alone misses. If diff for any requirement-
198
- named file is empty when it should not be → INCOMPLETE → create FIX task.
199
- - |
200
- phantom reconciliation check(若任務 technical_notes 含 phantom_ids):
201
- 1. parse phantom_ids from task YAML technical_notes
202
- 2. for each phantom_id:
203
- check: kenaz_lsp_symbols / Grep 該 symbol 是否已出現在預定檔案
204
- reconciled: 已出現在預定位置
205
- pending: 找不到 → ⚠️ agent 可能未在預定位置寫入代碼
206
- 3. 無 phantom_ids → skipped
207
- note: post-complete.js 已觸發 reindex,reconcile_phantom 應已自動執行
208
-
209
- cognitive_checkpoint:
210
- rule: "驗證完成後,必須判斷是否需要 inscribe。不可跳過此判斷"
211
- check: |
212
- - bug 根因 non-obvious? → inscribe type=fix
213
- - 隱藏 side-effect 或使用限制? → inscribe type=risk
214
- - 非顯然的設計決策? → inscribe type=decision
215
- - 跨 3+ symbol 的概念? → forge Sigil
216
- - 以上都沒有 → 跳過,不為了寫而寫
217
- verify_runes: "agent 寫了 rune → 交叉比對原始碼;不準確的 rune 用 supersedes 取代"
218
- mem0_protocol:
219
- description: "Mem0-style ADD/MERGE/DELETE protocol for session insights (TASK_940)"
220
- trigger: "Before inscribing any rune, execute this protocol"
221
-
222
- # ─── Step 0: Rule-level recall (ansuz_rules.yaml) ───
223
- # Before inscribing a rune, check if a behavioral RULE already covers this insight.
224
- # If a rule exists, rune inscription is redundant — skip or reference the rule instead.
225
- rule_recall:
226
- file: "{PROJECT_PATH}/.kenaz/specialist/ansuz_rules.yaml"
227
- steps:
228
- - |
229
- 0a. READ ansuz_rules.yaml → parse rules[] array
230
- - |
231
- 0b. For each rule where status is "active" or "proposed":
232
- Compare semantically: does this rule already cover the insight you are about to inscribe?
233
- - YES (>70% overlap with active rule) → SKIP inscription entirely.
234
- The rule is authoritative; a rune would be redundant.
235
- - YES (>70% overlap with proposed rule) → SKIP inscription.
236
- Instead, note the rule_id for Phase 11 sessions_observed increment.
237
- - PARTIAL overlap → Proceed to rune inscription, but reference the rule_id
238
- in the rune's related_rune_ids or context field.
239
- - NO overlap → Proceed to standard rune recall (Step 1 below).
240
- - |
241
- 0c. If ansuz_rules.yaml is unreadable or missing → skip rule recall,
242
- proceed to standard rune recall. Do NOT abort.
243
-
244
- # ─── Steps 1-6: Rune-level recall and inscription ───
245
- steps:
246
- - |
247
- 1. RECALL: synapse_recall(query=<insight topic>, limit=5, projectPath=PROJECT_PATH)
248
- Find existing runes on the same symbol or concept.
249
- - |
250
- 2. EVALUATE overlap:
251
- - If existing rune covers >70% of the same insight → MERGE
252
- - If existing rune contradicts the new insight → FLAG for review
253
- - If no relevant runes exist → ADD as new
254
- - If new evidence invalidates an existing rune → DELETE (supersede)
255
- - |
256
- 3. MERGE: synapse_inscribe(... supersedes=<old_rune_id>, related_rune_ids=[<old_rune_id>])
257
- Combine content from both runes. Increment confidence if corroborated.
258
- - |
259
- 4. FLAG contradiction: inscribe new rune with type=risk, content includes
260
- "CONTRADICTION with rune {old_rune_id}: {description}".
261
- Do NOT auto-delete the old rune — let deliberate review decide.
262
- - |
263
- 5. ADD: synapse_inscribe(... confidence >= 0.6) as normal.
264
- - |
265
- 6. DELETE: synapse_inscribe(... supersedes=<invalidated_rune_id>,
266
- content="INVALIDATED: {reason}"). The old rune is excluded from future recall.
267
- rules:
268
- - "Always recall before inscribing — duplicates waste recall bandwidth"
269
- - "Overlap is semantic, not literal — two runes about the same concept count even if worded differently"
270
- - "Rule-level recall (Step 0) takes precedence — if a rule covers the insight, do not create a redundant rune"
271
- - "MEM-LANG-001 applies — all inscribe content in English"
272
- phantom_reconciled: |
273
- parse phantom_ids from task YAML technical_notes
274
- for each phantom_id:
275
- check: kenaz_lsp_symbols / Grep for the symbol at the intended file
276
- reconciled: symbol present at intended location → ✅ verified
277
- pending: symbol not found → ⚠️ agent may not have written code at intended location
278
- no phantom_ids: skipped
279
-
280
- self_reflection_detection:
281
- description: "Detect moments during task execution that warrant a self-model update in Phase 11"
282
- rule: "Only flag when trigger is concrete and evidenced — do not flag speculatively"
283
- triggers:
284
- user_correction:
285
- detect: "User explicitly corrects agent behavior, judgment, or output during this session"
286
- example: "User says 'no, don't do that', overrides agent's decision, or points out a systematic mistake"
287
- flag_type: "user_correction"
288
- decision_surprise:
289
- detect: "Outcome of an agent decision differs significantly from the agent's own expectation"
290
- example: "Agent predicted approach X would work; actual result revealed a flawed assumption"
291
- flag_type: "decision_surprise"
292
- principle_conflict:
293
- detect: "Agent action contradicted a stated principle or known tendency in its own self-model"
294
- example: "Agent skipped cognitive checkpoint despite B-001 naming exactly this blind spot"
295
- flag_type: "principle_conflict"
296
- first_time_encounter:
297
- detect: "Agent encounters a pattern, constraint, or domain it has not handled before"
298
- example: "New cross-language coupling pattern not previously observed in any tendency entry"
299
- flag_type: "first_time_encounter"
300
- new_observation_category:
301
- detect: "Agent observes a behavioral pattern about itself that does not fit any existing tendencies[], blind_spots[], or growth_edges[] category"
302
- example: "Agent notices it consistently front-loads verification steps before writing code — this is a distinct pattern not yet in tendencies"
303
- flag_type: "new_observation_category"
304
- output:
305
- variable: "self_reflection_flags"
306
- schema: "list of {type: string, description: string, evidence: string}"
307
- note: "Empty list if no triggers fire. Non-empty list is passed to Phase 11 self_reflection_protocol."
308
-
309
- outcome_comparison:
310
- description: |
311
- After verification passes, compare Phase 3 predictions with actual outcomes.
312
- Computes surprise_score and valence, updates cumulative accuracy stats,
313
- and injects high-surprise events as outcome neurons into Thalamus.
314
- trigger: "on_success — after task verification passes"
315
- note: "Actual comparison logic lives in post-complete.js (compareOutcomePrediction). Phase 9 triggers it conceptually; post-complete executes it."
316
- metrics:
317
- surprise_score: |
318
- Normalized Jaccard distance between predicted files and actual files:
319
- intersection = predicted ∩ actual
320
- union = predicted ∪ actual
321
- surprise_score = 1 - (|intersection| / |union|)
322
- Range: 0.0 (perfect prediction) to 1.0 (complete miss)
323
- valence: |
324
- positive: actual outcome succeeded and surprise_score < 0.3
325
- negative: actual outcome failed OR surprise_score >= 0.5
326
- neutral: otherwise
327
- accuracy_tracking:
328
- file: "{PROJECT_PATH}/.kenaz/specialist/ansuz_accuracy.json"
329
- schema: |
330
- {
331
- "total_predictions": N,
332
- "accurate_predictions": N, // surprise_score < 0.3
333
- "running_accuracy": 0.0-1.0, // accurate / total
334
- "last_updated": "ISO-8601",
335
- "recent_surprises": [ // last 10 high-surprise events
336
- { "task_id": "TASK_XXX", "surprise_score": 0.8, "valence": "negative", "timestamp": "ISO-8601" }
337
- ]
338
- }
339
- prevention_analysis:
340
- when: "任務 P0/P1,或 fix/regression,或核心路徑"
341
- action: "懶載入 modules/prevention.yaml — 三級預防分析"
342
- skip_when: "P2/P3 新功能、文件/設計任務、typo/style 修復"
343
-
344
- loop_guard:
345
- when: "同一 source/feature_id 的 FIX 任務累計 >= 2 次"
346
- action: "懶載入 modules/loop_guard.yaml — 強制 Socratic Thinking,暫停 dispatch"
347
-
348
- on_success:
349
- - "node {CORE}/.collaboration/core/task-api.js [--project-path {PROJECT_PATH}] complete TASK_XXX"
350
- - |
351
- anchor_decay (graceful degradation):
352
- file: {PROJECT_PATH}/.kenaz/ansuz_motivational_state.json
353
- if file not found → skip silently
354
- match_logic: task.tags ∩ anchor.source_tags — OR logic (any tag overlap = match)
355
- same matching strategy as FIX path (fix_loop.3_update_anchor)
356
- note: anchor.source_tags must contain domain-specific tags only — see fix_loop.3_update_anchor note.
357
- decay: incompleteness = max(anchor.incompleteness - 0.05, 0.0)
358
- write_back:
359
- update matched anchors[]
360
- session_count = session_count + 1
361
- last_updated = ISO8601 datetime now
362
- preserve personality_seed unchanged
363
- on IO error / file lock → skip silently, do NOT abort on_success
364
- - "→ 觸發 prevention_analysis(如符合條件)→ Phase 10"
365
-
366
- on_failure:
367
- analysis:
368
- - "讀 log 找失敗根因"
369
- - "判斷:可重試 | 需補 context | 需建 FIX | 需換策略 | 需升級"
370
- actions:
371
- retry: "重派同任務 — 補充失敗原因和缺失 context"
372
- create_fix_and_dispatch: |
373
- 1. task-api.js create 建立 [FIX] 任務(tags: fix,verification)
374
- 2. Keep the original task open; link the FIX task and failed evidence.
375
- 3. Do not complete/archive the original until the FIX passes and the original
376
- required acceptance checks are rerun successfully through the authorized lifecycle.
377
- 4. ⚠️ 立即回到 Phase 8 dispatch FIX — 不可停在 backlog
378
- change_strategy: "換陣型(如 unit → solo 增加分析深度)"
379
- escalate: "升級給用戶 — 附上已嘗試的方法和失敗原因"
380
- block: "node {CORE}/.collaboration/core/task-api.js --project-path={PROJECT_PATH} move TASK_XXX blocked"
381
- critical_rule: "⚠️ 建完 FIX 後「必須」立即 dispatch。Phase 9 → 建 FIX → Phase 8(FIX) → dispatch → Phase 9(FIX) → ..."
382
-
383
- cli_format:
384
- success: |
385
- ✅ TASK_XXX 驗證通過
386
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
387
- 變更: {檔案清單}
388
- Commit: {commit hash}
389
- 驗收: {N}/{N} 通過
390
- Forseti: {PASS|PARTIAL|SKIPPED}
391
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
392
- failure: |
393
- ❌ TASK_XXX 驗證失敗
394
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
395
- 根因: {分析結果}
396
- Forseti: {FAIL — level_results 摘要}
397
- 行動: {重派/建FIX並dispatch/換策略/升級}
398
- FIX Round: {N}/{max_fix_rounds}
399
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
400
- unverified: |
401
- ⚠️ TASK_XXX 尚未驗證完成 (UNVERIFIED)
402
- Required checks missing: {checks_and_reasons}
403
- Raw Forseti verdict: {verdict_or_not_run}
404
- Next action: {restore_prerequisite_or_supplement_checks}
405
- Task remains open; this is not a successful completion.
406
-
407
- interaction:
408
- type: "auto"
409
- instruction: "自動執行,結果併入 Phase 11。若建 FIX 任務,必須迴圈回 Phase 8 dispatch,不可停在 backlog"
410
-
411
- checklist:
412
- - "acceptance_criteria 全部驗證(逐條核對)"
413
- - "git commit 存在且對應 TASK_XXX"
414
- - "forseti_verification 觸發判斷已完成(觸發 Forseti 或執行 minimal_verification)"
415
- - "cognitive_checkpoint 已判斷(inscribe 或明確跳過)"
416
-
417
- context_hints:
418
- input_from: "phase_8"
419
- key_data: ["dispatched_tasks", "expected_branches"]
420
-
421
- inject:
422
- rules:
423
- - synapse-cognitive-fusion.yaml
424
- specialist: []
@@ -1,92 +0,0 @@
1
- index_version: "1.0"
2
- series: "Bifrost Hook Parity Task Series"
3
- produced_by: TASK_1234
4
- architecture_source: ".formation/bifrost/CGDD_hook_lifecycle.js"
5
-
6
- # ─────────────────────────────────────────────────────────────────
7
- # CRITICAL: CGDD task number labels are WRONG
8
- # ─────────────────────────────────────────────────────────────────
9
- cgdd_number_mismatch: >
10
- CGDD_hook_lifecycle.js was written before backlog was finalized. The task numbers
11
- inside CGDD (TASK_1228 = SessionStart, TASK_1229 = UserPromptSubmit, etc.) do NOT
12
- match actual backlog assignments. Use this index, not the CGDD task labels.
13
-
14
- # ─────────────────────────────────────────────────────────────────
15
- # TASK BRIEFS
16
- # ─────────────────────────────────────────────────────────────────
17
- tasks:
18
- TASK_1228:
19
- brief: ".specialist/Ansuz/specs/brief_TASK_1228_userpromptsubmit.yaml"
20
- event: UserPromptSubmit
21
- file: ".formation/bifrost/session.js"
22
- creates: "dispatchBifrostHook() + normalizeUserPromptSubmit()"
23
- parallel_with: [TASK_1229]
24
- blocks: [TASK_1230, TASK_1231]
25
-
26
- TASK_1229:
27
- brief: ".specialist/Ansuz/specs/brief_TASK_1229_pretooluse_posttooluse.yaml"
28
- events: [PreToolUse, PostToolUse]
29
- file: ".formation/bifrost/openai/relay.js"
30
- creates: "relay.js dispatchBifrostHook() + capturedThreadId + normalizeToolEvent() + 8 call sites"
31
- parallel_with: [TASK_1228, TASK_1230]
32
- blocks: [TASK_1231]
33
-
34
- TASK_1230:
35
- brief: ".specialist/Ansuz/specs/brief_TASK_1230_sessionstart_stop.yaml"
36
- events: [SessionStart, Stop]
37
- file: ".formation/bifrost/session.js"
38
- creates: "normalizeSessionStart() + normalizeStop() + sessionStartedAt + resultCapture + stdout tee"
39
- prerequisite: TASK_1228 # needs dispatchBifrostHook to exist
40
- parallel_with: [TASK_1229]
41
- blocks: [TASK_1231]
42
-
43
- TASK_1231:
44
- brief: ".specialist/Ansuz/specs/brief_TASK_1231_verification.yaml"
45
- role: verification_gate
46
- produces: ".formation/bifrost/VERIFICATION_hook_parity.md"
47
- prerequisites: [TASK_1228, TASK_1229, TASK_1230]
48
- no_code_changes: true
49
-
50
- # ─────────────────────────────────────────────────────────────────
51
- # RECOMMENDED DISPATCH ORDER
52
- # ─────────────────────────────────────────────────────────────────
53
- dispatch_order:
54
- wave_1:
55
- tasks: [TASK_1228, TASK_1229]
56
- note: "TASK_1228 and TASK_1229 touch different files — safe to dispatch in parallel"
57
- wave_2:
58
- tasks: [TASK_1230]
59
- note: "Depends on TASK_1228 (dispatchBifrostHook must exist in session.js)"
60
- wave_3:
61
- tasks: [TASK_1231]
62
- note: "Verification gate — all three implementation tasks must be done first"
63
-
64
- # ─────────────────────────────────────────────────────────────────
65
- # EVENT → FILE OWNERSHIP QUICK REFERENCE
66
- # ─────────────────────────────────────────────────────────────────
67
- event_ownership:
68
- SessionStart:
69
- dispatcher: ".formation/bifrost/session.js::normalizeSessionStart()"
70
- consumer: ".specialist/tools/task-bridge.js::handleHookEvent() → no-op"
71
- UserPromptSubmit:
72
- dispatcher: ".formation/bifrost/session.js::normalizeUserPromptSubmit()"
73
- consumer: ".specialist/tools/task-bridge.js::handleHookEvent() → maybeEmitReminder() [EXISTING]"
74
- PreToolUse:
75
- dispatcher: ".formation/bifrost/openai/relay.js::normalizeToolEvent()"
76
- consumer: ".specialist/tools/task-bridge.js::handleHookEvent() → no-op"
77
- PostToolUse:
78
- dispatcher: ".formation/bifrost/openai/relay.js::normalizeToolEvent()"
79
- consumer: ".specialist/tools/task-bridge.js::handleHookEvent() → createLinked/syncStatus [EXISTING]"
80
- Stop:
81
- dispatcher: ".formation/bifrost/session.js::normalizeStop()"
82
- consumer: ".specialist/tools/task-bridge.js::handleHookEvent() → no-op"
83
-
84
- # ─────────────────────────────────────────────────────────────────
85
- # SHARED UTILITY
86
- # ─────────────────────────────────────────────────────────────────
87
- shared_utility:
88
- dispatchBifrostHook:
89
- exists_in: [session.js, relay.js]
90
- note: "Two separate implementations — same pattern, different require paths. session.js version created by TASK_1228. relay.js version created by TASK_1229."
91
- session_require: "path.resolve(__dirname, '../..', '.specialist/tools/task-bridge.js')"
92
- relay_require: "path.resolve(__dirname, '../../..', '.specialist/tools/task-bridge.js')"