@overdeck/desktop 0.45.22 → 0.45.24

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 (429) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +2 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-BH7ac_1G.js → acceptance-criteria-DDCnXF58.js} +5 -5
  4. package/server/{advancing-selfheal-cSvXNZLZ.js → advancing-selfheal-BVwW4qRn.js} +6 -6
  5. package/server/{agent-gc-Dj2gncak.js → agent-gc-CHcnvonI.js} +4 -4
  6. package/server/agent-state-Bc3tzUC8.js +3 -0
  7. package/server/{agent-state-service-DistflNn.js → agent-state-service-BsgWxZuB.js} +5 -5
  8. package/server/{agent-state-service-CsQ07Pxe.js → agent-state-service-D5UGKIJL.js} +1 -1
  9. package/server/{agents-DXdHmRTC.js → agents-EbI0zCJl.js} +4 -4
  10. package/server/agents-wi9NWzs2.js +3 -0
  11. package/server/{archive-planning-Cp_DC1j-.js → archive-planning-BZDgzoEj.js} +1 -1
  12. package/server/{archive-planning-BvDuWNMo.js → archive-planning-Du25Jtst.js} +30 -6
  13. package/server/{artifact-index-jobs-CDBFL4OU.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
  14. package/server/assemble-J2ZZ2C15.js +339 -0
  15. package/server/{backlog-auto-trigger-DmA1IbYf.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
  16. package/server/{behavior-CGj16clS.js → behavior-B3exJ42O.js} +2 -2
  17. package/server/{briefing-freshness-C12WgkaB.js → briefing-freshness-D1wzUIWv.js} +2 -2
  18. package/server/{build-info-BRpqQvNd.js → build-info-CZk_TITh.js} +1 -1
  19. package/server/{build-info-NU3KbXYw.js → build-info-Ie_D0_BT.js} +3 -3
  20. package/server/{checkpoint-manager-CTPjAmtH.js → checkpoint-manager-BI1Wxoku.js} +2 -2
  21. package/server/{checkpoint-manager-rOgT98WY.js → checkpoint-manager-DwbQoqrC.js} +1 -1
  22. package/server/checkpoint-worker.js +1 -1
  23. package/server/{checkpoints-B5jFNi2G.js → checkpoints-BJIs5QIA.js} +1 -1
  24. package/server/{checkpoints-BJum14fs.js → checkpoints-CQB1h765.js} +2 -2
  25. package/server/{claude-hooks-provision-BhwWK-TQ.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
  26. package/server/{claude-hooks-provision-D7p5WcKZ.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
  27. package/server/{claude-permissions-nSFKH78M.js → claude-permissions-DNWEVV6z.js} +2 -2
  28. package/server/{claude-settings-overlay-BI_UIke0.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
  29. package/server/{claude-settings-overlay-DHBwjS1X.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
  30. package/server/cli-B86rejVV.js +3 -0
  31. package/server/{cli-CbKNkFE5.js → cli-RoOx5DUf.js} +9 -9
  32. package/server/{cliproxy-Brf_5MuG.js → cliproxy-C8a1vtTU.js} +2 -2
  33. package/server/{cliproxy-bONZDBbC.js → cliproxy-fHfIeiGd.js} +1 -1
  34. package/server/{close-issue-CxReRxIc.js → close-issue-DoOifFIK.js} +5 -5
  35. package/server/{closed-issue-reaper-CQ3kqha7.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
  36. package/server/{closed-issue-reaper-DXP2Xyv3.js → closed-issue-reaper-CktPXo8m.js} +1 -1
  37. package/server/{codex-CbmztVcc.js → codex-BZXGhUVB.js} +27 -8
  38. package/server/codex-GcHuUF-k.js +3 -0
  39. package/server/{codex-parser-jl8AeAmB.js → codex-parser-CFZ1_1Jl.js} +2 -2
  40. package/server/{config-q4Gvd8dq.js → config-BZ0sHTju.js} +2 -2
  41. package/server/{config-DeTsoZdR.js → config-CKxYiCmX.js} +2 -2
  42. package/server/{config-BJKocXKd.js → config-DzV30TOm.js} +1 -1
  43. package/server/{config-yaml-ig8Nwtiw.js → config-yaml-DySPNmKN.js} +77 -194
  44. package/server/{conflict-gate-CFqPVxEg.js → conflict-gate-BaCVrH-N.js} +3 -3
  45. package/server/{conflict-gate-CHU9K1vU.js → conflict-gate-BhAY7TUd.js} +1 -1
  46. package/server/context-layers-BrPmE__h.js +4 -0
  47. package/server/context-layers-igZ4FI4_.js +37 -0
  48. package/server/{control-settings-D_odMIaC.js → control-settings-BQp7_4uD.js} +4 -4
  49. package/server/{conversation-compaction-B6YSRLda.js → conversation-compaction-CgrR8YYp.js} +8 -8
  50. package/server/{conversation-compaction-CN4-5YYt.js → conversation-compaction-eQB5CkOe.js} +1 -1
  51. package/server/{conversation-service-Dq33SYEj.js → conversation-service-BLd3MYsG.js} +1 -1
  52. package/server/{conversation-service-C3avRVEr.js → conversation-service-DPJ71F33.js} +329 -19
  53. package/server/{conversations-bYpM9-kZ.js → conversations-6AfUfbwc.js} +5 -5
  54. package/server/{conversations-H9if0bCQ.js → conversations-CAsJF9kh.js} +1 -1
  55. package/server/{cost-Codk1pc2.js → cost-B2ddP6wq.js} +18 -2
  56. package/server/{cost-wH46-WsJ.js → cost-R-m6Yi-W.js} +3 -3
  57. package/server/{cost-sync-D_cre6WM.js → cost-sync-BsN6ER0n.js} +3 -3
  58. package/server/{dag-CJpgf9A3.js → dag-B1ucnjDU.js} +9 -9
  59. package/server/{dangerous-git-ops-D6AF-Hg_.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
  60. package/server/dashboard-db-worker.js +7 -7
  61. package/server/{deacon-CkT_kznS.js → deacon-CU_cAYSR.js} +406 -607
  62. package/server/{deacon-B8HbQdqU.js → deacon-kiQrb4ZT.js} +3 -3
  63. package/server/{deacon-nudge-log-D6K9K-rE.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
  64. package/server/{deacon-swarm-BryRr6AO.js → deacon-swarm-BXZZ1Z2-.js} +17 -17
  65. package/server/deacon-swarm-C-GwfjJy.js +2 -0
  66. package/server/deacon.js +8 -8
  67. package/server/{deploy-patrol-1IrZxicY.js → deploy-patrol-AiFoP8dw.js} +136 -19
  68. package/server/{deploy-window-wDf4UgHt.js → deploy-window-C3F-tihF.js} +77 -10
  69. package/server/{deploy-window-7ZYHh7Zp.js → deploy-window-DkZraDyj.js} +1 -1
  70. package/server/{dev-supervisor-C7p9kEpc.js → dev-supervisor-bcOWqdQE.js} +2 -2
  71. package/server/{devcontainer-renderer-CNmQy0pL.js → devcontainer-renderer-_d6XhyND.js} +3 -3
  72. package/server/dist-Bzy0y69j.js +3 -0
  73. package/server/{dist-D-Ed5yVw.js → dist-Cb_0uvpS.js} +1 -1
  74. package/server/{docker-BCZ89M9X.js → docker-DcMTFTUC.js} +2 -2
  75. package/server/{dod-DbJLYcHv.js → dod-C6n9RV3G.js} +1 -1
  76. package/server/{ensure-devcontainer-Cs6W9Yzj.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
  77. package/server/{ensure-devcontainer-V5JWaAva.js → ensure-devcontainer-DNi-ono3.js} +4 -4
  78. package/server/{esm-shims-dTeNdq7X.js → esm-shims-OSHAYaS1.js} +1 -1
  79. package/server/{event-store-TnWdydfB.js → event-store-CQL6NeqB.js} +3 -3
  80. package/server/{event-store-CpBGsO6_.js → event-store-EV2cMiXj.js} +1 -1
  81. package/server/{events-Dsuv6qyB.js → events-BTdrdEq8.js} +1 -1
  82. package/server/{events-DSUdR-04.js → events-DTfAe4My.js} +3 -3
  83. package/server/{factory-BMrK4TrE.js → factory-CFibJuaw.js} +50 -13
  84. package/server/{feature-registry-population-B-CI9hgE.js → feature-registry-population-DKZFMbFt.js} +4 -4
  85. package/server/{feature-registry-storage-B972ph_A.js → feature-registry-storage-BdPuLcBX.js} +2 -2
  86. package/server/{features-Bc-Bmiye.js → features-ez2271oH.js} +2 -2
  87. package/server/{feedback-target-DZ-iAnAa.js → feedback-target-7mqqwrX6.js} +7 -7
  88. package/server/{feedback-target-DS6NUuSs.js → feedback-target-CoFDHiM8.js} +1 -1
  89. package/server/{feedback-writer-BXP6g75N.js → feedback-writer-CY5L1lB7.js} +6 -5
  90. package/server/{feedback-writer-Bx5z11mF.js → feedback-writer-D3a22RCd.js} +1 -1
  91. package/server/flywheel-DHrgCphM.js +1084 -0
  92. package/server/flywheel-DzGtWnJ1.js +477 -0
  93. package/server/flywheel-SVF02Jpq.js +2 -0
  94. package/server/{flywheel-merge-order-CTgHeg-W.js → flywheel-merge-order-UU0tiUld.js} +10 -9
  95. package/server/{flywheel-merge-order-CNKAY489.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
  96. package/server/{forge-B1S_KZv4.js → forge-CNFnyqps.js} +2 -2
  97. package/server/forge-DXnS_YFH.js +2 -0
  98. package/server/{from-DpwQ-sc3.js → from-kNxT0bZC.js} +1 -1
  99. package/server/{fts-db-DmAcuCkV.js → fts-db-CE46vDkZ.js} +2 -2
  100. package/server/{fts-operations-7d_RkmWp.js → fts-operations-CqY6zl-i.js} +2 -2
  101. package/server/{git-utils-Cc3FHDKd.js → git-utils-CRw2zLPC.js} +68 -3
  102. package/server/git-utils-D0_yhCgF.js +3 -0
  103. package/server/{github-app-CDPtGF7J.js → github-app-C3QrAUd0.js} +27 -8
  104. package/server/{github-app-CU14oYzP.js → github-app-ClZ2lk8D.js} +1 -1
  105. package/server/{github-client-XjTJbBm7.js → github-client-BnIsSrEN.js} +2 -2
  106. package/server/{github-client-CwBZZ3t7.js → github-client-DfQYVUaw.js} +1 -1
  107. package/server/{github-pr-lookup-CFGeVhqv.js → github-pr-lookup-D16NGsSO.js} +2 -2
  108. package/server/{harness-binary-B2CTcD84.js → harness-binary-DPUi-Pv8.js} +32 -6
  109. package/server/{harness-resolve-D5FVQTmy.js → harness-resolve-3lNZkyT4.js} +18 -9
  110. package/server/{health-events-DREeevle.js → health-events-BBcTYQKU.js} +2 -2
  111. package/server/{health-events-C1whmd58.js → health-events-BDOHby5Q.js} +1 -1
  112. package/server/{hooks-yxRsjk-z.js → hooks-CKZgXlJb.js} +2 -2
  113. package/server/{hooks-B-HItBiS.js → hooks-DPVX1rwQ.js} +1 -1
  114. package/server/{hume-Dz_OymXE.js → hume-Cz8igP9E.js} +2 -2
  115. package/server/hume-ccTf4wTX.js +3 -0
  116. package/server/{idle-stack-reaper-DrCv0OAG.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
  117. package/server/{idle-stack-reaper-Yf34xXxY.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
  118. package/server/{in-flight-guard-BoWm66Kh.js → in-flight-guard-CAAkqPLu.js} +2 -2
  119. package/server/{infra-D4iNWMA5.js → infra-BEqFxlJc.js} +14 -4
  120. package/server/{injection-D7T75Pye.js → injection-C8aiVJrF.js} +191 -183
  121. package/server/{injection-BVNa4MQW.js → injection-CPUIqNhI.js} +1 -1
  122. package/server/{inspect-agent-BXCgNeZ4.js → inspect-agent-BLuJ1AkT.js} +137 -81
  123. package/server/inspect-agent-Brtz0URj.js +2 -0
  124. package/server/{internal-token-C9DdEOKY.js → internal-token-BrcU6qfe.js} +1 -1
  125. package/server/{internal-token-CXsfxslp.js → internal-token-s0-oKybJ.js} +2 -2
  126. package/server/{io-DQR9PMgS.js → io-C9kF1wtJ.js} +160 -184
  127. package/server/{issue-closed-DtmJM0D0.js → issue-closed-CDJk4pIp.js} +7 -7
  128. package/server/{issue-lifecycle-8PSS9Anq.js → issue-lifecycle-B8sZHVHh.js} +1 -1
  129. package/server/{issue-lifecycle-CeyW_HoD.js → issue-lifecycle-ojZAzDBP.js} +22 -22
  130. package/server/{issue-service-singleton-DBZabEl7.js → issue-service-singleton-BvJ09SaR.js} +1 -1
  131. package/server/{issue-service-singleton-D_RVYBuL.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
  132. package/server/{issues-pDW9VUNz.js → issues-BMmP_77e.js} +2 -2
  133. package/server/{jsonl-parser-C3HVNR5d.js → jsonl-parser-BXSlHwEh.js} +3 -3
  134. package/server/{label-cleanup-DPwiZlWo.js → label-cleanup-B0UJwnv5.js} +3 -3
  135. package/server/{label-reconciler-Df1ZduPH.js → label-reconciler-B4iOAjlC.js} +4 -4
  136. package/server/{launcher-generator-COgR2By1.js → launcher-generator-BBWG_SiS.js} +105 -10
  137. package/server/{lifecycle-io-taIb0PoH.js → lifecycle-io-BREGpnLk.js} +37 -37
  138. package/server/lifecycle-io-DPo7x11I.js +3 -0
  139. package/server/{lifecycle-CtPDcZ9u.js → lifecycle-xmBfK2GJ.js} +6 -6
  140. package/server/lifecycle-yPd___5E.js +121 -0
  141. package/server/{linear-client-DsFkIxee.js → linear-client-BsuUvkdA.js} +2 -2
  142. package/server/{linear-client-YwZMDIwQ.js → linear-client-CTskEeT_.js} +1 -1
  143. package/server/memory-fts-worker.js +1 -1
  144. package/server/{merge-BwsyNRJV.js → merge-B1DiziGU.js} +1 -1
  145. package/server/{merge-C1t-bspg.js → merge-CefQNAnq.js} +3 -3
  146. package/server/{merge-agent-DDiIjzk-.js → merge-agent-4WOWlSYA.js} +28 -28
  147. package/server/{merge-agent-B-SnXOoc.js → merge-agent-CKkgIBPB.js} +1 -1
  148. package/server/{merge-batch-Byt-QnEl.js → merge-batch-ClFn2T-y.js} +1 -1
  149. package/server/merge-ops-CR44oU9-.js +2 -0
  150. package/server/{merge-rebase-Cm6fXaZN.js → merge-rebase-BfaTyXsw.js} +2 -2
  151. package/server/merge-set-DJ8-UErs.js +83 -0
  152. package/server/{merge-set-6LEglm6o.js → merge-set-bUqbm3yc.js} +1 -1
  153. package/server/{merge-sync-B95_4in_.js → merge-sync-BJYeOODr.js} +1 -1
  154. package/server/{merge-sync-Do8_q32h.js → merge-sync-VPV28g0g.js} +2 -2
  155. package/server/{merge-train-CKana8EH.js → merge-train-CHopycP0.js} +3 -3
  156. package/server/{merge-train-deps-BgmqwIfA.js → merge-train-deps-D1cOZzy2.js} +4 -4
  157. package/server/{merge-verification-CqnUzGEK.js → merge-verification-BkaOqPsw.js} +4 -4
  158. package/server/{multipart-parser-tdOQDJ3o.js → multipart-parser-duPAfSBw.js} +2 -2
  159. package/server/{no-resume-mode-BWOSZjWd.js → no-resume-mode-Nw29vaFb.js} +11 -8
  160. package/server/node_modules/.package-lock.json +8 -8
  161. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
  162. package/server/node_modules/undici/README.md +5 -0
  163. package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
  164. package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
  165. package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
  166. package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
  167. package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
  168. package/server/node_modules/undici/docs/docs/index.md +5 -0
  169. package/server/node_modules/undici/lib/core/request.js +1 -1
  170. package/server/node_modules/undici/lib/core/util.js +6 -1
  171. package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
  172. package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
  173. package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
  174. package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
  175. package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
  176. package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
  177. package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
  178. package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
  179. package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
  180. package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  181. package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
  182. package/server/node_modules/undici/lib/util/cache.js +49 -7
  183. package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
  184. package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
  185. package/server/node_modules/undici/package.json +2 -2
  186. package/server/node_modules/undici/types/client.d.ts +2 -2
  187. package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
  188. package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  189. package/server/{orphan-proposed-reconciler-xklgvNA7.js → orphan-proposed-reconciler-BvKkWMJQ.js} +15 -13
  190. package/server/{orphan-proposed-reconciler-DSvsJ5M7.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
  191. package/server/package-lock.json +9 -9
  192. package/server/package.json +1 -1
  193. package/server/{pan-dir-DOcf6ug3.js → pan-dir-B0c3w0Ya.js} +78 -58
  194. package/server/{paths-DooHpt9p.js → paths-D-xWGHdh.js} +2 -2
  195. package/server/{pickup-CaskQ7j6.js → pickup-DUCLWrJY.js} +17 -16
  196. package/server/{pipeline-membership-1LGRjo-k.js → pipeline-membership-mY3GprlK.js} +186 -67
  197. package/server/{pipeline-notifier-CZsrU_nj.js → pipeline-notifier-BJr8gQX6.js} +1 -1
  198. package/server/{pipeline-notifier-B6FVsYF9.js → pipeline-notifier-BXkJzDC4.js} +2 -2
  199. package/server/{project-pipelines-CtNG_rvs.js → project-pipelines-C0MWUeCU.js} +2 -2
  200. package/server/project-repos-B6GycDh9.js +94 -0
  201. package/server/project-repos-DXKQsc_m.js +3 -0
  202. package/server/projects-vjjcmiN8.js +3 -0
  203. package/server/{prompts-EvhMeeHG.js → prompts-DxzFXuLl.js} +2 -2
  204. package/server/{providers-BDDPULlp.js → providers-qQAwGQDW.js} +7 -7
  205. package/server/{providers-DNSQqy2V.js → providers-u4Ga0jOr.js} +1 -1
  206. package/server/public/assets/{chunk-BO2N2NFS-sym_ufXe.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
  207. package/server/public/assets/{diagram-OG6HWLK6-CQJPBNBu.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
  208. package/server/public/assets/{dist-DukGS2YZ.js → dist-ByIuzMQW.js} +3 -3
  209. package/server/public/assets/{dist-Bio7THQU.js → dist-D7zYSEA6.js} +1 -1
  210. package/server/public/assets/{ganttDiagram-6RSMTGT7-D4lWwte3.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
  211. package/server/public/assets/{highlighted-body-OFNGDK62-CaLboCt5.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
  212. package/server/public/assets/{index-Bwejq-5s.js → index-CWeMerGO.js} +147 -144
  213. package/server/public/assets/index-CenuJ3Cw.css +1 -0
  214. package/server/public/assets/{linear-qUWmMZ-c.js → linear-BBbArIcK.js} +1 -1
  215. package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
  216. package/server/public/assets/{pieDiagram-4H26LBE5-C4zYulEm.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
  217. package/server/public/assets/{prod-C8VtLuWC.js → prod-B8vYiu52.js} +4 -4
  218. package/server/public/assets/{quadrantDiagram-W4KKPZXB-qP04zyZC.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
  219. package/server/public/assets/{sankeyDiagram-5OEKKPKP-eMPTX_cG.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
  220. package/server/public/assets/{xychartDiagram-2RQKCTM6-Dme1PIt6.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
  221. package/server/public/index.html +2 -2
  222. package/server/{pull-requests-By_BteaL.js → pull-requests-7N8WKseP.js} +1 -1
  223. package/server/{pull-requests-8z2N1UOV.js → pull-requests-_lHueOHW.js} +13 -11
  224. package/server/{queries-ZABd5aXP.js → queries-CjNIf-Ub.js} +1200 -201
  225. package/server/{rally-i_goYmiA.js → rally-CyWT_lNO.js} +3 -3
  226. package/server/{rally-api-DqKqIMNR.js → rally-api-C8e_1JRi.js} +2 -2
  227. package/server/{rally-api-xHazRk0d.js → rally-api-ClOSd-Tt.js} +1 -1
  228. package/server/{rally-client-COYz1vYR.js → rally-client-lc-nokqr.js} +4 -4
  229. package/server/{rally-client-CGWEHaPd.js → rally-client-sgtVqzNU.js} +1 -1
  230. package/server/rally-zhhtXuDP.js +3 -0
  231. package/server/{reap-terminal-sessions-CaMkFOIH.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
  232. package/server/{reap-terminal-sessions-DG9eiMVz.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
  233. package/server/rebuild-stack-CFvcBHsS.js +4 -0
  234. package/server/{rebuild-stack-JUm0jqYP.js → rebuild-stack-lwtsW0GO.js} +26 -35
  235. package/server/{reconstruct-cache-wU79aCee.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
  236. package/server/record-CN0pj4_5.js +3 -0
  237. package/server/{record-update-D3N6WMFR.js → record-update-bLJxAXH4.js} +1 -1
  238. package/server/record-update-dE1Aw83j.js +310 -0
  239. package/server/{recovery-trip-DkzJSej9.js → recovery-trip-BvRWfUXM.js} +2 -2
  240. package/server/{release-engine-DMINVN8S.js → release-engine-Cx48W7z8.js} +5 -5
  241. package/server/{release-set-DeUSOEHy.js → release-set-CQfuN9-v.js} +3 -3
  242. package/server/{remote-b-c5bOce.js → remote-C_2hasl7.js} +3 -3
  243. package/server/{remote-Dr5kGYSZ.js → remote-ChgimyYa.js} +3 -3
  244. package/server/{remote-agents-Ct_WOyke.js → remote-agents-By1ige5O.js} +6 -6
  245. package/server/{remote-agents-D6O_zETW.js → remote-agents-CA3Ihlxj.js} +1 -1
  246. package/server/{remote-completion-Dca3hAaa.js → remote-completion-fVe9e_3u.js} +12 -12
  247. package/server/resume-BFv1PGpA.js +3 -0
  248. package/server/{review-agent-CThvgK2r.js → review-agent-CIGOQYBD.js} +29 -25
  249. package/server/{review-agent-CCum8sGe.js → review-agent-DNboMyW4.js} +1 -1
  250. package/server/{review-artifacts-CXywD0F2.js → review-artifacts-nRDPuMxd.js} +5 -5
  251. package/server/{review-context-OYfKUprb.js → review-context-2uj-YQ8J.js} +70 -26
  252. package/server/review-status-btEYlaxA.js +3 -0
  253. package/server/{review-status-enrichment-crNAtIpL.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
  254. package/server/{review-status-DFRjDFef.js → review-status-kZj_KyCk.js} +77 -28
  255. package/server/{review-status-sync-DpAMD_WO.js → review-status-sync-BTOpxtTC.js} +10 -5
  256. package/server/{review-status-sync-D60PJWNL.js → review-status-sync-DSDK3OMy.js} +1 -1
  257. package/server/{review-verdict-feedback-CpUZl5aE.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
  258. package/server/{review-verdict-feedback-JImjut0z.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
  259. package/server/{rollup-CZ02qgxk.js → rollup-BKQC7jp4.js} +1 -1
  260. package/server/{rollup-SyuF09e4.js → rollup-FGsKki9R.js} +8 -8
  261. package/server/{scanner-Br0Z5S6R.js → scanner-CnqEZeDy.js} +45 -14
  262. package/server/{sequence-io-fxU0DlwW.js → sequence-io-D909zgeH.js} +4 -4
  263. package/server/{sequencer-agent-B5YC5XVP.js → sequencer-agent-CzkcK6P5.js} +5 -5
  264. package/server/server.js +2961 -919
  265. package/server/{service-Bagb90KZ.js → service-CLeAoU6G.js} +55 -54
  266. package/server/{session-fork-BqQxd-V6.js → session-fork-CHI1XvL9.js} +2 -2
  267. package/server/{session-history-XdS0JKp3.js → session-history-BT3IvqhC.js} +4 -4
  268. package/server/settings-66A6uvIA.js +2 -0
  269. package/server/{settings-BNbocWOg.js → settings-BTMvpNFU.js} +3 -3
  270. package/server/{settings-uLc6DEYI.js → settings-C0zgxOGf.js} +2 -2
  271. package/server/{shadow-engineering-D4X_s3fA.js → shadow-engineering-BJfgm-hX.js} +2 -2
  272. package/server/{shadow-state-C_NkP-sa.js → shadow-state-7a-524T8.js} +2 -2
  273. package/server/{shadow-state-CbvsN3qG.js → shadow-state-DnDyjujH.js} +1 -1
  274. package/server/{shadow-utils-CYMRPeRT.js → shadow-utils-Db3oroFG.js} +2 -2
  275. package/server/{ship-log-__QtAFXG.js → ship-log-D9MlVzYU.js} +1 -1
  276. package/server/{smart-compaction-jdMkG1vo.js → smart-compaction-CV2ukKND.js} +1 -1
  277. package/server/{smart-compaction-CLZOWin1.js → smart-compaction-KCYScAU1.js} +7 -7
  278. package/server/{spawn-planning-session-D5OXo8pT.js → spawn-planning-session-DKpdFyOC.js} +35 -27
  279. package/server/{spawn-planning-session-8D6mE033.js → spawn-planning-session-qUC2VWu3.js} +1 -1
  280. package/server/{specialist-completion-CqmduO92.js → specialist-completion-Ky9wCDpb.js} +1 -1
  281. package/server/{specialist-context-CJ-QjFR-.js → specialist-context-Bn3dCGS2.js} +5 -5
  282. package/server/{specialist-handoff-logger-Dnjlwt7g.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
  283. package/server/{specialist-logs-CQnKzuZs.js → specialist-logs-C5p8G7tx.js} +3 -3
  284. package/server/{specialists-Bg9v4z3F.js → specialists-CC4r-c2s.js} +1015 -460
  285. package/server/{specialists-D0gGXMZx.js → specialists-CShuVGWT.js} +1 -1
  286. package/server/specialists-DM6bWjsi.js +3 -0
  287. package/server/{specialists-CwZHb5cb.js → specialists-jiuuyVkp.js} +66 -74
  288. package/server/specs-C8Wsn2XO.js +3 -0
  289. package/server/{src-BMMoA_ba.js → src-CXmtj0im.js} +6 -6
  290. package/server/{src-Bqdtd6po.js → src-CdmnTM2m.js} +5 -5
  291. package/server/{src-k039WVYY.js → src-DtcUOZCq.js} +112 -18
  292. package/server/stack-health-Bn3o8FBX.js +3 -0
  293. package/server/{stack-health-C-ifC7b0.js → stack-health-DxSdG9cW.js} +63 -9
  294. package/server/{stale-task-claims-L7pJkQFL.js → stale-task-claims-KJKxxiiQ.js} +4 -4
  295. package/server/{staleness-_Tr-GwdA.js → staleness-CT34nwr9.js} +1 -1
  296. package/server/{staleness-BID1BKdr.js → staleness-DPm7ClwA.js} +15 -3
  297. package/server/{state-home-CONQvZR0.js → state-home-Cn_Qu8IX.js} +96 -44
  298. package/server/{state-migrate-BeBW0KXA.js → state-migrate-BGg2ZaOt.js} +12 -3
  299. package/server/{stuck-remediation-CKnIryGT.js → stuck-remediation-DYuPRYYw.js} +307 -26
  300. package/server/{stuck-remediation-CsGD5Ksb.js → stuck-remediation-s9_2qfi6.js} +1 -1
  301. package/server/{substrate-bug-weights-service-CpIZILj9.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
  302. package/server/{summary-fork-bX6ax6X7.js → summary-fork-D1RAk9rJ.js} +78 -12
  303. package/server/{summary-fork-agEMsPSo.js → summary-fork-DpcxN9tf.js} +2 -2
  304. package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
  305. package/server/supervisor/pty-supervisor.js +2 -1
  306. package/server/supervisor/pty-token-x-ea28Us.js +43 -0
  307. package/server/supervisor-FTJAIsAK.js +2 -0
  308. package/server/{supervisor-Ctt4eRYz.js → supervisor-wM4ooB5O.js} +3 -3
  309. package/server/{swarm-readiness-DdmJVX7y.js → swarm-readiness-DlP_UjHq.js} +4 -4
  310. package/server/{system-prerequisites-DSXBvffY.js → system-prerequisites-DUDj1YHf.js} +56 -29
  311. package/server/{teardown-workspace-DDCf5n-a.js → teardown-workspace-DeTTImn-.js} +15 -15
  312. package/server/{test-agent-queue-BJZ9Nfcc.js → test-agent-queue-MbxX5vqq.js} +7 -7
  313. package/server/{test-verdict-Cp5tljlJ.js → test-verdict-bWYBtqBg.js} +1 -1
  314. package/server/{test-verdict-D_-sXIz_.js → test-verdict-gscuksPv.js} +1 -1
  315. package/server/{tldr-daemon-B8_oT5gx.js → tldr-daemon-BYFkts95.js} +1 -1
  316. package/server/{tldr-daemon-BQFmmFp0.js → tldr-daemon-C-69c3OI.js} +2 -2
  317. package/server/tmux-B6z7h_vZ.js +3 -0
  318. package/server/{tmux-L5LgvGLp.js → tmux-R7N7y-Mh.js} +76 -44
  319. package/server/{token-BkQLy4yS.js → token-BK6t8BIT.js} +2 -2
  320. package/server/token-util-DuPuNriz.js +3 -0
  321. package/server/{token-util-DI8sGlmF.js → token-util-DxXu-vd1.js} +1 -1
  322. package/server/{tracker-config-DdT-nUAM.js → tracker-config-G6latr8C.js} +2 -2
  323. package/server/{tracker-utils-DV3h1FYG.js → tracker-utils-B4ylXZQK.js} +1 -1
  324. package/server/{tracker-utils-CawsPSS2.js → tracker-utils-DHv5pSDT.js} +2 -2
  325. package/server/{traefik-connect-C6mJckNs.js → traefik-connect-Df2uXPsQ.js} +1 -1
  326. package/server/{tunnel-IdK1iTHx.js → tunnel-CDVKJpRv.js} +3 -3
  327. package/server/{tunnel-BIFl98rc.js → tunnel-DGdUkGoZ.js} +1 -1
  328. package/server/{types-7-GnJn0t.js → types-5M0lupud.js} +1 -1
  329. package/server/{uat-train-0Ujk8GCv.js → uat-train-B05BWkp-.js} +1 -1
  330. package/server/{uat-train-j0cPeMSj.js → uat-train-DDSrSoV1.js} +28 -28
  331. package/server/validate-IfDGkaVR.js +177 -0
  332. package/server/{validation-DcAgXTQp.js → validation-CC9OPqJZ.js} +1 -1
  333. package/server/{validation-CabEISJT.js → validation-Dw1pzDzr.js} +259 -9
  334. package/server/{verification-artifact-Ck1tefmz.js → verification-artifact-B3itKTxu.js} +1 -1
  335. package/server/{verification-artifact-BuTA1QbL.js → verification-artifact-TVFSz_q1.js} +1 -1
  336. package/server/{verification-runner-DlJezzef.js → verification-runner-BW4HOKAz.js} +1 -1
  337. package/server/{verification-runner-FiuAZ-H2.js → verification-runner-CkgX6EtI.js} +174 -124
  338. package/server/{vtt-parser-BnRsYzcz.js → vtt-parser-DYPbKcIJ.js} +1 -1
  339. package/server/{work-agent-prompt-DLthEPAq.js → work-agent-prompt-Du8Vh2aJ.js} +13 -13
  340. package/server/workflows-BQu4RFQ-.js +2 -0
  341. package/server/{workflows-BZNNYkGC.js → workflows-mbQzh6mQ.js} +39 -77
  342. package/server/{workspace-3IC-UkAi.js → workspace--8tnhDI0.js} +1 -1
  343. package/server/{workspace-D9ppycdg.js → workspace-BPUws1-_.js} +3 -3
  344. package/server/{workspace-config-Bigl_-Lk.js → workspace-config-CIVWZOQr.js} +1 -1
  345. package/server/{workspace-manager-ClkCIWTe.js → workspace-manager-CBhNdzE4.js} +76 -18
  346. package/server/workspace-manager-CWT55qeI.js +3 -0
  347. package/server/{workspace-metadata-BE0efUv_.js → workspace-metadata-BzHnwwX4.js} +1 -1
  348. package/server/{workspace-metadata-tiSRIWJP.js → workspace-metadata-_WygnyoX.js} +2 -2
  349. package/server/{workspaces-CFPcL0vl.js → workspaces-Do_9J0LQ.js} +309 -124
  350. package/sync-sources/agents/pan-inspect-agent.md +1 -1
  351. package/sync-sources/agents/pan-merge-agent.md +1 -1
  352. package/sync-sources/agents/pan-planning-agent.md +4 -4
  353. package/sync-sources/agents/pan-work-agent.md +1 -1
  354. package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
  355. package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
  356. package/sync-sources/hooks/record-cost-event.js +369 -75
  357. package/sync-sources/hooks/session-start-hook +7 -0
  358. package/sync-sources/hooks/work-agent-stop-hook +1 -1
  359. package/sync-sources/rules/per-bead-durability.md +1 -1
  360. package/sync-sources/rules/prd-authoring.md +1 -1
  361. package/sync-sources/skills/feature-work/SKILL.md +1 -1
  362. package/sync-sources/skills/okf/README.md +11 -3
  363. package/sync-sources/skills/okf/SKILL.md +12 -1
  364. package/sync-sources/skills/okf/docs/USAGE.md +15 -0
  365. package/sync-sources/skills/okf/references/overdeck.md +28 -0
  366. package/sync-sources/skills/pan/SKILL.md +2 -2
  367. package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
  368. package/sync-sources/skills/pan-approve/SKILL.md +1 -1
  369. package/sync-sources/skills/pan-close/SKILL.md +1 -1
  370. package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
  371. package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
  372. package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
  373. package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
  374. package/sync-sources/skills/pan-orders/SKILL.md +33 -0
  375. package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
  376. package/sync-sources/skills/pan-plan/SKILL.md +6 -6
  377. package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
  378. package/sync-sources/skills/pan-recap/SKILL.md +2 -2
  379. package/sync-sources/skills/pan-review/SKILL.md +1 -1
  380. package/sync-sources/skills/pan-start/SKILL.md +7 -3
  381. package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
  382. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  383. package/sync-sources/skills/pan-task/SKILL.md +2 -2
  384. package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
  385. package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
  386. package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
  387. package/sync-sources/skills/plan/SKILL.md +11 -11
  388. package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
  389. package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
  390. package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
  391. package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
  392. package/server/agent-state-Co5Sy2Fw.js +0 -3
  393. package/server/agents-DyHKlq1I.js +0 -3
  394. package/server/cli-BRORS9qY.js +0 -3
  395. package/server/codex-DNyiQDKW.js +0 -3
  396. package/server/context-layers-15gDOk20.js +0 -165
  397. package/server/context-layers-DlQKkHH2.js +0 -4
  398. package/server/deacon-swarm-CV54eNmU.js +0 -2
  399. package/server/dist-j64RzSrQ.js +0 -3
  400. package/server/flywheel-6WHU4O7A.js +0 -207
  401. package/server/flywheel-COR0mbRI.js +0 -522
  402. package/server/flywheel-Ctr5uuvo.js +0 -2
  403. package/server/forge-B0_opi-V.js +0 -2
  404. package/server/git-utils-CsKGnzFA.js +0 -3
  405. package/server/hume-BmhvfVbV.js +0 -3
  406. package/server/inspect-agent-Dq0z1k3H.js +0 -2
  407. package/server/layers-Cp1To4L8.js +0 -93
  408. package/server/lifecycle-io-DmY2qwCn.js +0 -3
  409. package/server/merge-blockers-BYjeXrVN.js +0 -41
  410. package/server/merge-ops-DwWCkSgo.js +0 -2
  411. package/server/merge-set-DiISXcC-.js +0 -139
  412. package/server/projects-BKkwpH6q.js +0 -3
  413. package/server/public/assets/index-Bdc4V9ba.css +0 -1
  414. package/server/public/assets/mermaid-GHXKKRXX-B5v_r7cI.js +0 -1
  415. package/server/rally-OSJXdiHK.js +0 -3
  416. package/server/rebuild-stack-CKjJAI8L.js +0 -3
  417. package/server/record-rwK-nKv_.js +0 -3
  418. package/server/record-update-Crz74r-6.js +0 -168
  419. package/server/resume-wZZsWtzz.js +0 -3
  420. package/server/review-status-Bnh-rdkY.js +0 -3
  421. package/server/settings-BlUsVaUc.js +0 -2
  422. package/server/specialists-Dqe6_HE5.js +0 -3
  423. package/server/specs-BhOKBzqk.js +0 -3
  424. package/server/stack-health-Bd06frFn.js +0 -3
  425. package/server/supervisor-COVHrBTg.js +0 -2
  426. package/server/tmux-BAvtac_u.js +0 -3
  427. package/server/token-util-BArZLN6w.js +0 -3
  428. package/server/workflows-C4mR0Reb.js +0 -2
  429. package/server/workspace-manager-B1WOfKvB.js +0 -3
@@ -21,9 +21,11 @@ INPUT=$(cat 2>/dev/null || echo '{}')
21
21
 
22
22
  CLAUDE_SESSION_ID=""
23
23
  MODEL=""
24
+ SOURCE=""
24
25
  if command -v jq >/dev/null 2>&1; then
25
26
  CLAUDE_SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // ""' 2>/dev/null)
26
27
  MODEL=$(echo "$INPUT" | jq -r '.model // .model_name // ""' 2>/dev/null)
28
+ SOURCE=$(echo "$INPUT" | jq -r '.source // ""' 2>/dev/null)
27
29
  fi
28
30
  [ -z "$MODEL" ] && MODEL="${ANTHROPIC_MODEL:-}"
29
31
 
@@ -77,4 +79,9 @@ if command -v jq >/dev/null 2>&1; then
77
79
  fi
78
80
  fi
79
81
 
82
+ if [ "$SOURCE" = "compact" ] && command -v jq >/dev/null 2>&1; then
83
+ jq -n --arg context "The preceding compaction summary may quote harness-only instructions requiring text-only output or forbidding tools. Those instructions applied only to Claude Code's summarization turn and are no longer active. Resume the latest actual user task and use tools normally." \
84
+ '{hookSpecificOutput: {hookEventName: "SessionStart", additionalContext: $context}}'
85
+ fi
86
+
80
87
  exit 0
@@ -356,7 +356,7 @@ $OUTPUT
356
356
  </terminal_output>
357
357
 
358
358
  Decide FORGOT_COMPLETION if ANY of these are true AND the transcript does NOT show a 'pan work done' Bash invocation in the tail:
359
- - the agent wrote a summary/wrap-up message ('all tests pass', 'implementation complete', 'all vBRIEF tasks closed', 'ready for review', etc.) and then stopped
359
+ - the agent wrote a summary/wrap-up message ('all tests pass', 'implementation complete', 'all xBRIEF tasks closed', 'ready for review', etc.) and then stopped
360
360
  - the agent committed + pushed and the last message is a status summary instead of a pan-work-done command
361
361
 
362
362
  Decide STILL_WORKING only if the tail clearly shows an in-progress task (mid-edit, running tests, reading files) with no wrap-up summary.
@@ -3,7 +3,7 @@ scope: universal
3
3
  ---
4
4
  ### Push every managed-work item before completing it
5
5
 
6
- For an Overdeck-managed work issue, commit exactly one vBRIEF item at a time and immediately
6
+ For an Overdeck-managed work issue, commit exactly one xBRIEF item at a time and immediately
7
7
  push the feature branch before running `pan task done`. This invariant applies on
8
8
  local and remote machines and overrides generic project Git profiles; an unpushed item
9
9
  can be lost before Overdeck advances durable pipeline state.
@@ -16,7 +16,7 @@ Author every plan so it can be executed without re-research or judgment calls:
16
16
  paths, and before/after code. The downstream executor is a model, not a senior
17
17
  engineer who can fill gaps from taste and tribal knowledge — so the *how* must be
18
18
  on the page. Specifying the implementation is required, not scope-creep. (`pan
19
- plan` then mechanically lowers the PRD into a vBRIEF; the richer the PRD, the
19
+ plan` then mechanically lowers the PRD into an xBRIEF; the richer the PRD, the
20
20
  less the planner has to invent.)
21
21
 
22
22
  - **Glossary first.** Define every term of art the document uses before using it.
@@ -9,7 +9,7 @@ When implementing a new feature:
9
9
 
10
10
  ## 1. Understand Requirements
11
11
  - Read the Linear/GitHub issue thoroughly
12
- - Check for an associated PRD draft at `<projectRoot>/.pan/drafts/<ISSUE-ID>.md` and the workspace vBRIEF at `.pan/spec.vbrief.json`
12
+ - Check for an associated PRD draft at `<projectRoot>/.pan/drafts/<ISSUE-ID>.md` and the workspace xBRIEF at `.pan/spec.vbrief.json`
13
13
  - Identify acceptance criteria
14
14
  - Clarify ambiguities BEFORE coding
15
15
 
@@ -15,14 +15,21 @@ Embedding commands also need Ollama or an API key for the selected provider.
15
15
 
16
16
  Overdeck users receive this skill through `pan sync`.
17
17
 
18
- Standalone Claude Code users can copy-install it:
18
+ Standalone Claude Code users install it from the mirror repo, [eltmon/okf](https://github.com/eltmon/okf) — symlink so `git pull` updates it in place:
19
19
 
20
20
  ```bash
21
+ git clone https://github.com/eltmon/okf.git ~/Projects/okf
21
22
  mkdir -p ~/.claude/skills
22
- cp -R sync-sources/skills/okf ~/.claude/skills/okf
23
+ ln -s ~/Projects/okf ~/.claude/skills/okf
23
24
  ```
24
25
 
25
- The copied skill remains portable. Its core scripts do not import Overdeck and require only git, gh, Python 3, and PyYAML for non-embedding workflows.
26
+ Or copy-install instead of symlinking:
27
+
28
+ ```bash
29
+ cp -R ~/Projects/okf ~/.claude/skills/okf
30
+ ```
31
+
32
+ The skill remains portable. Its core scripts do not import Overdeck and require only git, gh, Python 3, and PyYAML for non-embedding workflows.
26
33
 
27
34
  ## 5-Minute Quickstart
28
35
 
@@ -61,6 +68,7 @@ The copied skill remains portable. Its core scripts do not import Overdeck and r
61
68
  | Command | Summary |
62
69
  | --- | --- |
63
70
  | `/okf init` | Create or connect the knowledge bundle and pointer file. |
71
+ | `/okf open [--no-install] [--no-browser]` | Open the configured bundle in the local visual knowledge viewer. |
64
72
  | `/okf author "<topic>"` | Write or update one concept for one idea. |
65
73
  | `/okf convert <path>` | Convert existing docs into OKF without destructive edits. |
66
74
  | `/okf sync [--topic "<focus>"]` | Update concepts from code or documentation diffs. |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: okf
3
- description: Maintain a project knowledge wiki in Open Knowledge Format with /okf init, author, convert, sync, study, retro, extract, validate, lint, and embed.
3
+ description: Maintain a project knowledge wiki in Open Knowledge Format with /okf init, open, author, convert, sync, study, retro, extract, validate, lint, and embed.
4
4
  triggers:
5
5
  - /okf
6
6
  - okf
@@ -26,6 +26,7 @@ The bundle is the source of truth. Keep changes small, cited, and PR-gated. Dete
26
26
  | Command | Purpose | Primary references |
27
27
  | --- | --- | --- |
28
28
  | `/okf init` | Create or connect a project knowledge bundle. | `references/workflow.md`, `references/spec.md` |
29
+ | `/okf open [--no-install] [--no-browser]` | Open the configured bundle in the local visual knowledge viewer. | `references/overdeck.md` |
29
30
  | `/okf author "<topic>"` | Write or refresh one focused concept. | `templates/concept.md`, `references/taxonomy.md`, `references/model-bridges.md` |
30
31
  | `/okf convert <path>` | Convert existing docs into OKF concepts without deleting originals. | `references/conversion.md` |
31
32
  | `/okf sync [--topic "<focus>"]` | Update concepts from code or documentation changes. | `references/workflow.md`, `references/model-bridges.md` |
@@ -80,6 +81,16 @@ Create a knowledge bundle and pointer file.
80
81
  - Add exactly one discovery line to `CLAUDE.md` or `AGENTS.md`, preserving it without duplication on repeated init.
81
82
  - Future resolution order is host project config `knowledge_repo`, then `.okf.yml`, then a clear error telling the user to run `/okf init`.
82
83
 
84
+ ## `/okf open [--no-install] [--no-browser]`
85
+
86
+ Open the configured bundle in the local visual knowledge viewer.
87
+
88
+ - Resolve the bundle from `.okf.yml`; under Overdeck, the canonical resolver also honors the project's `knowledge_repo` setting.
89
+ - When `pan` is available, delegate to `pan knowledge open` and pass through `--no-install` and `--no-browser`.
90
+ - By default, an explicit open request progressively installs the separately licensed GPL-3.0 `@inkeep/open-knowledge` program. `--no-install` requires an existing `ok` binary instead.
91
+ - The viewer is an arm's-length subprocess served over HTTP. Overdeck launches it against a disposable snapshot, reuses healthy lock-reported processes, and never lets viewer edits touch the canonical PR-gated bundle.
92
+ - Never import, require, or bundle `@inkeep/open-knowledge` into the portable OKF scripts or Overdeck packages.
93
+
83
94
  ## `/okf author "<topic>"`
84
95
 
85
96
  Write or update one concept for one idea.
@@ -16,6 +16,21 @@ Create a knowledge bundle.
16
16
  - `--dir <path>`: use any external directory.
17
17
  - `--local <subdir>`: create an in-repo bundle.
18
18
 
19
+ ## `/okf open [--no-install] [--no-browser]`
20
+
21
+ Open the configured bundle in the local visual viewer.
22
+
23
+ ```bash
24
+ /okf open
25
+ /okf open --no-install
26
+ /okf open --no-browser
27
+ ```
28
+
29
+ - Resolves the bundle from `.okf.yml` (or Overdeck's `knowledge_repo` setting).
30
+ - Delegates to `pan knowledge open` when Overdeck is available.
31
+ - Progressively installs the separate GPL-3.0 `ok` program only after the explicit open request; `--no-install` opts out.
32
+ - `--no-browser` starts or reuses the viewer and prints its URL without launching a browser.
33
+
19
34
  ## `/okf author "<topic>"`
20
35
 
21
36
  Write or update one concept.
@@ -11,6 +11,34 @@ Overdeck is available only when:
11
11
 
12
12
  Detection is by command execution, never by Python or TypeScript imports.
13
13
 
14
+ ## OpenKnowledge Viewer Runtime
15
+
16
+ `pan knowledge open` and the dashboard Knowledge page use an assisted Node.js 24 resolution flow for the OpenKnowledge viewer. Overdeck first reuses a working `ok`, then checks `OVERDECK_OPEN_KNOWLEDGE_NODE`, then searches installed runtimes under nvm, fnm, Volta, mise, and asdf. If a download is required, the operator sees the exact setup steps and must consent before they run; shell profiles and the ambient/default Node.js version remain unchanged. A fresh nvm bootstrap suppresses profile edits and restores or removes the `default` alias to match its pre-setup state.
17
+
18
+ Set `OVERDECK_OPEN_KNOWLEDGE_NODE=/absolute/path/to/node` to pin the viewer to a specific Node.js 24+ binary. Overdeck rejects relative overrides and resolves the absolute path before writing the shim, so the override affects only the separate `ok` subprocess and cannot drift with `PATH`.
19
+
20
+ ## Optional OpenKnowledge MCP Registration
21
+
22
+ The dashboard viewer and `pan knowledge open` never register an MCP server. Their unattended initialization always uses `ok init --no-mcp --no-skills`, so opening the viewer cannot change an editor or agent configuration.
23
+
24
+ MCP registration is a separate, explicit operator action. From the resolved knowledge-bundle root, run:
25
+
26
+ ```bash
27
+ ok init --mcp --no-skills --scope user
28
+ ```
29
+
30
+ Use `--scope project` for repository-local configuration, or `--scope both` for both locations. OpenKnowledge v0.34 writes the supported native formats:
31
+
32
+ | Client | User scope | Project scope |
33
+ | --- | --- | --- |
34
+ | Claude Code | `~/.claude.json` | `.mcp.json` |
35
+ | Codex | `~/.codex/config.toml` | `.codex/config.toml` |
36
+ | Cursor | `~/.cursor/mcp.json` | `.cursor/mcp.json` |
37
+
38
+ OpenKnowledge registers only clients it detects. Start or install the intended client, then rerun the explicit command if its config root was previously absent. Review the reported paths before restarting the client; registration is opt-in and Overdeck never performs it automatically.
39
+
40
+ `/okf init` and `ok init` are different commands: `/okf init` creates or connects an OKF knowledge bundle, while the upstream `ok init` command scaffolds OpenKnowledge's local `.ok/` runtime files and optionally registers MCP clients.
41
+
14
42
  ## Retro Feedstock
15
43
 
16
44
  When Overdeck is detected, `/okf retro` may mine observations for the issue:
@@ -38,7 +38,8 @@ LIFECYCLE VERBS (top-level)
38
38
  pan wipe <id> Destructive reset-to-Todo for an issue
39
39
  pan close <id> Close-out ceremony for completed issues
40
40
  pan plan <id> Create execution plan
41
- pan plan finalize <id> Materialize plan to vBRIEF tasks
41
+ pan plan finalize <id> Finalize the xBRIEF plan
42
+ pan task <subcommand> Read and update xBRIEF item state
42
43
  pan issues List and triage work across trackers
43
44
 
44
45
  OBSERVATION
@@ -70,7 +71,6 @@ ADMIN (PLUMBING)
70
71
  pan admin specialists <cmd> Review/test/merge agents
71
72
  pan admin remote <cmd> Fly.io infra
72
73
  pan admin db <cmd> Database seeding
73
- pan admin vBRIEF tasks <cmd> vBRIEF tasks CLI management
74
74
  pan admin config <cmd> Configuration management
75
75
  pan admin hooks install Install Claude Code heartbeat hooks
76
76
  pan admin tldr <cmd> TLDR daemon management
@@ -45,5 +45,6 @@ Settings page or edit `~/.overdeck/config.yaml` directly.
45
45
  ## See Also
46
46
 
47
47
  - `pan admin migrate-config` — migrate legacy settings.json → config.yaml
48
+ - `pan admin state migrate-xbrief <project> [--dry-run]` — migrate state files to xBRIEF envelopes and extensions
48
49
  - `pan admin tracker <cmd>` — tracker-specific operations
49
50
  - `pan doctor` — verify configuration is valid
@@ -17,7 +17,7 @@ allowed-tools:
17
17
 
18
18
  `pan approve` was a legacy CLI command that bypassed critical infrastructure:
19
19
  - **Merge queue** — no serialization, could collide with concurrent merges
20
- - **Post-merge lifecycle** — no Docker cleanup, label cleanup, stash cleanup, vBRIEF tasks compaction
20
+ - **Post-merge lifecycle** — no Docker cleanup, label cleanup, stash cleanup, xBRIEF task-state compaction
21
21
  - **Idempotency guards** — no protection against the infinite loop (PAN-328)
22
22
  - **Verification gate** — no post-rebase quality checks
23
23
 
@@ -57,7 +57,7 @@ pan close PAN-1234 --force --accept-deploy
57
57
  Runs the close-out ceremony after mechanically checking review, tests, branch verification,
58
58
  forge merge, post-merge lifecycle, main verification, deployment, and teardown. Merge
59
59
  moves the issue to canonical state `verifying_on_main`; close-out is the deliberate final
60
- step that completes the vBRIEF, archives planning artifacts, applies final cleanup, closes
60
+ step that completes the xBRIEF, archives planning artifacts, applies final cleanup, closes
61
61
  the tracker issue, and clears review status.
62
62
 
63
63
  Close-out is lighter than `pan wipe`: it preserves history and follows the configured
@@ -47,7 +47,7 @@ pan doctor
47
47
  # ✓ Skills directory exists
48
48
  # ✓ tmux available
49
49
  # ✓ Docker available
50
- # ⚠ orphan-proposed-specs: proposed vBRIEF specs without work agents, grouped by project with remediation hints
50
+ # ⚠ orphan-proposed-specs: proposed xBRIEF specs without work agents, grouped by project with remediation hints
51
51
  ```
52
52
 
53
53
  ### 2. Check Configuration
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pan-flywheel
3
- description: "pan flywheel — start, pause, resume, stop, inspect, emit, and report on the singleton Fix-All Flywheel orchestrator"
3
+ description: "pan flywheel — start, pause, resume, complete, stop, inspect, emit, and report on the singleton Fix-All Flywheel orchestrator"
4
4
  triggers:
5
5
  - pan flywheel
6
6
  - flywheel orchestrator
@@ -24,6 +24,7 @@ The Flywheel is not an issue-scoped work agent. It runs as `flywheel-orchestrato
24
24
  ```bash
25
25
  pan flywheel start
26
26
  pan flywheel start --brief docs/flywheel-brief.md
27
+ pan flywheel start --orders <book-id>
27
28
  pan flywheel config --get
28
29
  pan flywheel config --get flywheel.require_uat_before_merge
29
30
  pan flywheel config --set flywheel.auto_pickup_backlog=true
@@ -32,6 +33,8 @@ pan flywheel status
32
33
  pan flywheel status --json
33
34
  pan flywheel pause
34
35
  pan flywheel resume
36
+ pan flywheel complete
37
+ pan flywheel complete --force
35
38
  pan flywheel stop
36
39
  pan flywheel abort
37
40
  pan flywheel emit-status --file latest.json
@@ -45,12 +48,15 @@ pan flywheel report
45
48
  ```bash
46
49
  pan flywheel start
47
50
  pan flywheel start --brief docs/flywheel-brief.md
51
+ pan flywheel start --orders <book-id>
48
52
  ```
49
53
 
50
54
  Starts `flywheel-orchestrator` and opens a new run under `~/.overdeck/flywheel/runs/<runId>/`.
51
55
 
52
56
  Use the default brief unless the user gives a specific markdown brief. The default is `docs/flywheel-brief.md`. The command validates that the brief path stays inside the project root.
53
57
 
58
+ `--orders <book-id>` validates a ready order book, stamps the book binding into the run launch metadata, and marks the book running only after the Flywheel start gate succeeds. Validation or gate failures leave the book ready.
59
+
54
60
  ### Config
55
61
 
56
62
  ```bash
@@ -84,6 +90,17 @@ pan flywheel resume
84
90
 
85
91
  If the Flywheel is already paused or already running, these commands report the current gate state and exit successfully.
86
92
 
93
+ ### Complete
94
+
95
+ ```bash
96
+ pan flywheel complete
97
+ pan flywheel complete --force
98
+ ```
99
+
100
+ Completes an orders-bound run after every book item is closed or parked. The command refuses a non-drained book and names each remaining issue unless `--force` is passed. It writes `report.md`, adds `## Retrospective` from the run's `retro.md` when present or the exact no-findings line otherwise, commits any `docs/FLYWHEEL-STATE.md` change, clears the active-run gate, and marks the book complete.
101
+
102
+ Continuation is mechanical: the next ready book in queue order starts in-process; when no book is ready and `flywheel.auto_pickup_backlog=true`, a bookless backlog run starts; otherwise the command stays stopped and emits `needs-you: pipeline idle — no order book queued and auto-pickup is off`.
103
+
87
104
  ### Stop
88
105
 
89
106
  ```bash
@@ -9,6 +9,7 @@ triggers:
9
9
  - knowledge sync
10
10
  - knowledge study
11
11
  - knowledge retro
12
+ - knowledge open
12
13
  allowed-tools:
13
14
  - Bash
14
15
  - Read
@@ -30,6 +31,8 @@ pan knowledge PAN-123 --focus "auth flow" # Study a topic, then sync
30
31
  pan knowledge PAN-123 --retro # Capture retro knowledge, then sync
31
32
  pan knowledge PAN-123 --model claude-sonnet-5 # Override the knowledge role model
32
33
  pan knowledge PAN-123 --effort high # Raise reasoning effort for the agent
34
+ pan knowledge open # Open this project's OKF bundle in the viewer
35
+ pan knowledge open --no-install --no-browser # Never install or launch a browser
33
36
  ```
34
37
 
35
38
  ## What It Does
@@ -51,6 +54,13 @@ The command first tries to ensure `mnemos` is available on `PATH` (installing it
51
54
  on demand if necessary) and ingest the resolved bundle. If mnemos is unavailable,
52
55
  it resolves the installed `okf` skill and falls back to its bundled `scripts/` directory.
53
56
 
57
+ `pan knowledge open` resolves the current project's bundle through
58
+ `projects.yaml` or `.okf.yml`, progressively installs the separately licensed
59
+ `@inkeep/open-knowledge` program when needed, starts or reuses a verified viewer
60
+ against a disposable snapshot, and opens the URL. Viewer edits never touch the
61
+ canonical PR-gated bundle. Use `--no-install` to require a preinstalled `ok` binary and
62
+ `--no-browser` to print the URL without launching a browser.
63
+
54
64
  ## When to Use
55
65
 
56
66
  - After merging a feature to capture knowledge that would have helped the work
@@ -3,7 +3,7 @@ name: pan-new-project
3
3
  description: >
4
4
  Complete setup for registering a new project with Overdeck. Handles
5
5
  project registration, issue prefix, workspace config, trust setup,
6
- vBRIEF tasks init, tracker config, and validates against working projects.
6
+ xBRIEF task support init, tracker config, and validates against working projects.
7
7
  triggers:
8
8
  - new project
9
9
  - add new project
@@ -31,7 +31,7 @@ license: "MIT"
31
31
  Sets up a new project for Overdeck management. This is the ONLY correct
32
32
  way to add a new project. Do NOT just run `pan project add` alone — it
33
33
  creates a skeleton entry that breaks planning agents, workspace creation,
34
- issue routing, and vBRIEF tasks.
34
+ issue routing, and xBRIEF task support.
35
35
 
36
36
  ---
37
37
 
@@ -185,16 +185,14 @@ extra config needed beyond `issue_prefix` in projects.yaml.
185
185
 
186
186
  For **GitLab** projects, TBD — not yet supported in dashboard polling.
187
187
 
188
- ### Step 5: Initialize vBRIEF tasks
188
+ ### Step 5: Verify xBRIEF Task Support
189
+
190
+ No per-project task database initialization is required. xBRIEF plan items become the executable checklist after planning, and `pan task` reads and updates their state through the canonical state door.
189
191
 
190
192
  ```bash
191
- cd <project-path>
192
- git config vBRIEF tasks.role agent
193
+ pan task --help >/dev/null && echo "PASS: pan task available"
193
194
  ```
194
195
 
195
- New worktrees inherit this automatically since Overdeck now sets it during
196
- workspace creation (`workspace-manager.ts` and `worktree.ts`).
197
-
198
196
  ### Step 6: Create workspaces/ Directory
199
197
 
200
198
  ```bash
@@ -250,8 +248,8 @@ console.log(d.projects?.['<path>']?.hasTrustDialogAccepted
250
248
  grep 'GITHUB_REPOS' ~/.overdeck.env | grep -q '<PREFIX>' && \
251
249
  echo "PASS: in GITHUB_REPOS" || echo "FAIL: not in GITHUB_REPOS"
252
250
 
253
- # 5. vBRIEF tasks configured
254
- cd <path> && git config vBRIEF tasks.role && echo "PASS" || echo "FAIL: vBRIEF tasks.role not set"
251
+ # 5. xBRIEF task command available
252
+ pan task --help >/dev/null && echo "PASS" || echo "FAIL: pan task unavailable"
255
253
 
256
254
  # 6. workspaces/ exists
257
255
  test -d <path>/workspaces && echo "PASS" || echo "FAIL: no workspaces/"
@@ -278,7 +276,7 @@ Tracker: GitHub (<owner/repo>)
278
276
  Workspace type: <type>
279
277
  Tests: <command>
280
278
  Trusted: Yes
281
- vBRIEF tasks: Configured
279
+ xBRIEF task support: Available through pan task
282
280
  Dashboard: Issues visible
283
281
 
284
282
  Validation: 8/8 checks passed
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: pan-orders
3
+ description: "pan orders — create, inspect, edit, and start Flywheel order books"
4
+ triggers:
5
+ - pan orders
6
+ - order book
7
+ - special orders
8
+ allowed-tools:
9
+ - Bash
10
+ - Read
11
+ ---
12
+
13
+ # pan orders
14
+
15
+ Use `pan orders` to manage the operator-owned order book that scopes a Flywheel campaign.
16
+
17
+ ```bash
18
+ pan orders create "Campaign name"
19
+ pan orders list
20
+ pan orders show <id>
21
+ pan orders add <id> <issue...>
22
+ pan orders add <id> <issue...> --lane B --after <issue> --reverify
23
+ pan orders remove <id> <issue>
24
+ pan orders move <id> <issue> --lane A --order 2
25
+ pan orders start <id>
26
+ ```
27
+
28
+ - `create` makes a draft book with a date-and-name id.
29
+ - `add` defaults to Lane A. `--after` must name an item already in the target lane. `--reverify` requires PRD re-verification before pickup.
30
+ - `move` accepts `--lane <A|B>`, `--order <n>`, or both.
31
+ - `start` validates and starts the same orders-bound path as Flywheel start; validation blocks leave the book unchanged.
32
+
33
+ Order-book reads and mutations go through the canonical resolver and writer. Do not edit `orders/*.json` directly.
@@ -27,7 +27,7 @@ Supervise an agent working on an issue through the **entire lifecycle**:
27
27
  `spawn/resume → work → completion → review → feedback loop → test → merge-ready`
28
28
 
29
29
  This is NOT passive monitoring. You are actively:
30
- - **Watching for bugs at every stage** — dashboard rendering, agent spawning, workspace creation, vBRIEF tasks lifecycle, specialist handoffs, status transitions, terminal output, API responses
30
+ - **Watching for bugs at every stage** — dashboard rendering, agent spawning, workspace creation, xBRIEF tasks lifecycle, specialist handoffs, status transitions, terminal output, API responses
31
31
  - **Documenting everything** — no bug is too small. If something flickers, logs a warning, shows stale data, or doesn't match expected state, that's a finding
32
32
  - **Fixing infrastructure bugs** when they block progress, then continuing the test
33
33
  - **Filing or updating GitHub issues** (PAN-XXX) for every bug found
@@ -92,12 +92,12 @@ echo "Completed: ${COMPLETED:-NO}"
92
92
  REVIEW_STATUS=$(curl -s http://localhost:3011/api/review/$ISSUE_ID/status 2>/dev/null)
93
93
  echo "Review status: $REVIEW_STATUS"
94
94
 
95
- # 6b. Branch-portable vBRIEF pipeline mirror (corroborating, not authoritative)
95
+ # 6b. Branch-portable xBRIEF pipeline mirror (corroborating, not authoritative)
96
96
  PIPELINE_MIRROR=""
97
97
  if [ -n "$WS_PATH" ] && [ -f "$WS_PATH/.pan/spec.vbrief.json" ]; then
98
98
  PIPELINE_MIRROR=$(jq -c '.plan.metadata.pipeline // empty' "$WS_PATH/.pan/spec.vbrief.json" 2>/dev/null)
99
99
  fi
100
- echo "vBRIEF pipeline mirror: ${PIPELINE_MIRROR:-NONE}"
100
+ echo "xBRIEF pipeline mirror: ${PIPELINE_MIRROR:-NONE}"
101
101
 
102
102
  # 7. Specialist activity?
103
103
  SPECIALISTS=$(curl -s http://localhost:3011/api/specialists 2>/dev/null)
@@ -106,7 +106,7 @@ echo "Specialists: $SPECIALISTS"
106
106
 
107
107
  ### Phase Decision Matrix
108
108
 
109
- Based on the checks above, determine the current phase. Treat `REVIEW_STATUS` and other live SQLite-backed API status as authoritative; use the branch-portable vBRIEF `plan.metadata.pipeline` mirror as a corroborating signal when API status is missing, stale, or ambiguous. If the mirror disagrees with the API, log a bug and prefer the API.
109
+ Based on the checks above, determine the current phase. Treat `REVIEW_STATUS` and other live SQLite-backed API status as authoritative; use the branch-portable xBRIEF `plan.metadata.pipeline` mirror as a corroborating signal when API status is missing, stale, or ambiguous. If the mirror disagrees with the API, log a bug and prefer the API.
110
110
 
111
111
  | Condition | Current Phase | Jump To |
112
112
  |-----------|--------------|---------|
@@ -344,7 +344,7 @@ When you find a bug in the Overdeck infrastructure:
344
344
  Be thorough. All of these are findings worth logging:
345
345
  - Dashboard shows wrong status, stale data, or flickers
346
346
  - Agent state file says one thing, dashboard shows another
347
- - vBRIEF tasks not created, duplicated, or disappearing
347
+ - xBRIEF tasks not created, duplicated, or disappearing
348
348
  - Specialist doesn't wake up or takes too long
349
349
  - Terminal output garbled or missing
350
350
  - API returns unexpected response
@@ -18,7 +18,7 @@ allowed-tools:
18
18
 
19
19
  # Overdeck Planning Lifecycle
20
20
 
21
- `pan plan <id>` is the plan-ONLY verb: it starts a planning session for an issue and produces a PRD and vBRIEF, but it does not start the work agent. Use `pan start <id>` when you want planning and work in one command.
21
+ `pan plan <id>` is the plan-ONLY verb: it starts a planning session for an issue and produces a PRD and xBRIEF, but it does not start the work agent. Use `pan start <id>` when you want planning and work in one command.
22
22
 
23
23
  Use `--auto` when the user wants the planning agent to run non-interactively and infer defensible defaults. Use `--probe` when the plan needs an adversarial pre-finalize self-pass; `--effort high` enables the same probe instructions automatically.
24
24
 
@@ -85,13 +85,13 @@ What it does:
85
85
  2. Validates the tasks already stored in `plan.items[]`, including their declared dependencies.
86
86
  3. Flips the spec's `plan.status` from `draft` to `proposed`.
87
87
  4. Calls the dashboard's complete-planning endpoint to promote the canonical spec into `<projectRoot>/.pan/specs/`, commit it on main, push, transition the tracker state to Planned, and terminate the planning session — same flow as `pan plan done` and the dashboard Done button.
88
- 5. Returns a summary of finalized vBRIEF tasks and promotion status, or JSON with `--json`.
88
+ 5. Returns a summary of finalized xBRIEF tasks and promotion status, or JSON with `--json`.
89
89
 
90
- Use `-w <path>` to point at another workspace. Use `--no-promote` to leave the spec at `status=proposed` without promoting (rare; for humans who want to review the plan in the dashboard before clicking Done). Finalize runs vBRIEF quality lint by default; use `--no-quality-lint` only as a loud one-run emergency bypass when the plan must be promoted despite known quality issues.
90
+ Use `-w <path>` to point at another workspace. Use `--no-promote` to leave the spec at `status=proposed` without promoting (rare; for humans who want to review the plan in the dashboard before clicking Done). Finalize runs xBRIEF quality lint by default; use `--no-quality-lint` only as a loud one-run emergency bypass when the plan must be promoted despite known quality issues.
91
91
 
92
92
  ### PRD-first gate
93
93
 
94
- Finalize and complete-planning refuse to promote a plan unless a **PRD draft** of at least 20 lines exists for the issue. `roles/plan.md` has always required the PRD as the first artifact; this gate makes it mechanical. The gate searches, in order, for `<ISSUE-ID>.md` (uppercase then lowercase) under `<projectRoot>/.pan/drafts/` then `<workspace>/.pan/drafts/`; the first existing file with ≥20 lines satisfies it. A found-but-thinner draft fails with its line count; a fully missing draft fails naming the canonical path to write. `pan start <id> --auto` is structurally exempt (it synthesizes a minimal vBRIEF and never POSTs complete-planning, so the gate cannot block it). Use `--no-prd` (on `finalize` or `done`) only for a genuinely trivial issue that went through interactive planning anyway — it prints a yellow `⚠ PRD gate SKIPPED` warning and tells the endpoint to skip the check too.
94
+ Finalize and complete-planning refuse to promote a plan unless a **PRD draft** of at least 20 lines exists for the issue. `roles/plan.md` has always required the PRD as the first artifact; this gate makes it mechanical. The gate searches, in order, for `<ISSUE-ID>.md` (uppercase then lowercase) under `<projectRoot>/.pan/drafts/` then `<workspace>/.pan/drafts/`; the first existing file with ≥20 lines satisfies it. A found-but-thinner draft fails with its line count; a fully missing draft fails naming the canonical path to write. `pan start <id> --auto` is structurally exempt (it synthesizes a minimal xBRIEF and never POSTs complete-planning, so the gate cannot block it). Use `--no-prd` (on `finalize` or `done`) only for a genuinely trivial issue that went through interactive planning anyway — it prints a yellow `⚠ PRD gate SKIPPED` warning and tells the endpoint to skip the check too.
95
95
 
96
96
  ## Completing planning (`pan plan done`)
97
97
 
@@ -101,7 +101,7 @@ Finalize and complete-planning refuse to promote a plan unless a **PRD draft** o
101
101
  pan plan done PAN-1071
102
102
  ```
103
103
 
104
- This promotes the workspace vBRIEF to `<projectRoot>/.pan/specs/`, syncs vBRIEF tasks, and transitions the tracker state to Planned. It is subject to the same PRD-first gate as `finalize`; pass `--no-prd` only for a genuinely trivial issue.
104
+ This promotes the workspace xBRIEF to `<projectRoot>/.pan/specs/`, syncs xBRIEF tasks, and transitions the tracker state to Planned. It is subject to the same PRD-first gate as `finalize`; pass `--no-prd` only for a genuinely trivial issue.
105
105
 
106
106
  ## Related commands
107
107
 
@@ -112,5 +112,5 @@ This promotes the workspace vBRIEF to `<projectRoot>/.pan/specs/`, syncs vBRIEF
112
112
  ## See also
113
113
 
114
114
  - `roles/plan.md` — planning role prompt.
115
- - `docs/VBRIEF.md` — vBRIEF schema, artifact locations, lifecycle states.
115
+ - `docs/XBRIEF.md` — xBRIEF schema, artifact locations, lifecycle states.
116
116
  - `docs/SKILLS-CONVENTION.md` — skill/CLI naming convention.
@@ -374,7 +374,7 @@ After completing this quick start, you have:
374
374
 
375
375
  ### Productivity Tips
376
376
  - Use dashboard to monitor multiple agents
377
- - Set up vBRIEF tasks for task tracking
377
+ - Use xBRIEF plan items through `pan task` for task tracking
378
378
  - Configure git hooks for automated workflows
379
379
  - Create custom skills for your team's processes
380
380
 
@@ -130,14 +130,14 @@ gh issue list --state closed --search "closed:>=$SINCE_DATE" --limit 50 \
130
130
  ```
131
131
 
132
132
  Also scan real commits on `main` (drop the bookkeeping noise — `chore(records)`,
133
- `chore(state)`, `chore(vBRIEF tasks)` are per-issue state syncs, not work):
133
+ `chore(state)` and `chore(records)` are per-issue state syncs, not work):
134
134
 
135
135
  ```bash
136
136
  echo "=== substantive commits on origin/main ==="
137
137
  git fetch -q origin main 2>/dev/null
138
138
  git log origin/main --since="$HOURS hours ago" --no-merges \
139
139
  --pretty='%h %ad %s' --date=format:'%m-%d %H:%M' \
140
- | grep -vE 'chore\((records|state|vBRIEF tasks)\)' | head -40
140
+ | grep -vE 'chore\((records|state)\)' | head -40
141
141
  ```
142
142
 
143
143
  ### 2. What's in flight — active agents and in-review work
@@ -90,7 +90,7 @@ all reviewers + the test specialist sign off; humans only click the button.
90
90
 
91
91
  ## See also
92
92
 
93
- - `pan show <id>` — inspect work agent state, vBRIEF status, recent activity
93
+ - `pan show <id>` — inspect work agent state, xBRIEF status, recent activity
94
94
  - `pan done <id>` — signal initial work completion (from the worker side)
95
95
  - `pan code-review` skill — orchestrated parallel code review with synthesis
96
96
  - `roles/review.md` — the review role's frontmatter and prompt
@@ -31,6 +31,7 @@ pan start PAN-123 --fresh # Drop the saved session and start a new one (e.g. sw
31
31
  pan start PAN-123 --harness codex # Explicitly use the Codex harness
32
32
  pan start PAN-123 --model gpt-5.6-sol --swarm off --review-mode full
33
33
  pan start PAN-123 --review-model gpt-5.6-sol # Pin the convoy review model
34
+ pan start PAN-123 --plan-model k3 --model k3 # Auto-plan AND work on Kimi k3
34
35
  pan start PAN-123 --remote --tier durable # Remote Fly.io workspace with persistent volume
35
36
  pan start PAN-123 --remote --tier ephemeral # Remote Fly.io workspace that winds down on stale heartbeat
36
37
  ```
@@ -40,10 +41,10 @@ pan start PAN-123 --remote --tier ephemeral # Remote Fly.io workspace that wind
40
41
  `pan start <id>` is the single paved-road entry point: it takes an issue from whatever
41
42
  state it is in to running work.
42
43
 
43
- - **No plan exists** — `pan start` auto-plans (non-interactive), materializes vBRIEF tasks, and
44
+ - **No plan exists** — `pan start` auto-plans (non-interactive), materializes xBRIEF tasks, and
44
45
  starts the work agent when planning finalizes.
45
46
  - **Plan exists** — `pan start` creates the workspace if needed and spawns the work agent
46
- from the existing vBRIEF and vBRIEF tasks.
47
+ from the existing xBRIEF and xBRIEF tasks.
47
48
  - **Already running** — `pan start` exits 0 with a no-op message naming `pan tell <id>` for
48
49
  messaging and the tmux attach command.
49
50
 
@@ -52,7 +53,7 @@ Planning depth is controlled by `--plan`:
52
53
  ```bash
53
54
  pan start PAN-1071 --plan interactive # Q&A planning first, then work
54
55
  pan start PAN-1071 --plan auto # non-interactive planning, then work (default)
55
- pan start PAN-1071 --plan skip # synthesize a minimal vBRIEF and vBRIEF tasks, then work
56
+ pan start PAN-1071 --plan skip # synthesize a minimal xBRIEF and xBRIEF tasks, then work
56
57
  ```
57
58
 
58
59
  The default planning mode comes from `planning.default_mode` in `~/.overdeck/config.yaml`;
@@ -63,6 +64,9 @@ Start-time policy flags are persisted on the issue before planning or work begin
63
64
  sets the durable work-model override used by later respawns, `--swarm` accepts `off`, `auto`,
64
65
  or `always`, `--review-mode` accepts `quick`, `full`, or `none`, and `--review-model` pins the
65
66
  model used by the review convoy. Omitted flags leave existing and inherited policy untouched.
67
+ When this start also kicks off planning (no plan exists yet), `--plan-model <model>` overrides
68
+ the planning agent's model for that session only — it is a one-shot override, not persisted
69
+ policy, and it never changes the work agent's model (`--model`).
66
70
 
67
71
  If an agent is paused, `pan start <id>` refuses to spawn until you run `pan unpause <id>`.
68
72
  Use `--force` only when you intentionally want to clear that pause gate and start anyway.
@@ -5,7 +5,7 @@ description: Start and recover Overdeck swarm slots for planned issues with `pan
5
5
 
6
6
  # Pan Swarm
7
7
 
8
- Use `pan swarm` when an issue has a finalized vBRIEF plan and the operator wants Deacon-managed parallel slot execution.
8
+ Use `pan swarm` when an issue has a finalized xBRIEF plan and the operator wants Deacon-managed parallel slot execution.
9
9
 
10
10
  ## Start a Swarm
11
11
 
@@ -286,7 +286,7 @@ These names are reserved by Overdeck. Don't use them for custom skills:
286
286
 
287
287
  **Pan operations:** `pan-down`, `pan-help`, `pan-install`, `pan-issue`, `pan-plan`, `pan-quickstart`, `pan-setup`, `pan-status`, `pan-up`, `pan-config`, `pan-tracker`, `pan-projects`, `pan-sync`, `pan-docker`, `pan-network`, `pan-approve`, `pan-tell`, `pan-kill`, `pan-doctor`, `pan-diagnose`, `pan-logs`, `pan-rescue`
288
288
 
289
- **Workflow skills:** `vBRIEF tasks`, `bug-fix`, `code-review`, `code-review-performance`, `code-review-security`, `dependency-update`, `feature-work`, `incident-response`, `onboard-codebase`, `refactor`, `release`, `session-health`, `skill-creator`, `web-design-guidelines`, `work-complete`
289
+ **Workflow skills:** `pan-task`, `bug-fix`, `code-review`, `code-review-performance`, `code-review-security`, `dependency-update`, `feature-work`, `incident-response`, `onboard-codebase`, `refactor`, `release`, `session-health`, `skill-creator`, `web-design-guidelines`, `work-complete`
290
290
 
291
291
  ## Related Skills
292
292
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pan-task
3
- description: "pan task <verb> <issue> — claim and complete vBRIEF checklist items"
3
+ description: "pan task <verb> <issue> — claim and complete xBRIEF checklist items"
4
4
  triggers:
5
5
  - pan task
6
6
  - claim task
@@ -11,7 +11,7 @@ allowed-tools:
11
11
 
12
12
  # pan task
13
13
 
14
- Run the requested task command now. Task state belongs to one issue's vBRIEF checklist.
14
+ Run the requested task command now. Task state belongs to one issue's xBRIEF checklist.
15
15
 
16
16
  ```bash
17
17
  pan task next PAN-123