@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
@@ -42,20 +42,33 @@ allowed-tools:
42
42
  3. **Written tightening:** `docs/prds/planned/pan-dashboard-unified-redesign.md`
43
43
  §4.5 ("Color & Style Discipline") — the PAN-1148 "Always means / Never used
44
44
  for" table now folded into the guide.
45
- 4. **Tokens:** `src/dashboard/frontend/src/index.css` (light/dark color
46
- blocks, `@font-face` declarations, theme font tokens, and the
47
- `.display-xl`/`.display-lg`/`.eyebrow` Broadsheet utilities) and
48
- `src/dashboard/frontend/tailwind.config.js`. Conformance is exercised by
49
- `tests/e2e/styleguide-conformance.spec.ts`.
45
+ 4. **Tokens:** `src/dashboard/frontend/src/index.css` — the unscoped
46
+ `:root`/`.dark` blocks (Ledger's untouched default), `@font-face`
47
+ declarations, theme font tokens, the `.display-xl`/`.display-lg`/
48
+ `.eyebrow` Broadsheet utilities, and, after `.dark` closes, the PAN-3706
49
+ four-scope region carrying every color/surface/border/shadow/radius/
50
+ type/motion token plus the `.chip`/`.soft-card`/`.large-cta`/`.keycap`/
51
+ `.dot-metadata` component patterns — and `src/dashboard/frontend/
52
+ tailwind.config.js` (`boxShadow`, `fontFamily.mono-ui`, and the
53
+ `safelist` entries for classes not yet consumed by any `.tsx` file).
54
+ Conformance is exercised by `tests/e2e/styleguide-conformance.spec.ts`.
50
55
 
51
56
  ## Themes: Ledger (legacy) vs. Broadsheet (default)
52
57
 
53
58
  Overdeck ships two named design languages behind a single `ui.theme` setting
54
59
  (`~/.overdeck/config.yaml`, default `broadsheet`) and a `data-theme` attribute
55
- on `<html>`. **Ledger** is the pre-PAN-3410 style — DM Sans, flat
56
- `font-medium` cap, no display tier — now frozen: bug fixes only, never new
57
- patterns. **Broadsheet** is the active theme: Geist/Geist Mono, a tiered
58
- weight system, a display scale, and the new component vocabulary below.
60
+ on `<html>` (independent of the `.dark` class, which carries light/dark
61
+ color-scheme — the two axes never interact). **Ledger** is the pre-PAN-3410
62
+ style — DM Sans, flat `font-medium` cap, cool blue-gray neutrals, no display
63
+ tier — now frozen: bug fixes only, never new patterns. **Broadsheet** is the
64
+ active theme: Geist/Geist Mono, a tiered weight system, a display scale, and
65
+ the new component vocabulary below — plus, as of PAN-3706, its own warm
66
+ neutral color ramp, stepped surfaces, opaque borders, a shadow/elevation
67
+ scale, a smaller base radius, 13px/1.6 body type, and an ambient-wash
68
+ background in place of Ledger's noise film. Before PAN-3706 the color/
69
+ surface/elevation/radius/texture system was accidentally shared between both
70
+ themes (a font-only migration); it is not anymore — see "Color, surface, and
71
+ elevation now differ by theme" below.
59
72
 
60
73
  **The theme rule for new surfaces:** author against the Broadsheet
61
74
  vocabulary (`.display-xl`, `.display-lg`, `.eyebrow`, chips, soft cards,
@@ -83,6 +96,59 @@ utilities, no theming) if reached while Ledger is active. A component built
83
96
  with them is a Broadsheet-only component by construction; don't reach for
84
97
  them on a surface that must still render under Ledger.
85
98
 
99
+ ## Color, surface, and elevation now differ by theme (PAN-3706)
100
+
101
+ The color system is no longer identical between themes (it was, pre-PAN-3706
102
+ — see guide §2/§4). `:root`/`.dark` in `index.css` stay the untouched Ledger
103
+ default; Broadsheet's real values live in a later region that overrides them
104
+ per the four-scope contract below. What's still shared: signal-color
105
+ *semantics* (what `--destructive`/`--warning`/etc. mean) and the badge tint
106
+ *formula* (8%/32%). What now differs: the neutral ramp (warm HSL vs cool
107
+ gray), `--background`/`--card`/`--popover` step apart under Broadsheet
108
+ instead of collapsing to one flat color, `--border`/`--input` are opaque
109
+ under Broadsheet instead of near-invisible `color-mix()`, `--radius` itself
110
+ (10px Ledger / 6px Broadsheet — not just the badge tier), a role-named
111
+ `--shadow-sm/md/lg/xl/card/floating/overlay` scale that actually resolves to
112
+ something visible on dark surfaces, body type (13px/1.6/antialiased under
113
+ Broadsheet vs. browser default under Ledger), and the background treatment
114
+ (Ledger keeps the fractal-noise film; Broadsheet swaps it for an ambient
115
+ corner wash via a new `--wash` token — not a retargeted `--accent`, which
116
+ stays the hover-surface token in both themes). New tokens: `--primary-ink`
117
+ (text-safe accent), `--body-foreground`/`--faint-foreground` (rounding
118
+ `--foreground`/`--muted-foreground` out to a four-tier ramp), `--wash`, a
119
+ `--type-size-*`/`--type-leading-*`/`--type-tracking-*` vocabulary (defined,
120
+ not yet adopted by components), and `--ease-*`/`--duration-*` motion tokens
121
+ (same — defined, not yet wired into existing animations). `--font-mono-ui`
122
+ splits UI-chrome monospace (labels, IDs, timestamps) from `--font-mono`
123
+ (code + the eyebrow exception) — Ledger resolves both to the same SF Mono
124
+ stack, Broadsheet gives UI-mono a tighter system stack instead of Geist
125
+ Mono's code-tuned metrics.
126
+
127
+ **The four-scope selector contract** is what makes every one of those tokens
128
+ resolve correctly by theme. Because `.dark` and `data-theme` both live on
129
+ `<html>` at once, and because Settings → Appearance nests a `[data-theme]`
130
+ scope inside the ambient document for its comparison specimens, a
131
+ theme-varying token needs **four** blocks, placed after `:root`/`.dark` in
132
+ source order (equal-specificity attribute selectors win on source order, not
133
+ specificity):
134
+
135
+ ```
136
+ [data-theme="ledger"] — light, restate today's value
137
+ [data-theme="broadsheet"] — light, new value
138
+ .dark[data-theme="ledger"], .dark [data-theme="ledger"] — dark, restate today's value
139
+ .dark[data-theme="broadsheet"], .dark [data-theme="broadsheet"] — dark, new value
140
+ ```
141
+
142
+ Same-element (`.dark[data-theme=...]`) matches `<html>` itself; descendant
143
+ (`.dark [data-theme=...]`) matches a nested Appearance-picker specimen —
144
+ both are required or a nested specimen inherits the wrong theme. For a
145
+ non-color-token rule (a `body` background, a utility class), gate it on a
146
+ custom property with a `var()` fallback rather than a bare descendant
147
+ selector — `--badge-radius` and the `.display-xl`/`.display-lg`/`.eyebrow`
148
+ properties are the established examples; a descendant selector matches
149
+ through *any* ancestor with the attribute and breaks nesting, a custom
150
+ property cascades by DOM proximity and doesn't. Full mechanics: guide §4a.
151
+
86
152
  ## The rules agents violate most (memorize these)
87
153
 
88
154
  ### Typography — Ledger (legacy baseline, verbatim)
@@ -144,9 +210,12 @@ purple = specialist verb, cyan = money, neutral = everything else.**
144
210
  (`bg-{signal}/8 border-{signal}/32 text-{signal}-foreground`) — identical
145
211
  in both themes (D-11, unchanged). No pills (`rounded-full`) for status
146
212
  badges.
147
- - Radius: `rounded-sm` under Ledger, `rounded-md` under Broadsheet — the
148
- **one** deliberate radius change in the whole theme revision. Nothing else
149
- about the badge formula differs between themes.
213
+ - Radius: `rounded-sm` under Ledger, `rounded-md` under Broadsheet — the one
214
+ deliberate radius-*tier* change from PAN-3410, layered on top of PAN-3706's
215
+ smaller Broadsheet base `--radius` (10px Ledger / 6px Broadsheet), which
216
+ now also shrinks every other `rounded-*` utility computed from it (buttons,
217
+ cards, dialogs — see "Color, surface, and elevation" above). Nothing else
218
+ about the badge *formula* (8%/32% tint) differs between themes.
150
219
  - Pick ONE indicator pattern per context — don't mix dots + badges + colored
151
220
  text for the same concept in one view.
152
221
 
@@ -186,9 +255,15 @@ hardcoded hex (#22c55e, #ef4444, …) → semantic tokens
186
255
  slate-* grays (cold) → neutral-* (warm) — everywhere
187
256
  ```
188
257
 
189
- Surfaces: depth via tonal layering (`--card`, `--card-2`), not shadows;
190
- borders `white/6%` dark, `black/5%` light; light-mode cards are borderless
191
- (ambient shadow instead).
258
+ Surfaces: depth via tonal layering (`--card`, `--card-2`), not shadows —
259
+ shadows stay reserved for floating elements only (dialogs, dropdowns,
260
+ tooltips, popovers, dragged items), never inline cards/panels. Border/wash
261
+ values are theme-scoped and no longer share one description: Ledger keeps
262
+ low-alpha `color-mix()` borders (`white/6%` dark, `black/8%` light,
263
+ near-invisible by design, light-mode cards borderless with an ambient
264
+ shadow instead) and the noise-film texture; Broadsheet uses opaque HSL
265
+ borders and an ambient corner wash instead (see "Color, surface, and
266
+ elevation" above).
192
267
 
193
268
  ### Brand mark — the control ring (guide §19)
194
269
 
@@ -78,8 +78,13 @@ RESPONSE=$(printf '%s' "$INPUT" | jq -r '
78
78
  [ -n "$RESPONSE" ] || RESPONSE=''
79
79
 
80
80
  if [ "$TOOL_NAME" = 'mcp__linear__authenticate' ]; then
81
+ # Linear's hosted MCP server (mcp.linear.app) returns its authorization URL
82
+ # as https://mcp.linear.app/authorize?…; the older form was
83
+ # https://linear.app/oauth/authorize?…. Match both — a regex that only
84
+ # knows one host silently emits required with a null URL and the banner
85
+ # waits forever (observed 2026-08-15).
81
86
  AUTH_URL=$(printf '%s\n' "$RESPONSE" \
82
- | grep -Eo 'https://linear\.app/oauth/authorize[^"[:space:]<>]*' 2>/dev/null \
87
+ | grep -Eo 'https://(mcp\.linear\.app/authorize|linear\.app/oauth/authorize)[^"[:space:]<>]*' 2>/dev/null \
83
88
  | sed -n '1p')
84
89
  emit_required "$AUTH_URL"
85
90
  exit 0
@@ -7,13 +7,13 @@ When you spawn a supervised agent (`pan handoff`, or any spawned agent that may
7
7
 
8
8
  An agent whose cwd is the primary repo can `git checkout -b` and commit there, which silently **drifts `main` onto a feature branch** and lets the agent commit straight to `main` — the same write-to-main hazard as PAN-2204. Your own later commits then land on the wrong branch.
9
9
 
10
- For `pan handoff`, pass `--cwd`:
10
+ For `pan handoff`, pass `--cwd` as an **absolute path to an existing directory under your home directory** — the server rejects relative paths, `/tmp` paths, and not-yet-created directories with `Invalid cwd`:
11
11
 
12
12
  ```bash
13
- git worktree add ../hoff-<slug> main # if you don't already have one
14
- pan handoff --model <m> --cwd ../hoff-<slug> --project <key> self "Read .pan/handoff-brief.md FIRST. <goal>"
13
+ git worktree add "$HOME/Projects/hoff-<slug>" main # if you don't already have one
14
+ pan handoff --model <m> --cwd "$HOME/Projects/hoff-<slug>" --project <key> self "Read .pan/handoff-brief.md FIRST. <goal>"
15
15
  ```
16
16
 
17
- Project association inherits automatically from a project-scoped source; use `--project <key>` to override it or associate an unscoped source. Point `--cwd` at any isolated checkout — anything but the primary.
17
+ Run the `pan handoff` command itself from your project directory (not from the `--cwd` target or `/tmp` — sandboxed harnesses block network there). Project association inherits automatically from a project-scoped source; use `--project <key>` to override it or associate an unscoped source. Point `--cwd` at any isolated checkout — anything but the primary.
18
18
 
19
19
  **Why:** a `pan handoff` investigation run in the primary worktree branched + committed there, silently drifting `main` and stranding later commits on the wrong branch (2026-07-01). Isolation keeps every spawned agent's commits on its own branch, where review/merge can gate them.
@@ -1,16 +1,23 @@
1
1
  ---
2
2
  scope: universal
3
3
  ---
4
- ### `pan handoff` focus is capped at 500 chars — put long briefs in a file
4
+ ### `pan handoff` focus: keep it short; the hard ceiling is 10,000 chars
5
5
 
6
- The `pan handoff` **focus** (the trailing text after `self`/`<conv>`) is hard-capped at **500 characters**. A longer focus is rejected outright — the CLI prints `Focus is N characters — the limit is 500` and **creates no conversation**. Do not try to cram a full brief into the focus.
6
+ The `pan handoff` **focus** (the trailing text after `self`/`<conv>`) is a steering
7
+ statement, not the brief. Since PAN-3737 the hard cap is **10,000 characters**
8
+ (multi-line focus is allowed), so accidental rejection is effectively gone — but a
9
+ short focus still works better: it becomes the conversation title and steers the
10
+ handoff author, while detail belongs in the transcript or a brief file.
7
11
 
8
- For anything longer than one line, write the full brief to a file in the target cwd and point a short focus at it:
12
+ For a full brief, write it to a file in the target cwd and point the focus at it:
9
13
 
10
14
  ```bash
11
15
  pan handoff self "Read .pan/handoff-brief.md FIRST and follow it exactly. <one-line goal>"
12
16
  ```
13
17
 
14
- Also pass **`self`** (or a real conversation id) **before** the focus text. Omitting it makes the CLI read your focus as a conversation name and fail with `Conversation not found`.
18
+ Also pass **`self`** (or a real conversation id) **before** the focus text. Omitting it
19
+ makes the CLI read your focus as a conversation name and fail with `Conversation not found`.
15
20
 
16
- **Why:** agents repeatedly overrun the 500-char focus and the handoff silently fails to spawn (this has happened on essentially every handoff attempt). A file-backed brief makes the handoff reliable regardless of length, and keeps the full instructions in the new conversation's cwd where it can re-read them.
21
+ **Why:** the old 500-char cap rejected the handoff *after* the agent had done the work,
22
+ on essentially every long focus, burning retry loops. The cap is now a sanity ceiling
23
+ only; the file-backed brief remains the reliable pattern for long instructions.
@@ -0,0 +1,17 @@
1
+ ---
2
+ scope: universal
3
+ ---
4
+ ### Write clear, simple prose — the STE clarity standard
5
+
6
+ Respond in clear, plain, concise, human-readable prose by default. "The
7
+ Elements of Style" (Strunk & White) is the baseline register.
8
+
9
+ On that baseline, use the core principles of ASD-STE100 Simplified Technical
10
+ English as a clarity standard. Use active voice, simple verbs, and short
11
+ sentences. Avoid idioms, slang, and unnecessary jargon. Give each sentence one
12
+ main idea or instruction. Put conditions before dependent actions. Use one
13
+ consistent term for each concept. Prefer 20 words or fewer for procedures and
14
+ 25 words or fewer for descriptions when this preserves accuracy and natural
15
+ flow. Do not force formal STE compliance unless the user asks for it. Keep
16
+ technical identifiers, paths, commands, names, units, prices, and numbers
17
+ exact.
@@ -5,7 +5,7 @@ scope: universal
5
5
 
6
6
  Spawn work agents only through the Overdeck CLI — `pan start <id>`, `pan swarm <id>`, `pan plan <id>`. NEVER spawn a *work* agent via Claude Code's `Agent`/subagent tool.
7
7
 
8
- **Why:** `pan`-spawned agents are registered with Overdeck — a `~/.overdeck/agents/agent-<id>/state.json` carrying `issueId`, a tmux session on the `overdeck` socket, and (for swarms) a swarm-runtime entry. The dashboard's resource-discovery service nests them under their issue with openable terminals, and the review/test/ship pipeline can manage them.
8
+ **Why:** `pan`-spawned agents are registered with Overdeck — a `~/.overdeck/agents/agent-<id>/state.json` carrying `issueId` and a tmux session on the `overdeck` socket. The dashboard nests them under their issue with openable terminals, and the review/test/ship pipeline can manage them.
9
9
 
10
10
  Agents spawned via the `Agent` tool run as ephemeral subagents inside the caller's session — no state file, no `issueId`, no `overdeck`-socket session. The dashboard cannot discover them; they cannot be paused, resumed, reviewed, merged, or recovered through the pipeline.
11
11
 
@@ -13,5 +13,6 @@ Agents spawned via the `Agent` tool run as ephemeral subagents inside the caller
13
13
 
14
14
  - **work** (implementation), **plan**, **review/test/ship** → always `pan`.
15
15
  - Claude Code's built-in `Explore` / `general-purpose` subagents are fine for *throwaway code investigation* — they produce no deliverable and are not work agents.
16
+ - A swarm foreman may perform a small, high-confidence item in its own context or use a registered standing tier session. The foreman still owns the claim, verification, commit, push, and task transition; an ephemeral subagent never becomes an independent slot.
16
17
 
17
18
  Let Cloister route models — do not pass `--model` unless explicitly asked.
@@ -18,8 +18,9 @@ Rules:
18
18
  4. **Don't shred connected reasoning into bullets.** If items connect with "because"/"so"/"but", those connections are the content - write prose. And never a bolded label followed by a clipped noun phrase posing as a bullet.
19
19
  5. **Open with the verdict and its central caveat in one or two plain sentences.** Not a bolded headline.
20
20
  6. **Conversational but not dramatic.** Use contractions (it's, you'd, don't). Say "so" and "but", not "therefore" and "however". Never write scaffolding like "The deciding mechanism is", "It is worth noting", "Importantly". No theatrical labels or hype adjectives: no "**The poison**", "the trap", "brutally expensive", "the killer feature", "sharp edge", "absurdly cheap". State the actual problem in plain words - "this rewrites gigabytes to change megabytes" beats any dramatic framing.
21
- - No staccato, short dramatic sentences. Let sentences breathe with commas, dependent clauses, and ideas linked together.
21
+ - Vary sentence length and shape, and connect related ideas. A run of same-shape sentences, automatic pairs and triads, or setup/payoff framing reads as generated - break the pattern.
22
22
  - No cheesy setup phrases that introduce a point instead of stating it. Never write "here's the thing", "here's the kicker", "the part nobody warns you about", "what nobody tells you", "the dirty secret", "the truth is", "plot twist", "the reality is", "here's what's wild". State the claim directly.
23
- - No contrastive "not just X, but Y" structure or its variants ("it's not just X, it's Y", "not only X but also Y"). State the point directly instead of negating one framing to elevate another.
23
+ - No contrastive "not just X, but Y" structure or its variants ("it's not just X, it's Y", "not only X but also Y"), and no repeated negative openings ("Not X. Not Y."). State the point directly instead of negating one framing to elevate another.
24
+ - No filler intensifiers, corporate verbs, needless hedges, or performed enthusiasm. Prefer verbs to noun piles. Write for the spoken voice.
24
25
  7. **No compression.** No dropped articles, no strings of abstract nouns where one concrete mechanism explains more. Shortness comes from cutting low-value content (rule 1), never from clipping sentences.
25
26
  8. **End with a bottom line only when the answer weighed a real decision.** One plain-prose sentence: the call plus the condition that would flip it. Short factual or confirmation answers just end - no formulaic closer.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: skill-creator
2
+ name: claude-skill-creator
3
3
  description: Guide for creating effective Claude Code skills. Use when users want to create a new skill, update an existing skill, or need guidance on skill best practices. Triggers on requests like "create a skill", "make a new skill", "help me build a skill", "skill development", or "extend Claude's capabilities".
4
4
  license: Apache 2.0 (based on Anthropic's skills repo)
5
5
  ---
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env python3
1
+ #!/usr/bin/env python3
2
2
  """
3
3
  Skill Initializer - Creates a new skill from template
4
4
 
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env python3
1
+ #!/usr/bin/env python3
2
2
  """
3
3
  Skill Packager - Creates a distributable .skill file
4
4
 
@@ -0,0 +1,182 @@
1
+ ---
2
+ name: pan-gauntlet-loop
3
+ description: >-
4
+ Run a Gauntlet Loop — fan out builder sub-agents per area, judge each with
5
+ a SEPARATE harsh critic in a blind A/B against a named reference bar, keep
6
+ looping until every area wins, and track it all on a live progress page.
7
+ Use when the user wants to take any project, feature, or domain to an
8
+ extreme quality tier ("make it AAA", "at the level of <reference>",
9
+ "utterly perfect", "run the gauntlet", "gauntlet loop"). Works for any
10
+ domain — games, UI, CLIs, APIs, libraries, docs, performance, writing.
11
+ triggers:
12
+ - gauntlet loop
13
+ - run the gauntlet
14
+ - gauntlet
15
+ - AAA quality pass
16
+ - at the level of
17
+ - utterly perfect
18
+ - fan out sub-agents
19
+ allowed-tools:
20
+ - Bash
21
+ - Read
22
+ - Write
23
+ - Edit
24
+ - WebFetch
25
+ - WebSearch
26
+ - Task
27
+ ---
28
+
29
+ # Gauntlet Loop
30
+
31
+ Take any domain to a named quality bar with a builder/critic loop: fan out a
32
+ builder sub-agent per area, judge each area with a **separate** harsh critic
33
+ (fresh context, blind A/B against the reference, binary verdict), feed defects
34
+ back, and loop until every area is WOWED. A live progress page tracks every
35
+ area, screenshot, verdict, and defect list.
36
+
37
+ Origin: Matt Shumer's gauntlet prompt; hardened by run #1 lessons
38
+ (`references/lessons.md` — read it before the first fan-out).
39
+
40
+ ## Phase 0 — Intake: fill the slots, ask about the gaps
41
+
42
+ Extract these slots from the user's request. For every slot that is missing or
43
+ vague, ask via AskUserQuestion — batch up to 4 questions per call, each
44
+ self-contained (the operator may answer from a dashboard dialog without the
45
+ transcript: state the situation, then ask). Never guess the mission.
46
+
47
+ | Slot | Meaning | If missing |
48
+ |---|---|---|
49
+ | THING | What to build / enhance / fix | Ask. Never proceed without it. |
50
+ | REFERENCE | The named quality bar | Propose 2–3 candidates that are **named, fetchable, comparable** (below); ask the user to pick one. |
51
+ | AREAS | The fan-out split | Propose a split from THING (see `references/domains.md`); ask to confirm or edit. |
52
+ | TIER | Quality shorthand | Default: "shipped commercial quality at the level of REFERENCE". |
53
+ | LOOK | The committed direction (art / UX / language / architecture) | Seed from repo conventions; confirm in one AskUserQuestion option set. |
54
+ | STACK | Stack constraints | Default: "this repo, unchanged". Ask only if the request implies a change. |
55
+ | SCOPE | Explicit exclusions | If THING is broad, ask "what is out of bounds on this pass?" |
56
+ | CHECK | How the critic inspects the work | Derive from the domain (`references/domains.md`) — screenshots, CLI transcripts, benchmarks, rendered docs. |
57
+
58
+ REFERENCE is the load-bearing slot. Before accepting it, verify it is:
59
+
60
+ - **Named** — a specific thing ("Civilization VII", "stripe.com's docs"),
61
+ not a category ("a good strategy game").
62
+ - **Fetchable** — the critic can screenshot, read, run, or open it. Fetch the
63
+ reference evidence during setup (below); if you cannot, say so and pick
64
+ another bar with the operator.
65
+ - **Comparable** — the subject's evidence and the reference's evidence can sit
66
+ side by side for a judge to pick one.
67
+
68
+ ## Phase 1 — Setup (before any builder launches)
69
+
70
+ 1. **Isolate the work.** Default: `git worktree add ../<repo>-gauntlet -b
71
+ gauntlet-loop-pass` and run the whole gauntlet there. Offer the current
72
+ checkout instead only when the operator asked to enhance in place.
73
+ 2. **Scaffold `gauntlet/` in the worktree:**
74
+ - `gauntlet/index.html` — copy `{baseDir}/assets/gauntlet-index.html`
75
+ **verbatim** (it renders from status.json; never edit per project).
76
+ - `gauntlet/PROMPT.md` — fill `{baseDir}/assets/PROMPT.template.md` with
77
+ the slots. This is the mission prompt every agent reads.
78
+ - `gauntlet/status.json` — schema below; all areas NOT STARTED.
79
+ - `gauntlet/shots/`, `gauntlet/notes/` — empty dirs.
80
+ 3. **Write the judging contracts in `refs/`:**
81
+ - `refs/STYLE.md` — fill `{baseDir}/assets/STYLE.template.md`: one page,
82
+ the committed direction. Every builder and every critic works from it.
83
+ - `refs/REFERENCE-BAR.md` — fill
84
+ `{baseDir}/assets/REFERENCE-BAR.template.md`: the verdict question,
85
+ automatic failures, scoring dimensions, verdict JSON format.
86
+ - `refs/press/` — the fetched reference evidence (screenshots, transcripts,
87
+ docs). Gitignore third-party media.
88
+ 4. **Serve the progress page:** from `gauntlet/`, run
89
+ `python3 -m http.server <port>` in the background and report the URL.
90
+ (Browsers block `fetch()` from `file://` — the page needs HTTP.)
91
+ 5. **Operator approval gate.** Show the filled `gauntlet/PROMPT.md` to the
92
+ operator and get an explicit go before the first fan-out. The gauntlet
93
+ burns real tokens; the mission it burns them on is the operator's call.
94
+
95
+ ### status.json schema
96
+
97
+ ```json
98
+ {
99
+ "project": "<display title>",
100
+ "tagline": "<one-line mission flavor>",
101
+ "updated": "<ISO>",
102
+ "pass": "<branch name>",
103
+ "areas": {
104
+ "<area-key>": {
105
+ "title": "<human title>",
106
+ "status": "NOT STARTED",
107
+ "iteration": 0,
108
+ "verdict": null,
109
+ "defects": [],
110
+ "note": "<one-line current state>",
111
+ "updated": "<ISO>"
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
117
+ `verdict` is `"WOWED"`, `"NOT_YET"`, or `null`. `defects` holds the top ≤5
118
+ (strings, or `{"element","fix"}` objects). The page polls it every 5s.
119
+
120
+ ## Phase 2 — The loop (per area, areas in waves)
121
+
122
+ 1. **Wave plan.** Assign each area a file-ownership map. Areas that share
123
+ files run in the same wave **serially**; disjoint areas may run in
124
+ parallel. Concurrent agents in one worktree WILL clobber shared files.
125
+ 2. **Build.** Spawn a builder sub-agent for the area with its ownership map,
126
+ the mission prompt, and the current defect list as its work order.
127
+ Builders never commit; the orchestrator reviews and commits per area with
128
+ path-scoped `git add` (in-flight agents keep the tree dirty).
129
+ 3. **Capture evidence.** Launch the real thing and drive it — Playwright for
130
+ UI (1920×1080, realistic data, dev chrome hidden), the CLI at its command,
131
+ the benchmark at its load. Save the canonical shot to
132
+ `gauntlet/shots/<area-key>.png` (or transcript/benchmark to notes/).
133
+ 4. **Critique.** Spawn the critic — ALWAYS a separate sub-agent from the
134
+ builder, fresh context, frontier-tier model, evidence + refs/ only. It
135
+ judges blind per `refs/REFERENCE-BAR.md` and returns the verdict JSON.
136
+ Save it to `gauntlet/notes/critique-<area>-iter<n>.json`.
137
+ 5. **Update the dashboard at every transition** — agent launched / landed /
138
+ awaiting critique / verdict — not just after critiques. A stale dashboard
139
+ is a bug.
140
+ 6. **NOT_YET → the defect list becomes the next iteration's work order** for
141
+ the same area. WOWED → area done. **No fixed round count**: the exit is
142
+ winning, or the operator stopping the run.
143
+
144
+ ## Phase 3 — Stop conditions
145
+
146
+ - **The operator is the brake.** The loop does not finish on its own; when
147
+ they say stop, stop, commit cleanly, and report state.
148
+ - **All areas WOWED** → final report: per-area verdicts and iteration counts,
149
+ the commit log, the dashboard URL, and anything deferred to a later pass.
150
+
151
+ ## The four ways the loop silently fails
152
+
153
+ 1. **Vague bar** — the critic invents a comparison and approves everything.
154
+ 2. **Builder judging its own work** — the critic must be a fresh agent with no
155
+ knowledge of the builder's effort or reasoning.
156
+ 3. **Soft critic** — the verdict is binary (WOWED / NOT_YET + concrete fixes),
157
+ never a score out of 10.
158
+ 4. **Fixed round count** — "3 iterations" ships a prototype. Loop until WOWED.
159
+
160
+ ## Sub-agents and model routing
161
+
162
+ - Fan out with the Agent tool inside this conversation. Gauntlet builders and
163
+ critics are ephemeral conversation sub-agents — the "work agents run through
164
+ `pan`" rule governs managed pipeline issues, not this loop. If the gauntlet
165
+ uncovers work that belongs in the managed pipeline, file an issue and route
166
+ it through `pan start`.
167
+ - Route deliberately: frontier-tier model for design-heavy areas and for ALL
168
+ critics; workhorse-tier for mechanical implementation, tests, and asset
169
+ runs. Critics are where model quality pays — never cheap out on the judge.
170
+ - Sub-agent fan-out requires a harness with the Agent tool. GPT-routed
171
+ claude-code sessions cannot spawn sub-agents — run the gauntlet from a
172
+ Claude session.
173
+
174
+ ## References
175
+
176
+ - `references/lessons.md` — run-#1 operational lessons (file ownership,
177
+ headless rendering, evidence capture, critic protocol, dashboard contract).
178
+ Read before the first fan-out; fold applicable lines into agent prompts.
179
+ - `references/domains.md` — per-domain CHECK (evidence capture), sample area
180
+ splits, automatic-failure lists, and storefront-test phrasing.
181
+ - `assets/` — `gauntlet-index.html` (progress page), `PROMPT.template.md`,
182
+ `STYLE.template.md`, `REFERENCE-BAR.template.md`.
@@ -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.