@overdeck/desktop 0.49.1 → 0.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/drizzle/overdeck/0000_overdeck_init.sql +1 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-B_maCGZv.js} +2 -2
- package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-CCqpFWiz.js} +2 -2
- package/server/activity-logger-B0X2JJwM.js +3 -0
- package/server/{activity-logger-BAVLrkR7.js → activity-logger-SlTXYCVf.js} +22 -4
- package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-BJAfiY-C.js} +12 -7
- package/server/{agent-gc-5E0lgxI1.js → agent-gc-bhikjoJ_.js} +11 -11
- package/server/agent-idle-D-UQ7gDv.js +745 -0
- package/server/agent-state-BrUPf_7Z.js +3 -0
- package/server/{agent-state-Bb3UUxQm.js → agent-state-FABw8neJ.js} +682 -454
- package/server/{agent-state-service-keg-x1bT.js → agent-state-service-BAQApt97.js} +1 -1
- package/server/{agent-state-service-BFbttwRA.js → agent-state-service-rDenYSlD.js} +5 -5
- package/server/agents-DixZjXWm.js +3 -0
- package/server/{agents-CqQJW75N.js → agents-DzpQidT8.js} +8 -8
- package/server/{archive-planning-BwEhu9Oq.js → archive-planning-BL1ABtW0.js} +20 -135
- package/server/archive-planning-D3gw32U9.js +2 -0
- package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Cjdme0jS.js} +3 -3
- package/server/{assemble-DyTp2gSB.js → assemble-B_JgnCbG.js} +28 -9
- package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-BesWchEi.js} +8 -7
- package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-COLq639j.js} +3 -3
- package/server/{behavior-Bitko0mD.js → behavior-DCg8CIWC.js} +3 -3
- package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-BDohuMRt.js} +2 -2
- package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-ENa_hW_V.js} +2 -2
- package/server/build-info-Dx2qrVhb.js +2 -0
- package/server/{build-info-DTX8JwVP.js → build-info-WuZT6xyi.js} +3 -3
- package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-CSZ7aVQF.js} +26 -9
- package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-DXhGRvg4.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-BGfl0cHM.js → checkpoints-DUkUsPVS.js} +2 -2
- package/server/{checkpoints-DRALkfDS.js → checkpoints-tm_w6Y4V.js} +1 -1
- package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-CTh9zxEi.js} +1 -1
- package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-fRofvhTN.js} +2 -2
- package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-DLrb9ovz.js} +18 -3
- package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-BYnXaTVc.js} +2 -2
- package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-CMS5Jab5.js} +1 -1
- package/server/cli-BflmtEFM.js +2 -0
- package/server/{cli-Do8UpLoI.js → cli-CoQou1t_.js} +11 -11
- package/server/{cliproxy-CX6jHRDP.js → cliproxy-DXDQcR3I.js} +52 -17
- package/server/cliproxy-DdhFpcXU.js +3 -0
- package/server/{close-issue-J0_eWYT1.js → close-issue-CpQ0BWg-.js} +5 -5
- package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-CdcJRvUx.js} +13 -12
- package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-TymtZM37.js} +1 -1
- package/server/{codex-icapA4om.js → codex-BValsmtK.js} +1 -1
- package/server/{codex-OOea7lXs.js → codex-DYyZL8JD.js} +16 -10
- package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-CVjbdGKt.js} +3 -3
- package/server/{config-Cjleh3_U.js → config-CvKH7r7W.js} +1 -1
- package/server/{config-tucKBCCc.js → config-NxI9Yl2f.js} +2 -2
- package/server/{config-DC75T4Mr.js → config-_qaa1UXH.js} +2 -2
- package/server/{config-yaml-BwOEANMr.js → config-yaml-D60AnTIu.js} +55 -15
- package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-0dD1kxjN.js} +1 -1
- package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-hAUCL-un.js} +5 -5
- package/server/{context-layers-CSPGc2Hb.js → context-layers-CdpabJj0.js} +3 -3
- package/server/context-layers-Ds1MnEFI.js +4 -0
- package/server/{continue-U3Af0jUq.js → continue-CnvrUfxw.js} +3 -3
- package/server/{control-settings-5k6ixdFW.js → control-settings-Db0uXgVM.js} +310 -7
- package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-B-1KETG9.js} +8 -8
- package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzMXGRiJ.js} +1 -1
- package/server/{conversation-service-BxrB5lUT.js → conversation-service-BL-asWPX.js} +1 -1
- package/server/{conversation-service-BteE4ELK.js → conversation-service-BxIOd5ay.js} +21 -7
- package/server/conversations-CEMfwMt-.js +3 -0
- package/server/{conversations-DhwxsOru.js → conversations-nS6QgYpD.js} +12 -7
- package/server/cost-3FyqKK56.js +838 -0
- package/server/{cost-Bnf9NUC5.js → cost-Cctc-Q9M.js} +3 -3
- package/server/{cost-CQKI6OCu.js → cost-DTuIRE4y.js} +2 -2
- package/server/{cost-sync-B-ADeXKY.js → cost-sync-DfmvLT9L.js} +3 -3
- package/server/{dag-DI9LaK_q.js → dag-o-dUpw1L.js} +6 -19
- package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-BOtXCFkT.js} +1 -1
- package/server/dashboard-db-worker.js +61 -11
- package/server/{deacon-TPYssFYt.js → deacon-CsisLmPt.js} +1735 -172
- package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-DkdkQS5p.js} +3 -3
- package/server/deacon-e6py3jkM.js +4 -0
- package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BCjHiGAY.js} +1 -1
- package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-CMQswEHX.js} +2 -2
- package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-pcliw8Dr.js} +1 -1
- package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BzaE76Xo.js} +3 -3
- package/server/deacon.js +11 -11
- package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-Bs3hxIn6.js} +3 -3
- package/server/dead-end-trip-DUbiRMtT.js +2 -0
- package/server/delivery-DhZGRShH.js +3 -0
- package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-B8sKkA8h.js} +8 -8
- package/server/deploy-queue--smqHLhe.js +2 -0
- package/server/{deploy-queue-o7shYg1j.js → deploy-queue-CCGWXFkp.js} +2 -2
- package/server/{deploy-window-CNT6fOff.js → deploy-window-YuJewzmC.js} +4 -4
- package/server/{deploy-window-BMk5_oX6.js → deploy-window-hgsvZ3UZ.js} +1 -1
- package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-4SBloJHV.js} +2 -2
- package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-BiJhwFNi.js} +3 -3
- package/server/{dist-CPTO_zMR.js → dist-CoR2sivG.js} +1 -1
- package/server/dist-FHv1s5ez.js +3 -0
- package/server/{docker-B7qUZptz.js → docker-CWO7dcIP.js} +3 -3
- package/server/{docker-KR3zSFKY.js → docker-DQzyMXkd.js} +1 -1
- package/server/{dod-gK835UMf.js → dod-BAk5arLF.js} +1 -1
- package/server/{done-preflight-CksRvh49.js → done-preflight-CGFA0M1b.js} +1 -1
- package/server/{done-preflight-Bk8aExAL.js → done-preflight-Cx9JGznT.js} +5 -5
- package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
- package/server/durable-review-pipeline-BOEZ0chh.js +3 -0
- package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-Djx_lvFd.js} +11 -2
- package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-Dk6ZMOUC.js} +1 -1
- package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-DzYBBwnM.js} +4 -4
- package/server/{esm-shims-1htPASWs.js → esm-shims-deFq5Hhl.js} +1 -1
- package/server/{event-store-BgEjNsvk.js → event-store-C50Qt-f1.js} +1 -1
- package/server/{event-store-D7qcJXuZ.js → event-store-DTns2XZP.js} +5 -5
- package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-Bu1Qrg6v.js} +1 -1
- package/server/{events-BIKGJZOT.js → events-B6xW8Cpm.js} +3 -3
- package/server/{dist-src-BM9eudEd.js → factory-CWVKwKFE.js} +714 -2
- package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-vaxRN3WO.js} +3 -3
- package/server/{features-CGopJXdU.js → features-DXWwktJB.js} +2 -2
- package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-CXAYe2rU.js} +2 -2
- package/server/{feedback-target-CkyLYohm.js → feedback-target-DSVpi0gT.js} +1 -1
- package/server/{feedback-target-Ci6N5p4G.js → feedback-target-yPD_wclF.js} +10 -10
- package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-BzN4qvaP.js} +1 -1
- package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-Ds1Wjsz4.js} +5 -5
- package/server/{flywheel-DXI_WITn.js → flywheel-BCZS-FlW.js} +1 -1
- package/server/{flywheel-BwYPDlhK.js → flywheel-CC4gE_rx.js} +15 -15
- package/server/{flywheel-C7yek87O.js → flywheel-DWKd7bMc.js} +79 -29
- package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-DDT3i57u.js} +1 -1
- package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-DJwH2KpL.js} +17 -15
- package/server/forge-4VVCRcF7.js +2 -0
- package/server/{forge-DYX9sKzG.js → forge-CHADjOFs.js} +2 -2
- package/server/{from-DAdMxC29.js → from-C3dzmjSO.js} +1 -1
- package/server/{fs-lock-cw25uO_E.js → fs-lock-DQ_gUxfq.js} +2 -2
- package/server/{fts-operations-D_rzLxX5.js → fts-operations-asZo2fh1.js} +3 -3
- package/server/git-info-DMOSfJ9I.js +148 -0
- package/server/{git-utils-Y0zG25ez.js → git-utils-BAMwn9Nf.js} +1 -1
- package/server/{git-utils-DV4B9TRl.js → git-utils-BdHk8y7g.js} +4 -4
- package/server/{github-app-C33lDk9Z.js → github-app-BWziYCf3.js} +1 -1
- package/server/{github-app-4UX8VIr8.js → github-app-BlMSzSTw.js} +2 -2
- package/server/{github-client-nPj5ckZO.js → github-client-OK24qpol.js} +1 -1
- package/server/{github-client-DkJVR908.js → github-client-w6j5nVlz.js} +3 -3
- package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-bGcsEvLE.js} +2 -2
- package/server/{harness-binary-BgXYDo2Z.js → harness-binary-DChiynaB.js} +2 -2
- package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-BplBEbwn.js} +4 -4
- package/server/{health-events-jMfxrElt.js → health-events-BTqsmunw.js} +1 -1
- package/server/{health-events-DlX_FVAB.js → health-events-Bk3LjaJ9.js} +2 -2
- package/server/{hooks-NQ19vvlB.js → hooks-DJR1yR9w.js} +2 -2
- package/server/{hooks-W3REcb3h.js → hooks-EndRNrx9.js} +1 -1
- package/server/{hume-BFkid2PO.js → hume-1FJmNDTq.js} +2 -2
- package/server/hume-gXLmRhmN.js +3 -0
- package/server/{identity-Bwh6VGeL.js → identity-C3s8lyp0.js} +3 -3
- package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-CBelVOE3.js} +1 -1
- package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-DtoI4al6.js} +4 -4
- package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-B7khcBdQ.js} +1 -1
- package/server/{infra-KTp9KV9u.js → infra-CJRi_5Wu.js} +36 -7
- package/server/{injection-67YyU6SC.js → injection-ADWQ3D0s.js} +8 -8
- package/server/{injection-BxbZKPDh.js → injection-BWsgHvrL.js} +1 -1
- package/server/{inspect-agent-VHSihlb7.js → inspect-agent-CCfNJjKr.js} +12 -12
- package/server/inspect-agent-Dhp3hCGp.js +2 -0
- package/server/{internal-token-B-z-sGBH.js → internal-token-BCTEqUCX.js} +1 -1
- package/server/{internal-token-zY75jrRJ.js → internal-token-BeIWG_kT.js} +2 -2
- package/server/{io-DfvO2xyh.js → io-BCtZoXHo.js} +5 -5
- package/server/{issue-closed-dvEWKO7Q.js → issue-closed-CiYAa6bX.js} +7 -7
- package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-BETNVVLq.js} +206 -29
- package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DaKN57sx.js} +1 -1
- package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-1Q0ER8Yc.js} +1 -1
- package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-C_sZ0HjP.js} +124 -11
- package/server/issue-title-fallback-B91iD66g.js +120 -0
- package/server/{issues-CkvUoAnq.js → issues-RGHQUKhB.js} +2 -2
- package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-Dfs1dlYE.js} +3 -3
- package/server/jsonl-resolver-bFtftCDd.js +324 -0
- package/server/{kimi-code-DoMoGqIu.js → kimi-code-BxkDgaj4.js} +1 -1
- package/server/{kimi-code-C26gmGxM.js → kimi-code-CNYRA8Dd.js} +14 -12
- package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-OcWwmOqF.js} +2 -2
- package/server/{label-cleanup-X2lWfghH.js → label-cleanup-CefxK9tL.js} +3 -3
- package/server/{lifecycle-B0rL38D3.js → lifecycle-DDZ7w-BY.js} +6 -6
- package/server/{lifecycle-Bg44O-9x.js → lifecycle-DVXyUil2.js} +2 -2
- package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-D1oBiMce.js} +1 -1
- package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-D7N0vQNj.js} +5 -5
- package/server/{linear-client-B0cIkTs4.js → linear-client-DUN7zCeb.js} +3 -3
- package/server/{linear-client-6V2E-DSa.js → linear-client-TL32snOy.js} +1 -1
- package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-CtRKSHy5.js} +1 -1
- package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-bB0CPyjh.js} +5 -5
- package/server/memory-fts-worker.js +1 -1
- package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cvv_9K0M.js} +88 -22
- package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-C6DJJQRA.js} +38 -14
- package/server/{merge-BGWcBxku.js → merge-DOCR6pHi.js} +1 -1
- package/server/{merge-vz80RvSE.js → merge-FTk4LsnM.js} +3 -3
- package/server/{merge-agent-GWhmnxFk.js → merge-agent-C-dsN9se.js} +37 -33
- package/server/{merge-agent-BRSz26Oh.js → merge-agent-D-4_iQgy.js} +2 -2
- package/server/{merge-batch-CFMEtTxv.js → merge-batch-BJjzUUL7.js} +1 -1
- package/server/{merge-completeness-CP347umA.js → merge-completeness-BOtBUwTU.js} +4 -4
- package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-CoLJxfUY.js} +1 -1
- package/server/merge-eligibility-C4rTS97F.js +3 -0
- package/server/merge-eligibility-D7wRnJbj.js +51 -0
- package/server/merge-ops-Cf02szJ5.js +2 -0
- package/server/merge-rebase-Bj7eJAG4.js +2 -0
- package/server/{merge-rebase-C5htyEEH.js → merge-rebase-KBw4rdh3.js} +2 -2
- package/server/{merge-set-DsGW8fmc.js → merge-set-CVfEM57p.js} +1 -1
- package/server/{merge-set-eiE2nC6C.js → merge-set-CyW-xSn4.js} +4 -4
- package/server/{merge-sync-CM2-myXu.js → merge-sync-CYGsJy0u.js} +1 -1
- package/server/{merge-sync-Ct0-cxMX.js → merge-sync-YLvOPAry.js} +2 -2
- package/server/{merge-train-BOu3fN7O.js → merge-train-VxLn8Ms4.js} +4 -4
- package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-D0y4hBB9.js} +4 -4
- package/server/{merge-verification-BRp08IzI.js → merge-verification-BfJRNMiD.js} +6 -6
- package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-Bh5fKG_b.js} +4 -4
- package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-Ci9oeFAe.js} +1 -1
- package/server/messaging-Dfbhgjd6.js +3 -0
- package/server/{multipart-parser-OAuW7824.js → multipart-parser-BYwfKOVU.js} +2 -2
- package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-DjMQRkId.js} +1 -1
- package/server/node_modules/.package-lock.json +24 -24
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/AGENTS.md +14 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/CLAUDE.md +14 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/README.md +10 -3
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/package.json +2 -2
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/10_basics.ts +175 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/40_sql/index.md +6 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/10_basics.ts +3 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/51_http-server/20_testing.ts +100 -0
- 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
- 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
- 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
- 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
- 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
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/ai-docs/src/70_cli/10_basics.ts +31 -5
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js +10 -9
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeChildProcessSpawner.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js +12 -9
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeClusterSocket.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocket.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeSocketServer.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.d.ts.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js +10 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/NodeStream.js.map +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts +4 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.d.ts.map +1 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js +10 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/dist/internal/nodeChildProcessSpawner.js.map +1 -0
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +7 -7
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeChildProcessSpawner.ts +16 -11
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeClusterSocket.ts +15 -12
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocket.ts +1 -1
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeSocketServer.ts +4 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/NodeStream.ts +10 -4
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/src/internal/nodeChildProcessSpawner.ts +16 -0
- package/server/node_modules/@types/node/README.md +1 -1
- package/server/node_modules/@types/node/buffer.buffer.d.ts +5 -5
- package/server/node_modules/@types/node/crypto.d.ts +2 -2
- package/server/node_modules/@types/node/http.d.ts +16 -0
- package/server/node_modules/@types/node/http2.d.ts +10 -2
- package/server/node_modules/@types/node/package.json +2 -2
- package/server/node_modules/@types/node/process.d.ts +52 -0
- package/server/node_modules/@types/node/quic.d.ts +210 -28
- package/server/node_modules/@types/node/sqlite.d.ts +6 -2
- package/server/node_modules/@types/node/test.d.ts +36 -0
- package/server/node_modules/ansi-regex/index.js +3 -2
- package/server/node_modules/ansi-regex/package.json +1 -1
- package/server/node_modules/effect/node_modules/uuid/README.md +19 -19
- package/server/node_modules/effect/node_modules/uuid/dist/v1.js +7 -3
- package/server/node_modules/effect/node_modules/uuid/dist/v7.js +5 -2
- package/server/node_modules/effect/node_modules/uuid/dist-node/v1.js +7 -3
- package/server/node_modules/effect/node_modules/uuid/dist-node/v7.js +5 -2
- package/server/node_modules/effect/node_modules/uuid/package.json +4 -3
- package/server/node_modules/gaxios/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/build/esm/tsconfig.tsbuildinfo +1 -1
- package/server/node_modules/gaxios/package.json +3 -3
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs +11 -5
- package/server/node_modules/msgpackr/dist/index-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index-no-eval.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.js +11 -5
- package/server/node_modules/msgpackr/dist/index.js.map +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js +1 -1
- package/server/node_modules/msgpackr/dist/index.min.js.map +1 -1
- package/server/node_modules/msgpackr/dist/node.cjs +11 -5
- package/server/node_modules/msgpackr/dist/node.cjs.map +1 -1
- package/server/node_modules/msgpackr/dist/test.js +11 -5
- package/server/node_modules/msgpackr/dist/test.js.map +1 -1
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs +11 -5
- package/server/node_modules/msgpackr/dist/unpack-no-eval.cjs.map +1 -1
- package/server/node_modules/msgpackr/package.json +1 -1
- package/server/node_modules/msgpackr/unpack.js +11 -5
- package/server/node_modules/picomatch/lib/parse.js +10 -1
- package/server/node_modules/picomatch/lib/scan.js +30 -18
- package/server/node_modules/picomatch/package.json +1 -1
- package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-CnP0K2v3.js} +2 -2
- package/server/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-nFUlquZt.js} +24 -23
- package/server/package-lock.json +25 -25
- package/server/package.json +1 -1
- package/server/{pan-dir-DDd91kMb.js → pan-dir-B4NfzOf3.js} +5 -5
- package/server/{deacon-merge-BOGFEV8_.js → parked-residue-8WbU0y1z.js} +188 -69
- package/server/{paths-CRLnDgcI.js → paths-rETQhTF2.js} +2 -2
- package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-yAwDuGS4.js} +2 -2
- package/server/{pickup-BjJsSX12.js → pickup-Dle6k9Xt.js} +1 -1
- package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-CeWhQzXC.js} +5 -5
- package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-BV4hdkHm.js} +1 -1
- package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-C9ykcjsn.js} +1 -1
- package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-Ba0wJNCR.js} +17 -12
- package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-C9E22B2W.js} +1 -1
- package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-B5DPXvnr.js} +1 -1
- package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-p190L97e.js} +2 -2
- package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-OQoK8Ckg.js} +3 -3
- package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DFaf7OI1.js} +4 -4
- package/server/prd-locations-F2oLSAhy.js +124 -0
- package/server/{project-pipelines-CCkebHOu.js → project-pipelines-CUsa6U59.js} +2 -2
- package/server/project-repos-BVdi9-ch.js +3 -0
- package/server/{project-repos-B4MK48j4.js → project-repos-CsfvLtmr.js} +29 -3
- package/server/project-resource-refresh-queue-BehrH4Ai.js +865 -0
- package/server/project-resource-refresh-queue-D2110Guc.js +2 -0
- package/server/{projects-DvPEAP18.js → projects-BMuEf14J.js} +1 -1
- package/server/{prompts-BiS5I2tZ.js → prompts-CKpDt8Jn.js} +2 -2
- package/server/providers-Buv2wmFU.js +3 -0
- package/server/{providers-DrfK0Ip8.js → providers-CxPKmyif.js} +7 -7
- package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-DZOQVqV1.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-oKeXcbO1.js} +1 -1
- package/server/public/assets/{dist-CSmUXazd.js → dist-2qPmeRzT.js} +3 -3
- package/server/public/assets/{dist-D0ryefak.js → dist-ClBlE-Nm.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-BwdG9fQv.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-BzGNdskQ.js} +1 -1
- package/server/public/assets/index-CdPveU3M.css +1 -0
- package/server/public/assets/index-Cg6tdZoY.js +860 -0
- package/server/public/assets/{linear-BPE7oswm.js → linear-DpEt1TJb.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-6KBD_3T_.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-9BpM4oRJ.js} +1 -1
- package/server/public/assets/{prod-aKDYUrXQ.js → prod-CzJiNNEG.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BXWVAoZx.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-5oxodGEw.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-BChDrHxZ.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/pull-requests-CmlandI7.js +2 -0
- package/server/{pull-requests-BcHIsFJv.js → pull-requests-T0OV0Vn4.js} +3 -3
- package/server/{rally-B1OMtzch.js → rally-CUqj2oIN.js} +3 -3
- package/server/rally-DYIn9R2U.js +3 -0
- package/server/{rally-api-ShZ4kvn0.js → rally-api-BFPb2oSq.js} +2 -2
- package/server/{rally-api-u_vkr5c_.js → rally-api-BoucQG1u.js} +1 -1
- package/server/{rally-client-D6Feq1Ka.js → rally-client-16iObny7.js} +5 -5
- package/server/{rally-client-DgZvUZqX.js → rally-client-CsqLjLLa.js} +1 -1
- package/server/{reap-terminal-sessions-CRfiXLY0.js → reap-terminal-sessions-BaDSNR-k.js} +2 -2
- package/server/{reap-terminal-sessions-D7f3zSE9.js → reap-terminal-sessions-DgEIKMhH.js} +2 -2
- package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-BcBVFJp3.js} +2 -2
- package/server/{rebuild-stack-DKxOnkpE.js → rebuild-stack-CyXMrj6K.js} +7 -7
- package/server/reconciler-caYiRnPy.js +657 -0
- package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-3JzPOune.js} +7 -7
- package/server/{record-By-wp6pg.js → record-DYOg97Iv.js} +1 -1
- package/server/{record-update-D23jPU6b.js → record-update-BPqpBu3O.js} +9 -7
- package/server/{record-update-ByGtIlUK.js → record-update-CDPEX7BH.js} +1 -1
- package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-CpfW6LCJ.js} +43 -10
- package/server/{recovery-trip-qloOYOFz.js → recovery-trip-xqKC07Gy.js} +1 -1
- package/server/{release-engine-Crc0Tjx-.js → release-engine-C_OOhCaK.js} +5 -5
- package/server/{release-set-DDXwbIK7.js → release-set-DOIDz2vw.js} +3 -3
- package/server/{remote-oEMfXlwT.js → remote-BTh-sjpX.js} +3 -3
- package/server/{remote-agents-Bgtc2nOO.js → remote-agents-DbbN7vSm.js} +6 -6
- package/server/{remote-agents-DQVGZVQ9.js → remote-agents-MuXx2gWm.js} +1 -1
- package/server/{remote-completion-DxUJ5HKR.js → remote-completion-LcWCpAm2.js} +13 -13
- package/server/{remote-CBpLi4Yy.js → remote-xY0B43Ho.js} +3 -3
- package/server/{resolver-CuAULbLs.js → resolver-C2QKOf09.js} +2 -2
- package/server/{resolver-C8rooxoz.js → resolver-D4nsxfGo.js} +31 -8
- package/server/resume-ByUrJUNX.js +3 -0
- package/server/{review-agent-7C2w5CzU.js → review-agent-BRBTm1qE.js} +43 -55
- package/server/review-agent-Caodi0PX.js +3 -0
- package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DgaDlbO4.js} +6 -6
- package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-BBvyuRLC.js} +20 -11
- package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DCzWMMvE.js} +1 -1
- package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-THHMKlXJ.js} +3 -3
- package/server/{review-status-CUnjjOUu.js → review-status-Bge_3XTR.js} +1 -1
- package/server/{review-status-DBnR5t4z.js → review-status-DpniqzPT.js} +113 -44
- package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-D7sM720S.js} +3 -3
- package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-PDI4-faj.js} +3 -3
- package/server/{review-status-source-DSn0glLa.js → review-status-source-D2PCWS6E.js} +1 -1
- package/server/{review-status-source-Ct912fv_.js → review-status-source-Jq0BXmn3.js} +1 -1
- package/server/{review-status-sync-B7V_Gg51.js → review-status-sync-C6ZKTI8f.js} +11 -8
- package/server/{review-status-sync-YthpOH_q.js → review-status-sync-CvpHWyvR.js} +1 -1
- package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-B2ojHFH5.js} +8 -8
- package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-tyMoLT2L.js} +1 -1
- package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Cy_1pnIj.js} +7 -7
- package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-DjrJ64eS.js} +1 -1
- package/server/{rollup-DZwH4CLs.js → rollup-Cp0KEoOu.js} +1 -1
- package/server/{rollup-QCwYcBdP.js → rollup-DU3xBQu2.js} +8 -8
- package/server/{scanner-2aHeLC3W.js → scanner-BFKG3Gxv.js} +8 -8
- package/server/{search-DwHYaj66.js → search-DhtKwbBC.js} +2 -2
- package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
- package/server/{sequence-io-POKWdusG.js → sequence-io-C-Q19Jez.js} +4 -4
- package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-eN2P2lDz.js} +6 -6
- package/server/server.js +1499 -1350
- package/server/{service-BLb_CyPL.js → service-CThO0Sar.js} +80 -774
- package/server/{session-fork-DcTzVwex.js → session-fork-ZYTHtpBh.js} +2 -2
- package/server/settings-ByDRfuuE.js +2 -0
- package/server/{settings-Clw8UVNs.js → settings-CTywpFw5.js} +2 -2
- package/server/{settings-B9-H2K_E.js → settings-nAT-eK56.js} +3 -3
- package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BHZKPJhq.js} +3 -3
- package/server/{shadow-state-CEGrrECe.js → shadow-state-BTLi4Axs.js} +2 -2
- package/server/{shadow-state-e7250VUx.js → shadow-state-CZ_LnPsi.js} +1 -1
- package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-CPLlPHdn.js} +2 -2
- package/server/{ship-log-7BnQHuKU.js → ship-log-D-CphNZx.js} +1 -1
- package/server/{ship-record-CwUX6Afo.js → ship-record-BaBla0l_.js} +7 -7
- package/server/{ship-record-BgUPnpT0.js → ship-record-BlvX8-xv.js} +1 -1
- package/server/{ship-status-Ce3_3edi.js → ship-status-rQbPQBsF.js} +2 -2
- package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-CUXn8mfX.js} +1 -1
- package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D1CNGdZx.js} +7 -7
- package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-DCmO6COk.js} +19 -19
- package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-DfEWyrVV.js} +2 -2
- package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-BMv3K54P.js} +1 -1
- package/server/{specialist-context-cHwpcXSh.js → specialist-context-C1-CfYQb.js} +5 -5
- package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-BDKoz5Z9.js} +2 -2
- package/server/{specialist-logs-5OTnrV91.js → specialist-logs-BJQFkpdG.js} +3 -3
- package/server/specialists-CYt1U3Zm.js +4 -0
- package/server/{specialists-8LcQi9Np.js → specialists-D6MUU31Q.js} +21 -272
- package/server/{specialists-DocAK-7A.js → specialists-DhS79T9v.js} +369 -691
- package/server/{specialists-xXcJHAyg.js → specialists-Dx0zRTxX.js} +1 -1
- package/server/specialists-registry-BRLCi61y.js +3 -0
- package/server/specialists-registry-Bng0OFGH.js +277 -0
- package/server/specs-oRGyfz6C.js +3 -0
- package/server/{src-C2TAxwki.js → src-C7gGe4KU.js} +6 -6
- package/server/{src-DudQNYVw.js → src-CdwN6WY6.js} +344 -7
- package/server/{src-DUVvEA8Q.js → src-DMosbuSJ.js} +3 -3
- package/server/{stack-health-DKT4ySnA.js → stack-health-BKfNaqMm.js} +3 -3
- package/server/{stack-health-CbyiYS9H.js → stack-health-Bz711z1Y.js} +1 -1
- package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-DMRLb5R2.js} +5 -5
- package/server/{staleness-D8UTEXV5.js → staleness-CxZaIhrn.js} +1 -1
- package/server/{staleness-BjOAq9-d.js → staleness-r_dkMyMG.js} +1 -1
- package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-CBWqSWV2.js} +8 -8
- package/server/{state-home-DhAZlk5k.js → state-home-DhsMqg8W.js} +2 -2
- package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
- package/server/{state-migrate-CJKEwpB0.js → state-migrate-C2Ouyd6e.js} +6 -6
- package/server/{state-mirror-Do7pag7W.js → state-mirror-BPXciz84.js} +3 -3
- package/server/stuck-remediation-DALieAkx.js +2 -0
- package/server/stuck-remediation-kta3KN7c.js +774 -0
- package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-D_ICP7TI.js} +3 -3
- package/server/{summary-fork-CvB7Oyq9.js → summary-fork-CojrFKb6.js} +2 -2
- package/server/{summary-fork-CZ88rhVx.js → summary-fork-DhhaFhxZ.js} +113 -30
- package/server/supervisor/{pane-composer-BaLLspSj.js → pane-composer-CoiVkGIt.js} +8 -1
- package/server/supervisor/{paths-D6XUcR_g.js → paths-DTGbtcaP.js} +8 -4
- package/server/supervisor/pty-supervisor.js +3 -3
- package/server/supervisor/{pty-token-DjjHxoCq.js → pty-token-GVqnvU3U.js} +2 -2
- package/server/supervisor-DSSWo4M2.js +2 -0
- package/server/{supervisor-D4v0WfiQ.js → supervisor-DqH-laVL.js} +4 -4
- package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-LF8ZF_hc.js} +3 -3
- package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-CGFF8uQI.js} +2 -2
- package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-DSoOFUIV.js} +1 -1
- package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-Lsx0jUUV.js} +2 -2
- package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-DMwomEG1.js} +16 -16
- package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-Cu0D6BYe.js} +6 -6
- package/server/{test-verdict-BWm3hgDj.js → test-verdict-9mvl7pQn.js} +1 -1
- package/server/{test-verdict-BWtRmdiR.js → test-verdict-oNSv1rVr.js} +2 -2
- package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-CRSAkhBx.js} +1 -1
- package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-McqCk2X7.js} +2 -2
- package/server/tmux-CYucGrTl.js +4 -0
- package/server/{tmux-BqXzRuaH.js → tmux-wnT_hg-s.js} +91 -19
- package/server/{token-CO3INKbh.js → token-BdfZLRg1.js} +2 -2
- package/server/{token-util-DyJJyX_B.js → token-util-Crcay9j_.js} +1 -1
- package/server/token-util-DfUS3Lpp.js +3 -0
- package/server/{tracker-config-DVzhaUxO.js → tracker-config-tfAOWgng.js} +2 -2
- package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-Dbg_pVZg.js} +2 -2
- package/server/{traefik-connect-A5k54mCv.js → traefik-connect-DoQvQ6oJ.js} +1 -1
- package/server/{tunnel-DauSR-rs.js → tunnel-B1MNIgkL.js} +1 -1
- package/server/{tunnel-CwOnS-PB.js → tunnel-skW68j9B.js} +3 -3
- package/server/{typed-errors-B-gfU2RB.js → typed-errors-CZ3GFBvo.js} +1 -1
- package/server/{typed-errors-DzC4zXbI.js → typed-errors-DXqf3RnP.js} +1 -1
- package/server/{types-DjpLVpsj.js → types-PW4zkxCM.js} +1 -1
- package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
- package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-ly8ZwtfC.js} +5 -5
- package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-BBaMwfdc.js} +5 -5
- package/server/{uat-train-DVUNW03P.js → uat-train-BBEiYSep.js} +0 -0
- package/server/{uat-train-COSy-vEX.js → uat-train-D7Ran2FB.js} +1 -1
- package/server/{validate-Dvv83iBx.js → validate-BYcBcBwg.js} +3 -3
- package/server/{validation-DlHafKzu.js → validation-BfG2jW5C.js} +9 -6
- package/server/{validation-BdCjzWLN.js → validation-nSrYiYvA.js} +1 -1
- package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-Cmhgq4b_.js} +1 -1
- package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-DglwaHke.js} +1 -1
- package/server/{verification-runner-DwP2fUEF.js → verification-runner-BEq5ZF-h.js} +53 -27
- package/server/{verification-runner-C6wdZda2.js → verification-runner-CFjAuv9u.js} +1 -1
- package/server/{vtt-parser-luerJpYT.js → vtt-parser-Va--tv27.js} +1 -1
- package/server/work-agent-prompt-BnhKNAg7.js +3 -0
- package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CaD2ue8m.js} +14 -14
- package/server/{work-agent-start-BNQO65W7.js → work-agent-start-0nJ-6UeA.js} +2 -2
- package/server/{work-agent-start-DkzseQFl.js → work-agent-start-D8NEN5KD.js} +1 -1
- package/server/workflows-BtHRlFIm.js +2 -0
- package/server/{workflows-BYwR2aIN.js → workflows-C7mxM1qc.js} +114 -41
- package/server/{workspace-iTnTycOB.js → workspace-BAhMgMaO.js} +3 -3
- package/server/{workspace-B-QJa3Ps.js → workspace-Dbqv9ehn.js} +1 -1
- package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-B_3kyyxJ.js} +4 -4
- package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-Bpa3xoni.js} +1 -1
- package/server/{workspace-config-D0CavVtz.js → workspace-config-D-bNq2CF.js} +1 -1
- package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-BrbX90Rm.js} +1 -1
- package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CM8RCrSc.js} +17 -17
- package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BEOwJSdK.js} +1 -1
- package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-Cu6yfxBS.js} +2 -2
- package/server/{workspaces-BlpbOPZ7.js → workspaces-C7LAuZfe.js} +140 -709
- package/sync-sources/dev-skills/pan-style-guide/SKILL.md +90 -15
- package/sync-sources/hooks/linear-mcp-auth-hook +6 -1
- package/sync-sources/rules/agent-message-delivery.md +21 -14
- package/sync-sources/rules/handoff-isolate-cwd.md +4 -4
- package/sync-sources/rules/pan-handoff-focus-limit.md +14 -5
- package/sync-sources/rules/ste-writing.md +17 -0
- package/sync-sources/rules/work-agents-via-pan.md +2 -1
- package/sync-sources/rules/writing-style.md +3 -2
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/SKILL.md +1 -1
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/init_skill.py +1 -1
- package/sync-sources/skills/{skill-creator → claude-skill-creator}/scripts/package_skill.py +1 -1
- package/sync-sources/skills/pan-gauntlet-loop/SKILL.md +230 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/PROMPT.template.md +92 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/REFERENCE-BAR.template.md +53 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/STYLE.template.md +41 -0
- package/sync-sources/skills/pan-gauntlet-loop/assets/gauntlet-index.html +237 -0
- package/sync-sources/skills/pan-gauntlet-loop/references/domains.md +106 -0
- package/sync-sources/skills/pan-handoff/SKILL.md +24 -6
- package/sync-sources/skills/pan-help/SKILL.md +1 -1
- package/sync-sources/skills/pan-peer-review/SKILL.md +3 -3
- package/sync-sources/skills/pan-restart/SKILL.md +6 -3
- package/sync-sources/skills/pan-start/SKILL.md +3 -0
- package/sync-sources/skills/pan-swarm/SKILL.md +32 -44
- package/sync-sources/skills/pan-sync/SKILL.md +1 -1
- package/server/activity-logger-BejO16Am.js +0 -3
- package/server/agent-state-DH_-Jkua.js +0 -3
- package/server/agents-megfmQHM.js +0 -3
- package/server/archive-planning-C-H9cM_J.js +0 -2
- package/server/build-info-PQlh_Rhb.js +0 -2
- package/server/cli-TaZspPHS.js +0 -2
- package/server/cliproxy-36ncAXlu.js +0 -3
- package/server/context-layers-CF6zHws4.js +0 -4
- package/server/conversations-AnGJ5rtX.js +0 -3
- package/server/deacon-BEH-IY0v.js +0 -5
- package/server/deacon-swarm-BHX-kR1b.js +0 -2
- package/server/deacon-swarm-BiLfNm_v.js +0 -1522
- package/server/dead-end-trip-BWpDg1Qd.js +0 -2
- package/server/delivery-cJM6zRjJ.js +0 -3
- package/server/deploy-queue-CmVBZEja.js +0 -2
- package/server/dist-VKBfkdi7.js +0 -3
- package/server/durable-review-pipeline-DgcVCYDL.js +0 -3
- package/server/factory-D4V2wd_V.js +0 -717
- package/server/forge-CrP1L3i6.js +0 -2
- package/server/hume-1ubD_6O7.js +0 -3
- package/server/inspect-agent-CfxERkNt.js +0 -2
- package/server/merge-ops-DtHx17Vd.js +0 -2
- package/server/merge-rebase-BvB4UuNS.js +0 -2
- package/server/project-repos-BJiShUsN.js +0 -3
- package/server/providers-CStNGwze.js +0 -3
- package/server/public/assets/index-BFEwfmqX.js +0 -860
- package/server/public/assets/index-_USwyTAT.css +0 -1
- package/server/public/assets/mermaid-GHXKKRXX-Dsln95SK.js +0 -1
- package/server/pull-requests-C1Cqp2yo.js +0 -2
- package/server/rally-CjayjUIl.js +0 -3
- package/server/resume-D7JuMCRQ.js +0 -3
- package/server/review-agent-BUNTVJK2.js +0 -2
- package/server/settings-DBWB1gsG.js +0 -2
- package/server/specialists-D8gsOCwh.js +0 -3
- package/server/specs-BqkrRnU9.js +0 -3
- package/server/stuck-remediation-Di5JYkoo.js +0 -1164
- package/server/stuck-remediation-TNM1VhZb.js +0 -2
- package/server/supervisor-DX8VsPnb.js +0 -2
- package/server/tmux-CqNapnrr.js +0 -4
- package/server/token-util-Bu8bPF9f.js +0 -3
- package/server/workflows-Cf4LAnhg.js +0 -2
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# The Gauntlet — <THING> at the level of <REFERENCE>
|
|
2
|
+
|
|
3
|
+
<Fill every <ANGLE> slot from the intake, then delete this line. The three
|
|
4
|
+
paragraphs below ARE the mission — keep them first, keep them plain. Anyone
|
|
5
|
+
(model or human) who reads only them must know exactly what we're doing and
|
|
6
|
+
why. Everything after "The machinery" is supporting detail.>
|
|
7
|
+
|
|
8
|
+
Build <THING — one sentence naming the subject and where it lives (this repo
|
|
9
|
+
/ this package / this site)> at the level of <REFERENCE — the named quality
|
|
10
|
+
bar>. It should be utterly perfect: <LOOK — 2–4 clauses painting the
|
|
11
|
+
committed direction, concrete enough that "wrong even if it's pretty" is
|
|
12
|
+
checkable>, with every single thing done at <TIER — e.g. shipped-commercial>
|
|
13
|
+
quality, from <AREA_1>, to <AREA_2>, … to anything else you could think of.
|
|
14
|
+
|
|
15
|
+
Fan out sub-agents and have each one tackle a single area individually so
|
|
16
|
+
that <THING> is utterly perfect. Loop on each area: build it, capture real
|
|
17
|
+
evidence of the result (<CHECK — e.g. screenshots / CLI transcripts /
|
|
18
|
+
benchmarks>), and have a SEPARATE sub-agent check that evidence — a really
|
|
19
|
+
harsh critic, never the agent that built it — to ensure it is <TIER>. If it
|
|
20
|
+
isn't <TIER>, the critic's defect list goes back to the builder and the area
|
|
21
|
+
keeps going.
|
|
22
|
+
|
|
23
|
+
Don't stop until every area's critic is utterly wowed when the result is
|
|
24
|
+
compared with <REFERENCE>. The critic literally puts our evidence and
|
|
25
|
+
<REFERENCE>'s side by side, blind, and says which one is better — WOWED
|
|
26
|
+
means it picked ours without hesitation. Do this in <STACK — normally "this
|
|
27
|
+
repo, stack unchanged">. Loop until it's utterly perfect.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## The machinery (how the loop actually runs)
|
|
32
|
+
|
|
33
|
+
Everything below exists to serve the three paragraphs above. Where they
|
|
34
|
+
conflict, the paragraphs win.
|
|
35
|
+
|
|
36
|
+
### Why it works — four rules that are the whole game
|
|
37
|
+
|
|
38
|
+
1. **The bar is a real named thing** the critic can open — not an adjective.
|
|
39
|
+
2. **The builder never grades its own work** — every critic is a fresh
|
|
40
|
+
sub-agent with no knowledge of the builder's effort or reasoning.
|
|
41
|
+
3. **The verdict is binary** — WOWED or NOT_YET with concrete fixes. Never
|
|
42
|
+
a score; scores drift upward and everything passes.
|
|
43
|
+
4. **No fixed round count** — the exit is every critic WOWED, or the
|
|
44
|
+
operator stopping the run.
|
|
45
|
+
|
|
46
|
+
### Setup state (the orchestrator has already done this)
|
|
47
|
+
|
|
48
|
+
- All work on branch `<BRANCH>` in worktree `<WORKTREE PATH>` — never the
|
|
49
|
+
primary checkout.
|
|
50
|
+
- `refs/STYLE.md` is the committed direction; `refs/REFERENCE-BAR.md` is the
|
|
51
|
+
critic's judging contract; `refs/press/` holds the fetched reference
|
|
52
|
+
evidence the blind comparisons run against.
|
|
53
|
+
- `gauntlet/` holds the live progress page: `status.json` (the state of
|
|
54
|
+
every area), `shots/` (canonical evidence per area), `notes/` (every
|
|
55
|
+
critique JSON). Served at `<DASHBOARD URL>`.
|
|
56
|
+
- <DESIGN AUTHORITY — e.g. PRD.md / docs/ / this prompt> is the design
|
|
57
|
+
authority. <List binding sections, if any.>
|
|
58
|
+
|
|
59
|
+
### Ground rules
|
|
60
|
+
|
|
61
|
+
- The orchestrator reviews and commits per area with path-scoped `git add`;
|
|
62
|
+
agents do not commit.
|
|
63
|
+
- Scope: <IN — the only surfaces this pass touches>. Deferred: <OUT —
|
|
64
|
+
explicit exclusions>.
|
|
65
|
+
- Model routing: design-heavy areas and ALL critics → frontier-tier;
|
|
66
|
+
mechanical implementation, tests, asset runs → workhorse-tier.
|
|
67
|
+
|
|
68
|
+
### The loop contract (per area, repeated until WOWED)
|
|
69
|
+
|
|
70
|
+
1. **Implement** — builder sub-agent with the ownership map below and the
|
|
71
|
+
current defect list as its work order.
|
|
72
|
+
2. **Capture evidence** — launch and drive the real thing; save the
|
|
73
|
+
canonical capture to `gauntlet/shots/<area-key>.png` (or transcript /
|
|
74
|
+
benchmark output to `notes/`).
|
|
75
|
+
3. **Critique** — separate harsh critic, fresh context, evidence + `refs/`
|
|
76
|
+
only, judges blind per `refs/REFERENCE-BAR.md`; verdict JSON lands in
|
|
77
|
+
`gauntlet/notes/critique-<area>-iter<n>.json`.
|
|
78
|
+
4. **Report** — update `gauntlet/status.json` at every transition (agent
|
|
79
|
+
launched / landed / awaiting critique / verdict), not just after
|
|
80
|
+
critiques. A stale dashboard is a bug.
|
|
81
|
+
5. **NOT_YET** → the defect list becomes the next iteration's work order.
|
|
82
|
+
**WOWED** → area done.
|
|
83
|
+
|
|
84
|
+
### Areas
|
|
85
|
+
|
|
86
|
+
<area-key — one-line charter; one per line; each independently judgeable>
|
|
87
|
+
|
|
88
|
+
### File ownership
|
|
89
|
+
|
|
90
|
+
<one line per area: the exact paths it owns. Areas sharing files serialize
|
|
91
|
+
in the same wave, never parallel. This map is repeated verbatim in every
|
|
92
|
+
agent prompt.>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# The Reference Bar — how critics judge
|
|
2
|
+
|
|
3
|
+
You are judging against <REFERENCE — the named bar>. Reference evidence (in
|
|
4
|
+
`refs/press/`) is the anchor; this rubric is the contract. You see evidence
|
|
5
|
+
only — not the code, not the builder's effort, not its excuses.
|
|
6
|
+
|
|
7
|
+
## The verdict question
|
|
8
|
+
|
|
9
|
+
Put the subject's evidence next to the reference's. Answer honestly:
|
|
10
|
+
|
|
11
|
+
> "<THE STOREFRONT TEST — one sentence, e.g. 'If these two appeared side by
|
|
12
|
+
> side on a store page, would a buyer believe this is a shipped, commercially
|
|
13
|
+
> published product?' See references/domains.md for per-domain phrasings.>"
|
|
14
|
+
|
|
15
|
+
- **WOWED** = yes without hesitation. The direction (STYLE.md) is confidently
|
|
16
|
+
executed; nothing reads as placeholder.
|
|
17
|
+
- **NOT YET** = anything else. List every failing element with a concrete fix.
|
|
18
|
+
|
|
19
|
+
You are a harsh critic. Your job is to find what's below the bar, not to be
|
|
20
|
+
encouraging. "Pretty good for <an internal tool / a web game / a side
|
|
21
|
+
project>" is a FAIL.
|
|
22
|
+
|
|
23
|
+
## What the reference does that this must match (adapted, not copied)
|
|
24
|
+
|
|
25
|
+
<5–7 numbered qualities the reference exhibits that the subject must match in
|
|
26
|
+
its own direction — e.g. legibility hierarchy, material confidence, motion
|
|
27
|
+
everywhere/noise nowhere, typography as craft, celebration engineering.>
|
|
28
|
+
|
|
29
|
+
## Automatic failures (any one = NOT YET)
|
|
30
|
+
|
|
31
|
+
<Domain list — see references/domains.md for starter sets. Include
|
|
32
|
+
art-direction/approach incoherence: "two pieces of evidence that read as
|
|
33
|
+
different products.">
|
|
34
|
+
|
|
35
|
+
## Scoring dimensions (report each: pass / fail + fix)
|
|
36
|
+
|
|
37
|
+
<5–9 dimensions the critic reports individually, e.g. composition · craft of
|
|
38
|
+
<domain surface> · coherence vs STYLE.md · typography/copy · color/token
|
|
39
|
+
discipline · motion & feedback · celebration quality · legibility-at-a-glance.>
|
|
40
|
+
|
|
41
|
+
## Verdict format (exact, for status.json)
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"verdict": "WOWED" | "NOT_YET",
|
|
46
|
+
"storefront_test": "<one sentence: which side wins and why>",
|
|
47
|
+
"defects": [ {"element": "...", "why_below_bar": "...", "fix": "...", "owner_area": "<area-key>"} ],
|
|
48
|
+
"dimensions": {"<dim>": "pass", "<dim>": "fail"}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`owner_area` is required on every defect — cross-area defects route to the
|
|
53
|
+
area that owns the file, not the area being critiqued.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# <PROJECT> Direction Bible — <BRANCH>
|
|
2
|
+
|
|
3
|
+
One page. Every builder agent and every critic works from this. If a change
|
|
4
|
+
doesn't serve this direction, it's wrong even if it's pretty.
|
|
5
|
+
|
|
6
|
+
## The Direction (one sentence)
|
|
7
|
+
|
|
8
|
+
<One sentence that commits to a direction — name the feeling AND the
|
|
9
|
+
mechanics, e.g. "An illuminated manuscript come to life: stylized low-poly 3D
|
|
10
|
+
world lit like golden hour, unexplored land literally unfinished parchment.">
|
|
11
|
+
|
|
12
|
+
<One line on what it is never: "Never photoreal, never uncanny-middle, never
|
|
13
|
+
flat-2D." / "Never clever-cute; the prose serves the reader's scan." etc.>
|
|
14
|
+
|
|
15
|
+
## <Domain section 1 — e.g. World Rendering / Visual System / API Surface>
|
|
16
|
+
|
|
17
|
+
<Concrete rules with values — hex codes, type scales, timing budgets, naming
|
|
18
|
+
schemes, error shapes. Not adjectives: "painterly flat-shaded gradients, no
|
|
19
|
+
PBR" not "beautiful materials".>
|
|
20
|
+
|
|
21
|
+
## The Signature Elements (what makes it THIS, not generic)
|
|
22
|
+
|
|
23
|
+
1. <Signature 1 — the thing a critic can point at in evidence and say
|
|
24
|
+
"that's <PROJECT>".>
|
|
25
|
+
2. <Signature 2.>
|
|
26
|
+
3. <Signature 3.>
|
|
27
|
+
|
|
28
|
+
## <Palette / Tokens / Conventions>
|
|
29
|
+
|
|
30
|
+
<Exact values: colors, fonts, spacing scale, motion durations, naming.>
|
|
31
|
+
|
|
32
|
+
## <Domain section 2 — e.g. UI Chrome / CLI Output / Docs Voice>
|
|
33
|
+
|
|
34
|
+
<Rules for the human-facing surface: feedback behavior, motion/easing,
|
|
35
|
+
empty states, copy tone.>
|
|
36
|
+
|
|
37
|
+
## Hard Bans
|
|
38
|
+
|
|
39
|
+
<The short list of "any one of these = below the bar by definition": e.g.
|
|
40
|
+
emoji as art · default fonts · unstyled native controls · dead-on-click
|
|
41
|
+
surfaces · modal error dialogs · any element appearing with no transition.>
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Gauntlet — Live Progress</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--bg: #131417; --panel: #1c1e23; --ink: #e6e4dc; --dim: #8d8f98;
|
|
10
|
+
--line: #33363e; --gold: #c9a227; --glow: #6fc7bd; --red: #c25b4a;
|
|
11
|
+
--green: #6fae5c;
|
|
12
|
+
}
|
|
13
|
+
* { box-sizing: border-box; margin: 0; }
|
|
14
|
+
body {
|
|
15
|
+
background: var(--bg); color: var(--ink);
|
|
16
|
+
font: 15px/1.45 Georgia, 'Times New Roman', serif;
|
|
17
|
+
padding: 28px clamp(16px, 4vw, 48px);
|
|
18
|
+
}
|
|
19
|
+
header { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; margin-bottom: 6px; }
|
|
20
|
+
h1 { font-size: 26px; letter-spacing: 0.06em; font-variant: small-caps; }
|
|
21
|
+
h1 .accent { color: var(--gold); }
|
|
22
|
+
#meta { color: var(--dim); font-size: 13px; }
|
|
23
|
+
#tagline { color: var(--dim); font-style: italic; margin-bottom: 22px; font-size: 13px; }
|
|
24
|
+
.grid {
|
|
25
|
+
display: grid; gap: 18px;
|
|
26
|
+
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
|
|
27
|
+
}
|
|
28
|
+
.card {
|
|
29
|
+
background: var(--panel); border: 1px solid var(--line); border-radius: 8px;
|
|
30
|
+
overflow: hidden; display: flex; flex-direction: column;
|
|
31
|
+
}
|
|
32
|
+
.shot {
|
|
33
|
+
aspect-ratio: 16/9; background: #0c0d10; display: flex;
|
|
34
|
+
align-items: center; justify-content: center; overflow: hidden; position: relative;
|
|
35
|
+
}
|
|
36
|
+
.shot img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
37
|
+
.shot .none { color: #45484f; font-size: 13px; letter-spacing: 0.08em; }
|
|
38
|
+
.body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
|
|
39
|
+
.titlerow { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
|
|
40
|
+
.title { font-size: 16px; font-variant: small-caps; letter-spacing: 0.04em; }
|
|
41
|
+
.badge {
|
|
42
|
+
font: 700 11px/1 system-ui, sans-serif; letter-spacing: 0.08em;
|
|
43
|
+
padding: 4px 9px; border-radius: 3px; white-space: nowrap;
|
|
44
|
+
}
|
|
45
|
+
.b-notstarted { color: var(--dim); border: 1px solid var(--line); }
|
|
46
|
+
.b-inprogress { color: #0c0d10; background: var(--gold); }
|
|
47
|
+
.b-critique { color: #0c0d10; background: var(--glow); }
|
|
48
|
+
.b-wowed { color: #0c0d10; background: var(--green); }
|
|
49
|
+
.b-notyet { color: #fff; background: var(--red); }
|
|
50
|
+
.b-delivered { color: #0c0d10; background: var(--glow); }
|
|
51
|
+
.note { color: var(--dim); font-size: 13px; }
|
|
52
|
+
.defects { list-style: none; display: flex; flex-direction: column; gap: 4px; }
|
|
53
|
+
.defects li {
|
|
54
|
+
font-size: 12.5px; color: var(--ink); padding-left: 14px; position: relative;
|
|
55
|
+
}
|
|
56
|
+
.defects li::before { content: '✕'; color: var(--red); position: absolute; left: 0; font-size: 10px; top: 2px; }
|
|
57
|
+
.foot { margin-top: auto; display: flex; justify-content: space-between; color: var(--dim); font-size: 12px; }
|
|
58
|
+
#err { color: var(--red); margin-top: 20px; display: none; }
|
|
59
|
+
#media-section { margin-top: 30px; }
|
|
60
|
+
#media-section h2 {
|
|
61
|
+
font-size: 18px; font-variant: small-caps; letter-spacing: 0.06em;
|
|
62
|
+
margin-bottom: 10px; color: var(--gold);
|
|
63
|
+
}
|
|
64
|
+
.tracks { display: flex; flex-direction: column; gap: 6px; max-width: 720px; }
|
|
65
|
+
.track {
|
|
66
|
+
display: flex; align-items: center; gap: 12px;
|
|
67
|
+
background: var(--panel); border: 1px solid var(--line); border-radius: 6px;
|
|
68
|
+
padding: 8px 12px;
|
|
69
|
+
}
|
|
70
|
+
.play {
|
|
71
|
+
width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--gold);
|
|
72
|
+
background: none; color: var(--gold); font-size: 13px; cursor: pointer;
|
|
73
|
+
display: flex; align-items: center; justify-content: center; flex: none;
|
|
74
|
+
}
|
|
75
|
+
.play:hover, .play.playing { background: var(--gold); color: #0c0d10; }
|
|
76
|
+
.t-title { font-size: 14.5px; }
|
|
77
|
+
.t-meta { color: var(--dim); font-size: 12px; }
|
|
78
|
+
.t-kind {
|
|
79
|
+
font: 700 10px/1 system-ui, sans-serif; letter-spacing: 0.08em;
|
|
80
|
+
padding: 3px 7px; border-radius: 3px; border: 1px solid var(--line);
|
|
81
|
+
color: var(--dim); flex: none;
|
|
82
|
+
}
|
|
83
|
+
.t-right { margin-left: auto; color: var(--dim); font-size: 12px; flex: none; }
|
|
84
|
+
</style>
|
|
85
|
+
</head>
|
|
86
|
+
<body>
|
|
87
|
+
<header>
|
|
88
|
+
<h1>The <span class="accent">Gauntlet</span> — <span id="project">loading…</span></h1>
|
|
89
|
+
<span id="meta"></span>
|
|
90
|
+
</header>
|
|
91
|
+
<p id="tagline"></p>
|
|
92
|
+
<div class="grid" id="grid"></div>
|
|
93
|
+
<section id="media-section" style="display:none">
|
|
94
|
+
<h2>Generated Media</h2>
|
|
95
|
+
<div class="tracks" id="tracks"></div>
|
|
96
|
+
</section>
|
|
97
|
+
<p id="err"></p>
|
|
98
|
+
<audio id="player"></audio>
|
|
99
|
+
<script>
|
|
100
|
+
// Live gauntlet progress page. Renders entirely from status.json (+ optional
|
|
101
|
+
// media-manifest.json); copied verbatim into each project's gauntlet/ dir.
|
|
102
|
+
const badge = (a) => {
|
|
103
|
+
if (a.verdict === 'WOWED') return ['b-wowed', 'WOWED'];
|
|
104
|
+
if (a.verdict === 'NOT_YET') return ['b-notyet', 'NOT YET · iter ' + a.iteration];
|
|
105
|
+
if (a.status === 'IN PROGRESS' || /ITER \d+ IN PROGRESS/.test(a.status || '')) return ['b-inprogress', a.status];
|
|
106
|
+
if (a.status === 'AWAITING CRITIQUE') return ['b-critique', 'AWAITING CRITIQUE'];
|
|
107
|
+
if ((a.status || '').match(/DELIVERED|SHIPPED|WIRED/)) return ['b-delivered', a.status];
|
|
108
|
+
return ['b-notstarted', a.status || 'NOT STARTED'];
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// Per-area card registry: create once, then mutate in place — no flashing.
|
|
112
|
+
const cards = {}; // key -> {el, img, lastUpdated}
|
|
113
|
+
|
|
114
|
+
function ensureCard(key) {
|
|
115
|
+
if (cards[key]) return cards[key];
|
|
116
|
+
const el = document.createElement('div');
|
|
117
|
+
el.className = 'card';
|
|
118
|
+
el.innerHTML =
|
|
119
|
+
'<div class="shot"><span class="none">NO CAPTURE YET</span></div>' +
|
|
120
|
+
'<div class="body">' +
|
|
121
|
+
'<div class="titlerow"><span class="title"></span><span class="badge"></span></div>' +
|
|
122
|
+
'<div class="note"></div>' +
|
|
123
|
+
'<ul class="defects"></ul>' +
|
|
124
|
+
'<div class="foot"><span class="f-iter"></span><span class="f-time"></span></div>' +
|
|
125
|
+
'</div>';
|
|
126
|
+
document.getElementById('grid').appendChild(el);
|
|
127
|
+
cards[key] = { el, img: null, lastUpdated: null };
|
|
128
|
+
return cards[key];
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function setText(el, sel, text) {
|
|
132
|
+
const n = el.querySelector(sel);
|
|
133
|
+
if (n.textContent !== text) n.textContent = text;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function updateCard(key, a) {
|
|
137
|
+
const c = ensureCard(key);
|
|
138
|
+
const [cls, label] = badge(a);
|
|
139
|
+
setText(c.el, '.title', a.title || key);
|
|
140
|
+
const b = c.el.querySelector('.badge');
|
|
141
|
+
if (b.className !== 'badge ' + cls) b.className = 'badge ' + cls;
|
|
142
|
+
if (b.textContent !== label) b.textContent = label;
|
|
143
|
+
setText(c.el, '.note', a.note || '');
|
|
144
|
+
const defects = (a.defects || []).slice(0, 5).map(d =>
|
|
145
|
+
typeof d === 'string' ? d : (d.element + ' — ' + d.fix));
|
|
146
|
+
const ul = c.el.querySelector('.defects');
|
|
147
|
+
const want = defects.map(d => '<li>' + d + '</li>').join('');
|
|
148
|
+
if (ul.innerHTML !== want) ul.innerHTML = want;
|
|
149
|
+
setText(c.el, '.f-iter', 'iteration ' + (a.iteration || 0));
|
|
150
|
+
setText(c.el, '.f-time', a.updated ? new Date(a.updated).toLocaleTimeString() : '');
|
|
151
|
+
|
|
152
|
+
// Screenshot: reload only when the area's timestamp changes (or first pass).
|
|
153
|
+
if (c.lastUpdated !== a.updated || !c.img) {
|
|
154
|
+
const probe = new Image();
|
|
155
|
+
probe.onload = () => {
|
|
156
|
+
const holder = c.el.querySelector('.shot');
|
|
157
|
+
if (!c.img) { holder.innerHTML = ''; c.img = probe; holder.appendChild(probe); }
|
|
158
|
+
else c.img.src = probe.src; // swap after load — old frame stays until ready
|
|
159
|
+
};
|
|
160
|
+
probe.onerror = () => { c.lastUpdated = a.updated; }; // no shot yet; stop retrying this stamp
|
|
161
|
+
probe.src = 'shots/' + key + '.png?t=' + Date.now();
|
|
162
|
+
c.lastUpdated = a.updated;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
async function refresh() {
|
|
167
|
+
try {
|
|
168
|
+
const r = await fetch('status.json?t=' + Date.now());
|
|
169
|
+
const s = await r.json();
|
|
170
|
+
if (s.project) document.getElementById('project').textContent = s.project;
|
|
171
|
+
if (s.tagline) document.getElementById('tagline').textContent = s.tagline;
|
|
172
|
+
document.getElementById('meta').textContent =
|
|
173
|
+
(s.pass || '') + ' · updated ' + new Date(s.updated).toLocaleTimeString();
|
|
174
|
+
for (const [key, a] of Object.entries(s.areas || {})) updateCard(key, a);
|
|
175
|
+
document.getElementById('err').style.display = 'none';
|
|
176
|
+
} catch (e) {
|
|
177
|
+
const el = document.getElementById('err');
|
|
178
|
+
el.textContent = 'status.json unreadable: ' + e.message;
|
|
179
|
+
el.style.display = 'block';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Optional media list (audio/video generated during the pass) — built once
|
|
184
|
+
// per manifest version, keyed by updated stamp.
|
|
185
|
+
const player = document.getElementById('player');
|
|
186
|
+
let currentFile = null;
|
|
187
|
+
let mediaVersion = null;
|
|
188
|
+
player.addEventListener('ended', () => { currentFile = null; markPlaying(); });
|
|
189
|
+
player.addEventListener('pause', markPlaying);
|
|
190
|
+
player.addEventListener('play', markPlaying);
|
|
191
|
+
function markPlaying() {
|
|
192
|
+
document.querySelectorAll('.play').forEach(b => {
|
|
193
|
+
const active = b.dataset.file === currentFile && !player.paused;
|
|
194
|
+
b.classList.toggle('playing', active);
|
|
195
|
+
b.textContent = active ? '❚❚' : '▶';
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
function togglePlay(file) {
|
|
199
|
+
if (currentFile === file && !player.paused) { player.pause(); }
|
|
200
|
+
else {
|
|
201
|
+
if (currentFile !== file) { player.src = file; currentFile = file; }
|
|
202
|
+
player.play();
|
|
203
|
+
}
|
|
204
|
+
markPlaying();
|
|
205
|
+
}
|
|
206
|
+
async function refreshMedia() {
|
|
207
|
+
try {
|
|
208
|
+
const r = await fetch('media-manifest.json?t=' + Date.now());
|
|
209
|
+
if (!r.ok) return;
|
|
210
|
+
const m = await r.json();
|
|
211
|
+
if (!m.tracks || !m.tracks.length || m.updated === mediaVersion) return;
|
|
212
|
+
mediaVersion = m.updated;
|
|
213
|
+
document.getElementById('media-section').style.display = 'block';
|
|
214
|
+
const list = document.getElementById('tracks');
|
|
215
|
+
list.innerHTML = '';
|
|
216
|
+
for (const t of m.tracks) {
|
|
217
|
+
const row = document.createElement('div');
|
|
218
|
+
row.className = 'track';
|
|
219
|
+
row.innerHTML =
|
|
220
|
+
'<button class="play" data-file="' + t.file + '">▶</button>' +
|
|
221
|
+
'<div><div class="t-title">' + t.title + '</div>' +
|
|
222
|
+
'<div class="t-meta">' + (t.placement || '') + '</div></div>' +
|
|
223
|
+
'<span class="t-kind">' + (t.kind || '').toUpperCase() + '</span>' +
|
|
224
|
+
'<span class="t-right">' + (t.duration || '') + '</span>';
|
|
225
|
+
row.querySelector('.play').addEventListener('click', () => togglePlay(t.file));
|
|
226
|
+
list.appendChild(row);
|
|
227
|
+
}
|
|
228
|
+
markPlaying();
|
|
229
|
+
} catch (e) { /* manifest optional */ }
|
|
230
|
+
}
|
|
231
|
+
refresh();
|
|
232
|
+
refreshMedia();
|
|
233
|
+
setInterval(refresh, 5000);
|
|
234
|
+
setInterval(refreshMedia, 15000);
|
|
235
|
+
</script>
|
|
236
|
+
</body>
|
|
237
|
+
</html>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Gauntlet domains — evidence, areas, automatic failures
|
|
2
|
+
|
|
3
|
+
Pick the row matching THING, adapt freely. The point of this file: every
|
|
4
|
+
domain has a CHECK (how the critic inspects the work), a starter area split,
|
|
5
|
+
an automatic-failure list, and a storefront-test phrasing. Non-visual domains
|
|
6
|
+
replace "screenshot" with the domain's capturable evidence.
|
|
7
|
+
|
|
8
|
+
## Game / rich visual UI
|
|
9
|
+
|
|
10
|
+
- **CHECK:** Playwright screenshots at 1920×1080 across the key states
|
|
11
|
+
(spawn, mid-action, celebration, error), on an account with realistic data.
|
|
12
|
+
- **Areas:** world/rendering · game-feel animation · UI system & motion ·
|
|
13
|
+
onboarding · presentation of the core loop · sound design · music ·
|
|
14
|
+
performance.
|
|
15
|
+
- **Auto-fails:** emoji as art · default/system fonts · unstyled native
|
|
16
|
+
controls · flat untextured surfaces with no lighting response · dead-on-
|
|
17
|
+
click surfaces · error-after-the-fact UX (offer then reject) · uncanny-
|
|
18
|
+
middle photorealism · two shots that read as different games.
|
|
19
|
+
- **Storefront test:** "If this appeared on the same store page as the
|
|
20
|
+
reference, would a player believe it is a shipped, commercially published
|
|
21
|
+
game?"
|
|
22
|
+
|
|
23
|
+
## Web app / product UI
|
|
24
|
+
|
|
25
|
+
- **CHECK:** Playwright screenshots at 1920×1080 + mobile width, across real
|
|
26
|
+
user flows (empty state, populated, error, loading, success).
|
|
27
|
+
- **Areas:** design system & tokens · core flow A · core flow B · empty/error/
|
|
28
|
+
loading states · motion & micro-interactions · accessibility · performance.
|
|
29
|
+
- **Auto-fails:** default browser styling anywhere · unstyled focus rings ·
|
|
30
|
+
layout shift on load · dead-end states with no next action · stock toasts
|
|
31
|
+
for moments that deserve staging · inconsistent spacing rhythm.
|
|
32
|
+
- **Storefront test:** "Next to the reference's marketing screenshots, would
|
|
33
|
+
a buyer believe this is the same tier of product?"
|
|
34
|
+
|
|
35
|
+
## CLI / developer tool
|
|
36
|
+
|
|
37
|
+
- **CHECK:** Captured terminal sessions (real invocations, real output,
|
|
38
|
+
success + error + `--help`), asciinema or scripted transcript + screenshot.
|
|
39
|
+
- **Areas:** command surface & help text · output design (color, tables,
|
|
40
|
+
spinners) · error messages & recovery hints · exit codes & pipe behavior ·
|
|
41
|
+
docs/README · performance (startup, large input).
|
|
42
|
+
- **Auto-fails:** stack traces leaked to users · wall-of-text help · no
|
|
43
|
+
`--help` for any verb · colors that break on light terminals · silent
|
|
44
|
+
failure (exit 0, nothing happened) · inconsistent flag naming.
|
|
45
|
+
- **Storefront test:** "Shown both tools' real transcripts, would a developer
|
|
46
|
+
pick this one as the professionally maintained tool?"
|
|
47
|
+
|
|
48
|
+
## API / backend service
|
|
49
|
+
|
|
50
|
+
- **CHECK:** Real request/response transcripts (curl -v or HTTPie), OpenAPI
|
|
51
|
+
render, error catalog exercised live, latency numbers under stated load.
|
|
52
|
+
- **Areas:** resource model & naming · error design · docs & examples ·
|
|
53
|
+
authn/authz behavior · observability · performance & limits.
|
|
54
|
+
- **Auto-fails:** inconsistent naming across resources · 500s for user error
|
|
55
|
+
· errors without actionable messages · undocumented behavior the client
|
|
56
|
+
must guess · missing pagination on list endpoints.
|
|
57
|
+
- **Storefront test:** "Given both APIs' docs and live responses, would an
|
|
58
|
+
integrating engineer call this one a commercial-grade API?"
|
|
59
|
+
|
|
60
|
+
## Library / SDK
|
|
61
|
+
|
|
62
|
+
- **CHECK:** A consumer test app's real usage, rendered API docs, README
|
|
63
|
+
quickstart timed end-to-end, type/error behavior at the boundaries.
|
|
64
|
+
- **Areas:** API surface & naming · docs & quickstart · error taxonomy ·
|
|
65
|
+
types & ergonomics · test coverage of the contract · bundle/perf cost.
|
|
66
|
+
- **Auto-fails:** quickstart that doesn't run as written · leaked internal
|
|
67
|
+
types · error classes users can't catch selectively · breaking the stated
|
|
68
|
+
semver contract.
|
|
69
|
+
- **Storefront test:** "Would an engineer skimming both READMEs believe this
|
|
70
|
+
one is the safe dependency to bet on?"
|
|
71
|
+
|
|
72
|
+
## Performance pass
|
|
73
|
+
|
|
74
|
+
- **CHECK:** Benchmark output (cold + warm, p50/p95/p99), flamegraphs,
|
|
75
|
+
before/after on the same machine, under stated load. Numbers, not vibes.
|
|
76
|
+
- **Areas:** the hot path · memory footprint · startup · I/O & caching ·
|
|
77
|
+
regression guard (the benchmark becomes CI).
|
|
78
|
+
- **Auto-fails:** benchmark that doesn't isolate the change · claimed wins
|
|
79
|
+
without reproducible numbers · a win on one path that regresses another
|
|
80
|
+
unmeasured · micro-benchmarks that don't reflect real load.
|
|
81
|
+
- **Storefront test:** "Presented with both benchmark suites, would an
|
|
82
|
+
engineer believe this result and reproduce it?"
|
|
83
|
+
|
|
84
|
+
## Writing / docs / content
|
|
85
|
+
|
|
86
|
+
- **CHECK:** The rendered pieces side by side with the reference's, read by
|
|
87
|
+
the critic with labels stripped; timed comprehension check ("which one do
|
|
88
|
+
you understand faster?").
|
|
89
|
+
- **Areas:** structure & information architecture · voice & register ·
|
|
90
|
+
examples & code samples · visuals/diagrams · navigation & discoverability.
|
|
91
|
+
- **Auto-fails:** jargon the target reader can't define · examples that
|
|
92
|
+
don't run · a wall of text where a table/diagram carries the point ·
|
|
93
|
+
inconsistent terminology for the same concept.
|
|
94
|
+
- **Storefront test:** "Stripped of branding, which piece would the target
|
|
95
|
+
reader finish and act on?"
|
|
96
|
+
|
|
97
|
+
## Asset-heavy passes (audio, video, 3D, images)
|
|
98
|
+
|
|
99
|
+
- **CHECK:** The generated assets played/viewed in situ (wired into the
|
|
100
|
+
product), plus a media-manifest.json so the progress page can play them.
|
|
101
|
+
- **Rules worth restating** (from run #1): generation prompts must describe
|
|
102
|
+
audible/visible results, not mood adjectives ("soft/tiny" yields near-
|
|
103
|
+
silence — put gentleness in the engine's gain, not the prompt); strip
|
|
104
|
+
leading silence before trimming to a duration budget; never hard-trim a
|
|
105
|
+
musical phrase; peak-normalize audio to −3 dBFS; verify the license clause
|
|
106
|
+
of every purchased/stock asset for the distribution form.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pan-handoff
|
|
3
|
-
description: "pan handoff <conv> — agent-authored conversation handoff that spawns a new conversation.
|
|
3
|
+
description: "pan handoff <conv> — agent-authored conversation handoff that spawns a new conversation. Keep the focus short and steering; the hard cap is 10000 characters (PAN-3737). Pass --title to name the successor."
|
|
4
4
|
triggers:
|
|
5
5
|
- pan handoff
|
|
6
6
|
- hand off conversation
|
|
@@ -24,7 +24,14 @@ pan handoff [conv] [focus text...]
|
|
|
24
24
|
|
|
25
25
|
The trailing text after the conversation reference becomes the focus — no flag required.
|
|
26
26
|
|
|
27
|
-
>
|
|
27
|
+
> Keep the focus short and steering; do NOT pack backstory/context into it — the author reads the full source transcript for that, and long briefs belong in a file the focus points at. The hard cap is 10,000 characters (multi-line is fine; PAN-3737) — a longer focus is rejected with `Fork request rejected: focus must be 10000 characters or fewer` and no conversation is created.
|
|
28
|
+
|
|
29
|
+
## Where to run it, and where the successor lives
|
|
30
|
+
|
|
31
|
+
Two separate directories are involved, and each has its own rule:
|
|
32
|
+
|
|
33
|
+
- **Run the command from your project directory** (the directory your session was launched in). Do NOT `cd` into the `--cwd` target, a `/tmp` brief directory, or any other path first — `--cwd` is where the *successor* will live; you never need to stand there. Sandboxed harnesses (e.g. codex `workspace-write`) block network and non-workspace writes for commands run from untrusted directories. The failure signature is `attempt to write a readonly database` followed by `Could not reach the Overdeck dashboard at http://127.0.0.1:3011 … (fetch failed)` **while the dashboard is actually up** — if you see that pair, re-run from your project directory (PAN-3735).
|
|
34
|
+
- **`--cwd` must be an absolute path to an existing directory under your home directory, inside a git working tree.** The server rejects violations and creates no conversation: `/tmp/...` fails the home-containment check (`Invalid cwd`), a relative path like `../worktree` fails the absolute-path check (the CLI does not resolve it for you), a not-yet-created directory fails the existence check, and a plain non-git directory fails with `Handoff cwd is not inside a git repository`. The reliable recipe is an isolated worktree: `git -C <repo> worktree add -b hoff/<slug> "$HOME/hoff-<slug>-wt" main`, put any brief files in it, then pass it as `--cwd`. In a polyrepo project whose parent directory is not itself a git repo, point `--cwd` at (a worktree of) the relevant sub-repo — the parent fails the git check.
|
|
28
35
|
|
|
29
36
|
## Handing off the conversation you are in (the common case)
|
|
30
37
|
|
|
@@ -61,17 +68,18 @@ pan handoff 42
|
|
|
61
68
|
pan handoff source-conv continue the API wiring
|
|
62
69
|
pan handoff source-conv --model claude-sonnet-4-6
|
|
63
70
|
pan handoff source-conv --harness pi
|
|
64
|
-
pan handoff source-conv --cwd /
|
|
65
|
-
pan handoff source-conv --cwd
|
|
71
|
+
pan handoff source-conv --cwd /home/you/Projects/project
|
|
72
|
+
pan handoff source-conv --cwd /home/you/Projects/isolated-worktree --project mind-your-now
|
|
66
73
|
pan handoff source-conv --model claude-opus-4-7 wire the Stripe webhook into checkout
|
|
67
74
|
pan handoff source-conv --author external --author-model claude-haiku-4-5 cheap clean handoff
|
|
68
75
|
pan handoff source-conv --author source uses-source-agent-and-pollutes-its-context
|
|
69
76
|
pan handoff source-conv --issue PAN-1234 continue the API wiring
|
|
77
|
+
pan handoff source-conv --title "Checkout webhook repair" continue the API wiring
|
|
70
78
|
```
|
|
71
79
|
|
|
72
80
|
## Project and issue association
|
|
73
81
|
|
|
74
|
-
Use `--project <key-or-name>` when the successor runs from a `--cwd` outside the registered project's directory, such as an isolated worktree. The explicit project wins over the source association; without the flag, the successor inherits the source conversation's project. Unknown projects reject the request and create no conversation.
|
|
82
|
+
Use `--project <key-or-name>` when the successor runs from a `--cwd` outside the registered project's directory, such as an isolated worktree. The `--cwd` value must be an absolute path to an existing directory under your home directory (see "Where to run it, and where the successor lives" above). The explicit project wins over the source association; without the flag, the successor inherits the source conversation's project. Unknown projects reject the request and create no conversation.
|
|
75
83
|
|
|
76
84
|
Use `--issue <id>` to attach the new conversation to a specific issue (e.g. `PAN-1234`). The flag is validated; an invalid ID rejects the request and creates no conversation. When `--issue` is omitted, the new conversation inherits the source conversation's issue association, if any.
|
|
77
85
|
|
|
@@ -87,7 +95,17 @@ Use a normal summary fork when a quick passive summary is enough. Use a plain fo
|
|
|
87
95
|
|
|
88
96
|
The positional text after `<conv>` is the focus — a short statement of what the successor should concentrate on. Quotes are optional; everything after the conversation reference (excluding flags) is joined with spaces. Keep it short and task-oriented; the focus is injected into the handoff-authoring prompt, not used as the new conversation's user request.
|
|
89
97
|
|
|
90
|
-
**Hard
|
|
98
|
+
**Hard ceiling: 10,000 characters** (PAN-3737; multi-line focus is allowed). Don't pack the backstory into the focus even so; the detail belongs in the transcript the author reads or in a brief file in the successor cwd. The focus only steers what the author emphasizes.
|
|
99
|
+
|
|
100
|
+
## Title
|
|
101
|
+
|
|
102
|
+
Without `--title`, the new conversation is titled `Handoff: <first ~70 chars of focus>` (or `Handoff: <source title>` when there is no focus). Pass `--title "<title>"` to name it explicitly — useful when the focus is a file pointer like "Read .pan/handoff-brief.md FIRST" and would otherwise become the title verbatim:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
pan handoff self --title "Checkout webhook repair" Read .pan/handoff-brief.md FIRST and follow it exactly.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
A blank `--title` falls back to the default naming above.
|
|
91
109
|
|
|
92
110
|
## Authoring modes
|
|
93
111
|
|
|
@@ -126,7 +126,7 @@ Overdeck comes with a suite of skills to guide AI assistants:
|
|
|
126
126
|
|
|
127
127
|
### Utilities
|
|
128
128
|
- `/session-health` - Detect and clean up stuck sessions
|
|
129
|
-
- `/skill-creator` - Guide for creating
|
|
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
|
|
66
|
-
|
|
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
|
-
|
|
34
|
+
# --full is nuclear — stops & restarts everything
|
|
35
|
+
pan restart --full
|
|
35
36
|
|
|
36
37
|
# Explicit force cases
|
|
37
|
-
|
|
38
|
-
pan restart --
|
|
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
|