repo-harness 0.25.1 → 0.25.4
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/README.md +21 -31
- package/agents/fleet/gatekeeper.md +1 -1
- package/assets/herdr/github-events/bot-event.d.mts +12 -0
- package/assets/herdr/{webhook-notify → github-events}/bot-event.mjs +1 -1
- package/assets/herdr/github-events/worker.mjs +2 -3
- package/assets/operator/{fleet-windows-job-controller.ps1 → windows-job-controller.ps1} +12 -12
- package/assets/reference-configs/agentic-development-flow.md +29 -19
- package/assets/reference-configs/external-tooling.md +30 -110
- package/assets/reference-configs/global-working-rules.md +11 -10
- package/assets/reference-configs/harness-overview.md +13 -8
- package/assets/reference-configs/herdr-notify.md +99 -95
- package/assets/reference-configs/herdr-skill-context.md +39 -49
- package/assets/reference-configs/hook-operations.md +4 -4
- package/assets/reference-configs/host-invariants.md +1 -1
- package/assets/reference-configs/issue-pipeline.md +2 -3
- package/assets/review-hazards.v1.json +57 -0
- package/assets/skill-commands/manifest.json +54 -143
- package/assets/skill-version.json +2 -2
- package/assets/skills/repo-harness-cross-review/SKILL.md +8 -5
- package/assets/skills/repo-harness-cross-review/references/generic-review.md +17 -10
- package/assets/skills/repo-harness-herdr-portal/SKILL.md +29 -22
- package/assets/skills/repo-harness-herdr-portal/references/messaging.md +14 -12
- package/assets/skills/repo-harness-herdr-portal/references/spawn.md +51 -68
- package/assets/skills/repo-harness-issue-flow/SKILL.md +21 -11
- package/assets/skills/repo-harness-issue-flow/references/acceptor.md +59 -9
- package/assets/skills/repo-harness-issue-flow/references/board.md +61 -51
- package/assets/skills/repo-harness-issue-flow/references/orchestrator.md +74 -43
- package/assets/skills/repo-harness-issue-flow/references/replan.md +10 -9
- package/assets/skills/repo-harness-issue-flow/references/templates.md +78 -39
- package/assets/skills/repo-harness-issue-flow/references/worker.md +26 -15
- package/assets/skills/repo-harness-test/references/authoring.md +2 -5
- package/assets/skills/repo-harness-test/references/running.md +5 -3
- package/assets/skills/repo-harness-test/references/verification-plan.md +7 -3
- package/assets/tool-catalog.v1.json +10 -15
- package/dist/hook-entry.js +200 -825
- package/dist/oar-review-host.js +34 -12
- package/dist/operator-ui/assets/{ArchitectureWorkspace-CY6MWVYK.js → ArchitectureWorkspace-BRP1rMMo.js} +2 -2
- package/dist/operator-ui/assets/{DocsPage-DnPRp8Bo.js → DocsPage-DLM6dzMb.js} +3 -3
- package/dist/operator-ui/assets/{abnfDiagram-VCTEODGH-FrczBTcM.js → abnfDiagram-VCTEODGH-B4_iXt3l.js} +1 -1
- package/dist/operator-ui/assets/architecture-7GRP2DOG-BaUpfaSR.js +1 -0
- package/dist/operator-ui/assets/{architectureDiagram-5GKGNRK7-B7YjW5cP.js → architectureDiagram-5GKGNRK7-D2vVdhRg.js} +1 -1
- package/dist/operator-ui/assets/{blockDiagram-I7D4REHJ-VlgsJiAG.js → blockDiagram-I7D4REHJ-BYZ8XsMJ.js} +1 -1
- package/dist/operator-ui/assets/{c4Diagram-7LVT6UL2-D7skC_rA.js → c4Diagram-7LVT6UL2-5ZFF7y_b.js} +1 -1
- package/dist/operator-ui/assets/channel-B2h48QWv.js +1 -0
- package/dist/operator-ui/assets/{chunk-4HAMMTFA-CmMSCuUx.js → chunk-4HAMMTFA-i3tlSxDP.js} +1 -1
- package/dist/operator-ui/assets/{chunk-75Z2AOVW-C2Xq_mi9.js → chunk-75Z2AOVW-BhcHGQX3.js} +1 -1
- package/dist/operator-ui/assets/{chunk-DU6HZSFF-c1GQqTNL.js → chunk-DU6HZSFF-ESwLEd7y.js} +1 -1
- package/dist/operator-ui/assets/{chunk-F27PBJKO-mKGGg2lc.js → chunk-F27PBJKO-DzgkUAaS.js} +1 -1
- package/dist/operator-ui/assets/{chunk-GMAD6QVW-BBvaMzz7.js → chunk-GMAD6QVW-CI3PzCBH.js} +1 -1
- package/dist/operator-ui/assets/{chunk-GVQU2GXP-Ciqkfb7x.js → chunk-GVQU2GXP-D7mVueL9.js} +1 -1
- package/dist/operator-ui/assets/{chunk-IMKFNOWR-lPRrJwGG.js → chunk-IMKFNOWR-6yCiE3Ny.js} +1 -1
- package/dist/operator-ui/assets/{chunk-L3NEJ4N5-ZCELMmfj.js → chunk-L3NEJ4N5-fDwT8vZ_.js} +1 -1
- package/dist/operator-ui/assets/{chunk-OSK3NFVY-C2FSyex1.js → chunk-OSK3NFVY-CYeI6Ngu.js} +1 -1
- package/dist/operator-ui/assets/{chunk-P2QGCYS3-BNCem-OE.js → chunk-P2QGCYS3-BR4LGVGe.js} +1 -1
- package/dist/operator-ui/assets/{chunk-POPQ4Y6H-DLkj1nb5.js → chunk-POPQ4Y6H-DGYaK5_M.js} +1 -1
- package/dist/operator-ui/assets/{chunk-PWAF6VOD-BPXpJW86.js → chunk-PWAF6VOD-CP0EqV5m.js} +1 -1
- package/dist/operator-ui/assets/{chunk-SHT3W25Y-C2LRo2LL.js → chunk-SHT3W25Y-CfBlFhVD.js} +1 -1
- package/dist/operator-ui/assets/{chunk-SVP7TREG-DzBTsX5k.js → chunk-SVP7TREG-BatRqPl3.js} +1 -1
- package/dist/operator-ui/assets/{chunk-TICWLB2K-Bcy59Hos.js → chunk-TICWLB2K-Bdzq3Pce.js} +1 -1
- package/dist/operator-ui/assets/classDiagram-ZZMXUADV-Bdi2GD7M.js +1 -0
- package/dist/operator-ui/assets/classDiagram-v2-VYDZK3BY-Bdi2GD7M.js +1 -0
- package/dist/operator-ui/assets/{cynefin-OW5HDTMX-ClBj8Ulr.js → cynefin-OW5HDTMX-DWFrsjEE.js} +1 -1
- package/dist/operator-ui/assets/{cynefinDiagram-5FMLGOSQ-Ds7Mibm4.js → cynefinDiagram-5FMLGOSQ-VHMt8H7p.js} +1 -1
- package/dist/operator-ui/assets/{dagre-GXQ25YYZ-BQdr4QZm.js → dagre-GXQ25YYZ-DcIZyQLZ.js} +1 -1
- package/dist/operator-ui/assets/{diagram-S7CK7UJ4-D2lmiWeD.js → diagram-S7CK7UJ4-CFmbsbnJ.js} +1 -1
- package/dist/operator-ui/assets/{diagram-UQ7AKVKN-O3oH4sVn.js → diagram-UQ7AKVKN-D7wxxWxp.js} +1 -1
- package/dist/operator-ui/assets/{diagram-VSXAHHWV-ChWUSpJM.js → diagram-VSXAHHWV-Kbacc4vb.js} +1 -1
- package/dist/operator-ui/assets/{diagram-VX7I27RA-Ch69HZTd.js → diagram-VX7I27RA-BFA0zXM3.js} +1 -1
- package/dist/operator-ui/assets/{diagram-Z3DM3KII-BrawDVH6.js → diagram-Z3DM3KII-C7XyRbul.js} +1 -1
- package/dist/operator-ui/assets/{ebnfDiagram-PWID7BFC-DmJK-kmd.js → ebnfDiagram-PWID7BFC-Cnqsrj6p.js} +1 -1
- package/dist/operator-ui/assets/{erDiagram-RLTQ6QDP-Q0HnvPDo.js → erDiagram-RLTQ6QDP-CRR1x5bo.js} +1 -1
- package/dist/operator-ui/assets/eventmodeling-NTZA5JFV-Brlm8U--.js +1 -0
- package/dist/operator-ui/assets/flowDiagram-HODETNUW-CETmahG6.js +1 -0
- package/dist/operator-ui/assets/{ganttDiagram-EL5Y4UJY-qvwdPHBY.js → ganttDiagram-EL5Y4UJY-DUf1_n-j.js} +1 -1
- package/dist/operator-ui/assets/{gitGraph-4MIJSDKK-Dx7BjZZV.js → gitGraph-4MIJSDKK-2kdiVAUn.js} +1 -1
- package/dist/operator-ui/assets/{gitGraphDiagram-WWUBYQGX-VMYWxpyb.js → gitGraphDiagram-WWUBYQGX-BmuNxcNU.js} +1 -1
- package/dist/operator-ui/assets/index-Df_LhKDl.css +2 -0
- package/dist/operator-ui/assets/index-GomJMfKU.js +27 -0
- package/dist/operator-ui/assets/{info-A6RAGUB7-CWmAbV2v.js → info-A6RAGUB7-nLuuS8_v.js} +1 -1
- package/dist/operator-ui/assets/{infoDiagram-27XIBGKW-CbdlBmQQ.js → infoDiagram-27XIBGKW-Bmj3Jlpp.js} +1 -1
- package/dist/operator-ui/assets/{ishikawaDiagram-5VMMS53U-DCFApDt3.js → ishikawaDiagram-5VMMS53U-FhYF1F0C.js} +1 -1
- package/dist/operator-ui/assets/{journeyDiagram-3NMN7TZE-JU9Lmrb8.js → journeyDiagram-3NMN7TZE-C3QJqY-3.js} +1 -1
- package/dist/operator-ui/assets/{kanban-definition-UXKFOSKX-BaFyfuHa.js → kanban-definition-UXKFOSKX-DZi1Wjno.js} +1 -1
- package/dist/operator-ui/assets/{line-B0IEL5-x.js → line-iqB75cyP.js} +1 -1
- package/dist/operator-ui/assets/{mermaid-parser.core-BY831mH1.js → mermaid-parser.core-DIArUF3d.js} +3 -3
- package/dist/operator-ui/assets/{mermaid.core-ButCc1lu.js → mermaid.core-BNDqdTtO.js} +4 -4
- package/dist/operator-ui/assets/{mindmap-definition-YA3MSWOX-BZ9lAvGW.js → mindmap-definition-YA3MSWOX-BOcVX1M-.js} +1 -1
- package/dist/operator-ui/assets/{packet-AYTQ26CC-B5-Y1eju.js → packet-AYTQ26CC-EiozlwqG.js} +1 -1
- package/dist/operator-ui/assets/{pegDiagram-XKGWAZYB-Ahet4paP.js → pegDiagram-XKGWAZYB-CWW7r51u.js} +1 -1
- package/dist/operator-ui/assets/{pie-WAS4IAKB-CMEA1YN5.js → pie-WAS4IAKB-C__OzaDl.js} +1 -1
- package/dist/operator-ui/assets/{pieDiagram-E7YTZNPT-BKoLuqEb.js → pieDiagram-E7YTZNPT-DbUDXHBG.js} +1 -1
- package/dist/operator-ui/assets/{quadrantDiagram-AXDQQJYC-Ba5lcmOU.js → quadrantDiagram-AXDQQJYC-CKI9LUcX.js} +1 -1
- package/dist/operator-ui/assets/{radar-RG4KPBEZ-DRKsFqgB.js → radar-RG4KPBEZ-CsRX-Fi6.js} +1 -1
- package/dist/operator-ui/assets/{railroad-74A4TZTK-UnJQj6WT.js → railroad-74A4TZTK-BQ58dawQ.js} +1 -1
- package/dist/operator-ui/assets/railroad-abnf-HS5TGJTU-DRTkqyLp.js +1 -0
- package/dist/operator-ui/assets/railroad-ebnf-LZEXJU2U-DZGX3DDS.js +1 -0
- package/dist/operator-ui/assets/railroad-peg-WCYAUIDC-CL-P4w1a.js +1 -0
- package/dist/operator-ui/assets/{railroadDiagram-O6MQD6OU-Ii3HCSET.js → railroadDiagram-O6MQD6OU-Abb-RJax.js} +1 -1
- package/dist/operator-ui/assets/{requirementDiagram-BXWQKSXE-GiUPpmpF.js → requirementDiagram-BXWQKSXE-DkznGHTE.js} +1 -1
- package/dist/operator-ui/assets/{sankeyDiagram-P5KCCOFB-CUfXBwpy.js → sankeyDiagram-P5KCCOFB-UKM5vqlg.js} +1 -1
- package/dist/operator-ui/assets/{sequenceDiagram-WJ2MYXX4-T3ZLlCgn.js → sequenceDiagram-WJ2MYXX4-BwIN13l-.js} +1 -1
- package/dist/operator-ui/assets/{stateDiagram-D77RDMKH-D2AphR6j.js → stateDiagram-D77RDMKH-BZTAWRZO.js} +1 -1
- package/dist/operator-ui/assets/stateDiagram-v2-MP3YSRHH-CkEudgGK.js +1 -0
- package/dist/operator-ui/assets/{swimlanes-42K2YHIH-DNQbbl88.js → swimlanes-42K2YHIH-jGl_hpZI.js} +1 -1
- package/dist/operator-ui/assets/swimlanesDiagram-VR7AAH4N-CPzqZPqV.js +8 -0
- package/dist/operator-ui/assets/{timeline-definition-24CTP7MA-Co0q_tCB.js → timeline-definition-24CTP7MA-B-4sBugD.js} +1 -1
- package/dist/operator-ui/assets/{treeView-Q6P3EWNA-B3AJbB6p.js → treeView-Q6P3EWNA-CgCjxhbn.js} +1 -1
- package/dist/operator-ui/assets/{treemap-WGGIJYW6-_H9SWbfT.js → treemap-WGGIJYW6-BwqVgmtt.js} +1 -1
- package/dist/operator-ui/assets/{vennDiagram-4TSXK5OY-CGfjaO6_.js → vennDiagram-4TSXK5OY-147aCcas.js} +1 -1
- package/dist/operator-ui/assets/{wardley-WFR3VGLG-NUDbyuOy.js → wardley-WFR3VGLG-DeN0guWh.js} +1 -1
- package/dist/operator-ui/assets/{wardleyDiagram-VM6X3IG4-COuGUrRm.js → wardleyDiagram-VM6X3IG4-D47xUeXU.js} +1 -1
- package/dist/operator-ui/assets/{xychartDiagram-S5SC5T6Z-DHG9QX-U.js → xychartDiagram-S5SC5T6Z-CDhILzlV.js} +1 -1
- package/dist/operator-ui/index.html +2 -2
- package/package.json +3 -3
- package/scripts/change-assessment.ts +16 -39
- package/scripts/check-agent-tooling.sh +47 -38
- package/scripts/check-ci.sh +7 -1
- package/scripts/check-state-boundaries.ts +2 -1
- package/scripts/check-tarball-install-smoke.sh +18 -26
- package/scripts/ci-documentation-consumers.ts +42 -13
- package/scripts/ci-path-consumers.ts +39 -0
- package/scripts/contract-worktree.sh +3 -3
- package/scripts/install-agent-fleet.sh +13 -19
- package/scripts/lib/path-values.ts +3 -1
- package/scripts/lib/project-init-lib.sh +9 -20
- package/scripts/report-ci.ts +3 -1
- package/scripts/run-harness-profile-benchmark.ts +3 -2
- package/scripts/run-skill-routing-eval.ts +36 -34
- package/scripts/select-ci-coverage.ts +56 -22
- package/scripts/ship-worktrees.sh +24 -9
- package/scripts/skill-surface-select.ts +33 -40
- package/scripts/sync-codex-installed-copies.sh +17 -16
- package/scripts/sync-helper-sources.ts +0 -9
- package/scripts/sync-reference-configs.ts +51 -18
- package/scripts/test-file-durations.json +3 -20
- package/src/cli/commands/architecture-debt.ts +1 -2
- package/src/cli/commands/architecture-projection.ts +3 -2
- package/src/cli/commands/board.ts +131 -0
- package/src/cli/commands/candidate-reconciliation.ts +24 -14
- package/src/cli/commands/capability-context.ts +1 -1
- package/src/cli/commands/doctor.ts +57 -54
- package/src/cli/commands/events.ts +1 -5
- package/src/cli/commands/fleet.ts +1 -143
- package/src/cli/commands/global-runtime.ts +116 -67
- package/src/cli/commands/herdr-skill-render.mjs +5 -7
- package/src/cli/commands/herdr-skill.ts +13 -7
- package/src/cli/commands/herdr.ts +103 -142
- package/src/cli/commands/init-hook.ts +37 -24
- package/src/cli/commands/init.ts +16 -20
- package/src/cli/commands/install.ts +1 -3
- package/src/cli/commands/publication.ts +15 -0
- package/src/cli/commands/retention.ts +2 -1
- package/src/cli/commands/review.ts +7 -5
- package/src/cli/commands/seats.ts +128 -0
- package/src/cli/commands/setup-snapshot.ts +1 -2
- package/src/cli/commands/state.ts +0 -25
- package/src/cli/commands/status.ts +34 -64
- package/src/cli/commands/tools.ts +16 -3
- package/src/cli/commands/upgrade.ts +9 -2
- package/src/cli/hook/agent-notice.ts +2 -2
- package/src/cli/hook/return-channel.ts +6 -34
- package/src/cli/hook/route-registry.ts +0 -7
- package/src/cli/hook/subagent-context.ts +0 -6
- package/src/cli/index.ts +252 -134
- package/src/cli/installer/install-profile.ts +771 -684
- package/src/cli/installer/install-state-migration.ts +295 -0
- package/src/cli/installer/managed-entries.ts +4 -9
- package/src/cli/installer/skill-projection.ts +8 -6
- package/src/cli/installer/targets/claude.ts +1 -1
- package/src/cli/installer/targets/codex.ts +1 -1
- package/src/cli/installer/types.ts +1 -3
- package/src/cli/installer/uninstall.ts +31 -18
- package/src/cli/installer/waza-rules.ts +20 -10
- package/src/cli/mcp/paths.ts +27 -11
- package/src/cli/mcp/policy.ts +1 -3
- package/src/cli/mcp/tools.ts +18 -12
- package/src/core/architecture/projection.ts +16 -0
- package/src/core/board/attention-delivery.ts +124 -0
- package/src/core/board/attention.ts +404 -0
- package/src/core/board/board.ts +338 -0
- package/src/core/board/dependency-migration.ts +258 -0
- package/src/core/board/hazards.ts +84 -0
- package/src/core/board/plan-block.ts +110 -0
- package/src/core/board/source.ts +335 -0
- package/src/core/decision/notify-relay-record.ts +52 -0
- package/src/core/decision/notify-secret-keys.ts +8 -0
- package/src/core/fleet/task-message-order.ts +11 -0
- package/src/core/operator/board-read.ts +16 -0
- package/src/core/operator/bot-access.ts +51 -106
- package/src/core/operator/execution-state.ts +38 -30
- package/src/core/operator/herdr-pin.ts +44 -10
- package/src/core/operator/notify-status.ts +28 -127
- package/src/core/operator/pane-prefix.ts +2 -0
- package/src/core/operator/repositories.ts +72 -0
- package/src/core/operator/runtime-status.ts +25 -25
- package/src/core/operator/seat-launch.ts +284 -0
- package/src/core/operator/seats-settings.ts +213 -0
- package/src/core/operator/slack-review.ts +278 -0
- package/src/core/operator/task-messages.ts +138 -0
- package/src/core/publication/feedback.ts +0 -4
- package/src/core/publication/merge-readiness.ts +2 -0
- package/src/core/review/check-records.ts +130 -0
- package/src/core/review/review-publish.ts +2 -2
- package/src/core/review/runner-port.ts +1 -2
- package/src/core/security/secret-patterns.ts +1 -0
- package/src/core/sessions/session-selector.ts +0 -33
- package/src/core/skill-surface/catalog.ts +62 -275
- package/src/core/skill-surface/plugin-manifest.ts +95 -0
- package/src/core/tools/catalog.ts +10 -14
- package/src/effects/admission/admission-source.ts +0 -11
- package/src/effects/admission/admission-store.ts +0 -15
- package/src/effects/adoption/standard-plan.ts +16 -20
- package/src/effects/architecture/archcontext-owners.ts +12 -49
- package/src/effects/architecture/archctx-provider.ts +12 -112
- package/src/effects/architecture/architecture-read.ts +186 -0
- package/src/effects/architecture/model-reader.ts +2 -2
- package/src/effects/architecture/projection-apply.ts +1 -2
- package/src/effects/board/attention-watch.ts +186 -0
- package/src/effects/board/collect.ts +233 -0
- package/src/effects/board/dependency-migration.ts +229 -0
- package/src/effects/dev-activity/collector.ts +3 -17
- package/src/effects/dsh-plugin-state.ts +57 -0
- package/src/effects/fleet/provider-feedback.ts +4 -78
- package/src/effects/fleet/task-inbox.ts +26 -106
- package/src/effects/github/issues.ts +14 -16
- package/src/effects/github/policy.ts +39 -11
- package/src/effects/host-skill-roots.ts +29 -5
- package/src/effects/operator/architecture-map-worker.ts +14 -40
- package/src/effects/operator/architecture.ts +2 -2
- package/src/effects/operator/board-read.ts +124 -0
- package/src/effects/operator/bot-access.ts +31 -45
- package/src/effects/operator/claude-agent-types.ts +123 -0
- package/src/effects/operator/cleanup-file-access.ts +2 -1
- package/src/effects/operator/doc-session-finalize-scope.ts +2 -1
- package/src/effects/operator/execution-collector.ts +13 -6
- package/src/effects/operator/execution-state-worker.ts +25 -6
- package/src/effects/operator/execution-state.ts +21 -28
- package/src/effects/operator/herdr-runtime-transport.ts +108 -70
- package/src/effects/operator/notify-collector.ts +3 -3
- package/src/effects/operator/notify-status.ts +27 -99
- package/src/effects/operator/repositories.ts +27 -0
- package/src/effects/operator/runtime-capture-pty.ts +8 -4
- package/src/effects/operator/runtime-capture.ts +7 -4
- package/src/effects/operator/runtime-service.ts +17 -14
- package/src/effects/operator/runtime-source.ts +19 -17
- package/src/effects/operator/runtime-status.ts +14 -11
- package/src/effects/operator/seats-configuration.ts +146 -0
- package/src/effects/operator/seats-settings-route.ts +66 -0
- package/src/effects/operator/server.ts +249 -393
- package/src/effects/operator/slack-review-collector.ts +254 -0
- package/src/effects/operator/task-diff.ts +1 -44
- package/src/effects/operator/task-messages.ts +31 -0
- package/src/effects/operator/task-read-process.ts +5 -18
- package/src/effects/publication/batch-build.ts +478 -0
- package/src/effects/publication/merge-executor.ts +3 -5
- package/src/effects/publication/merge-readiness.ts +6 -314
- package/src/effects/publication/test-execution-evidence.ts +1 -66
- package/src/effects/refactor/archctx-provider.ts +2 -2
- package/src/effects/refactor/recommendations.ts +1 -1
- package/src/effects/repo-registry.ts +37 -2
- package/src/effects/review/acceptance-receipt.ts +11 -9
- package/src/effects/review/change-assessment.ts +34 -4
- package/src/effects/review/generic-review.ts +6 -6
- package/src/effects/review-runner/task-oar-host.ts +20 -4
- package/src/effects/review-runner/task-pre-prompt-inbox-consumer.ts +1 -2
- package/src/effects/review-runner/task-pre-prompt-inbox.ts +1 -2
- package/src/effects/review-runner/task-review-runner.ts +12 -13
- package/src/effects/sessions/admitted-source.ts +1 -86
- package/src/effects/state/resolve-effective-state.ts +1 -1
- package/src/effects/strategy/skill.ts +1 -1
- package/src/effects/terminal/herdr-core.ts +566 -0
- package/src/effects/terminal/herdr-notify-install.ts +13 -63
- package/src/effects/terminal/herdr.ts +2 -1
- package/src/effects/terminal/native-task-session.ts +1 -12
- package/src/effects/terminal/notify-read.ts +138 -0
- package/src/effects/terminal/notify-relay.ts +206 -0
- package/src/effects/terminal/task-role-profiles.ts +1 -4
- package/src/effects/terminal/task-session-admission.ts +1 -1
- package/src/effects/terminal/task-session-record.ts +103 -29
- package/src/effects/terminal/task-session.ts +179 -409
- package/src/effects/terminal/task-worktree-runtime.ts +6 -4
- package/src/effects/upgrade/legacy-inventory.ts +8 -12
- package/src/operator-web/App.tsx +123 -202
- package/src/operator-web/ArchitectureMap.tsx +1 -1
- package/src/operator-web/BoardPage.tsx +319 -0
- package/src/operator-web/BotsPage.tsx +131 -80
- package/src/operator-web/Home.tsx +4 -6
- package/src/operator-web/NavRail.tsx +1 -1
- package/src/operator-web/NotifyStatus.tsx +1 -4
- package/src/operator-web/RepositoriesPage.tsx +95 -35
- package/src/operator-web/RuntimeBadges.tsx +3 -0
- package/src/operator-web/SeatsPage.tsx +269 -0
- package/src/operator-web/SettingsPage.tsx +38 -11
- package/src/operator-web/TaskDrawer.tsx +336 -0
- package/src/operator-web/ToolsPage.tsx +1 -1
- package/src/operator-web/WorktreesPage.tsx +2 -3
- package/src/operator-web/app.css +2 -66
- package/src/operator-web/board-view.ts +139 -0
- package/src/operator-web/bots.ts +46 -10
- package/src/operator-web/brand.tsx +1 -0
- package/src/operator-web/dev-activity.ts +2 -57
- package/src/operator-web/fixtures/architecture-map.json +5929 -8389
- package/src/operator-web/fixtures/board-1474.json +927 -0
- package/src/operator-web/fixtures/bots.ts +61 -35
- package/src/operator-web/fixtures/dev-activity.ts +43 -12
- package/src/operator-web/fixtures/index.ts +53 -27
- package/src/operator-web/fixtures/settings.ts +66 -1
- package/src/operator-web/fixtures/setup.ts +2 -9
- package/src/operator-web/i18n.ts +587 -617
- package/src/operator-web/labels.ts +0 -13
- package/src/operator-web/operator-api-error.ts +31 -0
- package/src/operator-web/repositories.ts +55 -0
- package/src/operator-web/repository-reads.ts +55 -1
- package/src/operator-web/seats.ts +89 -0
- package/src/operator-web/settings.ts +94 -57
- package/src/operator-web/ui.tsx +7 -2
- package/src/operator-web/workspace-location.ts +39 -12
- package/src/operator-web/worktrees.ts +2 -12
- package/agents/fleet/orchestrator.md +0 -36
- package/assets/herdr/webhook-notify/herdr-plugin.toml +0 -10
- package/assets/herdr/webhook-notify/notify.mjs +0 -373
- package/assets/herdr/webhook-notify/pane-status.mjs +0 -74
- package/assets/herdr/webhook-notify/worktree-location.mjs +0 -15
- package/dist/operator-ui/assets/architecture-7GRP2DOG-DJmhcRNc.js +0 -1
- package/dist/operator-ui/assets/channel-CH26DhuI.js +0 -1
- package/dist/operator-ui/assets/classDiagram-ZZMXUADV-CmP13vv6.js +0 -1
- package/dist/operator-ui/assets/classDiagram-v2-VYDZK3BY-CmP13vv6.js +0 -1
- package/dist/operator-ui/assets/eventmodeling-NTZA5JFV-BCV_9PCS.js +0 -1
- package/dist/operator-ui/assets/flowDiagram-HODETNUW-UuLvXIz-.js +0 -1
- package/dist/operator-ui/assets/index-BRqR1RMk.js +0 -25
- package/dist/operator-ui/assets/index-DDZqieYX.css +0 -2
- package/dist/operator-ui/assets/railroad-abnf-HS5TGJTU-BfLADly0.js +0 -1
- package/dist/operator-ui/assets/railroad-ebnf-LZEXJU2U-Dctjf-fQ.js +0 -1
- package/dist/operator-ui/assets/railroad-peg-WCYAUIDC-DC2Nq5l8.js +0 -1
- package/dist/operator-ui/assets/stateDiagram-v2-MP3YSRHH-DoOPJXWN.js +0 -1
- package/dist/operator-ui/assets/swimlanesDiagram-VR7AAH4N-FdvvbV9Z.js +0 -8
- package/src/cli/commands/external-source.ts +0 -143
- package/src/cli/hook/board-slice-context.ts +0 -44
- package/src/core/decision/pane-status.d.mts +0 -9
- package/src/core/decision/pane-status.mjs +0 -74
- package/src/core/external-sources/admitted-binding.ts +0 -76
- package/src/core/external-sources/binding.ts +0 -21
- package/src/core/external-sources/issue-observation.ts +0 -294
- package/src/core/external-sources/projection.ts +0 -75
- package/src/core/fleet/board.ts +0 -388
- package/src/core/operator/admitted-task-activity.ts +0 -88
- package/src/core/operator/admitted-task-context.ts +0 -35
- package/src/core/operator/fleet-snapshot.ts +0 -188
- package/src/core/operator/observation-identity.ts +0 -4
- package/src/core/operator/task-activity.ts +0 -41
- package/src/core/operator/task-diff.ts +0 -42
- package/src/core/sessions/task-sessions.ts +0 -41
- package/src/core/skill-surface/profile-components.ts +0 -39
- package/src/core/state/provider-board.ts +0 -55
- package/src/effects/external-sources/binding.ts +0 -101
- package/src/effects/external-sources/refresh.ts +0 -158
- package/src/effects/external-sources/store.ts +0 -406
- package/src/effects/fleet/board.ts +0 -619
- package/src/effects/operator/admitted-task-activity.ts +0 -39
- package/src/effects/operator/fleet-collector-process.ts +0 -125
- package/src/effects/operator/task-context.ts +0 -31
- package/src/effects/sessions/task-sessions.ts +0 -73
- package/src/effects/setup/pi-herdr-integration.ts +0 -58
- package/src/effects/state/collect-provider-board-inputs.ts +0 -43
- package/src/effects/state/collect-slice-inputs.ts +0 -21
- package/src/effects/terminal/herdr-decision.ts +0 -98
- package/src/effects/terminal/herdr-observation.ts +0 -127
- package/src/operator-web/AdmittedTaskActivity.tsx +0 -61
- package/src/operator-web/AdmittedTaskContext.tsx +0 -30
- package/src/operator-web/Board.tsx +0 -420
- package/src/operator-web/ItemDrawer.tsx +0 -208
- package/src/operator-web/RepositoryWorkspace.tsx +0 -749
- package/src/operator-web/TaskDiff.tsx +0 -103
- package/src/operator-web/fixture.ts +0 -323
- package/src/operator-web/fleet-api.ts +0 -88
- package/src/operator-web/task-context.ts +0 -9
- package/src/operator-web/task-location.ts +0 -34
- package/src/operator-web/types.ts +0 -683
- package/src/operator-web/worklist.ts +0 -132
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ files let Claude and Codex resume work across sessions.
|
|
|
43
43
|
|
|
44
44
|
### 1. Install the CLI
|
|
45
45
|
|
|
46
|
-
Prerequisites: a Git working tree, `bun`, and
|
|
46
|
+
Prerequisites: a Git working tree, `bun`, and `hc` (herdr-core) >= `external_tooling.herdr_core.min_version` for host readiness; macOS/Linux also require `bash`,
|
|
47
47
|
while Windows requires Git for Windows (including its Bash and `usr/bin`
|
|
48
48
|
tools). `jq` is optional. No Node.js required — the installer uses Bun >=
|
|
49
49
|
1.4.0 as the runtime, installing or upgrading Bun first when needed.
|
|
@@ -67,9 +67,10 @@ repo-harness install
|
|
|
67
67
|
npx -y repo-harness@latest install # npx fallback; the CLI still runs on Bun
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
Install
|
|
70
|
+
Install `hc` through Herdr.app or a herdr-core release. Verify that `hc --version`
|
|
71
|
+
reports at least `.ai/harness/policy.json#external_tooling.herdr_core.min_version`.
|
|
71
72
|
Persistent review hosting requires POSIX process groups; on Windows use WSL.
|
|
72
|
-
Missing or
|
|
73
|
+
Missing, unusable or older hc blocks host readiness. Before upgrading from tmux,
|
|
73
74
|
drain existing reviewers using the previous version and explicitly rebind terminal
|
|
74
75
|
endpoints. See [runtime cutover](https://github.com/Ancienttwo/repo-harness/blob/archive/docs-researches-20261004/docs/researches/20260909-herdr-runtime-cutover.md).
|
|
75
76
|
|
|
@@ -118,11 +119,14 @@ helpers do not rediscover tools from a caller's `PATH`; rerun
|
|
|
118
119
|
`repo-harness update` after relocating or replacing Git for Windows.
|
|
119
120
|
|
|
120
121
|
The global bootstrap: installs the npm package as the global CLI, refreshes
|
|
121
|
-
repo-harness skill aliases, installs user-level hook adapters, and records
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
122
|
+
repo-harness skill aliases, installs user-level hook adapters, and records the
|
|
123
|
+
plugin selection. With no flag it installs core and every plugin that the host
|
|
124
|
+
can run; `--plugins <ids>` selects exactly those plugins, and `--no-plugins`
|
|
125
|
+
installs core only. It is idempotent and does not apply repo-local workflow
|
|
126
|
+
files to the current directory. `--dry-run --json` lists the plugins to install,
|
|
127
|
+
keep, remove and skip first. Plugins, the protocol 2 to 3 migration, native
|
|
128
|
+
Codex delegation authority, refresh commands, and the read-only `setup check`
|
|
129
|
+
audit:
|
|
126
130
|
[`install-profiles.md`](docs/reference-configs/install-profiles.md).
|
|
127
131
|
|
|
128
132
|
### 3. Preview the repo-local contract
|
|
@@ -244,7 +248,7 @@ task queue.
|
|
|
244
248
|
| --- | --- | --- |
|
|
245
249
|
| Issue and PR | Scope, ownership, dependencies, status and review evidence | The assigned GitHub issue |
|
|
246
250
|
| Session support | Repository context, hooks and handoffs | `repo-harness init` |
|
|
247
|
-
|
|
|
251
|
+
| Board | Read the sub-issues, pull requests, plan block and seat terminals of one parent issue | `repo-harness board --parent <n> --json` |
|
|
248
252
|
|
|
249
253
|
New work uses a bounded issue brief and the current repository rules. Historical
|
|
250
254
|
Sprint, binding and Lease records remain readable for operator and closeout
|
|
@@ -322,15 +326,15 @@ Keep the issue, branch, verification result and next action in the handoff.
|
|
|
322
326
|
Re-read the issue and PR before continuing. Use the approved OAR and Herdr host
|
|
323
327
|
paths for an assigned agent. repo-harness has no PM or Engineer scheduling API.
|
|
324
328
|
|
|
325
|
-
###
|
|
329
|
+
### Board of a parent issue
|
|
326
330
|
|
|
327
331
|
```bash
|
|
328
|
-
repo-harness
|
|
332
|
+
repo-harness board --parent <n> --json
|
|
329
333
|
```
|
|
330
334
|
|
|
331
|
-
The board reads
|
|
332
|
-
It does not claim work or create an Engineer binding.
|
|
333
|
-
helpers remain for existing records.
|
|
335
|
+
The board reads the sub-issues, pull requests, plan block and hc seat terminals
|
|
336
|
+
of one parent issue. It does not claim work or create an Engineer binding.
|
|
337
|
+
Completion and cleanup helpers remain for existing records.
|
|
334
338
|
|
|
335
339
|
Use [repo-harness](SKILL.md) for scope and worker ownership,
|
|
336
340
|
[repo-harness-product](assets/skills/repo-harness-product/SKILL.md) for requested
|
|
@@ -350,20 +354,6 @@ violations. repo-harness shows each suggestion with its metrics, bounded evidenc
|
|
|
350
354
|
and module statistics, and records the user decision. It never executes a refactor; an
|
|
351
355
|
accepted suggestion goes through the normal plan and pull request workflow.
|
|
352
356
|
|
|
353
|
-
### External source intake
|
|
354
|
-
|
|
355
|
-
```bash
|
|
356
|
-
repo-harness external-source refresh # one bounded, explicitly enabled GitHub observation
|
|
357
|
-
repo-harness external-source bind --repo <id> --source-revision <digest> --session <selector.json>
|
|
358
|
-
repo-harness external-source bindings # binding edges and current drift attention
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
Intake is inert by design. An observed Issue mints no execution authority and
|
|
362
|
-
does not become a runnable task on its own; binding attaches an immutable source
|
|
363
|
-
revision to an existing admitted session selected by its provider issue, immutable
|
|
364
|
-
claim, approved grant and session binding digest. The selector comes from task
|
|
365
|
-
session discovery. Binding never creates a claim or approval.
|
|
366
|
-
|
|
367
357
|
### Persistent acceptance review
|
|
368
358
|
|
|
369
359
|
Before review, configure the repository's manual `external_sources` policy and
|
|
@@ -593,7 +583,7 @@ dependencies.
|
|
|
593
583
|
| [Hylarucoder](https://x.com/hylarucoder) / Geju | P1/P2/P3 due-diligence method and Geju practice that shaped the planning, tracing, and decision-rationale discipline in this workflow | Methodology contribution and acknowledgement; not a bundled dependency |
|
|
594
584
|
| Waza by [TW93](https://x.com/HiTw93), including `think`, `hunt`, `check`, and `health` | Daily planning, bug hunts, verification, health checks, and Codex-first skill sync | Installed through the skills CLI into host skill roots |
|
|
595
585
|
| `mermaid` | Authoring and readability review for Mermaid architecture and system-flow source | Runtime-referenced review skill, not vendored into generated repos and never an HTML artifact generator |
|
|
596
|
-
| [herdr](https://herdr.dev/) | Required peer-terminal runtime: notification dispatch, peer collaboration, and hosting the persistent acceptance reviewer | Externally installed binary,
|
|
586
|
+
| [herdr](https://herdr.dev/) (`hc`, herdr-core) | Required peer-terminal runtime: notification dispatch, peer collaboration, and hosting the persistent acceptance reviewer | Externally installed `hc` binary, pinned in `.ai/harness/policy.json#external_tooling.herdr_core` (`min_version` floor and checksum-verified CI release asset); replaces the retired tmux runtime |
|
|
597
587
|
| [`reverse-skill-router`](https://github.com/zhaoxuya520/reverse-skill) | Routes reverse-engineering and security tasks to specialist playbooks | Recommended explicit-only Skill (`--with-reverse-skill`); not profile-selected because upstream's target-mention authorization assumption requires independent scope review |
|
|
598
588
|
| CodeGraph (`@colbymchenry/codegraph`) | Symbol-aware navigation, impact tracing, and readiness checks for this self-host repo | Dev dependency in this repo; generated repos stay global-MCP-first unless policy opts in |
|
|
599
589
|
| OpenAI Codex | Primary execution agent for repo-local implementation, verification, and GitHub contributor attribution when a commit materially includes Codex-authored work | External agent runtime; attribution is an explicit commit trailer, not hidden hook automation |
|
|
@@ -612,8 +602,8 @@ repo-harness commit scripts or hooks unless that repo adopts the same policy.
|
|
|
612
602
|
|
|
613
603
|
## Current Release
|
|
614
604
|
|
|
615
|
-
- npm package: `repo-harness@0.25.
|
|
616
|
-
- Generated workflow stamp: `repo-harness@0.25.
|
|
605
|
+
- npm package: `repo-harness@0.25.4`
|
|
606
|
+
- Generated workflow stamp: `repo-harness@0.25.4+template@0.25.4`
|
|
617
607
|
- GitHub repository: `Ancienttwo/repo-harness`
|
|
618
608
|
- Release notes and history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
619
609
|
|
|
@@ -9,7 +9,7 @@ effort: high
|
|
|
9
9
|
Review only a medium or high tier diff under Review by risk in the development flow; a low tier gets no review.
|
|
10
10
|
When `agents/fleet/known-gaps.md` is present, read the row for the PR's producer and run its named checks in addition to the tier's review. The table rules govern how the row combines with the review.
|
|
11
11
|
Read the current diff only. A defect in untouched code is a non-blocking note, not a finding.
|
|
12
|
-
|
|
12
|
+
Take the scope of each round from the round rules in `repo-harness-issue-flow`, `references/acceptor.md` §2.2.
|
|
13
13
|
Keep review read-only. The Bot owns fixes and publication.
|
|
14
14
|
Return `VERDICT: PASS`, `VERDICT: FAIL`, or `VERDICT: BLOCKED` first.
|
|
15
15
|
Record branch, HEAD, dirty scope and the assigned goal. Preserve unrelated work.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const BOT_EVENT_PROTOCOL: 'repo-harness.bot-event/v1';
|
|
2
|
+
export declare const NAME_PATTERN: RegExp;
|
|
3
|
+
export interface BotEvent {
|
|
4
|
+
readonly protocol: 'repo-harness.bot-event/v1';
|
|
5
|
+
readonly source: 'herdr' | 'github';
|
|
6
|
+
readonly repository: string | null;
|
|
7
|
+
readonly kind: string;
|
|
8
|
+
readonly ts: string;
|
|
9
|
+
readonly data: Readonly<Record<string, unknown>>;
|
|
10
|
+
}
|
|
11
|
+
export declare function assertBotEvent(value: unknown): BotEvent;
|
|
12
|
+
export declare function botEvent(input: Omit<BotEvent, 'protocol'>): BotEvent;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// The one bot event envelope.
|
|
1
|
+
// The one bot event envelope. The notify relay and the GitHub event Worker both send it, so it
|
|
2
2
|
// stays plain ESM with no dependency and no Node-only API.
|
|
3
3
|
export const BOT_EVENT_PROTOCOL = 'repo-harness.bot-event/v1';
|
|
4
4
|
export const NAME_PATTERN = /^[\w.-]{1,128}$/;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
// GitHub App webhook receiver. It filters GitHub events in code and sends a short bot event
|
|
2
2
|
// to the Bot routine webhook. It never calls a GitHub API and makes no decision.
|
|
3
|
-
// `repo-harness events install` stages this directory and
|
|
4
|
-
|
|
5
|
-
import { botEvent } from '../webhook-notify/bot-event.mjs';
|
|
3
|
+
// `repo-harness events install` stages this directory, and wrangler bundles it.
|
|
4
|
+
import { botEvent } from './bot-event.mjs';
|
|
6
5
|
import { classify } from './filter.mjs';
|
|
7
6
|
|
|
8
7
|
const DEBOUNCE_SECONDS = 60;
|
|
@@ -6,7 +6,7 @@ using System.Diagnostics;
|
|
|
6
6
|
using System.Runtime.InteropServices;
|
|
7
7
|
using System.Text;
|
|
8
8
|
|
|
9
|
-
public static class
|
|
9
|
+
public static class RepoHarnessOperatorJob {
|
|
10
10
|
[StructLayout(LayoutKind.Sequential)]
|
|
11
11
|
public struct BasicLimitInformation {
|
|
12
12
|
public long PerProcessUserTimeLimit;
|
|
@@ -137,9 +137,9 @@ public static class RepoHarnessFleetJob {
|
|
|
137
137
|
}
|
|
138
138
|
'@
|
|
139
139
|
|
|
140
|
-
$job = [
|
|
140
|
+
$job = [RepoHarnessOperatorJob]::CreateJobObject([IntPtr]::Zero, $null)
|
|
141
141
|
if ($job -eq [IntPtr]::Zero) { throw 'CreateJobObject failed' }
|
|
142
|
-
[
|
|
142
|
+
[RepoHarnessOperatorJob]::ConfigureKillOnClose($job)
|
|
143
143
|
|
|
144
144
|
function Write-Response([string]$type) {
|
|
145
145
|
[Console]::Out.WriteLine((@{ type = $type } | ConvertTo-Json -Compress))
|
|
@@ -149,26 +149,26 @@ function Write-Response([string]$type) {
|
|
|
149
149
|
function Wait-ForZeroActiveProcesses([IntPtr]$handle) {
|
|
150
150
|
$deadline = [DateTime]::UtcNow.AddSeconds(5)
|
|
151
151
|
while ([DateTime]::UtcNow -lt $deadline) {
|
|
152
|
-
if ([
|
|
152
|
+
if ([RepoHarnessOperatorJob]::ActiveProcesses($handle) -eq 0) { return $true }
|
|
153
153
|
Start-Sleep -Milliseconds 10
|
|
154
154
|
}
|
|
155
|
-
return ([
|
|
155
|
+
return ([RepoHarnessOperatorJob]::ActiveProcesses($handle) -eq 0)
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
function Close-CleanJob([IntPtr]$handle, [bool]$terminate) {
|
|
159
|
-
if ($terminate -and -not [
|
|
159
|
+
if ($terminate -and -not [RepoHarnessOperatorJob]::TerminateJobObject($handle, 1)) {
|
|
160
160
|
throw 'TerminateJobObject failed'
|
|
161
161
|
}
|
|
162
162
|
if (-not (Wait-ForZeroActiveProcesses $handle)) { return $false }
|
|
163
|
-
if (-not [
|
|
163
|
+
if (-not [RepoHarnessOperatorJob]::CloseHandle($handle)) { throw 'CloseHandle failed' }
|
|
164
164
|
return $true
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
function Close-FailedJob([IntPtr]$handle) {
|
|
168
168
|
if ($handle -eq [IntPtr]::Zero) { return }
|
|
169
|
-
try { [void][
|
|
169
|
+
try { [void][RepoHarnessOperatorJob]::TerminateJobObject($handle, 1) } catch { }
|
|
170
170
|
try { [void](Wait-ForZeroActiveProcesses $handle) } catch { }
|
|
171
|
-
try { [void][
|
|
171
|
+
try { [void][RepoHarnessOperatorJob]::CloseHandle($handle) } catch { }
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
function Stop-ExactCollector([System.Diagnostics.Process]$process) {
|
|
@@ -207,7 +207,7 @@ try {
|
|
|
207
207
|
}
|
|
208
208
|
$startInfo = New-Object System.Diagnostics.ProcessStartInfo
|
|
209
209
|
$startInfo.FileName = [string]$request.executable
|
|
210
|
-
$startInfo.Arguments = [
|
|
210
|
+
$startInfo.Arguments = [RepoHarnessOperatorJob]::QuoteArgument([string]$request.collector_path)
|
|
211
211
|
$startInfo.UseShellExecute = $false
|
|
212
212
|
$startInfo.RedirectStandardInput = $true
|
|
213
213
|
$startInfo.RedirectStandardOutput = $true
|
|
@@ -228,12 +228,12 @@ try {
|
|
|
228
228
|
}
|
|
229
229
|
# This is the exact kernel handle returned for the child this controller
|
|
230
230
|
# created. No PID is ever accepted or reopened across this boundary.
|
|
231
|
-
if (-not [
|
|
231
|
+
if (-not [RepoHarnessOperatorJob]::AssignProcessToJobObject($job, $collector.Handle)) {
|
|
232
232
|
if (-not (Stop-ExactCollector $collector)) { throw 'collector assignment failed and exact collector did not exit' }
|
|
233
233
|
Write-Response 'cleanup_failed'
|
|
234
234
|
break
|
|
235
235
|
}
|
|
236
|
-
[
|
|
236
|
+
[RepoHarnessOperatorJob]::BeginForwarding($collector)
|
|
237
237
|
$assigned = $true
|
|
238
238
|
Write-Response 'assigned'
|
|
239
239
|
continue
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
## CI cost
|
|
17
17
|
Size PR CI by the diff, the same as step 4. A full suite on each small PR spends runner time and adds no evidence that the affected tests and the daily run do not already give. The repo-harness source repository uses this shape in `.github/workflows/ci.yml`.
|
|
18
18
|
|
|
19
|
-
- Triggers: run PR checks on `pull_request`. Do not also trigger `push` on feature branches; that runs each commit twice. A `push` to the default branch runs the
|
|
19
|
+
- Triggers: run PR checks on `pull_request`. Do not also trigger `push` on feature branches; that runs each commit twice. A `push` to the default branch runs only the selection job in report mode, with no tests.
|
|
20
20
|
- Superseded runs: set `concurrency` to one group per PR number with `cancel-in-progress: true` for `pull_request` events only. Do not cancel scheduled runs.
|
|
21
21
|
- Selection: a first job reads the diff against the PR base and outputs a mode. Later jobs read the mode in a job-level `if:`.
|
|
22
|
-
- A docs-only diff
|
|
22
|
+
- A docs-only diff runs only the tests that name a changed document, including a deleted one. With no such test, it skips build and test jobs, and the required aggregate check still reports. One function names the documentation paths; in the repo-harness source repository it is `isDocumentationPath` in `scripts/select-ci-coverage.ts`. Keep link, format and advisory document checks. A document that is program input, such as a projected copy, a parsed contract or a generated region, is outside the documentation rule or has a test that names it, so a change to it runs its consumer tests.
|
|
23
23
|
- A code diff runs typecheck plus the tests that the diff affects. Use the runner's change detection (`vitest --changed`, `jest --changedSince`, `nx affected`, `turbo run --filter=...[<base>]`, `pytest --testmon`) or an import-graph selector.
|
|
24
24
|
- A change to a shared input (lockfile, root build or test config, CI workflow, a test helper with no mapped consumer) runs the full suite on that PR. A selector that cannot map a changed file widens the run; it never shrinks it.
|
|
25
25
|
- Required checks: skip a job with a job-level `if:`, not with workflow-level `paths` or `paths-ignore`. GitHub counts a skipped job as passing for a required check. A workflow that never starts leaves its required check pending and blocks the merge.
|
|
@@ -104,14 +104,18 @@ breakdown, dispatch, follow-up and evidence-based reports. Coding agents own
|
|
|
104
104
|
source edits, tests and repairs. Follow the shared PM boundary in the
|
|
105
105
|
`repo-harness` Skill for the permitted tool surface and reporting duties.
|
|
106
106
|
Keep direct development sessions and explicitly assigned coding workers outside
|
|
107
|
-
that PM restriction. OAR owns coding-agent execution.
|
|
108
|
-
visibility. A new Bot host adapts to that path; it does not add a new coding
|
|
107
|
+
that PM restriction. OAR owns coding-agent execution. herdr-core (`hc`) owns
|
|
108
|
+
terminals, and Herdr.app owns panes and visibility. A new Bot host adapts to that path; it does not add a new coding
|
|
109
109
|
runtime or task authority.
|
|
110
110
|
|
|
111
|
-
The
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
edits no product code
|
|
111
|
+
The orchestrator seat is the long-lived coordinator and integrator seat of
|
|
112
|
+
`repo-harness-issue-flow`. Start it with the argv that
|
|
113
|
+
`repo-harness seats argv orchestrator` prints. It dispatches work and follows
|
|
114
|
+
PRs and CI. It edits no product code. It may call the read-only roles
|
|
115
|
+
`gatekeeper`, `explorer` and `deep-reasoner` as sub-agents. The writers
|
|
116
|
+
(`fast-worker`, `deep-worker`, `root-cause-prover`) and the Codex
|
|
117
|
+
cross-review never run as its sub-agents: they run in Herdr seats, for
|
|
118
|
+
worktree isolation and one writer per file.
|
|
115
119
|
|
|
116
120
|
The bot selects scope, worker and verification by risk. Use independent gatekeeper/cross-model review for large changes, security/permissions or model uncertainty; do not rerun a passing check or require multiple re-gates.
|
|
117
121
|
|
|
@@ -119,13 +123,19 @@ The bot selects scope, worker and verification by risk. Use independent gatekeep
|
|
|
119
123
|
|
|
120
124
|
A hazard is a change that runs or exposes code, secrets, data or network access on a machine or in CI. One hit on any item sets an internal PR to High under [Review by risk](#review-by-risk). An external PR stops and escalates under its protocol; that behavior does not change.
|
|
121
125
|
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
<!-- review-hazards:list:begin -->
|
|
127
|
+
The board rule R3 reads only the rows with `path_visible: true`: a changed path that matches one of their patterns is a hit. Reviewers apply every row.
|
|
128
|
+
|
|
129
|
+
| Hazard | Paths that R3 reads |
|
|
130
|
+
| --- | --- |
|
|
131
|
+
| Changes a workflow or other CI configuration under `.github/`. | `.github/**` |
|
|
132
|
+
| Changes a release, publish, update or install script, or a package script that runs at install or release. | None (`path_visible: false`) |
|
|
133
|
+
| Changes a `Dockerfile` or another container build file. | `**/Dockerfile`, `**/Dockerfile.*`, `**/*.Dockerfile`, `**/Containerfile`, `**/Containerfile.*` |
|
|
134
|
+
| Adds a network address, endpoint or telemetry. | None (`path_visible: false`) |
|
|
135
|
+
| Reads credentials, such as tokens, keys, `~/.ssh`, `~/.npmrc` or credential environment variables. | None (`path_visible: false`) |
|
|
136
|
+
| Adds or changes a dependency or a lockfile entry. A lockfile-only bump is still a hit; its source does not lower the tier. | `**/bun.lock`, `**/bun.lockb`, `**/package-lock.json`, `**/npm-shrinkwrap.json`, `**/yarn.lock`, `**/pnpm-lock.yaml`, `**/Cargo.lock`, `**/go.sum`, `**/poetry.lock`, `**/uv.lock`, `**/Pipfile.lock`, `**/Gemfile.lock`, `**/composer.lock` |
|
|
137
|
+
| Adds a binary, or an encoded or opaque blob, such as base64, long hex, minified or otherwise unreadable content. | None (`path_visible: false`) |
|
|
138
|
+
<!-- review-hazards:list:end -->
|
|
129
139
|
|
|
130
140
|
### Review by risk
|
|
131
141
|
The diff sets the tier. The author does not: a human change and a model change with the same diff get the same tier. One hit on a higher signal sets the higher tier.
|
|
@@ -136,7 +146,7 @@ The diff sets the tier. The author does not: a human change and a model change w
|
|
|
136
146
|
| Medium | Cross-module behavior changes; public API changes; more than 10 non-generated implementation files; shared runtime changes; authentication-adjacent changes; or unresolved behavior uncertainty. |
|
|
137
147
|
| High | Any hit on the [change hazard list](#change-hazards); permissions or sandbox grants; hooks and the mutation guard; deletion paths; `deploy/sql/`; code that writes to GitHub; or a change across more than one capability boundary in `.archcontext/model/`. |
|
|
138
148
|
|
|
139
|
-
Review follows the `repo-harness-issue-flow` skill, [references/acceptor.md](../../assets/skills/repo-harness-issue-flow/references/acceptor.md). The tier selects the depth: no independent review for Low, one fresh-context review for Medium, and the gatekeeper plus one cross-model
|
|
149
|
+
Review follows the `repo-harness-issue-flow` skill, [references/acceptor.md](../../assets/skills/repo-harness-issue-flow/references/acceptor.md). The tier selects the depth: no independent review for Low, one fresh-context review for Medium, and the gatekeeper plus one review, preferably cross-model, for High. The round rules (who reviews each round, the claims of a round, the round-2 scope and the convergence rule) are only in [references/acceptor.md §2.2](../../assets/skills/repo-harness-issue-flow/references/acceptor.md#22-rounds). The Acceptor SOP owns the round, findings and publish steps.
|
|
140
150
|
|
|
141
151
|
Low accept-seat skip: a Low PR whose `Required / CI` is SUCCESS on the PR head and whose PR body holds the author verification evidence (the commands and their outcomes) takes no accept seat and no acceptance record. Do not dispatch a Codex, Herdr or OAR accept seat for it. `Required / CI` and that evidence are the proof surface. A Low PR that lacks either condition is not eligible to merge until both hold. Medium and High keep the full Acceptor SOP.
|
|
142
152
|
|
|
@@ -144,19 +154,19 @@ Worked example (docs-only Low path): the PR edits `docs/bot-onboarding.md` only.
|
|
|
144
154
|
|
|
145
155
|
Rules for every tier:
|
|
146
156
|
- The reviewer reads the current diff only. A defect in code the diff did not touch is a non-blocking note; open an issue for it, do not add a finding.
|
|
147
|
-
-
|
|
157
|
+
- Review rounds follow [references/acceptor.md §2.2](../../assets/skills/repo-harness-issue-flow/references/acceptor.md#22-rounds). The reviewer reads CI on the exact head and the recorded evidence, and does not rerun a passing check ([references/acceptor.md §2.1](../../assets/skills/repo-harness-issue-flow/references/acceptor.md#21-evidence)).
|
|
148
158
|
- When an independent review ran, the PR description lists each finding with its disposition: fixed, or closed with the reason.
|
|
149
159
|
- A low tier adds no review. A new test file or a rebase does not raise the tier.
|
|
150
160
|
- Changing implementation and test assertions together does not raise the tier. Within the tier's existing review, check whether assertions preserve the intended behavior and whether removed or weakened coverage has a valid requirement-based reason. At Low, the author performs this check in self-review. Record the reason for each assertion change in the PR; never change assertions only to make a test pass. Do not dispatch a separate test-review gate.
|
|
151
161
|
- A parent, coordinator or merge session reuses recorded acceptance when the reviewed diff, relevant base context, verification inputs and environment still match, and the review meets the current tier. The PR records the reviewed revision or diff, commands, results and finding dispositions. A change of session or reviewer is not a reason to repeat acceptance.
|
|
152
162
|
- A batch integration PR (`repo-harness-issue-flow`, [references/orchestrator.md](../../assets/skills/repo-harness-issue-flow/references/orchestrator.md) §9.3) reuses the acceptance record of each member when every member merged without conflict and the batch adds no commit of its own. It needs no new review round. A Low member has no acceptance record to reuse. Required checks on the batch head still apply.
|
|
153
|
-
- After a change, verify the affected behavior
|
|
163
|
+
- After a change, verify the affected behavior. The review scope of each round after a change is in [references/acceptor.md §2.2](../../assets/skills/repo-harness-issue-flow/references/acceptor.md#22-rounds). Retain valid evidence for unchanged scope; add only missing tier coverage. A rebase alone does not require a new full review, but changed base behavior or conflict resolution can invalidate affected evidence. Reuse never substitutes for required checks on the current head or the current-main merge requirement.
|
|
154
164
|
- A downstream repository maps its own release surfaces, for example public API, wire format, DDL/SQL and permissions, to the High tier.
|
|
155
165
|
|
|
156
166
|
The bot measures progress by side effects only: commits, pushes, evidence events and PR or check changes. It does not resume a worker to check liveness. A worker past its timebox with no new side effect is stalled; stop it or ask the user.
|
|
157
167
|
Retry by failure mode. Reduce scope after a limit or out-of-memory stop. Move a tool error to another model. A network drop or an unknown failure gets one retry only for a read-only or idempotent call. For a call that can change remote state, check the original request and the provider receipt first; do not retry an unknown effect. After two failures of one task, stop and ask the user.
|
|
158
168
|
Clear conflicts first. Once conflicts are clear, triage review threads and watch CI in parallel. Classify a CI failure before a retry. A suspected flake gets one fresh build; an identical second failure is not a flake. Classify each review comment as fix, dismiss or ask by the review-comment triage reference of the installed `repo-harness-check` skill.
|
|
159
|
-
Stop and ask the user when a command or result names `unknown`, `ambiguous`, `pending`, `unproven`, `identity_lost`, `reconciliation_required` or `recovery_required`, or says `inspect the same`, `inspect same`, `never replay`, `do not resend` or `do not launch again`; when a lease directory is empty or malformed;
|
|
169
|
+
Stop and ask the user when a command or result names `unknown`, `ambiguous`, `pending`, `unproven`, `identity_lost`, `reconciliation_required` or `recovery_required`, or says `inspect the same`, `inspect same`, `never replay`, `do not resend` or `do not launch again`; when a lease directory is empty or malformed; when a review thread concerns security, authentication, data or migrations; or when a written rule conflicts with observed state.
|
|
160
170
|
|
|
161
171
|
Pending main push CI follows Daily Flow step 5, not the stop-and-ask rule above.
|
|
162
172
|
|
|
@@ -1,72 +1,5 @@
|
|
|
1
1
|
# External Tooling
|
|
2
2
|
|
|
3
|
-
## External Source Intake P0
|
|
4
|
-
|
|
5
|
-
`.ai/harness/policy.json#external_sources` is absent by default and is equivalent to the only default, `{ "version": 1, "mode": "off" }`. Refresh never auto-enables from a repository URL, installed `gh`, labels, or registry access mode.
|
|
6
|
-
|
|
7
|
-
To enable one manual GitHub evidence refresh, use one exact closed selection shape. Every limit is positive. A label scan requires sorted non-empty `labels_all` and accepts a sorted optional `assignees_any` restriction. Unknown fields and provider values fail closed.
|
|
8
|
-
|
|
9
|
-
```json
|
|
10
|
-
{
|
|
11
|
-
"external_sources": {
|
|
12
|
-
"version": 1,
|
|
13
|
-
"mode": "manual",
|
|
14
|
-
"github": {
|
|
15
|
-
"enabled": true,
|
|
16
|
-
"repository": "owner/repository",
|
|
17
|
-
"selection": {
|
|
18
|
-
"kind": "labels",
|
|
19
|
-
"labels_all": ["ready"],
|
|
20
|
-
"assignees_any": []
|
|
21
|
-
},
|
|
22
|
-
"limits": {
|
|
23
|
-
"max_pages": 5,
|
|
24
|
-
"max_issues": 500,
|
|
25
|
-
"max_body_bytes": 65536,
|
|
26
|
-
"max_total_bytes": 1048576,
|
|
27
|
-
"deadline_ms": 30000
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
For an explicitly reviewed one-shot batch, select exact Issue numbers instead of requiring provider labels or scanning the whole repository:
|
|
35
|
-
|
|
36
|
-
```json
|
|
37
|
-
{
|
|
38
|
-
"external_sources": {
|
|
39
|
-
"version": 1,
|
|
40
|
-
"mode": "manual",
|
|
41
|
-
"github": {
|
|
42
|
-
"enabled": true,
|
|
43
|
-
"repository": "Ancienttwo/byok-sdk",
|
|
44
|
-
"selection": {
|
|
45
|
-
"kind": "issue_numbers",
|
|
46
|
-
"issue_numbers": [102, 103, 104, 105, 106, 107, 108, 109, 110, 111]
|
|
47
|
-
},
|
|
48
|
-
"limits": {
|
|
49
|
-
"max_pages": 1,
|
|
50
|
-
"max_issues": 10,
|
|
51
|
-
"max_body_bytes": 65536,
|
|
52
|
-
"max_total_bytes": 1048576,
|
|
53
|
-
"deadline_ms": 30000
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Exact-batch refresh resolves only those Issue endpoints and fails the whole attempt if any selected Issue is missing, malformed, a pull request, or exceeds a limit. GitHub assignees, labels, and open/closed state are evidence only: they do not prove whether local work has already been dispatched. Dispatch deduplication belongs to an authenticated binding against canonical repo-harness task identity. The triage, reproduce and fix stage contract for observed issues is in [issue pipeline](issue-pipeline.md).
|
|
61
|
-
|
|
62
|
-
`repo-harness external-source refresh --repo <registered-repo-id>` invokes the locally authenticated `gh` client once and records immutable observations plus an attempt receipt under the repository Git common directory. `list` performs no provider call. These records are inert evidence: they do not create or change review admission, priority, provider claims, collaboration, or Agent Runtime state.
|
|
63
|
-
|
|
64
|
-
## External Source Binding WP2
|
|
65
|
-
|
|
66
|
-
Binding needs an existing admitted session for the same provider issue. Save one session `selector` object from `repo-harness state board --repository-id <id> --json` as a JSON file. Then run `repo-harness external-source bind --repo <id> --source-revision <digest> --session <file>`. The command requires a strict `read_write` registry grant. The observation's provider repository and issue must match the session admission. The command persists one immutable provenance edge with the exact observation, authorization revision, session selector and admission digest.
|
|
67
|
-
|
|
68
|
-
`external-source bindings` reports source, session and authorization drift without mutating work. Retired V1 receipts remain stored without a runtime reader. `external-source context` is the sole provider-content renderer and wraps canonical JSON in `[ExternalSourceUntrusted]`. A binding does not create work or admission. Human acceptance stays at PR merge; only a true `installation_blocker` may pause earlier.
|
|
69
|
-
|
|
70
3
|
Generated repos route external tooling by host/runtime shape. Task-level
|
|
71
4
|
skill routing lives in `docs/reference-configs/agentic-development-flow.md`.
|
|
72
5
|
|
|
@@ -75,7 +8,7 @@ skill routing lives in `docs/reference-configs/agentic-development-flow.md`.
|
|
|
75
8
|
- `hai-stack` supplies `geju` for live, pre-contract exploration; only its frozen output enters a contract
|
|
76
9
|
- Codex automation requires `health`, `check`, and `mermaid` from `~/.codex/skills`
|
|
77
10
|
- `CodeGraph` is required agent readiness for code navigation and impact tracing
|
|
78
|
-
- repo-harness's packaged `agent_fleet` supplies the delegation loop's global agent definitions (`explorer`, `deep-reasoner`, `fast-worker`, `gatekeeper`, `root-cause-prover`, `harness-evaluator`) for both hosts
|
|
11
|
+
- repo-harness's packaged `agent_fleet` supplies the delegation loop's global agent definitions (`explorer`, `deep-reasoner`, `fast-worker`, `gatekeeper`, `root-cause-prover`, `harness-evaluator`) for both hosts
|
|
79
12
|
|
|
80
13
|
Waza is Codex-first in this contract. `~/.codex/skills` is the Codex runtime
|
|
81
14
|
source, while `~/.agents/skills` is only the skills CLI staging/cache path used
|
|
@@ -221,12 +154,13 @@ number of registered repos that have pending project upgrade work.
|
|
|
221
154
|
|
|
222
155
|
The cross-review skill is **harness-owned**; its routing source lives in
|
|
223
156
|
`assets/skills/repo-harness-cross-review/`. Explicit independent review uses
|
|
224
|
-
|
|
157
|
+
a persistent task session in Herdr: the existing OAR host runs a reviewer with
|
|
158
|
+
the `deep-reasoner` role.
|
|
225
159
|
The full profile installs this Skill on both hosts; generic-review file Result
|
|
226
160
|
and typed Receipt own acceptance. The direct advisory runtime is retired.
|
|
227
161
|
Plugin install/discovery/readiness is not a repo-harness runtime dependency;
|
|
228
162
|
user-managed plugins remain untouched. Plan consultation uses persistent
|
|
229
|
-
|
|
163
|
+
collaborator sessions in Herdr. Review Markdown remains projection only.
|
|
230
164
|
|
|
231
165
|
Reverse Skill is registered from `zhaoxuya520/reverse-skill` as the recommended
|
|
232
166
|
but explicit-only `reverse-skill-router`. It is not part of either install
|
|
@@ -374,8 +308,7 @@ boundary explicit:
|
|
|
374
308
|
|
|
375
309
|
| Capability | Owner | Required for |
|
|
376
310
|
|---|---|---|
|
|
377
|
-
| `
|
|
378
|
-
| `herdr_core` (`hc`) | user install (Herdr.app or a herdr-core release) | optional, at least the version pinned in `.ai/harness/policy.json#external_tooling.herdr_core`; persistent terminals and agent messaging; no repo-harness automation uses it yet |
|
|
311
|
+
| `herdr_core` (`hc`) | user install (Herdr.app or a herdr-core release) | required, at least the version pinned in `.ai/harness/policy.json#external_tooling.herdr_core`; persistent agent terminals, task sessions, review hosting and the notify relay |
|
|
379
312
|
| `bun` | repo-harness | repo-harness-owned global installs, local dependency install, tests, and runtime execution |
|
|
380
313
|
| `bash` | repo-harness | helper scripts, migration, setup checks, and contract verification wrappers; Git-for-Windows Bash is the Windows platform contract |
|
|
381
314
|
| `npm` | npm registry | registry readbacks, publish gates, and opt-in update checks; not repo-harness-owned global install repair |
|
|
@@ -383,45 +316,39 @@ boundary explicit:
|
|
|
383
316
|
| `rsync` | platform filesystem | installed-copy runtime mirroring |
|
|
384
317
|
| `symlink` | platform filesystem | link-mode aliases; copy mode is the fallback |
|
|
385
318
|
|
|
386
|
-
`.ai/harness/policy.json#external_tooling.
|
|
387
|
-
the `min_version` floor and the checksum-verified `release_assets` entry that
|
|
388
|
-
installs. Install
|
|
389
|
-
|
|
390
|
-
`check-agent-tooling.sh --strict-readiness` reads the same key and fails if
|
|
391
|
-
missing, unusable, or older than the pin
|
|
319
|
+
`.ai/harness/policy.json#external_tooling.herdr_core` is the single herdr pin: it
|
|
320
|
+
owns the `min_version` floor and the checksum-verified `release_assets` entry that
|
|
321
|
+
CI installs. Install hc through Herdr.app or a herdr-core release and verify
|
|
322
|
+
`hc --version` reports at least that pinned `min_version`.
|
|
323
|
+
`check-agent-tooling.sh --strict-readiness` reads the same key and fails if hc is
|
|
324
|
+
missing, unusable, or older than the pin. A missing or malformed pin is a
|
|
325
|
+
`configuration-error`. `setup check` projects `runtime.herdr_core`. Repo-harness
|
|
326
|
+
does not install hc or edit user Herdr config. Herdr.app is not a readiness
|
|
327
|
+
requirement: it has no Intel macOS build.
|
|
392
328
|
The root `repo-harness` skill requires the `herdr` skill on Codex and Claude.
|
|
393
|
-
`repo-harness install` and `repo-harness update`
|
|
394
|
-
`herdr
|
|
395
|
-
`
|
|
396
|
-
the
|
|
397
|
-
Both hosts receive the same generated skill. When Codex is selected, an existing
|
|
329
|
+
`repo-harness install` and `repo-harness update` put the caller-context policy in
|
|
330
|
+
`assets/reference-configs/herdr-skill-context.md` before the hc manual from
|
|
331
|
+
`hc --skill`. The shared renderer keeps the manual verbatim and rejects output
|
|
332
|
+
that is not the hc manual. Both hosts receive the same generated skill. When Codex is selected, an existing
|
|
398
333
|
shared copy at `~/.agents/skills/herdr` is also updated and checked because Codex
|
|
399
334
|
can discover it. Claude-only operations leave that shared copy unchanged.
|
|
400
335
|
Install refuses to replace a
|
|
401
336
|
user-edited or unowned copy. Strict readiness compares against the same renderer.
|
|
402
337
|
Missing tool environment variables do not prove that the user is outside Herdr.
|
|
403
|
-
Read-only discovery lists
|
|
404
|
-
Reuse a suitable task reviewer or
|
|
338
|
+
Read-only discovery lists live hc terminals (`hc ls --json`) by the task's exact path.
|
|
339
|
+
Reuse a suitable task reviewer or start a new terminal at the task path.
|
|
405
340
|
Path matching selects a location; it does not transfer another agent's task.
|
|
406
|
-
Use explicit
|
|
341
|
+
Use explicit hc terminal addresses for control after discovery.
|
|
407
342
|
The persistent reviewer still requires POSIX process groups: use macOS/Linux or
|
|
408
343
|
WSL. Native Windows review lifecycle support is not implied by Herdr support.
|
|
409
|
-
Admitted task sessions start only in
|
|
344
|
+
Admitted task sessions start only in an hc terminal, so they and their Task Inbox and operator diff consumers are POSIX-only.
|
|
410
345
|
Drain old tmux reviewers with the previous repo-harness version before upgrading.
|
|
411
346
|
No runtime or collaboration path automatically falls back to tmux.
|
|
412
347
|
|
|
413
|
-
herdr-core (`hc`)
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
`runtime_capabilities.herdr_core`; `setup check` projects `runtime.herdr_core`.
|
|
418
|
-
`hc --version` must report at least the `min_version` at
|
|
419
|
-
`.ai/harness/policy.json#external_tooling.herdr_core`. CI does not install hc.
|
|
420
|
-
The two checks are independent: `hc` never satisfies `runtime.herdr`, the
|
|
421
|
-
`herdr` skill or strict readiness. The transport, task sessions,
|
|
422
|
-
`review --launch herdr`, operator collectors, the `herdr notify` plugin, the
|
|
423
|
-
`herdr` skill, doctor and CI stay classic-only. No runtime falls back to the
|
|
424
|
-
other.
|
|
348
|
+
herdr-core (`hc`) has persistent terminals and a JSON-RPC API, and it has
|
|
349
|
+
built-in remote host access (`hc machine`, `hc run --on <machine>`). It has no
|
|
350
|
+
sessions, panes, workspaces or plugins. Doctor has no Herdr Pi integration
|
|
351
|
+
check: Pi reports its terminal status to hc natively.
|
|
425
352
|
The native protected-helper tool contract below remains a separate boundary.
|
|
426
353
|
|
|
427
354
|
The policy is Bun-first, not Bun-only. Repo-harness-owned install/repair commands
|
|
@@ -705,8 +632,7 @@ bun add -g @colbymchenry/codegraph@1.6.2 && codegraph sync . && codegraph status
|
|
|
705
632
|
`check-agent-tooling.sh`. The single authored source is
|
|
706
633
|
`package:agents/fleet`; it ships inside the npm package and never requires a
|
|
707
634
|
network fetch. The managed list is `explorer`, `deep-reasoner`, `fast-worker`,
|
|
708
|
-
`deep-worker`, `gatekeeper`, `root-cause-prover`, `harness-evaluator
|
|
709
|
-
`orchestrator`.
|
|
635
|
+
`deep-worker`, `gatekeeper`, `root-cause-prover`, and `harness-evaluator`.
|
|
710
636
|
|
|
711
637
|
### Two targets, one source
|
|
712
638
|
|
|
@@ -714,14 +640,9 @@ network fetch. The managed list is `explorer`, `deep-reasoner`, `fast-worker`,
|
|
|
714
640
|
is installed byte-for-byte.
|
|
715
641
|
- Codex: `~/.codex/agents/<agent>.toml` — generated deterministically from the
|
|
716
642
|
same packaged `.md`; there is no second authored copy for Codex.
|
|
717
|
-
-
|
|
718
|
-
`
|
|
719
|
-
|
|
720
|
-
Start it as a long-lived session with `claude --agent orchestrator`. It is
|
|
721
|
-
the coordinator and integrator seat of `repo-harness-issue-flow`
|
|
722
|
-
(`opus/xhigh`, read-only tools plus `gh` and `herdr agent prompt`). It has no
|
|
723
|
-
Codex target because a Codex fleet TOML runs in a read-only sandbox without
|
|
724
|
-
network access, which cannot run `gh`.
|
|
643
|
+
- The fleet holds sub-agent roles only. The orchestrator seat is not a fleet
|
|
644
|
+
role: `repo-harness seats argv orchestrator` prints its launch argv from the
|
|
645
|
+
`seats` section of `~/.repo-harness/config.json`.
|
|
725
646
|
|
|
726
647
|
### `.md` -> `.toml` mapping
|
|
727
648
|
|
|
@@ -1004,7 +925,6 @@ managed files by hand:
|
|
|
1004
925
|
~/.claude/agents/gatekeeper.md
|
|
1005
926
|
~/.claude/agents/root-cause-prover.md
|
|
1006
927
|
~/.claude/agents/harness-evaluator.md
|
|
1007
|
-
~/.claude/agents/orchestrator.md
|
|
1008
928
|
~/.codex/agents/explorer.toml
|
|
1009
929
|
~/.codex/agents/deep-reasoner.toml
|
|
1010
930
|
~/.codex/agents/fast-worker.toml
|