@overdeck/desktop 0.49.1 → 0.49.2

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 (497) hide show
  1. package/package.json +1 -1
  2. package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-CHtDkHEL.js} +2 -2
  3. package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-Byh6sP-q.js} +2 -2
  4. package/server/{activity-logger-BAVLrkR7.js → activity-logger-BWZhVphb.js} +22 -4
  5. package/server/activity-logger-Ck8qoluj.js +3 -0
  6. package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-65W4yUQi.js} +6 -6
  7. package/server/{agent-gc-5E0lgxI1.js → agent-gc-BNUudFnt.js} +10 -10
  8. package/server/agent-idle-ONBssBN_.js +745 -0
  9. package/server/{agent-state-Bb3UUxQm.js → agent-state-BJhGIJZe.js} +421 -135
  10. package/server/agent-state-CM8iVw5B.js +3 -0
  11. package/server/{agent-state-service-BFbttwRA.js → agent-state-service-CiIuwzIs.js} +5 -5
  12. package/server/{agent-state-service-keg-x1bT.js → agent-state-service-CzHfoqKQ.js} +1 -1
  13. package/server/agents-DpCuoF65.js +3 -0
  14. package/server/{agents-CqQJW75N.js → agents-jXgqpHca.js} +8 -8
  15. package/server/archive-planning-BW4MKNI7.js +2 -0
  16. package/server/{archive-planning-BwEhu9Oq.js → archive-planning-CGkU6UeL.js} +20 -135
  17. package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Ck4NRRkY.js} +3 -3
  18. package/server/{assemble-DyTp2gSB.js → assemble-CyvEBmmq.js} +28 -9
  19. package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-Dc4mtM-B.js} +8 -7
  20. package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-CCEpr4YT.js} +3 -3
  21. package/server/{behavior-Bitko0mD.js → behavior-BiCQzqyT.js} +3 -3
  22. package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-Ce8rNPym.js} +2 -2
  23. package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-e_OEYZEe.js} +2 -2
  24. package/server/{build-info-DTX8JwVP.js → build-info-BRw4QlYO.js} +3 -3
  25. package/server/build-info-Bj2vQEMh.js +2 -0
  26. package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-CKr42Usw.js} +1 -1
  27. package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-DOwRGFff.js} +26 -9
  28. package/server/checkpoint-worker.js +1 -1
  29. package/server/{checkpoints-DRALkfDS.js → checkpoints-Cb6CWT4S.js} +1 -1
  30. package/server/{checkpoints-BGfl0cHM.js → checkpoints-Cszp_0Np.js} +2 -2
  31. package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-C5JHpxTS.js} +1 -1
  32. package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-Cer2eFfj.js} +2 -2
  33. package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-Bc5kjX1q.js} +2 -2
  34. package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-C7rWsnya.js} +1 -1
  35. package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-m-VVZej1.js} +2 -2
  36. package/server/cli-BRuzUT_I.js +2 -0
  37. package/server/{cli-Do8UpLoI.js → cli-BmczsfD6.js} +11 -11
  38. package/server/{cliproxy-CX6jHRDP.js → cliproxy-BpYpkogS.js} +52 -17
  39. package/server/cliproxy-_yUU0HRY.js +3 -0
  40. package/server/{close-issue-J0_eWYT1.js → close-issue-CxvRD0UI.js} +5 -5
  41. package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-nMLRi5de.js} +13 -12
  42. package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-omOcUDBl.js} +1 -1
  43. package/server/{codex-icapA4om.js → codex-DZhFfcWu.js} +1 -1
  44. package/server/{codex-OOea7lXs.js → codex-KaSKE-R3.js} +16 -10
  45. package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-Bjfi70G-.js} +3 -3
  46. package/server/{config-Cjleh3_U.js → config-CH1AqqIQ.js} +1 -1
  47. package/server/{config-DC75T4Mr.js → config-Doq_tF-f.js} +2 -2
  48. package/server/{config-tucKBCCc.js → config-ZGjvuR6J.js} +2 -2
  49. package/server/{config-yaml-BwOEANMr.js → config-yaml-D9nfpEx1.js} +33 -8
  50. package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-D4XCtrm2.js} +1 -1
  51. package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-DcUTY4Gb.js} +4 -4
  52. package/server/{context-layers-CSPGc2Hb.js → context-layers-BBTKP-Y4.js} +3 -3
  53. package/server/context-layers-BGj2Y9l3.js +4 -0
  54. package/server/{continue-U3Af0jUq.js → continue-i7Revg8D.js} +3 -3
  55. package/server/{control-settings-5k6ixdFW.js → control-settings-BMoDHY1G.js} +6 -6
  56. package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-D4VOmF7p.js} +8 -8
  57. package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzIjYMfg.js} +1 -1
  58. package/server/{conversation-service-BxrB5lUT.js → conversation-service-CzZUJFEx.js} +1 -1
  59. package/server/{conversation-service-BteE4ELK.js → conversation-service-tQCIbBVZ.js} +6 -6
  60. package/server/{conversations-DhwxsOru.js → conversations-C75EFFjf.js} +12 -7
  61. package/server/conversations-bFDaD5YN.js +3 -0
  62. package/server/{cost-Bnf9NUC5.js → cost-BCWEkvro.js} +3 -3
  63. package/server/{cost-CQKI6OCu.js → cost-CiIwxH1D.js} +2 -2
  64. package/server/{cost-sync-B-ADeXKY.js → cost-sync-DOkdE_yB.js} +3 -3
  65. package/server/{dag-DI9LaK_q.js → dag-BPc74hwj.js} +6 -19
  66. package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-By9iguTP.js} +1 -1
  67. package/server/dashboard-db-worker.js +7 -7
  68. package/server/{deacon-TPYssFYt.js → deacon-B24dNzr8.js} +1774 -171
  69. package/server/deacon-CzSZMtb-.js +4 -0
  70. package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-CkvxRPck.js} +3 -3
  71. package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BYIQBu0T.js} +1 -1
  72. package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-Do6Z2gKl.js} +2 -2
  73. package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-CzM9JA9t.js} +1 -1
  74. package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BObEdT-L.js} +3 -3
  75. package/server/deacon.js +11 -11
  76. package/server/dead-end-trip-6V_CwveT.js +2 -0
  77. package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-CnVmjnya.js} +3 -3
  78. package/server/delivery-gyce0vQ7.js +3 -0
  79. package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-CEwwEYDM.js} +8 -8
  80. package/server/deploy-queue-CjLErpgw.js +2 -0
  81. package/server/{deploy-queue-o7shYg1j.js → deploy-queue-r96ojDI3.js} +2 -2
  82. package/server/{deploy-window-CNT6fOff.js → deploy-window-D_3hhfxt.js} +4 -4
  83. package/server/{deploy-window-BMk5_oX6.js → deploy-window-DeJK8mTK.js} +1 -1
  84. package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-DZWwpENk.js} +2 -2
  85. package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-d-9dCV_2.js} +3 -3
  86. package/server/{dist-CPTO_zMR.js → dist-DsLAsFSh.js} +1 -1
  87. package/server/dist-fCA6y2bH.js +3 -0
  88. package/server/{docker-B7qUZptz.js → docker-B2mUBzGk.js} +3 -3
  89. package/server/{docker-KR3zSFKY.js → docker-CRPHBylA.js} +1 -1
  90. package/server/{dod-gK835UMf.js → dod-DWtilRLx.js} +1 -1
  91. package/server/{done-preflight-CksRvh49.js → done-preflight-BDVdWed5.js} +1 -1
  92. package/server/{done-preflight-Bk8aExAL.js → done-preflight-D4ukUf-S.js} +5 -5
  93. package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
  94. package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-B3OS2_He.js} +11 -2
  95. package/server/durable-review-pipeline-CaCbEJSt.js +3 -0
  96. package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-BUeBRjmm.js} +4 -4
  97. package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-rGSh0JHK.js} +1 -1
  98. package/server/{esm-shims-1htPASWs.js → esm-shims-oAaKIa-a.js} +1 -1
  99. package/server/{event-store-D7qcJXuZ.js → event-store-BCSgMubf.js} +5 -5
  100. package/server/{event-store-BgEjNsvk.js → event-store-Db4w4YIY.js} +1 -1
  101. package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-DlSQND3V.js} +1 -1
  102. package/server/{events-BIKGJZOT.js → events-B6zioJA_.js} +3 -3
  103. package/server/{dist-src-BM9eudEd.js → factory-BrdqXBeK.js} +714 -2
  104. package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-zh3ZXW6f.js} +3 -3
  105. package/server/{features-CGopJXdU.js → features-BGntOWdy.js} +2 -2
  106. package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-DpA5u1kt.js} +2 -2
  107. package/server/{feedback-target-Ci6N5p4G.js → feedback-target-D7GxdUYG.js} +10 -10
  108. package/server/{feedback-target-CkyLYohm.js → feedback-target-Ddqk93NF.js} +1 -1
  109. package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-C1gCLFmp.js} +5 -5
  110. package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-CH2846DP.js} +1 -1
  111. package/server/{flywheel-C7yek87O.js → flywheel-CjW2L7BS.js} +79 -29
  112. package/server/{flywheel-DXI_WITn.js → flywheel-HJt7QdWP.js} +1 -1
  113. package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-4fNRN2F2.js} +1 -1
  114. package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-D_yyAlND.js} +7 -7
  115. package/server/{flywheel-BwYPDlhK.js → flywheel-v1cCOBx-.js} +14 -14
  116. package/server/{forge-DYX9sKzG.js → forge-RVTCK_5X.js} +2 -2
  117. package/server/forge-bvak6vXJ.js +2 -0
  118. package/server/{from-DAdMxC29.js → from-BnLgKYvw.js} +1 -1
  119. package/server/{fs-lock-cw25uO_E.js → fs-lock-C7J-ugIf.js} +2 -2
  120. package/server/{fts-operations-D_rzLxX5.js → fts-operations-CU0B5WUx.js} +3 -3
  121. package/server/git-info-BSrI9owC.js +148 -0
  122. package/server/{git-utils-Y0zG25ez.js → git-utils-CsKV0Dis.js} +1 -1
  123. package/server/{git-utils-DV4B9TRl.js → git-utils-DW8-jIUJ.js} +4 -4
  124. package/server/{github-app-4UX8VIr8.js → github-app-7ywLhuZO.js} +2 -2
  125. package/server/{github-app-C33lDk9Z.js → github-app-Oi5hdn1n.js} +1 -1
  126. package/server/{github-client-nPj5ckZO.js → github-client-Cy0fSj1a.js} +1 -1
  127. package/server/{github-client-DkJVR908.js → github-client-DAbuXLuk.js} +3 -3
  128. package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-Dhh3ec1V.js} +2 -2
  129. package/server/{harness-binary-BgXYDo2Z.js → harness-binary-tMmgJfC1.js} +2 -2
  130. package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-DusNpVEe.js} +4 -4
  131. package/server/{health-events-jMfxrElt.js → health-events-BYDZ9n2i.js} +1 -1
  132. package/server/{health-events-DlX_FVAB.js → health-events-DNw9Mzw9.js} +2 -2
  133. package/server/{hooks-W3REcb3h.js → hooks-B4wj32l2.js} +1 -1
  134. package/server/{hooks-NQ19vvlB.js → hooks-BjBjxqNh.js} +2 -2
  135. package/server/{hume-BFkid2PO.js → hume-BP9YbxaE.js} +2 -2
  136. package/server/hume-TYTb6fDU.js +3 -0
  137. package/server/{identity-Bwh6VGeL.js → identity-C23uY8dZ.js} +3 -3
  138. package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-BSxb1bln.js} +4 -4
  139. package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-Bw0rU9GC.js} +1 -1
  140. package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-DuxabAHT.js} +1 -1
  141. package/server/{infra-KTp9KV9u.js → infra-CHIvOb9q.js} +30 -7
  142. package/server/{injection-67YyU6SC.js → injection-BYUt8ml1.js} +8 -8
  143. package/server/{injection-BxbZKPDh.js → injection-BviePcm3.js} +1 -1
  144. package/server/inspect-agent-JFEaYTRa.js +2 -0
  145. package/server/{inspect-agent-VHSihlb7.js → inspect-agent-sV_19NxZ.js} +12 -12
  146. package/server/{internal-token-B-z-sGBH.js → internal-token-BOtIRJU7.js} +1 -1
  147. package/server/{internal-token-zY75jrRJ.js → internal-token-DoVzb4b7.js} +2 -2
  148. package/server/{io-DfvO2xyh.js → io-DKrWd3gX.js} +5 -5
  149. package/server/{issue-closed-dvEWKO7Q.js → issue-closed-6RQsAjDX.js} +7 -7
  150. package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-D9nLErvS.js} +206 -29
  151. package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DOPVv7xz.js} +1 -1
  152. package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-B2xy-IS9.js} +124 -11
  153. package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-CvgNAWqK.js} +1 -1
  154. package/server/issue-title-fallback-DTSCQVu0.js +120 -0
  155. package/server/{issues-CkvUoAnq.js → issues-e_Ck1Ln2.js} +2 -2
  156. package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-DqxVCZ1k.js} +3 -3
  157. package/server/jsonl-resolver-07OS3qOr.js +324 -0
  158. package/server/{kimi-code-C26gmGxM.js → kimi-code-BjtAHIz1.js} +14 -12
  159. package/server/{kimi-code-DoMoGqIu.js → kimi-code-vtXl2DR5.js} +1 -1
  160. package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-B1lgy2Vt.js} +2 -2
  161. package/server/{label-cleanup-X2lWfghH.js → label-cleanup-D2zUMasf.js} +3 -3
  162. package/server/{lifecycle-Bg44O-9x.js → lifecycle-0NOEzomy.js} +2 -2
  163. package/server/{lifecycle-B0rL38D3.js → lifecycle-DaCovZwn.js} +6 -6
  164. package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-6WL46dsB.js} +5 -5
  165. package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-BBMTaP7S.js} +1 -1
  166. package/server/{linear-client-B0cIkTs4.js → linear-client-7fQThJTc.js} +3 -3
  167. package/server/{linear-client-6V2E-DSa.js → linear-client-BTGApNLo.js} +1 -1
  168. package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-B8pYRsiU.js} +1 -1
  169. package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-Nk5s3L9M.js} +5 -5
  170. package/server/memory-fts-worker.js +1 -1
  171. package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cqvbusr4.js} +14 -14
  172. package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-DPb8foam.js} +5 -5
  173. package/server/{merge-BGWcBxku.js → merge-BB_bjJ9a.js} +1 -1
  174. package/server/{merge-vz80RvSE.js → merge-FZ78_cEz.js} +3 -3
  175. package/server/{merge-agent-GWhmnxFk.js → merge-agent-B3jRrlS1.js} +37 -33
  176. package/server/{merge-agent-BRSz26Oh.js → merge-agent-BuoC_PRZ.js} +2 -2
  177. package/server/{merge-batch-CFMEtTxv.js → merge-batch-B8bVjFWS.js} +1 -1
  178. package/server/{merge-completeness-CP347umA.js → merge-completeness-DQt7Qa7i.js} +4 -4
  179. package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-DkdabVch.js} +1 -1
  180. package/server/merge-ops-DabXHp2i.js +2 -0
  181. package/server/merge-rebase-CXq0qsgR.js +2 -0
  182. package/server/{merge-rebase-C5htyEEH.js → merge-rebase-qq40s91P.js} +2 -2
  183. package/server/{merge-set-DsGW8fmc.js → merge-set-BTNYvxM3.js} +1 -1
  184. package/server/{merge-set-eiE2nC6C.js → merge-set-BmRRflt0.js} +4 -4
  185. package/server/{merge-sync-CM2-myXu.js → merge-sync-0m2Q087q.js} +1 -1
  186. package/server/{merge-sync-Ct0-cxMX.js → merge-sync-CJpOa0cZ.js} +2 -2
  187. package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-CH5Mr3vN.js} +4 -4
  188. package/server/{merge-train-BOu3fN7O.js → merge-train-iwKqjtCF.js} +4 -4
  189. package/server/{merge-verification-BRp08IzI.js → merge-verification-JJc5GC2t.js} +6 -6
  190. package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-BOqWA373.js} +4 -4
  191. package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-CrhTdxZV.js} +1 -1
  192. package/server/messaging-nuwStbdQ.js +3 -0
  193. package/server/{multipart-parser-OAuW7824.js → multipart-parser-DxuW_rZV.js} +2 -2
  194. package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-xuYLFhLw.js} +1 -1
  195. package/server/node_modules/.package-lock.json +11 -11
  196. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
  197. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
  198. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
  199. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
  200. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
  201. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
  202. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
  203. 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
  204. 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
  205. 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
  206. 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
  207. 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
  208. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +27 -3
  209. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
  210. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
  211. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
  212. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
  213. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
  214. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
  215. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
  216. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
  217. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
  218. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
  219. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
  220. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
  221. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +4 -4
  222. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
  223. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
  224. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
  225. package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
  226. package/server/node_modules/ansi-regex/index.js +3 -2
  227. package/server/node_modules/ansi-regex/package.json +1 -1
  228. package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  229. package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
  230. package/server/node_modules/gaxios/package.json +3 -3
  231. package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-Dmk0kO_p.js} +24 -23
  232. package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-gf4TxfZb.js} +2 -2
  233. package/server/package-lock.json +12 -12
  234. package/server/package.json +1 -1
  235. package/server/{pan-dir-DDd91kMb.js → pan-dir-BMda7tQj.js} +5 -5
  236. package/server/{deacon-merge-BOGFEV8_.js → parked-residue-BiHb8cD7.js} +150 -35
  237. package/server/{paths-CRLnDgcI.js → paths-DEe9j-kw.js} +2 -2
  238. package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-J5uIIJPu.js} +2 -2
  239. package/server/{pickup-BjJsSX12.js → pickup-D1UbSDPd.js} +1 -1
  240. package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-D-6okryb.js} +5 -5
  241. package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-CCbgBzNC.js} +1 -1
  242. package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-PGX3Pe8V.js} +1 -1
  243. package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-BK4dzh0X.js} +17 -12
  244. package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-BRhU7XPx.js} +1 -1
  245. package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-BNAV9kpa.js} +2 -2
  246. package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-DvHLaXKb.js} +1 -1
  247. package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-DAWgzXQA.js} +3 -3
  248. package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DC2_0t12.js} +4 -4
  249. package/server/prd-locations-BbAvqQmT.js +124 -0
  250. package/server/{project-pipelines-CCkebHOu.js → project-pipelines-By_5WcT4.js} +2 -2
  251. package/server/{project-repos-B4MK48j4.js → project-repos--QeCg7yQ.js} +29 -3
  252. package/server/project-repos-3bI6t4fO.js +3 -0
  253. package/server/project-resource-refresh-queue-BaZC79S3.js +2 -0
  254. package/server/project-resource-refresh-queue-x-K9mvpP.js +865 -0
  255. package/server/{projects-DvPEAP18.js → projects-LftaVK99.js} +1 -1
  256. package/server/{prompts-BiS5I2tZ.js → prompts-BotGu-6W.js} +2 -2
  257. package/server/{providers-DrfK0Ip8.js → providers-BL1I66sM.js} +7 -7
  258. package/server/providers-Dqgz3MY5.js +3 -0
  259. package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-D5Fz5jND.js} +4 -4
  260. package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-Eux0gWFq.js} +1 -1
  261. package/server/public/assets/{dist-D0ryefak.js → dist-C3zShwhA.js} +1 -1
  262. package/server/public/assets/{dist-CSmUXazd.js → dist-D-JX_u7m.js} +3 -3
  263. package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-UH3aweia.js} +1 -1
  264. package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-ccIQ-WXS.js} +1 -1
  265. package/server/public/assets/index-2wV4ipy_.css +1 -0
  266. package/server/public/assets/index-BTVcdPve.js +860 -0
  267. package/server/public/assets/{linear-BPE7oswm.js → linear-Cnnu4YQy.js} +1 -1
  268. package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +1 -0
  269. package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-BD8-Tye6.js} +1 -1
  270. package/server/public/assets/{prod-aKDYUrXQ.js → prod-Ca6aKMts.js} +4 -4
  271. package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BmSrVyFD.js} +1 -1
  272. package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-CEGy8Das.js} +1 -1
  273. package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-VnQ8iY8s.js} +1 -1
  274. package/server/public/index.html +2 -2
  275. package/server/{pull-requests-BcHIsFJv.js → pull-requests-Cp_FDT8-.js} +3 -3
  276. package/server/pull-requests-jVGcVq5G.js +2 -0
  277. package/server/rally-CxhVgIQ6.js +3 -0
  278. package/server/{rally-api-ShZ4kvn0.js → rally-api-CqAIJ8RX.js} +2 -2
  279. package/server/{rally-api-u_vkr5c_.js → rally-api-Ij1Zt0NI.js} +1 -1
  280. package/server/{rally-B1OMtzch.js → rally-bQpBzUNf.js} +3 -3
  281. package/server/{rally-client-DgZvUZqX.js → rally-client-CN5vh4Ac.js} +1 -1
  282. package/server/{rally-client-D6Feq1Ka.js → rally-client-qKbCNRVW.js} +5 -5
  283. package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
  284. package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
  285. package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-BNOMVh7C.js} +7 -7
  286. package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-DrMyA_mA.js} +2 -2
  287. package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-mxIYCnqs.js} +7 -7
  288. package/server/{record-By-wp6pg.js → record-Ug18Cp4V.js} +1 -1
  289. package/server/{record-update-ByGtIlUK.js → record-update-WyhsREoH.js} +1 -1
  290. package/server/{record-update-D23jPU6b.js → record-update-dBGxL9OC.js} +8 -6
  291. package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-BKLrL6NX.js} +43 -10
  292. package/server/{recovery-trip-qloOYOFz.js → recovery-trip-wFAixKsg.js} +1 -1
  293. package/server/{release-engine-Crc0Tjx-.js → release-engine-D9gaCBn9.js} +5 -5
  294. package/server/{release-set-DDXwbIK7.js → release-set-DPHHzEGx.js} +3 -3
  295. package/server/{remote-CBpLi4Yy.js → remote-BU6ONLpv.js} +3 -3
  296. package/server/{remote-oEMfXlwT.js → remote-BUEeUic6.js} +3 -3
  297. package/server/{remote-agents-DQVGZVQ9.js → remote-agents-BVtASiOF.js} +1 -1
  298. package/server/{remote-agents-Bgtc2nOO.js → remote-agents-CSaTLi3u.js} +6 -6
  299. package/server/{remote-completion-DxUJ5HKR.js → remote-completion-CBV3b9TI.js} +13 -13
  300. package/server/{resolver-C8rooxoz.js → resolver-DvSMXty7.js} +31 -8
  301. package/server/{resolver-CuAULbLs.js → resolver-gxv97jsQ.js} +2 -2
  302. package/server/resume-DvHuF-bm.js +3 -0
  303. package/server/review-agent-DgkUPRx0.js +3 -0
  304. package/server/{review-agent-7C2w5CzU.js → review-agent-esZ0QXdY.js} +43 -55
  305. package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DGGEobLp.js} +6 -6
  306. package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-DmO8dIBH.js} +20 -11
  307. package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-Ct0q7FkE.js} +3 -3
  308. package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DHiiw7d8.js} +1 -1
  309. package/server/{review-status-CUnjjOUu.js → review-status-C_kQeeX0.js} +1 -1
  310. package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-BZz1Y_22.js} +3 -3
  311. package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-BWH0XW_m.js} +3 -3
  312. package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
  313. package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
  314. package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-2C9lk85r.js} +2 -2
  315. package/server/{review-status-sync-YthpOH_q.js → review-status-sync-Bq00Loey.js} +1 -1
  316. package/server/{review-status-DBnR5t4z.js → review-status-yOGD2MuK.js} +86 -27
  317. package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-Brjaxoda.js} +1 -1
  318. package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-CE_tr2iQ.js} +8 -8
  319. package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-CD-4kDVx.js} +1 -1
  320. package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Ca2V7QSY.js} +7 -7
  321. package/server/{rollup-DZwH4CLs.js → rollup--g9ik1XQ.js} +1 -1
  322. package/server/{rollup-QCwYcBdP.js → rollup-B6g9Nr6L.js} +8 -8
  323. package/server/{scanner-2aHeLC3W.js → scanner-YxIv-fG1.js} +8 -8
  324. package/server/{search-DwHYaj66.js → search-DqMN4__-.js} +2 -2
  325. package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
  326. package/server/{sequence-io-POKWdusG.js → sequence-io--b3_PsWq.js} +4 -4
  327. package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-CqouKVZG.js} +6 -6
  328. package/server/server.js +1115 -1269
  329. package/server/{service-BLb_CyPL.js → service-CEp-3iow.js} +64 -63
  330. package/server/{session-fork-DcTzVwex.js → session-fork-GtoeCh2H.js} +2 -2
  331. package/server/{settings-Clw8UVNs.js → settings-CLQcdkoD.js} +2 -2
  332. package/server/{settings-B9-H2K_E.js → settings-Ch2pCVtt.js} +3 -3
  333. package/server/settings-DhtPDmmI.js +2 -0
  334. package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BxiFrIKv.js} +3 -3
  335. package/server/{shadow-state-CEGrrECe.js → shadow-state-CSA1vtxr.js} +2 -2
  336. package/server/{shadow-state-e7250VUx.js → shadow-state-nGhCNXT2.js} +1 -1
  337. package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-7q5QDmMj.js} +2 -2
  338. package/server/{ship-log-7BnQHuKU.js → ship-log-ie0A_SqV.js} +1 -1
  339. package/server/{ship-record-CwUX6Afo.js → ship-record-BM3oVvnL.js} +7 -7
  340. package/server/{ship-record-BgUPnpT0.js → ship-record-DHWH1hLz.js} +1 -1
  341. package/server/{ship-status-Ce3_3edi.js → ship-status-BEkddXMT.js} +2 -2
  342. package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-BkzjVpWL.js} +1 -1
  343. package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D0TE1lBD.js} +7 -7
  344. package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-CkGweSCC.js} +19 -19
  345. package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-s406rw1N.js} +2 -2
  346. package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-CTAjwH5j.js} +1 -1
  347. package/server/{specialist-context-cHwpcXSh.js → specialist-context-CKasRfYu.js} +5 -5
  348. package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-DrjrOmmn.js} +2 -2
  349. package/server/{specialist-logs-5OTnrV91.js → specialist-logs-Du6quZ0_.js} +3 -3
  350. package/server/{specialists-xXcJHAyg.js → specialists-B-4zyE4Y.js} +1 -1
  351. package/server/{specialists-8LcQi9Np.js → specialists-CuDWiNdB.js} +21 -272
  352. package/server/{specialists-DocAK-7A.js → specialists-b0dMMjWq.js} +148 -685
  353. package/server/specialists-registry-1y6Rt_F1.js +3 -0
  354. package/server/specialists-registry-BYjs04iK.js +277 -0
  355. package/server/specialists-x-kPMhrL.js +4 -0
  356. package/server/specs-IYsFlM-L.js +3 -0
  357. package/server/{src-DudQNYVw.js → src-CY2Wl8IX.js} +337 -6
  358. package/server/{src-C2TAxwki.js → src-CZsPs61V.js} +6 -6
  359. package/server/{src-DUVvEA8Q.js → src-DeQwpuh6.js} +3 -3
  360. package/server/{stack-health-DKT4ySnA.js → stack-health-BQFSJc0l.js} +3 -3
  361. package/server/{stack-health-CbyiYS9H.js → stack-health-ypIKtkbE.js} +1 -1
  362. package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-C2e1zdMT.js} +5 -5
  363. package/server/{staleness-BjOAq9-d.js → staleness-CRDK6LFG.js} +1 -1
  364. package/server/{staleness-D8UTEXV5.js → staleness-Fzx_3_Hr.js} +1 -1
  365. package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-QNk4h9m6.js} +8 -8
  366. package/server/{state-home-DhAZlk5k.js → state-home-DdG8erBI.js} +2 -2
  367. package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
  368. package/server/{state-migrate-CJKEwpB0.js → state-migrate-C6H3jfHE.js} +6 -6
  369. package/server/{state-mirror-Do7pag7W.js → state-mirror-DF4Lfxm0.js} +3 -3
  370. package/server/stuck-remediation-BDa_tXgB.js +774 -0
  371. package/server/stuck-remediation-BVNd9txd.js +2 -0
  372. package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-BbbCZEtJ.js} +3 -3
  373. package/server/{summary-fork-CZ88rhVx.js → summary-fork-BvcW6bq0.js} +113 -30
  374. package/server/{summary-fork-CvB7Oyq9.js → summary-fork-DIQmtOuV.js} +2 -2
  375. package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
  376. package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
  377. package/server/supervisor/pty-supervisor.js +3 -3
  378. package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
  379. package/server/{supervisor-D4v0WfiQ.js → supervisor-D3jC2c7A.js} +4 -4
  380. package/server/supervisor-v0cYN2Vp.js +2 -0
  381. package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-CMWAQuWM.js} +3 -3
  382. package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-C-pJOPsn.js} +1 -1
  383. package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-DVlrLF9A.js} +2 -2
  384. package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-QKtIYXI2.js} +2 -2
  385. package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-cJea1OLo.js} +16 -16
  386. package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-C5DI_gWX.js} +6 -6
  387. package/server/{test-verdict-BWm3hgDj.js → test-verdict-C7kmd2_Y.js} +1 -1
  388. package/server/{test-verdict-BWtRmdiR.js → test-verdict-DUbDHqeD.js} +2 -2
  389. package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-BNQHwblU.js} +1 -1
  390. package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-CO08YlfQ.js} +2 -2
  391. package/server/tmux-B8zsqD_6.js +4 -0
  392. package/server/{tmux-BqXzRuaH.js → tmux-DWEc4Ld9.js} +91 -19
  393. package/server/{token-CO3INKbh.js → token-Bez-qCB2.js} +2 -2
  394. package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
  395. package/server/token-util-DfUS3Lpp.js +3 -0
  396. package/server/{tracker-config-DVzhaUxO.js → tracker-config-CJzPhSHv.js} +2 -2
  397. package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-DJAOAuMN.js} +2 -2
  398. package/server/{traefik-connect-A5k54mCv.js → traefik-connect-D3H5I6b9.js} +1 -1
  399. package/server/{tunnel-DauSR-rs.js → tunnel-BSdKnW0U.js} +1 -1
  400. package/server/{tunnel-CwOnS-PB.js → tunnel-Cr3ctqxp.js} +3 -3
  401. package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
  402. package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
  403. package/server/{types-DjpLVpsj.js → types-fzBp9cYi.js} +1 -1
  404. package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
  405. package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-IZQ-J8jt.js} +5 -5
  406. package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-DXApKcc2.js} +5 -5
  407. package/server/{uat-train-COSy-vEX.js → uat-train-CycEzpbE.js} +1 -1
  408. package/server/{uat-train-DVUNW03P.js → uat-train-IIZlz7r3.js} +0 -0
  409. package/server/{validate-Dvv83iBx.js → validate-Ur4xH5bN.js} +3 -3
  410. package/server/{validation-BdCjzWLN.js → validation-CHovCoTT.js} +1 -1
  411. package/server/{validation-DlHafKzu.js → validation-Dr6V4PXx.js} +9 -6
  412. package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-D3viYe_t.js} +1 -1
  413. package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-k5Ftpg0c.js} +1 -1
  414. package/server/{verification-runner-C6wdZda2.js → verification-runner-BuqGwm2t.js} +1 -1
  415. package/server/{verification-runner-DwP2fUEF.js → verification-runner-Dl13mmsI.js} +53 -27
  416. package/server/{vtt-parser-luerJpYT.js → vtt-parser-BSnAB-Og.js} +1 -1
  417. package/server/work-agent-prompt-CJJ4tXci.js +3 -0
  418. package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CioeOuM4.js} +14 -14
  419. package/server/{work-agent-start-BNQO65W7.js → work-agent-start-B65Gqn9N.js} +2 -2
  420. package/server/{work-agent-start-DkzseQFl.js → work-agent-start-Ct1HVh6z.js} +1 -1
  421. package/server/{workflows-BYwR2aIN.js → workflows-AgFul1xc.js} +114 -41
  422. package/server/workflows-CfHm8lVd.js +2 -0
  423. package/server/{workspace-B-QJa3Ps.js → workspace-Cu3XlMXt.js} +1 -1
  424. package/server/{workspace-iTnTycOB.js → workspace-Cy4sDd3q.js} +3 -3
  425. package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-BI0Hz6zI.js} +1 -1
  426. package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-CMaqvizr.js} +4 -4
  427. package/server/{workspace-config-D0CavVtz.js → workspace-config-DRYDO7Zr.js} +1 -1
  428. package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CgovxDrO.js} +17 -17
  429. package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-jfkKAEuO.js} +1 -1
  430. package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BDqXzGGK.js} +1 -1
  431. package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-BNzODIv6.js} +2 -2
  432. package/server/{workspaces-BlpbOPZ7.js → workspaces-BJdPqx_J.js} +131 -127
  433. package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
  434. package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
  435. package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
  436. package/sync-sources/rules/pan-handoff-focus-limit.md +12 -5
  437. package/sync-sources/rules/ste-writing.md +17 -0
  438. package/sync-sources/rules/work-agents-via-pan.md +2 -1
  439. package/sync-sources/rules/writing-style.md +3 -2
  440. package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
  441. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
  442. package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
  443. package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +182 -0
  444. package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
  445. package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
  446. package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
  447. package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
  448. package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
  449. package/sync-sources/skills/pan-gauntlet-loop/references/lessons.md +60 -0
  450. package/sync-sources/skills/pan-handoff/SKILL.md +13 -6
  451. package/sync-sources/skills/pan-help/SKILL.md +1 -1
  452. package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
  453. package/sync-sources/skills/pan-restart/SKILL.md +6 -3
  454. package/sync-sources/skills/pan-start/SKILL.md +3 -0
  455. package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
  456. package/sync-sources/skills/pan-sync/SKILL.md +1 -1
  457. package/server/activity-logger-BejO16Am.js +0 -3
  458. package/server/agent-state-DH_-Jkua.js +0 -3
  459. package/server/agents-megfmQHM.js +0 -3
  460. package/server/archive-planning-C-H9cM_J.js +0 -2
  461. package/server/build-info-PQlh_Rhb.js +0 -2
  462. package/server/cli-TaZspPHS.js +0 -2
  463. package/server/cliproxy-36ncAXlu.js +0 -3
  464. package/server/context-layers-CF6zHws4.js +0 -4
  465. package/server/conversations-AnGJ5rtX.js +0 -3
  466. package/server/deacon-BEH-IY0v.js +0 -5
  467. package/server/deacon-swarm-BHX-kR1b.js +0 -2
  468. package/server/deacon-swarm-BiLfNm_v.js +0 -1522
  469. package/server/dead-end-trip-BWpDg1Qd.js +0 -2
  470. package/server/delivery-cJM6zRjJ.js +0 -3
  471. package/server/deploy-queue-CmVBZEja.js +0 -2
  472. package/server/dist-VKBfkdi7.js +0 -3
  473. package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
  474. package/server/factory-D4V2wd_V.js +0 -717
  475. package/server/forge-CrP1L3i6.js +0 -2
  476. package/server/hume-1ubD_6O7.js +0 -3
  477. package/server/inspect-agent-CfxERkNt.js +0 -2
  478. package/server/merge-ops-DtHx17Vd.js +0 -2
  479. package/server/merge-rebase-BvB4UuNS.js +0 -2
  480. package/server/project-repos-BJiShUsN.js +0 -3
  481. package/server/providers-CStNGwze.js +0 -3
  482. package/server/public/assets/index-BFEwfmqX.js +0 -860
  483. package/server/public/assets/index-_USwyTAT.css +0 -1
  484. package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
  485. package/server/pull-requests-C1Cqp2yo.js +0 -2
  486. package/server/rally-CjayjUIl.js +0 -3
  487. package/server/resume-D7JuMCRQ.js +0 -3
  488. package/server/review-agent-BUNTVJK2.js +0 -2
  489. package/server/settings-DBWB1gsG.js +0 -2
  490. package/server/specialists-D8gsOCwh.js +0 -3
  491. package/server/specs-BqkrRnU9.js +0 -3
  492. package/server/stuck-remediation-Di5JYkoo.js +0 -1164
  493. package/server/stuck-remediation-TNM1VhZb.js +0 -2
  494. package/server/supervisor-DX8VsPnb.js +0 -2
  495. package/server/tmux-CqNapnrr.js +0 -4
  496. package/server/token-util-Bu8bPF9f.js +0 -3
  497. package/server/workflows-Cf4LAnhg.js +0 -2
@@ -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.
@@ -0,0 +1,60 @@
1
+ # Gauntlet run-#1 lessons — operational addenda
2
+
3
+ Generalized from the first full gauntlet (Lexerra, 2026-08-11). Every line
4
+ exists because its absence cost an iteration. Fold the applicable lines into
5
+ the mission prompt and the per-agent prompts verbatim.
6
+
7
+ 1. **File-ownership map, enforced in every agent prompt.** Concurrent agents
8
+ in one worktree WILL clobber shared files. Each area owns exact paths;
9
+ areas sharing files serialize in one wave, never run in parallel. Agents
10
+ never commit; the orchestrator reviews and commits per area with
11
+ path-scoped `git add` — `git add -A` would scoop another in-flight agent's
12
+ half-done work.
13
+ 2. **Evidence at presentation quality.** Screenshots at 1920×1080 — run #1's
14
+ 1440×900 captures failed the critic on storefront parity alone. Capture
15
+ with realistic data (an in-fiction account name, real content — a test
16
+ username like `map3d_48100411` visible in the shot is a defect). Keep dev
17
+ tooling panels out of captures.
18
+ 3. **Headless rendering gotchas.** Black frames in headless Chromium are a
19
+ renderer-context issue, not scene code — try default launch flags before
20
+ forcing software rasterization flags. React StrictMode double-mounts:
21
+ canvas/WebGL code must survive a fresh mount. Software-rasterized FPS
22
+ numbers in headless are CPU rasterization — never treat them as the real
23
+ 60fps verdict.
24
+ 4. **Seedable state is load-bearing for critique.** If reaching a state takes
25
+ hours of wall-clock (filled stockpiles, advanced time, specific data), the
26
+ loop can't be photographed. Add the test hook / seed path during setup,
27
+ not mid-loop. Never restart a shared dev server mid-run — hot-reload kills
28
+ other agents' verification sessions.
29
+ 5. **Critic protocol.** The critic is ALWAYS a separate agent from the
30
+ builder, frontier-tier, sees evidence + refs only (no code access needed).
31
+ It tags each defect with the owning area so cross-area defects merge into
32
+ the right queue (run #1's map critic found 5 UI defects). Verdict JSON
33
+ goes to `gauntlet/notes/critique-<area>-iter<n>.json` and onto the
34
+ dashboard card verbatim.
35
+ 6. **Dashboard contract.** Update `status.json` at EVERY transition (agent
36
+ launched / landed / awaiting critique / verdict), not just after
37
+ critiques. The page mutates cards in place — a full-DOM rebuild per poll
38
+ makes screenshots flash. Regenerated media needs cache-busting or browsers
39
+ replay stale files.
40
+ 7. **Test reconciliation is its own queued item.** Big visual/structural
41
+ changes break existing test selectors; don't let the builder burn its run
42
+ fixing them. Wave gates are: build passes, evidence captured, critique
43
+ filed. Broken-suite repair gets its own area or a follow-up.
44
+ 8. **Cadence artifacts.** Commit critique JSONs and status.json to the branch
45
+ — the pass history is reviewable. Gitignore large third-party reference
46
+ media and regenerable source assets (keep shipped assets committed).
47
+
48
+ ## The four ways the loop silently fails
49
+
50
+ These are from the pattern's origin notes and every writeup since — restate
51
+ them because they are the whole game:
52
+
53
+ 1. **Vague bar** → the critic invents a comparison and approves everything.
54
+ The bar must be named, fetchable, comparable.
55
+ 2. **Builder judging its own work** → the critic must be a fresh agent with
56
+ zero knowledge of the builder's effort or reasoning trail.
57
+ 3. **Soft critic** → scores out of 10 drift upward and everything passes.
58
+ Binary verdict + concrete fixes only.
59
+ 4. **Fixed round count** → "do 3 iterations" ships a prototype. The exit
60
+ condition is WOWED, or the operator stopping the run.
@@ -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)."
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,8 +68,8 @@ 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
@@ -71,7 +78,7 @@ pan handoff source-conv --issue PAN-1234 continue the API wiring
71
78
 
72
79
  ## Project and issue association
73
80
 
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.
81
+ 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
82
 
76
83
  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
84
 
@@ -87,7 +94,7 @@ Use a normal summary fork when a quick passive summary is enough. Use a plain fo
87
94
 
88
95
  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
96
 
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.
97
+ **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, and its first ~70 characters become the new conversation's title.
91
98
 
92
99
  ## Authoring modes
93
100
 
@@ -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
@@ -48,6 +48,7 @@ state it is in to running work.
48
48
  from the existing xBRIEF and xBRIEF tasks.
49
49
  - **Already running** — `pan start` exits 0 with a no-op message naming `pan tell <id>` for
50
50
  messaging and the tmux attach command.
51
+ - **Swarm active** — the bare parent agent is the foreman. `pan start` attaches to or restores that foreman instead of refusing because slot agents exist; it never creates a competing serial parent.
51
52
 
52
53
  Planning depth is controlled by `--plan`:
53
54
 
@@ -65,6 +66,8 @@ Start-time policy flags are persisted on the issue before planning or work begin
65
66
  sets the durable work-model override used by later respawns, `--swarm` accepts `off`, `auto`,
66
67
  or `always`, `--review-mode` accepts `quick`, `full`, or `none`, and `--review-model` pins the
67
68
  model used by the review convoy. Omitted flags leave existing and inherited policy untouched.
69
+ Swarm mode controls automatic foreman creation, not Deacon slot dispatch. `off` keeps serial work,
70
+ while `auto` and `always` allow a readiness-eligible foreman loop.
68
71
  When this start also kicks off planning (no plan exists yet), `--plan-model <model>` overrides
69
72
  the planning agent's model for that session only — it is a one-shot override, not persisted
70
73
  policy, and it never changes the work agent's model (`--model`).