@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
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# <PROJECT> Direction Bible — <BRANCH>
|
|
2
|
+
|
|
3
|
+
One page. Every builder agent and every critic works from this. If a change
|
|
4
|
+
doesn't serve this direction, it's wrong even if it's pretty.
|
|
5
|
+
|
|
6
|
+
## The Direction (one sentence)
|
|
7
|
+
|
|
8
|
+
<One sentence that commits to a direction — name the feeling AND the
|
|
9
|
+
mechanics, e.g. "An illuminated manuscript come to life: stylized low-poly 3D
|
|
10
|
+
world lit like golden hour, unexplored land literally unfinished parchment.">
|
|
11
|
+
|
|
12
|
+
<One line on what it is never: "Never photoreal, never uncanny-middle, never
|
|
13
|
+
flat-2D." / "Never clever-cute; the prose serves the reader's scan." etc.>
|
|
14
|
+
|
|
15
|
+
## <Domain section 1 — e.g. World Rendering / Visual System / API Surface>
|
|
16
|
+
|
|
17
|
+
<Concrete rules with values — hex codes, type scales, timing budgets, naming
|
|
18
|
+
schemes, error shapes. Not adjectives: "painterly flat-shaded gradients, no
|
|
19
|
+
PBR" not "beautiful materials".>
|
|
20
|
+
|
|
21
|
+
## The Signature Elements (what makes it THIS, not generic)
|
|
22
|
+
|
|
23
|
+
1. <Signature 1 — the thing a critic can point at in evidence and say
|
|
24
|
+
"that's <PROJECT>".>
|
|
25
|
+
2. <Signature 2.>
|
|
26
|
+
3. <Signature 3.>
|
|
27
|
+
|
|
28
|
+
## <Palette / Tokens / Conventions>
|
|
29
|
+
|
|
30
|
+
<Exact values: colors, fonts, spacing scale, motion durations, naming.>
|
|
31
|
+
|
|
32
|
+
## <Domain section 2 — e.g. UI Chrome / CLI Output / Docs Voice>
|
|
33
|
+
|
|
34
|
+
<Rules for the human-facing surface: feedback behavior, motion/easing,
|
|
35
|
+
empty states, copy tone.>
|
|
36
|
+
|
|
37
|
+
## Hard Bans
|
|
38
|
+
|
|
39
|
+
<The short list of "any one of these = below the bar by definition": e.g.
|
|
40
|
+
emoji as art · default fonts · unstyled native controls · dead-on-click
|
|
41
|
+
surfaces · modal error dialogs · any element appearing with no transition.>
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Gauntlet — Live Progress</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--bg: #131417; --panel: #1c1e23; --ink: #e6e4dc; --dim: #8d8f98;
|
|
10
|
+
--line: #33363e; --gold: #c9a227; --glow: #6fc7bd; --red: #c25b4a;
|
|
11
|
+
--green: #6fae5c;
|
|
12
|
+
}
|
|
13
|
+
* { box-sizing: border-box; margin: 0; }
|
|
14
|
+
body {
|
|
15
|
+
background: var(--bg); color: var(--ink);
|
|
16
|
+
font: 15px/1.45 Georgia, 'Times New Roman', serif;
|
|
17
|
+
padding: 28px clamp(16px, 4vw, 48px);
|
|
18
|
+
}
|
|
19
|
+
header { display: flex; align-items: baseline; gap: 16px; flex-wrap: wrap; margin-bottom: 6px; }
|
|
20
|
+
h1 { font-size: 26px; letter-spacing: 0.06em; font-variant: small-caps; }
|
|
21
|
+
h1 .accent { color: var(--gold); }
|
|
22
|
+
#meta { color: var(--dim); font-size: 13px; }
|
|
23
|
+
#tagline { color: var(--dim); font-style: italic; margin-bottom: 22px; font-size: 13px; }
|
|
24
|
+
.grid {
|
|
25
|
+
display: grid; gap: 18px;
|
|
26
|
+
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
|
|
27
|
+
}
|
|
28
|
+
.card {
|
|
29
|
+
background: var(--panel); border: 1px solid var(--line); border-radius: 8px;
|
|
30
|
+
overflow: hidden; display: flex; flex-direction: column;
|
|
31
|
+
}
|
|
32
|
+
.shot {
|
|
33
|
+
aspect-ratio: 16/9; background: #0c0d10; display: flex;
|
|
34
|
+
align-items: center; justify-content: center; overflow: hidden; position: relative;
|
|
35
|
+
}
|
|
36
|
+
.shot img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
37
|
+
.shot .none { color: #45484f; font-size: 13px; letter-spacing: 0.08em; }
|
|
38
|
+
.body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
|
|
39
|
+
.titlerow { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
|
|
40
|
+
.title { font-size: 16px; font-variant: small-caps; letter-spacing: 0.04em; }
|
|
41
|
+
.badge {
|
|
42
|
+
font: 700 11px/1 system-ui, sans-serif; letter-spacing: 0.08em;
|
|
43
|
+
padding: 4px 9px; border-radius: 3px; white-space: nowrap;
|
|
44
|
+
}
|
|
45
|
+
.b-notstarted { color: var(--dim); border: 1px solid var(--line); }
|
|
46
|
+
.b-inprogress { color: #0c0d10; background: var(--gold); }
|
|
47
|
+
.b-critique { color: #0c0d10; background: var(--glow); }
|
|
48
|
+
.b-wowed { color: #0c0d10; background: var(--green); }
|
|
49
|
+
.b-notyet { color: #fff; background: var(--red); }
|
|
50
|
+
.b-delivered { color: #0c0d10; background: var(--glow); }
|
|
51
|
+
.note { color: var(--dim); font-size: 13px; }
|
|
52
|
+
.defects { list-style: none; display: flex; flex-direction: column; gap: 4px; }
|
|
53
|
+
.defects li {
|
|
54
|
+
font-size: 12.5px; color: var(--ink); padding-left: 14px; position: relative;
|
|
55
|
+
}
|
|
56
|
+
.defects li::before { content: '✕'; color: var(--red); position: absolute; left: 0; font-size: 10px; top: 2px; }
|
|
57
|
+
.foot { margin-top: auto; display: flex; justify-content: space-between; color: var(--dim); font-size: 12px; }
|
|
58
|
+
#err { color: var(--red); margin-top: 20px; display: none; }
|
|
59
|
+
#media-section { margin-top: 30px; }
|
|
60
|
+
#media-section h2 {
|
|
61
|
+
font-size: 18px; font-variant: small-caps; letter-spacing: 0.06em;
|
|
62
|
+
margin-bottom: 10px; color: var(--gold);
|
|
63
|
+
}
|
|
64
|
+
.tracks { display: flex; flex-direction: column; gap: 6px; max-width: 720px; }
|
|
65
|
+
.track {
|
|
66
|
+
display: flex; align-items: center; gap: 12px;
|
|
67
|
+
background: var(--panel); border: 1px solid var(--line); border-radius: 6px;
|
|
68
|
+
padding: 8px 12px;
|
|
69
|
+
}
|
|
70
|
+
.play {
|
|
71
|
+
width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--gold);
|
|
72
|
+
background: none; color: var(--gold); font-size: 13px; cursor: pointer;
|
|
73
|
+
display: flex; align-items: center; justify-content: center; flex: none;
|
|
74
|
+
}
|
|
75
|
+
.play:hover, .play.playing { background: var(--gold); color: #0c0d10; }
|
|
76
|
+
.t-title { font-size: 14.5px; }
|
|
77
|
+
.t-meta { color: var(--dim); font-size: 12px; }
|
|
78
|
+
.t-kind {
|
|
79
|
+
font: 700 10px/1 system-ui, sans-serif; letter-spacing: 0.08em;
|
|
80
|
+
padding: 3px 7px; border-radius: 3px; border: 1px solid var(--line);
|
|
81
|
+
color: var(--dim); flex: none;
|
|
82
|
+
}
|
|
83
|
+
.t-right { margin-left: auto; color: var(--dim); font-size: 12px; flex: none; }
|
|
84
|
+
</style>
|
|
85
|
+
</head>
|
|
86
|
+
<body>
|
|
87
|
+
<header>
|
|
88
|
+
<h1>The <span class="accent">Gauntlet</span> — <span id="project">loading…</span></h1>
|
|
89
|
+
<span id="meta"></span>
|
|
90
|
+
</header>
|
|
91
|
+
<p id="tagline"></p>
|
|
92
|
+
<div class="grid" id="grid"></div>
|
|
93
|
+
<section id="media-section" style="display:none">
|
|
94
|
+
<h2>Generated Media</h2>
|
|
95
|
+
<div class="tracks" id="tracks"></div>
|
|
96
|
+
</section>
|
|
97
|
+
<p id="err"></p>
|
|
98
|
+
<audio id="player"></audio>
|
|
99
|
+
<script>
|
|
100
|
+
// Live gauntlet progress page. Renders entirely from status.json (+ optional
|
|
101
|
+
// media-manifest.json); copied verbatim into each project's gauntlet/ dir.
|
|
102
|
+
const badge = (a) => {
|
|
103
|
+
if (a.verdict === 'WOWED') return ['b-wowed', 'WOWED'];
|
|
104
|
+
if (a.verdict === 'NOT_YET') return ['b-notyet', 'NOT YET · iter ' + a.iteration];
|
|
105
|
+
if (a.status === 'IN PROGRESS' || /ITER \d+ IN PROGRESS/.test(a.status || '')) return ['b-inprogress', a.status];
|
|
106
|
+
if (a.status === 'AWAITING CRITIQUE') return ['b-critique', 'AWAITING CRITIQUE'];
|
|
107
|
+
if ((a.status || '').match(/DELIVERED|SHIPPED|WIRED/)) return ['b-delivered', a.status];
|
|
108
|
+
return ['b-notstarted', a.status || 'NOT STARTED'];
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// Per-area card registry: create once, then mutate in place — no flashing.
|
|
112
|
+
const cards = {}; // key -> {el, img, lastUpdated}
|
|
113
|
+
|
|
114
|
+
function ensureCard(key) {
|
|
115
|
+
if (cards[key]) return cards[key];
|
|
116
|
+
const el = document.createElement('div');
|
|
117
|
+
el.className = 'card';
|
|
118
|
+
el.innerHTML =
|
|
119
|
+
'<div class="shot"><span class="none">NO CAPTURE YET</span></div>' +
|
|
120
|
+
'<div class="body">' +
|
|
121
|
+
'<div class="titlerow"><span class="title"></span><span class="badge"></span></div>' +
|
|
122
|
+
'<div class="note"></div>' +
|
|
123
|
+
'<ul class="defects"></ul>' +
|
|
124
|
+
'<div class="foot"><span class="f-iter"></span><span class="f-time"></span></div>' +
|
|
125
|
+
'</div>';
|
|
126
|
+
document.getElementById('grid').appendChild(el);
|
|
127
|
+
cards[key] = { el, img: null, lastUpdated: null };
|
|
128
|
+
return cards[key];
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function setText(el, sel, text) {
|
|
132
|
+
const n = el.querySelector(sel);
|
|
133
|
+
if (n.textContent !== text) n.textContent = text;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function updateCard(key, a) {
|
|
137
|
+
const c = ensureCard(key);
|
|
138
|
+
const [cls, label] = badge(a);
|
|
139
|
+
setText(c.el, '.title', a.title || key);
|
|
140
|
+
const b = c.el.querySelector('.badge');
|
|
141
|
+
if (b.className !== 'badge ' + cls) b.className = 'badge ' + cls;
|
|
142
|
+
if (b.textContent !== label) b.textContent = label;
|
|
143
|
+
setText(c.el, '.note', a.note || '');
|
|
144
|
+
const defects = (a.defects || []).slice(0, 5).map(d =>
|
|
145
|
+
typeof d === 'string' ? d : (d.element + ' — ' + d.fix));
|
|
146
|
+
const ul = c.el.querySelector('.defects');
|
|
147
|
+
const want = defects.map(d => '<li>' + d + '</li>').join('');
|
|
148
|
+
if (ul.innerHTML !== want) ul.innerHTML = want;
|
|
149
|
+
setText(c.el, '.f-iter', 'iteration ' + (a.iteration || 0));
|
|
150
|
+
setText(c.el, '.f-time', a.updated ? new Date(a.updated).toLocaleTimeString() : '');
|
|
151
|
+
|
|
152
|
+
// Screenshot: reload only when the area's timestamp changes (or first pass).
|
|
153
|
+
if (c.lastUpdated !== a.updated || !c.img) {
|
|
154
|
+
const probe = new Image();
|
|
155
|
+
probe.onload = () => {
|
|
156
|
+
const holder = c.el.querySelector('.shot');
|
|
157
|
+
if (!c.img) { holder.innerHTML = ''; c.img = probe; holder.appendChild(probe); }
|
|
158
|
+
else c.img.src = probe.src; // swap after load — old frame stays until ready
|
|
159
|
+
};
|
|
160
|
+
probe.onerror = () => { c.lastUpdated = a.updated; }; // no shot yet; stop retrying this stamp
|
|
161
|
+
probe.src = 'shots/' + key + '.png?t=' + Date.now();
|
|
162
|
+
c.lastUpdated = a.updated;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
async function refresh() {
|
|
167
|
+
try {
|
|
168
|
+
const r = await fetch('status.json?t=' + Date.now());
|
|
169
|
+
const s = await r.json();
|
|
170
|
+
if (s.project) document.getElementById('project').textContent = s.project;
|
|
171
|
+
if (s.tagline) document.getElementById('tagline').textContent = s.tagline;
|
|
172
|
+
document.getElementById('meta').textContent =
|
|
173
|
+
(s.pass || '') + ' · updated ' + new Date(s.updated).toLocaleTimeString();
|
|
174
|
+
for (const [key, a] of Object.entries(s.areas || {})) updateCard(key, a);
|
|
175
|
+
document.getElementById('err').style.display = 'none';
|
|
176
|
+
} catch (e) {
|
|
177
|
+
const el = document.getElementById('err');
|
|
178
|
+
el.textContent = 'status.json unreadable: ' + e.message;
|
|
179
|
+
el.style.display = 'block';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Optional media list (audio/video generated during the pass) — built once
|
|
184
|
+
// per manifest version, keyed by updated stamp.
|
|
185
|
+
const player = document.getElementById('player');
|
|
186
|
+
let currentFile = null;
|
|
187
|
+
let mediaVersion = null;
|
|
188
|
+
player.addEventListener('ended', () => { currentFile = null; markPlaying(); });
|
|
189
|
+
player.addEventListener('pause', markPlaying);
|
|
190
|
+
player.addEventListener('play', markPlaying);
|
|
191
|
+
function markPlaying() {
|
|
192
|
+
document.querySelectorAll('.play').forEach(b => {
|
|
193
|
+
const active = b.dataset.file === currentFile && !player.paused;
|
|
194
|
+
b.classList.toggle('playing', active);
|
|
195
|
+
b.textContent = active ? '❚❚' : '▶';
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
function togglePlay(file) {
|
|
199
|
+
if (currentFile === file && !player.paused) { player.pause(); }
|
|
200
|
+
else {
|
|
201
|
+
if (currentFile !== file) { player.src = file; currentFile = file; }
|
|
202
|
+
player.play();
|
|
203
|
+
}
|
|
204
|
+
markPlaying();
|
|
205
|
+
}
|
|
206
|
+
async function refreshMedia() {
|
|
207
|
+
try {
|
|
208
|
+
const r = await fetch('media-manifest.json?t=' + Date.now());
|
|
209
|
+
if (!r.ok) return;
|
|
210
|
+
const m = await r.json();
|
|
211
|
+
if (!m.tracks || !m.tracks.length || m.updated === mediaVersion) return;
|
|
212
|
+
mediaVersion = m.updated;
|
|
213
|
+
document.getElementById('media-section').style.display = 'block';
|
|
214
|
+
const list = document.getElementById('tracks');
|
|
215
|
+
list.innerHTML = '';
|
|
216
|
+
for (const t of m.tracks) {
|
|
217
|
+
const row = document.createElement('div');
|
|
218
|
+
row.className = 'track';
|
|
219
|
+
row.innerHTML =
|
|
220
|
+
'<button class="play" data-file="' + t.file + '">▶</button>' +
|
|
221
|
+
'<div><div class="t-title">' + t.title + '</div>' +
|
|
222
|
+
'<div class="t-meta">' + (t.placement || '') + '</div></div>' +
|
|
223
|
+
'<span class="t-kind">' + (t.kind || '').toUpperCase() + '</span>' +
|
|
224
|
+
'<span class="t-right">' + (t.duration || '') + '</span>';
|
|
225
|
+
row.querySelector('.play').addEventListener('click', () => togglePlay(t.file));
|
|
226
|
+
list.appendChild(row);
|
|
227
|
+
}
|
|
228
|
+
markPlaying();
|
|
229
|
+
} catch (e) { /* manifest optional */ }
|
|
230
|
+
}
|
|
231
|
+
refresh();
|
|
232
|
+
refreshMedia();
|
|
233
|
+
setInterval(refresh, 5000);
|
|
234
|
+
setInterval(refreshMedia, 15000);
|
|
235
|
+
</script>
|
|
236
|
+
</body>
|
|
237
|
+
</html>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Gauntlet domains — evidence, areas, automatic failures
|
|
2
|
+
|
|
3
|
+
Pick the row matching THING, adapt freely. The point of this file: every
|
|
4
|
+
domain has a CHECK (how the critic inspects the work), a starter area split,
|
|
5
|
+
an automatic-failure list, and a storefront-test phrasing. Non-visual domains
|
|
6
|
+
replace "screenshot" with the domain's capturable evidence.
|
|
7
|
+
|
|
8
|
+
## Game / rich visual UI
|
|
9
|
+
|
|
10
|
+
- **CHECK:** Playwright screenshots at 1920×1080 across the key states
|
|
11
|
+
(spawn, mid-action, celebration, error), on an account with realistic data.
|
|
12
|
+
- **Areas:** world/rendering · game-feel animation · UI system & motion ·
|
|
13
|
+
onboarding · presentation of the core loop · sound design · music ·
|
|
14
|
+
performance.
|
|
15
|
+
- **Auto-fails:** emoji as art · default/system fonts · unstyled native
|
|
16
|
+
controls · flat untextured surfaces with no lighting response · dead-on-
|
|
17
|
+
click surfaces · error-after-the-fact UX (offer then reject) · uncanny-
|
|
18
|
+
middle photorealism · two shots that read as different games.
|
|
19
|
+
- **Storefront test:** "If this appeared on the same store page as the
|
|
20
|
+
reference, would a player believe it is a shipped, commercially published
|
|
21
|
+
game?"
|
|
22
|
+
|
|
23
|
+
## Web app / product UI
|
|
24
|
+
|
|
25
|
+
- **CHECK:** Playwright screenshots at 1920×1080 + mobile width, across real
|
|
26
|
+
user flows (empty state, populated, error, loading, success).
|
|
27
|
+
- **Areas:** design system & tokens · core flow A · core flow B · empty/error/
|
|
28
|
+
loading states · motion & micro-interactions · accessibility · performance.
|
|
29
|
+
- **Auto-fails:** default browser styling anywhere · unstyled focus rings ·
|
|
30
|
+
layout shift on load · dead-end states with no next action · stock toasts
|
|
31
|
+
for moments that deserve staging · inconsistent spacing rhythm.
|
|
32
|
+
- **Storefront test:** "Next to the reference's marketing screenshots, would
|
|
33
|
+
a buyer believe this is the same tier of product?"
|
|
34
|
+
|
|
35
|
+
## CLI / developer tool
|
|
36
|
+
|
|
37
|
+
- **CHECK:** Captured terminal sessions (real invocations, real output,
|
|
38
|
+
success + error + `--help`), asciinema or scripted transcript + screenshot.
|
|
39
|
+
- **Areas:** command surface & help text · output design (color, tables,
|
|
40
|
+
spinners) · error messages & recovery hints · exit codes & pipe behavior ·
|
|
41
|
+
docs/README · performance (startup, large input).
|
|
42
|
+
- **Auto-fails:** stack traces leaked to users · wall-of-text help · no
|
|
43
|
+
`--help` for any verb · colors that break on light terminals · silent
|
|
44
|
+
failure (exit 0, nothing happened) · inconsistent flag naming.
|
|
45
|
+
- **Storefront test:** "Shown both tools' real transcripts, would a developer
|
|
46
|
+
pick this one as the professionally maintained tool?"
|
|
47
|
+
|
|
48
|
+
## API / backend service
|
|
49
|
+
|
|
50
|
+
- **CHECK:** Real request/response transcripts (curl -v or HTTPie), OpenAPI
|
|
51
|
+
render, error catalog exercised live, latency numbers under stated load.
|
|
52
|
+
- **Areas:** resource model & naming · error design · docs & examples ·
|
|
53
|
+
authn/authz behavior · observability · performance & limits.
|
|
54
|
+
- **Auto-fails:** inconsistent naming across resources · 500s for user error
|
|
55
|
+
· errors without actionable messages · undocumented behavior the client
|
|
56
|
+
must guess · missing pagination on list endpoints.
|
|
57
|
+
- **Storefront test:** "Given both APIs' docs and live responses, would an
|
|
58
|
+
integrating engineer call this one a commercial-grade API?"
|
|
59
|
+
|
|
60
|
+
## Library / SDK
|
|
61
|
+
|
|
62
|
+
- **CHECK:** A consumer test app's real usage, rendered API docs, README
|
|
63
|
+
quickstart timed end-to-end, type/error behavior at the boundaries.
|
|
64
|
+
- **Areas:** API surface & naming · docs & quickstart · error taxonomy ·
|
|
65
|
+
types & ergonomics · test coverage of the contract · bundle/perf cost.
|
|
66
|
+
- **Auto-fails:** quickstart that doesn't run as written · leaked internal
|
|
67
|
+
types · error classes users can't catch selectively · breaking the stated
|
|
68
|
+
semver contract.
|
|
69
|
+
- **Storefront test:** "Would an engineer skimming both READMEs believe this
|
|
70
|
+
one is the safe dependency to bet on?"
|
|
71
|
+
|
|
72
|
+
## Performance pass
|
|
73
|
+
|
|
74
|
+
- **CHECK:** Benchmark output (cold + warm, p50/p95/p99), flamegraphs,
|
|
75
|
+
before/after on the same machine, under stated load. Numbers, not vibes.
|
|
76
|
+
- **Areas:** the hot path · memory footprint · startup · I/O & caching ·
|
|
77
|
+
regression guard (the benchmark becomes CI).
|
|
78
|
+
- **Auto-fails:** benchmark that doesn't isolate the change · claimed wins
|
|
79
|
+
without reproducible numbers · a win on one path that regresses another
|
|
80
|
+
unmeasured · micro-benchmarks that don't reflect real load.
|
|
81
|
+
- **Storefront test:** "Presented with both benchmark suites, would an
|
|
82
|
+
engineer believe this result and reproduce it?"
|
|
83
|
+
|
|
84
|
+
## Writing / docs / content
|
|
85
|
+
|
|
86
|
+
- **CHECK:** The rendered pieces side by side with the reference's, read by
|
|
87
|
+
the critic with labels stripped; timed comprehension check ("which one do
|
|
88
|
+
you understand faster?").
|
|
89
|
+
- **Areas:** structure & information architecture · voice & register ·
|
|
90
|
+
examples & code samples · visuals/diagrams · navigation & discoverability.
|
|
91
|
+
- **Auto-fails:** jargon the target reader can't define · examples that
|
|
92
|
+
don't run · a wall of text where a table/diagram carries the point ·
|
|
93
|
+
inconsistent terminology for the same concept.
|
|
94
|
+
- **Storefront test:** "Stripped of branding, which piece would the target
|
|
95
|
+
reader finish and act on?"
|
|
96
|
+
|
|
97
|
+
## Asset-heavy passes (audio, video, 3D, images)
|
|
98
|
+
|
|
99
|
+
- **CHECK:** The generated assets played/viewed in situ (wired into the
|
|
100
|
+
product), plus a media-manifest.json so the progress page can play them.
|
|
101
|
+
- **Rules worth restating** (from run #1): generation prompts must describe
|
|
102
|
+
audible/visible results, not mood adjectives ("soft/tiny" yields near-
|
|
103
|
+
silence — put gentleness in the engine's gain, not the prompt); strip
|
|
104
|
+
leading silence before trimming to a duration budget; never hard-trim a
|
|
105
|
+
musical phrase; peak-normalize audio to −3 dBFS; verify the license clause
|
|
106
|
+
of every purchased/stock asset for the distribution form.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Gauntlet run-#1 lessons — operational addenda
|
|
2
|
+
|
|
3
|
+
Generalized from the first full gauntlet (Lexerra, 2026-08-11). Every line
|
|
4
|
+
exists because its absence cost an iteration. Fold the applicable lines into
|
|
5
|
+
the mission prompt and the per-agent prompts verbatim.
|
|
6
|
+
|
|
7
|
+
1. **File-ownership map, enforced in every agent prompt.** Concurrent agents
|
|
8
|
+
in one worktree WILL clobber shared files. Each area owns exact paths;
|
|
9
|
+
areas sharing files serialize in one wave, never run in parallel. Agents
|
|
10
|
+
never commit; the orchestrator reviews and commits per area with
|
|
11
|
+
path-scoped `git add` — `git add -A` would scoop another in-flight agent's
|
|
12
|
+
half-done work.
|
|
13
|
+
2. **Evidence at presentation quality.** Screenshots at 1920×1080 — run #1's
|
|
14
|
+
1440×900 captures failed the critic on storefront parity alone. Capture
|
|
15
|
+
with realistic data (an in-fiction account name, real content — a test
|
|
16
|
+
username like `map3d_48100411` visible in the shot is a defect). Keep dev
|
|
17
|
+
tooling panels out of captures.
|
|
18
|
+
3. **Headless rendering gotchas.** Black frames in headless Chromium are a
|
|
19
|
+
renderer-context issue, not scene code — try default launch flags before
|
|
20
|
+
forcing software rasterization flags. React StrictMode double-mounts:
|
|
21
|
+
canvas/WebGL code must survive a fresh mount. Software-rasterized FPS
|
|
22
|
+
numbers in headless are CPU rasterization — never treat them as the real
|
|
23
|
+
60fps verdict.
|
|
24
|
+
4. **Seedable state is load-bearing for critique.** If reaching a state takes
|
|
25
|
+
hours of wall-clock (filled stockpiles, advanced time, specific data), the
|
|
26
|
+
loop can't be photographed. Add the test hook / seed path during setup,
|
|
27
|
+
not mid-loop. Never restart a shared dev server mid-run — hot-reload kills
|
|
28
|
+
other agents' verification sessions.
|
|
29
|
+
5. **Critic protocol.** The critic is ALWAYS a separate agent from the
|
|
30
|
+
builder, frontier-tier, sees evidence + refs only (no code access needed).
|
|
31
|
+
It tags each defect with the owning area so cross-area defects merge into
|
|
32
|
+
the right queue (run #1's map critic found 5 UI defects). Verdict JSON
|
|
33
|
+
goes to `gauntlet/notes/critique-<area>-iter<n>.json` and onto the
|
|
34
|
+
dashboard card verbatim.
|
|
35
|
+
6. **Dashboard contract.** Update `status.json` at EVERY transition (agent
|
|
36
|
+
launched / landed / awaiting critique / verdict), not just after
|
|
37
|
+
critiques. The page mutates cards in place — a full-DOM rebuild per poll
|
|
38
|
+
makes screenshots flash. Regenerated media needs cache-busting or browsers
|
|
39
|
+
replay stale files.
|
|
40
|
+
7. **Test reconciliation is its own queued item.** Big visual/structural
|
|
41
|
+
changes break existing test selectors; don't let the builder burn its run
|
|
42
|
+
fixing them. Wave gates are: build passes, evidence captured, critique
|
|
43
|
+
filed. Broken-suite repair gets its own area or a follow-up.
|
|
44
|
+
8. **Cadence artifacts.** Commit critique JSONs and status.json to the branch
|
|
45
|
+
— the pass history is reviewable. Gitignore large third-party reference
|
|
46
|
+
media and regenerable source assets (keep shipped assets committed).
|
|
47
|
+
|
|
48
|
+
## The four ways the loop silently fails
|
|
49
|
+
|
|
50
|
+
These are from the pattern's origin notes and every writeup since — restate
|
|
51
|
+
them because they are the whole game:
|
|
52
|
+
|
|
53
|
+
1. **Vague bar** → the critic invents a comparison and approves everything.
|
|
54
|
+
The bar must be named, fetchable, comparable.
|
|
55
|
+
2. **Builder judging its own work** → the critic must be a fresh agent with
|
|
56
|
+
zero knowledge of the builder's effort or reasoning trail.
|
|
57
|
+
3. **Soft critic** → scores out of 10 drift upward and everything passes.
|
|
58
|
+
Binary verdict + concrete fixes only.
|
|
59
|
+
4. **Fixed round count** → "do 3 iterations" ships a prototype. The exit
|
|
60
|
+
condition is WOWED, or the operator stopping the run.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pan-handoff
|
|
3
|
-
description: "pan handoff <conv> — agent-authored conversation handoff that spawns a new conversation.
|
|
3
|
+
description: "pan handoff <conv> — agent-authored conversation handoff that spawns a new conversation. Keep the focus short and steering; the hard cap is 10000 characters (PAN-3737)."
|
|
4
4
|
triggers:
|
|
5
5
|
- pan handoff
|
|
6
6
|
- hand off conversation
|
|
@@ -24,7 +24,14 @@ pan handoff [conv] [focus text...]
|
|
|
24
24
|
|
|
25
25
|
The trailing text after the conversation reference becomes the focus — no flag required.
|
|
26
26
|
|
|
27
|
-
>
|
|
27
|
+
> Keep the focus short and steering; do NOT pack backstory/context into it — the author reads the full source transcript for that, and long briefs belong in a file the focus points at. The hard cap is 10,000 characters (multi-line is fine; PAN-3737) — a longer focus is rejected with `Fork request rejected: focus must be 10000 characters or fewer` and no conversation is created.
|
|
28
|
+
|
|
29
|
+
## Where to run it, and where the successor lives
|
|
30
|
+
|
|
31
|
+
Two separate directories are involved, and each has its own rule:
|
|
32
|
+
|
|
33
|
+
- **Run the command from your project directory** (the directory your session was launched in). Do NOT `cd` into the `--cwd` target, a `/tmp` brief directory, or any other path first — `--cwd` is where the *successor* will live; you never need to stand there. Sandboxed harnesses (e.g. codex `workspace-write`) block network and non-workspace writes for commands run from untrusted directories. The failure signature is `attempt to write a readonly database` followed by `Could not reach the Overdeck dashboard at http://127.0.0.1:3011 … (fetch failed)` **while the dashboard is actually up** — if you see that pair, re-run from your project directory (PAN-3735).
|
|
34
|
+
- **`--cwd` must be an absolute path to an existing directory under your home directory, inside a git working tree.** The server rejects violations and creates no conversation: `/tmp/...` fails the home-containment check (`Invalid cwd`), a relative path like `../worktree` fails the absolute-path check (the CLI does not resolve it for you), a not-yet-created directory fails the existence check, and a plain non-git directory fails with `Handoff cwd is not inside a git repository`. The reliable recipe is an isolated worktree: `git -C <repo> worktree add -b hoff/<slug> "$HOME/hoff-<slug>-wt" main`, put any brief files in it, then pass it as `--cwd`. In a polyrepo project whose parent directory is not itself a git repo, point `--cwd` at (a worktree of) the relevant sub-repo — the parent fails the git check.
|
|
28
35
|
|
|
29
36
|
## Handing off the conversation you are in (the common case)
|
|
30
37
|
|
|
@@ -61,8 +68,8 @@ pan handoff 42
|
|
|
61
68
|
pan handoff source-conv continue the API wiring
|
|
62
69
|
pan handoff source-conv --model claude-sonnet-4-6
|
|
63
70
|
pan handoff source-conv --harness pi
|
|
64
|
-
pan handoff source-conv --cwd /
|
|
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
|
|
@@ -71,7 +78,7 @@ pan handoff source-conv --issue PAN-1234 continue the API wiring
|
|
|
71
78
|
|
|
72
79
|
## Project and issue association
|
|
73
80
|
|
|
74
|
-
Use `--project <key-or-name>` when the successor runs from a `--cwd` outside the registered project's directory, such as an isolated worktree. The explicit project wins over the source association; without the flag, the successor inherits the source conversation's project. Unknown projects reject the request and create no conversation.
|
|
81
|
+
Use `--project <key-or-name>` when the successor runs from a `--cwd` outside the registered project's directory, such as an isolated worktree. The `--cwd` value must be an absolute path to an existing directory under your home directory (see "Where to run it, and where the successor lives" above). The explicit project wins over the source association; without the flag, the successor inherits the source conversation's project. Unknown projects reject the request and create no conversation.
|
|
75
82
|
|
|
76
83
|
Use `--issue <id>` to attach the new conversation to a specific issue (e.g. `PAN-1234`). The flag is validated; an invalid ID rejects the request and creates no conversation. When `--issue` is omitted, the new conversation inherits the source conversation's issue association, if any.
|
|
77
84
|
|
|
@@ -87,7 +94,7 @@ Use a normal summary fork when a quick passive summary is enough. Use a plain fo
|
|
|
87
94
|
|
|
88
95
|
The positional text after `<conv>` is the focus — a short statement of what the successor should concentrate on. Quotes are optional; everything after the conversation reference (excluding flags) is joined with spaces. Keep it short and task-oriented; the focus is injected into the handoff-authoring prompt, not used as the new conversation's user request.
|
|
89
96
|
|
|
90
|
-
**Hard
|
|
97
|
+
**Hard ceiling: 10,000 characters** (PAN-3737; multi-line focus is allowed). Don't pack the backstory into the focus even so; the detail belongs in the transcript the author reads or in a brief file in the successor cwd. The focus only steers what the author emphasizes, and its first ~70 characters become the new conversation's title.
|
|
91
98
|
|
|
92
99
|
## Authoring modes
|
|
93
100
|
|
|
@@ -126,7 +126,7 @@ Overdeck comes with a suite of skills to guide AI assistants:
|
|
|
126
126
|
|
|
127
127
|
### Utilities
|
|
128
128
|
- `/session-health` - Detect and clean up stuck sessions
|
|
129
|
-
- `/skill-creator` - Guide for creating
|
|
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
|
|
@@ -48,6 +48,7 @@ state it is in to running work.
|
|
|
48
48
|
from the existing xBRIEF and xBRIEF tasks.
|
|
49
49
|
- **Already running** — `pan start` exits 0 with a no-op message naming `pan tell <id>` for
|
|
50
50
|
messaging and the tmux attach command.
|
|
51
|
+
- **Swarm active** — the bare parent agent is the foreman. `pan start` attaches to or restores that foreman instead of refusing because slot agents exist; it never creates a competing serial parent.
|
|
51
52
|
|
|
52
53
|
Planning depth is controlled by `--plan`:
|
|
53
54
|
|
|
@@ -65,6 +66,8 @@ Start-time policy flags are persisted on the issue before planning or work begin
|
|
|
65
66
|
sets the durable work-model override used by later respawns, `--swarm` accepts `off`, `auto`,
|
|
66
67
|
or `always`, `--review-mode` accepts `quick`, `full`, or `none`, and `--review-model` pins the
|
|
67
68
|
model used by the review convoy. Omitted flags leave existing and inherited policy untouched.
|
|
69
|
+
Swarm mode controls automatic foreman creation, not Deacon slot dispatch. `off` keeps serial work,
|
|
70
|
+
while `auto` and `always` allow a readiness-eligible foreman loop.
|
|
68
71
|
When this start also kicks off planning (no plan exists yet), `--plan-model <model>` overrides
|
|
69
72
|
the planning agent's model for that session only — it is a one-shot override, not persisted
|
|
70
73
|
policy, and it never changes the work agent's model (`--model`).
|