kenaz 0.3.18 → 0.3.20

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 (329) hide show
  1. package/core/.claude/commands/agent-worker.md +1 -1
  2. package/core/.claude/commands/architect.md +1 -2
  3. package/core/.claude/commands/spec.md +1 -1
  4. package/core/.claude/commands//347/224/242/345/223/201.md +1 -1
  5. package/core/.claude/hooks/__tests__/task-1977-dedupe-guard.test.js +8 -8
  6. package/core/.claude/skills/architect_agent/SKILL.md +11 -92
  7. package/core/.claude/skills/assessment_agent/SKILL.md +0 -1
  8. package/core/.claude/skills/backend_engineer/SKILL.md +3 -6
  9. package/core/.claude/skills/code_reviewer/SKILL.md +1 -1
  10. package/core/.claude/skills/code_reviewer/patterns.yaml +1 -1
  11. package/core/.claude/skills/designer/SKILL.md +3 -6
  12. package/core/.claude/skills/dev_agent/SKILL.md +30 -491
  13. package/core/.claude/skills/developer/SKILL.md +3 -6
  14. package/core/.claude/skills/feature_agent/SKILL.md +3 -17
  15. package/core/.claude/skills/product_manager/SKILL.md +29 -1064
  16. package/core/.claude/skills/qa_engineer/SKILL.md +12 -17
  17. package/core/.claude/skills/spec_optimizer/SKILL.md +25 -275
  18. package/core/.claude/skills/sre_agent/SKILL.md +3 -6
  19. package/core/.collaboration/README.md +2 -3
  20. package/core/.collaboration/core/task-api.js +5 -138
  21. package/core/.collaboration/docs/CLI.md +0 -2
  22. package/core/.failure/INDEX.yaml +6 -40
  23. package/core/.failure/agent-execution/FAIL-013-search-cwd-drift-and-case-mismatch.yaml +1 -1
  24. package/core/.failure/tools/README.md +9 -227
  25. package/core/.formation/bifrost/launch.js +1 -6
  26. package/core/.formation/bifrost/launch.test.js +1 -1
  27. package/core/.formation/bifrost/shared/ansuz-boot-policy.js +3 -3
  28. package/core/.formation/bifrost/shared/ansuz-boot-policy.test.js +1 -2
  29. package/core/.formation/tools/__tests__/arms.test.js +41 -0
  30. package/core/.formation/tools/__tests__/diagnose-bug.test.js +10 -0
  31. package/core/.formation/tools/__tests__/m1-hmap-convid.test.js +1 -124
  32. package/core/.formation/tools/arms.js +48 -0
  33. package/core/.formation/tools/dispatch.js +24 -15
  34. package/core/.formation/tools/kenaz-stats.js +32 -8
  35. package/core/.formation/tools/kenaz-stats.test.js +15 -2
  36. package/core/.formation/tools/loader.js +17 -140
  37. package/core/.formation/tools/post-complete.js +0 -31
  38. package/core/.formation/tools/prompt.js +16 -1
  39. package/core/.formation/tools/prompt.test.js +20 -0
  40. package/core/.rule/INDEX.yaml +0 -18
  41. package/core/.rule/general/agent-workflow.yaml +14 -164
  42. package/core/.rule/general/project-self-containment.yaml +8 -19
  43. package/core/.rule/general/rust-verify-target.yaml +6 -5
  44. package/core/.rule/general/synapse-code-intelligence.yaml +3 -3
  45. package/core/.specialist/Amelia/capability.yaml +12 -12
  46. package/core/.specialist/Amelia/workflow.yaml +2 -2
  47. package/core/.specialist/Ansuz/SYSTEM_DOC.md +20 -578
  48. package/core/.specialist/Ansuz/cognitive_principles.yaml +2 -3
  49. package/core/.specialist/Ansuz/concepts/boot_rules_summary.yaml +0 -1
  50. package/core/.specialist/Ansuz/concepts/deep_knowledge_pointers.yaml +1 -2
  51. package/core/.specialist/Ansuz/core.yaml +6 -108
  52. package/core/.specialist/Ansuz/guards/lesson_guards.yaml +0 -3
  53. package/core/.specialist/Ansuz/identity_contract.yaml +0 -1
  54. package/core/.specialist/Ansuz/knowledge.yaml +0 -4
  55. package/core/.specialist/Ansuz/rule.yaml +0 -1
  56. package/core/.specialist/Ansuz/tools/handoff-session-identity.test.js +6 -150
  57. package/core/.specialist/tests/runtime-discovery/README.md +1 -1
  58. package/core/.specialist/tools/__tests__/task-2374-usage-counter.test.js +1 -12
  59. package/core/.specialist/tools/ansuz-boot-fast.js +7 -4
  60. package/core/.specialist/tools/ansuz-boot-fast.test.js +10 -3
  61. package/core/.specialist/tools/prompt-files.test.js +1 -0
  62. package/core/.specialist/tools/task-bridge.js +1 -66
  63. package/core/.system/README.md +11 -552
  64. package/core/.system/collaboration/README.md +10 -174
  65. package/core/CLAUDE.md +1 -6
  66. package/core/KENAZ_CORE_VERSION +1 -1
  67. package/core/dev/scripts/js-yaml-resolution.test.js +1 -1
  68. package/core/dev/scripts/peer-identity-e2e.js +402 -0
  69. package/core/dev/scripts/peer-identity-e2e.md +47 -0
  70. package/core/dev/scripts/relay-admin.js +94 -0
  71. package/core/dev/scripts/relay-admin.test.js +131 -0
  72. package/core/dev/scripts/run-rust-tests.js +9 -45
  73. package/core/dev/scripts/rust-verify-worktree.js +4 -4
  74. package/core/dev/scripts/verify-target-dir.js +6 -6
  75. package/core/plugins/kenaz/INVENTORY.md +8 -8
  76. package/core/plugins/kenaz/README.md +10 -0
  77. package/core/plugins/kenaz/commands/architect.md +1 -2
  78. package/core/plugins/kenaz/commands/spec.md +1 -1
  79. package/core/plugins/kenaz/commands//347/224/242/345/223/201.md +1 -1
  80. package/core/plugins/kenaz/guidance.md +1 -1
  81. package/core/plugins/kenaz/hooks/kenaz-hook.js +2 -1
  82. package/core/plugins/kenaz/hooks/sdk-gate.js +9 -0
  83. package/core/plugins/kenaz/scripts/kenaz.test.js +15 -3
  84. package/core/plugins/kenaz/scripts/sync.js +1 -1
  85. package/core/plugins/kenaz/scripts/ygg.js +8 -0
  86. package/core/plugins/kenaz/scripts/ygg.test.js +72 -0
  87. package/core/plugins/kenaz/skills/architect_agent/SKILL.md +11 -92
  88. package/core/plugins/kenaz/skills/assessment_agent/SKILL.md +0 -1
  89. package/core/plugins/kenaz/skills/backend_engineer/SKILL.md +3 -6
  90. package/core/plugins/kenaz/skills/code_reviewer/SKILL.md +1 -1
  91. package/core/plugins/kenaz/skills/code_reviewer/patterns.yaml +1 -1
  92. package/core/plugins/kenaz/skills/designer/SKILL.md +3 -6
  93. package/core/plugins/kenaz/skills/dev_agent/SKILL.md +30 -491
  94. package/core/plugins/kenaz/skills/developer/SKILL.md +3 -6
  95. package/core/plugins/kenaz/skills/feature_agent/SKILL.md +3 -17
  96. package/core/plugins/kenaz/skills/product_manager/SKILL.md +29 -1064
  97. package/core/plugins/kenaz/skills/qa_engineer/SKILL.md +12 -17
  98. package/core/plugins/kenaz/skills/spec_optimizer/SKILL.md +25 -275
  99. package/core/plugins/kenaz/skills/sre_agent/SKILL.md +3 -6
  100. package/core/plugins/kenaz-peer/hooks/register.test.ts +32 -0
  101. package/core/plugins/kenaz-peer/hooks/register.ts +9 -0
  102. package/package.json +6 -6
  103. package/core/.claude/commands/archive.md +0 -24
  104. package/core/.claude/commands/init.md +0 -112
  105. package/core/.claude/commands/legacy_dev.md +0 -18
  106. package/core/.claude/commands/product-review.md +0 -131
  107. package/core/.claude/commands/strategy.md +0 -141
  108. package/core/.claude/commands/sunny.md +0 -1
  109. package/core/.claude/commands//347/224/242/345/223/201/346/252/242/350/246/226.md +0 -129
  110. package/core/.claude/commands//351/200/262/345/272/246.md +0 -15
  111. package/core/.claude/hooks/__tests__/substrate.test.js +0 -122
  112. package/core/.claude/hooks/_substrate-paths.js +0 -95
  113. package/core/.claude/hooks/context-check.js +0 -51
  114. package/core/.claude/hooks/fatigue-check.js +0 -52
  115. package/core/.claude/hooks/handoff-snapshot-on-commit.js +0 -154
  116. package/core/.claude/hooks/handoff-snapshot-on-question.js +0 -158
  117. package/core/.claude/hooks/handoff-staleness.js +0 -197
  118. package/core/.claude/hooks/jev-thalamus-context.js +0 -17
  119. package/core/.claude/hooks/jev-thalamus-context.test.js +0 -41
  120. package/core/.claude/hooks/lease-release.js +0 -119
  121. package/core/.claude/hooks/lease-touch.js +0 -96
  122. package/core/.claude/hooks/reflex-feedback.js +0 -5
  123. package/core/.claude/hooks/session-init.ps1 +0 -49
  124. package/core/.claude/hooks/sound-event.js +0 -70
  125. package/core/.claude/hooks/sound-event.sh +0 -37
  126. package/core/.claude/hooks/stream-delta.js +0 -169
  127. package/core/.claude/no-hooks.settings.json +0 -3
  128. package/core/.claude/skills/legacy_dev/SKILL.md +0 -202
  129. package/core/.claude/skills/sunny/SKILL.md +0 -74
  130. package/core/.collaboration/cli/commands/assign.js +0 -39
  131. package/core/.collaboration/cli/commands/claim.js +0 -33
  132. package/core/.collaboration/cli/commands/complete.js +0 -44
  133. package/core/.collaboration/cli/commands/create.js +0 -110
  134. package/core/.collaboration/cli/commands/get.js +0 -83
  135. package/core/.collaboration/cli/commands/index.js +0 -52
  136. package/core/.collaboration/cli/commands/list.js +0 -51
  137. package/core/.collaboration/cli/commands/lock.js +0 -45
  138. package/core/.collaboration/cli/commands/rebuild.js +0 -39
  139. package/core/.collaboration/cli/commands/search.js +0 -61
  140. package/core/.collaboration/cli/commands/stats.js +0 -61
  141. package/core/.collaboration/cli/commands/transfer.js +0 -41
  142. package/core/.collaboration/cli/commands/unlock.js +0 -48
  143. package/core/.collaboration/cli/formatters/help-formatter.js +0 -70
  144. package/core/.collaboration/cli/formatters/index.js +0 -7
  145. package/core/.collaboration/cli/task-cli.js +0 -46
  146. package/core/.collaboration/cli/utils/arg-parser.js +0 -74
  147. package/core/.collaboration/cli/utils/git-user.js +0 -25
  148. package/core/.collaboration/cli/utils/index.js +0 -9
  149. package/core/.collaboration/cli/utils/output.js +0 -10
  150. package/core/.collaboration/config/default.yaml +0 -189
  151. package/core/.collaboration/core/conflict-resolver.js +0 -461
  152. package/core/.collaboration/core/conflict-resolver.test.js +0 -389
  153. package/core/.collaboration/core/migrate-legacy.js +0 -260
  154. package/core/.collaboration/docs/API.md +0 -787
  155. package/core/.collaboration/docs/ARCHITECTURE.md +0 -596
  156. package/core/.collaboration/docs/FAQ.md +0 -695
  157. package/core/.collaboration/docs/MIGRATION.md +0 -804
  158. package/core/.collaboration/docs/examples/README.md +0 -320
  159. package/core/.collaboration/docs/examples/advanced-queries.js +0 -261
  160. package/core/.collaboration/docs/examples/basic-usage.js +0 -184
  161. package/core/.collaboration/docs/examples/team-workflow.js +0 -352
  162. package/core/.failure/agent-execution/FAIL-001-agent-no-output.yaml +0 -391
  163. package/core/.failure/agent-execution/FAIL-007-pm-lead-wrong-team-invocation.yaml +0 -0
  164. package/core/.failure/agent-execution/FAIL-010-phase0-poem-format-skipped.yaml +0 -28
  165. package/core/.failure/agent-execution/FAIL-010-skipping-cognitive-checkpoint-after-verification.yaml +0 -59
  166. package/core/.failure/agent-execution/FAIL-012-grep-shortcut-during-investigation.yaml +0 -85
  167. package/core/.failure/architecture/FAIL-006-python-version-compatibility.yaml +0 -445
  168. package/core/.failure/pipeline/FAIL-003-queue-pollution.yaml +0 -335
  169. package/core/.failure/pipeline/README.md +0 -95
  170. package/core/.failure/retired/FAIL-009-skipping-synapse-pulse-before-code-change.yaml +0 -49
  171. package/core/.failure/tools/USAGE_GUIDE.md +0 -323
  172. package/core/.failure/tools/check_failures.ps1 +0 -387
  173. package/core/.failure/tools/log_failure.ps1 +0 -474
  174. package/core/.formation/.episode-input.json +0 -10
  175. package/core/.formation/.merge-lock +0 -1
  176. package/core/.formation/lead.yaml +0 -118
  177. package/core/.formation/legacy.bak/designer.yaml +0 -57
  178. package/core/.formation/legacy.bak/pm.yaml +0 -57
  179. package/core/.formation/legacy.bak/qa.yaml +0 -57
  180. package/core/.formation/legacy.bak/review.yaml +0 -62
  181. package/core/.formation/legacy.bak/scheduler.yaml +0 -129
  182. package/core/.formation/legacy.bak/sre.yaml +0 -57
  183. package/core/.formation/role-map.yaml +0 -274
  184. package/core/.formation/roles/_shared/modules/code_review.yaml +0 -98
  185. package/core/.formation/roles/_shared/modules/security.yaml +0 -103
  186. package/core/.formation/roles/_shared/modules/testing.yaml +0 -14
  187. package/core/.formation/roles/backend/role.yaml +0 -93
  188. package/core/.formation/roles/code_reviewer/role.yaml +0 -102
  189. package/core/.formation/roles/database_optimizer/role.yaml +0 -107
  190. package/core/.formation/roles/designer/role.yaml +0 -66
  191. package/core/.formation/roles/developer/role.yaml +0 -75
  192. package/core/.formation/roles/frontend/role.yaml +0 -134
  193. package/core/.formation/roles/incident_response/role.yaml +0 -89
  194. package/core/.formation/roles/qa/role.yaml +0 -89
  195. package/core/.formation/roles/security/role.yaml +0 -87
  196. package/core/.formation/roles/sre/role.yaml +0 -66
  197. package/core/.formation/skills/coordinator.yaml +0 -52
  198. package/core/.formation/solo/diagnosis.yaml +0 -78
  199. package/core/.formation/solo/strategy.yaml +0 -121
  200. package/core/.formation/tests/hello.txt +0 -2
  201. package/core/.formation/tools/coordinator.js +0 -350
  202. package/core/.formation/tools/jev-correction.js +0 -214
  203. package/core/.formation/tools/jev-correction.test.js +0 -178
  204. package/core/.formation/tools/log-reader.js +0 -232
  205. package/core/.formation/tools/revert-daemon-state.js +0 -162
  206. package/core/.formation/tools/test-drift.js +0 -148
  207. package/core/.formation/unit/heimdall.yaml +0 -96
  208. package/core/.formation/unit/plan.yaml +0 -67
  209. package/core/.formation/unit/think.yaml +0 -58
  210. package/core/.kenaz/MUNINN_SNAPSHOT9_EPISODE.json +0 -32
  211. package/core/.kenaz/MUNINN_SNAPSHOT9_RUNE.json +0 -23
  212. package/core/.kenaz/MUNINN_SNAPSHOT9_SUMMARY.md +0 -89
  213. package/core/.kenaz/ash_TASK_1428-20260507.json +0 -14
  214. package/core/.kenaz/muninn_episode_write.ps1 +0 -17
  215. package/core/.kenaz/muninn_snapshot11_rune_candidates.md +0 -63
  216. package/core/.kenaz/muninn_snapshot1_rune_candidates.md +0 -49
  217. package/core/.kenaz/runes_TASK_1428.json +0 -57
  218. package/core/.kenaz/tmp_heimdall_proposal_8d3e392.json +0 -13
  219. package/core/.kenaz/tmp_props.json +0 -1
  220. package/core/.kenaz/tmp_sounddrop_t1_prompt.txt +0 -371
  221. package/core/.rule/MECHANIZED.md +0 -61
  222. package/core/.rule/general/cortex-memory-recall.yaml +0 -446
  223. package/core/.rule/general/pipeline.yaml +0 -246
  224. package/core/.rule/general/sunny-access-control.yaml +0 -60
  225. package/core/.rule/general/system-invariants.yaml +0 -231
  226. package/core/.rule/pipeline/PPL-002-completed-task-archival.yaml +0 -528
  227. package/core/.rule/pipeline/auto-update.yaml +0 -282
  228. package/core/.rule/pipeline/task-execution.yaml +0 -365
  229. package/core/.specialist/Ansuz/concepts/phase_protocol.yaml +0 -65
  230. package/core/.specialist/Ansuz/experiments/boot_ablation_replay.js +0 -197
  231. package/core/.specialist/Ansuz/tools/bootstrap-anchors.js +0 -289
  232. package/core/.specialist/Ansuz/workflow.yaml +0 -1225
  233. package/core/.specialist/experiments/rg_benchmark.js +0 -523
  234. package/core/.specialist/experiments/rg_benchmark_results.json +0 -27
  235. package/core/.specialist/tools/jev-optional-context.js +0 -107
  236. package/core/.specialist/tools/jev-optional-context.test.js +0 -152
  237. package/core/.specialist/tools/memory-action-log.js +0 -839
  238. package/core/.specialist/tools/phase-gate.js +0 -3534
  239. package/core/.specialist/tools/phase-gate.test.js +0 -85
  240. package/core/.specialist/tools/precompute-runner.js +0 -444
  241. package/core/.specialist/tools/rule-engine.js +0 -621
  242. package/core/.specialist/tools/task-bridge-jev.test.js +0 -170
  243. package/core/.synapse/memory-shared.json.sync +0 -1
  244. package/core/.system/agent-skills/README.md +0 -724
  245. package/core/.system/cli-tools/README.md +0 -724
  246. package/core/.system/cortex/MODULES.md +0 -1046
  247. package/core/.system/dashboard/FRONTEND.md +0 -812
  248. package/core/.system/dashboard/README.md +0 -737
  249. package/core/.system/failure/README.md +0 -723
  250. package/core/.system/formation/LEGACY_SKILLS.md +0 -974
  251. package/core/.system/formation/POST_COMPLETE.md +0 -602
  252. package/core/.system/formation/README.md +0 -1094
  253. package/core/.system/formation/TOOLS_REFERENCE.md +0 -1145
  254. package/core/.system/kenaz/README.md +0 -787
  255. package/core/.system/memory/README.md +0 -719
  256. package/core/.system/pipeline/README.md +0 -712
  257. package/core/.system/rule/README.md +0 -794
  258. package/core/.system/sunny/README.md +0 -476
  259. package/core/.system/sunny/RULES.json +0 -89
  260. package/core/.system/sunny/knowledge/INDEX.md +0 -37
  261. package/core/.system/sunny/knowledge/agent-teams-api.md +0 -0
  262. package/core/.system/sunny/knowledge/ansuz-specialist.md +0 -500
  263. package/core/.system/sunny/knowledge/claude-cli-spawn.md +0 -177
  264. package/core/.system/sunny/knowledge/collaboration-api.md +0 -925
  265. package/core/.system/sunny/teammates/README.md +0 -107
  266. package/core/.system/sunny/teammates/how_to_use.yaml +0 -101
  267. package/core/.system/sunny/teammates/tools/headless/launcher.js +0 -318
  268. package/core/.system/sunny/teammates/tools/powershell/launcher.js +0 -241
  269. package/core/.system/sunny/teammates/tools/powershell/start.bat +0 -50
  270. package/core/.system/sunny/teammates/tools/utils/env.js +0 -96
  271. package/core/.system/sunny/teammates/tools/utils/format-output.js +0 -329
  272. package/core/.system/sunny/tools.json +0 -101
  273. package/core/dev/scripts/cleanup-queue.js +0 -184
  274. package/core/dev/scripts/cleanup_queue.js +0 -86
  275. package/core/dev/scripts/legacy/README.md +0 -39
  276. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +0 -536
  277. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +0 -1978
  278. package/core/dev/scripts/matrix/CLI_README.md +0 -214
  279. package/core/dev/scripts/matrix/README.md +0 -310
  280. package/core/dev/scripts/matrix/package-lock.json +0 -4266
  281. package/core/dev/scripts/matrix/package.json +0 -55
  282. package/core/dev/scripts/matrix/src/abbreviations.ts +0 -295
  283. package/core/dev/scripts/matrix/src/cli/commands/convert.ts +0 -211
  284. package/core/dev/scripts/matrix/src/cli/commands/create.ts +0 -95
  285. package/core/dev/scripts/matrix/src/cli/commands/delete.ts +0 -102
  286. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +0 -140
  287. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +0 -173
  288. package/core/dev/scripts/matrix/src/cli/commands/query.ts +0 -261
  289. package/core/dev/scripts/matrix/src/cli/commands/read.ts +0 -77
  290. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +0 -168
  291. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +0 -126
  292. package/core/dev/scripts/matrix/src/cli/commands/update.ts +0 -147
  293. package/core/dev/scripts/matrix/src/cli/commands/validate.ts +0 -275
  294. package/core/dev/scripts/matrix/src/cli/index.ts +0 -350
  295. package/core/dev/scripts/matrix/src/cli/utils/file-handler.ts +0 -72
  296. package/core/dev/scripts/matrix/src/cli/utils/logger.ts +0 -65
  297. package/core/dev/scripts/matrix/src/index.ts +0 -62
  298. package/core/dev/scripts/matrix/src/indexer/tag-indexer.ts +0 -165
  299. package/core/dev/scripts/matrix/src/parser.ts +0 -281
  300. package/core/dev/scripts/matrix/src/serializer.ts +0 -151
  301. package/core/dev/scripts/matrix/src/validator.ts +0 -301
  302. package/core/dev/scripts/matrix/tests/abbreviations.test.ts +0 -122
  303. package/core/dev/scripts/matrix/tests/cli.test.ts +0 -177
  304. package/core/dev/scripts/matrix/tests/convert.test.ts +0 -143
  305. package/core/dev/scripts/matrix/tests/parser.test.ts +0 -203
  306. package/core/dev/scripts/matrix/tests/query.test.ts +0 -85
  307. package/core/dev/scripts/matrix/tests/serializer.test.ts +0 -197
  308. package/core/dev/scripts/matrix/tests/validate.test.ts +0 -141
  309. package/core/dev/scripts/matrix/tests/validator.test.ts +0 -167
  310. package/core/dev/scripts/matrix/tsconfig.json +0 -20
  311. package/core/dev/scripts/matrix/types/index.d.ts +0 -111
  312. package/core/dev/scripts/matrix/types/index.d.ts.map +0 -1
  313. package/core/dev/scripts/matrix/types/index.js +0 -8
  314. package/core/dev/scripts/matrix/types/index.js.map +0 -1
  315. package/core/dev/scripts/matrix/types/index.ts +0 -124
  316. package/core/dev/scripts/memory-usage-report.js +0 -152
  317. package/core/dev/scripts/probe/ansuz-scaffold-ablation.js +0 -579
  318. package/core/dev/scripts/probe/ansuz-scaffold-ablation.test.js +0 -244
  319. package/core/dev/scripts/probe/hook-latency-probe.js +0 -315
  320. package/core/dev/scripts/probe/hook-latency-probe.test.js +0 -105
  321. package/core/dev/scripts/probe/prediction-signal-auc.js +0 -483
  322. package/core/dev/scripts/probe/prediction-signal-auc.test.js +0 -200
  323. package/core/dev/scripts/test-pty-ws-tunnel.js +0 -229
  324. package/core/dev/scripts/validate_pipeline.js +0 -197
  325. package/core/dev/spikes/task2145-evidence-20261004/backend-log-excerpt.txt +0 -56
  326. package/core/dev/spikes/task2145-evidence-20261004/graph.shadow +0 -0
  327. package/core/dev/spikes/task2145-evidence-20261004/graph.wal +0 -0
  328. package/core/dev/spikes/task2145-evidence-20261004/graph_corrupt_suspect.marker +0 -1
  329. package/core/plugins/kenaz/commands/strategy.md +0 -141
@@ -1,804 +0,0 @@
1
- # .collaboration 遷移指南
2
-
3
- 從舊的 `dev/pipeline/` 任務系統遷移到新的 `.collaboration` 系統的完整指南。
4
-
5
- ## 目錄
6
-
7
- - [為什麼要遷移](#為什麼要遷移)
8
- - [遷移前準備](#遷移前準備)
9
- - [遷移步驟](#遷移步驟)
10
- - [遷移工具](#遷移工具)
11
- - [驗證遷移](#驗證遷移)
12
- - [回滾計劃](#回滾計劃)
13
- - [常見問題](#常見問題)
14
- - [最佳實踐](#最佳實踐)
15
-
16
- ---
17
-
18
- ## 為什麼要遷移
19
-
20
- ### 舊系統的限制
21
-
22
- | 問題 | 舊系統 (dev/pipeline/) | 新系統 (.collaboration/) |
23
- |------|----------------------|-------------------------|
24
- | **Git 衝突** | 頻繁發生(單一 JSON 文件) | 幾乎無衝突(原子文件) |
25
- | **多用戶協作** | 困難(鎖定機制不完善) | 順暢(樂觀鎖定 + 版本號) |
26
- | **任務 ID** | 遞增數字(易衝突) | UUID(全局唯一) |
27
- | **索引效率** | 需要載入整個文件 | JSONL 索引(快速查詢) |
28
- | **擴展性** | 單一文件有大小限制 | 可無限擴展(扁平化存儲) |
29
- | **可移植性** | 相對路徑依賴 | 完全可移植(Git 友好) |
30
-
31
- ---
32
-
33
- ### 新系統的優勢
34
-
35
- - ✅ **原子文件結構** - 一個任務一個檔案,最小化 Git 衝突
36
- - ✅ **UUID 任務 ID** - 全局唯一,可排序,支援分散式協作
37
- - ✅ **JSONL 索引** - Append-only 格式,Git 自動合併友好
38
- - ✅ **樂觀鎖定** - 版本號衝突偵測,無需中央伺服器
39
- - ✅ **完整用戶追蹤** - 建立者、分配者、執行者、協作者
40
- - ✅ **統一 API** - 相容舊系統,支援漸進式遷移
41
-
42
- ---
43
-
44
- ## 遷移前準備
45
-
46
- ### 1. 備份舊系統資料
47
-
48
- ```bash
49
- # 建立備份目錄
50
- mkdir -p .migration/backup/$(date +%Y%m%d)
51
-
52
- # 備份 TASK_QUEUE.json
53
- cp dev/pipeline/TASK_QUEUE.json .migration/backup/$(date +%Y%m%d)/
54
-
55
- # 備份已完成任務
56
- cp dev/pipeline/completed/*.yaml .migration/backup/$(date +%Y%m%d)/ 2>/dev/null || true
57
-
58
- # 備份記憶檔案
59
- cp .memory/COMPLETED_TASKS.json .migration/backup/$(date +%Y%m%d)/ 2>/dev/null || true
60
-
61
- echo "✅ 備份完成:.migration/backup/$(date +%Y%m%d)/"
62
- ```
63
-
64
- ---
65
-
66
- ### 2. 檢查 Git 狀態
67
-
68
- ```bash
69
- # 確保工作區乾淨
70
- git status
71
-
72
- # 如果有未提交的變更,先提交
73
- git add .
74
- git commit -m "chore: 遷移前的檢查點"
75
- git push origin main
76
-
77
- # 建立遷移分支(建議)
78
- git checkout -b migration/collaboration-system
79
- ```
80
-
81
- ---
82
-
83
- ### 3. 安裝必要工具
84
-
85
- ```bash
86
- # 檢查 Node.js 版本(需要 >= 14)
87
- node --version
88
-
89
- # 測試 CLI 工具
90
- node .collaboration/cli/task-cli.js --help
91
-
92
- # 測試 API
93
- node -e "
94
- const { TaskAPI } = require('./.collaboration/core/task-api.js');
95
- const api = new TaskAPI();
96
- console.log('✅ API 載入成功');
97
- "
98
- ```
99
-
100
- ---
101
-
102
- ## 遷移步驟
103
-
104
- ### 步驟 1:分析現有任務
105
-
106
- ```bash
107
- # 統計任務數量
108
- echo "舊系統任務統計:"
109
- node -e "
110
- const fs = require('fs');
111
- const data = JSON.parse(fs.readFileSync('dev/pipeline/TASK_QUEUE.json', 'utf8'));
112
- console.log(\`總任務數: \${data.tasks.length}\`);
113
- console.log(\`Pending: \${data.tasks.filter(t => t.status === 'pending').length}\`);
114
- console.log(\`In Progress: \${data.tasks.filter(t => t.status === 'in_progress').length}\`);
115
- console.log(\`Completed: \${data.tasks.filter(t => t.status === 'completed').length}\`);
116
- "
117
- ```
118
-
119
- ---
120
-
121
- ### 步驟 2:遷移任務資料
122
-
123
- **選項 A:使用自動遷移腳本(推薦)**
124
-
125
- ```javascript
126
- // .collaboration/tools/migrate.js
127
- const fs = require('fs').promises;
128
- const path = require('path');
129
- const { TaskAPI } = require('../core/task-api.js');
130
- const { generateTaskID } = require('../core/id-generator.js');
131
-
132
- async function migrateFromOldSystem() {
133
- const api = new TaskAPI();
134
-
135
- // 讀取舊系統任務
136
- const oldQueue = JSON.parse(
137
- await fs.readFile('dev/pipeline/TASK_QUEUE.json', 'utf8')
138
- );
139
-
140
- console.log(`開始遷移 ${oldQueue.tasks.length} 個任務...`);
141
-
142
- const idMapping = {}; // 舊 ID → 新 ID 映射
143
-
144
- for (const oldTask of oldQueue.tasks) {
145
- // 生成新的 UUID
146
- const newId = generateTaskID();
147
- idMapping[oldTask.id] = newId;
148
-
149
- // 轉換任務格式
150
- const newTask = {
151
- id: newId,
152
- title: oldTask.title,
153
- description: oldTask.description || oldTask.requirements?.join('\n') || '',
154
- status: oldTask.status,
155
- priority: oldTask.priority,
156
- estimated_hours: oldTask.estimated_hours,
157
- acceptance_criteria: oldTask.acceptance_criteria || [],
158
- scope: oldTask.scope_paths || [],
159
- dependencies: oldTask.dependencies || [], // 稍後更新為新 ID
160
- created_by: {
161
- name: oldTask.created_by || 'System',
162
- git_user: 'system',
163
- timestamp: oldTask.created_at || new Date().toISOString()
164
- },
165
- assigned_to: oldTask.assigned_to ? {
166
- name: oldTask.assigned_to,
167
- git_user: oldTask.assigned_to.toLowerCase(),
168
- timestamp: new Date().toISOString()
169
- } : null,
170
- last_modified_by: {
171
- name: 'Migration Script',
172
- git_user: 'system',
173
- timestamp: new Date().toISOString()
174
- },
175
- collaborators: [],
176
- executed_by: oldTask.status === 'completed' ? {
177
- name: oldTask.executed_by || 'Unknown',
178
- git_user: 'unknown',
179
- timestamp: oldTask.completed_at || new Date().toISOString()
180
- } : null,
181
- _version: 1,
182
- _migration: {
183
- old_id: oldTask.id,
184
- migrated_at: new Date().toISOString(),
185
- source: 'dev/pipeline/TASK_QUEUE.json'
186
- }
187
- };
188
-
189
- // 寫入新系統
190
- const userDir = path.join('.collaboration/tasks/db/all');
191
- await fs.mkdir(userDir, { recursive: true });
192
-
193
- const taskPath = path.join(userDir, `${newId}.json`);
194
- await fs.writeFile(taskPath, JSON.stringify(newTask, null, 2));
195
-
196
- console.log(`✅ 遷移: ${oldTask.id} → ${newId}`);
197
- }
198
-
199
- // 更新依賴關係(使用新 ID)
200
- console.log('\n更新依賴關係...');
201
- for (const [oldId, newId] of Object.entries(idMapping)) {
202
- const taskPath = path.join('.collaboration/tasks/db/all', `${newId}.json`);
203
- const task = JSON.parse(await fs.readFile(taskPath, 'utf8'));
204
-
205
- if (task.dependencies && task.dependencies.length > 0) {
206
- task.dependencies = task.dependencies.map(depId => idMapping[depId] || depId);
207
- await fs.writeFile(taskPath, JSON.stringify(task, null, 2));
208
- }
209
- }
210
-
211
- // 儲存 ID 映射表
212
- await fs.writeFile(
213
- '.migration/id_mapping.json',
214
- JSON.stringify(idMapping, null, 2)
215
- );
216
-
217
- console.log(`\n✅ 遷移完成!`);
218
- console.log(`ID 映射表已儲存: .migration/id_mapping.json`);
219
-
220
- return idMapping;
221
- }
222
-
223
- // 執行遷移
224
- migrateFromOldSystem().catch(console.error);
225
- ```
226
-
227
- **執行遷移**:
228
- ```bash
229
- # 執行遷移腳本
230
- node .collaboration/tools/migrate.js
231
-
232
- # 輸出範例:
233
- # 開始遷移 10 個任務...
234
- # ✅ 遷移: TASK_147 → TASK_5KPEES80F922
235
- # ✅ 遷移: TASK_148 → TASK_5KPEES80HT6S
236
- # ...
237
- # ✅ 遷移完成!
238
- # ID 映射表已儲存: .migration/id_mapping.json
239
- ```
240
-
241
- ---
242
-
243
- **選項 B:手動遷移(小規模)**
244
-
245
- 如果只有少量任務(< 10 個),可以手動遷移:
246
-
247
- ```bash
248
- # 1. 為每個舊任務建立新任務
249
- node .collaboration/cli/task-cli.js create \
250
- --title "實作登入功能" \
251
- --description "從 TASK_147 遷移" \
252
- --priority P1
253
-
254
- # 2. 記錄 ID 映射
255
- echo "TASK_147 → TASK_5KPEES80F922" >> .migration/manual_mapping.txt
256
- ```
257
-
258
- ---
259
-
260
- ### 步驟 3:重建索引
261
-
262
- ```bash
263
- # 重建所有索引
264
- node .collaboration/cli/task-cli.js rebuild
265
-
266
- # 輸出範例:
267
- # 重建索引中...
268
- # ✅ 索引重建完成
269
- # 總任務數: 10
270
- # 狀態分類: 4
271
- # 用戶分類: 3
272
- # 優先級分類: 3
273
- ```
274
-
275
- ---
276
-
277
- ### 步驟 4:驗證遷移結果
278
-
279
- ```bash
280
- # 比較任務數量
281
- echo "舊系統:"
282
- node -e "
283
- const fs = require('fs');
284
- const data = JSON.parse(fs.readFileSync('dev/pipeline/TASK_QUEUE.json', 'utf8'));
285
- console.log(\`總任務數: \${data.tasks.length}\`);
286
- "
287
-
288
- echo ""
289
- echo "新系統:"
290
- node -e "
291
- const { TaskAPI } = require('./.collaboration/core/task-api.js');
292
- const api = new TaskAPI();
293
- (async () => {
294
- const data = await api.getAllTasks();
295
- console.log(\`總任務數: \${data.statistics.total}\`);
296
- console.log(\`Pending: \${data.statistics.pending}\`);
297
- console.log(\`In Progress: \${data.statistics.in_progress}\`);
298
- console.log(\`Completed: \${data.statistics.completed}\`);
299
- })();
300
- "
301
-
302
- # 檢查每個任務
303
- node .collaboration/cli/task-cli.js list
304
- ```
305
-
306
- ---
307
-
308
- ### 步驟 5:提交遷移
309
-
310
- ```bash
311
- # 加入所有新任務
312
- git add .collaboration/tasks/
313
-
314
- # 加入 ID 映射表
315
- git add .migration/
316
-
317
- # 提交
318
- git commit -m "feat: 遷移任務系統從 dev/pipeline 到 .collaboration
319
-
320
- - 遷移 10 個任務
321
- - 重建所有索引
322
- - 保留 ID 映射表供回滾使用
323
-
324
- BREAKING CHANGE: 任務 ID 格式從 TASK_XXX 改為 TASK_XXXXXXXXXXXX
325
- "
326
-
327
- # 推送
328
- git push origin migration/collaboration-system
329
-
330
- # 建立 PR(可選)
331
- gh pr create \
332
- --title "feat: 遷移到 .collaboration 任務系統" \
333
- --body "完整遷移舊系統任務到新系統,詳見提交訊息"
334
- ```
335
-
336
- ---
337
-
338
- ### 步驟 6:更新團隊工具
339
-
340
- 更新 Dashboard 和其他工具以使用新系統:
341
-
342
- ```javascript
343
- // 在 Dashboard 中使用統一 API
344
- const { TaskAPI } = require('./.collaboration/core/task-api.js');
345
- const api = new TaskAPI();
346
-
347
- // 取得所有任務(自動合併新舊系統)
348
- const allData = await api.getAllTasks();
349
-
350
- // Dashboard 會自動顯示來源標記
351
- // 🆕 - 新系統任務
352
- // 📦 - 舊系統任務(如果還有)
353
- ```
354
-
355
- ---
356
-
357
- ### 步驟 7:封存舊系統(可選)
358
-
359
- 等待團隊適應新系統後(建議 2 週),封存舊系統:
360
-
361
- ```bash
362
- # 移動舊系統到封存目錄
363
- mkdir -p .archive/old-pipeline/$(date +%Y%m%d)
364
- mv dev/pipeline/TASK_QUEUE.json .archive/old-pipeline/$(date +%Y%m%d)/
365
-
366
- # 提交
367
- git add .
368
- git commit -m "chore: 封存舊任務系統"
369
- git push
370
- ```
371
-
372
- ---
373
-
374
- ## 遷移工具
375
-
376
- ### ID 映射表查詢工具
377
-
378
- ```javascript
379
- // .collaboration/tools/lookup-old-id.js
380
- const fs = require('fs');
381
-
382
- const mapping = JSON.parse(fs.readFileSync('.migration/id_mapping.json', 'utf8'));
383
- const oldId = process.argv[2];
384
-
385
- if (mapping[oldId]) {
386
- console.log(`${oldId} → ${mapping[oldId]}`);
387
- } else {
388
- console.log(`❌ 未找到對應的新 ID`);
389
- }
390
- ```
391
-
392
- **使用**:
393
- ```bash
394
- node .collaboration/tools/lookup-old-id.js TASK_147
395
- # 輸出: TASK_147 → TASK_5KPEES80F922
396
- ```
397
-
398
- ---
399
-
400
- ### 依賴關係檢查工具
401
-
402
- ```javascript
403
- // .collaboration/tools/check-dependencies.js
404
- const { TaskAPI } = require('../core/task-api.js');
405
-
406
- (async () => {
407
- const api = new TaskAPI();
408
- const allData = await api.getAllTasks();
409
-
410
- console.log('檢查依賴關係...\n');
411
-
412
- for (const task of allData.tasks) {
413
- if (task.dependencies && task.dependencies.length > 0) {
414
- for (const depId of task.dependencies) {
415
- const depTask = await api.getTask(depId);
416
- if (!depTask) {
417
- console.log(`❌ ${task.id}: 依賴任務不存在 ${depId}`);
418
- } else {
419
- console.log(`✅ ${task.id} → ${depId} (${depTask.status})`);
420
- }
421
- }
422
- }
423
- }
424
- })();
425
- ```
426
-
427
- ---
428
-
429
- ## 驗證遷移
430
-
431
- ### 驗證清單
432
-
433
- - [ ] 任務數量一致
434
- - [ ] 所有狀態正確遷移
435
- - [ ] 優先級正確
436
- - [ ] 依賴關係完整
437
- - [ ] 索引正常工作
438
- - [ ] CLI 命令正常
439
- - [ ] Dashboard 正常顯示
440
- - [ ] Git 提交乾淨無衝突
441
-
442
- ### 自動驗證腳本
443
-
444
- ```bash
445
- # .collaboration/tools/validate-migration.sh
446
- #!/bin/bash
447
-
448
- echo "🔍 驗證遷移結果..."
449
- echo ""
450
-
451
- # 1. 檢查任務數量
452
- echo "1️⃣ 檢查任務數量..."
453
- OLD_COUNT=$(node -e "console.log(JSON.parse(require('fs').readFileSync('dev/pipeline/TASK_QUEUE.json', 'utf8')).tasks.length)")
454
- NEW_COUNT=$(ls .collaboration/tasks/db/all/*.json 2>/dev/null | wc -l)
455
-
456
- if [ "$OLD_COUNT" -eq "$NEW_COUNT" ]; then
457
- echo "✅ 任務數量一致: $NEW_COUNT 個"
458
- else
459
- echo "❌ 任務數量不一致: 舊 $OLD_COUNT vs 新 $NEW_COUNT"
460
- exit 1
461
- fi
462
-
463
- # 2. 檢查索引
464
- echo ""
465
- echo "2️⃣ 檢查索引..."
466
- if [ -d ".collaboration/tasks/index/" ]; then
467
- echo "✅ 索引目錄存在"
468
- else
469
- echo "❌ 索引目錄不存在"
470
- exit 1
471
- fi
472
-
473
- # 3. 測試 CLI
474
- echo ""
475
- echo "3️⃣ 測試 CLI..."
476
- if node .collaboration/cli/task-cli.js list > /dev/null 2>&1; then
477
- echo "✅ CLI 正常工作"
478
- else
479
- echo "❌ CLI 執行失敗"
480
- exit 1
481
- fi
482
-
483
- # 4. 測試 API
484
- echo ""
485
- echo "4️⃣ 測試 API..."
486
- if node -e "
487
- const { TaskAPI } = require('./.collaboration/core/task-api.js');
488
- const api = new TaskAPI();
489
- (async () => {
490
- await api.getAllTasks();
491
- console.log('✅ API 正常工作');
492
- })().catch(e => { console.error('❌ API 執行失敗'); process.exit(1); });
493
- "; then
494
- :
495
- else
496
- exit 1
497
- fi
498
-
499
- echo ""
500
- echo "🎉 驗證通過!"
501
- ```
502
-
503
- **執行驗證**:
504
- ```bash
505
- bash .collaboration/tools/validate-migration.sh
506
- ```
507
-
508
- ---
509
-
510
- ## 回滾計劃
511
-
512
- ### 完全回滾(恢復到舊系統)
513
-
514
- ```bash
515
- # 1. 切換到遷移前的提交
516
- git log --oneline | grep "遷移前的檢查點"
517
- git revert <commit-hash>
518
-
519
- # 2. 恢復備份
520
- cp .migration/backup/20260211/TASK_QUEUE.json dev/pipeline/
521
-
522
- # 3. 刪除新系統(可選)
523
- rm -rf .collaboration/tasks/db/all/*.json
524
-
525
- # 4. 提交
526
- git add .
527
- git commit -m "revert: 回滾到舊任務系統"
528
- git push
529
- ```
530
-
531
- ---
532
-
533
- ### 部分回滾(保留新任務,恢復舊 ID)
534
-
535
- 如果需要保留新系統但恢復舊 ID 格式:
536
-
537
- ```javascript
538
- // .collaboration/tools/rollback-ids.js
539
- const fs = require('fs').promises;
540
- const path = require('path');
541
-
542
- async function rollbackIds() {
543
- const mapping = JSON.parse(
544
- await fs.readFile('.migration/id_mapping.json', 'utf8')
545
- );
546
-
547
- // 反轉映射
548
- const reverseMapping = {};
549
- for (const [oldId, newId] of Object.entries(mapping)) {
550
- reverseMapping[newId] = oldId;
551
- }
552
-
553
- // 遍歷所有任務
554
- const tasksDir = '.collaboration/tasks/db/all';
555
- const files = await fs.readdir(tasksDir);
556
-
557
- for (const file of files) {
558
- if (!file.endsWith('.json')) continue;
559
-
560
- const taskPath = path.join(tasksDir, file);
561
- const task = JSON.parse(await fs.readFile(taskPath, 'utf8'));
562
-
563
- const newId = path.basename(file, '.json');
564
- const oldId = reverseMapping[newId];
565
-
566
- if (oldId) {
567
- task.id = oldId;
568
-
569
- // 更新依賴
570
- if (task.dependencies) {
571
- task.dependencies = task.dependencies.map(d => reverseMapping[d] || d);
572
- }
573
-
574
- // 重新命名文件
575
- const newPath = path.join(tasksDir, `${oldId}.json`);
576
- await fs.writeFile(newPath, JSON.stringify(task, null, 2));
577
- await fs.unlink(taskPath);
578
-
579
- console.log(`✅ 回滾: ${newId} → ${oldId}`);
580
- }
581
- }
582
-
583
- console.log('回滾完成!');
584
- }
585
-
586
- rollbackIds().catch(console.error);
587
- ```
588
-
589
- ---
590
-
591
- ## 常見問題
592
-
593
- ### Q1: 遷移需要多久?
594
-
595
- **A**: 取決於任務數量:
596
- - < 10 個任務:5-10 分鐘(手動)
597
- - 10-50 個任務:15-30 分鐘(自動腳本)
598
- - > 50 個任務:30-60 分鐘(自動腳本 + 驗證)
599
-
600
- ---
601
-
602
- ### Q2: 是否可以漸進式遷移?
603
-
604
- **A**: 可以!新系統支援與舊系統並存:
605
-
606
- ```javascript
607
- // 統一 API 自動合併兩個系統
608
- const { TaskAPI } = require('./.collaboration/core/task-api.js');
609
- const api = new TaskAPI();
610
-
611
- const allData = await api.getAllTasks();
612
- // 包含舊系統(TASK_QUEUE.json)和新系統(.collaboration/tasks/db/)的任務
613
- ```
614
-
615
- **建議策略**:
616
- 1. 新任務使用新系統建立
617
- 2. 舊任務保持不動
618
- 3. 當舊任務完成時,自動封存
619
- 4. 3 個月後全部遷移到新系統
620
-
621
- ---
622
-
623
- ### Q3: 如何處理進行中的任務?
624
-
625
- **A**: 遷移時保留狀態:
626
-
627
- ```javascript
628
- // 遷移腳本會保留所有欄位
629
- const newTask = {
630
- ...oldTask,
631
- status: oldTask.status, // 保留 in_progress
632
- assigned_to: { ... }, // 保留分配資訊
633
- _version: 1
634
- };
635
- ```
636
-
637
- 建議在非工作時間(週末)遷移,減少影響。
638
-
639
- ---
640
-
641
- ### Q4: 依賴關係如何處理?
642
-
643
- **A**: 自動更新為新 ID:
644
-
645
- ```javascript
646
- // 遷移腳本會自動處理
647
- task.dependencies = task.dependencies.map(oldDepId => {
648
- return idMapping[oldDepId] || oldDepId;
649
- });
650
- ```
651
-
652
- 如果發現依賴錯誤,使用檢查工具:
653
- ```bash
654
- node .collaboration/tools/check-dependencies.js
655
- ```
656
-
657
- ---
658
-
659
- ### Q5: 遷移後如何查找舊 ID?
660
-
661
- **A**: 使用 ID 映射表:
662
-
663
- ```bash
664
- # 查詢工具
665
- node .collaboration/tools/lookup-old-id.js TASK_147
666
-
667
- # 或直接查看映射表
668
- cat .migration/id_mapping.json | grep "TASK_147"
669
- ```
670
-
671
- 映射表範例:
672
- ```json
673
- {
674
- "TASK_147": "TASK_5KPEES80F922",
675
- "TASK_148": "TASK_5KPEES80HT6S",
676
- ...
677
- }
678
- ```
679
-
680
- ---
681
-
682
- ## 最佳實踐
683
-
684
- ### 1. 在遷移分支上進行
685
-
686
- ```bash
687
- # 建立遷移分支
688
- git checkout -b migration/collaboration-system
689
-
690
- # 遷移完成後合併
691
- git checkout main
692
- git merge migration/collaboration-system
693
- ```
694
-
695
- ---
696
-
697
- ### 2. 分階段驗證
698
-
699
- ```bash
700
- # 階段 1:遷移 10%
701
- node .collaboration/tools/migrate.js --limit 10
702
-
703
- # 驗證
704
- bash .collaboration/tools/validate-migration.sh
705
-
706
- # 階段 2:遷移全部
707
- node .collaboration/tools/migrate.js
708
- ```
709
-
710
- ---
711
-
712
- ### 3. 保留備份至少 3 個月
713
-
714
- ```bash
715
- # 備份目錄結構
716
- .migration/
717
- ├── backup/
718
- │ ├── 20260211/ # 第一次備份
719
- │ ├── 20260312/ # 第二次備份
720
- │ └── 20260411/ # 第三次備份
721
- └── id_mapping.json # ID 映射表
722
- ```
723
-
724
- ---
725
-
726
- ### 4. 通知團隊成員
727
-
728
- **遷移前通知**(提前 3 天):
729
- ```
730
- 📢 任務系統遷移通知
731
-
732
- 我們將在 2026-02-14(週六)進行任務系統遷移。
733
-
734
- 變更:
735
- - 任務 ID 格式:TASK_147 → TASK_5KPEES80F922
736
- - 新增 CLI 工具:task-cli.js
737
- - Git 衝突大幅減少
738
-
739
- 準備:
740
- - 請在 2/13 前完成所有進行中的任務
741
- - 2/14 當天不要建立新任務
742
- - 遷移後查看 ID 映射表:.migration/id_mapping.json
743
- ```
744
-
745
- **遷移後通知**:
746
- ```
747
- ✅ 任務系統遷移完成
748
-
749
- 新功能:
750
- - 使用 `task list` 查看任務
751
- - 使用 `task claim TASK_XXX` 認領任務
752
- - 詳見文檔:.collaboration/docs/CLI.md
753
-
754
- 如有問題請聯繫 IT 支援。
755
- ```
756
-
757
- ---
758
-
759
- ### 5. 建立遷移日誌
760
-
761
- ```markdown
762
- # 遷移日誌
763
-
764
- ## 2026-02-11 14:00 - 開始遷移
765
- - 建立備份
766
- - 建立遷移分支
767
-
768
- ## 2026-02-11 14:30 - 執行遷移腳本
769
- - 遷移 10 個任務
770
- - 生成 ID 映射表
771
-
772
- ## 2026-02-11 15:00 - 驗證
773
- - ✅ 任務數量一致
774
- - ✅ 依賴關係正確
775
- - ✅ CLI 測試通過
776
-
777
- ## 2026-02-11 15:30 - 提交
778
- - 提交到遷移分支
779
- - 建立 PR
780
-
781
- ## 2026-02-12 10:00 - 合併到 main
782
- - PR 審查通過
783
- - 合併到 main
784
- - 通知團隊
785
-
786
- ## 2026-02-15 - 封存舊系統
787
- - 無重大問題
788
- - 封存 TASK_QUEUE.json
789
- ```
790
-
791
- ---
792
-
793
- ## 相關文檔
794
-
795
- - [API 參考文檔](./API.md) - JavaScript API 完整文檔
796
- - [CLI 使用指南](./CLI.md) - 命令列工具文檔
797
- - [常見問題](./FAQ.md) - 疑難排解指南
798
- - [架構設計](./ARCHITECTURE.md) - 系統架構詳細說明
799
-
800
- ---
801
-
802
- **版本**: 1.0.0
803
- **最後更新**: 2026-02-11
804
- **維護者**: Developer Team