@loomhelm/multi-task-flow 0.0.0-stage → 0.2.1

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 (2091) hide show
  1. package/README.md +162 -2
  2. package/config.example.json +6 -0
  3. package/package.json +64 -4
  4. package/src/build-info.ts +63 -0
  5. package/src/cli/codex.ts +217 -0
  6. package/src/cli/flow.ts +31 -0
  7. package/src/cli/release.ts +117 -0
  8. package/src/cli/skills.ts +20 -0
  9. package/src/cli.ts +93 -0
  10. package/src/client.ts +83 -0
  11. package/src/codex/LICENSE-CODEX +201 -0
  12. package/src/codex/README.md +60 -0
  13. package/src/codex/app-server.ts +260 -0
  14. package/src/codex/generate-protocol.ts +26 -0
  15. package/src/codex/index.ts +2 -0
  16. package/src/codex/protocol.ts +1423 -0
  17. package/src/config.ts +40 -0
  18. package/src/dispatch/README.md +7 -0
  19. package/src/dispatch/index.ts +325 -0
  20. package/src/git.ts +32 -0
  21. package/src/index.ts +13 -0
  22. package/src/orchestration/README.md +3 -0
  23. package/src/release-tarball.ts +66 -0
  24. package/src/release.ts +133 -0
  25. package/src/runtime/files.ts +15 -0
  26. package/src/runtime/lock.ts +40 -0
  27. package/src/runtime/process.ts +47 -0
  28. package/src/runtime-identity.ts +61 -0
  29. package/src/tasks/ledger.ts +81 -0
  30. package/src/tasks/model.ts +58 -0
  31. package/src/toolkit.ts +176 -0
  32. package/src/version.ts +23 -0
  33. package/src/workflow/README.md +92 -0
  34. package/src/workflow/cli.ts +48 -0
  35. package/src/workflow/index.ts +2 -0
  36. package/src/workflow/local.ts +162 -0
  37. package/src/workflow/skills.ts +148 -0
  38. package/toolkit/AGENTS.md +47 -0
  39. package/toolkit/artifact-manifest.json +8328 -0
  40. package/toolkit/package.json +8 -0
  41. package/toolkit/skills/README.md +50 -0
  42. package/toolkit/skills/bin/active_long_task_replay_check.ts +4 -0
  43. package/toolkit/skills/bin/agent_profile_runtime.ts +84 -0
  44. package/toolkit/skills/bin/agent_vm_migration_check.ts +4 -0
  45. package/toolkit/skills/bin/browser_policy_replay_check.ts +4 -0
  46. package/toolkit/skills/bin/check_source_policy.ts +73 -0
  47. package/toolkit/skills/bin/code_hosting.ts +4 -0
  48. package/toolkit/skills/bin/compatibility_cli.ts +37 -0
  49. package/toolkit/skills/bin/compatibility_dispatch.ts +139 -0
  50. package/toolkit/skills/bin/compatibility_docs.ts +115 -0
  51. package/toolkit/skills/bin/compatibility_hosting.ts +17 -0
  52. package/toolkit/skills/bin/compatibility_shared.ts +230 -0
  53. package/toolkit/skills/bin/compatibility_visual.ts +131 -0
  54. package/toolkit/skills/bin/compatibility_workspace.ts +24 -0
  55. package/toolkit/skills/bin/create_reg_cli_report.ts +4 -0
  56. package/toolkit/skills/bin/flow_continue_replay_check.ts +4 -0
  57. package/toolkit/skills/bin/flow_receipt.ts +285 -0
  58. package/toolkit/skills/bin/instruction_architecture_check.ts +6 -0
  59. package/toolkit/skills/bin/instruction_behavior_replay.ts +4 -0
  60. package/toolkit/skills/bin/migrate_task_orchestration_to_waves.ts +6 -0
  61. package/toolkit/skills/bin/modules/checks/architecture.ts +219 -0
  62. package/toolkit/skills/bin/modules/checks/architecture_acceptance_contracts.ts +137 -0
  63. package/toolkit/skills/bin/modules/checks/architecture_active_review.ts +79 -0
  64. package/toolkit/skills/bin/modules/checks/architecture_contract_data.ts +333 -0
  65. package/toolkit/skills/bin/modules/checks/architecture_contract_helpers.ts +31 -0
  66. package/toolkit/skills/bin/modules/checks/architecture_contracts.ts +55 -0
  67. package/toolkit/skills/bin/modules/checks/architecture_markdown.ts +245 -0
  68. package/toolkit/skills/bin/modules/checks/architecture_review_contracts.ts +284 -0
  69. package/toolkit/skills/bin/modules/checks/architecture_tracker.ts +172 -0
  70. package/toolkit/skills/bin/modules/checks/behavior.ts +122 -0
  71. package/toolkit/skills/bin/modules/checks/browser.ts +108 -0
  72. package/toolkit/skills/bin/modules/checks/candidate_tree_digest.ts +159 -0
  73. package/toolkit/skills/bin/modules/checks/conflict.ts +58 -0
  74. package/toolkit/skills/bin/modules/checks/flow.ts +423 -0
  75. package/toolkit/skills/bin/modules/checks/flow_cleanup.ts +152 -0
  76. package/toolkit/skills/bin/modules/checks/flow_release.ts +308 -0
  77. package/toolkit/skills/bin/modules/checks/flow_release_cards.ts +102 -0
  78. package/toolkit/skills/bin/modules/checks/flow_release_commands.ts +61 -0
  79. package/toolkit/skills/bin/modules/checks/flow_release_evidence.ts +400 -0
  80. package/toolkit/skills/bin/modules/checks/flow_route.ts +151 -0
  81. package/toolkit/skills/bin/modules/checks/flow_support.ts +256 -0
  82. package/toolkit/skills/bin/modules/checks/historical.ts +44 -0
  83. package/toolkit/skills/bin/modules/checks/index.ts +18 -0
  84. package/toolkit/skills/bin/modules/checks/instruction_behavior.ts +330 -0
  85. package/toolkit/skills/bin/modules/checks/instruction_behavior_policy.ts +106 -0
  86. package/toolkit/skills/bin/modules/checks/ownership.ts +183 -0
  87. package/toolkit/skills/bin/modules/checks/pr.ts +297 -0
  88. package/toolkit/skills/bin/modules/checks/pr_handoff.ts +200 -0
  89. package/toolkit/skills/bin/modules/checks/pr_release.ts +13 -0
  90. package/toolkit/skills/bin/modules/checks/pr_release_cards.ts +268 -0
  91. package/toolkit/skills/bin/modules/checks/pr_release_command_helpers.ts +42 -0
  92. package/toolkit/skills/bin/modules/checks/pr_release_commands.ts +87 -0
  93. package/toolkit/skills/bin/modules/checks/pr_release_evaluate.ts +237 -0
  94. package/toolkit/skills/bin/modules/checks/pr_release_publish.ts +217 -0
  95. package/toolkit/skills/bin/modules/checks/pr_release_routes.ts +359 -0
  96. package/toolkit/skills/bin/modules/checks/pr_release_rules.ts +27 -0
  97. package/toolkit/skills/bin/modules/checks/pr_release_scan.ts +351 -0
  98. package/toolkit/skills/bin/modules/checks/pr_release_state.ts +273 -0
  99. package/toolkit/skills/bin/modules/checks/pr_release_support.ts +262 -0
  100. package/toolkit/skills/bin/modules/checks/pr_support.ts +112 -0
  101. package/toolkit/skills/bin/modules/checks/pr_terminal.ts +9 -0
  102. package/toolkit/skills/bin/modules/checks/pr_terminal_events.ts +180 -0
  103. package/toolkit/skills/bin/modules/checks/pr_terminal_scan.ts +204 -0
  104. package/toolkit/skills/bin/modules/checks/pr_terminal_state.ts +113 -0
  105. package/toolkit/skills/bin/modules/checks/pr_terminal_support.ts +206 -0
  106. package/toolkit/skills/bin/modules/checks/pr_terminal_task.ts +176 -0
  107. package/toolkit/skills/bin/modules/checks/release.ts +211 -0
  108. package/toolkit/skills/bin/modules/checks/replay.ts +336 -0
  109. package/toolkit/skills/bin/modules/checks/review.ts +174 -0
  110. package/toolkit/skills/bin/modules/checks/routes.ts +87 -0
  111. package/toolkit/skills/bin/modules/checks/skills.ts +75 -0
  112. package/toolkit/skills/bin/modules/checks/spec.ts +272 -0
  113. package/toolkit/skills/bin/modules/checks/visual.ts +286 -0
  114. package/toolkit/skills/bin/modules/checks/visual_support.ts +203 -0
  115. package/toolkit/skills/bin/modules/core/cli.ts +44 -0
  116. package/toolkit/skills/bin/modules/core/clock.ts +30 -0
  117. package/toolkit/skills/bin/modules/core/process.ts +400 -0
  118. package/toolkit/skills/bin/modules/core/process_tree.ts +112 -0
  119. package/toolkit/skills/bin/modules/core/runtime.ts +2 -0
  120. package/toolkit/skills/bin/modules/core/security_file.ts +246 -0
  121. package/toolkit/skills/bin/modules/core/source_policy.ts +21 -0
  122. package/toolkit/skills/bin/modules/core/utf8.ts +63 -0
  123. package/toolkit/skills/bin/modules/docs/git.ts +54 -0
  124. package/toolkit/skills/bin/modules/docs/hardware_ingest.ts +377 -0
  125. package/toolkit/skills/bin/modules/docs/hardware_locks.ts +181 -0
  126. package/toolkit/skills/bin/modules/docs/legacy_spec_id.ts +131 -0
  127. package/toolkit/skills/bin/modules/docs/migration_common.ts +291 -0
  128. package/toolkit/skills/bin/modules/docs/next_plan.ts +199 -0
  129. package/toolkit/skills/bin/modules/docs/next_plan_support.ts +245 -0
  130. package/toolkit/skills/bin/modules/docs/spec_contract.ts +299 -0
  131. package/toolkit/skills/bin/modules/docs/spec_drift.ts +387 -0
  132. package/toolkit/skills/bin/modules/docs/spec_drift_helpers.ts +383 -0
  133. package/toolkit/skills/bin/modules/docs/spec_drift_legacy.ts +376 -0
  134. package/toolkit/skills/bin/modules/docs/spec_drift_paths.ts +3 -0
  135. package/toolkit/skills/bin/modules/docs/spec_drift_types.ts +27 -0
  136. package/toolkit/skills/bin/modules/docs/spec_drift_validation.ts +251 -0
  137. package/toolkit/skills/bin/modules/docs/spec_migration.ts +191 -0
  138. package/toolkit/skills/bin/modules/flow/acceptance.ts +373 -0
  139. package/toolkit/skills/bin/modules/flow/common.ts +139 -0
  140. package/toolkit/skills/bin/modules/flow/deployment.ts +74 -0
  141. package/toolkit/skills/bin/modules/flow/fresh-thread-dispatch.ts +147 -0
  142. package/toolkit/skills/bin/modules/flow/git.ts +194 -0
  143. package/toolkit/skills/bin/modules/flow/ledger-acceptance.ts +236 -0
  144. package/toolkit/skills/bin/modules/flow/ledger-attestation.ts +151 -0
  145. package/toolkit/skills/bin/modules/flow/ledger-convergence.ts +56 -0
  146. package/toolkit/skills/bin/modules/flow/ledger-lifecycle.ts +205 -0
  147. package/toolkit/skills/bin/modules/flow/ledger-reopen.ts +187 -0
  148. package/toolkit/skills/bin/modules/flow/ledger-review.ts +387 -0
  149. package/toolkit/skills/bin/modules/flow/ledger-terminal.ts +391 -0
  150. package/toolkit/skills/bin/modules/flow/ledger-validation.ts +158 -0
  151. package/toolkit/skills/bin/modules/flow/ledger.ts +207 -0
  152. package/toolkit/skills/bin/modules/flow/process.ts +161 -0
  153. package/toolkit/skills/bin/modules/flow/profile-attest-discovery.ts +137 -0
  154. package/toolkit/skills/bin/modules/flow/profile-attest-utils.ts +353 -0
  155. package/toolkit/skills/bin/modules/flow/profile-attest.ts +316 -0
  156. package/toolkit/skills/bin/modules/flow/profile-hook.ts +375 -0
  157. package/toolkit/skills/bin/modules/flow/profile-resolution.ts +118 -0
  158. package/toolkit/skills/bin/modules/flow/profile-state.ts +286 -0
  159. package/toolkit/skills/bin/modules/flow/profile-transcript.ts +376 -0
  160. package/toolkit/skills/bin/modules/flow/receipt-storage.ts +144 -0
  161. package/toolkit/skills/bin/modules/flow/review-history.ts +69 -0
  162. package/toolkit/skills/bin/modules/flow/review-ledger.ts +9 -0
  163. package/toolkit/skills/bin/modules/flow/review-open-guards.ts +119 -0
  164. package/toolkit/skills/bin/modules/flow/review-profile-policy.ts +290 -0
  165. package/toolkit/skills/bin/modules/flow/review-profile.ts +148 -0
  166. package/toolkit/skills/bin/modules/flow/review-query.ts +16 -0
  167. package/toolkit/skills/bin/modules/flow/review-receipt-integrity.ts +155 -0
  168. package/toolkit/skills/bin/modules/flow/review-record.ts +270 -0
  169. package/toolkit/skills/bin/modules/flow/review-repair.ts +150 -0
  170. package/toolkit/skills/bin/modules/flow/review-result.ts +224 -0
  171. package/toolkit/skills/bin/modules/flow/review-synthesis.ts +195 -0
  172. package/toolkit/skills/bin/modules/flow/review-wave-finalize.ts +231 -0
  173. package/toolkit/skills/bin/modules/flow/review-wave-open.ts +157 -0
  174. package/toolkit/skills/bin/modules/flow/review-wave-support.ts +23 -0
  175. package/toolkit/skills/bin/modules/flow/review-wave-utils.ts +35 -0
  176. package/toolkit/skills/bin/modules/flow/review.ts +369 -0
  177. package/toolkit/skills/bin/modules/flow/state-policy.ts +61 -0
  178. package/toolkit/skills/bin/modules/flow/state-review.ts +70 -0
  179. package/toolkit/skills/bin/modules/flow/state.ts +351 -0
  180. package/toolkit/skills/bin/modules/flow/storage.ts +228 -0
  181. package/toolkit/skills/bin/modules/flow/validation-input.ts +28 -0
  182. package/toolkit/skills/bin/modules/flow/validation.ts +250 -0
  183. package/toolkit/skills/bin/modules/hosting/backend.ts +266 -0
  184. package/toolkit/skills/bin/modules/hosting/compatibility_ci.ts +206 -0
  185. package/toolkit/skills/bin/modules/hosting/compatibility_ci_gitea.ts +77 -0
  186. package/toolkit/skills/bin/modules/hosting/compatibility_ci_github.ts +175 -0
  187. package/toolkit/skills/bin/modules/hosting/compatibility_ci_normalize.ts +302 -0
  188. package/toolkit/skills/bin/modules/hosting/compatibility_ci_policy.ts +219 -0
  189. package/toolkit/skills/bin/modules/hosting/compatibility_ci_surfaces.ts +257 -0
  190. package/toolkit/skills/bin/modules/hosting/compatibility_cli.ts +393 -0
  191. package/toolkit/skills/bin/modules/hosting/compatibility_cli_helpers.ts +188 -0
  192. package/toolkit/skills/bin/modules/hosting/compatibility_helpers.ts +43 -0
  193. package/toolkit/skills/bin/modules/hosting/compatibility_pr.ts +115 -0
  194. package/toolkit/skills/bin/modules/hosting/compatibility_resources.ts +296 -0
  195. package/toolkit/skills/bin/modules/hosting/pull-request.ts +387 -0
  196. package/toolkit/skills/bin/modules/hosting/redact.ts +29 -0
  197. package/toolkit/skills/bin/modules/hosting/remote.ts +129 -0
  198. package/toolkit/skills/bin/modules/hosting/types.ts +38 -0
  199. package/toolkit/skills/bin/modules/plan/acceptance.ts +282 -0
  200. package/toolkit/skills/bin/modules/plan/cli.ts +66 -0
  201. package/toolkit/skills/bin/modules/plan/contract.ts +1245 -0
  202. package/toolkit/skills/bin/modules/plan/historical_session.ts +359 -0
  203. package/toolkit/skills/bin/modules/plan/io.ts +402 -0
  204. package/toolkit/skills/bin/modules/plan/markdown.ts +135 -0
  205. package/toolkit/skills/bin/modules/plan/orchestration.ts +11 -0
  206. package/toolkit/skills/bin/modules/plan/orchestration_base.ts +333 -0
  207. package/toolkit/skills/bin/modules/plan/orchestration_dependencies.ts +231 -0
  208. package/toolkit/skills/bin/modules/plan/orchestration_metadata.ts +134 -0
  209. package/toolkit/skills/bin/modules/plan/orchestration_parser.ts +228 -0
  210. package/toolkit/skills/bin/modules/plan/orchestration_validation.ts +147 -0
  211. package/toolkit/skills/bin/modules/plan/parent_identity.ts +15 -0
  212. package/toolkit/skills/bin/modules/plan/private_snapshot.ts +372 -0
  213. package/toolkit/skills/bin/modules/plan/projection.ts +4 -0
  214. package/toolkit/skills/bin/modules/plan/projection_base.ts +220 -0
  215. package/toolkit/skills/bin/modules/plan/projection_expected.ts +111 -0
  216. package/toolkit/skills/bin/modules/plan/projection_findings.ts +310 -0
  217. package/toolkit/skills/bin/modules/plan/projection_render.ts +349 -0
  218. package/toolkit/skills/bin/modules/plan/review.ts +300 -0
  219. package/toolkit/skills/bin/modules/plan/task_migration.ts +308 -0
  220. package/toolkit/skills/bin/modules/plan/text.ts +8 -0
  221. package/toolkit/skills/bin/modules/visual/casefold.ts +21 -0
  222. package/toolkit/skills/bin/modules/visual/compare.ts +353 -0
  223. package/toolkit/skills/bin/modules/visual/document.ts +253 -0
  224. package/toolkit/skills/bin/modules/visual/document_parse.ts +341 -0
  225. package/toolkit/skills/bin/modules/visual/gate.ts +380 -0
  226. package/toolkit/skills/bin/modules/visual/image.ts +182 -0
  227. package/toolkit/skills/bin/modules/visual/index.ts +11 -0
  228. package/toolkit/skills/bin/modules/visual/isolation.ts +391 -0
  229. package/toolkit/skills/bin/modules/visual/native_rename.ts +34 -0
  230. package/toolkit/skills/bin/modules/visual/paths.ts +312 -0
  231. package/toolkit/skills/bin/modules/visual/pr_body_gate.ts +368 -0
  232. package/toolkit/skills/bin/modules/visual/pr_body_gate_contract.ts +106 -0
  233. package/toolkit/skills/bin/modules/visual/pr_body_gate_markdown.ts +248 -0
  234. package/toolkit/skills/bin/modules/visual/pr_body_gate_provider.ts +134 -0
  235. package/toolkit/skills/bin/modules/visual/pr_body_gate_result.ts +21 -0
  236. package/toolkit/skills/bin/modules/visual/pr_body_gate_tree.ts +36 -0
  237. package/toolkit/skills/bin/modules/visual/pr_body_gate_update.ts +93 -0
  238. package/toolkit/skills/bin/modules/visual/report.ts +5 -0
  239. package/toolkit/skills/bin/modules/visual/report_artifacts.ts +277 -0
  240. package/toolkit/skills/bin/modules/visual/report_audit.ts +214 -0
  241. package/toolkit/skills/bin/modules/visual/report_create.ts +321 -0
  242. package/toolkit/skills/bin/modules/visual/report_runtime.ts +232 -0
  243. package/toolkit/skills/bin/modules/visual/report_validate.ts +293 -0
  244. package/toolkit/skills/bin/modules/visual/sandbox_process.ts +126 -0
  245. package/toolkit/skills/bin/modules/visual/secure_io.ts +486 -0
  246. package/toolkit/skills/bin/modules/visual/snapshot.ts +134 -0
  247. package/toolkit/skills/bin/modules/visual/trim.ts +295 -0
  248. package/toolkit/skills/bin/modules/visual/trusted_directory.ts +42 -0
  249. package/toolkit/skills/bin/modules/visual/write_all.ts +10 -0
  250. package/toolkit/skills/bin/modules/workspace/base_alignment.ts +389 -0
  251. package/toolkit/skills/bin/modules/workspace/base_alignment_actions.ts +318 -0
  252. package/toolkit/skills/bin/modules/workspace/candidate_context.ts +397 -0
  253. package/toolkit/skills/bin/modules/workspace/candidate_sandbox.ts +292 -0
  254. package/toolkit/skills/bin/modules/workspace/closeout_context.ts +161 -0
  255. package/toolkit/skills/bin/modules/workspace/closeout_context_cli.ts +107 -0
  256. package/toolkit/skills/bin/modules/workspace/closeout_gate.ts +353 -0
  257. package/toolkit/skills/bin/modules/workspace/closeout_gate_cli.ts +36 -0
  258. package/toolkit/skills/bin/modules/workspace/local_merge_closeout_context.ts +112 -0
  259. package/toolkit/skills/bin/modules/workspace/local_merge_closeout_context_cli.ts +54 -0
  260. package/toolkit/skills/bin/modules/workspace/local_merge_closeout_gate.ts +257 -0
  261. package/toolkit/skills/bin/modules/workspace/local_merge_closeout_gate_cli.ts +30 -0
  262. package/toolkit/skills/bin/modules/workspace/merge_preflight.ts +318 -0
  263. package/toolkit/skills/bin/modules/workspace/merge_preflight_facts.ts +124 -0
  264. package/toolkit/skills/bin/modules/workspace/merge_preflight_model.ts +325 -0
  265. package/toolkit/skills/bin/modules/workspace/port_allocator.ts +115 -0
  266. package/toolkit/skills/bin/modules/workspace/port_registry.ts +367 -0
  267. package/toolkit/skills/bin/modules/workspace/port_registry_allocation.ts +130 -0
  268. package/toolkit/skills/bin/modules/workspace/port_registry_cli.ts +273 -0
  269. package/toolkit/skills/bin/modules/workspace/port_registry_shared.ts +130 -0
  270. package/toolkit/skills/bin/modules/workspace/port_registry_store.ts +230 -0
  271. package/toolkit/skills/bin/modules/workspace/worktree.ts +135 -0
  272. package/toolkit/skills/bin/multi_task_platform_gate.ts +23 -0
  273. package/toolkit/skills/bin/native-tests/core/ffi_paths.test.ts +61 -0
  274. package/toolkit/skills/bin/native-tests/core/native.test.ts +102 -0
  275. package/toolkit/skills/bin/native-tests/visual/native.test.ts +414 -0
  276. package/toolkit/skills/bin/native-tests/visual/repair.test.ts +577 -0
  277. package/toolkit/skills/bin/owner_facing_image_gate.ts +4 -0
  278. package/toolkit/skills/bin/package.json +1 -0
  279. package/toolkit/skills/bin/plan-cli.sh +231 -0
  280. package/toolkit/skills/bin/plan_acceptance_manifest.ts +62 -0
  281. package/toolkit/skills/bin/plan_bunfig.toml +2 -0
  282. package/toolkit/skills/bin/plan_contract_check.ts +135 -0
  283. package/toolkit/skills/bin/plan_review_view.ts +419 -0
  284. package/toolkit/skills/bin/pr_body_image_contract_check.ts +4 -0
  285. package/toolkit/skills/bin/pr_skill_replay_check.ts +4 -0
  286. package/toolkit/skills/bin/reg-cli-report/package-lock.json +1544 -0
  287. package/toolkit/skills/bin/reg-cli-report/package.json +8 -0
  288. package/toolkit/skills/bin/release_tracking_replay_check.ts +4 -0
  289. package/toolkit/skills/bin/repair-thread-history.zsh +373 -0
  290. package/toolkit/skills/bin/review_profile_policy.ts +107 -0
  291. package/toolkit/skills/bin/review_proof_replay_check.ts +4 -0
  292. package/toolkit/skills/bin/skills_index_check.ts +4 -0
  293. package/toolkit/skills/bin/snapshot_local_image.ts +4 -0
  294. package/toolkit/skills/bin/spec_contract_check.ts +4 -0
  295. package/toolkit/skills/bin/test_agent_profile_runtime.ts +1 -0
  296. package/toolkit/skills/bin/test_agent_profiles.ts +1 -0
  297. package/toolkit/skills/bin/test_agent_vm_migration_check.ts +1 -0
  298. package/toolkit/skills/bin/test_code_hosting.ts +1 -0
  299. package/toolkit/skills/bin/test_create_reg_cli_report.ts +1 -0
  300. package/toolkit/skills/bin/test_dot_codex_context.ts +1 -0
  301. package/toolkit/skills/bin/test_flow_continue_replay_check.ts +1 -0
  302. package/toolkit/skills/bin/test_flow_receipt.ts +1 -0
  303. package/toolkit/skills/bin/test_instruction_architecture_check.ts +1 -0
  304. package/toolkit/skills/bin/test_instruction_behavior_replay.ts +1 -0
  305. package/toolkit/skills/bin/test_owner_facing_image_gate.ts +1 -0
  306. package/toolkit/skills/bin/test_plan_acceptance_manifest.ts +1 -0
  307. package/toolkit/skills/bin/test_plan_contract_check.ts +1 -0
  308. package/toolkit/skills/bin/test_plan_review_view.ts +1 -0
  309. package/toolkit/skills/bin/test_pr_skill_replay_check.ts +1 -0
  310. package/toolkit/skills/bin/test_release_tracking_replay_check.ts +1 -0
  311. package/toolkit/skills/bin/test_skills_index_check.ts +1 -0
  312. package/toolkit/skills/bin/test_snapshot_local_image.ts +1 -0
  313. package/toolkit/skills/bin/test_spec_contract_check.ts +1 -0
  314. package/toolkit/skills/bin/test_visual_evidence_document.ts +1 -0
  315. package/toolkit/skills/bin/tests/checks/agent_vm.test.ts +41 -0
  316. package/toolkit/skills/bin/tests/checks/candidate_tree_digest.test.ts +114 -0
  317. package/toolkit/skills/bin/tests/checks/checks.test.ts +608 -0
  318. package/toolkit/skills/bin/tests/checks/flow_python_parity.test.ts +41 -0
  319. package/toolkit/skills/bin/tests/checks/flow_release.test.ts +584 -0
  320. package/toolkit/skills/bin/tests/checks/flow_release_help.test.ts +103 -0
  321. package/toolkit/skills/bin/tests/checks/flow_repair.test.ts +214 -0
  322. package/toolkit/skills/bin/tests/checks/fresh_thread_dispatch.test.ts +68 -0
  323. package/toolkit/skills/bin/tests/checks/multi-task-flow.test.ts +192 -0
  324. package/toolkit/skills/bin/tests/checks/pr_replay_policy.test.ts +165 -0
  325. package/toolkit/skills/bin/tests/core/compatibility.test.ts +94 -0
  326. package/toolkit/skills/bin/tests/core/core.test.ts +458 -0
  327. package/toolkit/skills/bin/tests/core/package_scripts.test.ts +13 -0
  328. package/toolkit/skills/bin/tests/docs/contract_migration.test.ts +199 -0
  329. package/toolkit/skills/bin/tests/docs/plan_and_hardware.test.ts +210 -0
  330. package/toolkit/skills/bin/tests/docs/spec_drift.test.ts +279 -0
  331. package/toolkit/skills/bin/tests/flow/flow.test.ts +477 -0
  332. package/toolkit/skills/bin/tests/flow/fresh_thread_dispatch.test.ts +211 -0
  333. package/toolkit/skills/bin/tests/flow/profile.test.ts +519 -0
  334. package/toolkit/skills/bin/tests/flow/review_profile_policy.test.ts +144 -0
  335. package/toolkit/skills/bin/tests/hosting/ci_evidence_conflicts.test.ts +279 -0
  336. package/toolkit/skills/bin/tests/hosting/ci_facts.test.ts +595 -0
  337. package/toolkit/skills/bin/tests/hosting/ci_rerun.test.ts +188 -0
  338. package/toolkit/skills/bin/tests/hosting/hosting.test.ts +561 -0
  339. package/toolkit/skills/bin/tests/hosting/merge_confirmation.test.ts +37 -0
  340. package/toolkit/skills/bin/tests/hosting/test_helpers.ts +36 -0
  341. package/toolkit/skills/bin/tests/plan/acceptance.test.ts +202 -0
  342. package/toolkit/skills/bin/tests/plan/cli.test.ts +39 -0
  343. package/toolkit/skills/bin/tests/plan/fixtures.ts +29 -0
  344. package/toolkit/skills/bin/tests/plan/io.test.ts +64 -0
  345. package/toolkit/skills/bin/tests/plan/isolation.test.ts +31 -0
  346. package/toolkit/skills/bin/tests/plan/launcher.test.ts +88 -0
  347. package/toolkit/skills/bin/tests/plan/launcher_race.test.ts +39 -0
  348. package/toolkit/skills/bin/tests/plan/multi-task-flow.test.ts +38 -0
  349. package/toolkit/skills/bin/tests/plan/orchestration.test.ts +102 -0
  350. package/toolkit/skills/bin/tests/plan/review.test.ts +195 -0
  351. package/toolkit/skills/bin/tests/plan/shell.test.ts +282 -0
  352. package/toolkit/skills/bin/tests/plan/task_migration.test.ts +160 -0
  353. package/toolkit/skills/bin/tests/visual/pr_body_gate.test.ts +109 -0
  354. package/toolkit/skills/bin/tests/visual/report_create.test.ts +134 -0
  355. package/toolkit/skills/bin/tests/visual/visual.test.ts +598 -0
  356. package/toolkit/skills/bin/tests/workspace/base_alignment.test.ts +121 -0
  357. package/toolkit/skills/bin/tests/workspace/fixed_checks.test.ts +30 -0
  358. package/toolkit/skills/bin/tests/workspace/workspace.test.ts +840 -0
  359. package/toolkit/skills/bin/visual_evidence_document.ts +4 -0
  360. package/toolkit/skills/bin/visual_evidence_replay_check.ts +4 -0
  361. package/toolkit/skills/bun.lock +96 -0
  362. package/toolkit/skills/catalog.json +803 -0
  363. package/toolkit/skills/cn-ecommerce-data-collection/SKILL.md +51 -0
  364. package/toolkit/skills/cn-ecommerce-data-collection/references/data-collection.md +51 -0
  365. package/toolkit/skills/dev-plan/SKILL.md +112 -0
  366. package/toolkit/skills/dev-plan/agents/openai.yaml +2 -0
  367. package/toolkit/skills/dev-plan/references/plan-cases/negative-direct-review-tier-missing.md +35 -0
  368. package/toolkit/skills/dev-plan/references/plan-cases/negative-empirical-acceptance-missing.md +39 -0
  369. package/toolkit/skills/dev-plan/references/plan-cases/negative-empirical-acceptance-placeholders.md +40 -0
  370. package/toolkit/skills/dev-plan/references/plan-cases/negative-empirical-acceptance-scenarios.md +40 -0
  371. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-avoid-open-pr.md +35 -0
  372. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-avoid-pr-creation.md +35 -0
  373. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-avoid-pr-delivery.md +35 -0
  374. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-direct-pr-omitted.md +35 -0
  375. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-local-only-delivery.md +35 -0
  376. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-no-direct-pr.md +35 -0
  377. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-no-pr-delivery.md +35 -0
  378. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-no-pr-local.md +35 -0
  379. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-pr-acceptance-missing.md +35 -0
  380. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-pr-acceptance-split.md +37 -0
  381. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-pr-forbidden.md +35 -0
  382. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-pr-target-only.md +35 -0
  383. package/toolkit/skills/dev-plan/references/plan-cases/negative-fast-track-unlocked.md +35 -0
  384. package/toolkit/skills/dev-plan/references/plan-cases/negative-initiative-adr-contracts-duplicate-path.md +46 -0
  385. package/toolkit/skills/dev-plan/references/plan-cases/negative-initiative-adr-contracts-duplicate.md +47 -0
  386. package/toolkit/skills/dev-plan/references/plan-cases/negative-initiative-adr-contracts-malformed-sha.md +46 -0
  387. package/toolkit/skills/dev-plan/references/plan-cases/negative-initiative-adr-contracts-missing.md +45 -0
  388. package/toolkit/skills/dev-plan/references/plan-cases/negative-initiative-adr-contracts-trailing-comma.md +46 -0
  389. package/toolkit/skills/dev-plan/references/plan-cases/negative-initiative-adr-contracts-unsorted.md +46 -0
  390. package/toolkit/skills/dev-plan/references/plan-cases/negative-multi-task-flow-single-task.md +42 -0
  391. package/toolkit/skills/dev-plan/references/plan-cases/negative-parallel-pr-overlap.md +45 -0
  392. package/toolkit/skills/dev-plan/references/plan-cases/negative-phase-aware-missing-phase.md +41 -0
  393. package/toolkit/skills/dev-plan/references/plan-cases/negative-plan-constraint-acceptance.md +38 -0
  394. package/toolkit/skills/dev-plan/references/plan-cases/negative-plan-constraint-task-item.md +38 -0
  395. package/toolkit/skills/dev-plan/references/plan-cases/negative-plan-provenance-section.md +38 -0
  396. package/toolkit/skills/dev-plan/references/plan-cases/negative-plan-provenance-variant.md +38 -0
  397. package/toolkit/skills/dev-plan/references/plan-cases/negative-runtime-profile-pair.md +37 -0
  398. package/toolkit/skills/dev-plan/references/plan-cases/negative-runtime-profile-reviewer-identity.md +37 -0
  399. package/toolkit/skills/dev-plan/references/plan-cases/negative-runtime-strategy-ungated.md +37 -0
  400. package/toolkit/skills/dev-plan/references/plan-cases/negative-wave-thread-v2-duplicate-contract.md +48 -0
  401. package/toolkit/skills/dev-plan/references/plan-cases/positive-empirical-acceptance.md +41 -0
  402. package/toolkit/skills/dev-plan/references/plan-cases/positive-fast-track-aggregate-pr-exclusion.md +41 -0
  403. package/toolkit/skills/dev-plan/references/plan-cases/positive-fast-track.md +41 -0
  404. package/toolkit/skills/dev-plan/references/plan-cases/positive-initiative-bootstrap-v5.md +47 -0
  405. package/toolkit/skills/dev-plan/references/plan-cases/positive-initiative-delivery-v5.md +56 -0
  406. package/toolkit/skills/dev-plan/references/plan-cases/positive-multi-task-flow.md +50 -0
  407. package/toolkit/skills/dev-plan/references/plan-cases/positive-parallel-pr.md +48 -0
  408. package/toolkit/skills/dev-plan/references/plan-cases/positive-phase-aware-direct.md +44 -0
  409. package/toolkit/skills/dev-plan/references/plan-cases/positive-plan-constraints.md +45 -0
  410. package/toolkit/skills/dev-plan/references/plan-cases/positive-plan-task-metadata.md +40 -0
  411. package/toolkit/skills/dev-plan/references/plan-cases/positive-wave-thread-v2.md +57 -0
  412. package/toolkit/skills/dev-plan/references/replay-cases/CASES.txt +248 -0
  413. package/toolkit/skills/dev-plan/references/replay-cases/README.md +190 -0
  414. package/toolkit/skills/dev-plan/references/replay-cases/abstract-development-baseline-combined-phrase.jsonl +2 -0
  415. package/toolkit/skills/dev-plan/references/replay-cases/abstract-development-baseline.jsonl +2 -0
  416. package/toolkit/skills/dev-plan/references/replay-cases/acceptance-follow-up-items-only.jsonl +2 -0
  417. package/toolkit/skills/dev-plan/references/replay-cases/acceptance-notes-only.jsonl +2 -0
  418. package/toolkit/skills/dev-plan/references/replay-cases/acceptance-tba-only.jsonl +2 -0
  419. package/toolkit/skills/dev-plan/references/replay-cases/ambiguous-continue-fallback.jsonl +3 -0
  420. package/toolkit/skills/dev-plan/references/replay-cases/blank-acceptance-bullet.jsonl +2 -0
  421. package/toolkit/skills/dev-plan/references/replay-cases/checkbox-task-orchestration.jsonl +2 -0
  422. package/toolkit/skills/dev-plan/references/replay-cases/conflicting-flow-signals-default-fast-track.jsonl +2 -0
  423. package/toolkit/skills/dev-plan/references/replay-cases/context-dependent-alias-development-baseline.jsonl +1 -0
  424. package/toolkit/skills/dev-plan/references/replay-cases/context-dependent-remote-head-development-baseline.jsonl +2 -0
  425. package/toolkit/skills/dev-plan/references/replay-cases/create-plan-md-implementation-steps-artifact.jsonl +2 -0
  426. package/toolkit/skills/dev-plan/references/replay-cases/decision-log-artifact-in-orchestration.jsonl +2 -0
  427. package/toolkit/skills/dev-plan/references/replay-cases/decision-log-future-work-artifact.jsonl +2 -0
  428. package/toolkit/skills/dev-plan/references/replay-cases/decision-log-job-future-handoffs-artifact.jsonl +2 -0
  429. package/toolkit/skills/dev-plan/references/replay-cases/decision-log-timeline-planning-handoff-artifact.jsonl +2 -0
  430. package/toolkit/skills/dev-plan/references/replay-cases/decision-log-workflow-artifact.jsonl +2 -0
  431. package/toolkit/skills/dev-plan/references/replay-cases/default-fast-track-missing-merge-ready-stop.jsonl +2 -0
  432. package/toolkit/skills/dev-plan/references/replay-cases/duplicate-task-in-wave.jsonl +2 -0
  433. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-after-flow-answer.jsonl +4 -0
  434. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-after-standalone-flow-restatement.jsonl +4 -0
  435. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-base-equals.jsonl +2 -0
  436. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-base-ref-equals.jsonl +2 -0
  437. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-directional-baseline.jsonl +2 -0
  438. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-english-is.jsonl +2 -0
  439. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-legal-trailing-punct.jsonl +2 -0
  440. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-legal-trailing-semicolon-plain.jsonl +2 -0
  441. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-plain-chinese.jsonl +2 -0
  442. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-plan-page-upload-api-scope-clarification.jsonl +6 -0
  443. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-short-ref.jsonl +2 -0
  444. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch-yong-plain-chinese.jsonl +2 -0
  445. package/toolkit/skills/dev-plan/references/replay-cases/explicit-owner-baseline-mismatch.jsonl +2 -0
  446. package/toolkit/skills/dev-plan/references/replay-cases/filesystem-path-development-baseline.jsonl +1 -0
  447. package/toolkit/skills/dev-plan/references/replay-cases/flat-task-orchestration-list.jsonl +2 -0
  448. package/toolkit/skills/dev-plan/references/replay-cases/flow-decision-baseline-only-outside-section.jsonl +1 -0
  449. package/toolkit/skills/dev-plan/references/replay-cases/flow-decision-mismatch-lock.jsonl +3 -0
  450. package/toolkit/skills/dev-plan/references/replay-cases/generate-handoff-log-future-sessions-artifact.jsonl +2 -0
  451. package/toolkit/skills/dev-plan/references/replay-cases/goal-blank-bullet.jsonl +2 -0
  452. package/toolkit/skills/dev-plan/references/replay-cases/goal-placeholder-detail.jsonl +2 -0
  453. package/toolkit/skills/dev-plan/references/replay-cases/goal-tba-detail.jsonl +2 -0
  454. package/toolkit/skills/dev-plan/references/replay-cases/goal-without-detail.jsonl +2 -0
  455. package/toolkit/skills/dev-plan/references/replay-cases/goals-empty-orchestration-only.jsonl +2 -0
  456. package/toolkit/skills/dev-plan/references/replay-cases/handoff-log-artifact-in-orchestration.jsonl +2 -0
  457. package/toolkit/skills/dev-plan/references/replay-cases/handoff-log-future-work-artifact.jsonl +2 -0
  458. package/toolkit/skills/dev-plan/references/replay-cases/handoff-log-history-agent-session-artifact.jsonl +2 -0
  459. package/toolkit/skills/dev-plan/references/replay-cases/handoff-log-pipeline-artifact.jsonl +2 -0
  460. package/toolkit/skills/dev-plan/references/replay-cases/historical-flow-not-locked-before-plan.jsonl +2 -0
  461. package/toolkit/skills/dev-plan/references/replay-cases/historical-missing-flow-type.jsonl +2 -0
  462. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-copy-spec-task.jsonl +2 -0
  463. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-create-for-tests-task.jsonl +2 -0
  464. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-create-migrated-copy-task.jsonl +2 -0
  465. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-skill-normal-flow.jsonl +2 -0
  466. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-skill-topic-spec.jsonl +2 -0
  467. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-sync-against-existing-task.jsonl +2 -0
  468. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-sync-task-orchestration.jsonl +2 -0
  469. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-task-orchestration.jsonl +2 -0
  470. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-update-existing-spec-task.jsonl +2 -0
  471. package/toolkit/skills/dev-plan/references/replay-cases/implement-only-forbidden-update-tests-slug-task.jsonl +2 -0
  472. package/toolkit/skills/dev-plan/references/replay-cases/invalid-flow-type-substring.jsonl +2 -0
  473. package/toolkit/skills/dev-plan/references/replay-cases/invalid-section-order.jsonl +2 -0
  474. package/toolkit/skills/dev-plan/references/replay-cases/invalid-task-orchestration-content.jsonl +2 -0
  475. package/toolkit/skills/dev-plan/references/replay-cases/invalid-user-flow-lock-substring.jsonl +2 -0
  476. package/toolkit/skills/dev-plan/references/replay-cases/keep-handoff-log-future-sessions-artifact.jsonl +2 -0
  477. package/toolkit/skills/dev-plan/references/replay-cases/missing-development-baseline.jsonl +2 -0
  478. package/toolkit/skills/dev-plan/references/replay-cases/missing-flow-question.jsonl +2 -0
  479. package/toolkit/skills/dev-plan/references/replay-cases/missing-goals.jsonl +2 -0
  480. package/toolkit/skills/dev-plan/references/replay-cases/missing-non-goals.jsonl +2 -0
  481. package/toolkit/skills/dev-plan/references/replay-cases/missing-task-orchestration-task.jsonl +2 -0
  482. package/toolkit/skills/dev-plan/references/replay-cases/missing-task-orchestration.jsonl +2 -0
  483. package/toolkit/skills/dev-plan/references/replay-cases/missing-task-skill-binding.jsonl +2 -0
  484. package/toolkit/skills/dev-plan/references/replay-cases/mixed-plan-cleanup-create-artifact.jsonl +2 -0
  485. package/toolkit/skills/dev-plan/references/replay-cases/move-plan-md-handoff-artifact.jsonl +2 -0
  486. package/toolkit/skills/dev-plan/references/replay-cases/negative-agent-profile-invalid.jsonl +2 -0
  487. package/toolkit/skills/dev-plan/references/replay-cases/negative-agent-profile-missing.jsonl +2 -0
  488. package/toolkit/skills/dev-plan/references/replay-cases/negative-aggregate-missing-final-merge-policy.jsonl +2 -0
  489. package/toolkit/skills/dev-plan/references/replay-cases/negative-aggregate-missing-initiative-flow.jsonl +2 -0
  490. package/toolkit/skills/dev-plan/references/replay-cases/negative-aggregate-non-kebab-integration-branch.jsonl +2 -0
  491. package/toolkit/skills/dev-plan/references/replay-cases/negative-aggregate-policy-outside-flow-decision.jsonl +2 -0
  492. package/toolkit/skills/dev-plan/references/replay-cases/negative-default-initiative-eligibility-unproven.jsonl +2 -0
  493. package/toolkit/skills/dev-plan/references/replay-cases/negative-formal-evidence-predeclaration.jsonl +1 -0
  494. package/toolkit/skills/dev-plan/references/replay-cases/negative-formal-main-agent-predeclaration.jsonl +2 -0
  495. package/toolkit/skills/dev-plan/references/replay-cases/negative-initiative-prerequisite-silent-downgrade.jsonl +2 -0
  496. package/toolkit/skills/dev-plan/references/replay-cases/negative-initiative-with-legacy-fast-alias.jsonl +2 -0
  497. package/toolkit/skills/dev-plan/references/replay-cases/negative-legacy-profile-text.jsonl +2 -0
  498. package/toolkit/skills/dev-plan/references/replay-cases/negative-main-agent-profile.jsonl +2 -0
  499. package/toolkit/skills/dev-plan/references/replay-cases/negative-new-delivery-topology.jsonl +2 -0
  500. package/toolkit/skills/dev-plan/references/replay-cases/negative-new-mixed-top-level-flow.jsonl +2 -0
  501. package/toolkit/skills/dev-plan/references/replay-cases/negative-specialist-review-effort.jsonl +2 -0
  502. package/toolkit/skills/dev-plan/references/replay-cases/negative-specialist-review-profile.jsonl +2 -0
  503. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-contradictory-write.jsonl +2 -0
  504. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-filesystem-write-actions.jsonl +2 -0
  505. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-generic-english-write.jsonl +2 -0
  506. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-generic-implementation-write.jsonl +2 -0
  507. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-git-and-shell-write-commands.jsonl +2 -0
  508. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-git-config-worktree.jsonl +2 -0
  509. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-git-global-options.jsonl +2 -0
  510. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-git-readonly-mixed-commands.jsonl +1 -0
  511. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-git-write-commands.jsonl +2 -0
  512. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-implementation-multiword.jsonl +2 -0
  513. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-implementing-write.jsonl +2 -0
  514. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-local-write.jsonl +2 -0
  515. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-shared-write-english.jsonl +2 -0
  516. package/toolkit/skills/dev-plan/references/replay-cases/negative-subagent-shared-write.jsonl +2 -0
  517. package/toolkit/skills/dev-plan/references/replay-cases/negative-task-agent-alias.jsonl +2 -0
  518. package/toolkit/skills/dev-plan/references/replay-cases/negative-task-executor-noninitiative.jsonl +2 -0
  519. package/toolkit/skills/dev-plan/references/replay-cases/negative-ticket-replans-via-executor.jsonl +2 -0
  520. package/toolkit/skills/dev-plan/references/replay-cases/negative-ticket-replans.jsonl +2 -0
  521. package/toolkit/skills/dev-plan/references/replay-cases/non-baseline-based-on-docs-text.jsonl +2 -0
  522. package/toolkit/skills/dev-plan/references/replay-cases/non-goals-blank-bullet.jsonl +2 -0
  523. package/toolkit/skills/dev-plan/references/replay-cases/non-goals-none-placeholder.jsonl +2 -0
  524. package/toolkit/skills/dev-plan/references/replay-cases/non-goals-placeholder.jsonl +2 -0
  525. package/toolkit/skills/dev-plan/references/replay-cases/persisted-plan-artifact-in-orchestration.jsonl +2 -0
  526. package/toolkit/skills/dev-plan/references/replay-cases/placeholder-acceptance.jsonl +2 -0
  527. package/toolkit/skills/dev-plan/references/replay-cases/placeholder-development-baseline.jsonl +1 -0
  528. package/toolkit/skills/dev-plan/references/replay-cases/plan-md-handoff-job-future-sessions-artifact.jsonl +2 -0
  529. package/toolkit/skills/dev-plan/references/replay-cases/positive-agent-profiles.jsonl +2 -0
  530. package/toolkit/skills/dev-plan/references/replay-cases/positive-default-fast-track-no-flow.jsonl +2 -0
  531. package/toolkit/skills/dev-plan/references/replay-cases/positive-default-initiative-from-planned-scope.jsonl +2 -0
  532. package/toolkit/skills/dev-plan/references/replay-cases/positive-default-mainline-concrete-baseline.jsonl +2 -0
  533. package/toolkit/skills/dev-plan/references/replay-cases/positive-default-mainline-token-ref.jsonl +2 -0
  534. package/toolkit/skills/dev-plan/references/replay-cases/positive-direct-dev-plan-issue-parser.jsonl +2 -0
  535. package/toolkit/skills/dev-plan/references/replay-cases/positive-direct-mentions-initiative-non-goal.jsonl +2 -0
  536. package/toolkit/skills/dev-plan/references/replay-cases/positive-directional-product-wording-no-baseline.jsonl +2 -0
  537. package/toolkit/skills/dev-plan/references/replay-cases/positive-equivalent-remote-ref-baseline.jsonl +2 -0
  538. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-after-flow-answer.jsonl +4 -0
  539. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-after-prose-flow-answer.jsonl +4 -0
  540. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-after-standalone-flow-restatement.jsonl +4 -0
  541. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-base-ref-equals.jsonl +2 -0
  542. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-directional-baseline.jsonl +2 -0
  543. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-doc-like-ref.jsonl +2 -0
  544. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-feature-head.jsonl +2 -0
  545. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-legal-trailing-punct-comma-clause.jsonl +2 -0
  546. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-legal-trailing-punct.jsonl +2 -0
  547. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-legal-trailing-semicolon-plain.jsonl +2 -0
  548. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-placeholder-token-ref.jsonl +2 -0
  549. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-plain-chinese.jsonl +2 -0
  550. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-replace-clause.jsonl +2 -0
  551. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-short-ref.jsonl +2 -0
  552. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-special-chars.jsonl +2 -0
  553. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-topic-prefix.jsonl +2 -0
  554. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-trailing-comma-clause.jsonl +2 -0
  555. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline-yong-plain-chinese.jsonl +2 -0
  556. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-branch-baseline.jsonl +2 -0
  557. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-commit-baseline.jsonl +2 -0
  558. package/toolkit/skills/dev-plan/references/replay-cases/positive-explicit-english-branch-baseline-is.jsonl +2 -0
  559. package/toolkit/skills/dev-plan/references/replay-cases/positive-fast-track.jsonl +2 -0
  560. package/toolkit/skills/dev-plan/references/replay-cases/positive-flow-lock-direct-local-merge-skill.jsonl +2 -0
  561. package/toolkit/skills/dev-plan/references/replay-cases/positive-flow-lock-fast-flow-keyed.jsonl +2 -0
  562. package/toolkit/skills/dev-plan/references/replay-cases/positive-flow-lock-latest-explicit-user.jsonl +3 -0
  563. package/toolkit/skills/dev-plan/references/replay-cases/positive-flow-lock-rui.jsonl +3 -0
  564. package/toolkit/skills/dev-plan/references/replay-cases/positive-flow-lock-standalone-normal-punctuation.jsonl +2 -0
  565. package/toolkit/skills/dev-plan/references/replay-cases/positive-formal-review-sidecar.jsonl +2 -0
  566. package/toolkit/skills/dev-plan/references/replay-cases/positive-implement-only-add-tests-reference.jsonl +2 -0
  567. package/toolkit/skills/dev-plan/references/replay-cases/positive-implement-only-parser-reference.jsonl +2 -0
  568. package/toolkit/skills/dev-plan/references/replay-cases/positive-implement-only-pure.jsonl +2 -0
  569. package/toolkit/skills/dev-plan/references/replay-cases/positive-implement-only-update-parser-reference.jsonl +2 -0
  570. package/toolkit/skills/dev-plan/references/replay-cases/positive-large-coupled-default-fast-track.jsonl +2 -0
  571. package/toolkit/skills/dev-plan/references/replay-cases/positive-legacy-direct-no-topology.jsonl +2 -0
  572. package/toolkit/skills/dev-plan/references/replay-cases/positive-legacy-direct-with-topology.jsonl +2 -0
  573. package/toolkit/skills/dev-plan/references/replay-cases/positive-legacy-fast-aggregate.jsonl +2 -0
  574. package/toolkit/skills/dev-plan/references/replay-cases/positive-legacy-unprofiled-subagent.jsonl +2 -0
  575. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-explicit-dev-plan-with-continue-wording.jsonl +4 -0
  576. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-generic-reask.jsonl +4 -0
  577. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-merge-queue-api.jsonl +4 -0
  578. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-merge-ready.jsonl +4 -0
  579. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-no-dev-plan-token.jsonl +4 -0
  580. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-plan-task-wording.jsonl +4 -0
  581. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-replan-merge-ready-clause.jsonl +4 -0
  582. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset-replan-task.jsonl +4 -0
  583. package/toolkit/skills/dev-plan/references/replay-cases/positive-multi-plan-baseline-reset.jsonl +4 -0
  584. package/toolkit/skills/dev-plan/references/replay-cases/positive-no-delivery-topology.jsonl +2 -0
  585. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-agent-decision-log-api.jsonl +2 -0
  586. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-agent-handoff-log-exporter.jsonl +2 -0
  587. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-decision-log-entries.jsonl +2 -0
  588. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-decision-log-ui.jsonl +2 -0
  589. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-future-handoff-log-timeline.jsonl +2 -0
  590. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-handoff-log-ui.jsonl +2 -0
  591. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-next-session-decision-log-api.jsonl +2 -0
  592. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-next-session-decision-log-exporter.jsonl +2 -0
  593. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-pending-state-acceptance.jsonl +2 -0
  594. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-file-upload-api.jsonl +2 -0
  595. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-md-cleanup.jsonl +2 -0
  596. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-md-import-review-page.jsonl +2 -0
  597. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-md-importer.jsonl +2 -0
  598. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-md-planning-ui-import.jsonl +2 -0
  599. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-md-user-upload.jsonl +2 -0
  600. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-template-decision-log-history.jsonl +2 -0
  601. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-plan-template-handoff-log-history.jsonl +2 -0
  602. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal-progress-log-ui.jsonl +2 -0
  603. package/toolkit/skills/dev-plan/references/replay-cases/positive-normal.jsonl +2 -0
  604. package/toolkit/skills/dev-plan/references/replay-cases/positive-runtime-formal-review.jsonl +2 -0
  605. package/toolkit/skills/dev-plan/references/replay-cases/positive-scope-clarification-import-page-no-reset.jsonl +4 -0
  606. package/toolkit/skills/dev-plan/references/replay-cases/positive-scope-clarification-new-plan-file-upload-api-no-reset.jsonl +6 -0
  607. package/toolkit/skills/dev-plan/references/replay-cases/positive-scope-clarification-plan-md-no-reset.jsonl +4 -0
  608. package/toolkit/skills/dev-plan/references/replay-cases/positive-scope-clarification-plan-page-upload-api-no-reset.jsonl +6 -0
  609. package/toolkit/skills/dev-plan/references/replay-cases/positive-skill-binding-fullwidth-comma.jsonl +2 -0
  610. package/toolkit/skills/dev-plan/references/replay-cases/positive-specialist-review-profiles.jsonl +2 -0
  611. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-commit-history-review.jsonl +2 -0
  612. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-descriptive-implementation-review.jsonl +2 -0
  613. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-git-config-worktree-readonly.jsonl +2 -0
  614. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-git-readonly-commands.jsonl +2 -0
  615. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-git-stash-readonly.jsonl +2 -0
  616. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-indirect-readonly-negation.jsonl +2 -0
  617. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-readonly-negation.jsonl +2 -0
  618. package/toolkit/skills/dev-plan/references/replay-cases/positive-subagent-review-implementation.jsonl +2 -0
  619. package/toolkit/skills/dev-plan/references/replay-cases/positive-wave-thread-v2-legacy.jsonl +2 -0
  620. package/toolkit/skills/dev-plan/references/replay-cases/prepare-handoff-log-next-session-artifact.jsonl +2 -0
  621. package/toolkit/skills/dev-plan/references/replay-cases/read-plan-md-handoff-context-artifact.jsonl +2 -0
  622. package/toolkit/skills/dev-plan/references/replay-cases/redundant-execution-steps.jsonl +2 -0
  623. package/toolkit/skills/dev-plan/references/replay-cases/skill-binding-mixed-dollar-and-plain.jsonl +2 -0
  624. package/toolkit/skills/dev-plan/references/replay-cases/skill-binding-no-dollar-prefix.jsonl +2 -0
  625. package/toolkit/skills/dev-plan/references/replay-cases/summary-blank-bullet.jsonl +2 -0
  626. package/toolkit/skills/dev-plan/references/replay-cases/unrelated-flow-wording-default-fast-track.jsonl +2 -0
  627. package/toolkit/skills/dev-plan/references/replay-cases/unrelated-flow-wording.jsonl +3 -0
  628. package/toolkit/skills/dev-plan/references/replay-cases/update-plan-md-implementation-steps-artifact.jsonl +2 -0
  629. package/toolkit/skills/dev-plan/references/replay-cases/wave-sequence-jump.jsonl +2 -0
  630. package/toolkit/skills/dev-plan/references/replay-cases/wave-sequence-repeat.jsonl +2 -0
  631. package/toolkit/skills/dev-plan/scripts/test_migrate_task_orchestration.ts +1 -0
  632. package/toolkit/skills/docs/vendor/dot-codex/README.md +36 -0
  633. package/toolkit/skills/docs/vendor/dot-codex/adr/0001-compose-adrs-with-topic-specs.md +7 -0
  634. package/toolkit/skills/docs/vendor/dot-codex/adr/0002-xp-infra-public-hostname-convention.md +11 -0
  635. package/toolkit/skills/docs/vendor/dot-codex/adr/0003-external-fact-delivery-gates.md +20 -0
  636. package/toolkit/skills/docs/vendor/dot-codex/adr/0003-task-scoped-pr-visual-evidence.md +23 -0
  637. package/toolkit/skills/docs/vendor/dot-codex/adr/0004-scope-authority-and-topic-spec-boundaries.md +28 -0
  638. package/toolkit/skills/docs/vendor/dot-codex/adr/0005-topic-spec-skill-naming.md +27 -0
  639. package/toolkit/skills/docs/vendor/dot-codex/adr/0006-internal-plan-authorization-and-scope-constraints.md +26 -0
  640. package/toolkit/skills/docs/vendor/dot-codex/adr/0007-source-managed-component-evidence.md +26 -0
  641. package/toolkit/skills/docs/vendor/dot-codex/adr/0008-direct-pr-merge-preflight.md +25 -0
  642. package/toolkit/skills/docs/vendor/dot-codex/adr/0009-initiative-child-integration-ci-boundary.md +24 -0
  643. package/toolkit/skills/docs/vendor/dot-codex/adr/0010-post-merge-flow-receipt-finality.md +22 -0
  644. package/toolkit/skills/docs/vendor/dot-codex/adr/0011-parallel-direct-pr-flow.md +25 -0
  645. package/toolkit/skills/docs/vendor/dot-codex/adr/0012-mandatory-local-review-proof.md +23 -0
  646. package/toolkit/skills/docs/vendor/dot-codex/adr/0013-review-necessity-tiering.md +21 -0
  647. package/toolkit/skills/docs/vendor/dot-codex/adr/0014-direct-review-evidence.md +20 -0
  648. package/toolkit/skills/docs/vendor/dot-codex/adr/0015-agent-owned-shared-testbox-workspace.md +12 -0
  649. package/toolkit/skills/docs/vendor/dot-codex/adr/0016-bind-review-repairs-to-approved-scope.md +19 -0
  650. package/toolkit/skills/docs/vendor/dot-codex/adr/0016-pr-lifecycle-workflow-ownership.md +27 -0
  651. package/toolkit/skills/docs/vendor/dot-codex/adr/0017-review-readiness-and-runtime-launch.md +39 -0
  652. package/toolkit/skills/docs/vendor/dot-codex/adr/0018-v5-bootstrap-integration-ci-activation.md +14 -0
  653. package/toolkit/skills/docs/vendor/dot-codex/adr/0019-plan-release-disposition-policy-boundary.md +35 -0
  654. package/toolkit/skills/docs/vendor/dot-codex/adr/0020-code-hosting-platform-boundary.md +9 -0
  655. package/toolkit/skills/docs/vendor/dot-codex/adr/0020-empirical-acceptance-review-gate.md +42 -0
  656. package/toolkit/skills/docs/vendor/dot-codex/adr/0021-runtime-derived-pre-merge-release-route.md +33 -0
  657. package/toolkit/skills/docs/vendor/dot-codex/adr/0022-sandboxed-reg-cli-report-execution.md +31 -0
  658. package/toolkit/skills/docs/vendor/dot-codex/adr/0023-dev-plan-release-delivery-scope.md +24 -0
  659. package/toolkit/skills/docs/vendor/dot-codex/adr/0024-stop-condition-driven-release-decision.md +28 -0
  660. package/toolkit/skills/docs/vendor/dot-codex/adr/0025-native-incus-agent-vm-lifecycle.md +11 -0
  661. package/toolkit/skills/docs/vendor/dot-codex/adr/0026-agent-vm-cpu-memory-overselling.md +44 -0
  662. package/toolkit/skills/docs/vendor/dot-codex/adr/0027-release-tracker-ownership.md +9 -0
  663. package/toolkit/skills/docs/vendor/dot-codex/adr/0028-wave-thread-coordinator.md +22 -0
  664. package/toolkit/skills/docs/vendor/dot-codex/adr/0029-wave-thread-delivery-batches.md +28 -0
  665. package/toolkit/skills/docs/vendor/dot-codex/adr/0030-dev-plan-single-source-wave-thread.md +25 -0
  666. package/toolkit/skills/docs/vendor/dot-codex/adr/0031-dev-plan-owner-review-projection.md +25 -0
  667. package/toolkit/skills/docs/vendor/dot-codex/adr/0032-dev-plan-single-finalization-gate.md +86 -0
  668. package/toolkit/skills/docs/vendor/dot-codex/adr/0032-flow-scoped-model-profile-allowlists.md +36 -0
  669. package/toolkit/skills/docs/vendor/dot-codex/adr/0032-phase-aware-acceptance-gates.md +41 -0
  670. package/toolkit/skills/docs/vendor/dot-codex/adr/0033-bun-typescript-script-runtime.md +41 -0
  671. package/toolkit/skills/docs/vendor/dot-codex/adr/0033-empirical-acceptance-and-repair-autonomy.md +31 -0
  672. package/toolkit/skills/docs/vendor/dot-codex/adr/0034-bun-cli-launch-boundary.md +36 -0
  673. package/toolkit/skills/docs/vendor/dot-codex/adr/0034-priority-aware-review-repair-eligibility.md +16 -0
  674. package/toolkit/skills/docs/vendor/dot-codex/adr/0035-task-orchestration-ledger.md +20 -0
  675. package/toolkit/skills/docs/vendor/dot-codex/adr/0036-task-orchestration-dashboard-experience.md +77 -0
  676. package/toolkit/skills/docs/vendor/dot-codex/adr/0037-dev-plan-multi-task-flow-routing.md +20 -0
  677. package/toolkit/skills/docs/vendor/dot-codex/adr/0038-direct-review-terra-profile.md +27 -0
  678. package/toolkit/skills/docs/vendor/dot-codex/adr/0039-fresh-dispatch-title-contract.md +13 -0
  679. package/toolkit/skills/docs/vendor/dot-codex/adr/0040-dev-plan-standalone-typescript-finalizer.md +25 -0
  680. package/toolkit/skills/docs/vendor/dot-codex/adr/0040-phase-aware-plan-revision-audit.md +35 -0
  681. package/toolkit/skills/docs/vendor/dot-codex/adr/0041-contribution-tasks-and-delivery-units.md +7 -0
  682. package/toolkit/skills/docs/vendor/dot-codex/adr/0041-task-orchestration-dashboard-experience.md +77 -0
  683. package/toolkit/skills/docs/vendor/dot-codex/adr/0042-shared-orchestration-viewer.md +13 -0
  684. package/toolkit/skills/docs/vendor/dot-codex/adr/0043-composite-notification-delivery.md +9 -0
  685. package/toolkit/skills/docs/vendor/dot-codex/adr/0043-external-source-viewer.md +16 -0
  686. package/toolkit/skills/docs/vendor/dot-codex/adr/0044-multi-task-execution-profile-and-cli-conversation-creation.md +28 -0
  687. package/toolkit/skills/docs/vendor/dot-codex/adr/0045-viewer-compatibility-and-maintenance.md +19 -0
  688. package/toolkit/skills/docs/vendor/dot-codex/adr/0046-native-worktree-desktop-handoff.md +24 -0
  689. package/toolkit/skills/docs/vendor/dot-codex/agents/issue-tracker.md +5 -0
  690. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/dashboard-requirements.md +103 -0
  691. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/data-and-scripts.md +297 -0
  692. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/dev-plan-bridge.md +41 -0
  693. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/execution.md +122 -0
  694. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/orchestration.md +106 -0
  695. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/plan-revision-and-change-audit.md +99 -0
  696. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/shared-viewer.md +129 -0
  697. package/toolkit/skills/docs/vendor/dot-codex/design/multi-task-flow/web-template.md +161 -0
  698. package/toolkit/skills/docs/vendor/dot-codex/engineering-workflow.md +261 -0
  699. package/toolkit/skills/docs/vendor/dot-codex/solutions/README.md +112 -0
  700. package/toolkit/skills/docs/vendor/dot-codex/solutions/best-practices/project-doc-promotion.md +51 -0
  701. package/toolkit/skills/docs/vendor/dot-codex/solutions/troubleshooting/private-docker-audit-runtime-snapshot.md +67 -0
  702. package/toolkit/skills/docs/vendor/dot-codex/solutions/workflow-issues/browser-isolated-context-reuse.md +72 -0
  703. package/toolkit/skills/docs/vendor/dot-codex/solutions/workflow-issues/deep-skill-thin-adapter.md +56 -0
  704. package/toolkit/skills/docs/vendor/dot-codex/solutions/workflow-issues/forge-transport-decoupling.md +116 -0
  705. package/toolkit/skills/docs/vendor/dot-codex/solutions/workflow-issues/git-skill-convergence.md +105 -0
  706. package/toolkit/skills/docs/vendor/dot-codex/solutions/workflow-issues/gui-tool-escalation-gate.md +55 -0
  707. package/toolkit/skills/docs/vendor/dot-codex/solutions/workflow-issues/stable-preview-handoff-runtime.md +74 -0
  708. package/toolkit/skills/docs/vendor/dot-codex/specs/2h289-local-merge-cleanup-closeout/HISTORY.md +18 -0
  709. package/toolkit/skills/docs/vendor/dot-codex/specs/2h289-local-merge-cleanup-closeout/IMPLEMENTATION.md +55 -0
  710. package/toolkit/skills/docs/vendor/dot-codex/specs/2h289-local-merge-cleanup-closeout/SPEC.md +137 -0
  711. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/HISTORY.md +20 -0
  712. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/IMPLEMENTATION.md +60 -0
  713. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/SPEC.md +142 -0
  714. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/replay/cases.txt +5 -0
  715. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/replay/negative-dirty-misread-as-approval.jsonl +2 -0
  716. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/replay/negative-promised-merge-branch-skipped.jsonl +4 -0
  717. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/replay/negative-session-approval-evidence-ignored.jsonl +2 -0
  718. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/replay/positive-blocked-with-approval-evidence.jsonl +3 -0
  719. package/toolkit/skills/docs/vendor/dot-codex/specs/4zciv-pr-skill-diagnosis-thinning/replay/positive-dirty-conflict-reported.jsonl +2 -0
  720. package/toolkit/skills/docs/vendor/dot-codex/specs/5dvcj-dev-plan-default-fast-track-auto-lock/HISTORY.md +16 -0
  721. package/toolkit/skills/docs/vendor/dot-codex/specs/5dvcj-dev-plan-default-fast-track-auto-lock/IMPLEMENTATION.md +37 -0
  722. package/toolkit/skills/docs/vendor/dot-codex/specs/5dvcj-dev-plan-default-fast-track-auto-lock/SPEC.md +58 -0
  723. package/toolkit/skills/docs/vendor/dot-codex/specs/5fsxh-viewport-safe-browser-evidence/HISTORY.md +19 -0
  724. package/toolkit/skills/docs/vendor/dot-codex/specs/5fsxh-viewport-safe-browser-evidence/IMPLEMENTATION.md +72 -0
  725. package/toolkit/skills/docs/vendor/dot-codex/specs/5fsxh-viewport-safe-browser-evidence/SPEC.md +170 -0
  726. package/toolkit/skills/docs/vendor/dot-codex/specs/6s9b8-retire-legacy-service-manager/HISTORY.md +18 -0
  727. package/toolkit/skills/docs/vendor/dot-codex/specs/6s9b8-retire-legacy-service-manager/IMPLEMENTATION.md +56 -0
  728. package/toolkit/skills/docs/vendor/dot-codex/specs/6s9b8-retire-legacy-service-manager/SPEC.md +48 -0
  729. package/toolkit/skills/docs/vendor/dot-codex/specs/7uqp8-mainline-baseline-topic-branch-freshness/HISTORY.md +15 -0
  730. package/toolkit/skills/docs/vendor/dot-codex/specs/7uqp8-mainline-baseline-topic-branch-freshness/IMPLEMENTATION.md +68 -0
  731. package/toolkit/skills/docs/vendor/dot-codex/specs/7uqp8-mainline-baseline-topic-branch-freshness/SPEC.md +166 -0
  732. package/toolkit/skills/docs/vendor/dot-codex/specs/8tmdq-local-chat-image-snapshots/HISTORY.md +19 -0
  733. package/toolkit/skills/docs/vendor/dot-codex/specs/8tmdq-local-chat-image-snapshots/IMPLEMENTATION.md +60 -0
  734. package/toolkit/skills/docs/vendor/dot-codex/specs/8tmdq-local-chat-image-snapshots/SPEC.md +151 -0
  735. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/HISTORY.md +69 -0
  736. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/IMPLEMENTATION.md +111 -0
  737. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/SPEC.md +288 -0
  738. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/cases.txt +7 -0
  739. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-before-ui-demo-check.jsonl +4 -0
  740. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/negative-mixed-component-then-full-page-storybook.jsonl +6 -0
  741. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/negative-owner-lock-survives-blocker-before-storybook.jsonl +4 -0
  742. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/negative-owner-locked-web-demo-replaced-by-storybook.jsonl +3 -0
  743. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/positive-component-storybook-allowed.jsonl +3 -0
  744. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/positive-full-page-storybook-fallback-after-no-ui-demo.jsonl +3 -0
  745. package/toolkit/skills/docs/vendor/dot-codex/specs/9878v-shared-ui-visual-evidence-gate/replay/positive-user-allows-storybook-after-no-ui-demo.jsonl +3 -0
  746. package/toolkit/skills/docs/vendor/dot-codex/specs/README.md +110 -0
  747. package/toolkit/skills/docs/vendor/dot-codex/specs/a4ge9-stable-preview-runtime/HISTORY.md +24 -0
  748. package/toolkit/skills/docs/vendor/dot-codex/specs/a4ge9-stable-preview-runtime/IMPLEMENTATION.md +66 -0
  749. package/toolkit/skills/docs/vendor/dot-codex/specs/a4ge9-stable-preview-runtime/SPEC.md +175 -0
  750. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/HISTORY.md +20 -0
  751. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/IMPLEMENTATION.md +64 -0
  752. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/SPEC.md +154 -0
  753. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/cases.txt +11 -0
  754. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/negative-019d681b-active-proof-owner-leak.jsonl +4 -0
  755. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/negative-019d686e-live-exec-owner-leak.jsonl +4 -0
  756. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/negative-focused-session-still-live-owner-leak.jsonl +8 -0
  757. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/negative-running-status-alone-owner-leak.jsonl +4 -0
  758. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/positive-continue-with-extra-request.jsonl +4 -0
  759. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/positive-continue-with-new-owner-input.jsonl +4 -0
  760. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/positive-focused-proof-exits-before-user-nudge.jsonl +10 -0
  761. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/positive-promised-session-exited-before-user-nudge.jsonl +8 -0
  762. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/positive-review-promise-does-not-bind-unrelated-live-session.jsonl +8 -0
  763. package/toolkit/skills/docs/vendor/dot-codex/specs/active-long-task-ownership-wait-guard/replay/positive-terminal-before-user-nudge.jsonl +7 -0
  764. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-instruction-architecture/HISTORY.md +6 -0
  765. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-instruction-architecture/IMPLEMENTATION.md +23 -0
  766. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-instruction-architecture/SPEC.md +85 -0
  767. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-instruction-architecture/replay/baseline-gpt-5.6-sol.json +10 -0
  768. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-instruction-architecture/replay/cases.json +212 -0
  769. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-memory-project-docs/HISTORY.md +20 -0
  770. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-memory-project-docs/IMPLEMENTATION.md +66 -0
  771. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-memory-project-docs/SPEC.md +133 -0
  772. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-vm/HISTORY.md +31 -0
  773. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-vm/IMPLEMENTATION.md +144 -0
  774. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-vm/RECLAMATION-DESIGN.md +72 -0
  775. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-vm/RETENTION-DESIGN.md +17 -0
  776. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-vm/SPEC.md +123 -0
  777. package/toolkit/skills/docs/vendor/dot-codex/specs/agent-vm/contracts/cli.md +82 -0
  778. package/toolkit/skills/docs/vendor/dot-codex/specs/ar7tp-storybook-skill-upgrade/HISTORY.md +23 -0
  779. package/toolkit/skills/docs/vendor/dot-codex/specs/ar7tp-storybook-skill-upgrade/IMPLEMENTATION.md +68 -0
  780. package/toolkit/skills/docs/vendor/dot-codex/specs/ar7tp-storybook-skill-upgrade/SPEC.md +165 -0
  781. package/toolkit/skills/docs/vendor/dot-codex/specs/bb5xj-global-solutions-docs-migrate/HISTORY.md +25 -0
  782. package/toolkit/skills/docs/vendor/dot-codex/specs/bb5xj-global-solutions-docs-migrate/IMPLEMENTATION.md +67 -0
  783. package/toolkit/skills/docs/vendor/dot-codex/specs/bb5xj-global-solutions-docs-migrate/SPEC.md +168 -0
  784. package/toolkit/skills/docs/vendor/dot-codex/specs/code-hosting-platform/HISTORY.md +29 -0
  785. package/toolkit/skills/docs/vendor/dot-codex/specs/code-hosting-platform/IMPLEMENTATION.md +38 -0
  786. package/toolkit/skills/docs/vendor/dot-codex/specs/code-hosting-platform/SPEC.md +100 -0
  787. package/toolkit/skills/docs/vendor/dot-codex/specs/cvm-imagegen-skill/HISTORY.md +22 -0
  788. package/toolkit/skills/docs/vendor/dot-codex/specs/cvm-imagegen-skill/IMPLEMENTATION.md +38 -0
  789. package/toolkit/skills/docs/vendor/dot-codex/specs/cvm-imagegen-skill/SPEC.md +180 -0
  790. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-default-fast-track-auto-lock/HISTORY.md +20 -0
  791. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-default-fast-track-auto-lock/IMPLEMENTATION.md +38 -0
  792. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-default-fast-track-auto-lock/SPEC.md +68 -0
  793. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-flow-lock-options/HISTORY.md +22 -0
  794. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-flow-lock-options/IMPLEMENTATION.md +58 -0
  795. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-flow-lock-options/SPEC.md +74 -0
  796. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-goals-first/HISTORY.md +93 -0
  797. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-goals-first/IMPLEMENTATION.md +131 -0
  798. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-goals-first/SPEC.md +200 -0
  799. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-standalone-typescript-finalizer/HISTORY.md +5 -0
  800. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-standalone-typescript-finalizer/IMPLEMENTATION.md +27 -0
  801. package/toolkit/skills/docs/vendor/dot-codex/specs/dev-plan-standalone-typescript-finalizer/SPEC.md +78 -0
  802. package/toolkit/skills/docs/vendor/dot-codex/specs/dvc8g-dev-plan-goals-first/HISTORY.md +54 -0
  803. package/toolkit/skills/docs/vendor/dot-codex/specs/dvc8g-dev-plan-goals-first/IMPLEMENTATION.md +87 -0
  804. package/toolkit/skills/docs/vendor/dot-codex/specs/dvc8g-dev-plan-goals-first/SPEC.md +171 -0
  805. package/toolkit/skills/docs/vendor/dot-codex/specs/empirical-acceptance-review-gate/HISTORY.md +25 -0
  806. package/toolkit/skills/docs/vendor/dot-codex/specs/empirical-acceptance-review-gate/IMPLEMENTATION.md +43 -0
  807. package/toolkit/skills/docs/vendor/dot-codex/specs/empirical-acceptance-review-gate/SPEC.md +99 -0
  808. package/toolkit/skills/docs/vendor/dot-codex/specs/empirical-acceptance-review-gate/replay/phase-closeout-cases.jsonl +3 -0
  809. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/HISTORY.md +111 -0
  810. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/IMPLEMENTATION.md +195 -0
  811. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/SPEC.md +460 -0
  812. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/cases.txt +256 -0
  813. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/flow-continue-cases.txt +48 -0
  814. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-active-gate-closed-out-early.jsonl +2 -0
  815. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-active-proof-merged-closeout.jsonl +6 -0
  816. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-api-readonly-merge-probe-no-merge.jsonl +5 -0
  817. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-assistant-merge-cleanup-dropped-to-ready.jsonl +3 -0
  818. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-assistant-merge-only-dropped-to-ready.jsonl +3 -0
  819. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-bare-remote-branch-blocked-exemption.jsonl +4 -0
  820. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-behind-auth-regression.jsonl +3 -0
  821. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-anchor-with-no-proof-status.jsonl +3 -0
  822. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-diagnostic-output-no-proof.jsonl +6 -0
  823. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-negated-proof.jsonl +5 -0
  824. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-negated-wont-call.jsonl +5 -0
  825. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-promise-no-proof.jsonl +4 -0
  826. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-promised-skill-call.jsonl +5 -0
  827. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-proof-future-placeholder.jsonl +4 -0
  828. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-proof-pending.jsonl +4 -0
  829. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-proof-unchecked.jsonl +3 -0
  830. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-cleanup-summary-no-proof.jsonl +5 -0
  831. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-delete-branch-without-head-evidence.jsonl +4 -0
  832. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-delete-in-or-fallback-after-merge-success.jsonl +5 -0
  833. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-delete-wrong-remote-branch.jsonl +5 -0
  834. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-earlier-merge-does-not-satisfy-later-intent.jsonl +4 -0
  835. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-english-merged-closeout-no-cleanup.jsonl +3 -0
  836. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-fast-track-distant-stale-current-head.jsonl +4 -0
  837. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-fast-track-later-unknown-current-head.jsonl +5 -0
  838. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-fast-track-nonlive-current-head.jsonl +4 -0
  839. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-fast-track-stale-pr-fact.jsonl +5 -0
  840. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-fast-track-stopped-before-pr.jsonl +4 -0
  841. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-fast-track-unknown-current-head.jsonl +4 -0
  842. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-flow-continue-release-epoch-missing-disposition.jsonl +4 -0
  843. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-flow-continue-release-route-stale.jsonl +3 -0
  844. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-flow-continue-route-null-after-adapter-create.jsonl +4 -0
  845. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-flow-continue-route-null-after-api-field-create.jsonl +4 -0
  846. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-flow-continue-route-null-after-pr-create.jsonl +4 -0
  847. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-flow-continue-user-route-evidence.jsonl +3 -0
  848. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-gh-api-delete-http-error.jsonl +4 -0
  849. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-gh-delete-branch-flag-failed.jsonl +5 -0
  850. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-legacy-scheduled-tracker-tool-first.jsonl +2 -0
  851. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-legacy-scheduled-tracker.jsonl +2 -0
  852. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-base-ahead-auto-updated.jsonl +8 -0
  853. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-base-blocker-no-menu.jsonl +8 -0
  854. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-base-primary-worktree-dirty-blocker-no-menu.jsonl +8 -0
  855. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-cleanup-late-rerun-after-positive-proof.jsonl +10 -0
  856. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-cleanup-late-skip-after-nonpositive-proof.jsonl +10 -0
  857. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-cleanup-nonpositive-proof-skips-cleanup.jsonl +6 -0
  858. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-cleanup-step6-reruns-cleanup.jsonl +6 -0
  859. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-diagnostic-command-no-merge.jsonl +5 -0
  860. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-help-command-no-merge.jsonl +5 -0
  861. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-no-remote-branch-delete.jsonl +4 -0
  862. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-only-dropped-to-ready.jsonl +3 -0
  863. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merge-proof-auth-regression.jsonl +4 -0
  864. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-merged-pr-still-step5c.jsonl +3 -0
  865. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-negated-fork-remote-branch-exists.jsonl +4 -0
  866. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-no-open-pr-still-step5c.jsonl +3 -0
  867. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-no-open-pr-terminal-last-agent-message.jsonl +2 -0
  868. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-plain-merge-dropped-to-ready.jsonl +3 -0
  869. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-post-merge-uses-pr-card.jsonl +4 -0
  870. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-pr-head-nonterminal-result.jsonl +5 -0
  871. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-ready-cleanup-combined-intent.jsonl +3 -0
  872. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-ready-wording-with-cleanup-anchor.jsonl +3 -0
  873. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-actual-sha-mismatch.jsonl +3 -0
  874. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-actual-sha-missing.jsonl +3 -0
  875. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-actual-tag-mismatch.jsonl +3 -0
  876. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-api-opaque-label.jsonl +3 -0
  877. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-api-pr-mutation-before-route.jsonl +2 -0
  878. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-api-unmanaged-label.jsonl +3 -0
  879. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-assistant-idempotency-untrusted.jsonl +4 -0
  880. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-assistant-identity-override.jsonl +4 -0
  881. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-bare-false-evidence.jsonl +2 -0
  882. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-blind-rerun-before-discovery.jsonl +4 -0
  883. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-compound-label.jsonl +3 -0
  884. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-compound-unsafe-rerun.jsonl +3 -0
  885. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-conflicting-artifact-sha.jsonl +3 -0
  886. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-container-tag-mismatch.jsonl +3 -0
  887. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-context-not-applicable.jsonl +2 -0
  888. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-cross-output-identity.jsonl +4 -0
  889. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-cross-repo-rerun.jsonl +5 -0
  890. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-cross-repo-target-ci-rerun.jsonl +4 -0
  891. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-decision-card-missing.jsonl +10 -0
  892. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-decision-confirmation-missing.jsonl +11 -0
  893. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-decision-policy-conflict.jsonl +12 -0
  894. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-decision-route-absence.jsonl +11 -0
  895. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-direct-flow-missing-disposition.jsonl +3 -0
  896. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-disposition-publication-proof.jsonl +2 -0
  897. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-double-rerun-one-call.jsonl +5 -0
  898. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-draft-created-at.jsonl +3 -0
  899. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-draft-not-published.jsonl +3 -0
  900. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-expected-but-not-triggered.jsonl +2 -0
  901. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-expected-premerge.jsonl +6 -0
  902. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-failed-artifact-record.jsonl +3 -0
  903. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-failed-expectation-missing.jsonl +1 -0
  904. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-failed-without-live-fact.jsonl +2 -0
  905. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-failure-report-incomplete.jsonl +3 -0
  906. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-false-but-failed.jsonl +2 -0
  907. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-global-flag-unsafe-rerun.jsonl +3 -0
  908. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-identity-leaks-across-epoch.jsonl +4 -0
  909. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-late-unrelated-idempotency.jsonl +5 -0
  910. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-merge-sha-mismatch.jsonl +13 -0
  911. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-merge-sha-missing.jsonl +12 -0
  912. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-metadata-incomplete.jsonl +3 -0
  913. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-missing-epoch-heartbeat-rebind.jsonl +5 -0
  914. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-mixed-run-failure.jsonl +3 -0
  915. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-multi-identity-incomplete.jsonl +3 -0
  916. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-multi-surface-incomplete.jsonl +3 -0
  917. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-mutation-before-disposition.jsonl +3 -0
  918. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-mutation-without-reresolution.jsonl +3 -0
  919. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-not-triggered-evidence-missing.jsonl +1 -0
  920. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-not-triggered-status-missing.jsonl +2 -0
  921. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-opaque-mismatched-rerun.jsonl +4 -0
  922. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-published-expectation-missing.jsonl +3 -0
  923. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-rerun-flags-before-id.jsonl +3 -0
  924. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-rerun-stale-failure.jsonl +6 -0
  925. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-rerun-without-failure.jsonl +5 -0
  926. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-direct-step5c.jsonl +2 -0
  927. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-epoch-reset.jsonl +4 -0
  928. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-invalid-policy-pr.jsonl +3 -0
  929. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-invalid-policy.jsonl +3 -0
  930. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-invalid-target.jsonl +3 -0
  931. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-null-after-adapter-pr-create.jsonl +5 -0
  932. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-null-after-api-pr-create.jsonl +5 -0
  933. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-null-after-epoch-reset.jsonl +6 -0
  934. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-null-case-mismatch.jsonl +3 -0
  935. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-null-target-mismatched-facts.jsonl +3 -0
  936. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-null-target-without-fact.jsonl +3 -0
  937. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-positive-target-no-open-facts.jsonl +3 -0
  938. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-target-mismatch.jsonl +3 -0
  939. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-unknown-mutates-pr.jsonl +3 -0
  940. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-unknown-step5c.jsonl +3 -0
  941. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-route-unmanaged-label.jsonl +3 -0
  942. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-running-closed-out.jsonl +2 -0
  943. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-same-epoch-expectation-flip.jsonl +4 -0
  944. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-same-epoch-heartbeat-identity-conflict.jsonl +3 -0
  945. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-same-epoch-identity-conflict.jsonl +4 -0
  946. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-sha-mismatch.jsonl +3 -0
  947. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-snapshot-closed-out-early.jsonl +3 -0
  948. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-snapshot-package-metadata.jsonl +3 -0
  949. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-split-artifacts-one-output.jsonl +3 -0
  950. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-split-atomic-identity.jsonl +4 -0
  951. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-split-content-conflict.jsonl +3 -0
  952. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-stale-epoch-publication.jsonl +3 -0
  953. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-stale-evidence.jsonl +3 -0
  954. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-status-entirely-omitted.jsonl +1 -0
  955. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-stringified-split-identity.jsonl +3 -0
  956. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-surfaces-discovered-in-parts.jsonl +4 -0
  957. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-tag-mismatch.jsonl +3 -0
  958. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-target-branch-missing.jsonl +3 -0
  959. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-target-sha-missing.jsonl +3 -0
  960. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-time-invalid.jsonl +3 -0
  961. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-time-mismatch.jsonl +3 -0
  962. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-timeout-recovery-missing.jsonl +2 -0
  963. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-timeout-running.jsonl +2 -0
  964. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-top-level-expectation-conflict.jsonl +2 -0
  965. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-unknown-overwrite.jsonl +4 -0
  966. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-unrelated-disabled-evidence.jsonl +3 -0
  967. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-unresolved-report-fields-missing.jsonl +2 -0
  968. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-unresolved-rerun-id.jsonl +5 -0
  969. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-unresolved-reruns-cleanup.jsonl +6 -0
  970. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-unsafe-reruns.jsonl +5 -0
  971. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-url-mismatch.jsonl +3 -0
  972. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-user-expectation-untrusted.jsonl +3 -0
  973. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-user-route-evidence.jsonl +4 -0
  974. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-version-mismatch.jsonl +3 -0
  975. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-release-workflow-url-mismatch.jsonl +3 -0
  976. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-remote-merge-alias-release-status-missing.jsonl +1 -0
  977. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-remote-merge-release-not-applicable.jsonl +1 -0
  978. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-result-merged-release-not-applicable.jsonl +2 -0
  979. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-apply-only-on-failure-branch.jsonl +4 -0
  980. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-compound-wrong-order.jsonl +4 -0
  981. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-no-actions.jsonl +2 -0
  982. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-stash-apply-conflict.jsonl +8 -0
  983. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-stash-apply-or-true.jsonl +4 -0
  984. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-stash-not-reapplied.jsonl +6 -0
  985. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-stash-pop.jsonl +8 -0
  986. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-stash-without-untracked.jsonl +8 -0
  987. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-safe-align-unrelated-earlier-backup.jsonl +10 -0
  988. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-serialized-release-handoff.jsonl +6 -0
  989. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-structured-remote-merge-release-not-applicable.jsonl +1 -0
  990. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-main-polls-ci.jsonl +8 -0
  991. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-mismatched-phase.jsonl +3 -0
  992. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-mismatched-sha.jsonl +3 -0
  993. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-mismatched-wait.jsonl +3 -0
  994. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-unbound-launch.jsonl +5 -0
  995. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-unrelated-sha.jsonl +4 -0
  996. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-unrelated-wait.jsonl +3 -0
  997. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-wait-timeout.jsonl +4 -0
  998. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-without-card.jsonl +3 -0
  999. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-without-disposition.jsonl +4 -0
  1000. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-without-launch.jsonl +1 -0
  1001. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-without-sha.jsonl +3 -0
  1002. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-without-terminal.jsonl +4 -0
  1003. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-sub-agent-without-wait.jsonl +2 -0
  1004. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-unguarded-direct-merge.jsonl +10 -0
  1005. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/negative-unrelated-remote-branch-absence-output.jsonl +6 -0
  1006. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-api-put-merge-no-cleanup.jsonl +8 -0
  1007. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-assistant-option-text-no-cleanup-intent.jsonl +4 -0
  1008. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-automation-after-followup-boundary.jsonl +3 -0
  1009. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-behind-auto-heal-merge-path.jsonl +3 -0
  1010. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-cleanup-proof-with-base-blocker.jsonl +9 -0
  1011. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-compound-delete-then-verify.jsonl +8 -0
  1012. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-delete-refspec.jsonl +6 -0
  1013. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-delete-with-redirection.jsonl +8 -0
  1014. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-diagnostic-then-merge-same-command.jsonl +10 -0
  1015. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-failed-remote-merge-release-not-applicable.jsonl +4 -0
  1016. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-fast-track-current-head-not-stale.jsonl +4 -0
  1017. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-fast-track-live-pr-closeout.jsonl +5 -0
  1018. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-flow-continue-post-merge-same-message.jsonl +3 -0
  1019. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-flow-continue-post-merge-structured.jsonl +4 -0
  1020. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-flow-continue-release-route-reresolved.jsonl +3 -0
  1021. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-flow-switch-local-proof.jsonl +4 -0
  1022. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-fork-remote-delete-exempt.jsonl +5 -0
  1023. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-gh-api-delete-after-endpoint.jsonl +6 -0
  1024. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-gh-merge-cleanup-handoff.jsonl +11 -0
  1025. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-git-delete-branch-with-error-word.jsonl +6 -0
  1026. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-git-push-origin-d-delete.jsonl +6 -0
  1027. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-guarded-direct-merge.jsonl +11 -0
  1028. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-head-branch-plus-char.jsonl +6 -0
  1029. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-head-branch-prose-punctuation.jsonl +8 -0
  1030. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-historical-automation-ignored.jsonl +6 -0
  1031. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-latest-merge-ready-overrides-cleanup.jsonl +5 -0
  1032. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-local-merge-commit-release-not-applicable.jsonl +1 -0
  1033. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-local-merge-release-not-applicable.jsonl +1 -0
  1034. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-base-ahead-decision-menu.jsonl +9 -0
  1035. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-base-decision-menu.jsonl +9 -0
  1036. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-base-linked-worktree-blocker.jsonl +9 -0
  1037. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-base-split-decision-menu.jsonl +10 -0
  1038. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-cleanup-handoff.jsonl +11 -0
  1039. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-cleanup-nonpositive-proof-keeps-cleanup.jsonl +6 -0
  1040. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-cleanup-release-resumes-pr-merge.jsonl +6 -0
  1041. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-cleanup-rerun-then-step6-resume.jsonl +10 -0
  1042. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-cleanup-step6-resumes-pr-merge.jsonl +6 -0
  1043. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-failed-no-cleanup-required.jsonl +4 -0
  1044. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-only-merge-no-cleanup.jsonl +10 -0
  1045. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-proof-writable-convergence.jsonl +5 -0
  1046. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-ready-stop.jsonl +4 -0
  1047. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-merge-with-gh-repo-flag.jsonl +8 -0
  1048. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-multiline-delete-script.jsonl +6 -0
  1049. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-negated-automation-mention.jsonl +1 -0
  1050. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-nonflow-metadata-local-proof.jsonl +3 -0
  1051. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-parallel-release-handoff.jsonl +6 -0
  1052. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-path-qualified-gh-merge-no-cleanup.jsonl +10 -0
  1053. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-plain-merge-no-cleanup.jsonl +10 -0
  1054. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-post-merge-repo-watcher.jsonl +1 -0
  1055. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-pr-head-ci-card.jsonl +5 -0
  1056. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-pr-head-defer.jsonl +1 -0
  1057. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-ptc-structured-tracker-card.jsonl +1 -0
  1058. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-ptc-tracker-card.jsonl +1 -0
  1059. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-ready-merge-pr-stop.jsonl +4 -0
  1060. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-api-readonly-label.jsonl +3 -0
  1061. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-container-alias-tag.jsonl +3 -0
  1062. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-container-only-published.jsonl +3 -0
  1063. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-decision-card-confirmed.jsonl +12 -0
  1064. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-decision-card-published.jsonl +13 -0
  1065. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-decision-card-single-message.jsonl +12 -0
  1066. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-declared-image-name.jsonl +3 -0
  1067. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-disposition-separation.jsonl +2 -0
  1068. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-equivalent-sha-blocks.jsonl +3 -0
  1069. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-failed-no-rerun.jsonl +3 -0
  1070. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-false-same-epoch-heartbeat.jsonl +3 -0
  1071. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-github-enterprise.jsonl +3 -0
  1072. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-idempotent-rerun-published.jsonl +7 -0
  1073. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-ignores-other-epoch-surfaces.jsonl +4 -0
  1074. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-ignores-pr-ci-rerun.jsonl +5 -0
  1075. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-ignores-pr-head-ci-rerun.jsonl +5 -0
  1076. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-late-run-id.jsonl +4 -0
  1077. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-no-managed-route.jsonl +3 -0
  1078. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-non-ghcr-package.jsonl +3 -0
  1079. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-not-triggered.jsonl +3 -0
  1080. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-published-with-metadata.jsonl +3 -0
  1081. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-readonly-pr-facts.jsonl +3 -0
  1082. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-repeated-same-epoch.jsonl +4 -0
  1083. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-route-managed-label.jsonl +3 -0
  1084. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-split-content-discovery.jsonl +3 -0
  1085. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-string-discovery.jsonl +3 -0
  1086. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-string-output-published.jsonl +3 -0
  1087. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-structured-content-discovery.jsonl +3 -0
  1088. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-structured-disabled.jsonl +2 -0
  1089. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-structured-identity.jsonl +3 -0
  1090. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-success-false-rerun-published.jsonl +7 -0
  1091. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-text-wrapper-discovery.jsonl +3 -0
  1092. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-timeout-incomplete.jsonl +2 -0
  1093. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-tracker-unavailable.jsonl +2 -0
  1094. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-unknown-reresolved.jsonl +5 -0
  1095. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-unknown-unresolved.jsonl +2 -0
  1096. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-unresolved-resumes-pr-merge.jsonl +6 -0
  1097. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-v-prefixed-tag.jsonl +3 -0
  1098. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-workflow-url-before-run-id.jsonl +4 -0
  1099. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-release-workflow-url-failure-no-run-id.jsonl +3 -0
  1100. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-remote-branch-not-found-verification.jsonl +6 -0
  1101. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-backup-at-head.jsonl +8 -0
  1102. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-backup-name-without-backup-word.jsonl +8 -0
  1103. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-clean-no-stash-created.jsonl +6 -0
  1104. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-completion-ahead.jsonl +8 -0
  1105. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-force-backup-branch.jsonl +8 -0
  1106. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-later-backup-command.jsonl +8 -0
  1107. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-restores-dirty-untracked.jsonl +8 -0
  1108. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-stash-apply-exit-guard.jsonl +4 -0
  1109. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-stash-apply-fallback-after-index-error.jsonl +4 -0
  1110. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-safe-align-stash-apply-fallback.jsonl +4 -0
  1111. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-shell-command-array-merge-no-cleanup.jsonl +10 -0
  1112. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-shell-script-merge-no-cleanup.jsonl +8 -0
  1113. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-shell-wrapped-compound-delete.jsonl +6 -0
  1114. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-shell-wrapped-merge-no-cleanup.jsonl +8 -0
  1115. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-sub-agent-ci-wait.jsonl +5 -0
  1116. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-unrelated-automation-update.jsonl +1 -0
  1117. package/toolkit/skills/docs/vendor/dot-codex/specs/fast-track-merge-intent-closeout/replay/positive-unrelated-sidecar-phase-text.jsonl +1 -0
  1118. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/HISTORY.md +26 -0
  1119. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/IMPLEMENTATION.md +77 -0
  1120. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/SPEC.md +183 -0
  1121. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/cases.txt +47 -0
  1122. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-assistant-narration-clears-ui-confirmation.jsonl +4 -0
  1123. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-chinese-initiative-alias-drift.jsonl +3 -0
  1124. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-contradictory-permit-base-advance-routed.jsonl +4 -0
  1125. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-draft-bootstrap-permit-base-advance-routed.jsonl +5 -0
  1126. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-duplicate-load-skill-argument-routed.jsonl +5 -0
  1127. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-extra-load-skill-argument-routed.jsonl +5 -0
  1128. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-flow-switch-after-repair-continue-routed.jsonl +5 -0
  1129. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-incomplete-permit-base-advance-routed.jsonl +5 -0
  1130. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-initiative-flow-chinese-alias-drift.jsonl +3 -0
  1131. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-invalidated-permit-base-advance-routed.jsonl +6 -0
  1132. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-issued-permit-base-fast-forward-not-resumed.jsonl +5 -0
  1133. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-latest-untrusted-permit-base-advance-routed.jsonl +6 -0
  1134. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-locked-fast-track-drift-to-local-merge.jsonl +5 -0
  1135. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-merge-path-review-feedback-needs-auth.jsonl +6 -0
  1136. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-mixed-visual-status-cannot-clear-confirmation.jsonl +3 -0
  1137. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-negated-permit-base-advance-routed.jsonl +5 -0
  1138. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-noncanonical-base-relation-routed.jsonl +5 -0
  1139. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-noncanonical-live-pr-match-routed.jsonl +4 -0
  1140. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-noncanonical-python-repair-wave-routed.jsonl +5 -0
  1141. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-partial-refresh-permit-base-advance-routed.jsonl +5 -0
  1142. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-pending-ui-confirmation-routed-to-pr-create.jsonl +4 -0
  1143. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-pr-create-with-convergence-reopen.jsonl +4 -0
  1144. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-rejected-route-retry-routed.jsonl +7 -0
  1145. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-repair-wave-bare-head-routed.jsonl +5 -0
  1146. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-repair-wave-empty-values-routed.jsonl +4 -0
  1147. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-repair-wave-sentinel-routed.jsonl +5 -0
  1148. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-repair-wave-unknown-option-routed.jsonl +5 -0
  1149. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-same-event-visual-request-and-pr-route.jsonl +1 -0
  1150. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-shell-repair-wave-routed.jsonl +5 -0
  1151. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-textual-pr-create-not-routed.jsonl +5 -0
  1152. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-top-level-convergence-reopen-routed.jsonl +5 -0
  1153. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/negative-untrusted-permit-base-advance-routed.jsonl +3 -0
  1154. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-canonical-pr-merge-procedure.jsonl +5 -0
  1155. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-canonical-pr-publication-procedure.jsonl +4 -0
  1156. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-confirmed-ui-routes-to-pr-create.jsonl +4 -0
  1157. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-explicit-local-merge-switch.jsonl +5 -0
  1158. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-generic-continue-stays-initiative.jsonl +4 -0
  1159. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-generic-merge-stays-fast-track.jsonl +4 -0
  1160. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-invalidated-permit-base-advance-stays-blocked.jsonl +6 -0
  1161. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-issued-permit-base-fast-forward-opens-repair-wave.jsonl +5 -0
  1162. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-issued-permit-base-fast-forward-resumes.jsonl +5 -0
  1163. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-issued-permit-repair-wave-without-head.jsonl +5 -0
  1164. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-merge-path-review-feedback-routes-pr-create.jsonl +6 -0
  1165. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-negated-merge-does-not-resume-repair.jsonl +4 -0
  1166. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-ordinary-pr-create-without-recovery-facts.jsonl +4 -0
  1167. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/positive-unchanged-ui-routes-to-pr-create.jsonl +3 -0
  1168. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/python-oracle.json +304 -0
  1169. package/toolkit/skills/docs/vendor/dot-codex/specs/flow-continue-lock-guard/replay/session-019ce28f-bc31-7d02-990f-c9f02c1bf028.jsonl +5 -0
  1170. package/toolkit/skills/docs/vendor/dot-codex/specs/fresh-thread-dispatch/HISTORY.md +20 -0
  1171. package/toolkit/skills/docs/vendor/dot-codex/specs/fresh-thread-dispatch/IMPLEMENTATION.md +28 -0
  1172. package/toolkit/skills/docs/vendor/dot-codex/specs/fresh-thread-dispatch/SPEC.md +87 -0
  1173. package/toolkit/skills/docs/vendor/dot-codex/specs/git-skill-convergence/HISTORY.md +28 -0
  1174. package/toolkit/skills/docs/vendor/dot-codex/specs/git-skill-convergence/IMPLEMENTATION.md +50 -0
  1175. package/toolkit/skills/docs/vendor/dot-codex/specs/git-skill-convergence/SPEC.md +174 -0
  1176. package/toolkit/skills/docs/vendor/dot-codex/specs/global-port-preview-governance/HISTORY.md +31 -0
  1177. package/toolkit/skills/docs/vendor/dot-codex/specs/global-port-preview-governance/IMPLEMENTATION.md +73 -0
  1178. package/toolkit/skills/docs/vendor/dot-codex/specs/global-port-preview-governance/SPEC.md +219 -0
  1179. package/toolkit/skills/docs/vendor/dot-codex/specs/global-solutions-docs-migrate/HISTORY.md +25 -0
  1180. package/toolkit/skills/docs/vendor/dot-codex/specs/global-solutions-docs-migrate/IMPLEMENTATION.md +67 -0
  1181. package/toolkit/skills/docs/vendor/dot-codex/specs/global-solutions-docs-migrate/SPEC.md +168 -0
  1182. package/toolkit/skills/docs/vendor/dot-codex/specs/gn7xq-gui-escalation-gate/HISTORY.md +12 -0
  1183. package/toolkit/skills/docs/vendor/dot-codex/specs/gn7xq-gui-escalation-gate/IMPLEMENTATION.md +20 -0
  1184. package/toolkit/skills/docs/vendor/dot-codex/specs/gn7xq-gui-escalation-gate/SPEC.md +99 -0
  1185. package/toolkit/skills/docs/vendor/dot-codex/specs/gn7xq-gui-escalation-gate/replay/cases.txt +3 -0
  1186. package/toolkit/skills/docs/vendor/dot-codex/specs/gn7xq-gui-escalation-gate/replay/negative-chrome-fallback-after-ego-browser-failed.jsonl +2 -0
  1187. package/toolkit/skills/docs/vendor/dot-codex/specs/gn7xq-gui-escalation-gate/replay/negative-chrome-fallback-after-ego-browser-unavailable.jsonl +2 -0
  1188. package/toolkit/skills/docs/vendor/dot-codex/specs/gn7xq-gui-escalation-gate/replay/positive-ego-browser-first.jsonl +2 -0
  1189. package/toolkit/skills/docs/vendor/dot-codex/specs/gui-escalation-gate/HISTORY.md +12 -0
  1190. package/toolkit/skills/docs/vendor/dot-codex/specs/gui-escalation-gate/IMPLEMENTATION.md +20 -0
  1191. package/toolkit/skills/docs/vendor/dot-codex/specs/gui-escalation-gate/SPEC.md +99 -0
  1192. package/toolkit/skills/docs/vendor/dot-codex/specs/gui-escalation-gate/replay/cases.txt +3 -0
  1193. package/toolkit/skills/docs/vendor/dot-codex/specs/gui-escalation-gate/replay/negative-chrome-fallback-after-ego-browser-failed.jsonl +2 -0
  1194. package/toolkit/skills/docs/vendor/dot-codex/specs/gui-escalation-gate/replay/negative-chrome-fallback-after-ego-browser-unavailable.jsonl +2 -0
  1195. package/toolkit/skills/docs/vendor/dot-codex/specs/gui-escalation-gate/replay/positive-ego-browser-first.jsonl +2 -0
  1196. package/toolkit/skills/docs/vendor/dot-codex/specs/hd86w-pr-wait-state-closeout/HISTORY.md +18 -0
  1197. package/toolkit/skills/docs/vendor/dot-codex/specs/hd86w-pr-wait-state-closeout/IMPLEMENTATION.md +58 -0
  1198. package/toolkit/skills/docs/vendor/dot-codex/specs/hd86w-pr-wait-state-closeout/SPEC.md +110 -0
  1199. package/toolkit/skills/docs/vendor/dot-codex/specs/initiative-flow/HISTORY.md +11 -0
  1200. package/toolkit/skills/docs/vendor/dot-codex/specs/initiative-flow/IMPLEMENTATION.md +16 -0
  1201. package/toolkit/skills/docs/vendor/dot-codex/specs/initiative-flow/SPEC.md +72 -0
  1202. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/HISTORY.md +18 -0
  1203. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/IMPLEMENTATION.md +60 -0
  1204. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/SPEC.md +123 -0
  1205. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/replay/cases.txt +6 -0
  1206. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/replay/negative-conflict-escalated-to-owner.jsonl +2 -0
  1207. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/replay/negative-conflict-hidden-as-ci-absence.jsonl +2 -0
  1208. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/replay/positive-conflict-auto-heal-routed.jsonl +2 -0
  1209. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/replay/positive-manual-only-no-checks.jsonl +1 -0
  1210. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/replay/positive-merge-only-conflict-auto-heal.jsonl +3 -0
  1211. package/toolkit/skills/docs/vendor/dot-codex/specs/j4ha2-pr-conflict-auto-heal/replay/positive-pull-request-target-conflict-runs.jsonl +2 -0
  1212. package/toolkit/skills/docs/vendor/dot-codex/specs/k4n8p-dev-plan-flow-lock-options/HISTORY.md +22 -0
  1213. package/toolkit/skills/docs/vendor/dot-codex/specs/k4n8p-dev-plan-flow-lock-options/IMPLEMENTATION.md +58 -0
  1214. package/toolkit/skills/docs/vendor/dot-codex/specs/k4n8p-dev-plan-flow-lock-options/SPEC.md +70 -0
  1215. package/toolkit/skills/docs/vendor/dot-codex/specs/local-chat-image-snapshots/HISTORY.md +20 -0
  1216. package/toolkit/skills/docs/vendor/dot-codex/specs/local-chat-image-snapshots/IMPLEMENTATION.md +71 -0
  1217. package/toolkit/skills/docs/vendor/dot-codex/specs/local-chat-image-snapshots/SPEC.md +196 -0
  1218. package/toolkit/skills/docs/vendor/dot-codex/specs/local-chat-image-snapshots/replay/cases.json +74 -0
  1219. package/toolkit/skills/docs/vendor/dot-codex/specs/local-merge-cleanup-closeout/HISTORY.md +18 -0
  1220. package/toolkit/skills/docs/vendor/dot-codex/specs/local-merge-cleanup-closeout/IMPLEMENTATION.md +55 -0
  1221. package/toolkit/skills/docs/vendor/dot-codex/specs/local-merge-cleanup-closeout/SPEC.md +137 -0
  1222. package/toolkit/skills/docs/vendor/dot-codex/specs/m3k8q-review-proof-dedupe-wait-guard/HISTORY.md +19 -0
  1223. package/toolkit/skills/docs/vendor/dot-codex/specs/m3k8q-review-proof-dedupe-wait-guard/IMPLEMENTATION.md +65 -0
  1224. package/toolkit/skills/docs/vendor/dot-codex/specs/m3k8q-review-proof-dedupe-wait-guard/SPEC.md +137 -0
  1225. package/toolkit/skills/docs/vendor/dot-codex/specs/m3k8q-review-proof-dedupe-wait-guard/replay/cases.txt +5 -0
  1226. package/toolkit/skills/docs/vendor/dot-codex/specs/m3k8q-review-proof-dedupe-wait-guard/replay/negative-live-proof-duplicate-launch.jsonl +4 -0
  1227. package/toolkit/skills/docs/vendor/dot-codex/specs/m3k8q-review-proof-dedupe-wait-guard/replay/positive-single-proof-polling.jsonl +6 -0
  1228. package/toolkit/skills/docs/vendor/dot-codex/specs/mainline-baseline-topic-branch-freshness/HISTORY.md +15 -0
  1229. package/toolkit/skills/docs/vendor/dot-codex/specs/mainline-baseline-topic-branch-freshness/IMPLEMENTATION.md +68 -0
  1230. package/toolkit/skills/docs/vendor/dot-codex/specs/mainline-baseline-topic-branch-freshness/SPEC.md +166 -0
  1231. package/toolkit/skills/docs/vendor/dot-codex/specs/mandatory-local-review-proof/HISTORY.md +17 -0
  1232. package/toolkit/skills/docs/vendor/dot-codex/specs/mandatory-local-review-proof/IMPLEMENTATION.md +31 -0
  1233. package/toolkit/skills/docs/vendor/dot-codex/specs/mandatory-local-review-proof/SPEC.md +111 -0
  1234. package/toolkit/skills/docs/vendor/dot-codex/specs/mcu-agentd-retirement/HISTORY.md +31 -0
  1235. package/toolkit/skills/docs/vendor/dot-codex/specs/mcu-agentd-retirement/IMPLEMENTATION.md +61 -0
  1236. package/toolkit/skills/docs/vendor/dot-codex/specs/mcu-agentd-retirement/SPEC.md +70 -0
  1237. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/HISTORY.md +72 -0
  1238. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/IMPLEMENTATION.md +144 -0
  1239. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/SCHEMA-CONSTRAINTS.md +87 -0
  1240. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/SCHEMA.md +249 -0
  1241. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/SPEC.md +363 -0
  1242. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/archive-compact.png +0 -0
  1243. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/bootstrap-ownership.png +0 -0
  1244. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/card-hover-board-group-time-desktop.png +0 -0
  1245. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/card-hover-board-group-time-mobile.png +0 -0
  1246. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/card-hover-board-time-mobile.png +0 -0
  1247. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/card-hover-conversation-desktop.png +0 -0
  1248. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/card-hover-pr-desktop.png +0 -0
  1249. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/card-hover-time-desktop.png +0 -0
  1250. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/dashboard-desktop.png +0 -0
  1251. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/dashboard-mobile.png +0 -0
  1252. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/dependency-status-time.png +0 -0
  1253. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/detail-viewport-desktop.png +0 -0
  1254. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/detail-viewport-medium.png +0 -0
  1255. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/detail-viewport-mobile.png +0 -0
  1256. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/execution-profile-default.png +0 -0
  1257. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/execution-profile-desktop.png +0 -0
  1258. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/execution-profile-menu.png +0 -0
  1259. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/execution-profile-mobile.png +0 -0
  1260. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/latest-output-desktop.png +0 -0
  1261. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/latest-output-hover.png +0 -0
  1262. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/output-tooltip-boundary.png +0 -0
  1263. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/plan-warning-desktop.png +0 -0
  1264. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/plan-warning-mobile.png +0 -0
  1265. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/responsive-inspector.png +0 -0
  1266. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/shared-run-mobile.png +0 -0
  1267. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/shared-runs.png +0 -0
  1268. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/assets/source-preview.png +0 -0
  1269. package/toolkit/skills/docs/vendor/dot-codex/specs/multi-task-flow/native-handoff-compatibility.json +43 -0
  1270. package/toolkit/skills/docs/vendor/dot-codex/specs/p6m2r-pr-live-github-truth-source/HISTORY.md +20 -0
  1271. package/toolkit/skills/docs/vendor/dot-codex/specs/p6m2r-pr-live-github-truth-source/IMPLEMENTATION.md +62 -0
  1272. package/toolkit/skills/docs/vendor/dot-codex/specs/p6m2r-pr-live-github-truth-source/SPEC.md +122 -0
  1273. package/toolkit/skills/docs/vendor/dot-codex/specs/parallel-pr-flow/HISTORY.md +5 -0
  1274. package/toolkit/skills/docs/vendor/dot-codex/specs/parallel-pr-flow/IMPLEMENTATION.md +16 -0
  1275. package/toolkit/skills/docs/vendor/dot-codex/specs/parallel-pr-flow/SPEC.md +41 -0
  1276. package/toolkit/skills/docs/vendor/dot-codex/specs/pj4fz-pr-post-open-scope-freeze/HISTORY.md +23 -0
  1277. package/toolkit/skills/docs/vendor/dot-codex/specs/pj4fz-pr-post-open-scope-freeze/IMPLEMENTATION.md +58 -0
  1278. package/toolkit/skills/docs/vendor/dot-codex/specs/pj4fz-pr-post-open-scope-freeze/SPEC.md +103 -0
  1279. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/HISTORY.md +22 -0
  1280. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/IMPLEMENTATION.md +61 -0
  1281. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/SPEC.md +154 -0
  1282. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/replay/cases.txt +6 -0
  1283. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/replay/negative-conflict-escalated-to-owner.jsonl +2 -0
  1284. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/replay/negative-conflict-hidden-as-ci-absence.jsonl +2 -0
  1285. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/replay/positive-conflict-auto-heal-routed.jsonl +2 -0
  1286. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/replay/positive-manual-only-no-checks.jsonl +1 -0
  1287. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/replay/positive-merge-only-conflict-auto-heal.jsonl +3 -0
  1288. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-conflict-auto-heal/replay/positive-pull-request-target-conflict-runs.jsonl +2 -0
  1289. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-convergence-batching/HISTORY.md +61 -0
  1290. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-convergence-batching/IMPLEMENTATION.md +106 -0
  1291. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-convergence-batching/SPEC.md +244 -0
  1292. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-convergence-batching/replay/first-round-parallel-barrier.json +320 -0
  1293. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-freshness-gate/HISTORY.md +22 -0
  1294. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-freshness-gate/IMPLEMENTATION.md +58 -0
  1295. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-freshness-gate/SPEC.md +45 -0
  1296. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-live-github-truth-source/HISTORY.md +24 -0
  1297. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-live-github-truth-source/IMPLEMENTATION.md +64 -0
  1298. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-live-github-truth-source/SPEC.md +168 -0
  1299. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-post-open-scope-freeze/HISTORY.md +25 -0
  1300. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-post-open-scope-freeze/IMPLEMENTATION.md +59 -0
  1301. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-post-open-scope-freeze/SPEC.md +105 -0
  1302. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/HISTORY.md +20 -0
  1303. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/IMPLEMENTATION.md +62 -0
  1304. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/SPEC.md +150 -0
  1305. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/cases.txt +12 -0
  1306. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-dirty-misread-as-approval.jsonl +2 -0
  1307. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-draft-bootstrap-and-convergence-same-event.jsonl +1 -0
  1308. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-draft-convergence-before-owner-confirmation.jsonl +2 -0
  1309. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-draft-direct-gh-convergence-before-owner-confirmation.jsonl +2 -0
  1310. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-draft-mixed-visual-status-cannot-clear-confirmation.jsonl +4 -0
  1311. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-draft-render-surface-change-after-confirmation.jsonl +5 -0
  1312. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-promised-merge-branch-skipped.jsonl +4 -0
  1313. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/negative-session-approval-evidence-ignored.jsonl +2 -0
  1314. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/positive-blocked-with-approval-evidence.jsonl +3 -0
  1315. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/positive-dirty-conflict-reported.jsonl +2 -0
  1316. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/positive-draft-confirmation-before-convergence.jsonl +4 -0
  1317. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-skill-diagnosis-thinning/replay/positive-draft-unchanged-feedback-before-convergence.jsonl +3 -0
  1318. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-wait-state-closeout/HISTORY.md +18 -0
  1319. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-wait-state-closeout/IMPLEMENTATION.md +57 -0
  1320. package/toolkit/skills/docs/vendor/dot-codex/specs/pr-wait-state-closeout/SPEC.md +110 -0
  1321. package/toolkit/skills/docs/vendor/dot-codex/specs/q3wyh-cvm-imagegen-skill/HISTORY.md +20 -0
  1322. package/toolkit/skills/docs/vendor/dot-codex/specs/q3wyh-cvm-imagegen-skill/IMPLEMENTATION.md +33 -0
  1323. package/toolkit/skills/docs/vendor/dot-codex/specs/q3wyh-cvm-imagegen-skill/SPEC.md +151 -0
  1324. package/toolkit/skills/docs/vendor/dot-codex/specs/q9r2m-review-proof-ownership/HISTORY.md +19 -0
  1325. package/toolkit/skills/docs/vendor/dot-codex/specs/q9r2m-review-proof-ownership/IMPLEMENTATION.md +57 -0
  1326. package/toolkit/skills/docs/vendor/dot-codex/specs/q9r2m-review-proof-ownership/SPEC.md +136 -0
  1327. package/toolkit/skills/docs/vendor/dot-codex/specs/qyd57-agent-memory-project-docs/HISTORY.md +20 -0
  1328. package/toolkit/skills/docs/vendor/dot-codex/specs/qyd57-agent-memory-project-docs/IMPLEMENTATION.md +66 -0
  1329. package/toolkit/skills/docs/vendor/dot-codex/specs/qyd57-agent-memory-project-docs/SPEC.md +133 -0
  1330. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/HISTORY.md +95 -0
  1331. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/IMPLEMENTATION.md +176 -0
  1332. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/SPEC.md +370 -0
  1333. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/cases.txt +199 -0
  1334. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/flow-continue-cases.txt +37 -0
  1335. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-active-gate-closed-out-early.jsonl +2 -0
  1336. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-active-proof-merged-closeout.jsonl +6 -0
  1337. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-api-readonly-merge-probe-no-merge.jsonl +5 -0
  1338. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-assistant-merge-cleanup-dropped-to-ready.jsonl +3 -0
  1339. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-assistant-merge-only-dropped-to-ready.jsonl +3 -0
  1340. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-bare-remote-branch-blocked-exemption.jsonl +4 -0
  1341. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-behind-auth-regression.jsonl +3 -0
  1342. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-anchor-with-no-proof-status.jsonl +3 -0
  1343. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-diagnostic-output-no-proof.jsonl +6 -0
  1344. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-negated-proof.jsonl +5 -0
  1345. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-negated-wont-call.jsonl +5 -0
  1346. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-promise-no-proof.jsonl +4 -0
  1347. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-promised-skill-call.jsonl +5 -0
  1348. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-proof-future-placeholder.jsonl +4 -0
  1349. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-proof-pending.jsonl +4 -0
  1350. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-proof-unchecked.jsonl +3 -0
  1351. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-cleanup-summary-no-proof.jsonl +5 -0
  1352. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-delete-branch-without-head-evidence.jsonl +4 -0
  1353. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-delete-in-or-fallback-after-merge-success.jsonl +5 -0
  1354. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-delete-wrong-remote-branch.jsonl +5 -0
  1355. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-earlier-merge-does-not-satisfy-later-intent.jsonl +4 -0
  1356. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-english-merged-closeout-no-cleanup.jsonl +3 -0
  1357. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-gh-api-delete-http-error.jsonl +4 -0
  1358. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-gh-delete-branch-flag-failed.jsonl +5 -0
  1359. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-legacy-scheduled-tracker-tool-first.jsonl +2 -0
  1360. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-legacy-scheduled-tracker.jsonl +2 -0
  1361. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-base-ahead-auto-updated.jsonl +8 -0
  1362. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-base-blocker-no-menu.jsonl +8 -0
  1363. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-base-primary-worktree-dirty-blocker-no-menu.jsonl +8 -0
  1364. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-cleanup-late-rerun-after-positive-proof.jsonl +10 -0
  1365. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-cleanup-late-skip-after-nonpositive-proof.jsonl +10 -0
  1366. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-cleanup-nonpositive-proof-skips-cleanup.jsonl +6 -0
  1367. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-cleanup-step6-reruns-cleanup.jsonl +6 -0
  1368. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-diagnostic-command-no-merge.jsonl +5 -0
  1369. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-help-command-no-merge.jsonl +5 -0
  1370. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-no-remote-branch-delete.jsonl +4 -0
  1371. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-only-dropped-to-ready.jsonl +3 -0
  1372. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-merge-proof-auth-regression.jsonl +4 -0
  1373. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-negated-fork-remote-branch-exists.jsonl +4 -0
  1374. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-no-open-pr-still-step5c.jsonl +3 -0
  1375. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-no-open-pr-terminal-last-agent-message.jsonl +2 -0
  1376. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-plain-merge-dropped-to-ready.jsonl +3 -0
  1377. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-post-merge-uses-pr-card.jsonl +4 -0
  1378. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-pr-head-nonterminal-result.jsonl +5 -0
  1379. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-ready-cleanup-combined-intent.jsonl +3 -0
  1380. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-ready-wording-with-cleanup-anchor.jsonl +3 -0
  1381. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-actual-sha-mismatch.jsonl +3 -0
  1382. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-actual-sha-missing.jsonl +3 -0
  1383. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-actual-tag-mismatch.jsonl +3 -0
  1384. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-assistant-idempotency-untrusted.jsonl +4 -0
  1385. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-assistant-identity-override.jsonl +4 -0
  1386. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-bare-false-evidence.jsonl +2 -0
  1387. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-blind-rerun-before-discovery.jsonl +4 -0
  1388. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-compound-unsafe-rerun.jsonl +3 -0
  1389. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-conflicting-artifact-sha.jsonl +3 -0
  1390. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-container-tag-mismatch.jsonl +3 -0
  1391. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-context-not-applicable.jsonl +2 -0
  1392. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-cross-output-identity.jsonl +4 -0
  1393. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-cross-repo-rerun.jsonl +5 -0
  1394. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-cross-repo-target-ci-rerun.jsonl +4 -0
  1395. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-double-rerun-one-call.jsonl +5 -0
  1396. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-draft-created-at.jsonl +3 -0
  1397. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-draft-not-published.jsonl +3 -0
  1398. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-expected-but-not-triggered.jsonl +2 -0
  1399. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-failed-artifact-record.jsonl +3 -0
  1400. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-failed-expectation-missing.jsonl +1 -0
  1401. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-failed-without-live-fact.jsonl +2 -0
  1402. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-failure-report-incomplete.jsonl +3 -0
  1403. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-false-but-failed.jsonl +2 -0
  1404. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-global-flag-unsafe-rerun.jsonl +3 -0
  1405. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-identity-leaks-across-epoch.jsonl +4 -0
  1406. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-late-unrelated-idempotency.jsonl +5 -0
  1407. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-metadata-incomplete.jsonl +3 -0
  1408. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-missing-epoch-heartbeat-rebind.jsonl +5 -0
  1409. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-mixed-run-failure.jsonl +3 -0
  1410. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-multi-identity-incomplete.jsonl +3 -0
  1411. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-multi-surface-incomplete.jsonl +3 -0
  1412. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-not-triggered-evidence-missing.jsonl +1 -0
  1413. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-not-triggered-status-missing.jsonl +2 -0
  1414. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-opaque-mismatched-rerun.jsonl +4 -0
  1415. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-published-expectation-missing.jsonl +3 -0
  1416. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-rerun-flags-before-id.jsonl +3 -0
  1417. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-rerun-stale-failure.jsonl +5 -0
  1418. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-rerun-without-failure.jsonl +5 -0
  1419. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-running-closed-out.jsonl +2 -0
  1420. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-same-epoch-expectation-flip.jsonl +4 -0
  1421. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-same-epoch-heartbeat-identity-conflict.jsonl +3 -0
  1422. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-same-epoch-identity-conflict.jsonl +4 -0
  1423. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-sha-mismatch.jsonl +3 -0
  1424. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-snapshot-closed-out-early.jsonl +3 -0
  1425. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-snapshot-package-metadata.jsonl +3 -0
  1426. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-split-artifacts-one-output.jsonl +3 -0
  1427. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-split-atomic-identity.jsonl +4 -0
  1428. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-split-content-conflict.jsonl +3 -0
  1429. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-stale-epoch-publication.jsonl +3 -0
  1430. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-stale-evidence.jsonl +3 -0
  1431. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-status-entirely-omitted.jsonl +1 -0
  1432. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-stringified-split-identity.jsonl +3 -0
  1433. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-surfaces-discovered-in-parts.jsonl +4 -0
  1434. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-tag-mismatch.jsonl +3 -0
  1435. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-target-branch-missing.jsonl +3 -0
  1436. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-target-sha-missing.jsonl +3 -0
  1437. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-time-invalid.jsonl +3 -0
  1438. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-time-mismatch.jsonl +3 -0
  1439. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-timeout-recovery-missing.jsonl +2 -0
  1440. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-timeout-running.jsonl +2 -0
  1441. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-top-level-expectation-conflict.jsonl +2 -0
  1442. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-unrelated-disabled-evidence.jsonl +3 -0
  1443. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-unresolved-report-fields-missing.jsonl +2 -0
  1444. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-unresolved-rerun-id.jsonl +5 -0
  1445. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-unresolved-reruns-cleanup.jsonl +6 -0
  1446. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-unsafe-reruns.jsonl +5 -0
  1447. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-url-mismatch.jsonl +3 -0
  1448. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-user-expectation-untrusted.jsonl +3 -0
  1449. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-version-mismatch.jsonl +3 -0
  1450. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-release-workflow-url-mismatch.jsonl +3 -0
  1451. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-remote-merge-alias-release-status-missing.jsonl +1 -0
  1452. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-remote-merge-release-not-applicable.jsonl +1 -0
  1453. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-result-merged-release-not-applicable.jsonl +2 -0
  1454. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-apply-only-on-failure-branch.jsonl +4 -0
  1455. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-compound-wrong-order.jsonl +4 -0
  1456. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-no-actions.jsonl +2 -0
  1457. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-stash-apply-conflict.jsonl +8 -0
  1458. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-stash-apply-or-true.jsonl +4 -0
  1459. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-stash-not-reapplied.jsonl +6 -0
  1460. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-stash-pop.jsonl +8 -0
  1461. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-stash-without-untracked.jsonl +8 -0
  1462. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-safe-align-unrelated-earlier-backup.jsonl +10 -0
  1463. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-structured-remote-merge-release-not-applicable.jsonl +1 -0
  1464. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-main-polls-ci.jsonl +8 -0
  1465. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-mismatched-phase.jsonl +3 -0
  1466. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-mismatched-sha.jsonl +3 -0
  1467. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-mismatched-wait.jsonl +3 -0
  1468. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-unbound-launch.jsonl +5 -0
  1469. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-unrelated-sha.jsonl +4 -0
  1470. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-unrelated-wait.jsonl +3 -0
  1471. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-wait-timeout.jsonl +4 -0
  1472. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-without-card.jsonl +3 -0
  1473. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-without-disposition.jsonl +4 -0
  1474. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-without-launch.jsonl +1 -0
  1475. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-without-sha.jsonl +3 -0
  1476. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-without-terminal.jsonl +4 -0
  1477. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-sub-agent-without-wait.jsonl +2 -0
  1478. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/negative-unrelated-remote-branch-absence-output.jsonl +6 -0
  1479. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-api-put-merge-no-cleanup.jsonl +8 -0
  1480. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-assistant-option-text-no-cleanup-intent.jsonl +3 -0
  1481. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-automation-after-followup-boundary.jsonl +3 -0
  1482. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-behind-auto-heal-merge-path.jsonl +3 -0
  1483. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-cleanup-proof-with-base-blocker.jsonl +9 -0
  1484. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-compound-delete-then-verify.jsonl +8 -0
  1485. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-delete-refspec.jsonl +6 -0
  1486. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-delete-with-redirection.jsonl +8 -0
  1487. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-diagnostic-then-merge-same-command.jsonl +9 -0
  1488. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-failed-remote-merge-release-not-applicable.jsonl +4 -0
  1489. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-fork-remote-delete-exempt.jsonl +5 -0
  1490. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-gh-api-delete-after-endpoint.jsonl +6 -0
  1491. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-gh-merge-cleanup-handoff.jsonl +10 -0
  1492. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-git-delete-branch-with-error-word.jsonl +6 -0
  1493. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-git-push-origin-d-delete.jsonl +6 -0
  1494. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-head-branch-plus-char.jsonl +6 -0
  1495. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-head-branch-prose-punctuation.jsonl +8 -0
  1496. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-historical-automation-ignored.jsonl +6 -0
  1497. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-latest-merge-ready-overrides-cleanup.jsonl +4 -0
  1498. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-local-merge-commit-release-not-applicable.jsonl +1 -0
  1499. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-local-merge-release-not-applicable.jsonl +1 -0
  1500. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-base-ahead-decision-menu.jsonl +9 -0
  1501. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-base-decision-menu.jsonl +9 -0
  1502. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-base-linked-worktree-blocker.jsonl +9 -0
  1503. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-base-split-decision-menu.jsonl +10 -0
  1504. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-cleanup-handoff.jsonl +10 -0
  1505. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-cleanup-nonpositive-proof-keeps-cleanup.jsonl +6 -0
  1506. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-cleanup-release-resumes-pr-merge.jsonl +6 -0
  1507. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-cleanup-rerun-then-step6-resume.jsonl +10 -0
  1508. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-cleanup-step6-resumes-pr-merge.jsonl +6 -0
  1509. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-failed-no-cleanup-required.jsonl +4 -0
  1510. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-only-merge-no-cleanup.jsonl +9 -0
  1511. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-proof-writable-convergence.jsonl +4 -0
  1512. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-ready-stop.jsonl +3 -0
  1513. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-merge-with-gh-repo-flag.jsonl +8 -0
  1514. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-multiline-delete-script.jsonl +6 -0
  1515. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-negated-automation-mention.jsonl +1 -0
  1516. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-path-qualified-gh-merge-no-cleanup.jsonl +9 -0
  1517. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-plain-merge-no-cleanup.jsonl +9 -0
  1518. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-post-merge-repo-watcher.jsonl +1 -0
  1519. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-pr-head-ci-card.jsonl +5 -0
  1520. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-pr-head-defer.jsonl +1 -0
  1521. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-ready-merge-pr-stop.jsonl +3 -0
  1522. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-container-alias-tag.jsonl +3 -0
  1523. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-container-only-published.jsonl +3 -0
  1524. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-declared-image-name.jsonl +3 -0
  1525. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-equivalent-sha-blocks.jsonl +3 -0
  1526. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-failed-no-rerun.jsonl +3 -0
  1527. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-false-same-epoch-heartbeat.jsonl +3 -0
  1528. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-github-enterprise.jsonl +3 -0
  1529. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-idempotent-rerun-published.jsonl +6 -0
  1530. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-ignores-other-epoch-surfaces.jsonl +4 -0
  1531. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-ignores-pr-ci-rerun.jsonl +5 -0
  1532. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-ignores-pr-head-ci-rerun.jsonl +5 -0
  1533. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-late-run-id.jsonl +4 -0
  1534. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-non-ghcr-package.jsonl +3 -0
  1535. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-not-triggered.jsonl +3 -0
  1536. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-published-with-metadata.jsonl +3 -0
  1537. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-repeated-same-epoch.jsonl +4 -0
  1538. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-split-content-discovery.jsonl +3 -0
  1539. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-string-discovery.jsonl +3 -0
  1540. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-string-output-published.jsonl +3 -0
  1541. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-structured-content-discovery.jsonl +3 -0
  1542. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-structured-disabled.jsonl +2 -0
  1543. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-structured-identity.jsonl +3 -0
  1544. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-success-false-rerun-published.jsonl +6 -0
  1545. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-text-wrapper-discovery.jsonl +3 -0
  1546. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-timeout-incomplete.jsonl +2 -0
  1547. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-tracker-unavailable.jsonl +2 -0
  1548. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-unknown-unresolved.jsonl +2 -0
  1549. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-unresolved-resumes-pr-merge.jsonl +6 -0
  1550. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-v-prefixed-tag.jsonl +3 -0
  1551. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-workflow-url-before-run-id.jsonl +4 -0
  1552. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-release-workflow-url-failure-no-run-id.jsonl +3 -0
  1553. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-remote-branch-not-found-verification.jsonl +6 -0
  1554. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-backup-at-head.jsonl +8 -0
  1555. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-backup-name-without-backup-word.jsonl +8 -0
  1556. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-clean-no-stash-created.jsonl +6 -0
  1557. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-completion-ahead.jsonl +8 -0
  1558. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-force-backup-branch.jsonl +8 -0
  1559. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-later-backup-command.jsonl +8 -0
  1560. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-restores-dirty-untracked.jsonl +8 -0
  1561. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-stash-apply-exit-guard.jsonl +4 -0
  1562. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-stash-apply-fallback-after-index-error.jsonl +4 -0
  1563. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-safe-align-stash-apply-fallback.jsonl +4 -0
  1564. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-shell-command-array-merge-no-cleanup.jsonl +9 -0
  1565. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-shell-script-merge-no-cleanup.jsonl +8 -0
  1566. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-shell-wrapped-compound-delete.jsonl +6 -0
  1567. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-shell-wrapped-merge-no-cleanup.jsonl +8 -0
  1568. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-sub-agent-ci-wait.jsonl +5 -0
  1569. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-unrelated-automation-update.jsonl +1 -0
  1570. package/toolkit/skills/docs/vendor/dot-codex/specs/r4m7k-fast-track-merge-intent-closeout/replay/positive-unrelated-sidecar-phase-text.jsonl +1 -0
  1571. package/toolkit/skills/docs/vendor/dot-codex/specs/release-tracking/HISTORY.md +7 -0
  1572. package/toolkit/skills/docs/vendor/dot-codex/specs/release-tracking/IMPLEMENTATION.md +58 -0
  1573. package/toolkit/skills/docs/vendor/dot-codex/specs/release-tracking/SPEC.md +78 -0
  1574. package/toolkit/skills/docs/vendor/dot-codex/specs/release-tracking/replay/cases.txt +4 -0
  1575. package/toolkit/skills/docs/vendor/dot-codex/specs/release-tracking/replay/manual-recovery-positive.jsonl +1 -0
  1576. package/toolkit/skills/docs/vendor/dot-codex/specs/release-tracking/replay/tracking-heartbeat-negative.jsonl +2 -0
  1577. package/toolkit/skills/docs/vendor/dot-codex/specs/release-tracking/replay/unrelated-automation-positive.jsonl +2 -0
  1578. package/toolkit/skills/docs/vendor/dot-codex/specs/retire-legacy-service-manager/HISTORY.md +18 -0
  1579. package/toolkit/skills/docs/vendor/dot-codex/specs/retire-legacy-service-manager/IMPLEMENTATION.md +56 -0
  1580. package/toolkit/skills/docs/vendor/dot-codex/specs/retire-legacy-service-manager/SPEC.md +48 -0
  1581. package/toolkit/skills/docs/vendor/dot-codex/specs/review-effort-by-pr-stage/HISTORY.md +24 -0
  1582. package/toolkit/skills/docs/vendor/dot-codex/specs/review-effort-by-pr-stage/IMPLEMENTATION.md +60 -0
  1583. package/toolkit/skills/docs/vendor/dot-codex/specs/review-effort-by-pr-stage/SPEC.md +110 -0
  1584. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/HISTORY.md +23 -0
  1585. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/IMPLEMENTATION.md +67 -0
  1586. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/SPEC.md +62 -0
  1587. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/replay/cases.txt +6 -0
  1588. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/replay/negative-exec-session-wait-misuse.jsonl +3 -0
  1589. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/replay/negative-helper-review-wrapper.jsonl +1 -0
  1590. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/replay/negative-live-proof-duplicate-launch.jsonl +4 -0
  1591. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/replay/negative-non-direct-review-launch.jsonl +1 -0
  1592. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-dedupe-wait-guard/replay/positive-single-proof-polling.jsonl +6 -0
  1593. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-ownership/HISTORY.md +22 -0
  1594. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-ownership/IMPLEMENTATION.md +60 -0
  1595. package/toolkit/skills/docs/vendor/dot-codex/specs/review-proof-ownership/SPEC.md +39 -0
  1596. package/toolkit/skills/docs/vendor/dot-codex/specs/s7gvk-pr-freshness-gate/HISTORY.md +18 -0
  1597. package/toolkit/skills/docs/vendor/dot-codex/specs/s7gvk-pr-freshness-gate/IMPLEMENTATION.md +56 -0
  1598. package/toolkit/skills/docs/vendor/dot-codex/specs/s7gvk-pr-freshness-gate/SPEC.md +140 -0
  1599. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-testbox-heavy-validation/HISTORY.md +11 -0
  1600. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-testbox-heavy-validation/IMPLEMENTATION.md +5 -0
  1601. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-testbox-heavy-validation/SPEC.md +29 -0
  1602. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/HISTORY.md +86 -0
  1603. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/IMPLEMENTATION.md +133 -0
  1604. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/SPEC.md +80 -0
  1605. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/cases.txt +64 -0
  1606. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-confirmation-invalidated-by-candidate-change.jsonl +4 -0
  1607. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-after-owner-approval.jsonl +3 -0
  1608. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-after-qualified-ui-demo.jsonl +4 -0
  1609. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-ambiguous-multi-page-route.jsonl +2 -0
  1610. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-before-ui-demo-check.jsonl +4 -0
  1611. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-chinese-unrelated-approval.jsonl +3 -0
  1612. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-conditional-approval.jsonl +3 -0
  1613. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-conditional-exception-followup.jsonl +3 -0
  1614. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-conditional-ui-demo-absence-chinese.jsonl +3 -0
  1615. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-conditional-ui-demo-absence.jsonl +3 -0
  1616. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-cross-sentence-condition.jsonl +3 -0
  1617. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-denial-is-page-scoped.jsonl +2 -0
  1618. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-disallowed-approval.jsonl +3 -0
  1619. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-disapproved-approval.jsonl +3 -0
  1620. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-double-negated-ui-demo.jsonl +3 -0
  1621. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-english-not-yet-approved.jsonl +3 -0
  1622. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-english-question-about-approval.jsonl +3 -0
  1623. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-exception-before-route-does-not-leak.jsonl +5 -0
  1624. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-exception-does-not-leak.jsonl +6 -0
  1625. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-fallback-without-explicit-exception.jsonl +3 -0
  1626. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-generic-page-request-does-not-leak.jsonl +5 -0
  1627. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-long-negation.jsonl +3 -0
  1628. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-mixed-ui-demo-state.jsonl +4 -0
  1629. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-multi-page-grant-inherits.jsonl +2 -0
  1630. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-multiple-owner-locks.jsonl +2 -0
  1631. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-no-exception-after-component.jsonl +3 -0
  1632. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-not-authorized.jsonl +3 -0
  1633. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-not-yet-approved.jsonl +3 -0
  1634. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-only-after-approval.jsonl +3 -0
  1635. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-other-page-source-revocation.jsonl +3 -0
  1636. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-owner-lock-after-component.jsonl +3 -0
  1637. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-page-absence-does-not-leak.jsonl +2 -0
  1638. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-page-scoped-authorization.jsonl +2 -0
  1639. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-page-state-resets-with-component.jsonl +3 -0
  1640. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-question-about-approval.jsonl +3 -0
  1641. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-trailing-page-denial.jsonl +2 -0
  1642. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-unapproved-approval.jsonl +3 -0
  1643. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-unrelated-approval.jsonl +3 -0
  1644. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-unrelated-fallback-revocation.jsonl +3 -0
  1645. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-full-page-storybook-unrelated-release-approval.jsonl +3 -0
  1646. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-implementation-approval-is-not-visual-confirmation.jsonl +3 -0
  1647. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-local-pr-before-owner-confirmation.jsonl +2 -0
  1648. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-mixed-component-then-full-page-storybook.jsonl +6 -0
  1649. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-mixed-visual-status-cannot-clear-confirmation.jsonl +3 -0
  1650. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-owner-lock-survives-blocker-before-storybook.jsonl +4 -0
  1651. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-owner-locked-english-ui-demo-replaced-by-storybook.jsonl +3 -0
  1652. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-owner-locked-web-demo-replaced-by-storybook.jsonl +3 -0
  1653. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-same-event-visual-request-and-pr-route.jsonl +1 -0
  1654. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/negative-visual-rejection-is-not-acceptance.jsonl +3 -0
  1655. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-active-spec-page-storybook-exception.jsonl +3 -0
  1656. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-component-only-page-context.jsonl +3 -0
  1657. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-component-storybook-allowed.jsonl +3 -0
  1658. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-full-page-storybook-can-use-grant.jsonl +3 -0
  1659. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-full-page-storybook-current-approval-supersedes-denial.jsonl +3 -0
  1660. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-full-page-storybook-owner-lock-is-page-scoped.jsonl +3 -0
  1661. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-full-page-storybook-owner-lock-revoked.jsonl +3 -0
  1662. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-full-page-storybook-qualified-ui-demo-unavailable.jsonl +3 -0
  1663. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-full-page-storybook-with-unqualified-ui-demo.jsonl +3 -0
  1664. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-legacy-card-is-ignored.jsonl +3 -0
  1665. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-local-confirmation-before-pr.jsonl +3 -0
  1666. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-owner-locked-page-component-storybook.jsonl +3 -0
  1667. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-project-documentation-page-storybook-exception.jsonl +3 -0
  1668. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-unchanged-visual-evidence-before-pr.jsonl +2 -0
  1669. package/toolkit/skills/docs/vendor/dot-codex/specs/shared-ui-visual-evidence-gate/replay/positive-user-allows-storybook-after-no-ui-demo.jsonl +3 -0
  1670. package/toolkit/skills/docs/vendor/dot-codex/specs/stable-preview-runtime/HISTORY.md +24 -0
  1671. package/toolkit/skills/docs/vendor/dot-codex/specs/stable-preview-runtime/IMPLEMENTATION.md +66 -0
  1672. package/toolkit/skills/docs/vendor/dot-codex/specs/stable-preview-runtime/SPEC.md +173 -0
  1673. package/toolkit/skills/docs/vendor/dot-codex/specs/storybook-skill-upgrade/HISTORY.md +23 -0
  1674. package/toolkit/skills/docs/vendor/dot-codex/specs/storybook-skill-upgrade/IMPLEMENTATION.md +69 -0
  1675. package/toolkit/skills/docs/vendor/dot-codex/specs/storybook-skill-upgrade/SPEC.md +189 -0
  1676. package/toolkit/skills/docs/vendor/dot-codex/specs/syj6s-pr-convergence-batching/HISTORY.md +27 -0
  1677. package/toolkit/skills/docs/vendor/dot-codex/specs/syj6s-pr-convergence-batching/IMPLEMENTATION.md +66 -0
  1678. package/toolkit/skills/docs/vendor/dot-codex/specs/syj6s-pr-convergence-batching/SPEC.md +147 -0
  1679. package/toolkit/skills/docs/vendor/dot-codex/specs/sz4cs-global-port-preview-governance/HISTORY.md +28 -0
  1680. package/toolkit/skills/docs/vendor/dot-codex/specs/sz4cs-global-port-preview-governance/IMPLEMENTATION.md +75 -0
  1681. package/toolkit/skills/docs/vendor/dot-codex/specs/sz4cs-global-port-preview-governance/SPEC.md +219 -0
  1682. package/toolkit/skills/docs/vendor/dot-codex/specs/topic-spec-model/HISTORY.md +41 -0
  1683. package/toolkit/skills/docs/vendor/dot-codex/specs/topic-spec-model/IMPLEMENTATION.md +74 -0
  1684. package/toolkit/skills/docs/vendor/dot-codex/specs/topic-spec-model/SPEC.md +58 -0
  1685. package/toolkit/skills/docs/vendor/dot-codex/specs/viewport-safe-browser-evidence/HISTORY.md +19 -0
  1686. package/toolkit/skills/docs/vendor/dot-codex/specs/viewport-safe-browser-evidence/IMPLEMENTATION.md +72 -0
  1687. package/toolkit/skills/docs/vendor/dot-codex/specs/viewport-safe-browser-evidence/SPEC.md +168 -0
  1688. package/toolkit/skills/docs/vendor/dot-codex/specs/visual-evidence-whitespace-trim/HISTORY.md +22 -0
  1689. package/toolkit/skills/docs/vendor/dot-codex/specs/visual-evidence-whitespace-trim/IMPLEMENTATION.md +63 -0
  1690. package/toolkit/skills/docs/vendor/dot-codex/specs/visual-evidence-whitespace-trim/SPEC.md +76 -0
  1691. package/toolkit/skills/docs/vendor/dot-codex/specs/vw73w-visual-evidence-whitespace-trim/HISTORY.md +22 -0
  1692. package/toolkit/skills/docs/vendor/dot-codex/specs/vw73w-visual-evidence-whitespace-trim/IMPLEMENTATION.md +63 -0
  1693. package/toolkit/skills/docs/vendor/dot-codex/specs/vw73w-visual-evidence-whitespace-trim/SPEC.md +76 -0
  1694. package/toolkit/skills/docs/vendor/dot-codex/specs/w7yqp-git-skill-convergence/HISTORY.md +28 -0
  1695. package/toolkit/skills/docs/vendor/dot-codex/specs/w7yqp-git-skill-convergence/IMPLEMENTATION.md +50 -0
  1696. package/toolkit/skills/docs/vendor/dot-codex/specs/w7yqp-git-skill-convergence/SPEC.md +176 -0
  1697. package/toolkit/skills/docs/vendor/dot-codex/specs/wave-thread-flow/HISTORY.md +37 -0
  1698. package/toolkit/skills/docs/vendor/dot-codex/specs/wave-thread-flow/IMPLEMENTATION.md +5 -0
  1699. package/toolkit/skills/docs/vendor/dot-codex/specs/wave-thread-flow/SPEC.md +20 -0
  1700. package/toolkit/skills/docs/vendor/dot-codex/specs/weppn-topic-spec-model/HISTORY.md +31 -0
  1701. package/toolkit/skills/docs/vendor/dot-codex/specs/weppn-topic-spec-model/IMPLEMENTATION.md +66 -0
  1702. package/toolkit/skills/docs/vendor/dot-codex/specs/weppn-topic-spec-model/SPEC.md +178 -0
  1703. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-agent-model-selection/HISTORY.md +29 -0
  1704. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-agent-model-selection/IMPLEMENTATION.md +42 -0
  1705. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-agent-model-selection/SPEC.md +86 -0
  1706. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-execution-receipts/HISTORY.md +69 -0
  1707. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-execution-receipts/IMPLEMENTATION.md +17 -0
  1708. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-execution-receipts/SPEC.md +56 -0
  1709. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-execution-receipts/contracts/review-orchestration-retirement.md +45 -0
  1710. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-execution-receipts/replay/classification-cases.json +62 -0
  1711. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-execution-receipts/replay/convergence-cases.json +22 -0
  1712. package/toolkit/skills/docs/vendor/dot-codex/specs/workflow-execution-receipts/replay/review-wave-cases.json +9 -0
  1713. package/toolkit/skills/docs/vendor/dot-codex/specs/xp-infra-public-hostname-convention/HISTORY.md +15 -0
  1714. package/toolkit/skills/docs/vendor/dot-codex/specs/xp-infra-public-hostname-convention/IMPLEMENTATION.md +26 -0
  1715. package/toolkit/skills/docs/vendor/dot-codex/specs/xp-infra-public-hostname-convention/SPEC.md +125 -0
  1716. package/toolkit/skills/docs/vendor/dot-codex/specs/y9nrr-review-effort-by-pr-stage/HISTORY.md +21 -0
  1717. package/toolkit/skills/docs/vendor/dot-codex/specs/y9nrr-review-effort-by-pr-stage/IMPLEMENTATION.md +60 -0
  1718. package/toolkit/skills/docs/vendor/dot-codex/specs/y9nrr-review-effort-by-pr-stage/SPEC.md +108 -0
  1719. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/HISTORY.md +20 -0
  1720. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/IMPLEMENTATION.md +59 -0
  1721. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/SPEC.md +135 -0
  1722. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/replay/cases.txt +6 -0
  1723. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/replay/negative-locked-fast-track-drift-to-local-merge.jsonl +5 -0
  1724. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/replay/negative-merge-path-review-feedback-needs-auth.jsonl +6 -0
  1725. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/replay/positive-explicit-local-merge-switch.jsonl +5 -0
  1726. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/replay/positive-generic-merge-stays-fast-track.jsonl +4 -0
  1727. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/replay/positive-merge-path-review-feedback-routes-pr-create.jsonl +6 -0
  1728. package/toolkit/skills/docs/vendor/dot-codex/specs/yr954-flow-continue-lock-guard/replay/session-019ce28f-bc31-7d02-990f-c9f02c1bf028.jsonl +5 -0
  1729. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/HISTORY.md +18 -0
  1730. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/IMPLEMENTATION.md +63 -0
  1731. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/SPEC.md +151 -0
  1732. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/cases.txt +11 -0
  1733. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/negative-019d681b-active-proof-owner-leak.jsonl +4 -0
  1734. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/negative-019d686e-live-exec-owner-leak.jsonl +4 -0
  1735. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/negative-focused-session-still-live-owner-leak.jsonl +8 -0
  1736. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/negative-running-status-alone-owner-leak.jsonl +4 -0
  1737. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/positive-continue-with-extra-request.jsonl +4 -0
  1738. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/positive-continue-with-new-owner-input.jsonl +4 -0
  1739. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/positive-focused-proof-exits-before-user-nudge.jsonl +10 -0
  1740. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/positive-promised-session-exited-before-user-nudge.jsonl +8 -0
  1741. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/positive-review-promise-does-not-bind-unrelated-live-session.jsonl +8 -0
  1742. package/toolkit/skills/docs/vendor/dot-codex/specs/zmp5f-active-long-task-ownership-wait-guard/replay/positive-terminal-before-user-nudge.jsonl +7 -0
  1743. package/toolkit/skills/docs-migrate/SKILL.md +103 -0
  1744. package/toolkit/skills/docs-migrate/agents/openai.yaml +2 -0
  1745. package/toolkit/skills/docs-migrate/references/mode-fixtures.md +53 -0
  1746. package/toolkit/skills/docs-migrate/references/project-docs-mode.md +30 -0
  1747. package/toolkit/skills/docs-migrate/references/solutions-mode.md +175 -0
  1748. package/toolkit/skills/docs-migrate/references/specs-hygiene-mode.md +33 -0
  1749. package/toolkit/skills/docs-migrate/references/specs-mode.md +32 -0
  1750. package/toolkit/skills/docs-migrate/scripts/gen_legacy_spec_id.ts +4 -0
  1751. package/toolkit/skills/docs-migrate/scripts/specs_migrate_guard.ts +4 -0
  1752. package/toolkit/skills/docs-migrate/scripts/test_gen_legacy_spec_id.ts +1 -0
  1753. package/toolkit/skills/docs-migrate/scripts/test_specs_migrate_guard.ts +1 -0
  1754. package/toolkit/skills/dot-codex-development/SKILL.md +48 -0
  1755. package/toolkit/skills/dot-codex-development/agents/openai.yaml +4 -0
  1756. package/toolkit/skills/dot-codex-development/scripts/context.ts +3 -0
  1757. package/toolkit/skills/dot-codex-development/scripts/test_context.ts +1 -0
  1758. package/toolkit/skills/fast-flow/SKILL.md +46 -0
  1759. package/toolkit/skills/find-next-plan/SKILL.md +70 -0
  1760. package/toolkit/skills/find-next-plan/agents/openai.yaml +2 -0
  1761. package/toolkit/skills/find-next-plan/scripts/find_next_plan.ts +4 -0
  1762. package/toolkit/skills/find-next-plan/scripts/test_find_next_plan.ts +1 -0
  1763. package/toolkit/skills/flow-continue/SKILL.md +72 -0
  1764. package/toolkit/skills/fresh-thread-dispatch/SKILL.md +83 -0
  1765. package/toolkit/skills/fresh-thread-dispatch/agents/openai.yaml +4 -0
  1766. package/toolkit/skills/fresh-thread-dispatch/references/handoff-envelope.md +65 -0
  1767. package/toolkit/skills/git-branch/SKILL.md +81 -0
  1768. package/toolkit/skills/git-cleanup/SKILL.md +200 -0
  1769. package/toolkit/skills/git-cleanup/scripts/closeout_context.ts +4 -0
  1770. package/toolkit/skills/git-cleanup/scripts/closeout_gate.ts +4 -0
  1771. package/toolkit/skills/git-cleanup/scripts/local_merge_closeout_context.ts +4 -0
  1772. package/toolkit/skills/git-cleanup/scripts/local_merge_closeout_gate.ts +4 -0
  1773. package/toolkit/skills/git-cleanup/scripts/test_closeout_context.ts +1 -0
  1774. package/toolkit/skills/git-cleanup/scripts/test_closeout_gate.ts +1 -0
  1775. package/toolkit/skills/git-cleanup/scripts/test_local_merge_closeout_context.ts +1 -0
  1776. package/toolkit/skills/git-cleanup/scripts/test_local_merge_closeout_gate.ts +1 -0
  1777. package/toolkit/skills/git-worktree/SKILL.md +99 -0
  1778. package/toolkit/skills/global-port-manager/SKILL.md +190 -0
  1779. package/toolkit/skills/global-port-manager/scripts/port_registry.ts +4 -0
  1780. package/toolkit/skills/global-port-manager/scripts/test_port_registry.ts +1 -0
  1781. package/toolkit/skills/gui-escalation-gate/SKILL.md +106 -0
  1782. package/toolkit/skills/hardware-doc-ingest/SKILL.md +143 -0
  1783. package/toolkit/skills/hardware-doc-ingest/references/docs-index-format.md +34 -0
  1784. package/toolkit/skills/hardware-doc-ingest/scripts/ingest_mineru_extract.ts +4 -0
  1785. package/toolkit/skills/hardware-doc-ingest/scripts/verify_doc_locks.ts +4 -0
  1786. package/toolkit/skills/implement-only-flow/SKILL.md +38 -0
  1787. package/toolkit/skills/kaisoumail-deployment-inventory/SKILL.md +38 -0
  1788. package/toolkit/skills/kaisoumail-deployment-inventory/agents/openai.yaml +7 -0
  1789. package/toolkit/skills/kaisoumail-deployment-inventory/references/current-topology.md +152 -0
  1790. package/toolkit/skills/kaisoumail-deployment-inventory/references/stable-identity.md +32 -0
  1791. package/toolkit/skills/local-merge-flow/SKILL.md +32 -0
  1792. package/toolkit/skills/multi-task-flow/SKILL.md +115 -0
  1793. package/toolkit/skills/multi-task-flow/bun.lock +314 -0
  1794. package/toolkit/skills/multi-task-flow/data/.gitignore +2 -0
  1795. package/toolkit/skills/multi-task-flow/dist/app.css +2 -0
  1796. package/toolkit/skills/multi-task-flow/dist/app.js +1375 -0
  1797. package/toolkit/skills/multi-task-flow/dist/index.html +95 -0
  1798. package/toolkit/skills/multi-task-flow/examples/README.md +11 -0
  1799. package/toolkit/skills/multi-task-flow/examples/ledger-initialization/README.md +5 -0
  1800. package/toolkit/skills/multi-task-flow/examples/ledger-initialization/initial.json +45 -0
  1801. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/README.md +22 -0
  1802. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/index.ts +64 -0
  1803. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/ledger.ts +176 -0
  1804. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/link-verification.json +19 -0
  1805. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/group-core.md +11 -0
  1806. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/group-dashboard.md +11 -0
  1807. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-acceptance.md +10 -0
  1808. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-dashboard-ui.md +10 -0
  1809. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-deploy.md +10 -0
  1810. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-integration.md +10 -0
  1811. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-ledger.md +10 -0
  1812. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-model.md +10 -0
  1813. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-release.md +10 -0
  1814. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-scheduler.md +10 -0
  1815. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-server.md +10 -0
  1816. package/toolkit/skills/multi-task-flow/examples/orchestration-viewer/requirements/task-verify.md +10 -0
  1817. package/toolkit/skills/multi-task-flow/examples/single-delivery-unit/README.md +14 -0
  1818. package/toolkit/skills/multi-task-flow/examples/single-delivery-unit/ledger.ts +118 -0
  1819. package/toolkit/skills/multi-task-flow/examples/single-delivery-unit/outputs.ts +37 -0
  1820. package/toolkit/skills/multi-task-flow/lib/codex-agent-api.ts +399 -0
  1821. package/toolkit/skills/multi-task-flow/lib/codex-cli-create.ts +169 -0
  1822. package/toolkit/skills/multi-task-flow/lib/codex-desktop-follower.ts +264 -0
  1823. package/toolkit/skills/multi-task-flow/lib/codex-observer.ts +166 -0
  1824. package/toolkit/skills/multi-task-flow/lib/codex-rpc.ts +257 -0
  1825. package/toolkit/skills/multi-task-flow/lib/codex-socket.ts +181 -0
  1826. package/toolkit/skills/multi-task-flow/lib/codex-subscription.ts +71 -0
  1827. package/toolkit/skills/multi-task-flow/lib/contract.ts +198 -0
  1828. package/toolkit/skills/multi-task-flow/lib/conversation-archive.ts +98 -0
  1829. package/toolkit/skills/multi-task-flow/lib/conversation-eligibility.ts +32 -0
  1830. package/toolkit/skills/multi-task-flow/lib/conversation-history.ts +101 -0
  1831. package/toolkit/skills/multi-task-flow/lib/conversation-output.ts +398 -0
  1832. package/toolkit/skills/multi-task-flow/lib/demo-archive.ts +22 -0
  1833. package/toolkit/skills/multi-task-flow/lib/desktop-handoff.ts +32 -0
  1834. package/toolkit/skills/multi-task-flow/lib/desktop-output-state.ts +177 -0
  1835. package/toolkit/skills/multi-task-flow/lib/engine.ts +5254 -0
  1836. package/toolkit/skills/multi-task-flow/lib/errors.ts +19 -0
  1837. package/toolkit/skills/multi-task-flow/lib/execution-profile.ts +102 -0
  1838. package/toolkit/skills/multi-task-flow/lib/graph.ts +68 -0
  1839. package/toolkit/skills/multi-task-flow/lib/ledger-maintenance.ts +327 -0
  1840. package/toolkit/skills/multi-task-flow/lib/legacy-plan-alias.ts +8 -0
  1841. package/toolkit/skills/multi-task-flow/lib/notification-delivery.ts +119 -0
  1842. package/toolkit/skills/multi-task-flow/lib/package-source.ts +35 -0
  1843. package/toolkit/skills/multi-task-flow/lib/pr-details.ts +47 -0
  1844. package/toolkit/skills/multi-task-flow/lib/preferences.ts +155 -0
  1845. package/toolkit/skills/multi-task-flow/lib/profile-http.ts +101 -0
  1846. package/toolkit/skills/multi-task-flow/lib/profile-migration.ts +12 -0
  1847. package/toolkit/skills/multi-task-flow/lib/profile-mutation.ts +53 -0
  1848. package/toolkit/skills/multi-task-flow/lib/revisions-json.ts +10 -0
  1849. package/toolkit/skills/multi-task-flow/lib/revisions.ts +394 -0
  1850. package/toolkit/skills/multi-task-flow/lib/schema.ts +2389 -0
  1851. package/toolkit/skills/multi-task-flow/lib/server-contract.ts +29 -0
  1852. package/toolkit/skills/multi-task-flow/lib/server-files.ts +117 -0
  1853. package/toolkit/skills/multi-task-flow/lib/server.ts +449 -0
  1854. package/toolkit/skills/multi-task-flow/lib/service-auth.ts +162 -0
  1855. package/toolkit/skills/multi-task-flow/lib/service-compatibility.ts +283 -0
  1856. package/toolkit/skills/multi-task-flow/lib/service-contract.ts +122 -0
  1857. package/toolkit/skills/multi-task-flow/lib/service-http.ts +525 -0
  1858. package/toolkit/skills/multi-task-flow/lib/service-import-recovery.ts +104 -0
  1859. package/toolkit/skills/multi-task-flow/lib/service-import.ts +207 -0
  1860. package/toolkit/skills/multi-task-flow/lib/service-launchd.ts +74 -0
  1861. package/toolkit/skills/multi-task-flow/lib/service-lifecycle.ts +345 -0
  1862. package/toolkit/skills/multi-task-flow/lib/service-log.ts +73 -0
  1863. package/toolkit/skills/multi-task-flow/lib/service-maintenance.ts +288 -0
  1864. package/toolkit/skills/multi-task-flow/lib/service-pages.ts +110 -0
  1865. package/toolkit/skills/multi-task-flow/lib/service-paths.ts +53 -0
  1866. package/toolkit/skills/multi-task-flow/lib/service-release.ts +123 -0
  1867. package/toolkit/skills/multi-task-flow/lib/service-state.ts +153 -0
  1868. package/toolkit/skills/multi-task-flow/lib/service-usage.ts +47 -0
  1869. package/toolkit/skills/multi-task-flow/lib/store-io.ts +133 -0
  1870. package/toolkit/skills/multi-task-flow/lib/store-ledger.ts +34 -0
  1871. package/toolkit/skills/multi-task-flow/lib/store-migration.ts +594 -0
  1872. package/toolkit/skills/multi-task-flow/lib/store.ts +418 -0
  1873. package/toolkit/skills/multi-task-flow/lib/task-runtime.ts +26 -0
  1874. package/toolkit/skills/multi-task-flow/lib/view-atoms.ts +110 -0
  1875. package/toolkit/skills/multi-task-flow/lib/view-warnings.ts +20 -0
  1876. package/toolkit/skills/multi-task-flow/lib/view.ts +917 -0
  1877. package/toolkit/skills/multi-task-flow/package.json +39 -0
  1878. package/toolkit/skills/multi-task-flow/references/shared-viewer.md +60 -0
  1879. package/toolkit/skills/multi-task-flow/scripts/build-service.ts +108 -0
  1880. package/toolkit/skills/multi-task-flow/scripts/build.ts +38 -0
  1881. package/toolkit/skills/multi-task-flow/scripts/catalog-client-skills.ts +54 -0
  1882. package/toolkit/skills/multi-task-flow/scripts/check-client-skills.ts +44 -0
  1883. package/toolkit/skills/multi-task-flow/scripts/check-skills-installation.ts +84 -0
  1884. package/toolkit/skills/multi-task-flow/scripts/demo-static.ts +185 -0
  1885. package/toolkit/skills/multi-task-flow/scripts/diagnose-candidate-sandbox.ts +32 -0
  1886. package/toolkit/skills/multi-task-flow/scripts/import-client-skills.ts +31 -0
  1887. package/toolkit/skills/multi-task-flow/scripts/orchestrate.ts +615 -0
  1888. package/toolkit/skills/multi-task-flow/scripts/package-client-skills.ts +224 -0
  1889. package/toolkit/skills/multi-task-flow/scripts/preview-source.ts +227 -0
  1890. package/toolkit/skills/multi-task-flow/scripts/serve.ts +218 -0
  1891. package/toolkit/skills/multi-task-flow/scripts/service.ts +235 -0
  1892. package/toolkit/skills/multi-task-flow/scripts/test-skills-artifact.ts +27 -0
  1893. package/toolkit/skills/multi-task-flow/scripts/test-skills-native.ts +28 -0
  1894. package/toolkit/skills/multi-task-flow/scripts/test-viewer-source.ts +65 -0
  1895. package/toolkit/skills/multi-task-flow/scripts/verify-service-browser.ts +181 -0
  1896. package/toolkit/skills/multi-task-flow/scripts/verify-service-native.ts +283 -0
  1897. package/toolkit/skills/multi-task-flow/scripts/verify-skills-modules.ts +11 -0
  1898. package/toolkit/skills/multi-task-flow/scripts/viewer-gateway.ts +206 -0
  1899. package/toolkit/skills/multi-task-flow/scripts/viewer-runtime.ts +270 -0
  1900. package/toolkit/skills/multi-task-flow/scripts/viewer-socket.ts +466 -0
  1901. package/toolkit/skills/multi-task-flow/scripts/viewer-worker.ts +150 -0
  1902. package/toolkit/skills/multi-task-flow/tests/browser/README.md +38 -0
  1903. package/toolkit/skills/multi-task-flow/tests/browser/card-width-regression.ts +74 -0
  1904. package/toolkit/skills/multi-task-flow/tests/check-skills-installation.test.ts +45 -0
  1905. package/toolkit/skills/multi-task-flow/tests/codex-cli-create.test.ts +89 -0
  1906. package/toolkit/skills/multi-task-flow/tests/codex-desktop-follower.test.ts +29 -0
  1907. package/toolkit/skills/multi-task-flow/tests/codex-observer.test.ts +25 -0
  1908. package/toolkit/skills/multi-task-flow/tests/codex-subscription.test.ts +38 -0
  1909. package/toolkit/skills/multi-task-flow/tests/codex-thread-create.test.ts +159 -0
  1910. package/toolkit/skills/multi-task-flow/tests/conversation-archive.test.ts +188 -0
  1911. package/toolkit/skills/multi-task-flow/tests/conversation-output.test.ts +224 -0
  1912. package/toolkit/skills/multi-task-flow/tests/crash-worker.ts +9 -0
  1913. package/toolkit/skills/multi-task-flow/tests/demo-archive.test.ts +19 -0
  1914. package/toolkit/skills/multi-task-flow/tests/demo.test.ts +134 -0
  1915. package/toolkit/skills/multi-task-flow/tests/desktop-output-state.test.ts +20 -0
  1916. package/toolkit/skills/multi-task-flow/tests/engine.test.ts +3219 -0
  1917. package/toolkit/skills/multi-task-flow/tests/graph-layout.test.ts +44 -0
  1918. package/toolkit/skills/multi-task-flow/tests/graph-projection.test.ts +203 -0
  1919. package/toolkit/skills/multi-task-flow/tests/graph.test.ts +22 -0
  1920. package/toolkit/skills/multi-task-flow/tests/group-atom-contract.test.ts +118 -0
  1921. package/toolkit/skills/multi-task-flow/tests/increment-worker.ts +6 -0
  1922. package/toolkit/skills/multi-task-flow/tests/maintenance-compatibility.test.ts +299 -0
  1923. package/toolkit/skills/multi-task-flow/tests/migrate.test.ts +476 -0
  1924. package/toolkit/skills/multi-task-flow/tests/notification-delivery.test.ts +289 -0
  1925. package/toolkit/skills/multi-task-flow/tests/notification-reconcile.test.ts +144 -0
  1926. package/toolkit/skills/multi-task-flow/tests/orchestrate.test.ts +769 -0
  1927. package/toolkit/skills/multi-task-flow/tests/output-events.test.ts +36 -0
  1928. package/toolkit/skills/multi-task-flow/tests/phase.test.ts +14 -0
  1929. package/toolkit/skills/multi-task-flow/tests/pr-details.test.ts +30 -0
  1930. package/toolkit/skills/multi-task-flow/tests/preferences.test.ts +60 -0
  1931. package/toolkit/skills/multi-task-flow/tests/revisions.test.ts +333 -0
  1932. package/toolkit/skills/multi-task-flow/tests/schema-validation.test.ts +64 -0
  1933. package/toolkit/skills/multi-task-flow/tests/serve.test.ts +194 -0
  1934. package/toolkit/skills/multi-task-flow/tests/server.test.ts +166 -0
  1935. package/toolkit/skills/multi-task-flow/tests/service-contract.test.ts +208 -0
  1936. package/toolkit/skills/multi-task-flow/tests/service-fixture.ts +81 -0
  1937. package/toolkit/skills/multi-task-flow/tests/service-lifecycle.test.ts +123 -0
  1938. package/toolkit/skills/multi-task-flow/tests/service-release.test.ts +120 -0
  1939. package/toolkit/skills/multi-task-flow/tests/shared-service.test.ts +358 -0
  1940. package/toolkit/skills/multi-task-flow/tests/single-delivery-unit.test.ts +69 -0
  1941. package/toolkit/skills/multi-task-flow/tests/source-preview.test.ts +244 -0
  1942. package/toolkit/skills/multi-task-flow/tests/store.test.ts +219 -0
  1943. package/toolkit/skills/multi-task-flow/tests/task-runtime.test.ts +38 -0
  1944. package/toolkit/skills/multi-task-flow/tests/ui/agent-output.test.ts +86 -0
  1945. package/toolkit/skills/multi-task-flow/tests/ui/cards-accessibility.test.ts +90 -0
  1946. package/toolkit/skills/multi-task-flow/tests/ui/connection-status.test.ts +14 -0
  1947. package/toolkit/skills/multi-task-flow/tests/ui/conversation-control.test.ts +69 -0
  1948. package/toolkit/skills/multi-task-flow/tests/ui/detail-surface.test.ts +245 -0
  1949. package/toolkit/skills/multi-task-flow/tests/ui/details-content.test.ts +283 -0
  1950. package/toolkit/skills/multi-task-flow/tests/ui/graph-controller.test.tsx +83 -0
  1951. package/toolkit/skills/multi-task-flow/tests/ui/group-progress.test.ts +14 -0
  1952. package/toolkit/skills/multi-task-flow/tests/ui/hover-preview.test.ts +198 -0
  1953. package/toolkit/skills/multi-task-flow/tests/ui/navigation.test.ts +29 -0
  1954. package/toolkit/skills/multi-task-flow/tests/ui/pr-status.test.ts +53 -0
  1955. package/toolkit/skills/multi-task-flow/tests/ui/profile-editor.test.ts +81 -0
  1956. package/toolkit/skills/multi-task-flow/tests/ui/resource-popover.test.ts +109 -0
  1957. package/toolkit/skills/multi-task-flow/tests/ui/responsive-width-contract.test.ts +33 -0
  1958. package/toolkit/skills/multi-task-flow/tests/ui/service-navigation.test.ts +54 -0
  1959. package/toolkit/skills/multi-task-flow/tests/ui/setup.ts +13 -0
  1960. package/toolkit/skills/multi-task-flow/tests/ui/task-context-menu.test.ts +74 -0
  1961. package/toolkit/skills/multi-task-flow/tests/ui/timeline-window.test.ts +16 -0
  1962. package/toolkit/skills/multi-task-flow/tests/ui/timestamp.test.ts +30 -0
  1963. package/toolkit/skills/multi-task-flow/tests/ui/tooltip.test.ts +151 -0
  1964. package/toolkit/skills/multi-task-flow/tests/ui-demo.ts +18 -0
  1965. package/toolkit/skills/multi-task-flow/tests/view-state.test.ts +103 -0
  1966. package/toolkit/skills/multi-task-flow/tests/view.test.ts +347 -0
  1967. package/toolkit/skills/multi-task-flow/tests/viewer-runtime.test.ts +117 -0
  1968. package/toolkit/skills/multi-task-flow/tests/viewer-socket.test.ts +119 -0
  1969. package/toolkit/skills/multi-task-flow/web/agent-output.ts +66 -0
  1970. package/toolkit/skills/multi-task-flow/web/app.css +713 -0
  1971. package/toolkit/skills/multi-task-flow/web/app.ts +639 -0
  1972. package/toolkit/skills/multi-task-flow/web/cards.ts +268 -0
  1973. package/toolkit/skills/multi-task-flow/web/conversation-control.ts +77 -0
  1974. package/toolkit/skills/multi-task-flow/web/dependency-tooltip.ts +43 -0
  1975. package/toolkit/skills/multi-task-flow/web/detail-surface.ts +74 -0
  1976. package/toolkit/skills/multi-task-flow/web/details-content.ts +296 -0
  1977. package/toolkit/skills/multi-task-flow/web/execution-range.ts +26 -0
  1978. package/toolkit/skills/multi-task-flow/web/focus.ts +9 -0
  1979. package/toolkit/skills/multi-task-flow/web/graph-layout.ts +89 -0
  1980. package/toolkit/skills/multi-task-flow/web/graph-projection.ts +454 -0
  1981. package/toolkit/skills/multi-task-flow/web/graph-view.tsx +72 -0
  1982. package/toolkit/skills/multi-task-flow/web/graph.ts +101 -0
  1983. package/toolkit/skills/multi-task-flow/web/hover-controller.ts +213 -0
  1984. package/toolkit/skills/multi-task-flow/web/hover-preview.ts +47 -0
  1985. package/toolkit/skills/multi-task-flow/web/index.html +95 -0
  1986. package/toolkit/skills/multi-task-flow/web/interaction-policy.ts +58 -0
  1987. package/toolkit/skills/multi-task-flow/web/labels.ts +71 -0
  1988. package/toolkit/skills/multi-task-flow/web/links.ts +8 -0
  1989. package/toolkit/skills/multi-task-flow/web/model.ts +219 -0
  1990. package/toolkit/skills/multi-task-flow/web/navigation.ts +23 -0
  1991. package/toolkit/skills/multi-task-flow/web/phase.ts +11 -0
  1992. package/toolkit/skills/multi-task-flow/web/pr-status.ts +59 -0
  1993. package/toolkit/skills/multi-task-flow/web/preview-content.ts +69 -0
  1994. package/toolkit/skills/multi-task-flow/web/profile-editor.ts +96 -0
  1995. package/toolkit/skills/multi-task-flow/web/profile-model-menu.ts +38 -0
  1996. package/toolkit/skills/multi-task-flow/web/resource-popover.ts +257 -0
  1997. package/toolkit/skills/multi-task-flow/web/status-row.ts +239 -0
  1998. package/toolkit/skills/multi-task-flow/web/task-context-menu.ts +123 -0
  1999. package/toolkit/skills/multi-task-flow/web/task-state.ts +8 -0
  2000. package/toolkit/skills/multi-task-flow/web/time.ts +23 -0
  2001. package/toolkit/skills/multi-task-flow/web/timeline-window.ts +16 -0
  2002. package/toolkit/skills/multi-task-flow/web/timeline.ts +230 -0
  2003. package/toolkit/skills/multi-task-flow/web/timestamp.ts +29 -0
  2004. package/toolkit/skills/multi-task-flow/web/tooltip.ts +198 -0
  2005. package/toolkit/skills/multi-task-flow/web/unbound-pr-hint.ts +9 -0
  2006. package/toolkit/skills/multi-task-flow/web/view-state.ts +185 -0
  2007. package/toolkit/skills/node_modules/@xyflow/react/index.js +3 -0
  2008. package/toolkit/skills/node_modules/@xyflow/react/package.json +6 -0
  2009. package/toolkit/skills/node_modules/elkjs/index.js +3 -0
  2010. package/toolkit/skills/node_modules/elkjs/package.json +6 -0
  2011. package/toolkit/skills/node_modules/lucide/index.js +3 -0
  2012. package/toolkit/skills/node_modules/lucide/package.json +6 -0
  2013. package/toolkit/skills/node_modules/moment/index.js +3 -0
  2014. package/toolkit/skills/node_modules/moment/package.json +6 -0
  2015. package/toolkit/skills/node_modules/playwright/index.js +3 -0
  2016. package/toolkit/skills/node_modules/playwright/package.json +6 -0
  2017. package/toolkit/skills/node_modules/react/index.js +3 -0
  2018. package/toolkit/skills/node_modules/react/package.json +6 -0
  2019. package/toolkit/skills/node_modules/react-dom/index.js +3 -0
  2020. package/toolkit/skills/node_modules/react-dom/package.json +6 -0
  2021. package/toolkit/skills/node_modules/sharp/index.js +3 -0
  2022. package/toolkit/skills/node_modules/sharp/package.json +6 -0
  2023. package/toolkit/skills/node_modules/vis-data/index.js +3 -0
  2024. package/toolkit/skills/node_modules/vis-data/package.json +6 -0
  2025. package/toolkit/skills/node_modules/vis-timeline/index.js +3 -0
  2026. package/toolkit/skills/node_modules/vis-timeline/package.json +6 -0
  2027. package/toolkit/skills/node_modules/zod/index.js +3 -0
  2028. package/toolkit/skills/node_modules/zod/package.json +6 -0
  2029. package/toolkit/skills/normal-flow/SKILL.md +24 -0
  2030. package/toolkit/skills/package.json +31 -0
  2031. package/toolkit/skills/project-doc-promote/SKILL.md +70 -0
  2032. package/toolkit/skills/project-engineering-workflow/SKILL.md +160 -0
  2033. package/toolkit/skills/project-engineering-workflow/references/active-long-task-short-contract.md +53 -0
  2034. package/toolkit/skills/project-engineering-workflow/references/advisory-review-short-contract.md +19 -0
  2035. package/toolkit/skills/project-engineering-workflow/references/ci-tracking-short-contract.md +73 -0
  2036. package/toolkit/skills/project-engineering-workflow/references/empirical-acceptance-short-contract.md +48 -0
  2037. package/toolkit/skills/project-engineering-workflow/references/execution-receipt-short-contract.md +31 -0
  2038. package/toolkit/skills/project-engineering-workflow/references/pr-diagnosis-short-contract.md +93 -0
  2039. package/toolkit/skills/project-engineering-workflow/references/pr-merge-procedure.md +67 -0
  2040. package/toolkit/skills/project-engineering-workflow/references/pr-publication-procedure.md +39 -0
  2041. package/toolkit/skills/project-engineering-workflow/references/release-planning-short-contract.md +27 -0
  2042. package/toolkit/skills/project-engineering-workflow/references/release-tracking-short-contract.md +49 -0
  2043. package/toolkit/skills/project-engineering-workflow/references/review-proof-short-contract.md +111 -0
  2044. package/toolkit/skills/project-engineering-workflow/scripts/base_alignment_helper.ts +4 -0
  2045. package/toolkit/skills/project-engineering-workflow/scripts/merge_preflight.ts +4 -0
  2046. package/toolkit/skills/project-engineering-workflow/scripts/test_base_alignment_helper.ts +1 -0
  2047. package/toolkit/skills/project-engineering-workflow/scripts/test_merge_preflight.ts +1 -0
  2048. package/toolkit/skills/rust-crate-release/SKILL.md +96 -0
  2049. package/toolkit/skills/rust-crate-release/references/cargo-package-checklist.md +52 -0
  2050. package/toolkit/skills/rust-crate-release/references/release-style.md +33 -0
  2051. package/toolkit/skills/rust-crate-release/templates/workflows/build.yml +44 -0
  2052. package/toolkit/skills/rust-crate-release/templates/workflows/release.yml +40 -0
  2053. package/toolkit/skills/solution-sync/SKILL.md +73 -0
  2054. package/toolkit/skills/solution-sync/agents/openai.yaml +4 -0
  2055. package/toolkit/skills/source-manifest.json +15988 -0
  2056. package/toolkit/skills/spec-sync/SKILL.md +82 -0
  2057. package/toolkit/skills/spec-sync/agents/openai.yaml +4 -0
  2058. package/toolkit/skills/spec-sync/scripts/spec_drift_check.sh +2316 -0
  2059. package/toolkit/skills/spec-sync/scripts/spec_drift_check.ts +4 -0
  2060. package/toolkit/skills/spec-sync/scripts/test_spec_drift_check.ts +1 -0
  2061. package/toolkit/skills/srv-101-ops/SKILL.md +73 -0
  2062. package/toolkit/skills/srv-101-ops/scripts/resolve-target +370 -0
  2063. package/toolkit/skills/storybook-screenshots/SKILL.md +213 -0
  2064. package/toolkit/skills/storybook-screenshots/agents/openai.yaml +4 -0
  2065. package/toolkit/skills/storybook-stories/SKILL.md +251 -0
  2066. package/toolkit/skills/storybook-stories/agents/openai.yaml +4 -0
  2067. package/toolkit/skills/storybook-stories/references/state-coverage.md +76 -0
  2068. package/toolkit/skills/support-manifest.json +61 -0
  2069. package/toolkit/skills/topic-spec/SKILL.md +70 -0
  2070. package/toolkit/skills/topic-spec/agents/openai.yaml +4 -0
  2071. package/toolkit/skills/topic-spec/templates/HISTORY.md +20 -0
  2072. package/toolkit/skills/topic-spec/templates/IMPLEMENTATION.md +32 -0
  2073. package/toolkit/skills/topic-spec/templates/SPEC.md +55 -0
  2074. package/toolkit/skills/topic-spec/templates/contracts/README.md +22 -0
  2075. package/toolkit/skills/topic-spec/templates/contracts/cli.md +33 -0
  2076. package/toolkit/skills/topic-spec/templates/contracts/db.md +23 -0
  2077. package/toolkit/skills/topic-spec/templates/contracts/events.md +27 -0
  2078. package/toolkit/skills/topic-spec/templates/contracts/file-formats.md +21 -0
  2079. package/toolkit/skills/topic-spec/templates/contracts/http-apis.md +35 -0
  2080. package/toolkit/skills/topic-spec/templates/contracts/rpc.md +35 -0
  2081. package/toolkit/skills/topic-spec/templates/legacy/PLAN.md +99 -0
  2082. package/toolkit/skills/topic-spec/templates/topic-spec-README.md +33 -0
  2083. package/toolkit/skills/ui-visual-evidence/SKILL.md +261 -0
  2084. package/toolkit/skills/ui-visual-evidence/agents/openai.yaml +4 -0
  2085. package/toolkit/skills/ui-visual-evidence/replay/cases.json +47 -0
  2086. package/toolkit/skills/ui-visual-evidence/scripts/compare_visual_evidence.ts +4 -0
  2087. package/toolkit/skills/ui-visual-evidence/scripts/pr_body_image_gate.ts +4 -0
  2088. package/toolkit/skills/ui-visual-evidence/scripts/test_compare_visual_evidence.ts +1 -0
  2089. package/toolkit/skills/ui-visual-evidence/scripts/test_pr_body_image_gate.ts +2 -0
  2090. package/toolkit/skills/ui-visual-evidence/scripts/test_trim_whitespace.ts +1 -0
  2091. package/toolkit/skills/ui-visual-evidence/scripts/trim_whitespace.ts +4 -0
@@ -0,0 +1,2389 @@
1
+ import { normalizeRetiredPlanAlias } from "../lib/legacy-plan-alias";
2
+ import { createHash } from "node:crypto";
3
+ import { posix as posixPath } from "node:path";
4
+ import { z } from "zod";
5
+ import { topologicalOrder, validateGrouping } from "../lib/graph";
6
+ import { requireCondition } from "../lib/errors";
7
+
8
+ export const id = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/);
9
+ const text = z.string().trim().min(1);
10
+ export const executionProfile = z
11
+ .object({ model: text, thinking: text })
12
+ .strict();
13
+ export const optionalExecutionProfile = executionProfile
14
+ .nullable()
15
+ .default(null);
16
+ const defaultExecutionProfile = { model: "gpt-5.6-luna", thinking: "max" };
17
+ const timestamp = z.iso.datetime({ offset: false });
18
+ const sha = z.string().regex(/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/);
19
+ const sha256 = z.string().regex(/^[a-f0-9]{64}$/);
20
+ const nullableText = text.nullable();
21
+ const requirementsPath = nullableText.refine(
22
+ (value) =>
23
+ value === null ||
24
+ /^requirements\/[A-Za-z0-9][A-Za-z0-9_.-]{0,127}\.md$/.test(value),
25
+ "requirements_path must reference a Markdown file under requirements/",
26
+ );
27
+ const stringMap = z.record(z.string(), z.unknown());
28
+ export const executionPhase = z.enum(["planning", "implementation"]);
29
+ export const planLifecycle = z.enum([
30
+ "proposed",
31
+ "approved",
32
+ "superseded",
33
+ "abandoned",
34
+ ]);
35
+ export const changeClass = z.enum([
36
+ "planning_revision",
37
+ "implementation_low_impact",
38
+ "implementation_high_impact",
39
+ ]);
40
+ export const changeReasonCategory = z.enum([
41
+ "discovered_constraint",
42
+ "dependency_correction",
43
+ "scope_change",
44
+ "blocker_recovery",
45
+ "owner_direction",
46
+ "provider_or_environment_change",
47
+ ]);
48
+ export const changeEntry = z
49
+ .object({
50
+ path: text,
51
+ old_value: z.unknown().optional(),
52
+ new_value: z.unknown().optional(),
53
+ })
54
+ .strict();
55
+ export const changeReason = z
56
+ .object({
57
+ category: changeReasonCategory,
58
+ summary: text,
59
+ evidence_refs: z.array(text),
60
+ impact: text,
61
+ })
62
+ .strict();
63
+ export const planChangeSet = z
64
+ .object({
65
+ added: z.array(changeEntry),
66
+ removed: z.array(changeEntry),
67
+ modified: z.array(changeEntry),
68
+ })
69
+ .strict();
70
+ export const planRevision = z
71
+ .object({
72
+ execution_phase: executionPhase,
73
+ change_class: changeClass,
74
+ affected_task_ids: z.array(id),
75
+ affected_node_ids: z.array(id),
76
+ affected_edge_ids: z.array(id),
77
+ change_set: planChangeSet,
78
+ reason: changeReason.nullable(),
79
+ approval_required: z.boolean(),
80
+ paused_task_ids: z.array(id),
81
+ })
82
+ .strict();
83
+ export const devPlanTaskSurface = z
84
+ .object({ task_id: id, owned_surfaces: z.array(text).min(1) })
85
+ .strict();
86
+ export const devPlanAcceptanceScope = z
87
+ .object({
88
+ acceptance_id: id,
89
+ scope: z
90
+ .string()
91
+ .regex(/^(?:batch|task):[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$/),
92
+ owner_id: id,
93
+ })
94
+ .strict();
95
+ export const planHandoffSource = z
96
+ .object({
97
+ raw_plan_digest: sha256,
98
+ task_surfaces: z.array(devPlanTaskSurface).min(2),
99
+ acceptance_scopes: z.array(devPlanAcceptanceScope).min(2),
100
+ })
101
+ .strict();
102
+ export const planHandoff = z
103
+ .object({
104
+ flow_type: z.literal("multi-task-flow"),
105
+ raw_plan_digest: sha256,
106
+ acceptance_digest: sha256,
107
+ task_ids: z.array(id).min(2),
108
+ task_surfaces: z.array(devPlanTaskSurface).min(2),
109
+ acceptance_scopes: z.array(devPlanAcceptanceScope).min(2),
110
+ })
111
+ .strict();
112
+
113
+ export const externalRef = z
114
+ .object({
115
+ provider: text,
116
+ repository: text,
117
+ id: text,
118
+ url: z.url().nullable(),
119
+ })
120
+ .strict();
121
+ export const atomPlan = z
122
+ .object({ id, title: text, task_id: id, purpose: text, output: text })
123
+ .strict();
124
+ export const groupAtomPlan = z
125
+ .object({
126
+ id,
127
+ title: text,
128
+ group_id: id,
129
+ purpose: text,
130
+ output: text,
131
+ lifecycle_stage: z
132
+ .enum(["workspace_ready", "pr_created", "pr_merged", "closed"])
133
+ .nullable()
134
+ .default(null),
135
+ })
136
+ .strict();
137
+ export const atomEdge = z
138
+ .object({ id, from_atom_id: id, to_atom_id: id })
139
+ .strict();
140
+ export const node = z
141
+ .object({
142
+ id,
143
+ kind: z.enum([
144
+ "main_start",
145
+ "main_end",
146
+ "group_start",
147
+ "group_end",
148
+ "task",
149
+ "milestone",
150
+ ]),
151
+ ref_id: id.nullable(),
152
+ group_id: id.nullable(),
153
+ label: text,
154
+ estimate_minutes: z.number().int().nonnegative().nullable(),
155
+ estimate_basis: nullableText,
156
+ estimate_confidence: z.enum(["low", "medium", "high"]).nullable(),
157
+ })
158
+ .strict();
159
+ export const edge = z
160
+ .object({
161
+ id,
162
+ from_node_id: id,
163
+ to_node_id: id,
164
+ requires: z.enum([
165
+ "integrated",
166
+ "completed",
167
+ "merged",
168
+ "ci_passed",
169
+ "published",
170
+ "deployed",
171
+ "verified",
172
+ ]),
173
+ })
174
+ .strict();
175
+ export const cutRule = z
176
+ .object({
177
+ id,
178
+ group_id: id,
179
+ priority: z.number().int().nonnegative(),
180
+ required_task_ids: z.array(id),
181
+ status: z.enum(["pending", "claimed", "applied", "cancelled"]),
182
+ })
183
+ .strict();
184
+ export const lifecycleStage = z.enum([
185
+ "unknown",
186
+ "pending",
187
+ "passed",
188
+ "blocked",
189
+ ]);
190
+ export const lifecycle = z
191
+ .object({
192
+ workspace_ready: lifecycleStage,
193
+ pr_created: lifecycleStage,
194
+ pr_merged: lifecycleStage,
195
+ closed: lifecycleStage,
196
+ })
197
+ .strict();
198
+ export const milestone = z
199
+ .object({
200
+ id,
201
+ target_type: z.enum(["group", "task"]),
202
+ target_id: id,
203
+ title: text,
204
+ evidence_ref: nullableText,
205
+ recorded_at: timestamp,
206
+ recorded_by: text,
207
+ })
208
+ .strict();
209
+ export const plannedAction = z
210
+ .object({
211
+ id,
212
+ kind: z.enum(["publish_branch", "publish_pr", "release", "deploy"]),
213
+ task_id: id.nullable().default(null),
214
+ group_id: id.nullable().default(null),
215
+ target: z
216
+ .object({
217
+ type: z.enum(["task", "group"]),
218
+ id,
219
+ })
220
+ .strict()
221
+ .optional(),
222
+ /** Legacy read-only identity; new plans must use target. */
223
+ target_identity: text.optional(),
224
+ })
225
+ .strict();
226
+ export const plan = z
227
+ .object({
228
+ id,
229
+ supersedes_id: id.nullable(),
230
+ approval_id: nullableText,
231
+ lifecycle: planLifecycle.default("proposed"),
232
+ revision: planRevision.nullable().default(null),
233
+ created_at: timestamp,
234
+ start_at: timestamp.nullable(),
235
+ atoms: z.array(atomPlan),
236
+ group_atoms: z.array(groupAtomPlan).default([]),
237
+ atomic_edges: z.array(atomEdge),
238
+ nodes: z.array(node),
239
+ edges: z.array(edge),
240
+ cut_rules: z.array(cutRule),
241
+ actions: z.array(plannedAction),
242
+ plan_handoff: planHandoff.optional(),
243
+ })
244
+ .strict();
245
+ export const group = z
246
+ .object({
247
+ id,
248
+ title: text,
249
+ delivery_unit_kind: z.enum(["bootstrap", "regular"]).default("regular"),
250
+ owner_kind: z.enum(["main", "group"]).default("group"),
251
+ agent_thread_id: nullableText,
252
+ state: z.enum(["planned", "active", "merged", "closed", "blocked"]),
253
+ parent_branch: nullableText,
254
+ parent_pr: externalRef.nullable(),
255
+ cut_sha: sha.nullable(),
256
+ current_sha: sha.nullable(),
257
+ merge_sha: sha.nullable(),
258
+ requirements_path: requirementsPath,
259
+ atoms: z
260
+ .array(
261
+ z
262
+ .object({
263
+ id,
264
+ title: text,
265
+ purpose: text,
266
+ output: text,
267
+ lifecycle_stage: z
268
+ .enum(["workspace_ready", "pr_created", "pr_merged", "closed"])
269
+ .nullable(),
270
+ status: z.enum(["planned", "running", "completed", "blocked"]),
271
+ })
272
+ .strict(),
273
+ )
274
+ .default([]),
275
+ coordination_execution: z
276
+ .object({
277
+ state: z.enum(["unknown", "idle", "running", "waiting", "blocked"]),
278
+ reason: nullableText,
279
+ waiting_for_task_ids: z.array(id),
280
+ })
281
+ .strict()
282
+ .default({ state: "unknown", reason: null, waiting_for_task_ids: [] }),
283
+ execution_profile: optionalExecutionProfile,
284
+ execution_profile_source: z
285
+ .enum(["manual", "recommendation"])
286
+ .nullable()
287
+ .default(null),
288
+ execution_profile_rule: text.nullable().default(null),
289
+ lifecycle: lifecycle.default({
290
+ workspace_ready: "unknown",
291
+ pr_created: "unknown",
292
+ pr_merged: "unknown",
293
+ closed: "unknown",
294
+ }),
295
+ })
296
+ .strict();
297
+
298
+ export function defaultGroupAtoms(groupId: string) {
299
+ return [
300
+ {
301
+ id: `group-atom-${groupId}-prepare-parent`,
302
+ title: "准备父分支",
303
+ purpose: "建立交付单元父分支",
304
+ output: "父分支已准备",
305
+ lifecycle_stage: "workspace_ready" as const,
306
+ status: "planned" as const,
307
+ },
308
+ {
309
+ id: `group-atom-${groupId}-create-pr`,
310
+ title: "创建父 PR",
311
+ purpose: "提交交付单元父 PR",
312
+ output: "父 PR 已创建",
313
+ lifecycle_stage: "pr_created" as const,
314
+ status: "planned" as const,
315
+ },
316
+ {
317
+ id: `group-atom-${groupId}-verify-integration`,
318
+ title: "验收集成结果",
319
+ purpose: "核对贡献任务集成结果",
320
+ output: "集成结果已验收",
321
+ lifecycle_stage: null,
322
+ status: "planned" as const,
323
+ },
324
+ {
325
+ id: `group-atom-${groupId}-merge-pr`,
326
+ title: "合并父 PR",
327
+ purpose: "合并已验收的父 PR",
328
+ output: "父 PR 已合并",
329
+ lifecycle_stage: "pr_merged" as const,
330
+ status: "planned" as const,
331
+ },
332
+ {
333
+ id: `group-atom-${groupId}-closeout`,
334
+ title: "收口",
335
+ purpose: "完成交付单元收口",
336
+ output: "交付单元已收口",
337
+ lifecycle_stage: "closed" as const,
338
+ status: "planned" as const,
339
+ },
340
+ ];
341
+ }
342
+ export const task = z
343
+ .object({
344
+ id,
345
+ title: text,
346
+ kind: z.enum([
347
+ "contribution",
348
+ "release",
349
+ "deployment",
350
+ "verification",
351
+ "coordination",
352
+ "development",
353
+ "other",
354
+ ]),
355
+ group_id: id,
356
+ thread_id: nullableText,
357
+ state: z.enum([
358
+ "planned",
359
+ "ready",
360
+ "starting",
361
+ "running",
362
+ "agent_idle",
363
+ "waiting",
364
+ "blocked",
365
+ "integrated",
366
+ "completed",
367
+ "closed",
368
+ ]),
369
+ agent_resume_state: z.enum(["starting", "running"]).optional(),
370
+ disposition: z
371
+ .enum(["active", "superseded", "abandoned"])
372
+ .default("active"),
373
+ execution_owner: z
374
+ .enum(["main", "delivery_agent", "task_agent"])
375
+ .nullable()
376
+ .default(null),
377
+ conversation_policy: z
378
+ .enum(["main_owned", "delivery_owned", "task_agent", "none"])
379
+ .nullable()
380
+ .default(null),
381
+ delivery_policy: z
382
+ .enum(["parent_pr", "child_pr", "evidence", "none"])
383
+ .nullable()
384
+ .default(null),
385
+ superseded_by_task_id: nullableText.default(null),
386
+ atoms: z.array(
387
+ z
388
+ .object({
389
+ id,
390
+ title: text,
391
+ status: z.enum(["planned", "running", "completed", "blocked"]),
392
+ })
393
+ .strict(),
394
+ ),
395
+ owned_surfaces: z.array(text),
396
+ branch: nullableText.default(null),
397
+ base_sha: sha.nullable(),
398
+ pr: externalRef.nullable(),
399
+ requirements_path: requirementsPath,
400
+ execution_profile: optionalExecutionProfile,
401
+ execution_profile_source: z
402
+ .enum(["manual", "recommendation"])
403
+ .nullable()
404
+ .default(null),
405
+ execution_profile_rule: text.nullable().default(null),
406
+ started_at: timestamp.nullable(),
407
+ finished_at: timestamp.nullable(),
408
+ blocker: nullableText,
409
+ assignment_history: z.array(
410
+ z
411
+ .object({
412
+ group_id: id,
413
+ effective_at: timestamp,
414
+ reason: text,
415
+ cut_operation_id: id.nullable(),
416
+ })
417
+ .strict(),
418
+ ),
419
+ lifecycle: lifecycle.default({
420
+ workspace_ready: "unknown",
421
+ pr_created: "unknown",
422
+ pr_merged: "unknown",
423
+ closed: "unknown",
424
+ }),
425
+ })
426
+ .strict();
427
+ export const providerReceipt = z
428
+ .object({
429
+ provider: text,
430
+ repository: text,
431
+ resource_type: z.enum(["branch", "pr"]),
432
+ resource_id: text,
433
+ branch: text,
434
+ target_branch: nullableText,
435
+ base_sha: sha.nullable(),
436
+ head_sha: sha.nullable(),
437
+ pr: externalRef.nullable(),
438
+ state: z.enum(["exists", "open", "merged", "absent", "unknown"]),
439
+ evidence_ref: text,
440
+ })
441
+ .strict();
442
+ export const baselineReceipt = z
443
+ .object({
444
+ sha,
445
+ head: sha,
446
+ clean: z.literal(true),
447
+ source: text,
448
+ fetched_at: timestamp.optional(),
449
+ })
450
+ .strict();
451
+ export const baselineAudit = z
452
+ .object({
453
+ target_type: z.enum(["group", "task"]),
454
+ target_id: id,
455
+ dispatch_operation_id: id,
456
+ native_request_id: text,
457
+ thread_id: text,
458
+ mode: z.enum(["initial", "refresh"]),
459
+ previous_baseline: baselineReceipt.nullable(),
460
+ lineage_event_id: text,
461
+ lineage_sha: sha,
462
+ branch: text,
463
+ resource_ids: z.array(id).min(1),
464
+ receipt: baselineReceipt,
465
+ observed_at: timestamp,
466
+ })
467
+ .strict();
468
+ export const fact = z
469
+ .object({
470
+ id,
471
+ kind: z.enum([
472
+ "child_review",
473
+ "task_quality",
474
+ "pr_merged",
475
+ "branch_published",
476
+ "pr_published",
477
+ "ci_passed",
478
+ "published",
479
+ "deployed",
480
+ "verified",
481
+ "baseline_verified",
482
+ ]),
483
+ subject_id: id,
484
+ status: z.enum(["passed", "failed", "unknown"]),
485
+ source: text,
486
+ observed_at: timestamp,
487
+ sha: sha.nullable(),
488
+ evidence_ref: nullableText,
489
+ quality: z
490
+ .object({
491
+ task_id: id,
492
+ thread_id: text,
493
+ pr: externalRef,
494
+ base_sha: sha,
495
+ head_sha: sha,
496
+ acceptance_refs: z.array(text).min(1),
497
+ checks: z
498
+ .array(
499
+ z
500
+ .object({ name: text, status: z.literal("passed"), evidence_ref: text })
501
+ .strict(),
502
+ )
503
+ .min(1),
504
+ })
505
+ .nullable()
506
+ .optional(),
507
+ receipt: providerReceipt.nullable().optional(),
508
+ baseline: baselineAudit.nullable().optional(),
509
+ })
510
+ .strict();
511
+ export const cutEvidence = z
512
+ .object({
513
+ source: text,
514
+ observed_at: timestamp,
515
+ sha,
516
+ evidence_ref: text,
517
+ })
518
+ .strict();
519
+ export const operation = z
520
+ .object({
521
+ id,
522
+ kind: z.enum([
523
+ "dispatch",
524
+ "merge",
525
+ "cut",
526
+ "publish_branch",
527
+ "publish_pr",
528
+ "release",
529
+ "deploy",
530
+ ]),
531
+ actor_id: text,
532
+ target_id: id,
533
+ status: z.enum(["claimed", "succeeded", "failed", "unknown"]),
534
+ request: stringMap,
535
+ expected_sha: sha.nullable(),
536
+ receipt_fact_id: id.nullable(),
537
+ created_at: timestamp,
538
+ updated_at: timestamp,
539
+ })
540
+ .strict();
541
+ const eventType = z.enum([
542
+ "plan_approved",
543
+ "protected_action_approved",
544
+ "plan_revision_proposed",
545
+ "plan_revision_approved",
546
+ "plan_revision_superseded",
547
+ "plan_revision_abandoned",
548
+ "task_migration_recorded",
549
+ "binding_resolved",
550
+ "dispatch_claimed",
551
+ "thread_bound",
552
+ "group_updated",
553
+ "group_atom_updated",
554
+ "group_execution_updated",
555
+ "group_base_reconciled",
556
+ "development_baseline_synchronized",
557
+ "atom_updated",
558
+ "link_verification",
559
+ "task_ready",
560
+ "task_started",
561
+ "task_waiting",
562
+ "task_resumed",
563
+ "task_runtime_observed",
564
+ "task_blocked",
565
+ "task_rebased",
566
+ "task_integrated",
567
+ "task_completed",
568
+ "task_closed",
569
+ "merge_claimed",
570
+ "merge_resolved",
571
+ "publish_branch_claimed",
572
+ "publish_branch_resolved",
573
+ "publish_branch_repaired",
574
+ "publish_pr_claimed",
575
+ "publish_pr_resolved",
576
+ "lifecycle_recorded",
577
+ "milestone_recorded",
578
+ "action_claimed",
579
+ "action_resolved",
580
+ "cut_claimed",
581
+ "cut_applied",
582
+ "fact_observed",
583
+ "follow_pr_recorded",
584
+ "notification_delivery_resolved",
585
+ "notification_delivery_reconciled",
586
+ "notification_sent",
587
+ "notification_acknowledged",
588
+ "execution_profile_updated",
589
+ "dispatch_claim_replaced",
590
+ "execution_profile_migrated",
591
+ "execution_profile_default_updated",
592
+ "dispatch_request_bound",
593
+ "dispatch_creation_resolved",
594
+ "dispatch_thread_observed",
595
+ "resource_updated",
596
+ "resource_closed",
597
+ "run_completed",
598
+ ]);
599
+ export const event = z
600
+ .object({
601
+ id,
602
+ type: eventType,
603
+ subject_id: id,
604
+ actor_id: text,
605
+ occurred_at: timestamp.nullable(),
606
+ recorded_at: timestamp,
607
+ data: stringMap,
608
+ })
609
+ .strict();
610
+ export const notificationMode = z.enum(["auto", "deliver", "none"]);
611
+ export const notificationRecipient = z.union([
612
+ z.literal("owner"),
613
+ z.object({ thread_id: text }).strict(),
614
+ ]);
615
+ export const notificationOption = z
616
+ .object({
617
+ mode: notificationMode,
618
+ recipient: notificationRecipient.optional(),
619
+ })
620
+ .strict();
621
+ export const notificationDeliveryStatus = z.enum([
622
+ "pending",
623
+ "sent",
624
+ "failed",
625
+ "unknown",
626
+ ]);
627
+ export const notificationAckStatus = z.enum(["unacknowledged", "acknowledged"]);
628
+ export const notification = z
629
+ .object({
630
+ id,
631
+ event_id: id,
632
+ recipient_thread_id: text,
633
+ ledger_status: z.literal("committed").default("committed"),
634
+ status: z.enum(["pending", "sent", "failed", "unknown", "acknowledged"]),
635
+ delivery_status: notificationDeliveryStatus.default("pending"),
636
+ ack_status: notificationAckStatus.default("unacknowledged"),
637
+ attempts: z.number().int().nonnegative(),
638
+ last_attempt_id: nullableText.default(null),
639
+ last_reconciliation_id: nullableText.default(null),
640
+ last_error: nullableText.default(null),
641
+ updated_at: timestamp,
642
+ })
643
+ .strict();
644
+ export const ledgerSchema = z
645
+ .object({
646
+ schema_version: z.literal(2),
647
+ source_schema_version: z.literal(1).nullable().default(null),
648
+ contract_version: z.union([z.literal(1), z.literal(2), z.literal(3)]),
649
+ version: z.object({
650
+ skill_id: text,
651
+ skill_version: z.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/),
652
+ viewer_contract: z.number().int().positive(),
653
+ }).strict().nullable().default(null),
654
+ orchestration_id: id,
655
+ revision: z.number().int().nonnegative(),
656
+ repository: z
657
+ .object({
658
+ provider: z.enum(["github", "gitea"]),
659
+ host: text,
660
+ owner: text,
661
+ name: text,
662
+ target_branch: text,
663
+ })
664
+ .strict(),
665
+ control: z
666
+ .object({
667
+ owner_thread_id: nullableText,
668
+ ownership: z.enum(["pending", "bound", "uncertain"]),
669
+ approval_id: nullableText,
670
+ })
671
+ .strict(),
672
+ config: z
673
+ .object({
674
+ max_running_tasks: z.number().int().positive(),
675
+ display_timezone: text,
676
+ conversation_links_verified: z.boolean().default(false),
677
+ execution_profile: executionProfile.nullable().default(null),
678
+ })
679
+ .strict(),
680
+ plans: z.array(plan).min(1),
681
+ active_plan_id: id,
682
+ execution_plan_id: id,
683
+ groups: z.array(group),
684
+ tasks: z.array(task),
685
+ follow_prs: z.array(
686
+ z
687
+ .object({
688
+ id,
689
+ origin_task_id: id,
690
+ origin_group_id: id,
691
+ pr: externalRef,
692
+ target_branch: text,
693
+ state: z.enum(["open", "merged", "blocked"]),
694
+ merge_fact_id: id.nullable(),
695
+ affected_task_ids: z.array(id),
696
+ })
697
+ .strict(),
698
+ ),
699
+ facts: z.array(fact),
700
+ operations: z.array(operation),
701
+ events: z.array(event),
702
+ milestones: z.array(milestone).default([]),
703
+ requests: z.array(
704
+ z
705
+ .object({
706
+ request_id: id,
707
+ command: text,
708
+ canonical_input: text,
709
+ result: z.unknown(),
710
+ committed_revision: z.number().int().nonnegative(),
711
+ })
712
+ .strict(),
713
+ ),
714
+ notifications: z.array(notification),
715
+ resources: z.array(
716
+ z
717
+ .object({
718
+ id,
719
+ kind: z.enum([
720
+ "conversation",
721
+ "worktree",
722
+ "branch",
723
+ "port",
724
+ "service",
725
+ ]),
726
+ target: nullableText,
727
+ status: z.enum([
728
+ "unknown",
729
+ "active",
730
+ "pending",
731
+ "closed",
732
+ "archive_failed",
733
+ "archive_unknown",
734
+ "unarchive_failed",
735
+ "unarchive_unknown",
736
+ "not_applicable",
737
+ ]),
738
+ evidence_ref: nullableText,
739
+ error: nullableText.optional(),
740
+ last_attempt_at: timestamp.nullable().optional(),
741
+ operation_id: nullableText.optional(),
742
+ archive_policy: z.enum(["auto", "manual"]).optional(),
743
+ })
744
+ .strict(),
745
+ ),
746
+ updated_at: timestamp,
747
+ })
748
+ .strict();
749
+ export type Ledger = z.infer<typeof ledgerSchema>;
750
+ export type Plan = z.infer<typeof plan>;
751
+ export type Task = z.infer<typeof task>;
752
+
753
+ export const TASK_EXECUTION_POLICY_FIELDS = [
754
+ "execution_owner",
755
+ "conversation_policy",
756
+ "delivery_policy",
757
+ ] as const;
758
+ const taskExecutionPolicyDeclaration = z
759
+ .object({
760
+ execution_owner: z
761
+ .enum(["main", "delivery_agent", "task_agent"])
762
+ .nullable(),
763
+ conversation_policy: z
764
+ .enum(["main_owned", "delivery_owned", "task_agent", "none"])
765
+ .nullable(),
766
+ delivery_policy: z
767
+ .enum(["parent_pr", "child_pr", "evidence", "none"])
768
+ .nullable(),
769
+ })
770
+ .strict();
771
+ export type TaskExecutionPolicyField = (typeof TASK_EXECUTION_POLICY_FIELDS)[number];
772
+ export type TaskExecutionPolicyDeclarationGap = {
773
+ task_id: string;
774
+ missing_fields: TaskExecutionPolicyField[];
775
+ };
776
+
777
+ export function taskExecutionPolicyDeclarationGaps(
778
+ value: unknown,
779
+ ): TaskExecutionPolicyDeclarationGap[] {
780
+ const candidate = value as { tasks?: unknown } | null;
781
+ if (!candidate || !Array.isArray(candidate.tasks)) return [];
782
+ return candidate.tasks.flatMap((item, index) => {
783
+ if (!item || typeof item !== "object" || Array.isArray(item)) return [];
784
+ const task = item as Record<string, unknown>;
785
+ const missing_fields = TASK_EXECUTION_POLICY_FIELDS.filter(
786
+ (field) => !Object.prototype.hasOwnProperty.call(task, field),
787
+ );
788
+ return missing_fields.length
789
+ ? [{
790
+ task_id: typeof task.id === "string" ? task.id : `task-${index}`,
791
+ missing_fields,
792
+ }]
793
+ : [];
794
+ });
795
+ }
796
+
797
+ export type TaskExecutionPolicyIssue = { code: string; message: string };
798
+
799
+ export function taskExecutionPolicyIssues(
800
+ candidate: Pick<Task, "execution_owner" | "conversation_policy" | "delivery_policy">,
801
+ ): TaskExecutionPolicyIssue[] {
802
+ const { execution_owner: owner, conversation_policy: conversation, delivery_policy: delivery } = candidate;
803
+ if (owner === null && conversation === null && delivery === null) return [];
804
+ const issues: TaskExecutionPolicyIssue[] = [];
805
+ if (owner === null || conversation === null || delivery === null) {
806
+ issues.push({ code: "TASK_EXECUTION_POLICY_INCOMPLETE", message: "任务执行归属、对话策略和交付策略必须同时声明" });
807
+ return issues;
808
+ }
809
+ if (owner === "main" && conversation !== "main_owned") issues.push({ code: "TASK_EXECUTION_POLICY_CONFLICT", message: "Main Agent 任务必须使用 main_owned 对话策略" });
810
+ if (owner === "task_agent" && conversation !== "task_agent") issues.push({ code: "TASK_EXECUTION_POLICY_CONFLICT", message: "Task Agent 任务必须使用 task_agent 对话策略" });
811
+ if (owner === "delivery_agent" && conversation !== "delivery_owned") issues.push({ code: "TASK_EXECUTION_POLICY_CONFLICT", message: "交付 Agent 任务必须使用 delivery_owned 对话策略" });
812
+ if (owner === "main" && delivery === "child_pr") issues.push({ code: "TASK_EXECUTION_POLICY_CONFLICT", message: "Main Agent 不得拥有 child PR" });
813
+ if (owner === "delivery_agent" && delivery === "child_pr") issues.push({ code: "TASK_EXECUTION_POLICY_CONFLICT", message: "交付 Agent 不得拥有 child PR" });
814
+ if (owner === "task_agent" && delivery === "parent_pr") issues.push({ code: "TASK_EXECUTION_POLICY_CONFLICT", message: "Task Agent 不得拥有 parent PR" });
815
+ if (conversation === "none" && ["child_pr", "evidence"].includes(delivery)) issues.push({ code: "TASK_EXECUTION_POLICY_CONFLICT", message: "无对话任务不能声明 child PR 或验证证据" });
816
+ return issues;
817
+ }
818
+
819
+ export function validateTaskExecutionPolicies(tasks: readonly Task[], requireComplete = false): void {
820
+ for (const candidate of tasks) {
821
+ const parsed = taskExecutionPolicyDeclaration.safeParse({
822
+ execution_owner: candidate.execution_owner,
823
+ conversation_policy: candidate.conversation_policy,
824
+ delivery_policy: candidate.delivery_policy,
825
+ });
826
+ requireCondition(
827
+ parsed.success,
828
+ "TASK_EXECUTION_POLICY_INVALID",
829
+ `${candidate.id}: 任务执行策略值无效`,
830
+ 3,
831
+ );
832
+ if (requireComplete && parsed.data.execution_owner === null && parsed.data.conversation_policy === null && parsed.data.delivery_policy === null)
833
+ requireCondition(false, "TASK_EXECUTION_POLICY_INCOMPLETE", `${candidate.id}: 任务执行归属、对话策略和交付策略必须声明`, 3);
834
+ const issues = taskExecutionPolicyIssues(parsed.data);
835
+ requireCondition(issues.length === 0, issues[0]?.code ?? "TASK_EXECUTION_POLICY_INVALID", `${candidate.id}: ${issues.map((issue) => issue.message).join(";")}`, 3);
836
+ }
837
+ }
838
+ export function isContributionKind(kind: Task["kind"]): boolean {
839
+ return kind === "contribution" || kind === "development";
840
+ }
841
+ export type PlanRevision = z.infer<typeof planRevision>;
842
+ export type ExecutionPhase = z.infer<typeof executionPhase>;
843
+ export type ExecutionProfile = z.infer<typeof executionProfile>;
844
+ export const DEFAULT_EXECUTION_PROFILE: ExecutionProfile = {
845
+ ...defaultExecutionProfile,
846
+ };
847
+ export function recommendedExecutionProfile(
848
+ kind: Task["kind"],
849
+ fallback: ExecutionProfile,
850
+ ): ExecutionProfile {
851
+ if (["development", "contribution"].includes(kind))
852
+ return { model: "gpt-6.1-sol", thinking: "high" };
853
+ if (["verification", "coordination", "release", "deployment"].includes(kind))
854
+ return { model: "gpt-6-luna", thinking: "medium" };
855
+ return { ...fallback };
856
+ }
857
+ export type DevPlanHandoffSource = z.infer<typeof planHandoffSource>;
858
+ type DevPlanHandoff = z.infer<typeof planHandoff>;
859
+ type DevPlanHandoffValidationOptions = {
860
+ allowDynamicAssignments?: boolean;
861
+ assignmentEvidence?: ReadonlyMap<string, ReadonlySet<string>>;
862
+ dynamicGroupIds?: ReadonlySet<string>;
863
+ };
864
+
865
+ function canonicalJson(value: unknown): string {
866
+ if (Array.isArray(value)) return `[${value.map(canonicalJson).join(",")}]`;
867
+ if (value !== null && typeof value === "object") {
868
+ const entries = Object.entries(value as Record<string, unknown>).sort(
869
+ ([left], [right]) => (left < right ? -1 : left > right ? 1 : 0),
870
+ );
871
+ return `{${entries.map(([key, item]) => `${JSON.stringify(key)}:${canonicalJson(item)}`).join(",")}}`;
872
+ }
873
+ return JSON.stringify(value);
874
+ }
875
+
876
+ export function acceptanceScopeDigest(
877
+ scopes: DevPlanHandoff["acceptance_scopes"],
878
+ ): string {
879
+ const normalized = [...scopes].sort((left, right) =>
880
+ left.acceptance_id < right.acceptance_id
881
+ ? -1
882
+ : left.acceptance_id > right.acceptance_id
883
+ ? 1
884
+ : 0,
885
+ );
886
+ return createHash("sha256").update(canonicalJson(normalized)).digest("hex");
887
+ }
888
+
889
+ function sameMembers(left: string[], right: string[]): boolean {
890
+ const sortedLeft = [...left].sort();
891
+ const sortedRight = [...right].sort();
892
+ return (
893
+ sortedLeft.length === sortedRight.length &&
894
+ sortedLeft.every((value, index) => value === sortedRight[index])
895
+ );
896
+ }
897
+
898
+ const taskStateEventTypes = new Set([
899
+ "task_runtime_observed",
900
+ "task_started",
901
+ "task_waiting",
902
+ "task_resumed",
903
+ "task_blocked",
904
+ "task_integrated",
905
+ "task_completed",
906
+ "task_closed",
907
+ ]);
908
+
909
+ function taskStateAtEvent(
910
+ ledger: Ledger,
911
+ taskId: string,
912
+ eventIndex: number,
913
+ currentState: Task["state"],
914
+ ): Task["state"] | null {
915
+ let state: Task["state"] = "planned";
916
+ let observed = false;
917
+ for (const event of ledger.events.slice(0, eventIndex)) {
918
+ if (event.subject_id !== taskId && event.data.task_id !== taskId) continue;
919
+ if (
920
+ event.type === "thread_bound" &&
921
+ event.data.outcome === "succeeded" &&
922
+ typeof event.data.thread_id === "string" &&
923
+ event.subject_id === taskId
924
+ ) {
925
+ state = "starting";
926
+ observed = true;
927
+ } else if (taskStateEventTypes.has(event.type)) {
928
+ const candidate = event.data.state;
929
+ if (
930
+ typeof candidate !== "string" ||
931
+ ![
932
+ "planned",
933
+ "ready",
934
+ "starting",
935
+ "running",
936
+ "agent_idle",
937
+ "waiting",
938
+ "blocked",
939
+ "integrated",
940
+ "completed",
941
+ "closed",
942
+ ].includes(candidate)
943
+ )
944
+ return null;
945
+ state = candidate as Task["state"];
946
+ observed = true;
947
+ } else if (
948
+ event.type === "merge_resolved" &&
949
+ event.data.task_id === taskId &&
950
+ event.data.outcome === "succeeded"
951
+ ) {
952
+ state = "integrated";
953
+ observed = true;
954
+ }
955
+ }
956
+ return observed || currentState === "planned" ? state : null;
957
+ }
958
+
959
+ function sameTaskStructure(left: Task, right: Task): boolean {
960
+ return (
961
+ left.id === right.id &&
962
+ left.title === right.title &&
963
+ left.kind === right.kind &&
964
+ left.thread_id === right.thread_id &&
965
+ left.requirements_path === right.requirements_path &&
966
+ canonicalJson(left.owned_surfaces) ===
967
+ canonicalJson(right.owned_surfaces) &&
968
+ canonicalJson(left.atoms.map(({ id, title }) => ({ id, title }))) ===
969
+ canonicalJson(right.atoms.map(({ id, title }) => ({ id, title })))
970
+ );
971
+ }
972
+
973
+ function sortedSurfaces(value: string[]): string[] {
974
+ return [...value].sort();
975
+ }
976
+
977
+ function normalizeOwnedSurface(value: string): string | undefined {
978
+ const stripped = value.trim().replaceAll("\\", "/");
979
+ if (!stripped) return;
980
+ const normalized = posixPath.normalize(stripped);
981
+ const canonical =
982
+ normalized === "/" ? normalized : normalized.replace(/\/+$/, "") || ".";
983
+ if (
984
+ canonical.startsWith("/") ||
985
+ canonical === ".." ||
986
+ canonical.startsWith("../") ||
987
+ /^[A-Za-z]:\/.*$/.test(canonical)
988
+ )
989
+ return;
990
+ return canonical;
991
+ }
992
+
993
+ function normalizedOwnedSurfaces(value: string[]): string[] | undefined {
994
+ const normalized = value.map(normalizeOwnedSurface);
995
+ if (normalized.some((surface): surface is undefined => surface === undefined))
996
+ return;
997
+ const surfaces = normalized as string[];
998
+ return new Set(surfaces).size === surfaces.length ? surfaces : undefined;
999
+ }
1000
+
1001
+ function ownedSurfacesOverlap(left: string, right: string): boolean {
1002
+ return (
1003
+ left === right ||
1004
+ left === "." ||
1005
+ right === "." ||
1006
+ left.startsWith(`${right}/`) ||
1007
+ right.startsWith(`${left}/`)
1008
+ );
1009
+ }
1010
+
1011
+ export function validatePlanHandoff(candidate: Plan): void {
1012
+ const handoff = candidate.plan_handoff;
1013
+ if (!handoff) return;
1014
+ const taskIds = candidate.nodes
1015
+ .filter((item) => item.kind === "task")
1016
+ .map((item) => item.ref_id)
1017
+ .filter((value): value is string => value !== null);
1018
+ requireCondition(
1019
+ new Set(handoff.task_ids).size === handoff.task_ids.length,
1020
+ "INVALID_PLAN_HANDOFF",
1021
+ "dev-plan handoff task IDs must be unique",
1022
+ );
1023
+ requireCondition(
1024
+ sameMembers(handoff.task_ids, taskIds),
1025
+ "INVALID_PLAN_HANDOFF",
1026
+ "dev-plan handoff task IDs must match plan task nodes",
1027
+ );
1028
+ const surfaceTaskIds = handoff.task_surfaces.map((item) => item.task_id);
1029
+ requireCondition(
1030
+ new Set(surfaceTaskIds).size === surfaceTaskIds.length &&
1031
+ sameMembers(surfaceTaskIds, handoff.task_ids),
1032
+ "INVALID_PLAN_HANDOFF",
1033
+ "dev-plan handoff task surfaces must cover every plan task exactly once",
1034
+ );
1035
+ const planSurfaces = handoff.task_surfaces.map((item) => ({
1036
+ taskId: item.task_id,
1037
+ surfaces: normalizedOwnedSurfaces(item.owned_surfaces),
1038
+ }));
1039
+ requireCondition(
1040
+ planSurfaces.every((item) => item.surfaces !== undefined),
1041
+ "INVALID_PLAN_HANDOFF",
1042
+ "dev-plan handoff owned surfaces must be repository-relative and unique",
1043
+ );
1044
+ for (let index = 0; index < planSurfaces.length; index += 1)
1045
+ for (const right of planSurfaces.slice(index + 1)) {
1046
+ const left = planSurfaces[index]!;
1047
+ const shared = left.surfaces!.some((surface) =>
1048
+ right.surfaces!.some((other) => ownedSurfacesOverlap(surface, other)),
1049
+ );
1050
+ requireCondition(
1051
+ !shared,
1052
+ "INVALID_PLAN_HANDOFF",
1053
+ `dev-plan handoff owned surfaces must be disjoint between ${left.taskId} and ${right.taskId}`,
1054
+ );
1055
+ }
1056
+ requireCondition(
1057
+ new Set(handoff.acceptance_scopes.map((item) => item.acceptance_id))
1058
+ .size === handoff.acceptance_scopes.length,
1059
+ "INVALID_PLAN_HANDOFF",
1060
+ "dev-plan handoff acceptance IDs must be unique",
1061
+ );
1062
+ requireCondition(
1063
+ handoff.acceptance_digest ===
1064
+ acceptanceScopeDigest(handoff.acceptance_scopes),
1065
+ "INVALID_PLAN_HANDOFF",
1066
+ "dev-plan handoff acceptance digest does not match its scopes",
1067
+ );
1068
+ requireCondition(
1069
+ handoff.acceptance_scopes.some((item) => item.scope.startsWith("batch:")) &&
1070
+ handoff.acceptance_scopes.some((item) => item.scope.startsWith("task:")),
1071
+ "INVALID_PLAN_HANDOFF",
1072
+ "dev-plan handoff must include batch and task acceptance scopes",
1073
+ );
1074
+ for (const item of handoff.acceptance_scopes) {
1075
+ const [kind, target] = item.scope.split(":", 2);
1076
+ requireCondition(
1077
+ kind === "batch" || kind === "task",
1078
+ "INVALID_PLAN_HANDOFF",
1079
+ "dev-plan handoff acceptance scope kind is invalid",
1080
+ );
1081
+ if (kind === "task")
1082
+ requireCondition(
1083
+ target === item.owner_id && handoff.task_ids.includes(target),
1084
+ "INVALID_PLAN_HANDOFF",
1085
+ "dev-plan task acceptance scope must own a plan task",
1086
+ );
1087
+ }
1088
+ }
1089
+
1090
+ export function attachDevPlanHandoff(
1091
+ candidate: Plan,
1092
+ source: DevPlanHandoffSource,
1093
+ ): Plan {
1094
+ requireCondition(
1095
+ candidate.plan_handoff === undefined,
1096
+ "INVALID_PLAN_HANDOFF",
1097
+ "A handoff source cannot replace an existing dev-plan handoff envelope",
1098
+ );
1099
+ const parsedSource = planHandoffSource.parse(source);
1100
+ const taskIds = candidate.nodes
1101
+ .filter((item) => item.kind === "task")
1102
+ .map((item) => item.ref_id)
1103
+ .filter((value): value is string => value !== null);
1104
+ const attached = plan.parse({
1105
+ ...candidate,
1106
+ plan_handoff: {
1107
+ flow_type: "multi-task-flow",
1108
+ raw_plan_digest: parsedSource.raw_plan_digest,
1109
+ acceptance_digest: acceptanceScopeDigest(parsedSource.acceptance_scopes),
1110
+ task_ids: taskIds,
1111
+ task_surfaces: parsedSource.task_surfaces,
1112
+ acceptance_scopes: parsedSource.acceptance_scopes,
1113
+ },
1114
+ });
1115
+ validatePlanHandoff(attached);
1116
+ return attached;
1117
+ }
1118
+
1119
+ export function validateDevPlanHandoff(
1120
+ candidate: Plan,
1121
+ groups: Array<z.infer<typeof group>>,
1122
+ tasks: Array<z.infer<typeof task>>,
1123
+ options: DevPlanHandoffValidationOptions = {},
1124
+ ): void {
1125
+ const handoff = candidate.plan_handoff;
1126
+ requireCondition(
1127
+ handoff,
1128
+ "INVALID_PLAN_HANDOFF",
1129
+ "multi-task-flow init requires a dev-plan handoff envelope",
1130
+ );
1131
+ validatePlanHandoff(candidate);
1132
+ const taskIds = tasks.map((item) => item.id);
1133
+ requireCondition(
1134
+ sameMembers(handoff.task_ids, taskIds),
1135
+ "INVALID_PLAN_HANDOFF",
1136
+ "dev-plan handoff task IDs must match runtime tasks",
1137
+ );
1138
+ const runtimeGroupIds = new Set(groups.map((item) => item.id));
1139
+ const taskNodes = new Map(
1140
+ candidate.nodes
1141
+ .filter((item) => item.kind === "task" && item.ref_id !== null)
1142
+ .map((item) => [item.ref_id!, item]),
1143
+ );
1144
+ const plannedGroupIds = new Set<string>();
1145
+ for (const runtimeTask of tasks) {
1146
+ const taskNode = taskNodes.get(runtimeTask.id);
1147
+ requireCondition(
1148
+ runtimeGroupIds.has(runtimeTask.group_id),
1149
+ "INVALID_PLAN_HANDOFF",
1150
+ `runtime task ${runtimeTask.id} references an unknown group`,
1151
+ );
1152
+ requireCondition(
1153
+ taskNode?.group_id !== null && taskNode?.group_id !== undefined,
1154
+ "INVALID_PLAN_HANDOFF",
1155
+ `plan task ${runtimeTask.id} must declare a group`,
1156
+ );
1157
+ requireCondition(
1158
+ runtimeGroupIds.has(taskNode!.group_id!),
1159
+ "INVALID_PLAN_HANDOFF",
1160
+ `plan task ${runtimeTask.id} references an unknown group`,
1161
+ );
1162
+ plannedGroupIds.add(taskNode!.group_id!);
1163
+ const hasDynamicAssignment =
1164
+ options.assignmentEvidence
1165
+ ?.get(runtimeTask.id)
1166
+ ?.has(runtimeTask.group_id) === true &&
1167
+ runtimeTask.assignment_history.some(
1168
+ (item) => item.group_id === runtimeTask.group_id,
1169
+ );
1170
+ requireCondition(
1171
+ options.allowDynamicAssignments
1172
+ ? taskNode!.group_id === runtimeTask.group_id || hasDynamicAssignment
1173
+ : taskNode!.group_id === runtimeTask.group_id,
1174
+ "INVALID_PLAN_HANDOFF",
1175
+ `plan task ${runtimeTask.id} group does not match runtime ownership`,
1176
+ );
1177
+ }
1178
+ const surfaces = new Map(
1179
+ handoff.task_surfaces.map((item) => [item.task_id, item.owned_surfaces]),
1180
+ );
1181
+ const normalizedRuntimeSurfaces = new Map<string, string[]>();
1182
+ for (const runtimeTask of tasks) {
1183
+ const handoffOwnedSurfaces = normalizedOwnedSurfaces(
1184
+ surfaces.get(runtimeTask.id) ?? [],
1185
+ );
1186
+ const runtimeOwnedSurfaces = normalizedOwnedSurfaces(
1187
+ runtimeTask.owned_surfaces,
1188
+ );
1189
+ requireCondition(
1190
+ handoffOwnedSurfaces !== undefined && runtimeOwnedSurfaces !== undefined,
1191
+ "INVALID_PLAN_HANDOFF",
1192
+ `dev-plan handoff owned surfaces are invalid for task ${runtimeTask.id}`,
1193
+ );
1194
+ requireCondition(
1195
+ JSON.stringify(sortedSurfaces(handoffOwnedSurfaces!)) ===
1196
+ JSON.stringify(sortedSurfaces(runtimeOwnedSurfaces!)),
1197
+ "INVALID_PLAN_HANDOFF",
1198
+ `dev-plan handoff owned surfaces do not match task ${runtimeTask.id}`,
1199
+ );
1200
+ normalizedRuntimeSurfaces.set(runtimeTask.id, runtimeOwnedSurfaces!);
1201
+ }
1202
+ const runtimeSurfaceEntries = [...normalizedRuntimeSurfaces.entries()];
1203
+ for (let index = 0; index < runtimeSurfaceEntries.length; index += 1)
1204
+ for (const [rightTaskId, rightSurfaces] of runtimeSurfaceEntries.slice(
1205
+ index + 1,
1206
+ )) {
1207
+ const [leftTaskId, leftSurfaces] = runtimeSurfaceEntries[index]!;
1208
+ const shared = leftSurfaces.some((surface) =>
1209
+ rightSurfaces.some((other) => ownedSurfacesOverlap(surface, other)),
1210
+ );
1211
+ requireCondition(
1212
+ !shared,
1213
+ "INVALID_PLAN_HANDOFF",
1214
+ `dev-plan handoff owned surfaces must be disjoint between ${leftTaskId} and ${rightTaskId}`,
1215
+ );
1216
+ }
1217
+ for (const item of handoff.acceptance_scopes) {
1218
+ const [kind, target] = item.scope.split(":", 2);
1219
+ if (kind === "batch")
1220
+ requireCondition(
1221
+ target === item.owner_id && groups.some((group) => group.id === target),
1222
+ "INVALID_PLAN_HANDOFF",
1223
+ "dev-plan batch acceptance scope must own a runtime group",
1224
+ );
1225
+ else
1226
+ requireCondition(
1227
+ tasks.some((task) => task.id === target),
1228
+ "INVALID_PLAN_HANDOFF",
1229
+ "dev-plan task acceptance scope must own a runtime task",
1230
+ );
1231
+ }
1232
+ for (const runtimeTask of tasks)
1233
+ requireCondition(
1234
+ handoff.acceptance_scopes.some(
1235
+ (item) => item.scope === `task:${runtimeTask.id}`,
1236
+ ),
1237
+ "INVALID_PLAN_HANDOFF",
1238
+ `dev-plan handoff is missing task acceptance scope for ${runtimeTask.id}`,
1239
+ );
1240
+ const requiredBatchGroupIds = options.allowDynamicAssignments
1241
+ ? plannedGroupIds
1242
+ : new Set(groups.map((item) => item.id));
1243
+ for (const runtimeGroup of groups)
1244
+ requireCondition(
1245
+ plannedGroupIds.has(runtimeGroup.id) ||
1246
+ options.dynamicGroupIds?.has(runtimeGroup.id) === true,
1247
+ "INVALID_PLAN_HANDOFF",
1248
+ `runtime group ${runtimeGroup.id} is not bound to the approved plan`,
1249
+ );
1250
+ for (const groupId of requiredBatchGroupIds)
1251
+ requireCondition(
1252
+ handoff.acceptance_scopes.some(
1253
+ (item) => item.scope === `batch:${groupId}`,
1254
+ ),
1255
+ "INVALID_PLAN_HANDOFF",
1256
+ `dev-plan handoff is missing batch acceptance scope for ${groupId}`,
1257
+ );
1258
+ }
1259
+
1260
+ export function validateInitialRuntimeState(
1261
+ groups: Array<z.infer<typeof group>>,
1262
+ tasks: Array<z.infer<typeof task>>,
1263
+ ): void {
1264
+ const validRequirementsPath = (value: string | null): boolean =>
1265
+ requirementsPath.safeParse(value).success;
1266
+ const bootstraps = groups.filter(
1267
+ (candidate) => candidate.delivery_unit_kind === "bootstrap",
1268
+ );
1269
+ requireCondition(
1270
+ bootstraps.length <= 1,
1271
+ "INVALID_INITIAL_STATE",
1272
+ "At most one bootstrap delivery unit is allowed",
1273
+ 3,
1274
+ );
1275
+ for (const candidate of bootstraps) {
1276
+ requireCondition(
1277
+ candidate.owner_kind === "main",
1278
+ "INVALID_INITIAL_STATE",
1279
+ "Bootstrap delivery unit must be main-owned",
1280
+ 3,
1281
+ );
1282
+ requireCondition(
1283
+ candidate.agent_thread_id === null,
1284
+ "INVALID_INITIAL_STATE",
1285
+ "Bootstrap delivery unit cannot bind a group conversation",
1286
+ 3,
1287
+ );
1288
+ }
1289
+ for (const candidate of groups.filter(
1290
+ (item) => item.delivery_unit_kind === "regular",
1291
+ ))
1292
+ requireCondition(
1293
+ candidate.owner_kind === "group",
1294
+ "INVALID_INITIAL_STATE",
1295
+ "Regular delivery unit must be group-owned",
1296
+ 3,
1297
+ );
1298
+ const groupsAreUnboundAndPlanned = groups.every(
1299
+ (candidate) =>
1300
+ candidate.agent_thread_id === null &&
1301
+ candidate.state === "planned" &&
1302
+ candidate.parent_branch === null &&
1303
+ candidate.parent_pr === null &&
1304
+ candidate.cut_sha === null &&
1305
+ candidate.current_sha === null &&
1306
+ candidate.merge_sha === null &&
1307
+ validRequirementsPath(candidate.requirements_path) &&
1308
+ candidate.atoms.every((atom) => atom.status === "planned") &&
1309
+ candidate.coordination_execution.state === "unknown" &&
1310
+ candidate.coordination_execution.reason === null &&
1311
+ candidate.coordination_execution.waiting_for_task_ids.length === 0 &&
1312
+ Object.values(candidate.lifecycle).every((stage) => stage === "unknown"),
1313
+ );
1314
+ const tasksAreUnboundAndPlanned = tasks.every(
1315
+ (candidate) =>
1316
+ candidate.thread_id === null &&
1317
+ candidate.state === "planned" &&
1318
+ candidate.base_sha === null &&
1319
+ candidate.pr === null &&
1320
+ validRequirementsPath(candidate.requirements_path) &&
1321
+ candidate.started_at === null &&
1322
+ candidate.finished_at === null &&
1323
+ candidate.blocker === null &&
1324
+ candidate.assignment_history.length === 0 &&
1325
+ candidate.branch === null &&
1326
+ candidate.atoms.every((atom) => atom.status === "planned") &&
1327
+ Object.values(candidate.lifecycle).every((stage) => stage === "unknown"),
1328
+ );
1329
+
1330
+ requireCondition(
1331
+ groupsAreUnboundAndPlanned && tasksAreUnboundAndPlanned,
1332
+ "INVALID_INITIAL_STATE",
1333
+ "Initial groups and tasks must be unbound and planned with planned atoms",
1334
+ );
1335
+ }
1336
+
1337
+ export function validatePlan(candidate: Plan): void {
1338
+ validatePlanHandoff(candidate);
1339
+ if (candidate.revision) {
1340
+ const changeCount =
1341
+ candidate.revision.change_set.added.length +
1342
+ candidate.revision.change_set.removed.length +
1343
+ candidate.revision.change_set.modified.length;
1344
+ requireCondition(
1345
+ changeCount > 0,
1346
+ "EMPTY_PLAN_REVISION",
1347
+ "A plan revision must retain a non-empty canonical diff",
1348
+ );
1349
+ requireCondition(
1350
+ new Set(candidate.revision.affected_task_ids).size ===
1351
+ candidate.revision.affected_task_ids.length,
1352
+ "DUPLICATE_ID",
1353
+ "Plan revision task IDs must be unique",
1354
+ );
1355
+ requireCondition(
1356
+ new Set(candidate.revision.affected_node_ids).size ===
1357
+ candidate.revision.affected_node_ids.length,
1358
+ "DUPLICATE_ID",
1359
+ "Plan revision node IDs must be unique",
1360
+ );
1361
+ requireCondition(
1362
+ new Set(candidate.revision.affected_edge_ids).size ===
1363
+ candidate.revision.affected_edge_ids.length,
1364
+ "DUPLICATE_ID",
1365
+ "Plan revision edge IDs must be unique",
1366
+ );
1367
+ }
1368
+ for (const collection of [
1369
+ candidate.atoms,
1370
+ candidate.group_atoms,
1371
+ candidate.atomic_edges,
1372
+ candidate.nodes,
1373
+ candidate.edges,
1374
+ candidate.cut_rules,
1375
+ candidate.actions,
1376
+ ]) {
1377
+ requireCondition(
1378
+ new Set(collection.map((item) => item.id)).size === collection.length,
1379
+ "DUPLICATE_ID",
1380
+ "Plan IDs must be unique within each collection",
1381
+ );
1382
+ }
1383
+ validateGrouping(candidate.atoms, candidate.atomic_edges);
1384
+ topologicalOrder(
1385
+ candidate.nodes.map((item) => item.id),
1386
+ candidate.edges.map((item) => ({
1387
+ from: item.from_node_id,
1388
+ to: item.to_node_id,
1389
+ })),
1390
+ );
1391
+ const taskNodes = new Map(
1392
+ candidate.nodes
1393
+ .filter((item) => item.kind === "task")
1394
+ .map((item) => [item.ref_id, item.id]),
1395
+ );
1396
+ requireCondition(
1397
+ !taskNodes.has(null) &&
1398
+ taskNodes.size ===
1399
+ candidate.nodes.filter((item) => item.kind === "task").length,
1400
+ "DUPLICATE_TASK_NODE",
1401
+ "Each task needs exactly one identified plan node",
1402
+ );
1403
+ requireCondition(
1404
+ candidate.atoms.every((atom) => taskNodes.has(atom.task_id)),
1405
+ "MISSING_TASK_NODE",
1406
+ "Every atom must belong to a task node",
1407
+ );
1408
+ const groupNodes = new Set(
1409
+ candidate.nodes
1410
+ .map((item) => item.group_id)
1411
+ .filter((item): item is string => item !== null),
1412
+ );
1413
+ requireCondition(
1414
+ candidate.group_atoms.every((atom) => groupNodes.has(atom.group_id)),
1415
+ "MISSING_GROUP",
1416
+ "Every delivery-unit atom must belong to a group node",
1417
+ );
1418
+ requireCondition(
1419
+ candidate.actions.every(
1420
+ (action) =>
1421
+ (action.task_id !== null && taskNodes.has(action.task_id)) ||
1422
+ (action.group_id !== null && groupNodes.has(action.group_id)),
1423
+ ),
1424
+ "MISSING_PLAN_TARGET",
1425
+ "Every planned action must belong to a task or group node",
1426
+ );
1427
+ for (const action of candidate.actions) {
1428
+ if (action.target) {
1429
+ requireCondition(
1430
+ action.target.type === "task"
1431
+ ? action.task_id === action.target.id
1432
+ : action.group_id === action.target.id,
1433
+ "PLAN_TARGET_MISMATCH",
1434
+ "Planned action target must match its task/group owner",
1435
+ );
1436
+ } else {
1437
+ requireCondition(
1438
+ action.target_identity !== undefined,
1439
+ "MISSING_PLAN_TARGET",
1440
+ "Planned action must use a structured target",
1441
+ );
1442
+ }
1443
+ }
1444
+ requireCondition(
1445
+ candidate.actions.every(
1446
+ (action) =>
1447
+ action.kind === "publish_branch" ||
1448
+ action.kind === "publish_pr" ||
1449
+ action.task_id !== null,
1450
+ ),
1451
+ "MISSING_TASK_NODE",
1452
+ "Release and deploy actions must belong to a task node",
1453
+ );
1454
+ for (const taskNode of candidate.nodes.filter((item) => item.kind === "task"))
1455
+ requireCondition(
1456
+ taskNode.group_id !== null,
1457
+ "MISSING_GROUP",
1458
+ "Every task node must identify its group",
1459
+ );
1460
+ const nodes = new Map(candidate.nodes.map((item) => [item.id, item]));
1461
+ const atoms = new Map(candidate.atoms.map((item) => [item.id, item]));
1462
+ const actualEdges = new Set(
1463
+ candidate.edges.map(
1464
+ (item) => `${item.from_node_id}:${item.to_node_id}:${item.requires}`,
1465
+ ),
1466
+ );
1467
+ for (const atomDependency of candidate.atomic_edges) {
1468
+ const from = atoms.get(atomDependency.from_atom_id)!;
1469
+ const to = atoms.get(atomDependency.to_atom_id)!;
1470
+ if (from.task_id !== to.task_id) {
1471
+ requireCondition(
1472
+ actualEdges.has(
1473
+ `${taskNodes.get(from.task_id)}:${taskNodes.get(to.task_id)}:integrated`,
1474
+ ),
1475
+ "MISSING_HANDOFF",
1476
+ "Cross-task atomic dependencies require an integrated task edge",
1477
+ );
1478
+ }
1479
+ }
1480
+ for (const dependency of candidate.edges) {
1481
+ requireCondition(
1482
+ nodes.has(dependency.from_node_id) && nodes.has(dependency.to_node_id),
1483
+ "UNKNOWN_NODE",
1484
+ "Dependency references an unknown node",
1485
+ );
1486
+ }
1487
+ }
1488
+
1489
+ export type PlanCompletenessIssue = {
1490
+ code: string;
1491
+ message: string;
1492
+ };
1493
+
1494
+ /** Validate the content required before a plan may enter the formal flow. */
1495
+ export function planCompletenessIssues(candidate: Plan): PlanCompletenessIssue[] {
1496
+ const issues: PlanCompletenessIssue[] = [];
1497
+ const taskNodes = candidate.nodes.filter((node) => node.kind === "task");
1498
+ if (taskNodes.length === 0)
1499
+ issues.push({ code: "empty_tasks", message: "计划至少需要一个任务。" });
1500
+ const atomTaskIds = new Set(candidate.atoms.map((atom) => atom.task_id));
1501
+ for (const taskNode of taskNodes) {
1502
+ if (!taskNode.ref_id || !atomTaskIds.has(taskNode.ref_id))
1503
+ issues.push({ code: "missing_atom", message: `任务 ${taskNode.label} 缺少原子任务。` });
1504
+ if (taskNode.estimate_minutes === null)
1505
+ issues.push({ code: "missing_estimate", message: `任务 ${taskNode.label} 缺少估时。` });
1506
+ if (!taskNode.estimate_basis)
1507
+ issues.push({ code: "missing_estimate_basis", message: `任务 ${taskNode.label} 缺少估时依据。` });
1508
+ if (!taskNode.estimate_confidence)
1509
+ issues.push({ code: "missing_estimate_confidence", message: `任务 ${taskNode.label} 缺少估时置信度。` });
1510
+ }
1511
+ return issues;
1512
+ }
1513
+
1514
+ export function validateSchedulablePlan(candidate: Plan): void {
1515
+ const issue = planCompletenessIssues(candidate)[0];
1516
+ requireCondition(!issue, "PLAN_INCOMPLETE", issue?.message ?? "计划内容不完整。", 3);
1517
+ }
1518
+
1519
+ export type CutAssignmentEvidence = {
1520
+ assignments: Map<string, Set<string>>;
1521
+ dynamicGroupIds: Set<string>;
1522
+ };
1523
+
1524
+ export function collectCutAssignmentEvidence(
1525
+ ledger: Ledger,
1526
+ active: Plan,
1527
+ ): CutAssignmentEvidence {
1528
+ const currentGroups = new Map<string, string>();
1529
+ for (const node of active.nodes.filter((item) => item.kind === "task"))
1530
+ if (node.ref_id !== null && node.group_id !== null)
1531
+ currentGroups.set(node.ref_id, node.group_id);
1532
+ const assignments = new Map<string, Set<string>>();
1533
+ const dynamicGroupIds = new Set<string>();
1534
+ const appliedOperationIds = new Set<string>();
1535
+ const createdGroupIds = new Set<string>();
1536
+ for (const [eventIndex, event] of ledger.events.entries()) {
1537
+ if (event.type !== "cut_applied") continue;
1538
+ const operationId = event.data.operation_id;
1539
+ const oldGroupId = event.data.old_group_id;
1540
+ const newGroupId = event.data.new_group_id;
1541
+ const cutSha = event.data.cut_sha;
1542
+ const oldGroupCurrentSha = event.data.old_group_current_sha;
1543
+ const includedTaskIds = event.data.included_task_ids;
1544
+ const reassignedTaskIds = event.data.reassigned_task_ids;
1545
+ const cutEvidenceValue = event.data.cut_evidence;
1546
+ requireCondition(
1547
+ id.safeParse(operationId).success &&
1548
+ id.safeParse(oldGroupId).success &&
1549
+ id.safeParse(newGroupId).success &&
1550
+ sha.safeParse(cutSha).success &&
1551
+ oldGroupCurrentSha === cutSha &&
1552
+ Array.isArray(includedTaskIds) &&
1553
+ includedTaskIds.every((item) => id.safeParse(item).success) &&
1554
+ Array.isArray(reassignedTaskIds) &&
1555
+ reassignedTaskIds.every((item) => id.safeParse(item).success),
1556
+ "INVALID_CUT_EVENT",
1557
+ "cut_applied event has invalid assignment evidence",
1558
+ );
1559
+ requireCondition(
1560
+ !appliedOperationIds.has(operationId as string) &&
1561
+ !createdGroupIds.has(newGroupId as string),
1562
+ "INVALID_CUT_EVENT",
1563
+ "cut_applied event reuses a cut operation or dynamic group",
1564
+ );
1565
+ requireCondition(
1566
+ event.subject_id === oldGroupId && oldGroupId !== newGroupId,
1567
+ "INVALID_CUT_EVENT",
1568
+ "cut_applied event subject does not match its old group",
1569
+ );
1570
+ const operation = ledger.operations.find((item) => item.id === operationId);
1571
+ requireCondition(
1572
+ operation !== undefined &&
1573
+ operation.kind === "cut" &&
1574
+ operation.status === "succeeded" &&
1575
+ operation.target_id === oldGroupId &&
1576
+ operation.request.operation_id === operationId &&
1577
+ operation.request.group_id === oldGroupId &&
1578
+ operation.expected_sha === cutSha,
1579
+ "INVALID_CUT_EVENT",
1580
+ "cut_applied event is not bound to a succeeded cut operation",
1581
+ );
1582
+ const oldGroup = ledger.groups.find((item) => item.id === oldGroupId);
1583
+ const newGroup = ledger.groups.find((item) => item.id === newGroupId);
1584
+ requireCondition(
1585
+ oldGroup !== undefined && newGroup !== undefined,
1586
+ "INVALID_CUT_EVENT",
1587
+ "cut_applied event references an unknown group",
1588
+ );
1589
+ const ruleId = operation?.request.rule_id;
1590
+ const rule = active.cut_rules.find((item) => item.id === ruleId);
1591
+ requireCondition(
1592
+ rule !== undefined,
1593
+ "INVALID_CUT_EVENT",
1594
+ "cut_applied event references an unknown cut rule",
1595
+ );
1596
+ const cutEvidenceResult = cutEvidence.safeParse(cutEvidenceValue);
1597
+ requireCondition(
1598
+ cutEvidenceResult.success && cutEvidenceResult.data.sha === cutSha,
1599
+ "INVALID_CUT_EVENT",
1600
+ "cut_applied event is missing verified provider evidence",
1601
+ );
1602
+ const cutClaim = ledger.events
1603
+ .slice(0, eventIndex)
1604
+ .find(
1605
+ (candidate) =>
1606
+ candidate.type === "cut_claimed" &&
1607
+ candidate.subject_id === oldGroupId &&
1608
+ candidate.actor_id === operation!.actor_id &&
1609
+ candidate.data.operation_id === operationId &&
1610
+ candidate.data.group_id === oldGroupId &&
1611
+ candidate.data.rule_id === ruleId &&
1612
+ sha.safeParse(candidate.data.expected_sha).success,
1613
+ );
1614
+ requireCondition(
1615
+ cutClaim !== undefined,
1616
+ "INVALID_CUT_EVENT",
1617
+ "cut_applied event is not preceded by a matching cut claim",
1618
+ );
1619
+ requireCondition(
1620
+ rule!.status === "applied",
1621
+ "INVALID_CUT_EVENT",
1622
+ "cut_applied event does not bind an applied cut rule",
1623
+ );
1624
+ let ruleGroupId = rule!.group_id;
1625
+ for (const previousEvent of ledger.events.slice(0, eventIndex))
1626
+ if (
1627
+ previousEvent.type === "cut_applied" &&
1628
+ previousEvent.data.old_group_id === ruleGroupId &&
1629
+ typeof previousEvent.data.new_group_id === "string"
1630
+ )
1631
+ ruleGroupId = previousEvent.data.new_group_id;
1632
+ requireCondition(
1633
+ ruleGroupId === oldGroupId,
1634
+ "INVALID_CUT_EVENT",
1635
+ "cut_applied event does not match its approved cut rule group",
1636
+ );
1637
+ requireCondition(
1638
+ oldGroup!.cut_sha === cutSha,
1639
+ "INVALID_CUT_EVENT",
1640
+ "cut_applied event does not bind the old group cut boundary",
1641
+ );
1642
+ requireCondition(
1643
+ event.data.new_group_state === "planned" &&
1644
+ event.data.new_group_agent_thread_id === null &&
1645
+ event.data.new_group_parent_branch === null &&
1646
+ event.data.new_group_parent_pr === null &&
1647
+ event.data.new_group_cut_sha === null &&
1648
+ event.data.new_group_current_sha === null &&
1649
+ event.data.new_group_merge_sha === null &&
1650
+ event.data.new_group_requirements_path === null,
1651
+ "INVALID_CUT_EVENT",
1652
+ "cut_applied event does not prove a clean dynamic group creation",
1653
+ );
1654
+ const initialGroupSnapshot = group.safeParse(event.data.new_group_snapshot);
1655
+ requireCondition(
1656
+ initialGroupSnapshot.success &&
1657
+ initialGroupSnapshot.data.id === newGroupId &&
1658
+ initialGroupSnapshot.data.state === "planned" &&
1659
+ initialGroupSnapshot.data.agent_thread_id === null &&
1660
+ initialGroupSnapshot.data.parent_branch === null &&
1661
+ initialGroupSnapshot.data.parent_pr === null &&
1662
+ initialGroupSnapshot.data.cut_sha === null &&
1663
+ initialGroupSnapshot.data.current_sha === null &&
1664
+ initialGroupSnapshot.data.merge_sha === null &&
1665
+ initialGroupSnapshot.data.requirements_path === null,
1666
+ "INVALID_CUT_EVENT",
1667
+ "cut_applied event is missing a clean dynamic group snapshot",
1668
+ );
1669
+ requireCondition(
1670
+ initialGroupSnapshot.data.state === event.data.new_group_state &&
1671
+ initialGroupSnapshot.data.agent_thread_id ===
1672
+ event.data.new_group_agent_thread_id &&
1673
+ initialGroupSnapshot.data.parent_branch ===
1674
+ event.data.new_group_parent_branch &&
1675
+ canonicalJson(initialGroupSnapshot.data.parent_pr) ===
1676
+ canonicalJson(event.data.new_group_parent_pr) &&
1677
+ initialGroupSnapshot.data.cut_sha === event.data.new_group_cut_sha &&
1678
+ initialGroupSnapshot.data.current_sha ===
1679
+ event.data.new_group_current_sha &&
1680
+ initialGroupSnapshot.data.merge_sha ===
1681
+ event.data.new_group_merge_sha &&
1682
+ initialGroupSnapshot.data.requirements_path ===
1683
+ event.data.new_group_requirements_path,
1684
+ "INVALID_CUT_EVENT",
1685
+ "cut_applied event snapshot does not match its creation fields",
1686
+ );
1687
+ const oldGroupSnapshot = group.safeParse(event.data.old_group_snapshot);
1688
+ requireCondition(
1689
+ oldGroupSnapshot.success &&
1690
+ oldGroupSnapshot.data.id === oldGroupId &&
1691
+ oldGroupSnapshot.data.current_sha === cutSha &&
1692
+ oldGroupSnapshot.data.cut_sha === cutSha &&
1693
+ oldGroupSnapshot.data.title === oldGroup.title &&
1694
+ oldGroupSnapshot.data.agent_thread_id === oldGroup.agent_thread_id &&
1695
+ oldGroupSnapshot.data.parent_branch === oldGroup.parent_branch &&
1696
+ canonicalJson(oldGroupSnapshot.data.parent_pr) ===
1697
+ canonicalJson(oldGroup.parent_pr) &&
1698
+ oldGroupSnapshot.data.requirements_path ===
1699
+ oldGroup.requirements_path &&
1700
+ oldGroupSnapshot.data.merge_sha === null &&
1701
+ ["planned", "active", "blocked"].includes(oldGroupSnapshot.data.state),
1702
+ "INVALID_CUT_EVENT",
1703
+ "cut_applied event is missing the old group boundary snapshot",
1704
+ );
1705
+ const priorGroupEvidence = ledger.events
1706
+ .slice(0, eventIndex)
1707
+ .some((candidate) => candidate.subject_id === newGroupId);
1708
+ requireCondition(
1709
+ !priorGroupEvidence,
1710
+ "INVALID_CUT_EVENT",
1711
+ "cut_applied event reuses a group with prior runtime history",
1712
+ );
1713
+ let latestGroupSnapshot = initialGroupSnapshot.data;
1714
+ for (const laterEvent of ledger.events.slice(eventIndex + 1)) {
1715
+ if (laterEvent.subject_id !== newGroupId) continue;
1716
+ const snapshotField =
1717
+ laterEvent.type === "cut_applied"
1718
+ ? "old_group_snapshot"
1719
+ : ["thread_bound", "group_updated", "merge_resolved"].includes(
1720
+ laterEvent.type,
1721
+ )
1722
+ ? "group_snapshot"
1723
+ : null;
1724
+ if (snapshotField === null) continue;
1725
+ const laterSnapshot = group.safeParse(laterEvent.data[snapshotField]);
1726
+ requireCondition(
1727
+ laterSnapshot.success && laterSnapshot.data.id === newGroupId,
1728
+ "INVALID_CUT_EVENT",
1729
+ `cut lifecycle event ${laterEvent.id} is missing a bound group snapshot`,
1730
+ );
1731
+ latestGroupSnapshot = laterSnapshot.data;
1732
+ }
1733
+ requireCondition(
1734
+ canonicalJson(latestGroupSnapshot) === canonicalJson(newGroup),
1735
+ "INVALID_CUT_EVENT",
1736
+ "cut lifecycle snapshots do not match the current dynamic group",
1737
+ );
1738
+ const included = includedTaskIds as string[];
1739
+ const reassigned = reassignedTaskIds as string[];
1740
+ requireCondition(
1741
+ new Set([...included, ...reassigned]).size ===
1742
+ included.length + reassigned.length,
1743
+ "INVALID_CUT_EVENT",
1744
+ "cut_applied event overlaps included and reassigned tasks",
1745
+ );
1746
+ const expectedDevelopmentTaskIds = ledger.tasks
1747
+ .filter(
1748
+ (task) =>
1749
+ isContributionKind(task.kind) &&
1750
+ currentGroups.get(task.id) === oldGroupId,
1751
+ )
1752
+ .map((task) => task.id);
1753
+ requireCondition(
1754
+ sameMembers(expectedDevelopmentTaskIds, [...included, ...reassigned]),
1755
+ "INVALID_CUT_EVENT",
1756
+ "cut_applied event does not cover every old-delivery-unit contribution task",
1757
+ );
1758
+ const taskSnapshots = z.array(task).safeParse(event.data.task_snapshots);
1759
+ requireCondition(
1760
+ taskSnapshots.success &&
1761
+ sameMembers(
1762
+ taskSnapshots.data.map((item) => item.id),
1763
+ expectedDevelopmentTaskIds,
1764
+ ) &&
1765
+ taskSnapshots.data.every(
1766
+ (item) =>
1767
+ item.group_id === oldGroupId && isContributionKind(item.kind),
1768
+ ),
1769
+ "INVALID_CUT_EVENT",
1770
+ "cut_applied event is missing complete task boundary snapshots",
1771
+ );
1772
+ const snapshotById = new Map(
1773
+ taskSnapshots.success
1774
+ ? taskSnapshots.data.map((item) => [item.id, item])
1775
+ : [],
1776
+ );
1777
+ const boundaryStateById = new Map(
1778
+ expectedDevelopmentTaskIds.map((taskId) => [
1779
+ taskId,
1780
+ taskStateAtEvent(
1781
+ ledger,
1782
+ taskId,
1783
+ eventIndex,
1784
+ ledger.tasks.find((item) => item.id === taskId)?.state ?? "planned",
1785
+ ),
1786
+ ]),
1787
+ );
1788
+ requireCondition(
1789
+ [...boundaryStateById.values()].every((state) => state !== null),
1790
+ "INVALID_CUT_EVENT",
1791
+ "cut_applied event is missing task state history before the cut boundary",
1792
+ );
1793
+ for (const taskId of expectedDevelopmentTaskIds) {
1794
+ const task = ledger.tasks.find((item) => item.id === taskId);
1795
+ const snapshot = snapshotById.get(taskId);
1796
+ requireCondition(
1797
+ task !== undefined &&
1798
+ snapshot !== undefined &&
1799
+ sameTaskStructure(snapshot, task) &&
1800
+ snapshot.group_id === oldGroupId &&
1801
+ snapshot.state === boundaryStateById.get(taskId),
1802
+ "INVALID_CUT_EVENT",
1803
+ `cut_applied event has an invalid task boundary snapshot ${taskId}`,
1804
+ );
1805
+ }
1806
+ for (const taskId of included) {
1807
+ const task = ledger.tasks.find((item) => item.id === taskId);
1808
+ const snapshot = snapshotById.get(taskId);
1809
+ requireCondition(
1810
+ task !== undefined &&
1811
+ snapshot !== undefined &&
1812
+ isContributionKind(task.kind) &&
1813
+ currentGroups.get(taskId) === oldGroupId &&
1814
+ canonicalJson(task.assignment_history) ===
1815
+ canonicalJson(snapshot.assignment_history) &&
1816
+ ["integrated", "closed"].includes(snapshot.state),
1817
+ "INVALID_CUT_EVENT",
1818
+ `cut_applied event has an invalid included task ${taskId}`,
1819
+ );
1820
+ }
1821
+ const reassignmentGroupId = newGroupId as string;
1822
+ const seenTaskIds = new Set<string>();
1823
+ for (const taskId of reassigned) {
1824
+ requireCondition(
1825
+ !seenTaskIds.has(taskId),
1826
+ "INVALID_CUT_EVENT",
1827
+ "cut_applied event repeats a reassigned task",
1828
+ );
1829
+ seenTaskIds.add(taskId);
1830
+ const task = ledger.tasks.find((item) => item.id === taskId);
1831
+ const snapshot = snapshotById.get(taskId);
1832
+ requireCondition(
1833
+ task !== undefined &&
1834
+ snapshot !== undefined &&
1835
+ isContributionKind(task.kind) &&
1836
+ isContributionKind(snapshot.kind) &&
1837
+ !["integrated", "completed", "closed"].includes(snapshot.state) &&
1838
+ currentGroups.get(taskId) === oldGroupId &&
1839
+ task.group_id === newGroupId &&
1840
+ task.assignment_history.some(
1841
+ (item) =>
1842
+ item.group_id === newGroupId &&
1843
+ item.cut_operation_id === operationId,
1844
+ ),
1845
+ "INVALID_CUT_EVENT",
1846
+ `cut_applied event has an invalid task boundary snapshot ${taskId}`,
1847
+ );
1848
+ requireCondition(
1849
+ snapshot !== undefined &&
1850
+ task.assignment_history.length > snapshot.assignment_history.length &&
1851
+ canonicalJson(
1852
+ task.assignment_history.slice(
1853
+ 0,
1854
+ snapshot.assignment_history.length,
1855
+ ),
1856
+ ) === canonicalJson(snapshot.assignment_history) &&
1857
+ task.assignment_history[snapshot.assignment_history.length]
1858
+ ?.cut_operation_id === operationId,
1859
+ "INVALID_CUT_EVENT",
1860
+ `cut_applied event does not prove reassignment boundary for task ${taskId}`,
1861
+ );
1862
+ currentGroups.set(taskId, reassignmentGroupId);
1863
+ assignments.set(
1864
+ taskId,
1865
+ new Set([...(assignments.get(taskId) ?? []), reassignmentGroupId]),
1866
+ );
1867
+ }
1868
+ const historyTaskIds = ledger.tasks
1869
+ .filter((task) =>
1870
+ task.assignment_history.some(
1871
+ (item) => item.cut_operation_id === operationId,
1872
+ ),
1873
+ )
1874
+ .map((task) => task.id);
1875
+ requireCondition(
1876
+ sameMembers(historyTaskIds, reassigned),
1877
+ "INVALID_CUT_EVENT",
1878
+ "cut_applied event does not match assignment history",
1879
+ );
1880
+ appliedOperationIds.add(operationId as string);
1881
+ createdGroupIds.add(newGroupId as string);
1882
+ dynamicGroupIds.add(reassignmentGroupId);
1883
+ }
1884
+ for (const task of ledger.tasks)
1885
+ requireCondition(
1886
+ currentGroups.get(task.id) === task.group_id,
1887
+ "INVALID_CUT_EVENT",
1888
+ `runtime task ${task.id} has an unsupported group assignment`,
1889
+ );
1890
+ return { assignments, dynamicGroupIds };
1891
+ }
1892
+
1893
+ export function normalizeLegacyLedger(value: unknown): unknown {
1894
+ if (value === null || typeof value !== "object" || Array.isArray(value))
1895
+ return value;
1896
+ const raw = value as Record<string, unknown>;
1897
+ const rawPlans = Array.isArray(raw.plans) ? raw.plans : [];
1898
+ const plans = rawPlans.map((candidate) => {
1899
+ if (
1900
+ candidate === null ||
1901
+ typeof candidate !== "object" ||
1902
+ Array.isArray(candidate)
1903
+ )
1904
+ return candidate;
1905
+ const item = normalizeRetiredPlanAlias(
1906
+ candidate as Record<string, unknown>,
1907
+ );
1908
+ if (
1909
+ item.plan_handoff !== null &&
1910
+ typeof item.plan_handoff === "object" &&
1911
+ !Array.isArray(item.plan_handoff) &&
1912
+ Object.keys(item.plan_handoff as Record<string, unknown>).length === 0
1913
+ ) {
1914
+ const { plan_handoff: _legacyHandoff, ...withoutLegacyHandoff } = item;
1915
+ return {
1916
+ ...withoutLegacyHandoff,
1917
+ lifecycle:
1918
+ item.lifecycle ??
1919
+ (item.approval_id === null ? "proposed" : "approved"),
1920
+ revision: item.revision ?? null,
1921
+ };
1922
+ }
1923
+ return {
1924
+ ...item,
1925
+ lifecycle:
1926
+ item.lifecycle ?? (item.approval_id === null ? "proposed" : "approved"),
1927
+ revision: item.revision ?? null,
1928
+ };
1929
+ });
1930
+ return {
1931
+ ...raw,
1932
+ schema_version: 2,
1933
+ source_schema_version:
1934
+ raw.schema_version === 1 ? 1 : (raw.source_schema_version ?? null),
1935
+ contract_version:
1936
+ raw.schema_version === undefined
1937
+ ? 1
1938
+ : raw.contract_version === 3
1939
+ ? 3
1940
+ : raw.contract_version === 2
1941
+ ? 2
1942
+ : 1,
1943
+ execution_plan_id: raw.execution_plan_id ?? raw.active_plan_id,
1944
+ milestones: Array.isArray(raw.milestones) ? raw.milestones : [],
1945
+ groups: Array.isArray(raw.groups)
1946
+ ? raw.groups.map((item) =>
1947
+ item && typeof item === "object"
1948
+ ? {
1949
+ lifecycle: {
1950
+ workspace_ready: "unknown",
1951
+ pr_created: "unknown",
1952
+ pr_merged: "unknown",
1953
+ closed: "unknown",
1954
+ ...((item as any).lifecycle ?? {}),
1955
+ },
1956
+ atoms: Array.isArray((item as any).atoms)
1957
+ ? (item as any).atoms
1958
+ : [],
1959
+ coordination_execution: (item as any)
1960
+ .coordination_execution ?? {
1961
+ state: "unknown",
1962
+ reason: null,
1963
+ waiting_for_task_ids: [],
1964
+ },
1965
+ delivery_unit_kind: "regular",
1966
+ owner_kind: "group",
1967
+ ...(item as any),
1968
+ }
1969
+ : item,
1970
+ )
1971
+ : raw.groups,
1972
+ tasks: Array.isArray(raw.tasks)
1973
+ ? raw.tasks.map((item) =>
1974
+ item && typeof item === "object"
1975
+ ? {
1976
+ branch: null,
1977
+ lifecycle: {
1978
+ workspace_ready: "unknown",
1979
+ pr_created: "unknown",
1980
+ pr_merged: "unknown",
1981
+ closed: "unknown",
1982
+ ...((item as any).lifecycle ?? {}),
1983
+ },
1984
+ ...(item as any),
1985
+ }
1986
+ : item,
1987
+ )
1988
+ : raw.tasks,
1989
+ notifications: Array.isArray(raw.notifications)
1990
+ ? raw.notifications.map((item) =>
1991
+ item && typeof item === "object" && !Array.isArray(item)
1992
+ ? {
1993
+ ledger_status: "committed",
1994
+ delivery_status:
1995
+ (item as any).delivery_status ??
1996
+ ((item as any).status === "acknowledged"
1997
+ ? "sent"
1998
+ : ((item as any).status ?? "pending")),
1999
+ ack_status:
2000
+ (item as any).ack_status ??
2001
+ ((item as any).status === "acknowledged"
2002
+ ? "acknowledged"
2003
+ : "unacknowledged"),
2004
+ last_attempt_id: null,
2005
+ last_reconciliation_id: null,
2006
+ last_error: null,
2007
+ ...(item as any),
2008
+ }
2009
+ : item,
2010
+ )
2011
+ : raw.notifications,
2012
+ plans: plans.map((item: any) => ({
2013
+ group_atoms: Array.isArray(item.group_atoms) ? item.group_atoms : [],
2014
+ ...item,
2015
+ })),
2016
+ };
2017
+ }
2018
+
2019
+ function validateDeliveryUnits(ledger: Ledger): void {
2020
+ const bootstrap = ledger.groups.filter(
2021
+ (item) => item.delivery_unit_kind === "bootstrap",
2022
+ );
2023
+ requireCondition(
2024
+ bootstrap.length <= 1,
2025
+ "INVALID_DELIVERY_UNIT",
2026
+ "At most one bootstrap delivery unit is allowed",
2027
+ );
2028
+ for (const item of ledger.groups) {
2029
+ if (item.delivery_unit_kind === "bootstrap") {
2030
+ requireCondition(
2031
+ item.owner_kind === "main" &&
2032
+ item.agent_thread_id === null &&
2033
+ !!ledger.control.owner_thread_id,
2034
+ "INVALID_DELIVERY_UNIT",
2035
+ "Bootstrap must be owned by the bound main conversation without a group binding",
2036
+ );
2037
+ } else {
2038
+ requireCondition(
2039
+ item.owner_kind === "group" &&
2040
+ (!item.agent_thread_id ||
2041
+ item.agent_thread_id !== ledger.control.owner_thread_id),
2042
+ "INVALID_DELIVERY_UNIT",
2043
+ "Regular delivery unit must use an independent group conversation",
2044
+ );
2045
+ }
2046
+ }
2047
+ if (!bootstrap.length) return;
2048
+ const bootstrapId = bootstrap[0]!.id;
2049
+ for (const plan of ledger.plans) {
2050
+ const nodes = new Map(plan.nodes.map((item) => [item.id, item]));
2051
+ for (const edge of plan.edges) {
2052
+ const source = nodes.get(edge.from_node_id);
2053
+ const target = nodes.get(edge.to_node_id);
2054
+ if (target?.group_id !== bootstrapId) continue;
2055
+ const pending = [source];
2056
+ const seen = new Set<string>();
2057
+ while (pending.length) {
2058
+ const node = pending.pop();
2059
+ if (!node || seen.has(node.id)) continue;
2060
+ seen.add(node.id);
2061
+ requireCondition(
2062
+ !node.group_id || node.group_id === bootstrapId,
2063
+ "INVALID_DELIVERY_UNIT",
2064
+ "Bootstrap cannot depend on another delivery unit",
2065
+ );
2066
+ for (const incoming of plan.edges.filter(
2067
+ (item) => item.to_node_id === node.id,
2068
+ ))
2069
+ pending.push(nodes.get(incoming.from_node_id));
2070
+ }
2071
+ }
2072
+ }
2073
+ }
2074
+
2075
+ export function validateLedger(value: unknown): Ledger {
2076
+ const parsed = ledgerSchema.parse(normalizeLegacyLedger(value));
2077
+ validateDeliveryUnits(parsed);
2078
+ for (const collection of [
2079
+ parsed.plans,
2080
+ parsed.groups,
2081
+ parsed.tasks,
2082
+ parsed.facts,
2083
+ parsed.operations,
2084
+ parsed.events,
2085
+ parsed.notifications,
2086
+ parsed.resources,
2087
+ parsed.follow_prs,
2088
+ ]) {
2089
+ requireCondition(
2090
+ new Set(collection.map((item) => item.id)).size === collection.length,
2091
+ "DUPLICATE_ID",
2092
+ "Ledger IDs must be unique within each collection",
2093
+ );
2094
+ }
2095
+ requireCondition(
2096
+ new Set(parsed.requests.map((item) => item.request_id)).size ===
2097
+ parsed.requests.length,
2098
+ "DUPLICATE_REQUEST",
2099
+ "Request IDs must be unique",
2100
+ );
2101
+ const factIds = new Set(parsed.facts.map((item) => item.id));
2102
+ const taskIds = new Set(parsed.tasks.map((item) => item.id));
2103
+ const groupIds = new Set(parsed.groups.map((item) => item.id));
2104
+ for (const operation of parsed.operations) {
2105
+ requireCondition(
2106
+ operation.receipt_fact_id === null ||
2107
+ factIds.has(operation.receipt_fact_id),
2108
+ "MISSING_FACT",
2109
+ "Operation receipt_fact_id must reference an existing fact",
2110
+ );
2111
+ }
2112
+ for (const fact of parsed.facts) {
2113
+ requireCondition(
2114
+ taskIds.has(fact.subject_id) || groupIds.has(fact.subject_id),
2115
+ "UNKNOWN_FACT_SUBJECT",
2116
+ "Fact subject must reference a task or group",
2117
+ );
2118
+ }
2119
+ for (const notice of parsed.notifications) {
2120
+ requireCondition(
2121
+ notice.ledger_status === "committed",
2122
+ "INVALID_NOTIFICATION_STATE",
2123
+ "Notification intent must be committed before delivery",
2124
+ );
2125
+ requireCondition(
2126
+ notice.status === "acknowledged"
2127
+ ? notice.delivery_status === "sent" &&
2128
+ notice.ack_status === "acknowledged"
2129
+ : notice.status === notice.delivery_status &&
2130
+ notice.ack_status === "unacknowledged",
2131
+ "INVALID_NOTIFICATION_STATE",
2132
+ "Notification status fields are inconsistent",
2133
+ );
2134
+ }
2135
+ requireCondition(
2136
+ parsed.plans.some((item) => item.id === parsed.active_plan_id),
2137
+ "MISSING_PLAN",
2138
+ "Active plan not found",
2139
+ );
2140
+ requireCondition(
2141
+ parsed.plans.some((item) => item.id === parsed.execution_plan_id),
2142
+ "MISSING_PLAN",
2143
+ "Execution plan not found",
2144
+ );
2145
+ const activePlan = parsed.plans.find(
2146
+ (item) => item.id === parsed.active_plan_id,
2147
+ )!;
2148
+ const executionPlan = parsed.plans.find(
2149
+ (item) => item.id === parsed.execution_plan_id,
2150
+ )!;
2151
+ requireCondition(
2152
+ activePlan.lifecycle !== "superseded" &&
2153
+ activePlan.lifecycle !== "abandoned",
2154
+ "INVALID_PLAN_LIFECYCLE",
2155
+ "Active plan cannot be superseded or abandoned",
2156
+ );
2157
+ requireCondition(
2158
+ parsed.active_plan_id === parsed.execution_plan_id ||
2159
+ activePlan.supersedes_id === parsed.execution_plan_id,
2160
+ "INVALID_PLAN_LIFECYCLE",
2161
+ "A candidate plan must supersede the current execution plan",
2162
+ );
2163
+ requireCondition(
2164
+ executionPlan.lifecycle === "approved" ||
2165
+ (executionPlan.lifecycle === "proposed" &&
2166
+ executionPlan.approval_id === null &&
2167
+ parsed.control.approval_id === null &&
2168
+ parsed.active_plan_id === parsed.execution_plan_id),
2169
+ "INVALID_PLAN_LIFECYCLE",
2170
+ "Execution plan must be approved unless the run is still awaiting its initial approval",
2171
+ );
2172
+ requireCondition(
2173
+ parsed.active_plan_id === parsed.execution_plan_id ||
2174
+ activePlan.lifecycle === "proposed",
2175
+ "INVALID_PLAN_LIFECYCLE",
2176
+ "A different active and execution plan requires a proposed active revision",
2177
+ );
2178
+ requireCondition(
2179
+ parsed.control.approval_id === executionPlan.approval_id,
2180
+ "APPROVAL_MISMATCH",
2181
+ "Control approval must match the execution plan approval",
2182
+ );
2183
+ for (const item of parsed.plans) {
2184
+ validatePlan(item);
2185
+ if (item.lifecycle === "proposed")
2186
+ requireCondition(
2187
+ item.approval_id === null,
2188
+ "INVALID_PLAN_LIFECYCLE",
2189
+ "A proposed plan cannot carry an approval",
2190
+ );
2191
+ if (item.lifecycle === "approved")
2192
+ requireCondition(
2193
+ item.approval_id !== null,
2194
+ "INVALID_PLAN_LIFECYCLE",
2195
+ "An approved plan must carry an approval",
2196
+ );
2197
+ }
2198
+ requireCondition(
2199
+ parsed.tasks.every((item) =>
2200
+ parsed.groups.some((group) => group.id === item.group_id),
2201
+ ),
2202
+ "MISSING_GROUP",
2203
+ "Task references an unknown group",
2204
+ );
2205
+ const runtimeThreadIds = [
2206
+ parsed.control.owner_thread_id,
2207
+ ...parsed.groups.map((group) => group.agent_thread_id),
2208
+ ...parsed.tasks.map((task) => task.thread_id),
2209
+ ].filter((threadId): threadId is string => threadId !== null);
2210
+ requireCondition(
2211
+ new Set(runtimeThreadIds).size === runtimeThreadIds.length,
2212
+ "THREAD_CONFLICT",
2213
+ "Runtime conversations must have unique identities",
2214
+ );
2215
+ const active = parsed.plans.find(
2216
+ (item) => item.id === parsed.active_plan_id,
2217
+ )!;
2218
+ if (active.plan_handoff) {
2219
+ const cutEvidence = collectCutAssignmentEvidence(parsed, active);
2220
+ validateDevPlanHandoff(active, parsed.groups, parsed.tasks, {
2221
+ allowDynamicAssignments: true,
2222
+ assignmentEvidence: cutEvidence.assignments,
2223
+ dynamicGroupIds: cutEvidence.dynamicGroupIds,
2224
+ });
2225
+ }
2226
+ requireCondition(
2227
+ active.nodes
2228
+ .filter((item) => item.kind === "task")
2229
+ .every((item) => parsed.tasks.some((task) => task.id === item.ref_id)),
2230
+ "UNKNOWN_TASK",
2231
+ "Active plan references an unknown task",
2232
+ );
2233
+ const planTaskIds = new Set(
2234
+ active.nodes
2235
+ .filter((item) => item.kind === "task")
2236
+ .map((item) => item.ref_id),
2237
+ );
2238
+ const planGroupIds = new Set(
2239
+ active.nodes
2240
+ .map((node) => node.group_id)
2241
+ .filter((groupId): groupId is string => groupId !== null),
2242
+ );
2243
+ for (const event of parsed.events)
2244
+ if (
2245
+ event.type === "cut_applied" &&
2246
+ typeof event.data.new_group_id === "string"
2247
+ )
2248
+ planGroupIds.add(event.data.new_group_id);
2249
+ requireCondition(
2250
+ parsed.groups.every((group) => planGroupIds.has(group.id)),
2251
+ "ORPHAN_GROUP",
2252
+ "Runtime group is not present in the active plan",
2253
+ );
2254
+ const executionPlanTaskIds = new Set(
2255
+ (
2256
+ parsed.plans.find((item) => item.id === parsed.execution_plan_id)
2257
+ ?.nodes ?? []
2258
+ )
2259
+ .filter((item) => item.kind === "task")
2260
+ .map((item) => item.ref_id),
2261
+ );
2262
+ requireCondition(
2263
+ parsed.tasks.every(
2264
+ (task) => planTaskIds.has(task.id) || executionPlanTaskIds.has(task.id),
2265
+ ),
2266
+ "UNKNOWN_PLAN_TASK",
2267
+ "Runtime task is not present in the active plan",
2268
+ );
2269
+ const groups = new Map(parsed.groups.map((item) => [item.id, item]));
2270
+ for (const node of active.nodes.filter((item) => item.kind === "task")) {
2271
+ const task = parsed.tasks.find((item) => item.id === node.ref_id);
2272
+ requireCondition(
2273
+ Boolean(node.group_id && groups.has(node.group_id)),
2274
+ "MISSING_GROUP",
2275
+ "Plan task node references an unknown group",
2276
+ );
2277
+ const reassignedByCut = Boolean(
2278
+ task &&
2279
+ task.group_id !== node.group_id &&
2280
+ task.assignment_history.some((item) => item.group_id === task.group_id) &&
2281
+ parsed.events.some(
2282
+ (event) =>
2283
+ event.type === "cut_applied" &&
2284
+ event.data.new_group_id === task.group_id &&
2285
+ Array.isArray(event.data.reassigned_task_ids) &&
2286
+ event.data.reassigned_task_ids.includes(task.id),
2287
+ ),
2288
+ );
2289
+ requireCondition(
2290
+ Boolean(task && (task.group_id === node.group_id || reassignedByCut)),
2291
+ "GROUP_MISMATCH",
2292
+ "Plan task node group must match its runtime task or a verified cut reassignment",
2293
+ );
2294
+ }
2295
+ for (const owner of parsed.groups) {
2296
+ const cut = parsed.events.find(
2297
+ (event) =>
2298
+ event.type === "cut_applied" && event.data.new_group_id === owner.id,
2299
+ );
2300
+ const snapshot = cut?.data.new_group_snapshot as
2301
+ z.infer<typeof group> | undefined;
2302
+ const configured = active.group_atoms.filter(
2303
+ (atom) => atom.group_id === owner.id,
2304
+ );
2305
+ const expected = configured.length
2306
+ ? configured.map(({ group_id, ...atom }) => atom)
2307
+ : (snapshot?.atoms.map(({ status, ...atom }) => atom) ?? []);
2308
+ requireCondition(
2309
+ canonicalJson(expected) ===
2310
+ canonicalJson(owner.atoms.map(({ status, ...atom }) => atom)),
2311
+ "GROUP_ATOM_MISMATCH",
2312
+ "Delivery-unit atoms must match their plan or verified cut configuration in serial order",
2313
+ );
2314
+ }
2315
+ for (const task of parsed.tasks) {
2316
+ const expected = active.atoms
2317
+ .filter((atom) => atom.task_id === task.id)
2318
+ .map((atom) => atom.id);
2319
+ requireCondition(
2320
+ JSON.stringify(expected) ===
2321
+ JSON.stringify(task.atoms.map((atom) => atom.id)),
2322
+ "ATOM_MISMATCH",
2323
+ "Task atoms must match the active plan in serial order",
2324
+ );
2325
+ }
2326
+ for (const target of [
2327
+ ...parsed.groups.map((item) => ({ type: "group" as const, item })),
2328
+ ...parsed.tasks
2329
+ .filter((item) => isContributionKind(item.kind))
2330
+ .map((item) => ({ type: "task" as const, item })),
2331
+ ]) {
2332
+ const item = target.item as any;
2333
+ if (item.lifecycle.workspace_ready === "passed")
2334
+ requireCondition(
2335
+ parsed.events.some(
2336
+ (event) =>
2337
+ event.type === "lifecycle_recorded" &&
2338
+ event.subject_id === item.id &&
2339
+ event.data.stage === "workspace_ready",
2340
+ ),
2341
+ "INVALID_LIFECYCLE",
2342
+ "workspace_ready must be backed by a lifecycle event",
2343
+ );
2344
+ if (item.lifecycle.pr_created === "passed") {
2345
+ const pr = target.type === "group" ? item.parent_pr : item.pr;
2346
+ const latest = parsed.facts
2347
+ .filter(
2348
+ (candidate) =>
2349
+ candidate.kind === "pr_published" &&
2350
+ candidate.subject_id === item.id,
2351
+ )
2352
+ .sort((left, right) =>
2353
+ left.observed_at.localeCompare(right.observed_at),
2354
+ )
2355
+ .at(-1);
2356
+ requireCondition(
2357
+ pr &&
2358
+ latest?.status === "passed" &&
2359
+ latest.receipt?.resource_type === "pr" &&
2360
+ latest.receipt.resource_id === pr.id &&
2361
+ latest.receipt.pr &&
2362
+ canonicalJson(latest.receipt.pr) === canonicalJson(pr),
2363
+ "INVALID_LIFECYCLE",
2364
+ "pr_created must be backed by the latest successful provider PR receipt",
2365
+ );
2366
+ }
2367
+ if (item.lifecycle.pr_merged === "passed")
2368
+ requireCondition(
2369
+ parsed.facts.some(
2370
+ (candidate) =>
2371
+ candidate.kind === "pr_merged" &&
2372
+ candidate.subject_id === item.id &&
2373
+ candidate.status === "passed" &&
2374
+ candidate.sha,
2375
+ ),
2376
+ "INVALID_LIFECYCLE",
2377
+ "pr_merged must be backed by a merge receipt",
2378
+ );
2379
+ if (item.lifecycle.closed === "passed")
2380
+ requireCondition(
2381
+ item.state === "closed",
2382
+ "INVALID_LIFECYCLE",
2383
+ "closed must match the runtime closeout state",
2384
+ );
2385
+ }
2386
+ if (parsed.events.some((event) => event.type === "cut_applied"))
2387
+ collectCutAssignmentEvidence(parsed, active);
2388
+ return parsed;
2389
+ }