@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.
- package/drizzle/overdeck/0000_overdeck_init.sql +2 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-BH7ac_1G.js → acceptance-criteria-DDCnXF58.js} +5 -5
- package/server/{advancing-selfheal-cSvXNZLZ.js → advancing-selfheal-BVwW4qRn.js} +6 -6
- package/server/{agent-gc-Dj2gncak.js → agent-gc-CHcnvonI.js} +4 -4
- package/server/agent-state-Bc3tzUC8.js +3 -0
- package/server/{agent-state-service-DistflNn.js → agent-state-service-BsgWxZuB.js} +5 -5
- package/server/{agent-state-service-CsQ07Pxe.js → agent-state-service-D5UGKIJL.js} +1 -1
- package/server/{agents-DXdHmRTC.js → agents-EbI0zCJl.js} +4 -4
- package/server/agents-wi9NWzs2.js +3 -0
- package/server/{archive-planning-Cp_DC1j-.js → archive-planning-BZDgzoEj.js} +1 -1
- package/server/{archive-planning-BvDuWNMo.js → archive-planning-Du25Jtst.js} +30 -6
- package/server/{artifact-index-jobs-CDBFL4OU.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
- package/server/assemble-J2ZZ2C15.js +339 -0
- package/server/{backlog-auto-trigger-DmA1IbYf.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
- package/server/{behavior-CGj16clS.js → behavior-B3exJ42O.js} +2 -2
- package/server/{briefing-freshness-C12WgkaB.js → briefing-freshness-D1wzUIWv.js} +2 -2
- package/server/{build-info-BRpqQvNd.js → build-info-CZk_TITh.js} +1 -1
- package/server/{build-info-NU3KbXYw.js → build-info-Ie_D0_BT.js} +3 -3
- package/server/{checkpoint-manager-CTPjAmtH.js → checkpoint-manager-BI1Wxoku.js} +2 -2
- package/server/{checkpoint-manager-rOgT98WY.js → checkpoint-manager-DwbQoqrC.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-B5jFNi2G.js → checkpoints-BJIs5QIA.js} +1 -1
- package/server/{checkpoints-BJum14fs.js → checkpoints-CQB1h765.js} +2 -2
- package/server/{claude-hooks-provision-BhwWK-TQ.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
- package/server/{claude-hooks-provision-D7p5WcKZ.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
- package/server/{claude-permissions-nSFKH78M.js → claude-permissions-DNWEVV6z.js} +2 -2
- package/server/{claude-settings-overlay-BI_UIke0.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
- package/server/{claude-settings-overlay-DHBwjS1X.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
- package/server/cli-B86rejVV.js +3 -0
- package/server/{cli-CbKNkFE5.js → cli-RoOx5DUf.js} +9 -9
- package/server/{cliproxy-Brf_5MuG.js → cliproxy-C8a1vtTU.js} +2 -2
- package/server/{cliproxy-bONZDBbC.js → cliproxy-fHfIeiGd.js} +1 -1
- package/server/{close-issue-CxReRxIc.js → close-issue-DoOifFIK.js} +5 -5
- package/server/{closed-issue-reaper-CQ3kqha7.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
- package/server/{closed-issue-reaper-DXP2Xyv3.js → closed-issue-reaper-CktPXo8m.js} +1 -1
- package/server/{codex-CbmztVcc.js → codex-BZXGhUVB.js} +27 -8
- package/server/codex-GcHuUF-k.js +3 -0
- package/server/{codex-parser-jl8AeAmB.js → codex-parser-CFZ1_1Jl.js} +2 -2
- package/server/{config-q4Gvd8dq.js → config-BZ0sHTju.js} +2 -2
- package/server/{config-DeTsoZdR.js → config-CKxYiCmX.js} +2 -2
- package/server/{config-BJKocXKd.js → config-DzV30TOm.js} +1 -1
- package/server/{config-yaml-ig8Nwtiw.js → config-yaml-DySPNmKN.js} +77 -194
- package/server/{conflict-gate-CFqPVxEg.js → conflict-gate-BaCVrH-N.js} +3 -3
- package/server/{conflict-gate-CHU9K1vU.js → conflict-gate-BhAY7TUd.js} +1 -1
- package/server/context-layers-BrPmE__h.js +4 -0
- package/server/context-layers-igZ4FI4_.js +37 -0
- package/server/{control-settings-D_odMIaC.js → control-settings-BQp7_4uD.js} +4 -4
- package/server/{conversation-compaction-B6YSRLda.js → conversation-compaction-CgrR8YYp.js} +8 -8
- package/server/{conversation-compaction-CN4-5YYt.js → conversation-compaction-eQB5CkOe.js} +1 -1
- package/server/{conversation-service-Dq33SYEj.js → conversation-service-BLd3MYsG.js} +1 -1
- package/server/{conversation-service-C3avRVEr.js → conversation-service-DPJ71F33.js} +329 -19
- package/server/{conversations-bYpM9-kZ.js → conversations-6AfUfbwc.js} +5 -5
- package/server/{conversations-H9if0bCQ.js → conversations-CAsJF9kh.js} +1 -1
- package/server/{cost-Codk1pc2.js → cost-B2ddP6wq.js} +18 -2
- package/server/{cost-wH46-WsJ.js → cost-R-m6Yi-W.js} +3 -3
- package/server/{cost-sync-D_cre6WM.js → cost-sync-BsN6ER0n.js} +3 -3
- package/server/{dag-CJpgf9A3.js → dag-B1ucnjDU.js} +9 -9
- package/server/{dangerous-git-ops-D6AF-Hg_.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-CkT_kznS.js → deacon-CU_cAYSR.js} +406 -607
- package/server/{deacon-B8HbQdqU.js → deacon-kiQrb4ZT.js} +3 -3
- package/server/{deacon-nudge-log-D6K9K-rE.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
- package/server/{deacon-swarm-BryRr6AO.js → deacon-swarm-BXZZ1Z2-.js} +17 -17
- package/server/deacon-swarm-C-GwfjJy.js +2 -0
- package/server/deacon.js +8 -8
- package/server/{deploy-patrol-1IrZxicY.js → deploy-patrol-AiFoP8dw.js} +136 -19
- package/server/{deploy-window-wDf4UgHt.js → deploy-window-C3F-tihF.js} +77 -10
- package/server/{deploy-window-7ZYHh7Zp.js → deploy-window-DkZraDyj.js} +1 -1
- package/server/{dev-supervisor-C7p9kEpc.js → dev-supervisor-bcOWqdQE.js} +2 -2
- package/server/{devcontainer-renderer-CNmQy0pL.js → devcontainer-renderer-_d6XhyND.js} +3 -3
- package/server/dist-Bzy0y69j.js +3 -0
- package/server/{dist-D-Ed5yVw.js → dist-Cb_0uvpS.js} +1 -1
- package/server/{docker-BCZ89M9X.js → docker-DcMTFTUC.js} +2 -2
- package/server/{dod-DbJLYcHv.js → dod-C6n9RV3G.js} +1 -1
- package/server/{ensure-devcontainer-Cs6W9Yzj.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
- package/server/{ensure-devcontainer-V5JWaAva.js → ensure-devcontainer-DNi-ono3.js} +4 -4
- package/server/{esm-shims-dTeNdq7X.js → esm-shims-OSHAYaS1.js} +1 -1
- package/server/{event-store-TnWdydfB.js → event-store-CQL6NeqB.js} +3 -3
- package/server/{event-store-CpBGsO6_.js → event-store-EV2cMiXj.js} +1 -1
- package/server/{events-Dsuv6qyB.js → events-BTdrdEq8.js} +1 -1
- package/server/{events-DSUdR-04.js → events-DTfAe4My.js} +3 -3
- package/server/{factory-BMrK4TrE.js → factory-CFibJuaw.js} +50 -13
- package/server/{feature-registry-population-B-CI9hgE.js → feature-registry-population-DKZFMbFt.js} +4 -4
- package/server/{feature-registry-storage-B972ph_A.js → feature-registry-storage-BdPuLcBX.js} +2 -2
- package/server/{features-Bc-Bmiye.js → features-ez2271oH.js} +2 -2
- package/server/{feedback-target-DZ-iAnAa.js → feedback-target-7mqqwrX6.js} +7 -7
- package/server/{feedback-target-DS6NUuSs.js → feedback-target-CoFDHiM8.js} +1 -1
- package/server/{feedback-writer-BXP6g75N.js → feedback-writer-CY5L1lB7.js} +6 -5
- package/server/{feedback-writer-Bx5z11mF.js → feedback-writer-D3a22RCd.js} +1 -1
- package/server/flywheel-DHrgCphM.js +1084 -0
- package/server/flywheel-DzGtWnJ1.js +477 -0
- package/server/flywheel-SVF02Jpq.js +2 -0
- package/server/{flywheel-merge-order-CTgHeg-W.js → flywheel-merge-order-UU0tiUld.js} +10 -9
- package/server/{flywheel-merge-order-CNKAY489.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
- package/server/{forge-B1S_KZv4.js → forge-CNFnyqps.js} +2 -2
- package/server/forge-DXnS_YFH.js +2 -0
- package/server/{from-DpwQ-sc3.js → from-kNxT0bZC.js} +1 -1
- package/server/{fts-db-DmAcuCkV.js → fts-db-CE46vDkZ.js} +2 -2
- package/server/{fts-operations-7d_RkmWp.js → fts-operations-CqY6zl-i.js} +2 -2
- package/server/{git-utils-Cc3FHDKd.js → git-utils-CRw2zLPC.js} +68 -3
- package/server/git-utils-D0_yhCgF.js +3 -0
- package/server/{github-app-CDPtGF7J.js → github-app-C3QrAUd0.js} +27 -8
- package/server/{github-app-CU14oYzP.js → github-app-ClZ2lk8D.js} +1 -1
- package/server/{github-client-XjTJbBm7.js → github-client-BnIsSrEN.js} +2 -2
- package/server/{github-client-CwBZZ3t7.js → github-client-DfQYVUaw.js} +1 -1
- package/server/{github-pr-lookup-CFGeVhqv.js → github-pr-lookup-D16NGsSO.js} +2 -2
- package/server/{harness-binary-B2CTcD84.js → harness-binary-DPUi-Pv8.js} +32 -6
- package/server/{harness-resolve-D5FVQTmy.js → harness-resolve-3lNZkyT4.js} +18 -9
- package/server/{health-events-DREeevle.js → health-events-BBcTYQKU.js} +2 -2
- package/server/{health-events-C1whmd58.js → health-events-BDOHby5Q.js} +1 -1
- package/server/{hooks-yxRsjk-z.js → hooks-CKZgXlJb.js} +2 -2
- package/server/{hooks-B-HItBiS.js → hooks-DPVX1rwQ.js} +1 -1
- package/server/{hume-Dz_OymXE.js → hume-Cz8igP9E.js} +2 -2
- package/server/hume-ccTf4wTX.js +3 -0
- package/server/{idle-stack-reaper-DrCv0OAG.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
- package/server/{idle-stack-reaper-Yf34xXxY.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
- package/server/{in-flight-guard-BoWm66Kh.js → in-flight-guard-CAAkqPLu.js} +2 -2
- package/server/{infra-D4iNWMA5.js → infra-BEqFxlJc.js} +14 -4
- package/server/{injection-D7T75Pye.js → injection-C8aiVJrF.js} +191 -183
- package/server/{injection-BVNa4MQW.js → injection-CPUIqNhI.js} +1 -1
- package/server/{inspect-agent-BXCgNeZ4.js → inspect-agent-BLuJ1AkT.js} +137 -81
- package/server/inspect-agent-Brtz0URj.js +2 -0
- package/server/{internal-token-C9DdEOKY.js → internal-token-BrcU6qfe.js} +1 -1
- package/server/{internal-token-CXsfxslp.js → internal-token-s0-oKybJ.js} +2 -2
- package/server/{io-DQR9PMgS.js → io-C9kF1wtJ.js} +160 -184
- package/server/{issue-closed-DtmJM0D0.js → issue-closed-CDJk4pIp.js} +7 -7
- package/server/{issue-lifecycle-8PSS9Anq.js → issue-lifecycle-B8sZHVHh.js} +1 -1
- package/server/{issue-lifecycle-CeyW_HoD.js → issue-lifecycle-ojZAzDBP.js} +22 -22
- package/server/{issue-service-singleton-DBZabEl7.js → issue-service-singleton-BvJ09SaR.js} +1 -1
- package/server/{issue-service-singleton-D_RVYBuL.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
- package/server/{issues-pDW9VUNz.js → issues-BMmP_77e.js} +2 -2
- package/server/{jsonl-parser-C3HVNR5d.js → jsonl-parser-BXSlHwEh.js} +3 -3
- package/server/{label-cleanup-DPwiZlWo.js → label-cleanup-B0UJwnv5.js} +3 -3
- package/server/{label-reconciler-Df1ZduPH.js → label-reconciler-B4iOAjlC.js} +4 -4
- package/server/{launcher-generator-COgR2By1.js → launcher-generator-BBWG_SiS.js} +105 -10
- package/server/{lifecycle-io-taIb0PoH.js → lifecycle-io-BREGpnLk.js} +37 -37
- package/server/lifecycle-io-DPo7x11I.js +3 -0
- package/server/{lifecycle-CtPDcZ9u.js → lifecycle-xmBfK2GJ.js} +6 -6
- package/server/lifecycle-yPd___5E.js +121 -0
- package/server/{linear-client-DsFkIxee.js → linear-client-BsuUvkdA.js} +2 -2
- package/server/{linear-client-YwZMDIwQ.js → linear-client-CTskEeT_.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-BwsyNRJV.js → merge-B1DiziGU.js} +1 -1
- package/server/{merge-C1t-bspg.js → merge-CefQNAnq.js} +3 -3
- package/server/{merge-agent-DDiIjzk-.js → merge-agent-4WOWlSYA.js} +28 -28
- package/server/{merge-agent-B-SnXOoc.js → merge-agent-CKkgIBPB.js} +1 -1
- package/server/{merge-batch-Byt-QnEl.js → merge-batch-ClFn2T-y.js} +1 -1
- package/server/merge-ops-CR44oU9-.js +2 -0
- package/server/{merge-rebase-Cm6fXaZN.js → merge-rebase-BfaTyXsw.js} +2 -2
- package/server/merge-set-DJ8-UErs.js +83 -0
- package/server/{merge-set-6LEglm6o.js → merge-set-bUqbm3yc.js} +1 -1
- package/server/{merge-sync-B95_4in_.js → merge-sync-BJYeOODr.js} +1 -1
- package/server/{merge-sync-Do8_q32h.js → merge-sync-VPV28g0g.js} +2 -2
- package/server/{merge-train-CKana8EH.js → merge-train-CHopycP0.js} +3 -3
- package/server/{merge-train-deps-BgmqwIfA.js → merge-train-deps-D1cOZzy2.js} +4 -4
- package/server/{merge-verification-CqnUzGEK.js → merge-verification-BkaOqPsw.js} +4 -4
- package/server/{multipart-parser-tdOQDJ3o.js → multipart-parser-duPAfSBw.js} +2 -2
- package/server/{no-resume-mode-BWOSZjWd.js → no-resume-mode-Nw29vaFb.js} +11 -8
- package/server/node_modules/.package-lock.json +8 -8
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
- package/server/node_modules/undici/README.md +5 -0
- package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
- package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
- package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
- package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
- package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
- package/server/node_modules/undici/docs/docs/index.md +5 -0
- package/server/node_modules/undici/lib/core/request.js +1 -1
- package/server/node_modules/undici/lib/core/util.js +6 -1
- package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
- package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
- package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
- package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
- package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
- package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
- package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
- package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
- package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
- package/server/node_modules/undici/lib/util/cache.js +49 -7
- package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
- package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/server/node_modules/undici/package.json +2 -2
- package/server/node_modules/undici/types/client.d.ts +2 -2
- package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
- package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/server/{orphan-proposed-reconciler-xklgvNA7.js → orphan-proposed-reconciler-BvKkWMJQ.js} +15 -13
- package/server/{orphan-proposed-reconciler-DSvsJ5M7.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
- package/server/package-lock.json +9 -9
- package/server/package.json +1 -1
- package/server/{pan-dir-DOcf6ug3.js → pan-dir-B0c3w0Ya.js} +78 -58
- package/server/{paths-DooHpt9p.js → paths-D-xWGHdh.js} +2 -2
- package/server/{pickup-CaskQ7j6.js → pickup-DUCLWrJY.js} +17 -16
- package/server/{pipeline-membership-1LGRjo-k.js → pipeline-membership-mY3GprlK.js} +186 -67
- package/server/{pipeline-notifier-CZsrU_nj.js → pipeline-notifier-BJr8gQX6.js} +1 -1
- package/server/{pipeline-notifier-B6FVsYF9.js → pipeline-notifier-BXkJzDC4.js} +2 -2
- package/server/{project-pipelines-CtNG_rvs.js → project-pipelines-C0MWUeCU.js} +2 -2
- package/server/project-repos-B6GycDh9.js +94 -0
- package/server/project-repos-DXKQsc_m.js +3 -0
- package/server/projects-vjjcmiN8.js +3 -0
- package/server/{prompts-EvhMeeHG.js → prompts-DxzFXuLl.js} +2 -2
- package/server/{providers-BDDPULlp.js → providers-qQAwGQDW.js} +7 -7
- package/server/{providers-DNSQqy2V.js → providers-u4Ga0jOr.js} +1 -1
- package/server/public/assets/{chunk-BO2N2NFS-sym_ufXe.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-CQJPBNBu.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
- package/server/public/assets/{dist-DukGS2YZ.js → dist-ByIuzMQW.js} +3 -3
- package/server/public/assets/{dist-Bio7THQU.js → dist-D7zYSEA6.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-D4lWwte3.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-CaLboCt5.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
- package/server/public/assets/{index-Bwejq-5s.js → index-CWeMerGO.js} +147 -144
- package/server/public/assets/index-CenuJ3Cw.css +1 -0
- package/server/public/assets/{linear-qUWmMZ-c.js → linear-BBbArIcK.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-C4zYulEm.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
- package/server/public/assets/{prod-C8VtLuWC.js → prod-B8vYiu52.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-qP04zyZC.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-eMPTX_cG.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-Dme1PIt6.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-By_BteaL.js → pull-requests-7N8WKseP.js} +1 -1
- package/server/{pull-requests-8z2N1UOV.js → pull-requests-_lHueOHW.js} +13 -11
- package/server/{queries-ZABd5aXP.js → queries-CjNIf-Ub.js} +1200 -201
- package/server/{rally-i_goYmiA.js → rally-CyWT_lNO.js} +3 -3
- package/server/{rally-api-DqKqIMNR.js → rally-api-C8e_1JRi.js} +2 -2
- package/server/{rally-api-xHazRk0d.js → rally-api-ClOSd-Tt.js} +1 -1
- package/server/{rally-client-COYz1vYR.js → rally-client-lc-nokqr.js} +4 -4
- package/server/{rally-client-CGWEHaPd.js → rally-client-sgtVqzNU.js} +1 -1
- package/server/rally-zhhtXuDP.js +3 -0
- package/server/{reap-terminal-sessions-CaMkFOIH.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
- package/server/{reap-terminal-sessions-DG9eiMVz.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
- package/server/rebuild-stack-CFvcBHsS.js +4 -0
- package/server/{rebuild-stack-JUm0jqYP.js → rebuild-stack-lwtsW0GO.js} +26 -35
- package/server/{reconstruct-cache-wU79aCee.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
- package/server/record-CN0pj4_5.js +3 -0
- package/server/{record-update-D3N6WMFR.js → record-update-bLJxAXH4.js} +1 -1
- package/server/record-update-dE1Aw83j.js +310 -0
- package/server/{recovery-trip-DkzJSej9.js → recovery-trip-BvRWfUXM.js} +2 -2
- package/server/{release-engine-DMINVN8S.js → release-engine-Cx48W7z8.js} +5 -5
- package/server/{release-set-DeUSOEHy.js → release-set-CQfuN9-v.js} +3 -3
- package/server/{remote-b-c5bOce.js → remote-C_2hasl7.js} +3 -3
- package/server/{remote-Dr5kGYSZ.js → remote-ChgimyYa.js} +3 -3
- package/server/{remote-agents-Ct_WOyke.js → remote-agents-By1ige5O.js} +6 -6
- package/server/{remote-agents-D6O_zETW.js → remote-agents-CA3Ihlxj.js} +1 -1
- package/server/{remote-completion-Dca3hAaa.js → remote-completion-fVe9e_3u.js} +12 -12
- package/server/resume-BFv1PGpA.js +3 -0
- package/server/{review-agent-CThvgK2r.js → review-agent-CIGOQYBD.js} +29 -25
- package/server/{review-agent-CCum8sGe.js → review-agent-DNboMyW4.js} +1 -1
- package/server/{review-artifacts-CXywD0F2.js → review-artifacts-nRDPuMxd.js} +5 -5
- package/server/{review-context-OYfKUprb.js → review-context-2uj-YQ8J.js} +70 -26
- package/server/review-status-btEYlaxA.js +3 -0
- package/server/{review-status-enrichment-crNAtIpL.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
- package/server/{review-status-DFRjDFef.js → review-status-kZj_KyCk.js} +77 -28
- package/server/{review-status-sync-DpAMD_WO.js → review-status-sync-BTOpxtTC.js} +10 -5
- package/server/{review-status-sync-D60PJWNL.js → review-status-sync-DSDK3OMy.js} +1 -1
- package/server/{review-verdict-feedback-CpUZl5aE.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
- package/server/{review-verdict-feedback-JImjut0z.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
- package/server/{rollup-CZ02qgxk.js → rollup-BKQC7jp4.js} +1 -1
- package/server/{rollup-SyuF09e4.js → rollup-FGsKki9R.js} +8 -8
- package/server/{scanner-Br0Z5S6R.js → scanner-CnqEZeDy.js} +45 -14
- package/server/{sequence-io-fxU0DlwW.js → sequence-io-D909zgeH.js} +4 -4
- package/server/{sequencer-agent-B5YC5XVP.js → sequencer-agent-CzkcK6P5.js} +5 -5
- package/server/server.js +2961 -919
- package/server/{service-Bagb90KZ.js → service-CLeAoU6G.js} +55 -54
- package/server/{session-fork-BqQxd-V6.js → session-fork-CHI1XvL9.js} +2 -2
- package/server/{session-history-XdS0JKp3.js → session-history-BT3IvqhC.js} +4 -4
- package/server/settings-66A6uvIA.js +2 -0
- package/server/{settings-BNbocWOg.js → settings-BTMvpNFU.js} +3 -3
- package/server/{settings-uLc6DEYI.js → settings-C0zgxOGf.js} +2 -2
- package/server/{shadow-engineering-D4X_s3fA.js → shadow-engineering-BJfgm-hX.js} +2 -2
- package/server/{shadow-state-C_NkP-sa.js → shadow-state-7a-524T8.js} +2 -2
- package/server/{shadow-state-CbvsN3qG.js → shadow-state-DnDyjujH.js} +1 -1
- package/server/{shadow-utils-CYMRPeRT.js → shadow-utils-Db3oroFG.js} +2 -2
- package/server/{ship-log-__QtAFXG.js → ship-log-D9MlVzYU.js} +1 -1
- package/server/{smart-compaction-jdMkG1vo.js → smart-compaction-CV2ukKND.js} +1 -1
- package/server/{smart-compaction-CLZOWin1.js → smart-compaction-KCYScAU1.js} +7 -7
- package/server/{spawn-planning-session-D5OXo8pT.js → spawn-planning-session-DKpdFyOC.js} +35 -27
- package/server/{spawn-planning-session-8D6mE033.js → spawn-planning-session-qUC2VWu3.js} +1 -1
- package/server/{specialist-completion-CqmduO92.js → specialist-completion-Ky9wCDpb.js} +1 -1
- package/server/{specialist-context-CJ-QjFR-.js → specialist-context-Bn3dCGS2.js} +5 -5
- package/server/{specialist-handoff-logger-Dnjlwt7g.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
- package/server/{specialist-logs-CQnKzuZs.js → specialist-logs-C5p8G7tx.js} +3 -3
- package/server/{specialists-Bg9v4z3F.js → specialists-CC4r-c2s.js} +1015 -460
- package/server/{specialists-D0gGXMZx.js → specialists-CShuVGWT.js} +1 -1
- package/server/specialists-DM6bWjsi.js +3 -0
- package/server/{specialists-CwZHb5cb.js → specialists-jiuuyVkp.js} +66 -74
- package/server/specs-C8Wsn2XO.js +3 -0
- package/server/{src-BMMoA_ba.js → src-CXmtj0im.js} +6 -6
- package/server/{src-Bqdtd6po.js → src-CdmnTM2m.js} +5 -5
- package/server/{src-k039WVYY.js → src-DtcUOZCq.js} +112 -18
- package/server/stack-health-Bn3o8FBX.js +3 -0
- package/server/{stack-health-C-ifC7b0.js → stack-health-DxSdG9cW.js} +63 -9
- package/server/{stale-task-claims-L7pJkQFL.js → stale-task-claims-KJKxxiiQ.js} +4 -4
- package/server/{staleness-_Tr-GwdA.js → staleness-CT34nwr9.js} +1 -1
- package/server/{staleness-BID1BKdr.js → staleness-DPm7ClwA.js} +15 -3
- package/server/{state-home-CONQvZR0.js → state-home-Cn_Qu8IX.js} +96 -44
- package/server/{state-migrate-BeBW0KXA.js → state-migrate-BGg2ZaOt.js} +12 -3
- package/server/{stuck-remediation-CKnIryGT.js → stuck-remediation-DYuPRYYw.js} +307 -26
- package/server/{stuck-remediation-CsGD5Ksb.js → stuck-remediation-s9_2qfi6.js} +1 -1
- package/server/{substrate-bug-weights-service-CpIZILj9.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
- package/server/{summary-fork-bX6ax6X7.js → summary-fork-D1RAk9rJ.js} +78 -12
- package/server/{summary-fork-agEMsPSo.js → summary-fork-DpcxN9tf.js} +2 -2
- package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
- package/server/supervisor/pty-supervisor.js +2 -1
- package/server/supervisor/pty-token-x-ea28Us.js +43 -0
- package/server/supervisor-FTJAIsAK.js +2 -0
- package/server/{supervisor-Ctt4eRYz.js → supervisor-wM4ooB5O.js} +3 -3
- package/server/{swarm-readiness-DdmJVX7y.js → swarm-readiness-DlP_UjHq.js} +4 -4
- package/server/{system-prerequisites-DSXBvffY.js → system-prerequisites-DUDj1YHf.js} +56 -29
- package/server/{teardown-workspace-DDCf5n-a.js → teardown-workspace-DeTTImn-.js} +15 -15
- package/server/{test-agent-queue-BJZ9Nfcc.js → test-agent-queue-MbxX5vqq.js} +7 -7
- package/server/{test-verdict-Cp5tljlJ.js → test-verdict-bWYBtqBg.js} +1 -1
- package/server/{test-verdict-D_-sXIz_.js → test-verdict-gscuksPv.js} +1 -1
- package/server/{tldr-daemon-B8_oT5gx.js → tldr-daemon-BYFkts95.js} +1 -1
- package/server/{tldr-daemon-BQFmmFp0.js → tldr-daemon-C-69c3OI.js} +2 -2
- package/server/tmux-B6z7h_vZ.js +3 -0
- package/server/{tmux-L5LgvGLp.js → tmux-R7N7y-Mh.js} +76 -44
- package/server/{token-BkQLy4yS.js → token-BK6t8BIT.js} +2 -2
- package/server/token-util-DuPuNriz.js +3 -0
- package/server/{token-util-DI8sGlmF.js → token-util-DxXu-vd1.js} +1 -1
- package/server/{tracker-config-DdT-nUAM.js → tracker-config-G6latr8C.js} +2 -2
- package/server/{tracker-utils-DV3h1FYG.js → tracker-utils-B4ylXZQK.js} +1 -1
- package/server/{tracker-utils-CawsPSS2.js → tracker-utils-DHv5pSDT.js} +2 -2
- package/server/{traefik-connect-C6mJckNs.js → traefik-connect-Df2uXPsQ.js} +1 -1
- package/server/{tunnel-IdK1iTHx.js → tunnel-CDVKJpRv.js} +3 -3
- package/server/{tunnel-BIFl98rc.js → tunnel-DGdUkGoZ.js} +1 -1
- package/server/{types-7-GnJn0t.js → types-5M0lupud.js} +1 -1
- package/server/{uat-train-0Ujk8GCv.js → uat-train-B05BWkp-.js} +1 -1
- package/server/{uat-train-j0cPeMSj.js → uat-train-DDSrSoV1.js} +28 -28
- package/server/validate-IfDGkaVR.js +177 -0
- package/server/{validation-DcAgXTQp.js → validation-CC9OPqJZ.js} +1 -1
- package/server/{validation-CabEISJT.js → validation-Dw1pzDzr.js} +259 -9
- package/server/{verification-artifact-Ck1tefmz.js → verification-artifact-B3itKTxu.js} +1 -1
- package/server/{verification-artifact-BuTA1QbL.js → verification-artifact-TVFSz_q1.js} +1 -1
- package/server/{verification-runner-DlJezzef.js → verification-runner-BW4HOKAz.js} +1 -1
- package/server/{verification-runner-FiuAZ-H2.js → verification-runner-CkgX6EtI.js} +174 -124
- package/server/{vtt-parser-BnRsYzcz.js → vtt-parser-DYPbKcIJ.js} +1 -1
- package/server/{work-agent-prompt-DLthEPAq.js → work-agent-prompt-Du8Vh2aJ.js} +13 -13
- package/server/workflows-BQu4RFQ-.js +2 -0
- package/server/{workflows-BZNNYkGC.js → workflows-mbQzh6mQ.js} +39 -77
- package/server/{workspace-3IC-UkAi.js → workspace--8tnhDI0.js} +1 -1
- package/server/{workspace-D9ppycdg.js → workspace-BPUws1-_.js} +3 -3
- package/server/{workspace-config-Bigl_-Lk.js → workspace-config-CIVWZOQr.js} +1 -1
- package/server/{workspace-manager-ClkCIWTe.js → workspace-manager-CBhNdzE4.js} +76 -18
- package/server/workspace-manager-CWT55qeI.js +3 -0
- package/server/{workspace-metadata-BE0efUv_.js → workspace-metadata-BzHnwwX4.js} +1 -1
- package/server/{workspace-metadata-tiSRIWJP.js → workspace-metadata-_WygnyoX.js} +2 -2
- package/server/{workspaces-CFPcL0vl.js → workspaces-Do_9J0LQ.js} +309 -124
- package/sync-sources/agents/pan-inspect-agent.md +1 -1
- package/sync-sources/agents/pan-merge-agent.md +1 -1
- package/sync-sources/agents/pan-planning-agent.md +4 -4
- package/sync-sources/agents/pan-work-agent.md +1 -1
- package/sync-sources/dev-skills/pan-commit/SKILL.md +1 -1
- package/sync-sources/dev-skills/test-specialist-workflow/SKILL.md +1 -1
- package/sync-sources/hooks/record-cost-event.js +369 -75
- package/sync-sources/hooks/session-start-hook +7 -0
- package/sync-sources/hooks/work-agent-stop-hook +1 -1
- package/sync-sources/rules/per-bead-durability.md +1 -1
- package/sync-sources/rules/prd-authoring.md +1 -1
- package/sync-sources/skills/feature-work/SKILL.md +1 -1
- package/sync-sources/skills/okf/README.md +11 -3
- package/sync-sources/skills/okf/SKILL.md +12 -1
- package/sync-sources/skills/okf/docs/USAGE.md +15 -0
- package/sync-sources/skills/okf/references/overdeck.md +28 -0
- package/sync-sources/skills/pan/SKILL.md +2 -2
- package/sync-sources/skills/pan-admin-config/SKILL.md +1 -0
- package/sync-sources/skills/pan-approve/SKILL.md +1 -1
- package/sync-sources/skills/pan-close/SKILL.md +1 -1
- package/sync-sources/skills/pan-doctor/SKILL.md +1 -1
- package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
- package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
- package/sync-sources/skills/pan-new-project/SKILL.md +9 -11
- package/sync-sources/skills/pan-orders/SKILL.md +33 -0
- package/sync-sources/skills/pan-oversee/SKILL.md +5 -5
- package/sync-sources/skills/pan-plan/SKILL.md +6 -6
- package/sync-sources/skills/pan-quickstart/SKILL.md +1 -1
- package/sync-sources/skills/pan-recap/SKILL.md +2 -2
- package/sync-sources/skills/pan-review/SKILL.md +1 -1
- package/sync-sources/skills/pan-start/SKILL.md +7 -3
- package/sync-sources/skills/pan-swarm/SKILL.md +1 -1
- package/sync-sources/skills/pan-sync/SKILL.md +1 -1
- package/sync-sources/skills/pan-task/SKILL.md +2 -2
- package/sync-sources/skills/pan-wipe/SKILL.md +2 -2
- package/sync-sources/skills/pipeline-list/SKILL.md +1 -1
- package/sync-sources/skills/pipeline-status/SKILL.md +2 -2
- package/sync-sources/skills/plan/SKILL.md +11 -11
- package/sync-sources/skills/write-vbrief/SKILL.md +7 -282
- package/sync-sources/skills/write-xbrief/SKILL.md +295 -0
- package/sync-sources/templates/claude-md/sections/warnings.md +1 -1
- package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
- package/server/agent-state-Co5Sy2Fw.js +0 -3
- package/server/agents-DyHKlq1I.js +0 -3
- package/server/cli-BRORS9qY.js +0 -3
- package/server/codex-DNyiQDKW.js +0 -3
- package/server/context-layers-15gDOk20.js +0 -165
- package/server/context-layers-DlQKkHH2.js +0 -4
- package/server/deacon-swarm-CV54eNmU.js +0 -2
- package/server/dist-j64RzSrQ.js +0 -3
- package/server/flywheel-6WHU4O7A.js +0 -207
- package/server/flywheel-COR0mbRI.js +0 -522
- package/server/flywheel-Ctr5uuvo.js +0 -2
- package/server/forge-B0_opi-V.js +0 -2
- package/server/git-utils-CsKGnzFA.js +0 -3
- package/server/hume-BmhvfVbV.js +0 -3
- package/server/inspect-agent-Dq0z1k3H.js +0 -2
- package/server/layers-Cp1To4L8.js +0 -93
- package/server/lifecycle-io-DmY2qwCn.js +0 -3
- package/server/merge-blockers-BYjeXrVN.js +0 -41
- package/server/merge-ops-DwWCkSgo.js +0 -2
- package/server/merge-set-DiISXcC-.js +0 -139
- package/server/projects-BKkwpH6q.js +0 -3
- package/server/public/assets/index-Bdc4V9ba.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-B5v_r7cI.js +0 -1
- package/server/rally-OSJXdiHK.js +0 -3
- package/server/rebuild-stack-CKjJAI8L.js +0 -3
- package/server/record-rwK-nKv_.js +0 -3
- package/server/record-update-Crz74r-6.js +0 -168
- package/server/resume-wZZsWtzz.js +0 -3
- package/server/review-status-Bnh-rdkY.js +0 -3
- package/server/settings-BlUsVaUc.js +0 -2
- package/server/specialists-Dqe6_HE5.js +0 -3
- package/server/specs-BhOKBzqk.js +0 -3
- package/server/stack-health-Bd06frFn.js +0 -3
- package/server/supervisor-COVHrBTg.js +0 -2
- package/server/tmux-BAvtac_u.js +0 -3
- package/server/token-util-BArZLN6w.js +0 -3
- package/server/workflows-C4mR0Reb.js +0 -2
- package/server/workspace-manager-B1WOfKvB.js +0 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pan-wipe
|
|
3
|
-
description: "pan wipe <id> — destructive reset to Todo: remove workspace, processes, branches, review state,
|
|
3
|
+
description: "pan wipe <id> — destructive reset to Todo: remove workspace, processes, branches, review state, xBRIEF task state, and tracker status"
|
|
4
4
|
triggers:
|
|
5
5
|
- pan wipe
|
|
6
6
|
- wipe issue
|
|
@@ -27,7 +27,7 @@ Performs the canonical destructive reset-to-Todo for an issue:
|
|
|
27
27
|
- Removes the workspace directory (`workspaces/feature-<id>/`)
|
|
28
28
|
- Removes agent state (`~/.overdeck/agents/<id>/`)
|
|
29
29
|
- Deletes local and remote feature branches
|
|
30
|
-
- Clears review status and issue
|
|
30
|
+
- Clears review status and issue xBRIEF task state
|
|
31
31
|
- Resets issue status in the tracker to Todo
|
|
32
32
|
|
|
33
33
|
## When to Use
|
|
@@ -140,7 +140,7 @@ PY
|
|
|
140
140
|
- **Resource view** is backed by the resource-discovery service
|
|
141
141
|
(`src/dashboard/server/services/resource-discovery.ts`), which includes an
|
|
142
142
|
issue when it has ≥1 `resourceSource` (workspace, branch, tmux, docker, pr,
|
|
143
|
-
|
|
143
|
+
xBRIEF plan, task state, or active tracker state) and computes `readyForMerge` +
|
|
144
144
|
`stateLabel`. Same data the Command Deck `fetchProjects()` consumes.
|
|
145
145
|
- **Lifecycle view** ports `getPipelineIssuePhase`
|
|
146
146
|
(`src/dashboard/frontend/src/lib/pipeline-state.ts`). It can't see
|
|
@@ -43,7 +43,7 @@ PAN-1028 in_flight TTS: first speech utterance gets clipped kimi-k
|
|
|
43
43
|
PAN-945 post_merge_limbo Planning artifact path mismatch gpt-5.4 · · · · ✓* ·
|
|
44
44
|
PAN-1024 zombie_pr Lazy-load per-turn diff summaries gpt-5.4 · · · · · ·
|
|
45
45
|
|
|
46
|
-
PLANNING (Opus drafting
|
|
46
|
+
PLANNING (Opus drafting xBRIEFs)
|
|
47
47
|
PAN-1015 Remove claudish routing in favor of CLIProxy claude-sonnet-4-6 ◐ planning
|
|
48
48
|
|
|
49
49
|
✓ done/passing ◐ in-progress ✗ failed/blocked · pending/n-a
|
|
@@ -170,7 +170,7 @@ for i in panissues:
|
|
|
170
170
|
f"{'✓' if ready else '·'}")
|
|
171
171
|
|
|
172
172
|
print()
|
|
173
|
-
print("PLANNING SESSIONS (Opus drafting
|
|
173
|
+
print("PLANNING SESSIONS (Opus drafting xBRIEFs)")
|
|
174
174
|
print('─' * 130)
|
|
175
175
|
sessions = subprocess.check_output(['tmux','-L','overdeck','list-sessions','-F','#{session_name}']).decode().split('\n')
|
|
176
176
|
for ps in sorted(s for s in sessions if s.startswith('planning-pan-')):
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: plan
|
|
3
3
|
description: >
|
|
4
4
|
Opus-driven planning for issues before Sonnet implementation. Creates workspace,
|
|
5
|
-
.pan/continue.json, .pan/spec.vbrief.json with
|
|
5
|
+
.pan/continue.json, .pan/spec.vbrief.json with xBRIEF tasks, and updates issue tracker.
|
|
6
6
|
Ensures strategic decisions are made by Opus, not cheaper models.
|
|
7
7
|
triggers:
|
|
8
8
|
- plan
|
|
@@ -31,7 +31,7 @@ license: "MIT"
|
|
|
31
31
|
|
|
32
32
|
**Opus plans EVERYTHING. Sonnet executes.**
|
|
33
33
|
|
|
34
|
-
Do NOT leave any decisions for the implementation agent. Every architectural choice, every file path, every function name, every edge case - all decided here. The implementation agent should be able to work through
|
|
34
|
+
Do NOT leave any decisions for the implementation agent. Every architectural choice, every file path, every function name, every edge case - all decided here. The implementation agent should be able to work through xBRIEF tasks mechanically without making any design decisions.
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
@@ -103,7 +103,7 @@ Create `.pan/continue.json` with COMPLETE planning context:
|
|
|
103
103
|
{ "id": "H1", "summary": "<risk/edge case>", "mitigation": "<how to handle it>" }
|
|
104
104
|
],
|
|
105
105
|
"resumePoint": null,
|
|
106
|
-
"
|
|
106
|
+
"tasksMapping": {},
|
|
107
107
|
"agentModel": "plan",
|
|
108
108
|
"sessionHistory": [
|
|
109
109
|
{ "timestamp": "<ISO timestamp>", "reason": "planning", "note": "Initial planning session", "agentModel": "plan" }
|
|
@@ -116,8 +116,8 @@ Create `.pan/continue.json` with COMPLETE planning context:
|
|
|
116
116
|
|
|
117
117
|
```json
|
|
118
118
|
{
|
|
119
|
-
"
|
|
120
|
-
"version": "0.
|
|
119
|
+
"xBRIEFInfo": {
|
|
120
|
+
"version": "0.8",
|
|
121
121
|
"created": "<ISO timestamp>"
|
|
122
122
|
},
|
|
123
123
|
"plan": {
|
|
@@ -167,9 +167,9 @@ Create `.pan/continue.json` with COMPLETE planning context:
|
|
|
167
167
|
}
|
|
168
168
|
```
|
|
169
169
|
|
|
170
|
-
**CRITICAL
|
|
170
|
+
**CRITICAL xBRIEF Structure Rules:**
|
|
171
171
|
|
|
172
|
-
1. **Acceptance criteria MUST be subItems, NEVER top-level items.** Each AC is nested under its parent task/requirement as a `subItems` entry. Top-level items with `kind: "acceptance_criterion"` will fail
|
|
172
|
+
1. **Acceptance criteria MUST be subItems, NEVER top-level items.** Each AC is nested under its parent task/requirement as a `subItems` entry. Top-level items with `kind: "acceptance_criterion"` will fail xBRIEF Studio validation.
|
|
173
173
|
|
|
174
174
|
2. **Hierarchical IDs required.** SubItem IDs must use dot-notation from the parent: `parent-id.ac-name`. Example: `work-prompt-ac.injects-ac-per-task`. The parent prefix is mandatory.
|
|
175
175
|
|
|
@@ -183,17 +183,17 @@ Create `.pan/continue.json` with COMPLETE planning context:
|
|
|
183
183
|
- Set `edges` to capture blocking relationships between items
|
|
184
184
|
- `difficulty`: trivial (typo/config), simple (1 file), medium (2-3 files), complex (multi-system)
|
|
185
185
|
- 10-40 items for a typical feature; more for large refactors
|
|
186
|
-
- SubItems (acceptance criteria) are NOT converted to
|
|
186
|
+
- SubItems (acceptance criteria) are NOT converted to xBRIEF tasks — they're verification checklists
|
|
187
187
|
|
|
188
188
|
**After writing the JSON file:**
|
|
189
189
|
```bash
|
|
190
|
-
# Materialize
|
|
190
|
+
# Materialize xBRIEF tasks and mark the workspace spec proposed
|
|
191
191
|
pan plan finalize
|
|
192
192
|
```
|
|
193
193
|
|
|
194
194
|
**Cloister hand-off:** When `pan plan finalize` runs, it automatically:
|
|
195
195
|
1. Reads `.pan/spec.vbrief.json` from the workspace
|
|
196
|
-
2. Validates the
|
|
196
|
+
2. Validates the xBRIEF tasks already stored in `plan.items[]`
|
|
197
197
|
3. Preserves dependency relationships from `edges` (blocking order)
|
|
198
198
|
4. Includes acceptance criteria in task descriptions
|
|
199
199
|
5. Marks `plan.status` as `proposed` so the dashboard shows Done
|
|
@@ -230,7 +230,7 @@ gh issue comment <number> --body "## Planning Complete
|
|
|
230
230
|
**Planned by:** Claude Opus 4.6
|
|
231
231
|
**Workspace:** workspaces/feature-<issue-id>/
|
|
232
232
|
|
|
233
|
-
###
|
|
233
|
+
### xBRIEF tasks: <N> items in .pan/spec.vbrief.json
|
|
234
234
|
### Next: /work-issue <ISSUE-ID>"
|
|
235
235
|
```
|
|
236
236
|
|
|
@@ -1,292 +1,17 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: write-vbrief
|
|
3
|
-
description:
|
|
4
|
-
Write a vBRIEF spec (.pan/spec.vbrief.json) and continue.json directly — without
|
|
5
|
-
launching the interactive planning agent. Use when the work is well-understood
|
|
6
|
-
and the agent can author the plan from the issue body and codebase alone.
|
|
7
|
-
Also use when you ARE the work agent and need to self-plan before implementing.
|
|
8
|
-
Covers the full xBRIEF v0.8 schema, continue.json format, task sizing rules,
|
|
9
|
-
inspection gates, and the `pan plan finalize` handoff command.
|
|
3
|
+
description: "Compatibility redirect: /write-vbrief has been renamed to /write-xbrief"
|
|
10
4
|
triggers:
|
|
5
|
+
- /write-vbrief
|
|
11
6
|
- write vbrief
|
|
12
7
|
- create vbrief
|
|
13
|
-
|
|
14
|
-
- skip planning agent
|
|
15
|
-
- self-plan
|
|
16
|
-
- author plan
|
|
17
|
-
- create plan manually
|
|
18
|
-
- write plan without planning agent
|
|
19
|
-
allowed-tools:
|
|
20
|
-
- Bash
|
|
21
|
-
- Read
|
|
22
|
-
- Write
|
|
23
|
-
- Grep
|
|
24
|
-
- Glob
|
|
8
|
+
allowed-tools: []
|
|
25
9
|
---
|
|
26
10
|
|
|
27
|
-
#
|
|
11
|
+
# /write-vbrief renamed to /write-xbrief
|
|
28
12
|
|
|
29
|
-
|
|
13
|
+
This compatibility stub preserves the former skill name. Use `/write-xbrief` for direct xBRIEF plan authoring.
|
|
30
14
|
|
|
31
|
-
|
|
32
|
-
- You are a work agent that received an issue without a pre-existing plan
|
|
33
|
-
- The issue is small enough that a full planning session would cost more than the work itself
|
|
34
|
-
- You need to rewrite or patch a broken vBRIEF before continuing work
|
|
15
|
+
If this skill is invoked, stop reading this file and invoke `/write-xbrief` so the current xBRIEF v0.8 schema, task rules, and finalization guidance load.
|
|
35
16
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Step 1 — Explore First
|
|
41
|
-
|
|
42
|
-
Before writing a single line of JSON, read the issue and explore the relevant code. A plan written without codebase context will have wrong file paths, wrong difficulty estimates, and spurious edges.
|
|
43
|
-
|
|
44
|
-
Minimum exploration:
|
|
45
|
-
- Read the issue body and any linked PRDs in `<projectRoot>/.pan/drafts/<ISSUE-ID>.md`
|
|
46
|
-
- Grep for the primary symbols, commands, or files the issue mentions
|
|
47
|
-
- Identify which subsystems are affected and how many files will change
|
|
48
|
-
- Check for existing specs: `find <projectRoot>/.pan/specs -name "*<issue-id>*"`
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Step 2 — Write `.pan/spec.vbrief.json`
|
|
53
|
-
|
|
54
|
-
The file goes at `.pan/spec.vbrief.json` in the workspace root. It MUST conform to xBRIEF v0.8.
|
|
55
|
-
|
|
56
|
-
### Full schema
|
|
57
|
-
|
|
58
|
-
```json
|
|
59
|
-
{
|
|
60
|
-
"xBRIEFInfo": {
|
|
61
|
-
"version": "0.8",
|
|
62
|
-
"created": "<ISO 8601 timestamp>",
|
|
63
|
-
"author": "overdeck/<VERSION>",
|
|
64
|
-
"description": "Plan for <ISSUE-ID>: <issue title>"
|
|
65
|
-
},
|
|
66
|
-
"plan": {
|
|
67
|
-
"id": "<issue-id-lowercase>",
|
|
68
|
-
"title": "<issue title>",
|
|
69
|
-
"status": "approved",
|
|
70
|
-
"uid": "<UUID v4>",
|
|
71
|
-
"author": "agent:<model-slug>",
|
|
72
|
-
"sequence": 1,
|
|
73
|
-
"created": "<ISO 8601 timestamp>",
|
|
74
|
-
"updated": "<ISO 8601 timestamp>",
|
|
75
|
-
"references": [
|
|
76
|
-
{ "uri": "<issue URL>", "label": "<ISSUE-ID>", "type": "issue" }
|
|
77
|
-
],
|
|
78
|
-
"tags": ["<relevant tags>"],
|
|
79
|
-
"narratives": {
|
|
80
|
-
"Problem": "<what problem this solves>",
|
|
81
|
-
"Proposal": "<the approach chosen>",
|
|
82
|
-
"NonGoals": "<explicitly out of scope; behaviors this issue must NOT introduce — one per line, prefixed '- '>"
|
|
83
|
-
},
|
|
84
|
-
"autoDecisions": [],
|
|
85
|
-
"items": [
|
|
86
|
-
{
|
|
87
|
-
"id": "<short-kebab-id>",
|
|
88
|
-
"title": "<task title>",
|
|
89
|
-
"status": "pending",
|
|
90
|
-
"priority": "medium",
|
|
91
|
-
"created": "<ISO 8601 timestamp>",
|
|
92
|
-
"metadata": {
|
|
93
|
-
"difficulty": "trivial|simple|medium|complex|expert",
|
|
94
|
-
"issueLabel": "<issue-id-lowercase>",
|
|
95
|
-
"requiresInspection": false,
|
|
96
|
-
"inspectionDepth": "fast",
|
|
97
|
-
"files_scope": ["src/path/to/file.ts"],
|
|
98
|
-
"files_scope_confidence": "high",
|
|
99
|
-
"verify_commands": ["npm run typecheck"],
|
|
100
|
-
"expected_outputs": ["typecheck completes without errors"],
|
|
101
|
-
"readiness": "ready",
|
|
102
|
-
"traces": ["FR-1", "NFR-2"]
|
|
103
|
-
},
|
|
104
|
-
"narrative": { "Action": "<what needs to be done>" },
|
|
105
|
-
"items": [
|
|
106
|
-
{
|
|
107
|
-
"id": "<parent-id>.ac1",
|
|
108
|
-
"title": "<specific testable acceptance criterion>",
|
|
109
|
-
"status": "pending",
|
|
110
|
-
"metadata": { "kind": "acceptance_criterion" }
|
|
111
|
-
}
|
|
112
|
-
]
|
|
113
|
-
}
|
|
114
|
-
],
|
|
115
|
-
"edges": [
|
|
116
|
-
{ "from": "<source-item-id>", "to": "<target-item-id>", "type": "blocks" }
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Field rules
|
|
123
|
-
|
|
124
|
-
| Field | Rule |
|
|
125
|
-
|-------|------|
|
|
126
|
-
| `plan.id` | Issue ID in **lowercase** — e.g. `"pan-1234"`. Never `issueId`, never `issue_id`. |
|
|
127
|
-
| `plan.uid` | Fresh UUID v4. Generate with `node -e "console.log(crypto.randomUUID())"`. |
|
|
128
|
-
| `plan.status` | Must be `"approved"` when written by a self-planning agent (skip `draft`/`proposed`). |
|
|
129
|
-
| `items[].status` | One of: `draft`, `proposed`, `approved`, `pending`, `running`, `completed`, `blocked`, `cancelled`, `failed`. Use `"pending"` for new items. |
|
|
130
|
-
| `plan.narratives.NonGoals` | Required narrative. List everything discovery established as out of scope (`"none"` if genuinely nothing); review enforces these as must-not constraints. |
|
|
131
|
-
| `items[].metadata.requiresInspection` | **Required on every item.** See inspection rules below. |
|
|
132
|
-
| `items[].metadata.inspectionDepth` | `"fast"` (default) or `"deep"`. Only matters when `requiresInspection: true`. |
|
|
133
|
-
| `items[].metadata.files_scope` | Required `string[]` of files/globs this item is expected to touch. Use concrete paths or narrow globs, not broad repo-wide patterns. |
|
|
134
|
-
| `items[].metadata.files_scope_confidence` | Required confidence in `files_scope`: `"high"`, `"medium"`, or `"low"`. |
|
|
135
|
-
| `items[].metadata.verify_commands` | Required for slot-eligible items. List commands that verify this item before slot merge, e.g. `["npm run typecheck", "npx vitest run tests/unit/foo.test.ts"]`. |
|
|
136
|
-
| `items[].metadata.expected_outputs` | Required for slot-eligible items. List the observable evidence expected from `verify_commands`, e.g. `["foo.test.ts passes"]`. |
|
|
137
|
-
| `items[].metadata.readiness` | Required tri-state swarm readiness: `"ready"` for parallel-safe work, `"sequential"` for intentionally serialized work, `"needs_refinement"` when the item is not ready to dispatch. |
|
|
138
|
-
| `items[].metadata.traces` | Optional `string[]` of PRD requirement IDs (`FR-1`, `NFR-2`) this item satisfies. |
|
|
139
|
-
| nested `items` with `metadata.kind: "acceptance_criterion"` | Each item must have at least one acceptance-criterion child item. |
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Step 3 — Write `.pan/continue.json`
|
|
144
|
-
|
|
145
|
-
The continue file records decisions and hazards so the work agent (and review/test agents) have context that isn't in the vBRIEF narrative.
|
|
146
|
-
|
|
147
|
-
```json
|
|
148
|
-
{
|
|
149
|
-
"version": "1",
|
|
150
|
-
"issueId": "<ISSUE-ID-UPPERCASE>",
|
|
151
|
-
"created": "<ISO 8601 timestamp>",
|
|
152
|
-
"updated": "<ISO 8601 timestamp>",
|
|
153
|
-
"gitState": { "branch": "<current branch>", "sha": "<short sha>", "dirty": false },
|
|
154
|
-
"decisions": [
|
|
155
|
-
{ "id": "D1", "summary": "<decision text>", "recordedAt": "<ISO 8601 timestamp>" }
|
|
156
|
-
],
|
|
157
|
-
"hazards": [
|
|
158
|
-
{ "id": "H1", "summary": "<risk or edge case>", "mitigation": "<how to handle it>" }
|
|
159
|
-
],
|
|
160
|
-
"resumePoint": null,
|
|
161
|
-
"vBRIEF tasksMapping": {},
|
|
162
|
-
"agentModel": "agent:<model-slug>",
|
|
163
|
-
"sessionHistory": [
|
|
164
|
-
{
|
|
165
|
-
"timestamp": "<ISO 8601 timestamp>",
|
|
166
|
-
"reason": "planning",
|
|
167
|
-
"note": "Self-authored plan (no planning agent)",
|
|
168
|
-
"agentModel": "agent:<model-slug>"
|
|
169
|
-
}
|
|
170
|
-
]
|
|
171
|
-
}
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
Rules:
|
|
175
|
-
- `version` must be `"1"`
|
|
176
|
-
- `issueId` must be uppercase (e.g. `"PAN-1234"`)
|
|
177
|
-
- `resumePoint` stays `null` — the work agent populates it when it begins
|
|
178
|
-
- `vBRIEF tasksMapping` stays `{}` — `pan plan finalize` populates it
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## Step 4 — Finalize
|
|
183
|
-
|
|
184
|
-
From the workspace root, run:
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
pan plan finalize
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
This atomically:
|
|
191
|
-
1. Reads `.pan/spec.vbrief.json`
|
|
192
|
-
2. Creates vBRIEF tasks through the canonical writer (one per `items[]` entry, edges respected)
|
|
193
|
-
3. Sets `plan.status` to `"proposed"`
|
|
194
|
-
4. Promotes the canonical spec into `<projectRoot>/.pan/specs/<YYYY-MM-DD>-<ISSUE>-<slug>.vbrief.json`
|
|
195
|
-
5. Commits on main, pushes, transitions the tracker issue to Planned
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## Task sizing rules
|
|
201
|
-
|
|
202
|
-
Default to **many small vBRIEF tasks** over a few large ones. A well-sized task:
|
|
203
|
-
|
|
204
|
-
- Has one focused change (if you need "and" in the title, it's two vBRIEF tasks)
|
|
205
|
-
- Is independently reviewable from its diff alone
|
|
206
|
-
- Leaves the tree in a working state if merged alone
|
|
207
|
-
- Has a testable acceptance criterion
|
|
208
|
-
|
|
209
|
-
**Heuristics:**
|
|
210
|
-
- One renamed command = one task
|
|
211
|
-
- One moved file = one task (unless mechanically identical batch → sub-items under one task)
|
|
212
|
-
- One new API endpoint = one task
|
|
213
|
-
- One schema migration = one task
|
|
214
|
-
- One doc update = one task (or one per logical cluster, not "update all docs")
|
|
215
|
-
|
|
216
|
-
When in doubt, split. Too-small vBRIEF tasks: mild overhead. Too-large vBRIEF tasks: reviewers can't reason about them, agents deliver partial results, and the inspection gate can't verify mid-implementation.
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Edge semantics
|
|
221
|
-
|
|
222
|
-
Add an edge only when there is a **real** dependency:
|
|
223
|
-
|
|
224
|
-
| When to add `blocks` edge | When NOT to add |
|
|
225
|
-
|---------------------------|-----------------|
|
|
226
|
-
| B consumes a file/type/value A produces | Narrative flow ("feels like it should come second") |
|
|
227
|
-
| Both items modify the same file | Readability preference |
|
|
228
|
-
| B can't start until A reaches a specific state | Defensive sequencing "just in case" |
|
|
229
|
-
|
|
230
|
-
Absent edges = permission for the work agent to run items in parallel. A spurious edge silently forces serialization that was never intended.
|
|
231
|
-
|
|
232
|
-
Edge types: `blocks` (hard), `informs` (soft/advisory), `invalidates`, `suggests`
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
## Inspection gate (`requiresInspection`)
|
|
237
|
-
|
|
238
|
-
Set `requiresInspection: true` **only** when a wrong implementation would cascade into downstream vBRIEF tasks before the verification gate catches it:
|
|
239
|
-
|
|
240
|
-
- **Foundation for downstream vBRIEF tasks** — subsequent vBRIEF tasks depend on this task's interfaces, types, or module boundaries
|
|
241
|
-
- **Architectural decision crystallizing in code** — naming a public API, choosing a library boundary, picking an event shape
|
|
242
|
-
- **Spec ambiguity risk** — the description is broad enough that two very different diffs could both look "done"
|
|
243
|
-
- **Security/auth surface** — defects here propagate into later vBRIEF tasks assuming the security posture
|
|
244
|
-
- **Cross-cutting protocol or schema** — wire format, DB migration, RPC contract, event payload
|
|
245
|
-
|
|
246
|
-
Set `requiresInspection: false` for:
|
|
247
|
-
- Mechanical changes (flag flip, rename, single-file tweak)
|
|
248
|
-
- Leaf vBRIEF tasks (no downstream task depends on their internals)
|
|
249
|
-
- Tests, docs, comment-only updates
|
|
250
|
-
- Wrongs that surface immediately at typecheck/lint
|
|
251
|
-
|
|
252
|
-
When `requiresInspection: true`, you **must** also set `metadata.foundationFor: ["<task-id>", ...]` listing the downstream vBRIEF tasks that would need to be redone if this one were wrong. An empty `foundationFor` on an inspection task is a planning error — flip it back to `false`.
|
|
253
|
-
|
|
254
|
-
Most plans have 0–2 inspection vBRIEF tasks. More than 3 suggests the vBRIEF tasks are too large.
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
## Difficulty rubric
|
|
259
|
-
|
|
260
|
-
| Level | When | Typical model |
|
|
261
|
-
|-------|------|---------------|
|
|
262
|
-
| `trivial` | Typo, comment, formatting only | haiku |
|
|
263
|
-
| `simple` | Bug fix, single file, obvious change | haiku |
|
|
264
|
-
| `medium` | New feature, 3–5 files, standard patterns | sonnet |
|
|
265
|
-
| `complex` | Refactor, migration, 6+ files, some risk | sonnet |
|
|
266
|
-
| `expert` | Architecture, security, performance, high risk | opus |
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
## Quick checklist
|
|
271
|
-
|
|
272
|
-
Before running `pan plan finalize`:
|
|
273
|
-
|
|
274
|
-
- [ ] `.pan/spec.vbrief.json` has exactly two top-level keys: `xBRIEFInfo` and `plan`
|
|
275
|
-
- [ ] `plan.id` is lowercase issue ID
|
|
276
|
-
- [ ] `plan.uid` is a fresh UUID v4
|
|
277
|
-
- [ ] `plan.status` is `"approved"`
|
|
278
|
-
- [ ] Every item has `metadata.requiresInspection` (boolean)
|
|
279
|
-
- [ ] Every item has `metadata.files_scope`, `metadata.files_scope_confidence`, and `metadata.readiness`
|
|
280
|
-
- [ ] Every slot-eligible item has `metadata.verify_commands` and `metadata.expected_outputs`
|
|
281
|
-
- [ ] Every item has at least one nested `items` AC entry
|
|
282
|
-
- [ ] `foundationFor` populated on every `requiresInspection: true` item
|
|
283
|
-
- [ ] No spurious edges
|
|
284
|
-
- [ ] `.pan/continue.json` written with at least one `decisions[]` entry
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
## See also
|
|
289
|
-
|
|
290
|
-
- `docs/VBRIEF.md` — full schema reference and lifecycle states
|
|
291
|
-
- `/pan-plan` — start the interactive planning agent instead
|
|
292
|
-
- `pan plan finalize --help` — finalization flags
|
|
17
|
+
Do not author a plan from this stub. The canonical instructions live in `sync-sources/skills/write-xbrief/SKILL.md`.
|