@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
@@ -0,0 +1,92 @@
1
+ # The Gauntlet — <THING> at the level of <REFERENCE>
2
+
3
+ <Fill every <ANGLE> slot from the intake, then delete this line. The three
4
+ paragraphs below ARE the mission — keep them first, keep them plain. Anyone
5
+ (model or human) who reads only them must know exactly what we're doing and
6
+ why. Everything after "The machinery" is supporting detail.>
7
+
8
+ Build <THING — one sentence naming the subject and where it lives (this repo
9
+ / this package / this site)> at the level of <REFERENCE — the named quality
10
+ bar>. It should be utterly perfect: <LOOK — 2–4 clauses painting the
11
+ committed direction, concrete enough that "wrong even if it's pretty" is
12
+ checkable>, with every single thing done at <TIER — e.g. shipped-commercial>
13
+ quality, from <AREA_1>, to <AREA_2>, … to anything else you could think of.
14
+
15
+ Fan out sub-agents and have each one tackle a single area individually so
16
+ that <THING> is utterly perfect. Loop on each area: build it, capture real
17
+ evidence of the result (<CHECK — e.g. screenshots / CLI transcripts /
18
+ benchmarks>), and have a SEPARATE sub-agent check that evidence — a really
19
+ harsh critic, never the agent that built it — to ensure it is <TIER>. If it
20
+ isn't <TIER>, the critic's defect list goes back to the builder and the area
21
+ keeps going.
22
+
23
+ Don't stop until every area's critic is utterly wowed when the result is
24
+ compared with <REFERENCE>. The critic literally puts our evidence and
25
+ <REFERENCE>'s side by side, blind, and says which one is better — WOWED
26
+ means it picked ours without hesitation. Do this in <STACK — normally "this
27
+ repo, stack unchanged">. Loop until it's utterly perfect.
28
+
29
+ ---
30
+
31
+ ## The machinery (how the loop actually runs)
32
+
33
+ Everything below exists to serve the three paragraphs above. Where they
34
+ conflict, the paragraphs win.
35
+
36
+ ### Why it works — four rules that are the whole game
37
+
38
+ 1. **The bar is a real named thing** the critic can open — not an adjective.
39
+ 2. **The builder never grades its own work** — every critic is a fresh
40
+ sub-agent with no knowledge of the builder's effort or reasoning.
41
+ 3. **The verdict is binary** — WOWED or NOT_YET with concrete fixes. Never
42
+ a score; scores drift upward and everything passes.
43
+ 4. **No fixed round count** — the exit is every critic WOWED, or the
44
+ operator stopping the run.
45
+
46
+ ### Setup state (the orchestrator has already done this)
47
+
48
+ - All work on branch `<BRANCH>` in worktree `<WORKTREE PATH>` — never the
49
+ primary checkout.
50
+ - `refs/STYLE.md` is the committed direction; `refs/REFERENCE-BAR.md` is the
51
+ critic's judging contract; `refs/press/` holds the fetched reference
52
+ evidence the blind comparisons run against.
53
+ - `gauntlet/` holds the live progress page: `status.json` (the state of
54
+ every area), `shots/` (canonical evidence per area), `notes/` (every
55
+ critique JSON). Served at `<DASHBOARD URL>`.
56
+ - <DESIGN AUTHORITY — e.g. PRD.md / docs/ / this prompt> is the design
57
+ authority. <List binding sections, if any.>
58
+
59
+ ### Ground rules
60
+
61
+ - The orchestrator reviews and commits per area with path-scoped `git add`;
62
+ agents do not commit.
63
+ - Scope: <IN — the only surfaces this pass touches>. Deferred: <OUT —
64
+ explicit exclusions>.
65
+ - Model routing: design-heavy areas and ALL critics → frontier-tier;
66
+ mechanical implementation, tests, asset runs → workhorse-tier.
67
+
68
+ ### The loop contract (per area, repeated until WOWED)
69
+
70
+ 1. **Implement** — builder sub-agent with the ownership map below and the
71
+ current defect list as its work order.
72
+ 2. **Capture evidence** — launch and drive the real thing; save the
73
+ canonical capture to `gauntlet/shots/<area-key>.png` (or transcript /
74
+ benchmark output to `notes/`).
75
+ 3. **Critique** — separate harsh critic, fresh context, evidence + `refs/`
76
+ only, judges blind per `refs/REFERENCE-BAR.md`; verdict JSON lands in
77
+ `gauntlet/notes/critique-<area>-iter<n>.json`.
78
+ 4. **Report** — update `gauntlet/status.json` at every transition (agent
79
+ launched / landed / awaiting critique / verdict), not just after
80
+ critiques. A stale dashboard is a bug.
81
+ 5. **NOT_YET** → the defect list becomes the next iteration's work order.
82
+ **WOWED** → area done.
83
+
84
+ ### Areas
85
+
86
+ <area-key — one-line charter; one per line; each independently judgeable>
87
+
88
+ ### File ownership
89
+
90
+ <one line per area: the exact paths it owns. Areas sharing files serialize
91
+ in the same wave, never parallel. This map is repeated verbatim in every
92
+ agent prompt.>
@@ -0,0 +1,53 @@
1
+ # The Reference Bar — how critics judge
2
+
3
+ You are judging against <REFERENCE — the named bar>. Reference evidence (in
4
+ `refs/press/`) is the anchor; this rubric is the contract. You see evidence
5
+ only — not the code, not the builder's effort, not its excuses.
6
+
7
+ ## The verdict question
8
+
9
+ Put the subject's evidence next to the reference's. Answer honestly:
10
+
11
+ > "<THE STOREFRONT TEST — one sentence, e.g. 'If these two appeared side by
12
+ > side on a store page, would a buyer believe this is a shipped, commercially
13
+ > published product?' See references/domains.md for per-domain phrasings.>"
14
+
15
+ - **WOWED** = yes without hesitation. The direction (STYLE.md) is confidently
16
+ executed; nothing reads as placeholder.
17
+ - **NOT YET** = anything else. List every failing element with a concrete fix.
18
+
19
+ You are a harsh critic. Your job is to find what's below the bar, not to be
20
+ encouraging. "Pretty good for <an internal tool / a web game / a side
21
+ project>" is a FAIL.
22
+
23
+ ## What the reference does that this must match (adapted, not copied)
24
+
25
+ <5–7 numbered qualities the reference exhibits that the subject must match in
26
+ its own direction — e.g. legibility hierarchy, material confidence, motion
27
+ everywhere/noise nowhere, typography as craft, celebration engineering.>
28
+
29
+ ## Automatic failures (any one = NOT YET)
30
+
31
+ <Domain list — see references/domains.md for starter sets. Include
32
+ art-direction/approach incoherence: "two pieces of evidence that read as
33
+ different products.">
34
+
35
+ ## Scoring dimensions (report each: pass / fail + fix)
36
+
37
+ <5–9 dimensions the critic reports individually, e.g. composition · craft of
38
+ <domain surface> · coherence vs STYLE.md · typography/copy · color/token
39
+ discipline · motion & feedback · celebration quality · legibility-at-a-glance.>
40
+
41
+ ## Verdict format (exact, for status.json)
42
+
43
+ ```json
44
+ {
45
+ "verdict": "WOWED" | "NOT_YET",
46
+ "storefront_test": "<one sentence: which side wins and why>",
47
+ "defects": [ {"element": "...", "why_below_bar": "...", "fix": "...", "owner_area": "<area-key>"} ],
48
+ "dimensions": {"<dim>": "pass", "<dim>": "fail"}
49
+ }
50
+ ```
51
+
52
+ `owner_area` is required on every defect — cross-area defects route to the
53
+ area that owns the file, not the area being critiqued.
@@ -0,0 +1,41 @@
1
+ # <PROJECT> Direction Bible — <BRANCH>
2
+
3
+ One page. Every builder agent and every critic works from this. If a change
4
+ doesn't serve this direction, it's wrong even if it's pretty.
5
+
6
+ ## The Direction (one sentence)
7
+
8
+ <One sentence that commits to a direction — name the feeling AND the
9
+ mechanics, e.g. "An illuminated manuscript come to life: stylized low-poly 3D
10
+ world lit like golden hour, unexplored land literally unfinished parchment.">
11
+
12
+ <One line on what it is never: "Never photoreal, never uncanny-middle, never
13
+ flat-2D." / "Never clever-cute; the prose serves the reader's scan." etc.>
14
+
15
+ ## <Domain section 1 — e.g. World Rendering / Visual System / API Surface>
16
+
17
+ <Concrete rules with values — hex codes, type scales, timing budgets, naming
18
+ schemes, error shapes. Not adjectives: "painterly flat-shaded gradients, no
19
+ PBR" not "beautiful materials".>
20
+
21
+ ## The Signature Elements (what makes it THIS, not generic)
22
+
23
+ 1. <Signature 1 — the thing a critic can point at in evidence and say
24
+ "that's <PROJECT>".>
25
+ 2. <Signature 2.>
26
+ 3. <Signature 3.>
27
+
28
+ ## <Palette / Tokens / Conventions>
29
+
30
+ <Exact values: colors, fonts, spacing scale, motion durations, naming.>
31
+
32
+ ## <Domain section 2 — e.g. UI Chrome / CLI Output / Docs Voice>
33
+
34
+ <Rules for the human-facing surface: feedback behavior, motion/easing,
35
+ empty states, copy tone.>
36
+
37
+ ## Hard Bans
38
+
39
+ <The short list of "any one of these = below the bar by definition": e.g.
40
+ emoji as art · default fonts · unstyled native controls · dead-on-click
41
+ surfaces · modal error dialogs · any element appearing with no transition.>
@@ -0,0 +1,237 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Gauntlet — Live Progress</title>
7
+ <style>
8
+ :root {
9
+ --bg: #131417; --panel: #1c1e23; --ink: #e6e4dc; --dim: #8d8f98;
10
+ --line: #33363e; --gold: #c9a227; --glow: #6fc7bd; --red: #c25b4a;
11
+ --green: #6fae5c;
12
+ }
13
+ * { box-sizing: border-box; margin: 0; }
14
+ body {
15
+ background: var(--bg); color: var(--ink);
16
+ font: 15px/1.45 Georgia, 'Times New Roman', serif;
17
+ padding: 28px clamp(16px, 4vw, 48px);
18
+ }
19
+ header { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; margin-bottom: 6px; }
20
+ h1 { font-size: 26px; letter-spacing: 0.06em; font-variant: small-caps; }
21
+ h1 .accent { color: var(--gold); }
22
+ #meta { color: var(--dim); font-size: 13px; }
23
+ #tagline { color: var(--dim); font-style: italic; margin-bottom: 22px; font-size: 13px; }
24
+ .grid {
25
+ display: grid; gap: 18px;
26
+ grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
27
+ }
28
+ .card {
29
+ background: var(--panel); border: 1px solid var(--line); border-radius: 8px;
30
+ overflow: hidden; display: flex; flex-direction: column;
31
+ }
32
+ .shot {
33
+ aspect-ratio: 16/9; background: #0c0d10; display: flex;
34
+ align-items: center; justify-content: center; overflow: hidden; position: relative;
35
+ }
36
+ .shot img { width: 100%; height: 100%; object-fit: cover; display: block; }
37
+ .shot .none { color: #45484f; font-size: 13px; letter-spacing: 0.08em; }
38
+ .body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
39
+ .titlerow { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
40
+ .title { font-size: 16px; font-variant: small-caps; letter-spacing: 0.04em; }
41
+ .badge {
42
+ font: 700 11px/1 system-ui, sans-serif; letter-spacing: 0.08em;
43
+ padding: 4px 9px; border-radius: 3px; white-space: nowrap;
44
+ }
45
+ .b-notstarted { color: var(--dim); border: 1px solid var(--line); }
46
+ .b-inprogress { color: #0c0d10; background: var(--gold); }
47
+ .b-critique { color: #0c0d10; background: var(--glow); }
48
+ .b-wowed { color: #0c0d10; background: var(--green); }
49
+ .b-notyet { color: #fff; background: var(--red); }
50
+ .b-delivered { color: #0c0d10; background: var(--glow); }
51
+ .note { color: var(--dim); font-size: 13px; }
52
+ .defects { list-style: none; display: flex; flex-direction: column; gap: 4px; }
53
+ .defects li {
54
+ font-size: 12.5px; color: var(--ink); padding-left: 14px; position: relative;
55
+ }
56
+ .defects li::before { content: '✕'; color: var(--red); position: absolute; left: 0; font-size: 10px; top: 2px; }
57
+ .foot { margin-top: auto; display: flex; justify-content: space-between; color: var(--dim); font-size: 12px; }
58
+ #err { color: var(--red); margin-top: 20px; display: none; }
59
+ #media-section { margin-top: 30px; }
60
+ #media-section h2 {
61
+ font-size: 18px; font-variant: small-caps; letter-spacing: 0.06em;
62
+ margin-bottom: 10px; color: var(--gold);
63
+ }
64
+ .tracks { display: flex; flex-direction: column; gap: 6px; max-width: 720px; }
65
+ .track {
66
+ display: flex; align-items: center; gap: 12px;
67
+ background: var(--panel); border: 1px solid var(--line); border-radius: 6px;
68
+ padding: 8px 12px;
69
+ }
70
+ .play {
71
+ width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--gold);
72
+ background: none; color: var(--gold); font-size: 13px; cursor: pointer;
73
+ display: flex; align-items: center; justify-content: center; flex: none;
74
+ }
75
+ .play:hover, .play.playing { background: var(--gold); color: #0c0d10; }
76
+ .t-title { font-size: 14.5px; }
77
+ .t-meta { color: var(--dim); font-size: 12px; }
78
+ .t-kind {
79
+ font: 700 10px/1 system-ui, sans-serif; letter-spacing: 0.08em;
80
+ padding: 3px 7px; border-radius: 3px; border: 1px solid var(--line);
81
+ color: var(--dim); flex: none;
82
+ }
83
+ .t-right { margin-left: auto; color: var(--dim); font-size: 12px; flex: none; }
84
+ </style>
85
+ </head>
86
+ <body>
87
+ <header>
88
+ <h1>The <span class="accent">Gauntlet</span> — <span id="project">loading…</span></h1>
89
+ <span id="meta"></span>
90
+ </header>
91
+ <p id="tagline"></p>
92
+ <div class="grid" id="grid"></div>
93
+ <section id="media-section" style="display:none">
94
+ <h2>Generated Media</h2>
95
+ <div class="tracks" id="tracks"></div>
96
+ </section>
97
+ <p id="err"></p>
98
+ <audio id="player"></audio>
99
+ <script>
100
+ // Live gauntlet progress page. Renders entirely from status.json (+ optional
101
+ // media-manifest.json); copied verbatim into each project's gauntlet/ dir.
102
+ const badge = (a) => {
103
+ if (a.verdict === 'WOWED') return ['b-wowed', 'WOWED'];
104
+ if (a.verdict === 'NOT_YET') return ['b-notyet', 'NOT YET · iter ' + a.iteration];
105
+ if (a.status === 'IN PROGRESS' || /ITER \d+ IN PROGRESS/.test(a.status || '')) return ['b-inprogress', a.status];
106
+ if (a.status === 'AWAITING CRITIQUE') return ['b-critique', 'AWAITING CRITIQUE'];
107
+ if ((a.status || '').match(/DELIVERED|SHIPPED|WIRED/)) return ['b-delivered', a.status];
108
+ return ['b-notstarted', a.status || 'NOT STARTED'];
109
+ };
110
+
111
+ // Per-area card registry: create once, then mutate in place — no flashing.
112
+ const cards = {}; // key -> {el, img, lastUpdated}
113
+
114
+ function ensureCard(key) {
115
+ if (cards[key]) return cards[key];
116
+ const el = document.createElement('div');
117
+ el.className = 'card';
118
+ el.innerHTML =
119
+ '<div class="shot"><span class="none">NO CAPTURE YET</span></div>' +
120
+ '<div class="body">' +
121
+ '<div class="titlerow"><span class="title"></span><span class="badge"></span></div>' +
122
+ '<div class="note"></div>' +
123
+ '<ul class="defects"></ul>' +
124
+ '<div class="foot"><span class="f-iter"></span><span class="f-time"></span></div>' +
125
+ '</div>';
126
+ document.getElementById('grid').appendChild(el);
127
+ cards[key] = { el, img: null, lastUpdated: null };
128
+ return cards[key];
129
+ }
130
+
131
+ function setText(el, sel, text) {
132
+ const n = el.querySelector(sel);
133
+ if (n.textContent !== text) n.textContent = text;
134
+ }
135
+
136
+ function updateCard(key, a) {
137
+ const c = ensureCard(key);
138
+ const [cls, label] = badge(a);
139
+ setText(c.el, '.title', a.title || key);
140
+ const b = c.el.querySelector('.badge');
141
+ if (b.className !== 'badge ' + cls) b.className = 'badge ' + cls;
142
+ if (b.textContent !== label) b.textContent = label;
143
+ setText(c.el, '.note', a.note || '');
144
+ const defects = (a.defects || []).slice(0, 5).map(d =>
145
+ typeof d === 'string' ? d : (d.element + ' — ' + d.fix));
146
+ const ul = c.el.querySelector('.defects');
147
+ const want = defects.map(d => '<li>' + d + '</li>').join('');
148
+ if (ul.innerHTML !== want) ul.innerHTML = want;
149
+ setText(c.el, '.f-iter', 'iteration ' + (a.iteration || 0));
150
+ setText(c.el, '.f-time', a.updated ? new Date(a.updated).toLocaleTimeString() : '');
151
+
152
+ // Screenshot: reload only when the area's timestamp changes (or first pass).
153
+ if (c.lastUpdated !== a.updated || !c.img) {
154
+ const probe = new Image();
155
+ probe.onload = () => {
156
+ const holder = c.el.querySelector('.shot');
157
+ if (!c.img) { holder.innerHTML = ''; c.img = probe; holder.appendChild(probe); }
158
+ else c.img.src = probe.src; // swap after load — old frame stays until ready
159
+ };
160
+ probe.onerror = () => { c.lastUpdated = a.updated; }; // no shot yet; stop retrying this stamp
161
+ probe.src = 'shots/' + key + '.png?t=' + Date.now();
162
+ c.lastUpdated = a.updated;
163
+ }
164
+ }
165
+
166
+ async function refresh() {
167
+ try {
168
+ const r = await fetch('status.json?t=' + Date.now());
169
+ const s = await r.json();
170
+ if (s.project) document.getElementById('project').textContent = s.project;
171
+ if (s.tagline) document.getElementById('tagline').textContent = s.tagline;
172
+ document.getElementById('meta').textContent =
173
+ (s.pass || '') + ' · updated ' + new Date(s.updated).toLocaleTimeString();
174
+ for (const [key, a] of Object.entries(s.areas || {})) updateCard(key, a);
175
+ document.getElementById('err').style.display = 'none';
176
+ } catch (e) {
177
+ const el = document.getElementById('err');
178
+ el.textContent = 'status.json unreadable: ' + e.message;
179
+ el.style.display = 'block';
180
+ }
181
+ }
182
+
183
+ // Optional media list (audio/video generated during the pass) — built once
184
+ // per manifest version, keyed by updated stamp.
185
+ const player = document.getElementById('player');
186
+ let currentFile = null;
187
+ let mediaVersion = null;
188
+ player.addEventListener('ended', () => { currentFile = null; markPlaying(); });
189
+ player.addEventListener('pause', markPlaying);
190
+ player.addEventListener('play', markPlaying);
191
+ function markPlaying() {
192
+ document.querySelectorAll('.play').forEach(b => {
193
+ const active = b.dataset.file === currentFile && !player.paused;
194
+ b.classList.toggle('playing', active);
195
+ b.textContent = active ? '❚❚' : '▶';
196
+ });
197
+ }
198
+ function togglePlay(file) {
199
+ if (currentFile === file && !player.paused) { player.pause(); }
200
+ else {
201
+ if (currentFile !== file) { player.src = file; currentFile = file; }
202
+ player.play();
203
+ }
204
+ markPlaying();
205
+ }
206
+ async function refreshMedia() {
207
+ try {
208
+ const r = await fetch('media-manifest.json?t=' + Date.now());
209
+ if (!r.ok) return;
210
+ const m = await r.json();
211
+ if (!m.tracks || !m.tracks.length || m.updated === mediaVersion) return;
212
+ mediaVersion = m.updated;
213
+ document.getElementById('media-section').style.display = 'block';
214
+ const list = document.getElementById('tracks');
215
+ list.innerHTML = '';
216
+ for (const t of m.tracks) {
217
+ const row = document.createElement('div');
218
+ row.className = 'track';
219
+ row.innerHTML =
220
+ '<button class="play" data-file="' + t.file + '">▶</button>' +
221
+ '<div><div class="t-title">' + t.title + '</div>' +
222
+ '<div class="t-meta">' + (t.placement || '') + '</div></div>' +
223
+ '<span class="t-kind">' + (t.kind || '').toUpperCase() + '</span>' +
224
+ '<span class="t-right">' + (t.duration || '') + '</span>';
225
+ row.querySelector('.play').addEventListener('click', () => togglePlay(t.file));
226
+ list.appendChild(row);
227
+ }
228
+ markPlaying();
229
+ } catch (e) { /* manifest optional */ }
230
+ }
231
+ refresh();
232
+ refreshMedia();
233
+ setInterval(refresh, 5000);
234
+ setInterval(refreshMedia, 15000);
235
+ </script>
236
+ </body>
237
+ </html>
@@ -0,0 +1,106 @@
1
+ # Gauntlet domains — evidence, areas, automatic failures
2
+
3
+ Pick the row matching THING, adapt freely. The point of this file: every
4
+ domain has a CHECK (how the critic inspects the work), a starter area split,
5
+ an automatic-failure list, and a storefront-test phrasing. Non-visual domains
6
+ replace "screenshot" with the domain's capturable evidence.
7
+
8
+ ## Game / rich visual UI
9
+
10
+ - **CHECK:** Playwright screenshots at 1920×1080 across the key states
11
+ (spawn, mid-action, celebration, error), on an account with realistic data.
12
+ - **Areas:** world/rendering · game-feel animation · UI system & motion ·
13
+ onboarding · presentation of the core loop · sound design · music ·
14
+ performance.
15
+ - **Auto-fails:** emoji as art · default/system fonts · unstyled native
16
+ controls · flat untextured surfaces with no lighting response · dead-on-
17
+ click surfaces · error-after-the-fact UX (offer then reject) · uncanny-
18
+ middle photorealism · two shots that read as different games.
19
+ - **Storefront test:** "If this appeared on the same store page as the
20
+ reference, would a player believe it is a shipped, commercially published
21
+ game?"
22
+
23
+ ## Web app / product UI
24
+
25
+ - **CHECK:** Playwright screenshots at 1920×1080 + mobile width, across real
26
+ user flows (empty state, populated, error, loading, success).
27
+ - **Areas:** design system & tokens · core flow A · core flow B · empty/error/
28
+ loading states · motion & micro-interactions · accessibility · performance.
29
+ - **Auto-fails:** default browser styling anywhere · unstyled focus rings ·
30
+ layout shift on load · dead-end states with no next action · stock toasts
31
+ for moments that deserve staging · inconsistent spacing rhythm.
32
+ - **Storefront test:** "Next to the reference's marketing screenshots, would
33
+ a buyer believe this is the same tier of product?"
34
+
35
+ ## CLI / developer tool
36
+
37
+ - **CHECK:** Captured terminal sessions (real invocations, real output,
38
+ success + error + `--help`), asciinema or scripted transcript + screenshot.
39
+ - **Areas:** command surface & help text · output design (color, tables,
40
+ spinners) · error messages & recovery hints · exit codes & pipe behavior ·
41
+ docs/README · performance (startup, large input).
42
+ - **Auto-fails:** stack traces leaked to users · wall-of-text help · no
43
+ `--help` for any verb · colors that break on light terminals · silent
44
+ failure (exit 0, nothing happened) · inconsistent flag naming.
45
+ - **Storefront test:** "Shown both tools' real transcripts, would a developer
46
+ pick this one as the professionally maintained tool?"
47
+
48
+ ## API / backend service
49
+
50
+ - **CHECK:** Real request/response transcripts (curl -v or HTTPie), OpenAPI
51
+ render, error catalog exercised live, latency numbers under stated load.
52
+ - **Areas:** resource model & naming · error design · docs & examples ·
53
+ authn/authz behavior · observability · performance & limits.
54
+ - **Auto-fails:** inconsistent naming across resources · 500s for user error
55
+ · errors without actionable messages · undocumented behavior the client
56
+ must guess · missing pagination on list endpoints.
57
+ - **Storefront test:** "Given both APIs' docs and live responses, would an
58
+ integrating engineer call this one a commercial-grade API?"
59
+
60
+ ## Library / SDK
61
+
62
+ - **CHECK:** A consumer test app's real usage, rendered API docs, README
63
+ quickstart timed end-to-end, type/error behavior at the boundaries.
64
+ - **Areas:** API surface & naming · docs & quickstart · error taxonomy ·
65
+ types & ergonomics · test coverage of the contract · bundle/perf cost.
66
+ - **Auto-fails:** quickstart that doesn't run as written · leaked internal
67
+ types · error classes users can't catch selectively · breaking the stated
68
+ semver contract.
69
+ - **Storefront test:** "Would an engineer skimming both READMEs believe this
70
+ one is the safe dependency to bet on?"
71
+
72
+ ## Performance pass
73
+
74
+ - **CHECK:** Benchmark output (cold + warm, p50/p95/p99), flamegraphs,
75
+ before/after on the same machine, under stated load. Numbers, not vibes.
76
+ - **Areas:** the hot path · memory footprint · startup · I/O & caching ·
77
+ regression guard (the benchmark becomes CI).
78
+ - **Auto-fails:** benchmark that doesn't isolate the change · claimed wins
79
+ without reproducible numbers · a win on one path that regresses another
80
+ unmeasured · micro-benchmarks that don't reflect real load.
81
+ - **Storefront test:** "Presented with both benchmark suites, would an
82
+ engineer believe this result and reproduce it?"
83
+
84
+ ## Writing / docs / content
85
+
86
+ - **CHECK:** The rendered pieces side by side with the reference's, read by
87
+ the critic with labels stripped; timed comprehension check ("which one do
88
+ you understand faster?").
89
+ - **Areas:** structure & information architecture · voice & register ·
90
+ examples & code samples · visuals/diagrams · navigation & discoverability.
91
+ - **Auto-fails:** jargon the target reader can't define · examples that
92
+ don't run · a wall of text where a table/diagram carries the point ·
93
+ inconsistent terminology for the same concept.
94
+ - **Storefront test:** "Stripped of branding, which piece would the target
95
+ reader finish and act on?"
96
+
97
+ ## Asset-heavy passes (audio, video, 3D, images)
98
+
99
+ - **CHECK:** The generated assets played/viewed in situ (wired into the
100
+ product), plus a media-manifest.json so the progress page can play them.
101
+ - **Rules worth restating** (from run #1): generation prompts must describe
102
+ audible/visible results, not mood adjectives ("soft/tiny" yields near-
103
+ silence — put gentleness in the engine's gain, not the prompt); strip
104
+ leading silence before trimming to a duration budget; never hard-trim a
105
+ musical phrase; peak-normalize audio to −3 dBFS; verify the license clause
106
+ of every purchased/stock asset for the distribution form.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pan-handoff
3
- description: "pan handoff <conv> — agent-authored conversation handoff that spawns a new conversation. The focus text MUST be ≤500 characters or the fork is rejected."
3
+ description: "pan handoff <conv> — agent-authored conversation handoff that spawns a new conversation. Keep the focus short and steering; the hard cap is 10000 characters (PAN-3737). Pass --title to name the successor."
4
4
  triggers:
5
5
  - pan handoff
6
6
  - hand off conversation
@@ -24,7 +24,14 @@ pan handoff [conv] [focus text...]
24
24
 
25
25
  The trailing text after the conversation reference becomes the focus — no flag required.
26
26
 
27
- > ⚠️ **The focus MUST be ≤ 500 characters.** A longer focus is rejected outright with `Fork request rejected: focus must be 500 characters or fewer` and **no conversation is created** — so count it and keep it under 500 on the first try. Keep the focus short and steering; do NOT pack backstory/context into it — the author reads the full source transcript for that. This is the single most common handoff mistake.
27
+ > Keep the focus short and steering; do NOT pack backstory/context into it — the author reads the full source transcript for that, and long briefs belong in a file the focus points at. The hard cap is 10,000 characters (multi-line is fine; PAN-3737) — a longer focus is rejected with `Fork request rejected: focus must be 10000 characters or fewer` and no conversation is created.
28
+
29
+ ## Where to run it, and where the successor lives
30
+
31
+ Two separate directories are involved, and each has its own rule:
32
+
33
+ - **Run the command from your project directory** (the directory your session was launched in). Do NOT `cd` into the `--cwd` target, a `/tmp` brief directory, or any other path first — `--cwd` is where the *successor* will live; you never need to stand there. Sandboxed harnesses (e.g. codex `workspace-write`) block network and non-workspace writes for commands run from untrusted directories. The failure signature is `attempt to write a readonly database` followed by `Could not reach the Overdeck dashboard at http://127.0.0.1:3011 … (fetch failed)` **while the dashboard is actually up** — if you see that pair, re-run from your project directory (PAN-3735).
34
+ - **`--cwd` must be an absolute path to an existing directory under your home directory, inside a git working tree.** The server rejects violations and creates no conversation: `/tmp/...` fails the home-containment check (`Invalid cwd`), a relative path like `../worktree` fails the absolute-path check (the CLI does not resolve it for you), a not-yet-created directory fails the existence check, and a plain non-git directory fails with `Handoff cwd is not inside a git repository`. The reliable recipe is an isolated worktree: `git -C <repo> worktree add -b hoff/<slug> "$HOME/hoff-<slug>-wt" main`, put any brief files in it, then pass it as `--cwd`. In a polyrepo project whose parent directory is not itself a git repo, point `--cwd` at (a worktree of) the relevant sub-repo — the parent fails the git check.
28
35
 
29
36
  ## Handing off the conversation you are in (the common case)
30
37
 
@@ -61,17 +68,18 @@ pan handoff 42
61
68
  pan handoff source-conv continue the API wiring
62
69
  pan handoff source-conv --model claude-sonnet-4-6
63
70
  pan handoff source-conv --harness pi
64
- pan handoff source-conv --cwd /path/to/project
65
- pan handoff source-conv --cwd ../isolated-worktree --project mind-your-now
71
+ pan handoff source-conv --cwd /home/you/Projects/project
72
+ pan handoff source-conv --cwd /home/you/Projects/isolated-worktree --project mind-your-now
66
73
  pan handoff source-conv --model claude-opus-4-7 wire the Stripe webhook into checkout
67
74
  pan handoff source-conv --author external --author-model claude-haiku-4-5 cheap clean handoff
68
75
  pan handoff source-conv --author source uses-source-agent-and-pollutes-its-context
69
76
  pan handoff source-conv --issue PAN-1234 continue the API wiring
77
+ pan handoff source-conv --title "Checkout webhook repair" continue the API wiring
70
78
  ```
71
79
 
72
80
  ## Project and issue association
73
81
 
74
- Use `--project <key-or-name>` when the successor runs from a `--cwd` outside the registered project's directory, such as an isolated worktree. The explicit project wins over the source association; without the flag, the successor inherits the source conversation's project. Unknown projects reject the request and create no conversation.
82
+ Use `--project <key-or-name>` when the successor runs from a `--cwd` outside the registered project's directory, such as an isolated worktree. The `--cwd` value must be an absolute path to an existing directory under your home directory (see "Where to run it, and where the successor lives" above). The explicit project wins over the source association; without the flag, the successor inherits the source conversation's project. Unknown projects reject the request and create no conversation.
75
83
 
76
84
  Use `--issue <id>` to attach the new conversation to a specific issue (e.g. `PAN-1234`). The flag is validated; an invalid ID rejects the request and creates no conversation. When `--issue` is omitted, the new conversation inherits the source conversation's issue association, if any.
77
85
 
@@ -87,7 +95,17 @@ Use a normal summary fork when a quick passive summary is enough. Use a plain fo
87
95
 
88
96
  The positional text after `<conv>` is the focus — a short statement of what the successor should concentrate on. Quotes are optional; everything after the conversation reference (excluding flags) is joined with spaces. Keep it short and task-oriented; the focus is injected into the handoff-authoring prompt, not used as the new conversation's user request.
89
97
 
90
- **Hard limit: the focus must be ≤ 500 characters.** A longer focus is rejected outright with `Fork request rejected: focus must be 500 characters or fewer` and no conversation is created — so write it under 500 chars on the first try. Don't pack the backstory into the focus; the detail belongs in the transcript the author reads. The focus only steers what the author emphasizes.
98
+ **Hard ceiling: 10,000 characters** (PAN-3737; multi-line focus is allowed). Don't pack the backstory into the focus even so; the detail belongs in the transcript the author reads or in a brief file in the successor cwd. The focus only steers what the author emphasizes.
99
+
100
+ ## Title
101
+
102
+ Without `--title`, the new conversation is titled `Handoff: <first ~70 chars of focus>` (or `Handoff: <source title>` when there is no focus). Pass `--title "<title>"` to name it explicitly — useful when the focus is a file pointer like "Read .pan/handoff-brief.md FIRST" and would otherwise become the title verbatim:
103
+
104
+ ```bash
105
+ pan handoff self --title "Checkout webhook repair" Read .pan/handoff-brief.md FIRST and follow it exactly.
106
+ ```
107
+
108
+ A blank `--title` falls back to the default naming above.
91
109
 
92
110
  ## Authoring modes
93
111
 
@@ -126,7 +126,7 @@ Overdeck comes with a suite of skills to guide AI assistants:
126
126
 
127
127
  ### Utilities
128
128
  - `/session-health` - Detect and clean up stuck sessions
129
- - `/skill-creator` - Guide for creating new skills
129
+ - `/claude-skill-creator` - Guide for creating Claude Code skills
130
130
  - `/web-design-guidelines` - UI/UX best practices
131
131
  - `/work-complete` - Checklist for completing work
132
132
 
@@ -62,9 +62,9 @@ never raise it to `xhigh`/`max` for a review.
62
62
 
63
63
  ### 1. Write the brief to a file — never into the focus
64
64
 
65
- The `pan handoff` focus is hard-capped at 500 characters. A real review brief is
66
- thousands. Write it to a file in the reviewer's future cwd and let the focus
67
- point at it.
65
+ The `pan handoff` focus is for steering, not content (hard ceiling 10,000 chars
66
+ since PAN-3737). A real review brief is thousands of characters of structure —
67
+ write it to a file in the reviewer's future cwd and let the focus point at it.
68
68
 
69
69
  A brief that produces a useful review has these parts:
70
70
 
@@ -31,11 +31,14 @@ pan restart
31
31
  # Scoped alternatives
32
32
  pan restart --cliproxy
33
33
  pan restart --traefik
34
- pan restart --full # nuclear — stops & restarts everything
34
+ # --full is nuclear — stops & restarts everything
35
+ pan restart --full
35
36
 
36
37
  # Explicit force cases
37
- pan restart --force # explicit operator bypass of the deploy-window gate
38
- pan restart --cliproxy --force # redownload the pinned CLIProxy binary
38
+ # --force is an explicit operator bypass of the deploy-window gate
39
+ pan restart --force
40
+ # --cliproxy --force redownloads the pinned CLIProxy binary
41
+ pan restart --cliproxy --force
39
42
  ```
40
43
 
41
44
  Each stage is health-gated: the command waits for `GET /api/health` from the