@overdeck/desktop 0.49.1 → 0.50.0

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 (545) hide show
  1. package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
  2. package/package.json +1 -1
  3. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-B_maCGZv.js} +2 -2
  4. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-CCqpFWiz.js} +2 -2
  5. package/server/activity-logger-B0X2JJwM.js +3 -0
  6. package/server/{activity-logger-BAVLrkR7.js → activity-logger-SlTXYCVf.js} +22 -4
  7. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-BJAfiY-C.js} +12 -7
  8. package/server/{agent-gc-5E0lgxI1.js → agent-gc-bhikjoJ_.js} +11 -11
  9. package/server/agent-idle-D-UQ7gDv.js +745 -0
  10. package/server/agent-state-BrUPf_7Z.js +3 -0
  11. package/server/{agent-state-Bb3UUxQm.js → agent-state-FABw8neJ.js} +682 -454
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-BAQApt97.js} +1 -1
  13. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-rDenYSlD.js} +5 -5
  14. package/server/agents-DixZjXWm.js +3 -0
  15. package/server/{agents-CqQJW75N.js → agents-DzpQidT8.js} +8 -8
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-BL1ABtW0.js} +20 -135
  17. package/server/archive-planning-D3gw32U9.js +2 -0
  18. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Cjdme0jS.js} +3 -3
  19. package/server/{assemble-DyTp2gSB.js → assemble-B_JgnCbG.js} +28 -9
  20. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-BesWchEi.js} +8 -7
  21. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-COLq639j.js} +3 -3
  22. package/server/{behavior-Bitko0mD.js → behavior-DCg8CIWC.js} +3 -3
  23. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-BDohuMRt.js} +2 -2
  24. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-ENa_hW_V.js} +2 -2
  25. package/server/build-info-Dx2qrVhb.js +2 -0
  26. package/server/{build-info-DTX8JwVP.js → build-info-WuZT6xyi.js} +3 -3
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-CSZ7aVQF.js} +26 -9
  28. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-DXhGRvg4.js} +1 -1
  29. package/server/checkpoint-worker.js +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-DUkUsPVS.js} +2 -2
  31. package/server/{checkpoints-DRALkfDS.js → checkpoints-tm_w6Y4V.js} +1 -1
  32. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-CTh9zxEi.js} +1 -1
  33. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-fRofvhTN.js} +2 -2
  34. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-DLrb9ovz.js} +18 -3
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-BYnXaTVc.js} +2 -2
  36. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-CMS5Jab5.js} +1 -1
  37. package/server/cli-BflmtEFM.js +2 -0
  38. package/server/{cli-Do8UpLoI.js → cli-CoQou1t_.js} +11 -11
  39. package/server/{cliproxy-CX6jHRDP.js → cliproxy-DXDQcR3I.js} +52 -17
  40. package/server/cliproxy-DdhFpcXU.js +3 -0
  41. package/server/{close-issue-J0_eWYT1.js → close-issue-CpQ0BWg-.js} +5 -5
  42. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-CdcJRvUx.js} +13 -12
  43. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-TymtZM37.js} +1 -1
  44. package/server/{codex-icapA4om.js → codex-BValsmtK.js} +1 -1
  45. package/server/{codex-OOea7lXs.js → codex-DYyZL8JD.js} +16 -10
  46. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-CVjbdGKt.js} +3 -3
  47. package/server/{config-Cjleh3_U.js → config-CvKH7r7W.js} +1 -1
  48. package/server/{config-tucKBCCc.js → config-NxI9Yl2f.js} +2 -2
  49. package/server/{config-DC75T4Mr.js → config-_qaa1UXH.js} +2 -2
  50. package/server/{config-yaml-BwOEANMr.js → config-yaml-D60AnTIu.js} +55 -15
  51. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-0dD1kxjN.js} +1 -1
  52. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-hAUCL-un.js} +5 -5
  53. package/server/{context-layers-CSPGc2Hb.js → context-layers-CdpabJj0.js} +3 -3
  54. package/server/context-layers-Ds1MnEFI.js +4 -0
  55. package/server/{continue-U3Af0jUq.js → continue-CnvrUfxw.js} +3 -3
  56. package/server/{control-settings-5k6ixdFW.js → control-settings-Db0uXgVM.js} +310 -7
  57. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-B-1KETG9.js} +8 -8
  58. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzMXGRiJ.js} +1 -1
  59. package/server/{conversation-service-BxrB5lUT.js → conversation-service-BL-asWPX.js} +1 -1
  60. package/server/{conversation-service-BteE4ELK.js → conversation-service-BxIOd5ay.js} +21 -7
  61. package/server/conversations-CEMfwMt-.js +3 -0
  62. package/server/{conversations-DhwxsOru.js → conversations-nS6QgYpD.js} +12 -7
  63. package/server/cost-3FyqKK56.js +838 -0
  64. package/server/{cost-Bnf9NUC5.js → cost-Cctc-Q9M.js} +3 -3
  65. package/server/{cost-CQKI6OCu.js → cost-DTuIRE4y.js} +2 -2
  66. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DfmvLT9L.js} +3 -3
  67. package/server/{dag-DI9LaK_q.js → dag-o-dUpw1L.js} +6 -19
  68. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
  69. package/server/dashboard-db-worker.js +61 -11
  70. package/server/{deacon-TPYssFYt.js → deacon-CsisLmPt.js} +1735 -172
  71. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-DkdkQS5p.js} +3 -3
  72. package/server/deacon-e6py3jkM.js +4 -0
  73. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BCjHiGAY.js} +1 -1
  74. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-CMQswEHX.js} +2 -2
  75. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
  76. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BzaE76Xo.js} +3 -3
  77. package/server/deacon.js +11 -11
  78. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-Bs3hxIn6.js} +3 -3
  79. package/server/dead-end-trip-DUbiRMtT.js +2 -0
  80. package/server/delivery-DhZGRShH.js +3 -0
  81. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-B8sKkA8h.js} +8 -8
  82. package/server/deploy-queue--smqHLhe.js +2 -0
  83. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-CCGWXFkp.js} +2 -2
  84. package/server/{deploy-window-CNT6fOff.js → deploy-window-YuJewzmC.js} +4 -4
  85. package/server/{deploy-window-BMk5_oX6.js → deploy-window-hgsvZ3UZ.js} +1 -1
  86. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-4SBloJHV.js} +2 -2
  87. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-BiJhwFNi.js} +3 -3
  88. package/server/{dist-CPTO_zMR.js → dist-CoR2sivG.js} +1 -1
  89. package/server/dist-FHv1s5ez.js +3 -0
  90. package/server/{docker-B7qUZptz.js → docker-CWO7dcIP.js} +3 -3
  91. package/server/{docker-KR3zSFKY.js → docker-DQzyMXkd.js} +1 -1
  92. package/server/{dod-gK835UMf.js → dod-BAk5arLF.js} +1 -1
  93. package/server/{done-preflight-CksRvh49.js → done-preflight-CGFA0M1b.js} +1 -1
  94. package/server/{done-preflight-Bk8aExAL.js → done-preflight-Cx9JGznT.js} +5 -5
  95. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  96. package/server/durable-review-pipeline-BOEZ0chh.js +3 -0
  97. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-Djx_lvFd.js} +11 -2
  98. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-Dk6ZMOUC.js} +1 -1
  99. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-DzYBBwnM.js} +4 -4
  100. package/server/{esm-shims-1htPASWs.js → esm-shims-deFq5Hhl.js} +1 -1
  101. package/server/{event-store-BgEjNsvk.js → event-store-C50Qt-f1.js} +1 -1
  102. package/server/{event-store-D7qcJXuZ.js → event-store-DTns2XZP.js} +5 -5
  103. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-Bu1Qrg6v.js} +1 -1
  104. package/server/{events-BIKGJZOT.js → events-B6xW8Cpm.js} +3 -3
  105. package/server/{dist-src-BM9eudEd.js → factory-CWVKwKFE.js} +714 -2
  106. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-vaxRN3WO.js} +3 -3
  107. package/server/{features-CGopJXdU.js → features-DXWwktJB.js} +2 -2
  108. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-CXAYe2rU.js} +2 -2
  109. package/server/{feedback-target-CkyLYohm.js → feedback-target-DSVpi0gT.js} +1 -1
  110. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-yPD_wclF.js} +10 -10
  111. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-BzN4qvaP.js} +1 -1
  112. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-Ds1Wjsz4.js} +5 -5
  113. package/server/{flywheel-DXI_WITn.js → flywheel-BCZS-FlW.js} +1 -1
  114. package/server/{flywheel-BwYPDlhK.js → flywheel-CC4gE_rx.js} +15 -15
  115. package/server/{flywheel-C7yek87O.js → flywheel-DWKd7bMc.js} +79 -29
  116. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-DDT3i57u.js} +1 -1
  117. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-DJwH2KpL.js} +17 -15
  118. package/server/forge-4VVCRcF7.js +2 -0
  119. package/server/{forge-DYX9sKzG.js → forge-CHADjOFs.js} +2 -2
  120. package/server/{from-DAdMxC29.js → from-C3dzmjSO.js} +1 -1
  121. package/server/{fs-lock-cw25uO_E.js → fs-lock-DQ_gUxfq.js} +2 -2
  122. package/server/{fts-operations-D_rzLxX5.js → fts-operations-asZo2fh1.js} +3 -3
  123. package/server/git-info-DMOSfJ9I.js +148 -0
  124. package/server/{git-utils-Y0zG25ez.js → git-utils-BAMwn9Nf.js} +1 -1
  125. package/server/{git-utils-DV4B9TRl.js → git-utils-BdHk8y7g.js} +4 -4
  126. package/server/{github-app-C33lDk9Z.js → github-app-BWziYCf3.js} +1 -1
  127. package/server/{github-app-4UX8VIr8.js → github-app-BlMSzSTw.js} +2 -2
  128. package/server/{github-client-nPj5ckZO.js → github-client-OK24qpol.js} +1 -1
  129. package/server/{github-client-DkJVR908.js → github-client-w6j5nVlz.js} +3 -3
  130. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-bGcsEvLE.js} +2 -2
  131. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-DChiynaB.js} +2 -2
  132. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-BplBEbwn.js} +4 -4
  133. package/server/{health-events-jMfxrElt.js → health-events-BTqsmunw.js} +1 -1
  134. package/server/{health-events-DlX_FVAB.js → health-events-Bk3LjaJ9.js} +2 -2
  135. package/server/{hooks-NQ19vvlB.js → hooks-DJR1yR9w.js} +2 -2
  136. package/server/{hooks-W3REcb3h.js → hooks-EndRNrx9.js} +1 -1
  137. package/server/{hume-BFkid2PO.js → hume-1FJmNDTq.js} +2 -2
  138. package/server/hume-gXLmRhmN.js +3 -0
  139. package/server/{identity-Bwh6VGeL.js → identity-C3s8lyp0.js} +3 -3
  140. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-CBelVOE3.js} +1 -1
  141. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-DtoI4al6.js} +4 -4
  142. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-B7khcBdQ.js} +1 -1
  143. package/server/{infra-KTp9KV9u.js → infra-CJRi_5Wu.js} +36 -7
  144. package/server/{injection-67YyU6SC.js → injection-ADWQ3D0s.js} +8 -8
  145. package/server/{injection-BxbZKPDh.js → injection-BWsgHvrL.js} +1 -1
  146. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-CCfNJjKr.js} +12 -12
  147. package/server/inspect-agent-Dhp3hCGp.js +2 -0
  148. package/server/{internal-token-B-z-sGBH.js → internal-token-BCTEqUCX.js} +1 -1
  149. package/server/{internal-token-zY75jrRJ.js → internal-token-BeIWG_kT.js} +2 -2
  150. package/server/{io-DfvO2xyh.js → io-BCtZoXHo.js} +5 -5
  151. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-CiYAa6bX.js} +7 -7
  152. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-BETNVVLq.js} +206 -29
  153. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DaKN57sx.js} +1 -1
  154. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-1Q0ER8Yc.js} +1 -1
  155. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-C_sZ0HjP.js} +124 -11
  156. package/server/issue-title-fallback-B91iD66g.js +120 -0
  157. package/server/{issues-CkvUoAnq.js → issues-RGHQUKhB.js} +2 -2
  158. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-Dfs1dlYE.js} +3 -3
  159. package/server/jsonl-resolver-bFtftCDd.js +324 -0
  160. package/server/{kimi-code-DoMoGqIu.js → kimi-code-BxkDgaj4.js} +1 -1
  161. package/server/{kimi-code-C26gmGxM.js → kimi-code-CNYRA8Dd.js} +14 -12
  162. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-OcWwmOqF.js} +2 -2
  163. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-CefxK9tL.js} +3 -3
  164. package/server/{lifecycle-B0rL38D3.js → lifecycle-DDZ7w-BY.js} +6 -6
  165. package/server/{lifecycle-Bg44O-9x.js → lifecycle-DVXyUil2.js} +2 -2
  166. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-D1oBiMce.js} +1 -1
  167. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-D7N0vQNj.js} +5 -5
  168. package/server/{linear-client-B0cIkTs4.js → linear-client-DUN7zCeb.js} +3 -3
  169. package/server/{linear-client-6V2E-DSa.js → linear-client-TL32snOy.js} +1 -1
  170. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-CtRKSHy5.js} +1 -1
  171. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-bB0CPyjh.js} +5 -5
  172. package/server/memory-fts-worker.js +1 -1
  173. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cvv_9K0M.js} +88 -22
  174. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-C6DJJQRA.js} +38 -14
  175. package/server/{merge-BGWcBxku.js → merge-DOCR6pHi.js} +1 -1
  176. package/server/{merge-vz80RvSE.js → merge-FTk4LsnM.js} +3 -3
  177. package/server/{merge-agent-GWhmnxFk.js → merge-agent-C-dsN9se.js} +37 -33
  178. package/server/{merge-agent-BRSz26Oh.js → merge-agent-D-4_iQgy.js} +2 -2
  179. package/server/{merge-batch-CFMEtTxv.js → merge-batch-BJjzUUL7.js} +1 -1
  180. package/server/{merge-completeness-CP347umA.js → merge-completeness-BOtBUwTU.js} +4 -4
  181. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-CoLJxfUY.js} +1 -1
  182. package/server/merge-eligibility-C4rTS97F.js +3 -0
  183. package/server/merge-eligibility-D7wRnJbj.js +51 -0
  184. package/server/merge-ops-Cf02szJ5.js +2 -0
  185. package/server/merge-rebase-Bj7eJAG4.js +2 -0
  186. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-KBw4rdh3.js} +2 -2
  187. package/server/{merge-set-DsGW8fmc.js → merge-set-CVfEM57p.js} +1 -1
  188. package/server/{merge-set-eiE2nC6C.js → merge-set-CyW-xSn4.js} +4 -4
  189. package/server/{merge-sync-CM2-myXu.js → merge-sync-CYGsJy0u.js} +1 -1
  190. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-YLvOPAry.js} +2 -2
  191. package/server/{merge-train-BOu3fN7O.js → merge-train-VxLn8Ms4.js} +4 -4
  192. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-D0y4hBB9.js} +4 -4
  193. package/server/{merge-verification-BRp08IzI.js → merge-verification-BfJRNMiD.js} +6 -6
  194. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-Bh5fKG_b.js} +4 -4
  195. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-Ci9oeFAe.js} +1 -1
  196. package/server/messaging-Dfbhgjd6.js +3 -0
  197. package/server/{multipart-parser-OAuW7824.js → multipart-parser-BYwfKOVU.js} +2 -2
  198. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-DjMQRkId.js} +1 -1
  199. package/server/node_modules/.package-lock.json +24 -24
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  203. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
  204. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  205. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  206. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  207. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/api/Users.ts +30 -14
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/domain/User.ts +15 -6
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +11 -10
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +41 -32
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/fixtures/server/Users.ts +141 -20
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +31 -5
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  226. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  227. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  228. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  229. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  230. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  231. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +7 -7
  232. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  233. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
  234. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
  235. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  236. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  237. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  238. package/server/node_modules/@types/node/README.md +1 -1
  239. package/server/node_modules/@types/node/buffer.buffer.d.ts +5 -5
  240. package/server/node_modules/@types/node/crypto.d.ts +2 -2
  241. package/server/node_modules/@types/node/http.d.ts +16 -0
  242. package/server/node_modules/@types/node/http2.d.ts +10 -2
  243. package/server/node_modules/@types/node/package.json +2 -2
  244. package/server/node_modules/@types/node/process.d.ts +52 -0
  245. package/server/node_modules/@types/node/quic.d.ts +210 -28
  246. package/server/node_modules/@types/node/sqlite.d.ts +6 -2
  247. package/server/node_modules/@types/node/test.d.ts +36 -0
  248. package/server/node_modules/ansi-regex/index.js +3 -2
  249. package/server/node_modules/ansi-regex/package.json +1 -1
  250. package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
  251. package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
  252. package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
  253. package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
  254. package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
  255. package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
  256. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  257. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  258. package/server/node_modules/gaxios/package.json +3 -3
  259. package/server/node_modules/msgpackr/dist/index-no-eval.cjs +11 -5
  260. package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
  261. package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
  262. package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
  263. package/server/node_modules/msgpackr/dist/index.js +11 -5
  264. package/server/node_modules/msgpackr/dist/index.js.map +1 -1
  265. package/server/node_modules/msgpackr/dist/index.min.js +1 -1
  266. package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
  267. package/server/node_modules/msgpackr/dist/node.cjs +11 -5
  268. package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
  269. package/server/node_modules/msgpackr/dist/test.js +11 -5
  270. package/server/node_modules/msgpackr/dist/test.js.map +1 -1
  271. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
  272. package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
  273. package/server/node_modules/msgpackr/package.json +1 -1
  274. package/server/node_modules/msgpackr/unpack.js +11 -5
  275. package/server/node_modules/picomatch/lib/parse.js +10 -1
  276. package/server/node_modules/picomatch/lib/scan.js +30 -18
  277. package/server/node_modules/picomatch/package.json +1 -1
  278. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-CnP0K2v3.js} +2 -2
  279. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-nFUlquZt.js} +24 -23
  280. package/server/package-lock.json +25 -25
  281. package/server/package.json +1 -1
  282. package/server/{pan-dir-DDd91kMb.js → pan-dir-B4NfzOf3.js} +5 -5
  283. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-8WbU0y1z.js} +188 -69
  284. package/server/{paths-CRLnDgcI.js → paths-rETQhTF2.js} +2 -2
  285. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-yAwDuGS4.js} +2 -2
  286. package/server/{pickup-BjJsSX12.js → pickup-Dle6k9Xt.js} +1 -1
  287. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-CeWhQzXC.js} +5 -5
  288. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-BV4hdkHm.js} +1 -1
  289. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-C9ykcjsn.js} +1 -1
  290. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-Ba0wJNCR.js} +17 -12
  291. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-C9E22B2W.js} +1 -1
  292. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-B5DPXvnr.js} +1 -1
  293. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-p190L97e.js} +2 -2
  294. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-OQoK8Ckg.js} +3 -3
  295. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DFaf7OI1.js} +4 -4
  296. package/server/prd-locations-F2oLSAhy.js +124 -0
  297. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-CUsa6U59.js} +2 -2
  298. package/server/project-repos-BVdi9-ch.js +3 -0
  299. package/server/{project-repos-B4MK48j4.js → project-repos-CsfvLtmr.js} +29 -3
  300. package/server/project-resource-refresh-queue-BehrH4Ai.js +865 -0
  301. package/server/project-resource-refresh-queue-D2110Guc.js +2 -0
  302. package/server/{projects-DvPEAP18.js → projects-BMuEf14J.js} +1 -1
  303. package/server/{prompts-BiS5I2tZ.js → prompts-CKpDt8Jn.js} +2 -2
  304. package/server/providers-Buv2wmFU.js +3 -0
  305. package/server/{providers-DrfK0Ip8.js → providers-CxPKmyif.js} +7 -7
  306. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-DZOQVqV1.js} +4 -4
  307. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-oKeXcbO1.js} +1 -1
  308. package/server/public/assets/{dist-CSmUXazd.js → dist-2qPmeRzT.js} +3 -3
  309. package/server/public/assets/{dist-D0ryefak.js → dist-ClBlE-Nm.js} +1 -1
  310. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-BwdG9fQv.js} +1 -1
  311. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-BzGNdskQ.js} +1 -1
  312. package/server/public/assets/index-CdPveU3M.css +1 -0
  313. package/server/public/assets/index-Cg6tdZoY.js +860 -0
  314. package/server/public/assets/{linear-BPE7oswm.js → linear-DpEt1TJb.js} +1 -1
  315. package/server/public/assets/mermaid-GHXKKRXX-6KBD_3T_.js +1 -0
  316. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-9BpM4oRJ.js} +1 -1
  317. package/server/public/assets/{prod-aKDYUrXQ.js → prod-CzJiNNEG.js} +4 -4
  318. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BXWVAoZx.js} +1 -1
  319. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-5oxodGEw.js} +1 -1
  320. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-BChDrHxZ.js} +1 -1
  321. package/server/public/index.html +2 -2
  322. package/server/pull-requests-CmlandI7.js +2 -0
  323. package/server/{pull-requests-BcHIsFJv.js → pull-requests-T0OV0Vn4.js} +3 -3
  324. package/server/{rally-B1OMtzch.js → rally-CUqj2oIN.js} +3 -3
  325. package/server/rally-DYIn9R2U.js +3 -0
  326. package/server/{rally-api-ShZ4kvn0.js → rally-api-BFPb2oSq.js} +2 -2
  327. package/server/{rally-api-u_vkr5c_.js → rally-api-BoucQG1u.js} +1 -1
  328. package/server/{rally-client-D6Feq1Ka.js → rally-client-16iObny7.js} +5 -5
  329. package/server/{rally-client-DgZvUZqX.js → rally-client-CsqLjLLa.js} +1 -1
  330. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  331. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  332. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-BcBVFJp3.js} +2 -2
  333. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-CyXMrj6K.js} +7 -7
  334. package/server/reconciler-caYiRnPy.js +657 -0
  335. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-3JzPOune.js} +7 -7
  336. package/server/{record-By-wp6pg.js → record-DYOg97Iv.js} +1 -1
  337. package/server/{record-update-D23jPU6b.js → record-update-BPqpBu3O.js} +9 -7
  338. package/server/{record-update-ByGtIlUK.js → record-update-CDPEX7BH.js} +1 -1
  339. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-CpfW6LCJ.js} +43 -10
  340. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-xqKC07Gy.js} +1 -1
  341. package/server/{release-engine-Crc0Tjx-.js → release-engine-C_OOhCaK.js} +5 -5
  342. package/server/{release-set-DDXwbIK7.js → release-set-DOIDz2vw.js} +3 -3
  343. package/server/{remote-oEMfXlwT.js → remote-BTh-sjpX.js} +3 -3
  344. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-DbbN7vSm.js} +6 -6
  345. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-MuXx2gWm.js} +1 -1
  346. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-LcWCpAm2.js} +13 -13
  347. package/server/{remote-CBpLi4Yy.js → remote-xY0B43Ho.js} +3 -3
  348. package/server/{resolver-CuAULbLs.js → resolver-C2QKOf09.js} +2 -2
  349. package/server/{resolver-C8rooxoz.js → resolver-D4nsxfGo.js} +31 -8
  350. package/server/resume-ByUrJUNX.js +3 -0
  351. package/server/{review-agent-7C2w5CzU.js → review-agent-BRBTm1qE.js} +43 -55
  352. package/server/review-agent-Caodi0PX.js +3 -0
  353. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DgaDlbO4.js} +6 -6
  354. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-BBvyuRLC.js} +20 -11
  355. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DCzWMMvE.js} +1 -1
  356. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-THHMKlXJ.js} +3 -3
  357. package/server/{review-status-CUnjjOUu.js → review-status-Bge_3XTR.js} +1 -1
  358. package/server/{review-status-DBnR5t4z.js → review-status-DpniqzPT.js} +113 -44
  359. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-D7sM720S.js} +3 -3
  360. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-PDI4-faj.js} +3 -3
  361. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  362. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  363. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-C6ZKTI8f.js} +11 -8
  364. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-CvpHWyvR.js} +1 -1
  365. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-B2ojHFH5.js} +8 -8
  366. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-tyMoLT2L.js} +1 -1
  367. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Cy_1pnIj.js} +7 -7
  368. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-DjrJ64eS.js} +1 -1
  369. package/server/{rollup-DZwH4CLs.js → rollup-Cp0KEoOu.js} +1 -1
  370. package/server/{rollup-QCwYcBdP.js → rollup-DU3xBQu2.js} +8 -8
  371. package/server/{scanner-2aHeLC3W.js → scanner-BFKG3Gxv.js} +8 -8
  372. package/server/{search-DwHYaj66.js → search-DhtKwbBC.js} +2 -2
  373. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  374. package/server/{sequence-io-POKWdusG.js → sequence-io-C-Q19Jez.js} +4 -4
  375. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-eN2P2lDz.js} +6 -6
  376. package/server/server.js +1499 -1350
  377. package/server/{service-BLb_CyPL.js → service-CThO0Sar.js} +80 -774
  378. package/server/{session-fork-DcTzVwex.js → session-fork-ZYTHtpBh.js} +2 -2
  379. package/server/settings-ByDRfuuE.js +2 -0
  380. package/server/{settings-Clw8UVNs.js → settings-CTywpFw5.js} +2 -2
  381. package/server/{settings-B9-H2K_E.js → settings-nAT-eK56.js} +3 -3
  382. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BHZKPJhq.js} +3 -3
  383. package/server/{shadow-state-CEGrrECe.js → shadow-state-BTLi4Axs.js} +2 -2
  384. package/server/{shadow-state-e7250VUx.js → shadow-state-CZ_LnPsi.js} +1 -1
  385. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-CPLlPHdn.js} +2 -2
  386. package/server/{ship-log-7BnQHuKU.js → ship-log-D-CphNZx.js} +1 -1
  387. package/server/{ship-record-CwUX6Afo.js → ship-record-BaBla0l_.js} +7 -7
  388. package/server/{ship-record-BgUPnpT0.js → ship-record-BlvX8-xv.js} +1 -1
  389. package/server/{ship-status-Ce3_3edi.js → ship-status-rQbPQBsF.js} +2 -2
  390. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-CUXn8mfX.js} +1 -1
  391. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D1CNGdZx.js} +7 -7
  392. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-DCmO6COk.js} +19 -19
  393. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-DfEWyrVV.js} +2 -2
  394. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-BMv3K54P.js} +1 -1
  395. package/server/{specialist-context-cHwpcXSh.js → specialist-context-C1-CfYQb.js} +5 -5
  396. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-BDKoz5Z9.js} +2 -2
  397. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-BJQFkpdG.js} +3 -3
  398. package/server/specialists-CYt1U3Zm.js +4 -0
  399. package/server/{specialists-8LcQi9Np.js → specialists-D6MUU31Q.js} +21 -272
  400. package/server/{specialists-DocAK-7A.js → specialists-DhS79T9v.js} +369 -691
  401. package/server/{specialists-xXcJHAyg.js → specialists-Dx0zRTxX.js} +1 -1
  402. package/server/specialists-registry-BRLCi61y.js +3 -0
  403. package/server/specialists-registry-Bng0OFGH.js +277 -0
  404. package/server/specs-oRGyfz6C.js +3 -0
  405. package/server/{src-C2TAxwki.js → src-C7gGe4KU.js} +6 -6
  406. package/server/{src-DudQNYVw.js → src-CdwN6WY6.js} +344 -7
  407. package/server/{src-DUVvEA8Q.js → src-DMosbuSJ.js} +3 -3
  408. package/server/{stack-health-DKT4ySnA.js → stack-health-BKfNaqMm.js} +3 -3
  409. package/server/{stack-health-CbyiYS9H.js → stack-health-Bz711z1Y.js} +1 -1
  410. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-DMRLb5R2.js} +5 -5
  411. package/server/{staleness-D8UTEXV5.js → staleness-CxZaIhrn.js} +1 -1
  412. package/server/{staleness-BjOAq9-d.js → staleness-r_dkMyMG.js} +1 -1
  413. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-CBWqSWV2.js} +8 -8
  414. package/server/{state-home-DhAZlk5k.js → state-home-DhsMqg8W.js} +2 -2
  415. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  416. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C2Ouyd6e.js} +6 -6
  417. package/server/{state-mirror-Do7pag7W.js → state-mirror-BPXciz84.js} +3 -3
  418. package/server/stuck-remediation-DALieAkx.js +2 -0
  419. package/server/stuck-remediation-kta3KN7c.js +774 -0
  420. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-D_ICP7TI.js} +3 -3
  421. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-CojrFKb6.js} +2 -2
  422. package/server/{summary-fork-CZ88rhVx.js → summary-fork-DhhaFhxZ.js} +113 -30
  423. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  424. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  425. package/server/supervisor/pty-supervisor.js +3 -3
  426. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  427. package/server/supervisor-DSSWo4M2.js +2 -0
  428. package/server/{supervisor-D4v0WfiQ.js → supervisor-DqH-laVL.js} +4 -4
  429. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-LF8ZF_hc.js} +3 -3
  430. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-CGFF8uQI.js} +2 -2
  431. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-DSoOFUIV.js} +1 -1
  432. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-Lsx0jUUV.js} +2 -2
  433. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-DMwomEG1.js} +16 -16
  434. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-Cu0D6BYe.js} +6 -6
  435. package/server/{test-verdict-BWm3hgDj.js → test-verdict-9mvl7pQn.js} +1 -1
  436. package/server/{test-verdict-BWtRmdiR.js → test-verdict-oNSv1rVr.js} +2 -2
  437. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-CRSAkhBx.js} +1 -1
  438. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-McqCk2X7.js} +2 -2
  439. package/server/tmux-CYucGrTl.js +4 -0
  440. package/server/{tmux-BqXzRuaH.js → tmux-wnT_hg-s.js} +91 -19
  441. package/server/{token-CO3INKbh.js → token-BdfZLRg1.js} +2 -2
  442. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  443. package/server/token-util-DfUS3Lpp.js +3 -0
  444. package/server/{tracker-config-DVzhaUxO.js → tracker-config-tfAOWgng.js} +2 -2
  445. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-Dbg_pVZg.js} +2 -2
  446. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-DoQvQ6oJ.js} +1 -1
  447. package/server/{tunnel-DauSR-rs.js → tunnel-B1MNIgkL.js} +1 -1
  448. package/server/{tunnel-CwOnS-PB.js → tunnel-skW68j9B.js} +3 -3
  449. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  450. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  451. package/server/{types-DjpLVpsj.js → types-PW4zkxCM.js} +1 -1
  452. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  453. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-ly8ZwtfC.js} +5 -5
  454. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-BBaMwfdc.js} +5 -5
  455. package/server/{uat-train-DVUNW03P.js → uat-train-BBEiYSep.js} +0 -0
  456. package/server/{uat-train-COSy-vEX.js → uat-train-D7Ran2FB.js} +1 -1
  457. package/server/{validate-Dvv83iBx.js → validate-BYcBcBwg.js} +3 -3
  458. package/server/{validation-DlHafKzu.js → validation-BfG2jW5C.js} +9 -6
  459. package/server/{validation-BdCjzWLN.js → validation-nSrYiYvA.js} +1 -1
  460. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-Cmhgq4b_.js} +1 -1
  461. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-DglwaHke.js} +1 -1
  462. package/server/{verification-runner-DwP2fUEF.js → verification-runner-BEq5ZF-h.js} +53 -27
  463. package/server/{verification-runner-C6wdZda2.js → verification-runner-CFjAuv9u.js} +1 -1
  464. package/server/{vtt-parser-luerJpYT.js → vtt-parser-Va--tv27.js} +1 -1
  465. package/server/work-agent-prompt-BnhKNAg7.js +3 -0
  466. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CaD2ue8m.js} +14 -14
  467. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-0nJ-6UeA.js} +2 -2
  468. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-D8NEN5KD.js} +1 -1
  469. package/server/workflows-BtHRlFIm.js +2 -0
  470. package/server/{workflows-BYwR2aIN.js → workflows-C7mxM1qc.js} +114 -41
  471. package/server/{workspace-iTnTycOB.js → workspace-BAhMgMaO.js} +3 -3
  472. package/server/{workspace-B-QJa3Ps.js → workspace-Dbqv9ehn.js} +1 -1
  473. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-B_3kyyxJ.js} +4 -4
  474. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-Bpa3xoni.js} +1 -1
  475. package/server/{workspace-config-D0CavVtz.js → workspace-config-D-bNq2CF.js} +1 -1
  476. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-BrbX90Rm.js} +1 -1
  477. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CM8RCrSc.js} +17 -17
  478. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BEOwJSdK.js} +1 -1
  479. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-Cu6yfxBS.js} +2 -2
  480. package/server/{workspaces-BlpbOPZ7.js → workspaces-C7LAuZfe.js} +140 -709
  481. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  482. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  483. package/sync-sources/rules/agent-message-delivery.md +21 -14
  484. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  485. package/sync-sources/rules/pan-handoff-focus-limit.md +14 -5
  486. package/sync-sources/rules/ste-writing.md +17 -0
  487. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  488. package/sync-sources/rules/writing-style.md +3 -2
  489. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  490. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  491. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  492. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +230 -0
  493. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  494. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  495. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  496. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  497. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  498. package/sync-sources/skills/pan-handoff/SKILL.md +24 -6
  499. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  500. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  501. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  502. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  503. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  504. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  505. package/server/activity-logger-BejO16Am.js +0 -3
  506. package/server/agent-state-DH_-Jkua.js +0 -3
  507. package/server/agents-megfmQHM.js +0 -3
  508. package/server/archive-planning-C-H9cM_J.js +0 -2
  509. package/server/build-info-PQlh_Rhb.js +0 -2
  510. package/server/cli-TaZspPHS.js +0 -2
  511. package/server/cliproxy-36ncAXlu.js +0 -3
  512. package/server/context-layers-CF6zHws4.js +0 -4
  513. package/server/conversations-AnGJ5rtX.js +0 -3
  514. package/server/deacon-BEH-IY0v.js +0 -5
  515. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  516. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  517. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  518. package/server/delivery-cJM6zRjJ.js +0 -3
  519. package/server/deploy-queue-CmVBZEja.js +0 -2
  520. package/server/dist-VKBfkdi7.js +0 -3
  521. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  522. package/server/factory-D4V2wd_V.js +0 -717
  523. package/server/forge-CrP1L3i6.js +0 -2
  524. package/server/hume-1ubD_6O7.js +0 -3
  525. package/server/inspect-agent-CfxERkNt.js +0 -2
  526. package/server/merge-ops-DtHx17Vd.js +0 -2
  527. package/server/merge-rebase-BvB4UuNS.js +0 -2
  528. package/server/project-repos-BJiShUsN.js +0 -3
  529. package/server/providers-CStNGwze.js +0 -3
  530. package/server/public/assets/index-BFEwfmqX.js +0 -860
  531. package/server/public/assets/index-_USwyTAT.css +0 -1
  532. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  533. package/server/pull-requests-C1Cqp2yo.js +0 -2
  534. package/server/rally-CjayjUIl.js +0 -3
  535. package/server/resume-D7JuMCRQ.js +0 -3
  536. package/server/review-agent-BUNTVJK2.js +0 -2
  537. package/server/settings-DBWB1gsG.js +0 -2
  538. package/server/specialists-D8gsOCwh.js +0 -3
  539. package/server/specs-BqkrRnU9.js +0 -3
  540. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  541. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  542. package/server/supervisor-DX8VsPnb.js +0 -2
  543. package/server/tmux-CqNapnrr.js +0 -4
  544. package/server/token-util-Bu8bPF9f.js +0 -3
  545. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -42,20 +42,33 @@ allowed-tools:
42
42
  3. **Written tightening:** `docs/prds/planned/pan-dashboard-unified-redesign.md`
43
43
  §4.5 ("Color & Style Discipline") — the PAN-1148 "Always means / Never used
44
44
  for" table now folded into the guide.
45
- 4. **Tokens:** `src/dashboard/frontend/src/index.css` (light/dark color
46
- blocks, `@font-face` declarations, theme font tokens, and the
47
- `.display-xl`/`.display-lg`/`.eyebrow` Broadsheet utilities) and
48
- `src/dashboard/frontend/tailwind.config.js`. Conformance is exercised by
49
- `tests/e2e/styleguide-conformance.spec.ts`.
45
+ 4. **Tokens:** `src/dashboard/frontend/src/index.css` — the unscoped
46
+ `:root`/`.dark` blocks (Ledger's untouched default), `@font-face`
47
+ declarations, theme font tokens, the `.display-xl`/`.display-lg`/
48
+ `.eyebrow` Broadsheet utilities, and, after `.dark` closes, the PAN-3706
49
+ four-scope region carrying every color/surface/border/shadow/radius/
50
+ type/motion token plus the `.chip`/`.soft-card`/`.large-cta`/`.keycap`/
51
+ `.dot-metadata` component patterns — and `src/dashboard/frontend/
52
+ tailwind.config.js` (`boxShadow`, `fontFamily.mono-ui`, and the
53
+ `safelist` entries for classes not yet consumed by any `.tsx` file).
54
+ Conformance is exercised by `tests/e2e/styleguide-conformance.spec.ts`.
50
55
 
51
56
  ## Themes: Ledger (legacy) vs. Broadsheet (default)
52
57
 
53
58
  Overdeck ships two named design languages behind a single `ui.theme` setting
54
59
  (`~/.overdeck/config.yaml`, default `broadsheet`) and a `data-theme` attribute
55
- on `<html>`. **Ledger** is the pre-PAN-3410 style — DM Sans, flat
56
- `font-medium` cap, no display tier — now frozen: bug fixes only, never new
57
- patterns. **Broadsheet** is the active theme: Geist/Geist Mono, a tiered
58
- weight system, a display scale, and the new component vocabulary below.
60
+ on `<html>` (independent of the `.dark` class, which carries light/dark
61
+ color-scheme — the two axes never interact). **Ledger** is the pre-PAN-3410
62
+ style — DM Sans, flat `font-medium` cap, cool blue-gray neutrals, no display
63
+ tier — now frozen: bug fixes only, never new patterns. **Broadsheet** is the
64
+ active theme: Geist/Geist Mono, a tiered weight system, a display scale, and
65
+ the new component vocabulary below — plus, as of PAN-3706, its own warm
66
+ neutral color ramp, stepped surfaces, opaque borders, a shadow/elevation
67
+ scale, a smaller base radius, 13px/1.6 body type, and an ambient-wash
68
+ background in place of Ledger's noise film. Before PAN-3706 the color/
69
+ surface/elevation/radius/texture system was accidentally shared between both
70
+ themes (a font-only migration); it is not anymore — see "Color, surface, and
71
+ elevation now differ by theme" below.
59
72
 
60
73
  **The theme rule for new surfaces:** author against the Broadsheet
61
74
  vocabulary (`.display-xl`, `.display-lg`, `.eyebrow`, chips, soft cards,
@@ -83,6 +96,59 @@ utilities, no theming) if reached while Ledger is active. A component built
83
96
  with them is a Broadsheet-only component by construction; don't reach for
84
97
  them on a surface that must still render under Ledger.
85
98
 
99
+ ## Color, surface, and elevation now differ by theme (PAN-3706)
100
+
101
+ The color system is no longer identical between themes (it was, pre-PAN-3706
102
+ — see guide §2/§4). `:root`/`.dark` in `index.css` stay the untouched Ledger
103
+ default; Broadsheet's real values live in a later region that overrides them
104
+ per the four-scope contract below. What's still shared: signal-color
105
+ *semantics* (what `--destructive`/`--warning`/etc. mean) and the badge tint
106
+ *formula* (8%/32%). What now differs: the neutral ramp (warm HSL vs cool
107
+ gray), `--background`/`--card`/`--popover` step apart under Broadsheet
108
+ instead of collapsing to one flat color, `--border`/`--input` are opaque
109
+ under Broadsheet instead of near-invisible `color-mix()`, `--radius` itself
110
+ (10px Ledger / 6px Broadsheet — not just the badge tier), a role-named
111
+ `--shadow-sm/md/lg/xl/card/floating/overlay` scale that actually resolves to
112
+ something visible on dark surfaces, body type (13px/1.6/antialiased under
113
+ Broadsheet vs. browser default under Ledger), and the background treatment
114
+ (Ledger keeps the fractal-noise film; Broadsheet swaps it for an ambient
115
+ corner wash via a new `--wash` token — not a retargeted `--accent`, which
116
+ stays the hover-surface token in both themes). New tokens: `--primary-ink`
117
+ (text-safe accent), `--body-foreground`/`--faint-foreground` (rounding
118
+ `--foreground`/`--muted-foreground` out to a four-tier ramp), `--wash`, a
119
+ `--type-size-*`/`--type-leading-*`/`--type-tracking-*` vocabulary (defined,
120
+ not yet adopted by components), and `--ease-*`/`--duration-*` motion tokens
121
+ (same — defined, not yet wired into existing animations). `--font-mono-ui`
122
+ splits UI-chrome monospace (labels, IDs, timestamps) from `--font-mono`
123
+ (code + the eyebrow exception) — Ledger resolves both to the same SF Mono
124
+ stack, Broadsheet gives UI-mono a tighter system stack instead of Geist
125
+ Mono's code-tuned metrics.
126
+
127
+ **The four-scope selector contract** is what makes every one of those tokens
128
+ resolve correctly by theme. Because `.dark` and `data-theme` both live on
129
+ `<html>` at once, and because Settings → Appearance nests a `[data-theme]`
130
+ scope inside the ambient document for its comparison specimens, a
131
+ theme-varying token needs **four** blocks, placed after `:root`/`.dark` in
132
+ source order (equal-specificity attribute selectors win on source order, not
133
+ specificity):
134
+
135
+ ```
136
+ [data-theme="ledger"] — light, restate today's value
137
+ [data-theme="broadsheet"] — light, new value
138
+ .dark[data-theme="ledger"], .dark [data-theme="ledger"] — dark, restate today's value
139
+ .dark[data-theme="broadsheet"], .dark [data-theme="broadsheet"] — dark, new value
140
+ ```
141
+
142
+ Same-element (`.dark[data-theme=...]`) matches `<html>` itself; descendant
143
+ (`.dark [data-theme=...]`) matches a nested Appearance-picker specimen —
144
+ both are required or a nested specimen inherits the wrong theme. For a
145
+ non-color-token rule (a `body` background, a utility class), gate it on a
146
+ custom property with a `var()` fallback rather than a bare descendant
147
+ selector — `--badge-radius` and the `.display-xl`/`.display-lg`/`.eyebrow`
148
+ properties are the established examples; a descendant selector matches
149
+ through *any* ancestor with the attribute and breaks nesting, a custom
150
+ property cascades by DOM proximity and doesn't. Full mechanics: guide §4a.
151
+
86
152
  ## The rules agents violate most (memorize these)
87
153
 
88
154
  ### Typography — Ledger (legacy baseline, verbatim)
@@ -144,9 +210,12 @@ purple = specialist verb, cyan = money, neutral = everything else.**
144
210
  (`bg-{signal}/8 border-{signal}/32 text-{signal}-foreground`) — identical
145
211
  in both themes (D-11, unchanged). No pills (`rounded-full`) for status
146
212
  badges.
147
- - Radius: `rounded-sm` under Ledger, `rounded-md` under Broadsheet — the
148
- **one** deliberate radius change in the whole theme revision. Nothing else
149
- about the badge formula differs between themes.
213
+ - Radius: `rounded-sm` under Ledger, `rounded-md` under Broadsheet — the one
214
+ deliberate radius-*tier* change from PAN-3410, layered on top of PAN-3706's
215
+ smaller Broadsheet base `--radius` (10px Ledger / 6px Broadsheet), which
216
+ now also shrinks every other `rounded-*` utility computed from it (buttons,
217
+ cards, dialogs — see "Color, surface, and elevation" above). Nothing else
218
+ about the badge *formula* (8%/32% tint) differs between themes.
150
219
  - Pick ONE indicator pattern per context — don't mix dots + badges + colored
151
220
  text for the same concept in one view.
152
221
 
@@ -186,9 +255,15 @@ hardcoded hex (#22c55e, #ef4444, …) → semantic tokens
186
255
  slate-* grays (cold) → neutral-* (warm) — everywhere
187
256
  ```
188
257
 
189
- Surfaces: depth via tonal layering (`--card`, `--card-2`), not shadows;
190
- borders `white/6%` dark, `black/5%` light; light-mode cards are borderless
191
- (ambient shadow instead).
258
+ Surfaces: depth via tonal layering (`--card`, `--card-2`), not shadows —
259
+ shadows stay reserved for floating elements only (dialogs, dropdowns,
260
+ tooltips, popovers, dragged items), never inline cards/panels. Border/wash
261
+ values are theme-scoped and no longer share one description: Ledger keeps
262
+ low-alpha `color-mix()` borders (`white/6%` dark, `black/8%` light,
263
+ near-invisible by design, light-mode cards borderless with an ambient
264
+ shadow instead) and the noise-film texture; Broadsheet uses opaque HSL
265
+ borders and an ambient corner wash instead (see "Color, surface, and
266
+ elevation" above).
192
267
 
193
268
  ### Brand mark — the control ring (guide §19)
194
269
 
@@ -78,8 +78,13 @@ RESPONSE=$(printf '%s' "$INPUT" | jq -r '
78
78
  [ -n "$RESPONSE" ] || RESPONSE=''
79
79
 
80
80
  if [ "$TOOL_NAME" = 'mcp__linear__authenticate' ]; then
81
+ # Linear's hosted MCP server (mcp.linear.app) returns its authorization URL
82
+ # as https://mcp.linear.app/authorize?…; the older form was
83
+ # https://linear.app/oauth/authorize?…. Match both — a regex that only
84
+ # knows one host silently emits required with a null URL and the banner
85
+ # waits forever (observed 2026-08-15).
81
86
  AUTH_URL=$(printf '%s\n' "$RESPONSE" \
82
- | grep -Eo 'https://linear\.app/oauth/authorize[^"[:space:]<>]*' 2>/dev/null \
87
+ | grep -Eo 'https://(mcp\.linear\.app/authorize|linear\.app/oauth/authorize)[^"[:space:]<>]*' 2>/dev/null \
83
88
  | sed -n '1p')
84
89
  emit_required "$AUTH_URL"
85
90
  exit 0
@@ -1,19 +1,26 @@
1
1
  ---
2
2
  scope: universal
3
3
  ---
4
- ### Message running agents with `pan tell` — never raw tmux keystroke injection
4
+ ### Message Overdeck-managed agents with `pan tell`, not raw tmux keystrokes
5
5
 
6
- To send a message to a running agent, conversation, or the flywheel, use
7
- `pan tell <agent-or-session> "<message>"`. It routes through the delivery door
8
- (`deliverAgentMessage`: PTY supervisor → channels → tmux fallback), echoes into
9
- the transcript, and works regardless of harness. If it reports the target is
10
- not running, verify with `tmux -L overdeck list-sessions` and check your
11
- `OVERDECK_HOME` (a polluted shell env is the usual cause — prefix
12
- `OVERDECK_HOME=~/.overdeck` if in doubt).
6
+ To send a message to a running **Overdeck-managed** agent, conversation, or
7
+ the flywheel, use `pan tell <agent-or-session> "<message>"`. It routes through
8
+ the delivery door (`deliverAgentMessage`: PTY supervisor → channels → tmux
9
+ fallback), echoes into the transcript, and works regardless of harness. If it
10
+ reports the target is not running, verify with `tmux -L overdeck list-sessions`
11
+ and check your `OVERDECK_HOME` (a polluted shell env is the usual cause —
12
+ prefix `OVERDECK_HOME=~/.overdeck` if in doubt).
13
13
 
14
- Do NOT drive another session's terminal directly with `tmux paste-buffer` or
15
- `tmux send-keys` — keystroke injection is deny-listed in permission settings
16
- and will be refused. That deny-list is intentional; `pan tell` is the
17
- sanctioned path. (The `load-buffer`/`paste-buffer` pattern remains correct
18
- *inside Overdeck source code* implementing the delivery fallback — see the dev
19
- async-tmux rule.)
14
+ Do not drive another **Overdeck-managed** session with raw `tmux send-keys` /
15
+ `tmux paste-buffer` when `pan tell` can reach it — raw keystrokes bypass the
16
+ transcript echo and the PTY supervisor, so the message leaves no trace and can
17
+ interleave with the harness's own input handling. Scope of the mechanical
18
+ enforcement (PAN-1084): pipeline **work agents** are hook-blocked from
19
+ injecting keystrokes into any session other than their own (this exists to
20
+ stop self-approval of another agent's permission prompts). Conversations and
21
+ human-directed sessions are NOT blocked.
22
+
23
+ Driving a session that Overdeck does not manage (e.g. the operator's own tmux
24
+ session on the default socket, at their direction) with `send-keys` /
25
+ `paste-buffer` is legitimate — use the async `load-buffer` + `paste-buffer` +
26
+ delayed Enter pattern from the async-tmux rule so the text lands reliably.
@@ -7,13 +7,13 @@ When you spawn a supervised agent (`pan handoff`, or any spawned agent that may
7
7
 
8
8
  An agent whose cwd is the primary repo can `git checkout -b` and commit there, which silently **drifts `main` onto a feature branch** and lets the agent commit straight to `main` — the same write-to-main hazard as PAN-2204. Your own later commits then land on the wrong branch.
9
9
 
10
- For `pan handoff`, pass `--cwd`:
10
+ For `pan handoff`, pass `--cwd` as an **absolute path to an existing directory under your home directory** — the server rejects relative paths, `/tmp` paths, and not-yet-created directories with `Invalid cwd`:
11
11
 
12
12
  ```bash
13
- git worktree add ../hoff-<slug> main # if you don't already have one
14
- pan handoff --model <m> --cwd ../hoff-<slug> --project <key> self "Read .pan/handoff-brief.md FIRST. <goal>"
13
+ git worktree add "$HOME/Projects/hoff-<slug>" main # if you don't already have one
14
+ pan handoff --model <m> --cwd "$HOME/Projects/hoff-<slug>" --project <key> self "Read .pan/handoff-brief.md FIRST. <goal>"
15
15
  ```
16
16
 
17
- Project association inherits automatically from a project-scoped source; use `--project <key>` to override it or associate an unscoped source. Point `--cwd` at any isolated checkout — anything but the primary.
17
+ Run the `pan handoff` command itself from your project directory (not from the `--cwd` target or `/tmp` — sandboxed harnesses block network there). Project association inherits automatically from a project-scoped source; use `--project <key>` to override it or associate an unscoped source. Point `--cwd` at any isolated checkout — anything but the primary.
18
18
 
19
19
  **Why:** a `pan handoff` investigation run in the primary worktree branched + committed there, silently drifting `main` and stranding later commits on the wrong branch (2026-07-01). Isolation keeps every spawned agent's commits on its own branch, where review/merge can gate them.
@@ -1,16 +1,25 @@
1
1
  ---
2
2
  scope: universal
3
3
  ---
4
- ### `pan handoff` focus is capped at 500 chars — put long briefs in a file
4
+ ### `pan handoff` focus: keep it short; the hard ceiling is 10,000 chars
5
5
 
6
- The `pan handoff` **focus** (the trailing text after `self`/`<conv>`) is hard-capped at **500 characters**. A longer focus is rejected outright — the CLI prints `Focus is N characters — the limit is 500` and **creates no conversation**. Do not try to cram a full brief into the focus.
6
+ The `pan handoff` **focus** (the trailing text after `self`/`<conv>`) is a steering
7
+ statement, not the brief. Since PAN-3737 the hard cap is **10,000 characters**
8
+ (multi-line focus is allowed), so accidental rejection is effectively gone — but a
9
+ short focus still works better: it becomes the conversation title and steers the
10
+ handoff author, while detail belongs in the transcript or a brief file. Pass
11
+ `--title "<title>"` to name the successor explicitly instead (PAN-3768) — useful
12
+ when the focus is a file pointer.
7
13
 
8
- For anything longer than one line, write the full brief to a file in the target cwd and point a short focus at it:
14
+ For a full brief, write it to a file in the target cwd and point the focus at it:
9
15
 
10
16
  ```bash
11
17
  pan handoff self "Read .pan/handoff-brief.md FIRST and follow it exactly. <one-line goal>"
12
18
  ```
13
19
 
14
- Also pass **`self`** (or a real conversation id) **before** the focus text. Omitting it makes the CLI read your focus as a conversation name and fail with `Conversation not found`.
20
+ Also pass **`self`** (or a real conversation id) **before** the focus text. Omitting it
21
+ makes the CLI read your focus as a conversation name and fail with `Conversation not found`.
15
22
 
16
- **Why:** agents repeatedly overrun the 500-char focus and the handoff silently fails to spawn (this has happened on essentially every handoff attempt). A file-backed brief makes the handoff reliable regardless of length, and keeps the full instructions in the new conversation's cwd where it can re-read them.
23
+ **Why:** the old 500-char cap rejected the handoff *after* the agent had done the work,
24
+ on essentially every long focus, burning retry loops. The cap is now a sanity ceiling
25
+ only; the file-backed brief remains the reliable pattern for long instructions.
@@ -0,0 +1,17 @@
1
+ ---
2
+ scope: universal
3
+ ---
4
+ ### Write clear, simple prose — the STE clarity standard
5
+
6
+ Respond in clear, plain, concise, human-readable prose by default. "The
7
+ Elements of Style" (Strunk & White) is the baseline register.
8
+
9
+ On that baseline, use the core principles of ASD-STE100 Simplified Technical
10
+ English as a clarity standard. Use active voice, simple verbs, and short
11
+ sentences. Avoid idioms, slang, and unnecessary jargon. Give each sentence one
12
+ main idea or instruction. Put conditions before dependent actions. Use one
13
+ consistent term for each concept. Prefer 20 words or fewer for procedures and
14
+ 25 words or fewer for descriptions when this preserves accuracy and natural
15
+ flow. Do not force formal STE compliance unless the user asks for it. Keep
16
+ technical identifiers, paths, commands, names, units, prices, and numbers
17
+ exact.
@@ -5,7 +5,7 @@ scope: universal
5
5
 
6
6
  Spawn work agents only through the Overdeck CLI — `pan start <id>`, `pan swarm <id>`, `pan plan <id>`. NEVER spawn a *work* agent via Claude Code's `Agent`/subagent tool.
7
7
 
8
- **Why:** `pan`-spawned agents are registered with Overdeck — a `~/.overdeck/agents/agent-<id>/state.json` carrying `issueId`, a tmux session on the `overdeck` socket, and (for swarms) a swarm-runtime entry. The dashboard's resource-discovery service nests them under their issue with openable terminals, and the review/test/ship pipeline can manage them.
8
+ **Why:** `pan`-spawned agents are registered with Overdeck — a `~/.overdeck/agents/agent-<id>/state.json` carrying `issueId` and a tmux session on the `overdeck` socket. The dashboard nests them under their issue with openable terminals, and the review/test/ship pipeline can manage them.
9
9
 
10
10
  Agents spawned via the `Agent` tool run as ephemeral subagents inside the caller's session — no state file, no `issueId`, no `overdeck`-socket session. The dashboard cannot discover them; they cannot be paused, resumed, reviewed, merged, or recovered through the pipeline.
11
11
 
@@ -13,5 +13,6 @@ Agents spawned via the `Agent` tool run as ephemeral subagents inside the caller
13
13
 
14
14
  - **work** (implementation), **plan**, **review/test/ship** → always `pan`.
15
15
  - Claude Code's built-in `Explore` / `general-purpose` subagents are fine for *throwaway code investigation* — they produce no deliverable and are not work agents.
16
+ - A swarm foreman may perform a small, high-confidence item in its own context or use a registered standing tier session. The foreman still owns the claim, verification, commit, push, and task transition; an ephemeral subagent never becomes an independent slot.
16
17
 
17
18
  Let Cloister route models — do not pass `--model` unless explicitly asked.
@@ -18,8 +18,9 @@ Rules:
18
18
  4. **Don't shred connected reasoning into bullets.** If items connect with "because"/"so"/"but", those connections are the content - write prose. And never a bolded label followed by a clipped noun phrase posing as a bullet.
19
19
  5. **Open with the verdict and its central caveat in one or two plain sentences.** Not a bolded headline.
20
20
  6. **Conversational but not dramatic.** Use contractions (it's, you'd, don't). Say "so" and "but", not "therefore" and "however". Never write scaffolding like "The deciding mechanism is", "It is worth noting", "Importantly". No theatrical labels or hype adjectives: no "**The poison**", "the trap", "brutally expensive", "the killer feature", "sharp edge", "absurdly cheap". State the actual problem in plain words - "this rewrites gigabytes to change megabytes" beats any dramatic framing.
21
- - No staccato, short dramatic sentences. Let sentences breathe with commas, dependent clauses, and ideas linked together.
21
+ - Vary sentence length and shape, and connect related ideas. A run of same-shape sentences, automatic pairs and triads, or setup/payoff framing reads as generated - break the pattern.
22
22
  - No cheesy setup phrases that introduce a point instead of stating it. Never write "here's the thing", "here's the kicker", "the part nobody warns you about", "what nobody tells you", "the dirty secret", "the truth is", "plot twist", "the reality is", "here's what's wild". State the claim directly.
23
- - No contrastive "not just X, but Y" structure or its variants ("it's not just X, it's Y", "not only X but also Y"). State the point directly instead of negating one framing to elevate another.
23
+ - No contrastive "not just X, but Y" structure or its variants ("it's not just X, it's Y", "not only X but also Y"), and no repeated negative openings ("Not X. Not Y."). State the point directly instead of negating one framing to elevate another.
24
+ - No filler intensifiers, corporate verbs, needless hedges, or performed enthusiasm. Prefer verbs to noun piles. Write for the spoken voice.
24
25
  7. **No compression.** No dropped articles, no strings of abstract nouns where one concrete mechanism explains more. Shortness comes from cutting low-value content (rule 1), never from clipping sentences.
25
26
  8. **End with a bottom line only when the answer weighed a real decision.** One plain-prose sentence: the call plus the condition that would flip it. Short factual or confirmation answers just end - no formulaic closer.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: skill-creator
2
+ name: claude-skill-creator
3
3
  description: Guide for creating effective Claude Code skills. Use when users want to create a new skill, update an existing skill, or need guidance on skill best practices. Triggers on requests like "create a skill", "make a new skill", "help me build a skill", "skill development", or "extend Claude's capabilities".
4
4
  license: Apache 2.0 (based on Anthropic's skills repo)
5
5
  ---
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env python3
1
+ #!/usr/bin/env python3
2
2
  """
3
3
  Skill Initializer - Creates a new skill from template
4
4
 
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env python3
1
+ #!/usr/bin/env python3
2
2
  """
3
3
  Skill Packager - Creates a distributable .skill file
4
4
 
@@ -0,0 +1,230 @@
1
+ ---
2
+ name: pan-gauntlet-loop
3
+ description: >-
4
+ Run a Gauntlet Loop — fan out builder sub-agents per area, judge each with
5
+ a SEPARATE harsh critic in a blind A/B against a named reference bar, keep
6
+ looping until every area wins, and track it all on a live progress page.
7
+ Use when the user wants to take any project, feature, or domain to an
8
+ extreme quality tier ("make it AAA", "at the level of <reference>",
9
+ "utterly perfect", "run the gauntlet", "gauntlet loop"). Works for any
10
+ domain — games, UI, CLIs, APIs, libraries, docs, performance, writing.
11
+ triggers:
12
+ - gauntlet loop
13
+ - run the gauntlet
14
+ - gauntlet
15
+ - AAA quality pass
16
+ ---
17
+
18
+ # Gauntlet Loop
19
+
20
+ Take any domain to a named quality bar with a builder/critic loop: fan out a
21
+ builder sub-agent per area, judge each area with a **separate** harsh critic
22
+ (fresh context, blind A/B against the reference, binary verdict), feed defects
23
+ back, and loop until every area is WOWED. A live progress page tracks every
24
+ area, screenshot, verdict, and defect list.
25
+
26
+ Origin: Matt Shumer's gauntlet prompt; hardened by the operational lessons of
27
+ runs #1–#2 (folded into the phases below — every rule exists because its
28
+ absence cost an iteration).
29
+
30
+ ## Phase 0 — Intake: fill the slots, ask about the gaps
31
+
32
+ **Run-file shortcut:** a run file (e.g. `gauntlet/RUN-<CODENAME>.md`) may
33
+ pre-fill every slot and carry the operator's approval in writing. When one
34
+ exists and the operator pointed you at it, the run file IS the contract —
35
+ skip intake questions and the Phase-1 approval gate, and follow the run
36
+ file wherever it is more specific than this skill.
37
+
38
+ Otherwise, extract these slots from the user's request. For every slot that is
39
+ missing or vague, ask via AskUserQuestion — batch up to 4 questions per call,
40
+ each self-contained (the operator may answer from a dashboard dialog without
41
+ the transcript: state the situation, then ask). Never guess the mission.
42
+
43
+ | Slot | Meaning | If missing |
44
+ |---|---|---|
45
+ | THING | What to build / enhance / fix | Ask. Never proceed without it. |
46
+ | REFERENCE | The named quality bar | Propose 2–3 candidates that are **named, fetchable, comparable** (below); ask the user to pick one. |
47
+ | AREAS | The fan-out split | Propose a split from THING (see `references/domains.md`); ask to confirm or edit. |
48
+ | TIER | Quality shorthand | Default: "shipped commercial quality at the level of REFERENCE". |
49
+ | LOOK | The committed direction (art / UX / language / architecture) | Seed from repo conventions; confirm in one AskUserQuestion option set. |
50
+ | STACK | Stack constraints | Default: "this repo, unchanged". Ask only if the request implies a change. |
51
+ | SCOPE | Explicit exclusions | If THING is broad, ask "what is out of bounds on this pass?" |
52
+ | CHECK | How the critic inspects the work | Derive from the domain (`references/domains.md`) — screenshots, CLI transcripts, benchmarks, rendered docs. |
53
+
54
+ REFERENCE is the load-bearing slot. Before accepting it, verify it is:
55
+
56
+ - **Named** — a specific thing ("Civilization VII", "stripe.com's docs"),
57
+ not a category ("a good strategy game").
58
+ - **Fetchable** — the critic can screenshot, read, run, or open it. Fetch the
59
+ reference evidence during setup (below); if you cannot, say so and pick
60
+ another bar with the operator.
61
+ - **Comparable** — the subject's evidence and the reference's evidence can sit
62
+ side by side for a judge to pick one.
63
+
64
+ ## Phase 1 — Setup (before any builder launches)
65
+
66
+ 1. **Isolate the work.** Default: `git worktree add ../<repo>-gauntlet -b
67
+ gauntlet-loop-pass` and run the whole gauntlet there. Offer the current
68
+ checkout instead only when the operator asked to enhance in place.
69
+ 2. **Scaffold `gauntlet/` in the worktree:**
70
+ - `gauntlet/index.html` — copy `{baseDir}/assets/gauntlet-index.html`
71
+ **verbatim** (it renders from status.json; never edit per project).
72
+ - `gauntlet/PROMPT.md` — fill `{baseDir}/assets/PROMPT.template.md` with
73
+ the slots. This is the mission prompt every agent reads.
74
+ - `gauntlet/status.json` — schema below; all areas NOT STARTED.
75
+ - `gauntlet/shots/`, `gauntlet/notes/` — empty dirs.
76
+ 3. **Write the judging contracts in `refs/`:**
77
+ - `refs/STYLE.md` — fill `{baseDir}/assets/STYLE.template.md`: one page,
78
+ the committed direction. Every builder and every critic works from it.
79
+ - `refs/REFERENCE-BAR.md` — fill
80
+ `{baseDir}/assets/REFERENCE-BAR.template.md`: the verdict question,
81
+ automatic failures, scoring dimensions, verdict JSON format.
82
+ - `refs/press/` — the fetched reference evidence (screenshots, transcripts,
83
+ docs). Gitignore third-party media.
84
+ 4. **Build seed/test hooks NOW, not mid-loop.** Seedable state is
85
+ load-bearing for critique: if reaching a state takes hours of wall-clock
86
+ (filled stockpiles, advanced time, specific data), the loop can't be
87
+ photographed. Add the hook during setup. Never restart a shared dev
88
+ server mid-run — hot-reload kills other agents' verification sessions.
89
+ 5. **Serve the progress page:** from `gauntlet/`, run
90
+ `python3 -m http.server <port>` in the background and report the URL.
91
+ (Browsers block `fetch()` from `file://` — the page needs HTTP.)
92
+ 6. **Operator approval gate.** Show the filled `gauntlet/PROMPT.md` to the
93
+ operator and get an explicit go before the first fan-out. The gauntlet
94
+ burns real tokens; the mission it burns them on is the operator's call.
95
+ (Skipped when a run file already carries the approval — see Phase 0.)
96
+
97
+ ### status.json schema
98
+
99
+ ```json
100
+ {
101
+ "project": "<display title>",
102
+ "tagline": "<one-line mission flavor>",
103
+ "updated": "<ISO>",
104
+ "pass": "<branch name>",
105
+ "areas": {
106
+ "<area-key>": {
107
+ "title": "<human title>",
108
+ "status": "NOT STARTED",
109
+ "iteration": 0,
110
+ "verdict": null,
111
+ "defects": [],
112
+ "note": "<one-line current state>",
113
+ "updated": "<ISO>"
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ `verdict` is `"WOWED"`, `"NOT_YET"`, or `null`. `defects` holds the top ≤5
120
+ (strings, or `{"element","fix"}` objects). The page polls it every 5s.
121
+
122
+ ## Phase 2 — The loop (per area, areas in waves)
123
+
124
+ 1. **Wave plan — parallelize to the file-ownership limit.** Assign each area
125
+ an exact file-ownership map, restated in every agent prompt. Concurrent
126
+ agents in one worktree WILL clobber shared files, so areas that share
127
+ files run in the same wave **serially** — but that constraint is
128
+ per-file, not global: prefer SPLITTING areas until their maps are
129
+ disjoint, and run everything disjoint **concurrently**. Films and
130
+ critics for different areas are read-only-ish and parallelize freely.
131
+ Keep the orchestrator thin; the fan-out does the work.
132
+ 2. **Build.** Spawn a builder sub-agent for the area with its ownership map,
133
+ the mission prompt, and the current defect list as its work order.
134
+ Builders never commit and never judge their own work; the orchestrator
135
+ reviews and commits per area with path-scoped `git add` — `git add -A`
136
+ would scoop another in-flight agent's half-done work.
137
+ 3. **Capture evidence at presentation quality.** Launch the real thing and
138
+ drive it — Playwright for UI, the CLI at its command, the benchmark at
139
+ its load. Screenshots at 1920×1080 with realistic in-fiction data (a
140
+ visible test username in a shot is a defect); keep dev tooling out of
141
+ frame. Save the canonical shot to `gauntlet/shots/<area-key>.png` (or
142
+ transcript/benchmark to notes/). Headless gotchas: black frames in
143
+ headless Chromium are a renderer-context issue, not scene code — try
144
+ default launch flags before forcing software rasterization; canvas/WebGL
145
+ code must survive a React StrictMode double-mount; software-rasterized
146
+ FPS is CPU numbers — NEVER the real perf verdict. Perf claims need a
147
+ headed capture.
148
+ 4. **Critique.** Spawn the critic — ALWAYS a separate sub-agent from the
149
+ builder, fresh context, high-tier model (see routing below). The critic
150
+ is blind to the builder's effort, reasoning, and transcript — but it is
151
+ NOT tool-poor: it gets the evidence + `refs/`, and it MAY run its own
152
+ probes and instruments against the running app, the repo, or the
153
+ benchmark to verify or refute any claim (run-#2 precedent: critic-built
154
+ instruments caught deploy-saving defects the builder's own numbers
155
+ missed). It judges blind per `refs/REFERENCE-BAR.md` — literally side by
156
+ side, which one looks better — and returns the verdict JSON. Verdicts
157
+ are binary (WOWED / NOT_YET + every failing element with a concrete
158
+ fix), never a score out of 10. The critic tags each defect with the
159
+ owning area so cross-area defects merge into the right queue. Save to
160
+ `gauntlet/notes/critique-<area>-iter<n>.json`.
161
+ 5. **Update the dashboard at every transition** — agent launched / landed /
162
+ filming / awaiting critique / verdict — not just after critiques. A
163
+ stale dashboard is a bug. The page mutates cards in place; regenerated
164
+ media needs cache-busting or browsers replay stale files.
165
+ 6. **NOT_YET → the defect list becomes the next iteration's work order** for
166
+ the same area. WOWED → area done, and prior WOWED quality is a FLOOR no
167
+ later iteration may regress. **No fixed round count**: the exit is
168
+ winning, or the operator stopping the run.
169
+ 7. **Test reconciliation is its own queued item.** Big visual/structural
170
+ changes break existing test selectors; don't let a builder burn its run
171
+ fixing them. Wave gates are: build passes, evidence captured, critique
172
+ filed. Broken-suite repair gets its own area or follow-up.
173
+ 8. **Cadence artifacts.** Commit critique JSONs and status.json to the
174
+ branch — the pass history is reviewable. Gitignore large third-party
175
+ reference media and regenerable sources (keep shipped assets committed).
176
+
177
+ ## Phase 3 — Stop conditions
178
+
179
+ - **The operator is the brake.** The loop does not finish on its own; when
180
+ they say stop, stop, commit cleanly, and report state.
181
+ - **All areas WOWED** → final report: per-area verdicts and iteration counts,
182
+ the commit log, the dashboard URL, and anything deferred to a later pass.
183
+
184
+ ## The four ways the loop silently fails
185
+
186
+ 1. **Vague bar** — the critic invents a comparison and approves everything.
187
+ The bar must be named, fetchable, comparable.
188
+ 2. **Builder judging its own work** — the critic must be a fresh agent with
189
+ zero knowledge of the builder's effort or reasoning trail.
190
+ 3. **Soft critic** — scores out of 10 drift upward and everything passes.
191
+ Binary verdict + concrete fixes only.
192
+ 4. **Fixed round count** — "3 iterations" ships a prototype. The exit is
193
+ WOWED, or the operator stopping the run.
194
+
195
+ Restate all four in every agent prompt — they are the whole game.
196
+
197
+ ## Sub-agents, model routing, and tools
198
+
199
+ - Fan out with the Agent tool inside this conversation. Gauntlet builders and
200
+ critics are ephemeral conversation sub-agents — the "work agents run through
201
+ `pan`" rule governs managed pipeline issues, not this loop. If the gauntlet
202
+ uncovers work that belongs in the managed pipeline, file an issue and route
203
+ it through `pan start`.
204
+ - **Model ladder — cheapest that clears the bar, escalate on evidence:**
205
+ **Sonnet** is the default for as much as possible — builders, films,
206
+ mechanical implementation, asset processing, test runs. **Opus** when
207
+ necessary — every critic by default, design-heavy build areas, and
208
+ problems a Sonnet attempt just fumbled. **Fable** for the really tricky
209
+ stuff only — areas that keep failing across iterations, deep root-cause
210
+ mysteries, and the final full-frame composition judgment. Escalate a
211
+ LANE's tier after failures, not preemptively; de-escalate when the hard
212
+ part is done. Critics are where model quality pays — never cheap out on
213
+ the judge.
214
+ - **Distribute and parallelize as much as possible.** Many cheap agents in
215
+ flight beat one expensive agent in series; the wave plan's file-ownership
216
+ maps are the only serialization constraint.
217
+ - **No tool restrictions.** Every gauntlet agent may use whatever tools the
218
+ session has — browsers/Playwright, WebSearch/WebFetch, image tooling,
219
+ profilers, DB clients. "Blind critic" restricts what the critic is TOLD
220
+ (nothing from the builder), never what it may DO.
221
+ - Sub-agent fan-out requires a harness with the Agent tool. GPT-routed
222
+ claude-code sessions cannot spawn sub-agents — run the gauntlet from a
223
+ Claude session.
224
+
225
+ ## References
226
+
227
+ - `references/domains.md` — per-domain CHECK (evidence capture), sample area
228
+ splits, automatic-failure lists, and storefront-test phrasing.
229
+ - `assets/` — `gauntlet-index.html` (progress page), `PROMPT.template.md`,
230
+ `STYLE.template.md`, `REFERENCE-BAR.template.md`.