@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.
- package/package.json +1 -1
- package/server/{acceptance-criteria-Crw-xSJ3.js → acceptance-criteria-CHtDkHEL.js} +2 -2
- package/server/{active-dashboard-bundle-CLwfD-Om.js → active-dashboard-bundle-Byh6sP-q.js} +2 -2
- package/server/{activity-logger-BAVLrkR7.js → activity-logger-BWZhVphb.js} +22 -4
- package/server/activity-logger-Ck8qoluj.js +3 -0
- package/server/{advancing-selfheal-BQiJ7mIH.js → advancing-selfheal-65W4yUQi.js} +6 -6
- package/server/{agent-gc-5E0lgxI1.js → agent-gc-BNUudFnt.js} +10 -10
- package/server/agent-idle-ONBssBN_.js +745 -0
- package/server/{agent-state-Bb3UUxQm.js → agent-state-BJhGIJZe.js} +421 -135
- package/server/agent-state-CM8iVw5B.js +3 -0
- package/server/{agent-state-service-BFbttwRA.js → agent-state-service-CiIuwzIs.js} +5 -5
- package/server/{agent-state-service-keg-x1bT.js → agent-state-service-CzHfoqKQ.js} +1 -1
- package/server/agents-DpCuoF65.js +3 -0
- package/server/{agents-CqQJW75N.js → agents-jXgqpHca.js} +8 -8
- package/server/archive-planning-BW4MKNI7.js +2 -0
- package/server/{archive-planning-BwEhu9Oq.js → archive-planning-CGkU6UeL.js} +20 -135
- package/server/{artifact-index-jobs-C6Lg2rKm.js → artifact-index-jobs-Ck4NRRkY.js} +3 -3
- package/server/{assemble-DyTp2gSB.js → assemble-CyvEBmmq.js} +28 -9
- package/server/{auto-spawn-consent-BDfe4qz0.js → auto-spawn-consent-Dc4mtM-B.js} +8 -7
- package/server/{backlog-auto-trigger-DuOGpdDW.js → backlog-auto-trigger-CCEpr4YT.js} +3 -3
- package/server/{behavior-Bitko0mD.js → behavior-BiCQzqyT.js} +3 -3
- package/server/{bridge-pool-patrol-DiHEd13O.js → bridge-pool-patrol-Ce8rNPym.js} +2 -2
- package/server/{briefing-freshness-CDJcmHHZ.js → briefing-freshness-e_OEYZEe.js} +2 -2
- package/server/{build-info-DTX8JwVP.js → build-info-BRw4QlYO.js} +3 -3
- package/server/build-info-Bj2vQEMh.js +2 -0
- package/server/{checkpoint-manager-CKg1tn34.js → checkpoint-manager-CKr42Usw.js} +1 -1
- package/server/{checkpoint-manager-BlOOdzLF.js → checkpoint-manager-DOwRGFff.js} +26 -9
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-DRALkfDS.js → checkpoints-Cb6CWT4S.js} +1 -1
- package/server/{checkpoints-BGfl0cHM.js → checkpoints-Cszp_0Np.js} +2 -2
- package/server/{claude-hooks-provision-B_tv3wzE.js → claude-hooks-provision-C5JHpxTS.js} +1 -1
- package/server/{claude-hooks-provision-BlGv6twJ.js → claude-hooks-provision-Cer2eFfj.js} +2 -2
- package/server/{claude-permissions-aHgDcZi5.js → claude-permissions-Bc5kjX1q.js} +2 -2
- package/server/{claude-settings-overlay-CYOvFE3A.js → claude-settings-overlay-C7rWsnya.js} +1 -1
- package/server/{claude-settings-overlay-T2LWLteV.js → claude-settings-overlay-m-VVZej1.js} +2 -2
- package/server/cli-BRuzUT_I.js +2 -0
- package/server/{cli-Do8UpLoI.js → cli-BmczsfD6.js} +11 -11
- package/server/{cliproxy-CX6jHRDP.js → cliproxy-BpYpkogS.js} +52 -17
- package/server/cliproxy-_yUU0HRY.js +3 -0
- package/server/{close-issue-J0_eWYT1.js → close-issue-CxvRD0UI.js} +5 -5
- package/server/{closed-issue-reaper-bFppuk6F.js → closed-issue-reaper-nMLRi5de.js} +13 -12
- package/server/{closed-issue-reaper-Cl2h9AfT.js → closed-issue-reaper-omOcUDBl.js} +1 -1
- package/server/{codex-icapA4om.js → codex-DZhFfcWu.js} +1 -1
- package/server/{codex-OOea7lXs.js → codex-KaSKE-R3.js} +16 -10
- package/server/{compaction-continuation-D5voR1ME.js → compaction-continuation-Bjfi70G-.js} +3 -3
- package/server/{config-Cjleh3_U.js → config-CH1AqqIQ.js} +1 -1
- package/server/{config-DC75T4Mr.js → config-Doq_tF-f.js} +2 -2
- package/server/{config-tucKBCCc.js → config-ZGjvuR6J.js} +2 -2
- package/server/{config-yaml-BwOEANMr.js → config-yaml-D9nfpEx1.js} +33 -8
- package/server/{conflict-gate-DlpWCMd7.js → conflict-gate-D4XCtrm2.js} +1 -1
- package/server/{conflict-gate-D2L1kZeL.js → conflict-gate-DcUTY4Gb.js} +4 -4
- package/server/{context-layers-CSPGc2Hb.js → context-layers-BBTKP-Y4.js} +3 -3
- package/server/context-layers-BGj2Y9l3.js +4 -0
- package/server/{continue-U3Af0jUq.js → continue-i7Revg8D.js} +3 -3
- package/server/{control-settings-5k6ixdFW.js → control-settings-BMoDHY1G.js} +6 -6
- package/server/{conversation-compaction-CSpVpxN6.js → conversation-compaction-D4VOmF7p.js} +8 -8
- package/server/{conversation-compaction-Ciit9O6k.js → conversation-compaction-DzIjYMfg.js} +1 -1
- package/server/{conversation-service-BxrB5lUT.js → conversation-service-CzZUJFEx.js} +1 -1
- package/server/{conversation-service-BteE4ELK.js → conversation-service-tQCIbBVZ.js} +6 -6
- package/server/{conversations-DhwxsOru.js → conversations-C75EFFjf.js} +12 -7
- package/server/conversations-bFDaD5YN.js +3 -0
- package/server/{cost-Bnf9NUC5.js → cost-BCWEkvro.js} +3 -3
- package/server/{cost-CQKI6OCu.js → cost-CiIwxH1D.js} +2 -2
- package/server/{cost-sync-B-ADeXKY.js → cost-sync-DOkdE_yB.js} +3 -3
- package/server/{dag-DI9LaK_q.js → dag-BPc74hwj.js} +6 -19
- package/server/{dangerous-git-ops-akhA3iyF.js → dangerous-git-ops-By9iguTP.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-TPYssFYt.js → deacon-B24dNzr8.js} +1774 -171
- package/server/deacon-CzSZMtb-.js +4 -0
- package/server/{deacon-canonical-state-DFYymrDw.js → deacon-canonical-state-CkvxRPck.js} +3 -3
- package/server/{deacon-event-client-Te5v10-b.js → deacon-event-client-BYIQBu0T.js} +1 -1
- package/server/{deacon-event-client-BKOL4AcL.js → deacon-event-client-Do6Z2gKl.js} +2 -2
- package/server/{deacon-nudge-log-BtlTWgWu.js → deacon-nudge-log-CzM9JA9t.js} +1 -1
- package/server/{deacon-pending-lifecycle-DVHjOLje.js → deacon-pending-lifecycle-BObEdT-L.js} +3 -3
- package/server/deacon.js +11 -11
- package/server/dead-end-trip-6V_CwveT.js +2 -0
- package/server/{dead-end-trip-P0IF1O0E.js → dead-end-trip-CnVmjnya.js} +3 -3
- package/server/delivery-gyce0vQ7.js +3 -0
- package/server/{deploy-patrol-BXjlvoV3.js → deploy-patrol-CEwwEYDM.js} +8 -8
- package/server/deploy-queue-CjLErpgw.js +2 -0
- package/server/{deploy-queue-o7shYg1j.js → deploy-queue-r96ojDI3.js} +2 -2
- package/server/{deploy-window-CNT6fOff.js → deploy-window-D_3hhfxt.js} +4 -4
- package/server/{deploy-window-BMk5_oX6.js → deploy-window-DeJK8mTK.js} +1 -1
- package/server/{dev-supervisor-SR1CLOAK.js → dev-supervisor-DZWwpENk.js} +2 -2
- package/server/{devcontainer-renderer-enMmNDFa.js → devcontainer-renderer-d-9dCV_2.js} +3 -3
- package/server/{dist-CPTO_zMR.js → dist-DsLAsFSh.js} +1 -1
- package/server/dist-fCA6y2bH.js +3 -0
- package/server/{docker-B7qUZptz.js → docker-B2mUBzGk.js} +3 -3
- package/server/{docker-KR3zSFKY.js → docker-CRPHBylA.js} +1 -1
- package/server/{dod-gK835UMf.js → dod-DWtilRLx.js} +1 -1
- package/server/{done-preflight-CksRvh49.js → done-preflight-BDVdWed5.js} +1 -1
- package/server/{done-preflight-Bk8aExAL.js → done-preflight-D4ukUf-S.js} +5 -5
- package/server/{driver-CmsY2RLl.js → driver-BtcFz-qu.js} +14 -3
- package/server/{durable-review-pipeline-DgYHucN2.js → durable-review-pipeline-B3OS2_He.js} +11 -2
- package/server/durable-review-pipeline-CaCbEJSt.js +3 -0
- package/server/{ensure-devcontainer-ojerEqQg.js → ensure-devcontainer-BUeBRjmm.js} +4 -4
- package/server/{ensure-devcontainer-BQ4YizSH.js → ensure-devcontainer-rGSh0JHK.js} +1 -1
- package/server/{esm-shims-1htPASWs.js → esm-shims-oAaKIa-a.js} +1 -1
- package/server/{event-store-D7qcJXuZ.js → event-store-BCSgMubf.js} +5 -5
- package/server/{event-store-BgEjNsvk.js → event-store-Db4w4YIY.js} +1 -1
- package/server/{event-store-provider-BKvk2rDj.js → event-store-provider-DlSQND3V.js} +1 -1
- package/server/{events-BIKGJZOT.js → events-B6zioJA_.js} +3 -3
- package/server/{dist-src-BM9eudEd.js → factory-BrdqXBeK.js} +714 -2
- package/server/{feature-registry-storage-ewNSIVsQ.js → feature-registry-storage-zh3ZXW6f.js} +3 -3
- package/server/{features-CGopJXdU.js → features-BGntOWdy.js} +2 -2
- package/server/{feedback-stuck-retirement-B8-fX7NA.js → feedback-stuck-retirement-DpA5u1kt.js} +2 -2
- package/server/{feedback-target-Ci6N5p4G.js → feedback-target-D7GxdUYG.js} +10 -10
- package/server/{feedback-target-CkyLYohm.js → feedback-target-Ddqk93NF.js} +1 -1
- package/server/{feedback-writer-D4ULO4qG.js → feedback-writer-C1gCLFmp.js} +5 -5
- package/server/{feedback-writer-DfuVjvH0.js → feedback-writer-CH2846DP.js} +1 -1
- package/server/{flywheel-C7yek87O.js → flywheel-CjW2L7BS.js} +79 -29
- package/server/{flywheel-DXI_WITn.js → flywheel-HJt7QdWP.js} +1 -1
- package/server/{flywheel-merge-order-C5m5bYBc.js → flywheel-merge-order-4fNRN2F2.js} +1 -1
- package/server/{flywheel-merge-order-CXfU4M6l.js → flywheel-merge-order-D_yyAlND.js} +7 -7
- package/server/{flywheel-BwYPDlhK.js → flywheel-v1cCOBx-.js} +14 -14
- package/server/{forge-DYX9sKzG.js → forge-RVTCK_5X.js} +2 -2
- package/server/forge-bvak6vXJ.js +2 -0
- package/server/{from-DAdMxC29.js → from-BnLgKYvw.js} +1 -1
- package/server/{fs-lock-cw25uO_E.js → fs-lock-C7J-ugIf.js} +2 -2
- package/server/{fts-operations-D_rzLxX5.js → fts-operations-CU0B5WUx.js} +3 -3
- package/server/git-info-BSrI9owC.js +148 -0
- package/server/{git-utils-Y0zG25ez.js → git-utils-CsKV0Dis.js} +1 -1
- package/server/{git-utils-DV4B9TRl.js → git-utils-DW8-jIUJ.js} +4 -4
- package/server/{github-app-4UX8VIr8.js → github-app-7ywLhuZO.js} +2 -2
- package/server/{github-app-C33lDk9Z.js → github-app-Oi5hdn1n.js} +1 -1
- package/server/{github-client-nPj5ckZO.js → github-client-Cy0fSj1a.js} +1 -1
- package/server/{github-client-DkJVR908.js → github-client-DAbuXLuk.js} +3 -3
- package/server/{github-pr-lookup-C9Vokb0W.js → github-pr-lookup-Dhh3ec1V.js} +2 -2
- package/server/{harness-binary-BgXYDo2Z.js → harness-binary-tMmgJfC1.js} +2 -2
- package/server/{harness-resolve-1NZcVx7n.js → harness-resolve-DusNpVEe.js} +4 -4
- package/server/{health-events-jMfxrElt.js → health-events-BYDZ9n2i.js} +1 -1
- package/server/{health-events-DlX_FVAB.js → health-events-DNw9Mzw9.js} +2 -2
- package/server/{hooks-W3REcb3h.js → hooks-B4wj32l2.js} +1 -1
- package/server/{hooks-NQ19vvlB.js → hooks-BjBjxqNh.js} +2 -2
- package/server/{hume-BFkid2PO.js → hume-BP9YbxaE.js} +2 -2
- package/server/hume-TYTb6fDU.js +3 -0
- package/server/{identity-Bwh6VGeL.js → identity-C23uY8dZ.js} +3 -3
- package/server/{idle-stack-reaper-BeU_KxWx.js → idle-stack-reaper-BSxb1bln.js} +4 -4
- package/server/{idle-stack-reaper-CHtCNpvd.js → idle-stack-reaper-Bw0rU9GC.js} +1 -1
- package/server/{in-flight-guard-pcwXKLGz.js → in-flight-guard-DuxabAHT.js} +1 -1
- package/server/{infra-KTp9KV9u.js → infra-CHIvOb9q.js} +30 -7
- package/server/{injection-67YyU6SC.js → injection-BYUt8ml1.js} +8 -8
- package/server/{injection-BxbZKPDh.js → injection-BviePcm3.js} +1 -1
- package/server/inspect-agent-JFEaYTRa.js +2 -0
- package/server/{inspect-agent-VHSihlb7.js → inspect-agent-sV_19NxZ.js} +12 -12
- package/server/{internal-token-B-z-sGBH.js → internal-token-BOtIRJU7.js} +1 -1
- package/server/{internal-token-zY75jrRJ.js → internal-token-DoVzb4b7.js} +2 -2
- package/server/{io-DfvO2xyh.js → io-DKrWd3gX.js} +5 -5
- package/server/{issue-closed-dvEWKO7Q.js → issue-closed-6RQsAjDX.js} +7 -7
- package/server/{issue-lifecycle-3N8XF7lP.js → issue-lifecycle-D9nLErvS.js} +206 -29
- package/server/{issue-lifecycle-BI6jAfp8.js → issue-lifecycle-DOPVv7xz.js} +1 -1
- package/server/{issue-service-singleton-BN_2MXp4.js → issue-service-singleton-B2xy-IS9.js} +124 -11
- package/server/{issue-service-singleton-CL6hESX2.js → issue-service-singleton-CvgNAWqK.js} +1 -1
- package/server/issue-title-fallback-DTSCQVu0.js +120 -0
- package/server/{issues-CkvUoAnq.js → issues-e_Ck1Ln2.js} +2 -2
- package/server/{jsonl-parser-CrEb2PWr.js → jsonl-parser-DqxVCZ1k.js} +3 -3
- package/server/jsonl-resolver-07OS3qOr.js +324 -0
- package/server/{kimi-code-C26gmGxM.js → kimi-code-BjtAHIz1.js} +14 -12
- package/server/{kimi-code-DoMoGqIu.js → kimi-code-vtXl2DR5.js} +1 -1
- package/server/{kimi-parser-Dmhy3UlR.js → kimi-parser-B1lgy2Vt.js} +2 -2
- package/server/{label-cleanup-X2lWfghH.js → label-cleanup-D2zUMasf.js} +3 -3
- package/server/{lifecycle-Bg44O-9x.js → lifecycle-0NOEzomy.js} +2 -2
- package/server/{lifecycle-B0rL38D3.js → lifecycle-DaCovZwn.js} +6 -6
- package/server/{lifecycle-io-CCBpRv5m.js → lifecycle-io-6WL46dsB.js} +5 -5
- package/server/{lifecycle-io-DQDU0apV.js → lifecycle-io-BBMTaP7S.js} +1 -1
- package/server/{linear-client-B0cIkTs4.js → linear-client-7fQThJTc.js} +3 -3
- package/server/{linear-client-6V2E-DSa.js → linear-client-BTGApNLo.js} +1 -1
- package/server/{linear-mcp-auth-LCo9AWUd.js → linear-mcp-auth-B8pYRsiU.js} +1 -1
- package/server/{linear-mcp-auth-Dsu9Io9r.js → linear-mcp-auth-Nk5s3L9M.js} +5 -5
- package/server/memory-fts-worker.js +1 -1
- package/server/{memory-governor-A4O6vI9d.js → memory-governor-Cqvbusr4.js} +14 -14
- package/server/{memory-pressure-patrol-BWlWywmA.js → memory-pressure-patrol-DPb8foam.js} +5 -5
- package/server/{merge-BGWcBxku.js → merge-BB_bjJ9a.js} +1 -1
- package/server/{merge-vz80RvSE.js → merge-FZ78_cEz.js} +3 -3
- package/server/{merge-agent-GWhmnxFk.js → merge-agent-B3jRrlS1.js} +37 -33
- package/server/{merge-agent-BRSz26Oh.js → merge-agent-BuoC_PRZ.js} +2 -2
- package/server/{merge-batch-CFMEtTxv.js → merge-batch-B8bVjFWS.js} +1 -1
- package/server/{merge-completeness-CP347umA.js → merge-completeness-DQt7Qa7i.js} +4 -4
- package/server/{merge-completeness-7ajHAIR-.js → merge-completeness-DkdabVch.js} +1 -1
- package/server/merge-ops-DabXHp2i.js +2 -0
- package/server/merge-rebase-CXq0qsgR.js +2 -0
- package/server/{merge-rebase-C5htyEEH.js → merge-rebase-qq40s91P.js} +2 -2
- package/server/{merge-set-DsGW8fmc.js → merge-set-BTNYvxM3.js} +1 -1
- package/server/{merge-set-eiE2nC6C.js → merge-set-BmRRflt0.js} +4 -4
- package/server/{merge-sync-CM2-myXu.js → merge-sync-0m2Q087q.js} +1 -1
- package/server/{merge-sync-Ct0-cxMX.js → merge-sync-CJpOa0cZ.js} +2 -2
- package/server/{merge-train-deps-LXHGK61n.js → merge-train-deps-CH5Mr3vN.js} +4 -4
- package/server/{merge-train-BOu3fN7O.js → merge-train-iwKqjtCF.js} +4 -4
- package/server/{merge-verification-BRp08IzI.js → merge-verification-JJc5GC2t.js} +6 -6
- package/server/{merged-docker-cleanup-worker-CwldDjHV.js → merged-docker-cleanup-worker-BOqWA373.js} +4 -4
- package/server/{merged-docker-cleanup-worker-C8eGn78a.js → merged-docker-cleanup-worker-CrhTdxZV.js} +1 -1
- package/server/messaging-nuwStbdQ.js +3 -0
- package/server/{multipart-parser-OAuW7824.js → multipart-parser-DxuW_rZV.js} +2 -2
- package/server/{no-resume-mode-MWI6pnrK.js → no-resume-mode-xuYLFhLw.js} +1 -1
- package/server/node_modules/.package-lock.json +11 -11
- 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/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 +27 -3
- 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/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 +4 -4
- 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/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/ansi-regex/index.js +3 -2
- package/server/node_modules/ansi-regex/package.json +1 -1
- 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/{orphan-proposed-reconciler-cV3URUqk.js → orphan-proposed-reconciler-Dmk0kO_p.js} +24 -23
- package/server/{orphan-proposed-reconciler-BAE5AZ_e.js → orphan-proposed-reconciler-gf4TxfZb.js} +2 -2
- package/server/package-lock.json +12 -12
- package/server/package.json +1 -1
- package/server/{pan-dir-DDd91kMb.js → pan-dir-BMda7tQj.js} +5 -5
- package/server/{deacon-merge-BOGFEV8_.js → parked-residue-BiHb8cD7.js} +150 -35
- package/server/{paths-CRLnDgcI.js → paths-DEe9j-kw.js} +2 -2
- package/server/{pending-lifecycle-claim-CYgMiDAP.js → pending-lifecycle-claim-J5uIIJPu.js} +2 -2
- package/server/{pickup-BjJsSX12.js → pickup-D1UbSDPd.js} +1 -1
- package/server/{pipeline-agent-reader-BLc43dVJ.js → pipeline-agent-reader-D-6okryb.js} +5 -5
- package/server/{pipeline-membership-5qlRz5Qg.js → pipeline-membership-CCbgBzNC.js} +1 -1
- package/server/{pipeline-membership-BHZp_ShY.js → pipeline-membership-PGX3Pe8V.js} +1 -1
- package/server/{pipeline-membership-gather-CGFY1v-y.js → pipeline-membership-gather-BK4dzh0X.js} +17 -12
- package/server/{pipeline-membership-gather-WhRc1yke.js → pipeline-membership-gather-BRhU7XPx.js} +1 -1
- package/server/{pipeline-notifier-BmsLWM_2.js → pipeline-notifier-BNAV9kpa.js} +2 -2
- package/server/{pipeline-notifier-C4fZ2ito.js → pipeline-notifier-DvHLaXKb.js} +1 -1
- package/server/{post-merge-lifecycle-worker-KK1RTKRE.js → post-merge-lifecycle-worker-DAWgzXQA.js} +3 -3
- package/server/{post-merge-state-_Lj3LDLh.js → post-merge-state-DC2_0t12.js} +4 -4
- package/server/prd-locations-BbAvqQmT.js +124 -0
- package/server/{project-pipelines-CCkebHOu.js → project-pipelines-By_5WcT4.js} +2 -2
- package/server/{project-repos-B4MK48j4.js → project-repos--QeCg7yQ.js} +29 -3
- package/server/project-repos-3bI6t4fO.js +3 -0
- package/server/project-resource-refresh-queue-BaZC79S3.js +2 -0
- package/server/project-resource-refresh-queue-x-K9mvpP.js +865 -0
- package/server/{projects-DvPEAP18.js → projects-LftaVK99.js} +1 -1
- package/server/{prompts-BiS5I2tZ.js → prompts-BotGu-6W.js} +2 -2
- package/server/{providers-DrfK0Ip8.js → providers-BL1I66sM.js} +7 -7
- package/server/providers-Dqgz3MY5.js +3 -0
- package/server/public/assets/{chunk-BO2N2NFS-GtVe_o56.js → chunk-BO2N2NFS-D5Fz5jND.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-BvhcYYHc.js → diagram-OG6HWLK6-Eux0gWFq.js} +1 -1
- package/server/public/assets/{dist-D0ryefak.js → dist-C3zShwhA.js} +1 -1
- package/server/public/assets/{dist-CSmUXazd.js → dist-D-JX_u7m.js} +3 -3
- package/server/public/assets/{ganttDiagram-6RSMTGT7-BXA51DzM.js → ganttDiagram-6RSMTGT7-UH3aweia.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-mlV4EpWt.js → highlighted-body-OFNGDK62-ccIQ-WXS.js} +1 -1
- package/server/public/assets/index-2wV4ipy_.css +1 -0
- package/server/public/assets/index-BTVcdPve.js +860 -0
- package/server/public/assets/{linear-BPE7oswm.js → linear-Cnnu4YQy.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-Bjto8iJh.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-BguGGV3S.js → pieDiagram-4H26LBE5-BD8-Tye6.js} +1 -1
- package/server/public/assets/{prod-aKDYUrXQ.js → prod-Ca6aKMts.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-Bx3i4B6H.js → quadrantDiagram-W4KKPZXB-BmSrVyFD.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-B5vuLjA4.js → sankeyDiagram-5OEKKPKP-CEGy8Das.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-HPlpkqsN.js → xychartDiagram-2RQKCTM6-VnQ8iY8s.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests-BcHIsFJv.js → pull-requests-Cp_FDT8-.js} +3 -3
- package/server/pull-requests-jVGcVq5G.js +2 -0
- package/server/rally-CxhVgIQ6.js +3 -0
- package/server/{rally-api-ShZ4kvn0.js → rally-api-CqAIJ8RX.js} +2 -2
- package/server/{rally-api-u_vkr5c_.js → rally-api-Ij1Zt0NI.js} +1 -1
- package/server/{rally-B1OMtzch.js → rally-bQpBzUNf.js} +3 -3
- package/server/{rally-client-DgZvUZqX.js → rally-client-CN5vh4Ac.js} +1 -1
- package/server/{rally-client-D6Feq1Ka.js → rally-client-qKbCNRVW.js} +5 -5
- 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-DKxOnkpE.js → rebuild-stack-BNOMVh7C.js} +7 -7
- package/server/{rebuild-stack-CCwKHZb6.js → rebuild-stack-DrMyA_mA.js} +2 -2
- package/server/{reconstruct-cache-BP8UIKt7.js → reconstruct-cache-mxIYCnqs.js} +7 -7
- package/server/{record-By-wp6pg.js → record-Ug18Cp4V.js} +1 -1
- package/server/{record-update-ByGtIlUK.js → record-update-WyhsREoH.js} +1 -1
- package/server/{record-update-D23jPU6b.js → record-update-dBGxL9OC.js} +8 -6
- package/server/{recovery-trip-C4dTl8DO.js → recovery-trip-BKLrL6NX.js} +43 -10
- package/server/{recovery-trip-qloOYOFz.js → recovery-trip-wFAixKsg.js} +1 -1
- package/server/{release-engine-Crc0Tjx-.js → release-engine-D9gaCBn9.js} +5 -5
- package/server/{release-set-DDXwbIK7.js → release-set-DPHHzEGx.js} +3 -3
- package/server/{remote-CBpLi4Yy.js → remote-BU6ONLpv.js} +3 -3
- package/server/{remote-oEMfXlwT.js → remote-BUEeUic6.js} +3 -3
- package/server/{remote-agents-DQVGZVQ9.js → remote-agents-BVtASiOF.js} +1 -1
- package/server/{remote-agents-Bgtc2nOO.js → remote-agents-CSaTLi3u.js} +6 -6
- package/server/{remote-completion-DxUJ5HKR.js → remote-completion-CBV3b9TI.js} +13 -13
- package/server/{resolver-C8rooxoz.js → resolver-DvSMXty7.js} +31 -8
- package/server/{resolver-CuAULbLs.js → resolver-gxv97jsQ.js} +2 -2
- package/server/resume-DvHuF-bm.js +3 -0
- package/server/review-agent-DgkUPRx0.js +3 -0
- package/server/{review-agent-7C2w5CzU.js → review-agent-esZ0QXdY.js} +43 -55
- package/server/{review-artifacts-BJeEfm2r.js → review-artifacts-DGGEobLp.js} +6 -6
- package/server/{review-convoy-liveness-DfF9eXjI.js → review-convoy-liveness-DmO8dIBH.js} +20 -11
- package/server/{review-run-recovery-7BKt2Es0.js → review-run-recovery-Ct0q7FkE.js} +3 -3
- package/server/{review-run-recovery-ZjuDTNhZ.js → review-run-recovery-DHiiw7d8.js} +1 -1
- package/server/{review-status-CUnjjOUu.js → review-status-C_kQeeX0.js} +1 -1
- package/server/{review-status-emit-Cg4tOb8U.js → review-status-emit-BZz1Y_22.js} +3 -3
- package/server/{review-status-enrichment-D-rQshu6.js → review-status-enrichment-BWH0XW_m.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-2C9lk85r.js} +2 -2
- package/server/{review-status-sync-YthpOH_q.js → review-status-sync-Bq00Loey.js} +1 -1
- package/server/{review-status-DBnR5t4z.js → review-status-yOGD2MuK.js} +86 -27
- package/server/{review-verdict-feedback-DqXTuJk8.js → review-verdict-feedback-Brjaxoda.js} +1 -1
- package/server/{review-verdict-feedback-C-dBon_-.js → review-verdict-feedback-CE_tr2iQ.js} +8 -8
- package/server/{review-verdict-writer-jldSh3Bm.js → review-verdict-writer-CD-4kDVx.js} +1 -1
- package/server/{review-verdict-writer-CKaJWp75.js → review-verdict-writer-Ca2V7QSY.js} +7 -7
- package/server/{rollup-DZwH4CLs.js → rollup--g9ik1XQ.js} +1 -1
- package/server/{rollup-QCwYcBdP.js → rollup-B6g9Nr6L.js} +8 -8
- package/server/{scanner-2aHeLC3W.js → scanner-YxIv-fG1.js} +8 -8
- package/server/{search-DwHYaj66.js → search-DqMN4__-.js} +2 -2
- package/server/{secret-redaction-B5G1xZ3k.js → secret-redaction-DLZ-VqHq.js} +1 -1
- package/server/{sequence-io-POKWdusG.js → sequence-io--b3_PsWq.js} +4 -4
- package/server/{sequencer-agent-DS00KHVm.js → sequencer-agent-CqouKVZG.js} +6 -6
- package/server/server.js +1115 -1269
- package/server/{service-BLb_CyPL.js → service-CEp-3iow.js} +64 -63
- package/server/{session-fork-DcTzVwex.js → session-fork-GtoeCh2H.js} +2 -2
- package/server/{settings-Clw8UVNs.js → settings-CLQcdkoD.js} +2 -2
- package/server/{settings-B9-H2K_E.js → settings-Ch2pCVtt.js} +3 -3
- package/server/settings-DhtPDmmI.js +2 -0
- package/server/{shadow-engineering-C6oO_PiR.js → shadow-engineering-BxiFrIKv.js} +3 -3
- package/server/{shadow-state-CEGrrECe.js → shadow-state-CSA1vtxr.js} +2 -2
- package/server/{shadow-state-e7250VUx.js → shadow-state-nGhCNXT2.js} +1 -1
- package/server/{shadow-utils-xFk2Wusb.js → shadow-utils-7q5QDmMj.js} +2 -2
- package/server/{ship-log-7BnQHuKU.js → ship-log-ie0A_SqV.js} +1 -1
- package/server/{ship-record-CwUX6Afo.js → ship-record-BM3oVvnL.js} +7 -7
- package/server/{ship-record-BgUPnpT0.js → ship-record-DHWH1hLz.js} +1 -1
- package/server/{ship-status-Ce3_3edi.js → ship-status-BEkddXMT.js} +2 -2
- package/server/{smart-compaction-BmfIi3oL.js → smart-compaction-BkzjVpWL.js} +1 -1
- package/server/{smart-compaction-Dy0gw1VH.js → smart-compaction-D0TE1lBD.js} +7 -7
- package/server/{spawn-planning-session-nH3b4Drz.js → spawn-planning-session-CkGweSCC.js} +19 -19
- package/server/{spawn-planning-session-CfhxRJoY.js → spawn-planning-session-s406rw1N.js} +2 -2
- package/server/{specialist-completion-CC1XJbTx.js → specialist-completion-CTAjwH5j.js} +1 -1
- package/server/{specialist-context-cHwpcXSh.js → specialist-context-CKasRfYu.js} +5 -5
- package/server/{specialist-handoff-logger-GqnGSYoJ.js → specialist-handoff-logger-DrjrOmmn.js} +2 -2
- package/server/{specialist-logs-5OTnrV91.js → specialist-logs-Du6quZ0_.js} +3 -3
- package/server/{specialists-xXcJHAyg.js → specialists-B-4zyE4Y.js} +1 -1
- package/server/{specialists-8LcQi9Np.js → specialists-CuDWiNdB.js} +21 -272
- package/server/{specialists-DocAK-7A.js → specialists-b0dMMjWq.js} +148 -685
- package/server/specialists-registry-1y6Rt_F1.js +3 -0
- package/server/specialists-registry-BYjs04iK.js +277 -0
- package/server/specialists-x-kPMhrL.js +4 -0
- package/server/specs-IYsFlM-L.js +3 -0
- package/server/{src-DudQNYVw.js → src-CY2Wl8IX.js} +337 -6
- package/server/{src-C2TAxwki.js → src-CZsPs61V.js} +6 -6
- package/server/{src-DUVvEA8Q.js → src-DeQwpuh6.js} +3 -3
- package/server/{stack-health-DKT4ySnA.js → stack-health-BQFSJc0l.js} +3 -3
- package/server/{stack-health-CbyiYS9H.js → stack-health-ypIKtkbE.js} +1 -1
- package/server/{stale-task-claims-PzFee70R.js → stale-task-claims-C2e1zdMT.js} +5 -5
- package/server/{staleness-BjOAq9-d.js → staleness-CRDK6LFG.js} +1 -1
- package/server/{staleness-D8UTEXV5.js → staleness-Fzx_3_Hr.js} +1 -1
- package/server/{stall-sweeper-DOyIfeLR.js → stall-sweeper-QNk4h9m6.js} +8 -8
- package/server/{state-home-DhAZlk5k.js → state-home-DdG8erBI.js} +2 -2
- package/server/{state-mapping-BVSs84bO.js → state-mapping-D2yC81Vy.js} +1 -1
- package/server/{state-migrate-CJKEwpB0.js → state-migrate-C6H3jfHE.js} +6 -6
- package/server/{state-mirror-Do7pag7W.js → state-mirror-DF4Lfxm0.js} +3 -3
- package/server/stuck-remediation-BDa_tXgB.js +774 -0
- package/server/stuck-remediation-BVNd9txd.js +2 -0
- package/server/{substrate-bug-weights-service-BTNjHBnl.js → substrate-bug-weights-service-BbbCZEtJ.js} +3 -3
- package/server/{summary-fork-CZ88rhVx.js → summary-fork-BvcW6bq0.js} +113 -30
- package/server/{summary-fork-CvB7Oyq9.js → summary-fork-DIQmtOuV.js} +2 -2
- 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-D4v0WfiQ.js → supervisor-D3jC2c7A.js} +4 -4
- package/server/supervisor-v0cYN2Vp.js +2 -0
- package/server/{swarm-readiness-D8R-LWX5.js → swarm-readiness-CMWAQuWM.js} +3 -3
- package/server/{synthesis-verdict-B6wvLGcA.js → synthesis-verdict-C-pJOPsn.js} +1 -1
- package/server/{synthesis-verdict-N5Z11pg7.js → synthesis-verdict-DVlrLF9A.js} +2 -2
- package/server/{system-prerequisites-BbGZ_WHF.js → system-prerequisites-QKtIYXI2.js} +2 -2
- package/server/{teardown-workspace-CYend-KY.js → teardown-workspace-cJea1OLo.js} +16 -16
- package/server/{test-agent-queue-BUtWhNcc.js → test-agent-queue-C5DI_gWX.js} +6 -6
- package/server/{test-verdict-BWm3hgDj.js → test-verdict-C7kmd2_Y.js} +1 -1
- package/server/{test-verdict-BWtRmdiR.js → test-verdict-DUbDHqeD.js} +2 -2
- package/server/{tldr-daemon-CneJ24eL.js → tldr-daemon-BNQHwblU.js} +1 -1
- package/server/{tldr-daemon-CMVBT4kT.js → tldr-daemon-CO08YlfQ.js} +2 -2
- package/server/tmux-B8zsqD_6.js +4 -0
- package/server/{tmux-BqXzRuaH.js → tmux-DWEc4Ld9.js} +91 -19
- package/server/{token-CO3INKbh.js → token-Bez-qCB2.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-CJzPhSHv.js} +2 -2
- package/server/{tracker-utils-xnVJVrrO.js → tracker-utils-DJAOAuMN.js} +2 -2
- package/server/{traefik-connect-A5k54mCv.js → traefik-connect-D3H5I6b9.js} +1 -1
- package/server/{tunnel-DauSR-rs.js → tunnel-BSdKnW0U.js} +1 -1
- package/server/{tunnel-CwOnS-PB.js → tunnel-Cr3ctqxp.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-fzBp9cYi.js} +1 -1
- package/server/{types-DbxY2QB6.js → types-pLpbsNto.js} +1 -1
- package/server/{uat-failure-feedback-BVqsWlrr.js → uat-failure-feedback-IZQ-J8jt.js} +5 -5
- package/server/{uat-promote-verification-DmG097QS.js → uat-promote-verification-DXApKcc2.js} +5 -5
- package/server/{uat-train-COSy-vEX.js → uat-train-CycEzpbE.js} +1 -1
- package/server/{uat-train-DVUNW03P.js → uat-train-IIZlz7r3.js} +0 -0
- package/server/{validate-Dvv83iBx.js → validate-Ur4xH5bN.js} +3 -3
- package/server/{validation-BdCjzWLN.js → validation-CHovCoTT.js} +1 -1
- package/server/{validation-DlHafKzu.js → validation-Dr6V4PXx.js} +9 -6
- package/server/{verification-artifact-CaSbxUVg.js → verification-artifact-D3viYe_t.js} +1 -1
- package/server/{verification-artifact-0Zku8N-W.js → verification-artifact-k5Ftpg0c.js} +1 -1
- package/server/{verification-runner-C6wdZda2.js → verification-runner-BuqGwm2t.js} +1 -1
- package/server/{verification-runner-DwP2fUEF.js → verification-runner-Dl13mmsI.js} +53 -27
- package/server/{vtt-parser-luerJpYT.js → vtt-parser-BSnAB-Og.js} +1 -1
- package/server/work-agent-prompt-CJJ4tXci.js +3 -0
- package/server/{work-agent-prompt--9AWNYwZ.js → work-agent-prompt-CioeOuM4.js} +14 -14
- package/server/{work-agent-start-BNQO65W7.js → work-agent-start-B65Gqn9N.js} +2 -2
- package/server/{work-agent-start-DkzseQFl.js → work-agent-start-Ct1HVh6z.js} +1 -1
- package/server/{workflows-BYwR2aIN.js → workflows-AgFul1xc.js} +114 -41
- package/server/workflows-CfHm8lVd.js +2 -0
- package/server/{workspace-B-QJa3Ps.js → workspace-Cu3XlMXt.js} +1 -1
- package/server/{workspace-iTnTycOB.js → workspace-Cy4sDd3q.js} +3 -3
- package/server/{workspace-anchor-drift-DTt6h2Em.js → workspace-anchor-drift-BI0Hz6zI.js} +1 -1
- package/server/{workspace-anchor-drift-CHiGg8iu.js → workspace-anchor-drift-CMaqvizr.js} +4 -4
- package/server/{workspace-config-D0CavVtz.js → workspace-config-DRYDO7Zr.js} +1 -1
- package/server/{workspace-manager-W1OnbvU5.js → workspace-manager-CgovxDrO.js} +17 -17
- package/server/{workspace-manager-5BKPV6SY.js → workspace-manager-jfkKAEuO.js} +1 -1
- package/server/{workspace-metadata-tbbevEmP.js → workspace-metadata-BDqXzGGK.js} +1 -1
- package/server/{workspace-metadata-dJhXvZGQ.js → workspace-metadata-BNzODIv6.js} +2 -2
- package/server/{workspaces-BlpbOPZ7.js → workspaces-BJdPqx_J.js} +131 -127
- 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/handoff-isolate-cwd.md +4 -4
- package/sync-sources/rules/pan-handoff-focus-limit.md +12 -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 +182 -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-gauntlet-loop/references/lessons.md +60 -0
- package/sync-sources/skills/pan-handoff/SKILL.md +13 -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
|
@@ -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`
|
|
46
|
-
blocks, `@font-face`
|
|
47
|
-
`.display-xl`/`.display-lg
|
|
48
|
-
`
|
|
49
|
-
|
|
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
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
149
|
-
|
|
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
|
-
|
|
191
|
-
|
|
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
|
|
14
|
-
pan handoff --model <m> --cwd
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:**
|
|
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
|
|
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
|
-
-
|
|
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
|
---
|
|
@@ -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.
|