repo-harness 0.25.3 → 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 +16 -27
- package/agents/fleet/gatekeeper.md +1 -1
- package/assets/operator/{fleet-windows-job-controller.ps1 → windows-job-controller.ps1} +12 -12
- package/assets/reference-configs/agentic-development-flow.md +27 -17
- package/assets/reference-configs/external-tooling.md +8 -81
- package/assets/reference-configs/global-working-rules.md +1 -1
- package/assets/reference-configs/harness-overview.md +11 -7
- package/assets/reference-configs/herdr-skill-context.md +3 -2
- 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 +53 -142
- 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 +11 -5
- 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 +72 -41
- package/assets/skills/repo-harness-issue-flow/references/replan.md +8 -7
- 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 +0 -3
- 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 +7 -12
- package/dist/hook-entry.js +200 -825
- package/dist/oar-review-host.js +3 -2
- package/dist/operator-ui/assets/{ArchitectureWorkspace-rjlN-8R2.js → ArchitectureWorkspace-BRP1rMMo.js} +1 -1
- package/dist/operator-ui/assets/{DocsPage-CRaTSP3D.js → DocsPage-DLM6dzMb.js} +3 -3
- package/dist/operator-ui/assets/{abnfDiagram-VCTEODGH-BFhgL4_X.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-1NoOp4es.js → architectureDiagram-5GKGNRK7-D2vVdhRg.js} +1 -1
- package/dist/operator-ui/assets/{blockDiagram-I7D4REHJ-D-cnMqjK.js → blockDiagram-I7D4REHJ-BYZ8XsMJ.js} +1 -1
- package/dist/operator-ui/assets/{c4Diagram-7LVT6UL2-DYm9qbaz.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-BF1G1yi6.js → chunk-4HAMMTFA-i3tlSxDP.js} +1 -1
- package/dist/operator-ui/assets/{chunk-75Z2AOVW-B1j-oisA.js → chunk-75Z2AOVW-BhcHGQX3.js} +1 -1
- package/dist/operator-ui/assets/{chunk-DU6HZSFF-DsnuxesV.js → chunk-DU6HZSFF-ESwLEd7y.js} +1 -1
- package/dist/operator-ui/assets/{chunk-F27PBJKO-eb7-Ur1D.js → chunk-F27PBJKO-DzgkUAaS.js} +1 -1
- package/dist/operator-ui/assets/{chunk-GMAD6QVW-C09ks1XE.js → chunk-GMAD6QVW-CI3PzCBH.js} +1 -1
- package/dist/operator-ui/assets/{chunk-GVQU2GXP-BpZL9Gfs.js → chunk-GVQU2GXP-D7mVueL9.js} +1 -1
- package/dist/operator-ui/assets/{chunk-IMKFNOWR-kyEnT-W3.js → chunk-IMKFNOWR-6yCiE3Ny.js} +1 -1
- package/dist/operator-ui/assets/{chunk-L3NEJ4N5-CEQdXQqr.js → chunk-L3NEJ4N5-fDwT8vZ_.js} +1 -1
- package/dist/operator-ui/assets/{chunk-OSK3NFVY-B8eNuair.js → chunk-OSK3NFVY-CYeI6Ngu.js} +1 -1
- package/dist/operator-ui/assets/{chunk-P2QGCYS3-IC1iPfVx.js → chunk-P2QGCYS3-BR4LGVGe.js} +1 -1
- package/dist/operator-ui/assets/{chunk-POPQ4Y6H-Bb7QgvZD.js → chunk-POPQ4Y6H-DGYaK5_M.js} +1 -1
- package/dist/operator-ui/assets/{chunk-PWAF6VOD-CwILx0_c.js → chunk-PWAF6VOD-CP0EqV5m.js} +1 -1
- package/dist/operator-ui/assets/{chunk-SHT3W25Y-hEd5Dpoe.js → chunk-SHT3W25Y-CfBlFhVD.js} +1 -1
- package/dist/operator-ui/assets/{chunk-SVP7TREG-C-QbND6n.js → chunk-SVP7TREG-BatRqPl3.js} +1 -1
- package/dist/operator-ui/assets/{chunk-TICWLB2K-DeSQeLFM.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-PhoRwNSU.js → cynefin-OW5HDTMX-DWFrsjEE.js} +1 -1
- package/dist/operator-ui/assets/{cynefinDiagram-5FMLGOSQ-7OXilZZ1.js → cynefinDiagram-5FMLGOSQ-VHMt8H7p.js} +1 -1
- package/dist/operator-ui/assets/{dagre-GXQ25YYZ-Dk48DZQU.js → dagre-GXQ25YYZ-DcIZyQLZ.js} +1 -1
- package/dist/operator-ui/assets/{diagram-S7CK7UJ4-CtyC5kUo.js → diagram-S7CK7UJ4-CFmbsbnJ.js} +1 -1
- package/dist/operator-ui/assets/{diagram-UQ7AKVKN-Be56sX3m.js → diagram-UQ7AKVKN-D7wxxWxp.js} +1 -1
- package/dist/operator-ui/assets/{diagram-VSXAHHWV-BhNRjKPt.js → diagram-VSXAHHWV-Kbacc4vb.js} +1 -1
- package/dist/operator-ui/assets/{diagram-VX7I27RA-CUr_B8fH.js → diagram-VX7I27RA-BFA0zXM3.js} +1 -1
- package/dist/operator-ui/assets/{diagram-Z3DM3KII-CdZCWs9K.js → diagram-Z3DM3KII-C7XyRbul.js} +1 -1
- package/dist/operator-ui/assets/{ebnfDiagram-PWID7BFC-I8e2x1dF.js → ebnfDiagram-PWID7BFC-Cnqsrj6p.js} +1 -1
- package/dist/operator-ui/assets/{erDiagram-RLTQ6QDP-SMs1WZl6.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-BV0qL4k_.js → ganttDiagram-EL5Y4UJY-DUf1_n-j.js} +1 -1
- package/dist/operator-ui/assets/{gitGraph-4MIJSDKK-BloiXYXP.js → gitGraph-4MIJSDKK-2kdiVAUn.js} +1 -1
- package/dist/operator-ui/assets/{gitGraphDiagram-WWUBYQGX-B4D8jXky.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-UOZqF0a7.js → info-A6RAGUB7-nLuuS8_v.js} +1 -1
- package/dist/operator-ui/assets/{infoDiagram-27XIBGKW-C6X0pAO1.js → infoDiagram-27XIBGKW-Bmj3Jlpp.js} +1 -1
- package/dist/operator-ui/assets/{ishikawaDiagram-5VMMS53U-Cp3KYNQj.js → ishikawaDiagram-5VMMS53U-FhYF1F0C.js} +1 -1
- package/dist/operator-ui/assets/{journeyDiagram-3NMN7TZE-DCjmPwDY.js → journeyDiagram-3NMN7TZE-C3QJqY-3.js} +1 -1
- package/dist/operator-ui/assets/{kanban-definition-UXKFOSKX-f2p6h_X8.js → kanban-definition-UXKFOSKX-DZi1Wjno.js} +1 -1
- package/dist/operator-ui/assets/{line-DGsxynmm.js → line-iqB75cyP.js} +1 -1
- package/dist/operator-ui/assets/{mermaid-parser.core-CFVtSnVW.js → mermaid-parser.core-DIArUF3d.js} +3 -3
- package/dist/operator-ui/assets/{mermaid.core-DiouEf_0.js → mermaid.core-BNDqdTtO.js} +4 -4
- package/dist/operator-ui/assets/{mindmap-definition-YA3MSWOX-BNYBhd2k.js → mindmap-definition-YA3MSWOX-BOcVX1M-.js} +1 -1
- package/dist/operator-ui/assets/{packet-AYTQ26CC-BxJO6-w_.js → packet-AYTQ26CC-EiozlwqG.js} +1 -1
- package/dist/operator-ui/assets/{pegDiagram-XKGWAZYB-NFxyKcEL.js → pegDiagram-XKGWAZYB-CWW7r51u.js} +1 -1
- package/dist/operator-ui/assets/{pie-WAS4IAKB-DRG3g5IX.js → pie-WAS4IAKB-C__OzaDl.js} +1 -1
- package/dist/operator-ui/assets/{pieDiagram-E7YTZNPT-BM-X8pCs.js → pieDiagram-E7YTZNPT-DbUDXHBG.js} +1 -1
- package/dist/operator-ui/assets/{quadrantDiagram-AXDQQJYC-CfxNqnID.js → quadrantDiagram-AXDQQJYC-CKI9LUcX.js} +1 -1
- package/dist/operator-ui/assets/{radar-RG4KPBEZ-CWp-KDl_.js → radar-RG4KPBEZ-CsRX-Fi6.js} +1 -1
- package/dist/operator-ui/assets/{railroad-74A4TZTK-W7pjUvJr.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-k_k-e0OU.js → railroadDiagram-O6MQD6OU-Abb-RJax.js} +1 -1
- package/dist/operator-ui/assets/{requirementDiagram-BXWQKSXE-BFUODn2H.js → requirementDiagram-BXWQKSXE-DkznGHTE.js} +1 -1
- package/dist/operator-ui/assets/{sankeyDiagram-P5KCCOFB-BVCdC525.js → sankeyDiagram-P5KCCOFB-UKM5vqlg.js} +1 -1
- package/dist/operator-ui/assets/{sequenceDiagram-WJ2MYXX4-CV9FGbzU.js → sequenceDiagram-WJ2MYXX4-BwIN13l-.js} +1 -1
- package/dist/operator-ui/assets/{stateDiagram-D77RDMKH-BCUJLyp9.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-BhJmqiih.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-DncmXLjW.js → timeline-definition-24CTP7MA-B-4sBugD.js} +1 -1
- package/dist/operator-ui/assets/{treeView-Q6P3EWNA-CZN7aAl9.js → treeView-Q6P3EWNA-CgCjxhbn.js} +1 -1
- package/dist/operator-ui/assets/{treemap-WGGIJYW6-DEBJHML0.js → treemap-WGGIJYW6-BwqVgmtt.js} +1 -1
- package/dist/operator-ui/assets/{vennDiagram-4TSXK5OY-BUU9uzvr.js → vennDiagram-4TSXK5OY-147aCcas.js} +1 -1
- package/dist/operator-ui/assets/{wardley-WFR3VGLG-DNxI3y-4.js → wardley-WFR3VGLG-DeN0guWh.js} +1 -1
- package/dist/operator-ui/assets/{wardleyDiagram-VM6X3IG4-Cb3t-YF7.js → wardleyDiagram-VM6X3IG4-D47xUeXU.js} +1 -1
- package/dist/operator-ui/assets/{xychartDiagram-S5SC5T6Z-BzBOBXOR.js → xychartDiagram-S5SC5T6Z-CDhILzlV.js} +1 -1
- package/dist/operator-ui/index.html +2 -2
- package/package.json +3 -3
- package/scripts/check-agent-tooling.sh +27 -14
- 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/install-agent-fleet.sh +13 -19
- package/scripts/lib/project-init-lib.sh +1 -9
- package/scripts/run-harness-profile-benchmark.ts +3 -2
- package/scripts/run-skill-routing-eval.ts +36 -34
- package/scripts/select-ci-coverage.ts +55 -21
- 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-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 +77 -6
- package/src/cli/commands/candidate-reconciliation.ts +24 -14
- package/src/cli/commands/capability-context.ts +1 -1
- package/src/cli/commands/doctor.ts +43 -47
- package/src/cli/commands/fleet.ts +1 -143
- package/src/cli/commands/global-runtime.ts +90 -64
- package/src/cli/commands/herdr-skill.ts +6 -2
- package/src/cli/commands/herdr.ts +3 -2
- 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/retention.ts +2 -1
- package/src/cli/commands/review.ts +1 -1
- 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 +231 -139
- package/src/cli/installer/install-profile.ts +756 -679
- 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 +4 -4
- package/src/cli/installer/waza-rules.ts +6 -6
- package/src/core/architecture/projection.ts +16 -0
- package/src/core/board/attention-delivery.ts +124 -0
- package/src/core/board/attention.ts +92 -5
- package/src/core/board/board.ts +36 -8
- package/src/core/board/dependency-migration.ts +258 -0
- package/src/core/board/hazards.ts +84 -0
- package/src/core/board/source.ts +7 -3
- package/src/core/decision/notify-relay-record.ts +52 -0
- package/src/core/fleet/task-message-order.ts +11 -0
- package/src/core/operator/bot-access.ts +2 -1
- package/src/core/operator/notify-status.ts +1 -48
- package/src/core/operator/repositories.ts +72 -0
- package/src/core/operator/seat-launch.ts +9 -2
- package/src/core/operator/task-messages.ts +138 -0
- package/src/core/publication/feedback.ts +0 -4
- package/src/core/review/review-publish.ts +2 -2
- 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 +8 -9
- 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 +56 -4
- 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 +8 -4
- package/src/effects/operator/architecture-map-worker.ts +14 -40
- package/src/effects/operator/architecture.ts +2 -2
- package/src/effects/operator/doc-session-finalize-scope.ts +2 -1
- package/src/effects/operator/execution-state.ts +3 -20
- package/src/effects/operator/notify-status.ts +2 -4
- package/src/effects/operator/repositories.ts +27 -0
- package/src/effects/operator/seats-configuration.ts +10 -10
- package/src/effects/operator/server.ts +123 -393
- 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/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 +15 -1
- 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 +3 -3
- 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 +72 -9
- package/src/effects/terminal/herdr-notify-install.ts +6 -77
- 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 +5 -62
- package/src/effects/terminal/task-role-profiles.ts +1 -4
- package/src/effects/terminal/task-session-record.ts +64 -3
- package/src/effects/terminal/task-session.ts +2 -32
- package/src/effects/upgrade/legacy-inventory.ts +8 -12
- package/src/operator-web/App.tsx +54 -167
- package/src/operator-web/ArchitectureMap.tsx +1 -1
- package/src/operator-web/BoardPage.tsx +14 -7
- package/src/operator-web/BotsPage.tsx +2 -1
- package/src/operator-web/NavRail.tsx +1 -1
- package/src/operator-web/RepositoriesPage.tsx +95 -35
- package/src/operator-web/SeatsPage.tsx +2 -5
- package/src/operator-web/SettingsPage.tsx +1 -1
- package/src/operator-web/TaskDrawer.tsx +76 -7
- package/src/operator-web/ToolsPage.tsx +1 -1
- package/src/operator-web/WorktreesPage.tsx +1 -1
- package/src/operator-web/app.css +2 -66
- package/src/operator-web/board-view.ts +1 -1
- package/src/operator-web/bots.ts +1 -1
- package/src/operator-web/brand.tsx +1 -0
- package/src/operator-web/fixtures/board-1474.json +437 -0
- package/src/operator-web/fixtures/bots.ts +1 -1
- package/src/operator-web/fixtures/dev-activity.ts +37 -6
- package/src/operator-web/fixtures/index.ts +28 -20
- package/src/operator-web/fixtures/settings.ts +1 -1
- package/src/operator-web/fixtures/setup.ts +1 -8
- package/src/operator-web/i18n.ts +101 -389
- 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/settings.ts +2 -2
- package/src/operator-web/workspace-location.ts +2 -3
- package/src/operator-web/worktrees.ts +2 -2
- package/agents/fleet/orchestrator.md +0 -36
- package/dist/operator-ui/assets/architecture-7GRP2DOG-CAUav40i.js +0 -1
- package/dist/operator-ui/assets/channel-J9t0gGUF.js +0 -1
- package/dist/operator-ui/assets/classDiagram-ZZMXUADV-DXPXgEqY.js +0 -1
- package/dist/operator-ui/assets/classDiagram-v2-VYDZK3BY-DXPXgEqY.js +0 -1
- package/dist/operator-ui/assets/eventmodeling-NTZA5JFV-DqJVxgEO.js +0 -1
- package/dist/operator-ui/assets/flowDiagram-HODETNUW-NvyYrdhg.js +0 -1
- package/dist/operator-ui/assets/index-CAtU8UhN.js +0 -27
- package/dist/operator-ui/assets/index-DcWFPCXl.css +0 -2
- package/dist/operator-ui/assets/railroad-abnf-HS5TGJTU-7fl6y-zk.js +0 -1
- package/dist/operator-ui/assets/railroad-ebnf-LZEXJU2U-nFqux8Y2.js +0 -1
- package/dist/operator-ui/assets/railroad-peg-WCYAUIDC-DfJI7HIW.js +0 -1
- package/dist/operator-ui/assets/stateDiagram-v2-MP3YSRHH-BrcHaQr3.js +0 -1
- package/dist/operator-ui/assets/swimlanesDiagram-VR7AAH4N-BBUuY_m3.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/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/state/collect-provider-board-inputs.ts +0 -43
- package/src/effects/state/collect-slice-inputs.ts +0 -21
- package/src/operator-web/AdmittedTaskActivity.tsx +0 -61
- package/src/operator-web/AdmittedTaskContext.tsx +0 -30
- 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
|
@@ -119,11 +119,14 @@ helpers do not rediscover tools from a caller's `PATH`; rerun
|
|
|
119
119
|
`repo-harness update` after relocating or replacing Git for Windows.
|
|
120
120
|
|
|
121
121
|
The global bootstrap: installs the npm package as the global CLI, refreshes
|
|
122
|
-
repo-harness skill aliases, installs user-level hook adapters, and records
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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:
|
|
127
130
|
[`install-profiles.md`](docs/reference-configs/install-profiles.md).
|
|
128
131
|
|
|
129
132
|
### 3. Preview the repo-local contract
|
|
@@ -245,7 +248,7 @@ task queue.
|
|
|
245
248
|
| --- | --- | --- |
|
|
246
249
|
| Issue and PR | Scope, ownership, dependencies, status and review evidence | The assigned GitHub issue |
|
|
247
250
|
| Session support | Repository context, hooks and handoffs | `repo-harness init` |
|
|
248
|
-
|
|
|
251
|
+
| Board | Read the sub-issues, pull requests, plan block and seat terminals of one parent issue | `repo-harness board --parent <n> --json` |
|
|
249
252
|
|
|
250
253
|
New work uses a bounded issue brief and the current repository rules. Historical
|
|
251
254
|
Sprint, binding and Lease records remain readable for operator and closeout
|
|
@@ -323,15 +326,15 @@ Keep the issue, branch, verification result and next action in the handoff.
|
|
|
323
326
|
Re-read the issue and PR before continuing. Use the approved OAR and Herdr host
|
|
324
327
|
paths for an assigned agent. repo-harness has no PM or Engineer scheduling API.
|
|
325
328
|
|
|
326
|
-
###
|
|
329
|
+
### Board of a parent issue
|
|
327
330
|
|
|
328
331
|
```bash
|
|
329
|
-
repo-harness
|
|
332
|
+
repo-harness board --parent <n> --json
|
|
330
333
|
```
|
|
331
334
|
|
|
332
|
-
The board reads
|
|
333
|
-
It does not claim work or create an Engineer binding.
|
|
334
|
-
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.
|
|
335
338
|
|
|
336
339
|
Use [repo-harness](SKILL.md) for scope and worker ownership,
|
|
337
340
|
[repo-harness-product](assets/skills/repo-harness-product/SKILL.md) for requested
|
|
@@ -351,20 +354,6 @@ violations. repo-harness shows each suggestion with its metrics, bounded evidenc
|
|
|
351
354
|
and module statistics, and records the user decision. It never executes a refactor; an
|
|
352
355
|
accepted suggestion goes through the normal plan and pull request workflow.
|
|
353
356
|
|
|
354
|
-
### External source intake
|
|
355
|
-
|
|
356
|
-
```bash
|
|
357
|
-
repo-harness external-source refresh # one bounded, explicitly enabled GitHub observation
|
|
358
|
-
repo-harness external-source bind --repo <id> --source-revision <digest> --session <selector.json>
|
|
359
|
-
repo-harness external-source bindings # binding edges and current drift attention
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
Intake is inert by design. An observed Issue mints no execution authority and
|
|
363
|
-
does not become a runnable task on its own; binding attaches an immutable source
|
|
364
|
-
revision to an existing admitted session selected by its provider issue, immutable
|
|
365
|
-
claim, approved grant and session binding digest. The selector comes from task
|
|
366
|
-
session discovery. Binding never creates a claim or approval.
|
|
367
|
-
|
|
368
357
|
### Persistent acceptance review
|
|
369
358
|
|
|
370
359
|
Before review, configure the repository's manual `external_sources` policy and
|
|
@@ -613,8 +602,8 @@ repo-harness commit scripts or hooks unless that repo adopts the same policy.
|
|
|
613
602
|
|
|
614
603
|
## Current Release
|
|
615
604
|
|
|
616
|
-
- npm package: `repo-harness@0.25.
|
|
617
|
-
- 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`
|
|
618
607
|
- GitHub repository: `Ancienttwo/repo-harness`
|
|
619
608
|
- Release notes and history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
620
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.
|
|
@@ -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.
|
|
@@ -108,10 +108,14 @@ that PM restriction. OAR owns coding-agent execution. herdr-core (`hc`) owns
|
|
|
108
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
|
|
@@ -698,8 +632,7 @@ bun add -g @colbymchenry/codegraph@1.6.2 && codegraph sync . && codegraph status
|
|
|
698
632
|
`check-agent-tooling.sh`. The single authored source is
|
|
699
633
|
`package:agents/fleet`; it ships inside the npm package and never requires a
|
|
700
634
|
network fetch. The managed list is `explorer`, `deep-reasoner`, `fast-worker`,
|
|
701
|
-
`deep-worker`, `gatekeeper`, `root-cause-prover`, `harness-evaluator
|
|
702
|
-
`orchestrator`.
|
|
635
|
+
`deep-worker`, `gatekeeper`, `root-cause-prover`, and `harness-evaluator`.
|
|
703
636
|
|
|
704
637
|
### Two targets, one source
|
|
705
638
|
|
|
@@ -707,14 +640,9 @@ network fetch. The managed list is `explorer`, `deep-reasoner`, `fast-worker`,
|
|
|
707
640
|
is installed byte-for-byte.
|
|
708
641
|
- Codex: `~/.codex/agents/<agent>.toml` — generated deterministically from the
|
|
709
642
|
same packaged `.md`; there is no second authored copy for Codex.
|
|
710
|
-
-
|
|
711
|
-
`
|
|
712
|
-
|
|
713
|
-
Start it as a long-lived session with `claude --agent orchestrator`. It is
|
|
714
|
-
the coordinator and integrator seat of `repo-harness-issue-flow`
|
|
715
|
-
(`opus/xhigh`, read-only tools plus `gh` and `hc send`). It has no
|
|
716
|
-
Codex target because a Codex fleet TOML runs in a read-only sandbox without
|
|
717
|
-
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`.
|
|
718
646
|
|
|
719
647
|
### `.md` -> `.toml` mapping
|
|
720
648
|
|
|
@@ -997,7 +925,6 @@ managed files by hand:
|
|
|
997
925
|
~/.claude/agents/gatekeeper.md
|
|
998
926
|
~/.claude/agents/root-cause-prover.md
|
|
999
927
|
~/.claude/agents/harness-evaluator.md
|
|
1000
|
-
~/.claude/agents/orchestrator.md
|
|
1001
928
|
~/.codex/agents/explorer.toml
|
|
1002
929
|
~/.codex/agents/deep-reasoner.toml
|
|
1003
930
|
~/.codex/agents/fast-worker.toml
|
|
@@ -84,7 +84,7 @@ When a task requires broad research, repo archaeology, multi-source synthesis, o
|
|
|
84
84
|
- Implementation sub-agents may run scoped typecheck and affected tests in their own worktree. They commit early and return their check results. An evidence role whose task is a named check, such as a root-cause reproduction, still runs that check and does not commit.
|
|
85
85
|
- The parent agent owns task management, conflict resolution, build and post-merge integration verification, including typecheck and affected tests.
|
|
86
86
|
- After integration, the parent removes each sub-agent worktree and branch whose commits are in the task branch and whose checkout is clean. It also removes the intermediate build output and temporary files that the work created. Other deletion still needs the user.
|
|
87
|
-
- The
|
|
87
|
+
- The orchestrator seat is a long-lived session that starts from `repo-harness seats argv orchestrator`, not a sub-agent. It may call the read-only roles `gatekeeper`, `explorer` and `deep-reasoner` as sub-agents. It dispatches writers (`fast-worker`, `deep-worker`, `root-cause-prover`) and the Codex cross-review only to Herdr seats, for worktree isolation and one writer per file. It edits no product code.
|
|
88
88
|
|
|
89
89
|
## Peer Harness Collaboration
|
|
90
90
|
|
|
@@ -7,7 +7,7 @@ layers hold every workflow fact, and each fact has one source. Root
|
|
|
7
7
|
| Layer | Question | Source |
|
|
8
8
|
| --- | --- | --- |
|
|
9
9
|
| Flow | Who acts, when, and in what order | `repo-harness-issue-flow` skill |
|
|
10
|
-
| Roles | Which seat
|
|
10
|
+
| Roles | Which seat runs which model, and which sub-agents it may call | The `seats` section of `~/.repo-harness/config.json`; sub-agent roles in `agents/fleet/` |
|
|
11
11
|
| Tools | How an action runs | Herdr, the review and publication commands, `contract-worktree` |
|
|
12
12
|
|
|
13
13
|
## Flow
|
|
@@ -20,7 +20,7 @@ task state.
|
|
|
20
20
|
- An orchestrator splits the goal into issues, dispatches work and
|
|
21
21
|
integrates the results.
|
|
22
22
|
- A worker claims one issue and delivers one PR.
|
|
23
|
-
- An acceptor
|
|
23
|
+
- An acceptor takes one review in one round of the PR.
|
|
24
24
|
- An integrator merges. Only `repo-harness publication merge` runs this
|
|
25
25
|
step.
|
|
26
26
|
|
|
@@ -37,8 +37,11 @@ rollback in the PR description. A one-time decision goes in the issue.
|
|
|
37
37
|
|
|
38
38
|
## Roles
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
A seat is a process: the orchestrator, the advisor or a worker. A
|
|
41
|
+
sub-agent is an `agents/fleet/` role that runs inside a seat process. A
|
|
42
|
+
claim role (coordinator, writer, head owner, integrator, acceptor) is the
|
|
43
|
+
role that a GitHub claim gives on one issue or PR. The model choice is
|
|
44
|
+
advice, not a gate. Any host can fill a seat.
|
|
42
45
|
|
|
43
46
|
| Role | Suggested fit | Writes |
|
|
44
47
|
| --- | --- | --- |
|
|
@@ -47,9 +50,10 @@ host can fill a seat.
|
|
|
47
50
|
| Acceptor | Fresh context, read-only; a different model family for High when available | Review threads and the acceptance record |
|
|
48
51
|
| Gap reviewer | Different family from the orchestrator | Comments on drafts; no scope decision |
|
|
49
52
|
|
|
50
|
-
`
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
`repo-harness seats argv <seat>` prints the launch argv of the
|
|
54
|
+
orchestrator, advisor and worker seats. `agents/fleet/` holds the sub-agent
|
|
55
|
+
roles that a seat may call; the installer projects each role to Claude and
|
|
56
|
+
Codex. The High tier prefers a different model family; a fresh same-family
|
|
53
57
|
context is valid and records `model_relation` in the receipt.
|
|
54
58
|
|
|
55
59
|
## Tools
|
|
@@ -20,7 +20,7 @@ reopen an already identified Herdr terminal merely because `HC_TERMINAL_ID` is
|
|
|
20
20
|
absent.
|
|
21
21
|
|
|
22
22
|
- With `HC_TERMINAL_ID`, that value is your address. Terminals that you start
|
|
23
|
-
|
|
23
|
+
report to you with `hc send $HC_TERMINAL_ID`.
|
|
24
24
|
- Without `HC_TERMINAL_ID`, `hc` still reaches the user's core. Start with
|
|
25
25
|
`hc ls --json`. It lists all live terminals of the user, not only yours.
|
|
26
26
|
Read-only discovery does not require prior task ownership.
|
|
@@ -32,7 +32,8 @@ absent.
|
|
|
32
32
|
task and meets the requested independence requirement. A matching path or an
|
|
33
33
|
idle agent alone does not authorize repurposing another task's terminal.
|
|
34
34
|
- If no suitable reviewer exists, start one at the task path with
|
|
35
|
-
`hc run --bg --name <name> --cwd <task path> <template-or-agent> "<task>"`. Record the returned address.
|
|
35
|
+
`hc run --bg --no-parent --name <name> --cwd <task path> <template-or-agent> "<task>"`. Record the returned address.
|
|
36
|
+
`--no-parent` keeps the reviewer running when your program ends.
|
|
36
37
|
Do not send input to terminals of another task.
|
|
37
38
|
- For a visible pane, use `herdr-app do`. Split right; keep at most three
|
|
38
39
|
panes per tab and create a new tab when full. `herdr-app --skill` gives the
|
|
@@ -40,10 +40,10 @@ Other documents link here. They do not copy this table.
|
|
|
40
40
|
| --- | --- | --- | --- | --- |
|
|
41
41
|
| `SessionStart.default` | all sessions | Claude, Codex | `session-context` | Emit the Effective State section first, then the edit-guard-scope, architecture-debt and pending-plan sections under one budget. |
|
|
42
42
|
| `PreToolUse.edit` | `Edit\|Write` | Claude, Codex | `mutation-guard` | Block an `Edit`, `Write` or Codex `apply_patch` target outside the repository, under `_ref/` or `_ops/`, or without a parseable target path. Bash writes skip it; see [Edit guard coverage](#edit-guard-coverage). |
|
|
43
|
-
| `PreToolUse.subagent` | `Agent` | Claude | `return-channel` | Append the return-channel contract
|
|
43
|
+
| `PreToolUse.subagent` | `Agent` | Claude | `return-channel` | Append the return-channel contract and standing orders to a Claude `Agent` prompt. |
|
|
44
44
|
| `PreToolUse.bash` | `Bash` | Claude | `bash-mutation-guard` | Check literal write destinations under `_ops/`, `_ref/` or outside the repository. Unsupported shell syntax remains unchecked. |
|
|
45
45
|
| `UserPromptSubmit.inbox` | all prompts | Claude, Codex | `agent-notice` | Deliver architecture debt on Codex; Claude emits nothing. |
|
|
46
|
-
| `SubagentStart.context` | subagent start | Codex | `subagent-context` | Record the native role and model observation. Add the bounded child context
|
|
46
|
+
| `SubagentStart.context` | subagent start | Codex | `subagent-context` | Record the native role and model observation. Add the bounded child context and standing orders. |
|
|
47
47
|
| `Stop.default` | session stop | Claude, Codex | `stop` | Publish the evidence checkpoint and render handoff and resume. Report protected path changes. Claude can get architecture debt. |
|
|
48
48
|
|
|
49
49
|
After upgrading the package, reinstall the host adapters. Codex must trust the
|
|
@@ -66,8 +66,8 @@ Both routes above use one renderer and preserve the register text verbatim.
|
|
|
66
66
|
The block starts with `[repo-harness:standing-orders]` and is at most 1500 UTF-8
|
|
67
67
|
bytes, including the marker and any truncation line.
|
|
68
68
|
A truncated block ends with `... (truncated; read .ai/harness/standing-orders.md)`.
|
|
69
|
-
Claude
|
|
70
|
-
Codex includes it in `additionalContext
|
|
69
|
+
Claude appends it after the return-channel text.
|
|
70
|
+
Codex includes it in `additionalContext`.
|
|
71
71
|
Claude skips the block when its prompt already has the marker.
|
|
72
72
|
Codex adds one block to the fresh context it builds for each `SubagentStart` event.
|
|
73
73
|
|
|
@@ -21,7 +21,7 @@ The grades describe repository boundaries. The delegation rows use evidence from
|
|
|
21
21
|
| Assign a single writer per directory; never give concurrent agents overlapping write ownership. | **G** | The root agent instructions ask for one worktree per parallel writer (`CLAUDE.md:17`, `AGENTS.md:17`). No hook renders this rule, and no code acquires a directory-wide edit lease. | Root agent instructions; the active task's allowed paths and ownership brief. |
|
|
22
22
|
| Run parallel writers only in separate worktrees from a clean source. Never silently drop isolation when worktree creation fails. | **G** | This is the upstream host requirement. The inspected start helper creates a Git worktree and rejects residual state with `--fresh`, but has no source-clean check in its start path (`scripts/contract-worktree.sh:523`, `scripts/contract-worktree.sh:556`, `scripts/contract-worktree.sh:588`). Do not describe the complete requirement as enforced. | Active contract's worktree boundary; `docs/researches/20260930-pi-harness-packages-extraction.md`, section 6.4. |
|
|
23
23
|
| Refuse reuse when the caller requests a fresh contract worktree. | **E** | `--fresh` refuses an already-linked tree and existing metadata, path, worktree, or branch; it is an explicit option, not the default (`scripts/contract-worktree.sh:533`, `scripts/contract-worktree.sh:556`). | `contract-worktree start --fresh`. |
|
|
24
|
-
| Child agents default to fresh task context and do not spawn further children. | **G** | The Codex install guidance asks for `fork_turns="none"` (`docs/reference-configs/install-profiles.md:
|
|
24
|
+
| Child agents default to fresh task context and do not spawn further children. | **G** | The Codex install guidance asks for `fork_turns="none"` (`docs/reference-configs/install-profiles.md:417`). No hook or policy key sets spawn depth or validates the child's inherited transcript. `SubagentStart` records the native role observation and refuses no spawn (`src/cli/hook/subagent-context.ts:428`). | Host-native spawn configuration. |
|
|
25
25
|
| Accept the exact subject with its evidence, rather than treating exit code zero as acceptance. | **E** | Acceptance parsing refuses stale subject/contract evidence before checking command success; `verify-sprint` invokes receipt verification and fails that gate when verification fails (`scripts/acceptance-receipt.ts:415`, `scripts/acceptance-receipt.ts:434`, `scripts/verify-sprint.sh:1211`). Scope: the receipt-backed completion gate. | Acceptance Policy in the active contract; the `repo-harness-issue-flow` skill (`references/acceptor.md`); AcceptanceReceipt and prepared verification evidence. |
|
|
26
26
|
| After an interrupted managed push/PR/merge, recover explicitly with `recover reconcile`; never automatically replay the external effect. | **E** | Managed finish/ship refuse unfinished closeout re-entry. Reconcile requires an already-landed merge/push and completes missing phases without merging/pushing again (`scripts/contract-worktree.sh:1028`, `scripts/contract-worktree.sh:1426`, `scripts/ship-worktrees.sh:611`, `scripts/ship-worktrees.sh:1539`). Normal first execution may perform the effect; before it lands, recovery uses `abort`. | `long-run-continuation.md`, Crash Recovery; the worktree-scoped closeout journal. |
|
|
27
27
|
| Apply the same explicit-recovery discipline to external effects outside managed closeout. | **G** | The inspected closeout helpers do not intercept arbitrary host shell commands. A host must not replace the managed recovery protocol with its own retry loop. | `long-run-continuation.md`, Crash Recovery; the operation's authorization. |
|
|
@@ -5,9 +5,8 @@ issue into a draft PR. The stages are triage, reproduce and fix. The host owns
|
|
|
5
5
|
scheduling. repo-harness ships no scheduler and no automation code for this
|
|
6
6
|
pipeline.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
adds the stop rules, the evidence handoff and the write rules.
|
|
8
|
+
The local inbox stays with [heartbeat triage](heartbeat-triage.md). This
|
|
9
|
+
contract adds the stop rules, the evidence handoff and the write rules.
|
|
11
10
|
|
|
12
11
|
## Stages
|
|
13
12
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hazards_version": "repo-harness.review-hazards.v1",
|
|
3
|
+
"hazards": [
|
|
4
|
+
{
|
|
5
|
+
"id": "ci-config",
|
|
6
|
+
"text": "Changes a workflow or other CI configuration under `.github/`.",
|
|
7
|
+
"path_visible": true,
|
|
8
|
+
"paths": [".github/**"]
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "release-install-script",
|
|
12
|
+
"text": "Changes a release, publish, update or install script, or a package script that runs at install or release.",
|
|
13
|
+
"path_visible": false
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "container-build",
|
|
17
|
+
"text": "Changes a `Dockerfile` or another container build file.",
|
|
18
|
+
"path_visible": true,
|
|
19
|
+
"paths": ["**/Dockerfile", "**/Dockerfile.*", "**/*.Dockerfile", "**/Containerfile", "**/Containerfile.*"]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "network",
|
|
23
|
+
"text": "Adds a network address, endpoint or telemetry.",
|
|
24
|
+
"path_visible": false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "credentials",
|
|
28
|
+
"text": "Reads credentials, such as tokens, keys, `~/.ssh`, `~/.npmrc` or credential environment variables.",
|
|
29
|
+
"path_visible": false
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "dependency",
|
|
33
|
+
"text": "Adds or changes a dependency or a lockfile entry. A lockfile-only bump is still a hit; its source does not lower the tier.",
|
|
34
|
+
"path_visible": true,
|
|
35
|
+
"paths": [
|
|
36
|
+
"**/bun.lock",
|
|
37
|
+
"**/bun.lockb",
|
|
38
|
+
"**/package-lock.json",
|
|
39
|
+
"**/npm-shrinkwrap.json",
|
|
40
|
+
"**/yarn.lock",
|
|
41
|
+
"**/pnpm-lock.yaml",
|
|
42
|
+
"**/Cargo.lock",
|
|
43
|
+
"**/go.sum",
|
|
44
|
+
"**/poetry.lock",
|
|
45
|
+
"**/uv.lock",
|
|
46
|
+
"**/Pipfile.lock",
|
|
47
|
+
"**/Gemfile.lock",
|
|
48
|
+
"**/composer.lock"
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "opaque-content",
|
|
53
|
+
"text": "Adds a binary, or an encoded or opaque blob, such as base64, long hex, minified or otherwise unreadable content.",
|
|
54
|
+
"path_visible": false
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|