@lannguyensi/harness 0.63.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +90 -0
- package/README.md +46 -42
- package/dist/cli/add/index.js +17 -21
- package/dist/cli/add/index.js.map +1 -1
- package/dist/cli/adopt/derive.d.ts +2 -2
- package/dist/cli/adopt/derive.js +2 -19
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.d.ts +1 -1
- package/dist/cli/adopt/index.js +1 -12
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.d.ts +20 -35
- package/dist/cli/apply/apply.js +61 -136
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.js +10 -58
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/apply/generate-memory-index.js +1 -2
- package/dist/cli/apply/generate-memory-index.js.map +1 -1
- package/dist/cli/apply/generate-opencode-config.d.ts +2 -10
- package/dist/cli/apply/generate-opencode-config.js +74 -113
- package/dist/cli/apply/generate-opencode-config.js.map +1 -1
- package/dist/cli/apply/generate-settings.d.ts +11 -64
- package/dist/cli/apply/generate-settings.js +27 -132
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/apply/index.d.ts +1 -1
- package/dist/cli/apply/index.js +1 -1
- package/dist/cli/apply/index.js.map +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +153 -1
- package/dist/cli/apply/install-codex-config.js +445 -70
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/apply/next-steps.d.ts +7 -0
- package/dist/cli/apply/next-steps.js +13 -1
- package/dist/cli/apply/next-steps.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +0 -23
- package/dist/cli/bounded-stdin.js +2 -49
- package/dist/cli/bounded-stdin.js.map +1 -1
- package/dist/cli/describe.d.ts +1 -1
- package/dist/cli/describe.js +0 -3
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/diff/engine.d.ts +0 -11
- package/dist/cli/diff/engine.js +1 -17
- package/dist/cli/diff/engine.js.map +1 -1
- package/dist/cli/diff/index.js +14 -25
- package/dist/cli/diff/index.js.map +1 -1
- package/dist/cli/doctor/claude-mcp.d.ts +4 -19
- package/dist/cli/doctor/claude-mcp.js +11 -22
- package/dist/cli/doctor/claude-mcp.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +12 -14
- package/dist/cli/doctor/codex.js +31 -144
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +23 -338
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/hook-liveness.d.ts +56 -0
- package/dist/cli/doctor/hook-liveness.js +455 -0
- package/dist/cli/doctor/hook-liveness.js.map +1 -0
- package/dist/cli/doctor/index.d.ts +13 -87
- package/dist/cli/doctor/index.js +57 -705
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/opencode.d.ts +2 -1
- package/dist/cli/doctor/opencode.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +21 -378
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/drain-stdio.d.ts +31 -0
- package/dist/cli/drain-stdio.js +76 -0
- package/dist/cli/drain-stdio.js.map +1 -0
- package/dist/cli/export.d.ts +3 -1
- package/dist/cli/export.js +7 -16
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/gate/codex-disable.d.ts +29 -0
- package/dist/cli/gate/codex-disable.js +195 -0
- package/dist/cli/gate/codex-disable.js.map +1 -0
- package/dist/cli/gate/codex-enable.d.ts +41 -0
- package/dist/cli/gate/codex-enable.js +127 -0
- package/dist/cli/gate/codex-enable.js.map +1 -0
- package/dist/cli/gate/codex-snapshot.d.ts +208 -0
- package/dist/cli/gate/codex-snapshot.js +402 -0
- package/dist/cli/gate/codex-snapshot.js.map +1 -0
- package/dist/cli/gate/disable.d.ts +9 -0
- package/dist/cli/gate/disable.js +263 -28
- package/dist/cli/gate/disable.js.map +1 -1
- package/dist/cli/gate/enable.d.ts +26 -6
- package/dist/cli/gate/enable.js +152 -80
- package/dist/cli/gate/enable.js.map +1 -1
- package/dist/cli/gate/link-chain.d.ts +53 -0
- package/dist/cli/gate/link-chain.js +122 -0
- package/dist/cli/gate/link-chain.js.map +1 -0
- package/dist/cli/gate/snapshot.d.ts +289 -12
- package/dist/cli/gate/snapshot.js +481 -22
- package/dist/cli/gate/snapshot.js.map +1 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.js +15 -2607
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.d.ts +3 -6
- package/dist/cli/init/composer.js +6 -370
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/dependencies.d.ts +1 -2
- package/dist/cli/init/dependencies.js +4 -80
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/detect.js +5 -4
- package/dist/cli/init/detect.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +1 -23
- package/dist/cli/init/interactive.js +33 -247
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +51 -243
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +2 -37
- package/dist/cli/init/templates.js +25 -1237
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/list.d.ts +1 -1
- package/dist/cli/list.js +1 -38
- package/dist/cli/list.js.map +1 -1
- package/dist/cli/loader.d.ts +15 -1
- package/dist/cli/loader.js +56 -39
- package/dist/cli/loader.js.map +1 -1
- package/dist/cli/main.js +7 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migrate-home/index.js +2 -2
- package/dist/cli/migrate-home/index.js.map +1 -1
- package/dist/cli/pack/add.js +1 -1
- package/dist/cli/pack/add.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +5 -164
- package/dist/cli/pack/hook-bootstrap.js +15 -291
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +28 -21
- package/dist/cli/pack/hook-branch-protection.js +365 -340
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/index.d.ts +0 -1
- package/dist/cli/pack/index.js +0 -1
- package/dist/cli/pack/index.js.map +1 -1
- package/dist/cli/pack/list.js +1 -6
- package/dist/cli/pack/list.js.map +1 -1
- package/dist/cli/pack/mutate.d.ts +7 -9
- package/dist/cli/pack/mutate.js +6 -9
- package/dist/cli/pack/mutate.js.map +1 -1
- package/dist/cli/pack/reseed.d.ts +2 -2
- package/dist/cli/pack/reseed.js +16 -22
- package/dist/cli/pack/reseed.js.map +1 -1
- package/dist/cli/register-gate-group.d.ts +5 -0
- package/dist/cli/register-gate-group.js +348 -0
- package/dist/cli/register-gate-group.js.map +1 -0
- package/dist/cli/register-inspect-group.d.ts +6 -0
- package/dist/cli/register-inspect-group.js +189 -0
- package/dist/cli/register-inspect-group.js.map +1 -0
- package/dist/cli/register-operator-lifecycle.d.ts +5 -0
- package/dist/cli/register-operator-lifecycle.js +20 -0
- package/dist/cli/register-operator-lifecycle.js.map +1 -0
- package/dist/cli/register-pack-group.d.ts +5 -0
- package/dist/cli/register-pack-group.js +134 -0
- package/dist/cli/register-pack-group.js.map +1 -0
- package/dist/cli/register-setup-group.d.ts +5 -0
- package/dist/cli/register-setup-group.js +495 -0
- package/dist/cli/register-setup-group.js.map +1 -0
- package/dist/cli/remove/index.d.ts +0 -14
- package/dist/cli/remove/index.js +2 -115
- package/dist/cli/remove/index.js.map +1 -1
- package/dist/cli/remove/mutate.d.ts +0 -2
- package/dist/cli/remove/mutate.js +1 -19
- package/dist/cli/remove/mutate.js.map +1 -1
- package/dist/cli/remove/register.d.ts +5 -0
- package/dist/cli/remove/register.js +25 -0
- package/dist/cli/remove/register.js.map +1 -0
- package/dist/cli/shell-quote.d.ts +7 -0
- package/dist/cli/shell-quote.js +17 -0
- package/dist/cli/shell-quote.js.map +1 -0
- package/dist/cli/uninstall/index.d.ts +4 -2
- package/dist/cli/uninstall/index.js +15 -7
- package/dist/cli/uninstall/index.js.map +1 -1
- package/dist/cli/uninstall/register.d.ts +5 -0
- package/dist/cli/uninstall/register.js +171 -0
- package/dist/cli/uninstall/register.js.map +1 -0
- package/dist/cli/uninstall/snapshot.d.ts +15 -0
- package/dist/cli/uninstall/snapshot.js +38 -0
- package/dist/cli/uninstall/snapshot.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +0 -77
- package/dist/cli/validate/checks.js +3 -1049
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/cli/validate/index.js +19 -15
- package/dist/cli/validate/index.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/io/claude-mcp.d.ts +1 -1
- package/dist/io/claude-mcp.js +27 -14
- package/dist/io/claude-mcp.js.map +1 -1
- package/dist/io/harness-lock.js +2 -2
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/io/lock.d.ts +0 -26
- package/dist/io/lock.js +10 -27
- package/dist/io/lock.js.map +1 -1
- package/dist/io/merge-settings.js +6 -4
- package/dist/io/merge-settings.js.map +1 -1
- package/dist/io/project-name.d.ts +22 -39
- package/dist/io/project-name.js +25 -42
- package/dist/io/project-name.js.map +1 -1
- package/dist/io/read-regular-file.d.ts +103 -40
- package/dist/io/read-regular-file.js +196 -35
- package/dist/io/read-regular-file.js.map +1 -1
- package/dist/io/restart-hints.js +3 -6
- package/dist/io/restart-hints.js.map +1 -1
- package/dist/io/version-compare.d.ts +1 -3
- package/dist/io/version-compare.js +1 -3
- package/dist/io/version-compare.js.map +1 -1
- package/dist/io/write-regular-file.d.ts +30 -0
- package/dist/io/write-regular-file.js +85 -0
- package/dist/io/write-regular-file.js.map +1 -0
- package/dist/overrides/index.d.ts +1 -0
- package/dist/overrides/index.js +1 -0
- package/dist/overrides/index.js.map +1 -1
- package/dist/overrides/merge-layers.d.ts +43 -0
- package/dist/overrides/merge-layers.js +76 -0
- package/dist/overrides/merge-layers.js.map +1 -0
- package/dist/overrides/merge.d.ts +16 -0
- package/dist/overrides/merge.js +21 -8
- package/dist/overrides/merge.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +4 -69
- package/dist/policy-packs/builtin/branch-protection-runtime.js +12 -84
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.d.ts +7 -30
- package/dist/policy-packs/builtin/branch-protection.js +56 -89
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/config-check.d.ts +7 -5
- package/dist/policy-packs/config-check.js +2 -2
- package/dist/policy-packs/config-check.js.map +1 -1
- package/dist/policy-packs/expand.d.ts +1 -3
- package/dist/policy-packs/expand.js +5 -42
- package/dist/policy-packs/expand.js.map +1 -1
- package/dist/policy-packs/index.d.ts +3 -3
- package/dist/policy-packs/index.js +2 -2
- package/dist/policy-packs/index.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +9 -38
- package/dist/policy-packs/registry.js +5 -65
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/runtime.d.ts +0 -4
- package/dist/policy-packs/runtime.js +9 -22
- package/dist/policy-packs/runtime.js.map +1 -1
- package/dist/policy-packs/types.d.ts +0 -19
- package/dist/policy-packs/ux-compare.d.ts +1 -11
- package/dist/policy-packs/ux-compare.js +6 -42
- package/dist/policy-packs/ux-compare.js.map +1 -1
- package/dist/policy-packs/ux-drift-check.d.ts +5 -5
- package/dist/policy-packs/ux-drift-check.js +17 -22
- package/dist/policy-packs/ux-drift-check.js.map +1 -1
- package/dist/policy-packs/version-check.d.ts +5 -26
- package/dist/policy-packs/version-check.js +19 -74
- package/dist/policy-packs/version-check.js.map +1 -1
- package/dist/probes/memory.d.ts +1 -1
- package/dist/probes/memory.js +1 -1
- package/dist/probes/memory.js.map +1 -1
- package/dist/runtime/agent-facing.d.ts +9 -0
- package/dist/runtime/agent-facing.js +28 -14
- package/dist/runtime/agent-facing.js.map +1 -1
- package/dist/runtime/bounded-text.d.ts +15 -0
- package/dist/runtime/bounded-text.js +27 -0
- package/dist/runtime/bounded-text.js.map +1 -0
- package/dist/runtime/git-branch.d.ts +125 -0
- package/dist/runtime/git-branch.js +381 -0
- package/dist/runtime/git-branch.js.map +1 -0
- package/dist/runtime/hermetic-spawn-guard.d.ts +2 -2
- package/dist/runtime/hermetic-spawn-guard.js +24 -34
- package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
- package/dist/runtime/home-dir.js +3 -2
- package/dist/runtime/home-dir.js.map +1 -1
- package/dist/runtime/tool-name-aliases.d.ts +0 -6
- package/dist/runtime/tool-name-aliases.js +5 -18
- package/dist/runtime/tool-name-aliases.js.map +1 -1
- package/dist/schema/grounding.d.ts +7 -54
- package/dist/schema/grounding.js +10 -12
- package/dist/schema/grounding.js.map +1 -1
- package/dist/schema/hooks.d.ts +39 -136
- package/dist/schema/hooks.js +3 -6
- package/dist/schema/hooks.js.map +1 -1
- package/dist/schema/index.d.ts +114 -3828
- package/dist/schema/index.js +41 -80
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/memory.d.ts +54 -131
- package/dist/schema/memory.js +2 -2
- package/dist/schema/memory.js.map +1 -1
- package/dist/schema/policy-packs.d.ts +3 -45
- package/dist/schema/policy-packs.js +7 -13
- package/dist/schema/policy-packs.js.map +1 -1
- package/dist/schema/policy-ux.d.ts +7 -0
- package/dist/schema/policy-ux.js +18 -0
- package/dist/schema/policy-ux.js.map +1 -0
- package/dist/schema/removed-keys.d.ts +185 -0
- package/dist/schema/removed-keys.js +531 -0
- package/dist/schema/removed-keys.js.map +1 -0
- package/dist/schema/tools.d.ts +30 -268
- package/dist/schema/tools.js +4 -4
- package/dist/schema/tools.js.map +1 -1
- package/package.json +5 -16
- package/dist/cli/approve/branch-protection.d.ts +0 -69
- package/dist/cli/approve/branch-protection.js +0 -144
- package/dist/cli/approve/branch-protection.js.map +0 -1
- package/dist/cli/approve/risk.d.ts +0 -112
- package/dist/cli/approve/risk.js +0 -197
- package/dist/cli/approve/risk.js.map +0 -1
- package/dist/cli/approve/stdin-report.d.ts +0 -57
- package/dist/cli/approve/stdin-report.js +0 -145
- package/dist/cli/approve/stdin-report.js.map +0 -1
- package/dist/cli/approve/understanding.d.ts +0 -410
- package/dist/cli/approve/understanding.js +0 -996
- package/dist/cli/approve/understanding.js.map +0 -1
- package/dist/cli/audit.d.ts +0 -80
- package/dist/cli/audit.js +0 -252
- package/dist/cli/audit.js.map +0 -1
- package/dist/cli/delegate/index.d.ts +0 -76
- package/dist/cli/delegate/index.js +0 -443
- package/dist/cli/delegate/index.js.map +0 -1
- package/dist/cli/doctor/auto-approve-mode.d.ts +0 -37
- package/dist/cli/doctor/auto-approve-mode.js +0 -80
- package/dist/cli/doctor/auto-approve-mode.js.map +0 -1
- package/dist/cli/doctor/bypass-without-auto-approve.d.ts +0 -38
- package/dist/cli/doctor/bypass-without-auto-approve.js +0 -95
- package/dist/cli/doctor/bypass-without-auto-approve.js.map +0 -1
- package/dist/cli/doctor/codex-config-drift.d.ts +0 -28
- package/dist/cli/doctor/codex-config-drift.js +0 -240
- package/dist/cli/doctor/codex-config-drift.js.map +0 -1
- package/dist/cli/doctor/rogue-ledger.d.ts +0 -53
- package/dist/cli/doctor/rogue-ledger.js +0 -153
- package/dist/cli/doctor/rogue-ledger.js.map +0 -1
- package/dist/cli/doctor/session-start-preflight-setup-version.d.ts +0 -83
- package/dist/cli/doctor/session-start-preflight-setup-version.js +0 -114
- package/dist/cli/doctor/session-start-preflight-setup-version.js.map +0 -1
- package/dist/cli/doctor/settings-drift.d.ts +0 -25
- package/dist/cli/doctor/settings-drift.js +0 -213
- package/dist/cli/doctor/settings-drift.js.map +0 -1
- package/dist/cli/doctor/toolchain-parity.d.ts +0 -63
- package/dist/cli/doctor/toolchain-parity.js +0 -154
- package/dist/cli/doctor/toolchain-parity.js.map +0 -1
- package/dist/cli/doctor/ug-auto-approvals.d.ts +0 -40
- package/dist/cli/doctor/ug-auto-approvals.js +0 -91
- package/dist/cli/doctor/ug-auto-approvals.js.map +0 -1
- package/dist/cli/doctor/ug-delegations.d.ts +0 -26
- package/dist/cli/doctor/ug-delegations.js +0 -121
- package/dist/cli/doctor/ug-delegations.js.map +0 -1
- package/dist/cli/doctor/ug-inflight.d.ts +0 -35
- package/dist/cli/doctor/ug-inflight.js +0 -57
- package/dist/cli/doctor/ug-inflight.js.map +0 -1
- package/dist/cli/doctor/understanding-mode-env.d.ts +0 -51
- package/dist/cli/doctor/understanding-mode-env.js +0 -98
- package/dist/cli/doctor/understanding-mode-env.js.map +0 -1
- package/dist/cli/dry-run.d.ts +0 -46
- package/dist/cli/dry-run.js +0 -250
- package/dist/cli/dry-run.js.map +0 -1
- package/dist/cli/event-input.d.ts +0 -28
- package/dist/cli/event-input.js +0 -73
- package/dist/cli/event-input.js.map +0 -1
- package/dist/cli/explain-action.d.ts +0 -20
- package/dist/cli/explain-action.js +0 -27
- package/dist/cli/explain-action.js.map +0 -1
- package/dist/cli/explain-policy.d.ts +0 -135
- package/dist/cli/explain-policy.js +0 -266
- package/dist/cli/explain-policy.js.map +0 -1
- package/dist/cli/explain.d.ts +0 -31
- package/dist/cli/explain.js +0 -159
- package/dist/cli/explain.js.map +0 -1
- package/dist/cli/gc/index.d.ts +0 -63
- package/dist/cli/gc/index.js +0 -566
- package/dist/cli/gc/index.js.map +0 -1
- package/dist/cli/pack/approve-escape.d.ts +0 -19
- package/dist/cli/pack/approve-escape.js +0 -190
- package/dist/cli/pack/approve-escape.js.map +0 -1
- package/dist/cli/pack/auto-approve-path.d.ts +0 -146
- package/dist/cli/pack/auto-approve-path.js +0 -462
- package/dist/cli/pack/auto-approve-path.js.map +0 -1
- package/dist/cli/pack/hook-codex-post-tool-use.d.ts +0 -25
- package/dist/cli/pack/hook-codex-post-tool-use.js +0 -160
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +0 -48
- package/dist/cli/pack/hook-codex-pre-tool-use.js +0 -474
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-codex-stop.d.ts +0 -35
- package/dist/cli/pack/hook-codex-stop.js +0 -329
- package/dist/cli/pack/hook-codex-stop.js.map +0 -1
- package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +0 -24
- package/dist/cli/pack/hook-codex-user-prompt-submit.js +0 -93
- package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate-record.d.ts +0 -37
- package/dist/cli/pack/hook-post-merge-gate-record.js +0 -190
- package/dist/cli/pack/hook-post-merge-gate-record.js.map +0 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +0 -34
- package/dist/cli/pack/hook-post-merge-gate.js +0 -277
- package/dist/cli/pack/hook-post-merge-gate.js.map +0 -1
- package/dist/cli/pack/hook-post-tool-use.d.ts +0 -45
- package/dist/cli/pack/hook-post-tool-use.js +0 -137
- package/dist/cli/pack/hook-post-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +0 -92
- package/dist/cli/pack/hook-pre-tool-use.js +0 -1328
- package/dist/cli/pack/hook-pre-tool-use.js.map +0 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +0 -63
- package/dist/cli/pack/hook-runtime-reality.js +0 -210
- package/dist/cli/pack/hook-runtime-reality.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +0 -32
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +0 -337
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +0 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +0 -157
- package/dist/cli/pack/hook-solution-acceptance.js +0 -530
- package/dist/cli/pack/hook-solution-acceptance.js.map +0 -1
- package/dist/cli/pack/hook-stay-in-scope.d.ts +0 -37
- package/dist/cli/pack/hook-stay-in-scope.js +0 -128
- package/dist/cli/pack/hook-stay-in-scope.js.map +0 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +0 -23
- package/dist/cli/pack/hook-subagent-start.js +0 -88
- package/dist/cli/pack/hook-subagent-start.js.map +0 -1
- package/dist/cli/pack/hook-subagent-stop.d.ts +0 -19
- package/dist/cli/pack/hook-subagent-stop.js +0 -41
- package/dist/cli/pack/hook-subagent-stop.js.map +0 -1
- package/dist/cli/pack/hook-track-active-claim.d.ts +0 -27
- package/dist/cli/pack/hook-track-active-claim.js +0 -275
- package/dist/cli/pack/hook-track-active-claim.js.map +0 -1
- package/dist/cli/pack/transcript-report-scan.d.ts +0 -71
- package/dist/cli/pack/transcript-report-scan.js +0 -359
- package/dist/cli/pack/transcript-report-scan.js.map +0 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +0 -26
- package/dist/cli/pack/understanding-report-schema-hint.js +0 -120
- package/dist/cli/pack/understanding-report-schema-hint.js.map +0 -1
- package/dist/cli/pack/upgrade.d.ts +0 -32
- package/dist/cli/pack/upgrade.js +0 -273
- package/dist/cli/pack/upgrade.js.map +0 -1
- package/dist/cli/pause/index.d.ts +0 -113
- package/dist/cli/pause/index.js +0 -251
- package/dist/cli/pause/index.js.map +0 -1
- package/dist/cli/pause-check.d.ts +0 -22
- package/dist/cli/pause-check.js +0 -54
- package/dist/cli/pause-check.js.map +0 -1
- package/dist/cli/policy/intercept.d.ts +0 -233
- package/dist/cli/policy/intercept.js +0 -1020
- package/dist/cli/policy/intercept.js.map +0 -1
- package/dist/cli/policy/risk-envelope-enrichment.d.ts +0 -40
- package/dist/cli/policy/risk-envelope-enrichment.js +0 -108
- package/dist/cli/policy/risk-envelope-enrichment.js.map +0 -1
- package/dist/cli/record/index.d.ts +0 -81
- package/dist/cli/record/index.js +0 -348
- package/dist/cli/record/index.js.map +0 -1
- package/dist/cli/resolve-env.d.ts +0 -32
- package/dist/cli/resolve-env.js +0 -47
- package/dist/cli/resolve-env.js.map +0 -1
- package/dist/cli/session-export/index.d.ts +0 -46
- package/dist/cli/session-export/index.js +0 -169
- package/dist/cli/session-export/index.js.map +0 -1
- package/dist/cli/session-export/redact.d.ts +0 -22
- package/dist/cli/session-export/redact.js +0 -47
- package/dist/cli/session-export/redact.js.map +0 -1
- package/dist/cli/session-export/transcript.d.ts +0 -24
- package/dist/cli/session-export/transcript.js +0 -164
- package/dist/cli/session-export/transcript.js.map +0 -1
- package/dist/cli/session-start/branch-check.d.ts +0 -18
- package/dist/cli/session-start/branch-check.js +0 -140
- package/dist/cli/session-start/branch-check.js.map +0 -1
- package/dist/cli/session-start/index.d.ts +0 -121
- package/dist/cli/session-start/index.js +0 -591
- package/dist/cli/session-start/index.js.map +0 -1
- package/dist/cli/session-start/shared-options.d.ts +0 -103
- package/dist/cli/session-start/shared-options.js +0 -107
- package/dist/cli/session-start/shared-options.js.map +0 -1
- package/dist/cli/session-start/stale-base-check.d.ts +0 -46
- package/dist/cli/session-start/stale-base-check.js +0 -352
- package/dist/cli/session-start/stale-base-check.js.map +0 -1
- package/dist/cli/session-start/toolchain-parity.d.ts +0 -267
- package/dist/cli/session-start/toolchain-parity.js +0 -797
- package/dist/cli/session-start/toolchain-parity.js.map +0 -1
- package/dist/cli/smoke/assertions.d.ts +0 -46
- package/dist/cli/smoke/assertions.js +0 -170
- package/dist/cli/smoke/assertions.js.map +0 -1
- package/dist/cli/smoke/index.d.ts +0 -76
- package/dist/cli/smoke/index.js +0 -245
- package/dist/cli/smoke/index.js.map +0 -1
- package/dist/cli/smoke/runner.d.ts +0 -55
- package/dist/cli/smoke/runner.js +0 -134
- package/dist/cli/smoke/runner.js.map +0 -1
- package/dist/cli/smoke/stream-parser.d.ts +0 -65
- package/dist/cli/smoke/stream-parser.js +0 -115
- package/dist/cli/smoke/stream-parser.js.map +0 -1
- package/dist/cli/test-risk.d.ts +0 -26
- package/dist/cli/test-risk.js +0 -34
- package/dist/cli/test-risk.js.map +0 -1
- package/dist/io/display-path.d.ts +0 -11
- package/dist/io/display-path.js +0 -29
- package/dist/io/display-path.js.map +0 -1
- package/dist/io/duration.d.ts +0 -5
- package/dist/io/duration.js +0 -50
- package/dist/io/duration.js.map +0 -1
- package/dist/io/extract.d.ts +0 -79
- package/dist/io/extract.js +0 -226
- package/dist/io/extract.js.map +0 -1
- package/dist/io/ledger-record.d.ts +0 -83
- package/dist/io/ledger-record.js +0 -301
- package/dist/io/ledger-record.js.map +0 -1
- package/dist/io/read-json-dir-entries.d.ts +0 -36
- package/dist/io/read-json-dir-entries.js +0 -48
- package/dist/io/read-json-dir-entries.js.map +0 -1
- package/dist/io/safe-json-parse.d.ts +0 -5
- package/dist/io/safe-json-parse.js +0 -21
- package/dist/io/safe-json-parse.js.map +0 -1
- package/dist/policies/index.d.ts +0 -5
- package/dist/policies/index.js +0 -6
- package/dist/policies/index.js.map +0 -1
- package/dist/policies/ledger-client.d.ts +0 -113
- package/dist/policies/ledger-client.js +0 -500
- package/dist/policies/ledger-client.js.map +0 -1
- package/dist/policies/producers.d.ts +0 -12
- package/dist/policies/producers.js +0 -61
- package/dist/policies/producers.js.map +0 -1
- package/dist/policies/requires.d.ts +0 -75
- package/dist/policies/requires.js +0 -240
- package/dist/policies/requires.js.map +0 -1
- package/dist/policies/timestamp.d.ts +0 -14
- package/dist/policies/timestamp.js +0 -36
- package/dist/policies/timestamp.js.map +0 -1
- package/dist/policy-packs/builtin/permission-profiles.d.ts +0 -11
- package/dist/policy-packs/builtin/permission-profiles.js +0 -74
- package/dist/policy-packs/builtin/permission-profiles.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +0 -286
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +0 -397
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/post-merge-gate.d.ts +0 -56
- package/dist/policy-packs/builtin/post-merge-gate.js +0 -347
- package/dist/policy-packs/builtin/post-merge-gate.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.d.ts +0 -50
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js +0 -151
- package/dist/policy-packs/builtin/solution-acceptance-reconnect.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +0 -323
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +0 -672
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/solution-acceptance.d.ts +0 -45
- package/dist/policy-packs/builtin/solution-acceptance.js +0 -226
- package/dist/policy-packs/builtin/solution-acceptance.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +0 -94
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.d.ts +0 -35
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js +0 -86
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve-default.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.d.ts +0 -210
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js +0 -361
- package/dist/policy-packs/builtin/understanding-before-execution/auto-approve.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.d.ts +0 -304
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js +0 -734
- package/dist/policy-packs/builtin/understanding-before-execution/delegation-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +0 -36
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +0 -73
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +0 -19
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +0 -83
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.d.ts +0 -135
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js +0 -618
- package/dist/policy-packs/builtin/understanding-before-execution/inflight-records.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +0 -25
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +0 -56
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +0 -20
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +0 -93
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +0 -126
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +0 -245
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.d.ts +0 -29
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js +0 -82
- package/dist/policy-packs/builtin/understanding-before-execution/measured-permission-modes.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.d.ts +0 -71
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js +0 -175
- package/dist/policy-packs/builtin/understanding-before-execution/permission-mode-observations.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +0 -620
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +0 -1047
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +0 -128
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +0 -213
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.d.ts +0 -129
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js +0 -166
- package/dist/policy-packs/builtin/understanding-before-execution/stay-in-scope-config.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +0 -164
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +0 -275
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +0 -10
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +0 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +0 -526
- package/dist/policy-packs/builtin/understanding-before-execution.js +0 -1074
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +0 -1
- package/dist/policy-packs/permission-translator.d.ts +0 -9
- package/dist/policy-packs/permission-translator.js +0 -76
- package/dist/policy-packs/permission-translator.js.map +0 -1
- package/dist/runtime/action-envelope.d.ts +0 -64
- package/dist/runtime/action-envelope.js +0 -46
- package/dist/runtime/action-envelope.js.map +0 -1
- package/dist/runtime/approval-signing.d.ts +0 -111
- package/dist/runtime/approval-signing.js +0 -384
- package/dist/runtime/approval-signing.js.map +0 -1
- package/dist/runtime/bash-match-facts.d.ts +0 -60
- package/dist/runtime/bash-match-facts.js +0 -196
- package/dist/runtime/bash-match-facts.js.map +0 -1
- package/dist/runtime/bash-match-registry.d.ts +0 -112
- package/dist/runtime/bash-match-registry.js +0 -406
- package/dist/runtime/bash-match-registry.js.map +0 -1
- package/dist/runtime/bash-prefix-parse.d.ts +0 -31
- package/dist/runtime/bash-prefix-parse.js +0 -576
- package/dist/runtime/bash-prefix-parse.js.map +0 -1
- package/dist/runtime/command-normalize.d.ts +0 -658
- package/dist/runtime/command-normalize.js +0 -2410
- package/dist/runtime/command-normalize.js.map +0 -1
- package/dist/runtime/deletion-target-resolve.d.ts +0 -28
- package/dist/runtime/deletion-target-resolve.js +0 -1078
- package/dist/runtime/deletion-target-resolve.js.map +0 -1
- package/dist/runtime/destructive-shell-floor.d.ts +0 -19
- package/dist/runtime/destructive-shell-floor.js +0 -611
- package/dist/runtime/destructive-shell-floor.js.map +0 -1
- package/dist/runtime/environment-resolver.d.ts +0 -36
- package/dist/runtime/environment-resolver.js +0 -138
- package/dist/runtime/environment-resolver.js.map +0 -1
- package/dist/runtime/git-context.d.ts +0 -201
- package/dist/runtime/git-context.js +0 -422
- package/dist/runtime/git-context.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -12
- package/dist/runtime/index.js +0 -13
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/intercept.d.ts +0 -494
- package/dist/runtime/intercept.js +0 -1313
- package/dist/runtime/intercept.js.map +0 -1
- package/dist/runtime/kube-context.d.ts +0 -16
- package/dist/runtime/kube-context.js +0 -63
- package/dist/runtime/kube-context.js.map +0 -1
- package/dist/runtime/kubectl-target-parse.d.ts +0 -31
- package/dist/runtime/kubectl-target-parse.js +0 -249
- package/dist/runtime/kubectl-target-parse.js.map +0 -1
- package/dist/runtime/ledger-add.d.ts +0 -16
- package/dist/runtime/ledger-add.js +0 -150
- package/dist/runtime/ledger-add.js.map +0 -1
- package/dist/runtime/ledger-writer.d.ts +0 -27
- package/dist/runtime/ledger-writer.js +0 -46
- package/dist/runtime/ledger-writer.js.map +0 -1
- package/dist/runtime/pause-sentinel.d.ts +0 -60
- package/dist/runtime/pause-sentinel.js +0 -156
- package/dist/runtime/pause-sentinel.js.map +0 -1
- package/dist/runtime/pending-approval.d.ts +0 -23
- package/dist/runtime/pending-approval.js +0 -67
- package/dist/runtime/pending-approval.js.map +0 -1
- package/dist/runtime/read-only-bash.d.ts +0 -141
- package/dist/runtime/read-only-bash.js +0 -2204
- package/dist/runtime/read-only-bash.js.map +0 -1
- package/dist/runtime/recovery-git-commit.d.ts +0 -22
- package/dist/runtime/recovery-git-commit.js +0 -284
- package/dist/runtime/recovery-git-commit.js.map +0 -1
- package/dist/runtime/reject-malformed-session-id.d.ts +0 -8
- package/dist/runtime/reject-malformed-session-id.js +0 -16
- package/dist/runtime/reject-malformed-session-id.js.map +0 -1
- package/dist/runtime/risk-classifier.d.ts +0 -38
- package/dist/runtime/risk-classifier.js +0 -311
- package/dist/runtime/risk-classifier.js.map +0 -1
- package/dist/runtime/session-id.d.ts +0 -113
- package/dist/runtime/session-id.js +0 -193
- package/dist/runtime/session-id.js.map +0 -1
- package/dist/runtime/shell-word.d.ts +0 -62
- package/dist/runtime/shell-word.js +0 -410
- package/dist/runtime/shell-word.js.map +0 -1
- package/dist/runtime/task-providers/agent-tasks.d.ts +0 -103
- package/dist/runtime/task-providers/agent-tasks.js +0 -245
- package/dist/runtime/task-providers/agent-tasks.js.map +0 -1
- package/dist/runtime/when-eval.d.ts +0 -62
- package/dist/runtime/when-eval.js +0 -212
- package/dist/runtime/when-eval.js.map +0 -1
- package/dist/runtime/workflow-policies.d.ts +0 -207
- package/dist/runtime/workflow-policies.js +0 -596
- package/dist/runtime/workflow-policies.js.map +0 -1
- package/dist/schema/audit.d.ts +0 -71
- package/dist/schema/audit.js +0 -32
- package/dist/schema/audit.js.map +0 -1
- package/dist/schema/doctor.d.ts +0 -25
- package/dist/schema/doctor.js +0 -23
- package/dist/schema/doctor.js.map +0 -1
- package/dist/schema/environments.d.ts +0 -215
- package/dist/schema/environments.js +0 -101
- package/dist/schema/environments.js.map +0 -1
- package/dist/schema/extract.d.ts +0 -9
- package/dist/schema/extract.js +0 -86
- package/dist/schema/extract.js.map +0 -1
- package/dist/schema/permission-profiles.d.ts +0 -2292
- package/dist/schema/permission-profiles.js +0 -60
- package/dist/schema/permission-profiles.js.map +0 -1
- package/dist/schema/policies.d.ts +0 -974
- package/dist/schema/policies.js +0 -298
- package/dist/schema/policies.js.map +0 -1
- package/dist/schema/requires.d.ts +0 -131
- package/dist/schema/requires.js +0 -88
- package/dist/schema/requires.js.map +0 -1
- package/dist/schema/risk.d.ts +0 -144
- package/dist/schema/risk.js +0 -194
- package/dist/schema/risk.js.map +0 -1
- package/dist/schema/session-start-preflight.d.ts +0 -10
- package/dist/schema/session-start-preflight.js +0 -106
- package/dist/schema/session-start-preflight.js.map +0 -1
- package/dist/schema/stale-base-check.d.ts +0 -18
- package/dist/schema/stale-base-check.js +0 -37
- package/dist/schema/stale-base-check.js.map +0 -1
- package/dist/schema/toolchain-parity.d.ts +0 -21
- package/dist/schema/toolchain-parity.js +0 -48
- package/dist/schema/toolchain-parity.js.map +0 -1
- package/dist/schema/workflows.d.ts +0 -519
- package/dist/schema/workflows.js +0 -81
- package/dist/schema/workflows.js.map +0 -1
- package/scripts/runtime-reality-docker-probe.mjs +0 -71
|
@@ -1,347 +0,0 @@
|
|
|
1
|
-
// Builtin Policy Pack: `post-merge-gate`.
|
|
2
|
-
//
|
|
3
|
-
// Catches the "kept working on a branch after it was already merged"
|
|
4
|
-
// pattern: an agent (or operator) merges a PR via `gh pr merge`, then
|
|
5
|
-
// keeps committing / pushing / rebasing on the SAME local checkout
|
|
6
|
-
// without switching back to the default branch first — silently
|
|
7
|
-
// building on top of a commit that is already integrated, which either
|
|
8
|
-
// produces a confusing duplicate-merge PR or loses the new work off the
|
|
9
|
-
// side of a branch nobody looks at again.
|
|
10
|
-
//
|
|
11
|
-
// Mechanics, mirroring `branch-protection` (see that pack's header for
|
|
12
|
-
// the identical two-hook shape):
|
|
13
|
-
//
|
|
14
|
-
// 1. PostToolUse producer (`harness pack hook post-merge-gate-record`)
|
|
15
|
-
// watches every Bash call and, ONLY when the command matched
|
|
16
|
-
// `gh pr merge` AND the merge is CONFIRMED, writes a
|
|
17
|
-
// `post-merge-gate:merged:<repo>:<branch>:<sha>` fact (plus PR
|
|
18
|
-
// number and timestamp, audit-only) to the evidence ledger — `sha`
|
|
19
|
-
// being the LOCAL branch tip observed right after the merge, which
|
|
20
|
-
// is the exact commit that got merged (`gh pr merge` merges on the
|
|
21
|
-
// remote side; it does not move the local tip). Confirmation is
|
|
22
|
-
// DUAL-CONTRACT (payload-reality follow-up, 2026-07): a `tool_output.
|
|
23
|
-
// exit_code === 0` (Contract A) is NOT reliably present — live
|
|
24
|
-
// verification against a real Claude Code 2.1.218 install found the
|
|
25
|
-
// PostToolUse Bash payload carries no `tool_output` / exit-code field
|
|
26
|
-
// at all, only `tool_response` (`{ stdout, stderr, interrupted,
|
|
27
|
-
// isImage, noOutputExpected }`) — so a `gh pr merge` success sentence
|
|
28
|
-
// match against `tool_response` (Contract B) is the fallback that
|
|
29
|
-
// makes the producer fire at all on that install. See
|
|
30
|
-
// `resolveMergeConfirmation` in post-merge-gate-runtime.ts for the
|
|
31
|
-
// exact dual-contract / "Contract A wins" ordering. Payload reads are
|
|
32
|
-
// defensive throughout: an unexpected shape on either contract writes
|
|
33
|
-
// nothing.
|
|
34
|
-
//
|
|
35
|
-
// 2. PreToolUse blocker (`harness pack hook post-merge-gate`) checks a
|
|
36
|
-
// CURATED list of history-mutating commands (see
|
|
37
|
-
// post-merge-gate-runtime.ts for the exact list) and denies them
|
|
38
|
-
// when the CURRENT branch tip still equals a recorded merged tip
|
|
39
|
-
// for this repo+branch — an exact sha match, not ancestry, so a new
|
|
40
|
-
// commit (moving the tip) or a recycled branch name (a different
|
|
41
|
-
// tip) both fall silently outside the gate. GATE-ELIGIBILITY is
|
|
42
|
-
// classified FIRST, before any manifest load or ledger query, so
|
|
43
|
-
// the recovery vocabulary (git switch/checkout/pull/fetch, git
|
|
44
|
-
// branch -d/-D, git stash list/show, any `harness ...` command) can
|
|
45
|
-
// never be starved by an unrelated failure — none of those verbs is
|
|
46
|
-
// a curated mutation. Task 19356be7: DENY WINS when one command
|
|
47
|
-
// chains recovery vocabulary with a curated mutation; the escape
|
|
48
|
-
// list no longer short-circuits the whole command string.
|
|
49
|
-
//
|
|
50
|
-
// Fails OPEN when the ledger is unreachable (unlike branch-protection's
|
|
51
|
-
// fail-closed posture): without the ledger, "merged" and "not merged"
|
|
52
|
-
// are indistinguishable, and fail-closed here would block ordinary git
|
|
53
|
-
// history work on every branch whenever grounding-mcp hiccups. This pack
|
|
54
|
-
// is advisory-strength against a hostile agent, like the other
|
|
55
|
-
// `requires.ledger_tag`-style gates (docs/okf/evidence-ledger-trust-boundary.md);
|
|
56
|
-
// see post-merge-gate-runtime.ts's header for the full rationale.
|
|
57
|
-
//
|
|
58
|
-
// No auto-switch: the blocker only ever recommends the recovery commands
|
|
59
|
-
// in its deny message, never runs them (operator/agent decides).
|
|
60
|
-
//
|
|
61
|
-
// Enabled per-installation via `harness pack add post-merge-gate`. The
|
|
62
|
-
// `full` init template wires it with `enabled: false` (opt-in — a fresh,
|
|
63
|
-
// higher-risk gate; see templates.ts for the rationale), unlike
|
|
64
|
-
// branch-protection's default-enabled precedent.
|
|
65
|
-
//
|
|
66
|
-
// Claude Code only in v1 (no Codex or opencode adapter): both hooks
|
|
67
|
-
// match on the `Bash` tool name and classify by command text, a
|
|
68
|
-
// mechanism that has no established Codex-adapter parity yet (mirrors
|
|
69
|
-
// `solution-acceptance`, which ships with no Codex variant either) and
|
|
70
|
-
// no meaning at all under opencode (no declarative hook/event field to
|
|
71
|
-
// match against). `resolve()` warns whenever `runtime !== "claude-code"`
|
|
72
|
-
// (batch18 fix-round, task f34eb233 — widened from a codex-only check
|
|
73
|
-
// so opencode gets the same warning).
|
|
74
|
-
import { z } from "zod";
|
|
75
|
-
import { PolicyUxSchema } from "../../schema/policies.js";
|
|
76
|
-
import { DEFAULT_RUNTIME } from "../runtime.js";
|
|
77
|
-
import { CURATED_MUTATION_BASH_RE, ESCAPE_GIT_BASH_RE, ESCAPE_HARNESS_BASH_RE, GH_MERGE_SUCCESS_RE, GH_PR_MERGE_BASH_RE, MERGED_TAG_PREFIX, PACK_NAME, } from "./post-merge-gate-runtime.js";
|
|
78
|
-
export { PACK_NAME };
|
|
79
|
-
/**
|
|
80
|
-
* Zod schema for this pack's `config:` block. Strict by design so
|
|
81
|
-
* typo'd keys fail loud at lint time (mirrors sibling packs). `ux` is
|
|
82
|
-
* the only operator-tunable key today — the curated mutation list and
|
|
83
|
-
* escape allowlist are fixed in v1 (03-decisions.md); a config override
|
|
84
|
-
* for either can land as a follow-up if operators need it.
|
|
85
|
-
*/
|
|
86
|
-
export const configSchema = z
|
|
87
|
-
.object({
|
|
88
|
-
ux: PolicyUxSchema.optional(),
|
|
89
|
-
})
|
|
90
|
-
.strict();
|
|
91
|
-
/**
|
|
92
|
-
* Shipped default `config.ux` for this pack. Canonical source for the
|
|
93
|
-
* `full` init template and `harness pack reseed` (mirrors
|
|
94
|
-
* branch-protection's `defaultUx`): a future wording fix lands here once
|
|
95
|
-
* and reaches both a fresh `harness init --template full` and an
|
|
96
|
-
* operator running `harness pack reseed post-merge-gate` against an
|
|
97
|
-
* already-installed manifest. `${DEFAULT_BRANCH}` is always populated by
|
|
98
|
-
* the blocker (falling back to the literal placeholder `<default-branch>`
|
|
99
|
-
* when it cannot resolve `origin/HEAD`), never left as an unresolved
|
|
100
|
-
* template var.
|
|
101
|
-
*/
|
|
102
|
-
export function defaultUx() {
|
|
103
|
-
return {
|
|
104
|
-
cannot: "You cannot run ${TOOL_NAME} on branch ${BRANCH} yet — its current tip was already merged.",
|
|
105
|
-
required: [
|
|
106
|
-
"a branch tip that is not sitting at an already-merged commit (switch off `${BRANCH}`, or move its tip with a new commit)",
|
|
107
|
-
],
|
|
108
|
-
run: [
|
|
109
|
-
"git switch ${DEFAULT_BRANCH}",
|
|
110
|
-
"git pull --ff-only",
|
|
111
|
-
"git branch -d ${BRANCH} # optional cleanup",
|
|
112
|
-
],
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
const HOOK_NAME_PREFIX = `policy-pack:${PACK_NAME}`;
|
|
116
|
-
const PRODUCER_COMMAND = "harness pack hook post-merge-gate-record";
|
|
117
|
-
const BLOCKER_COMMAND = "harness pack hook post-merge-gate";
|
|
118
|
-
function buildHooks() {
|
|
119
|
-
return [
|
|
120
|
-
{
|
|
121
|
-
name: `${HOOK_NAME_PREFIX}:post-tool-use`,
|
|
122
|
-
event: "PostToolUse",
|
|
123
|
-
match: "Bash",
|
|
124
|
-
command: PRODUCER_COMMAND,
|
|
125
|
-
blocking: false,
|
|
126
|
-
budget_ms: 5000,
|
|
127
|
-
description: "Producer: on a `gh pr merge` Bash call that exited 0, write `post-merge-gate:merged:<repo>:<branch>:<sha>` to the evidence ledger. Non-blocking; any failure just leaves the gate silent for that merge.",
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
name: `${HOOK_NAME_PREFIX}:pre-tool-use`,
|
|
131
|
-
event: "PreToolUse",
|
|
132
|
-
match: "Bash",
|
|
133
|
-
command: BLOCKER_COMMAND,
|
|
134
|
-
blocking: "hard",
|
|
135
|
-
// 15000 (task 7bf47554): the blocker's own ledger query
|
|
136
|
-
// (queryLedgerByTag, src/cli/pack/hook-post-merge-gate.ts) is bounded
|
|
137
|
-
// by the grounding-mcp server's own `health.timeout_ms` (default
|
|
138
|
-
// 5000ms) — the same number the old budget_ms=5000 used for the
|
|
139
|
-
// outer Claude Code kill-timeout, leaving no margin. This gate
|
|
140
|
-
// already fails OPEN by design on a genuinely unreachable ledger
|
|
141
|
-
// (unlike branch-protection); raising the outer timeout does not
|
|
142
|
-
// change that posture, it only gives a merely-SLOW (not dead) ledger
|
|
143
|
-
// room to answer before the outer timeout could fire first and kill
|
|
144
|
-
// the subprocess mid-query, consistent with the other ledger-backed
|
|
145
|
-
// pack blockers.
|
|
146
|
-
budget_ms: 15000,
|
|
147
|
-
description: "Blocker: deny curated history-mutating Bash commands (git commit/add/push/merge/rebase/cherry-pick/revert/reset/stash pop|apply, gh pr create/merge) when the current branch tip matches a recorded merged tip. The recovery vocabulary (git switch/checkout/pull/fetch, git branch -d/-D, git stash list/show, any `harness ...` command) always passes as its own command, classified before any manifest or ledger access; chaining one of those with a curated mutation does NOT exempt the mutation. Fails open when the ledger is unreachable.",
|
|
148
|
-
},
|
|
149
|
-
];
|
|
150
|
-
}
|
|
151
|
-
function buildInstructions(pack, runtime) {
|
|
152
|
-
const description = pack.description?.trim() ?? "";
|
|
153
|
-
return `# Policy Pack: ${PACK_NAME}
|
|
154
|
-
|
|
155
|
-
> Operator audit copy. This pack denies curated history-mutating Bash
|
|
156
|
-
> commands on a branch whose tip was already merged via \`gh pr merge\`,
|
|
157
|
-
> closing the loop on the "kept working on a merged branch" incident
|
|
158
|
-
> pattern.
|
|
159
|
-
|
|
160
|
-
## Runtime
|
|
161
|
-
|
|
162
|
-
${runtime}${runtime === "codex"
|
|
163
|
-
? " (UNSUPPORTED — see \"Known gaps\" below; both hooks assume the Claude Code Bash tool surface)"
|
|
164
|
-
: runtime === "opencode"
|
|
165
|
-
? " (UNSUPPORTED — see \"Known gaps\" below; opencode has no declarative hook/event wiring, so neither hook is projected into any opencode artefact)"
|
|
166
|
-
: ""}
|
|
167
|
-
|
|
168
|
-
## Trigger + signals
|
|
169
|
-
|
|
170
|
-
1. \`PostToolUse\` producer (\`${PRODUCER_COMMAND}\`, blocking: false) on
|
|
171
|
-
\`Bash\`: tests \`${GH_PR_MERGE_BASH_RE.source}\` against the raw command
|
|
172
|
-
and, only when that misses, against the three normalized forms
|
|
173
|
-
(\`normalizeCommand\`, \`normalizeCommandAmpAware\`,
|
|
174
|
-
\`normalizeCommandQuoteAware\`), in the same raw-first, lazy order as the
|
|
175
|
-
gate. Fires only on a CONFIRMED merge, via either of two contracts
|
|
176
|
-
(dual-contract, payload-reality follow-up — real Claude Code shims
|
|
177
|
-
have shipped both shapes in the wild):
|
|
178
|
-
- **Contract A** — \`tool_output.exit_code\` is the number \`0\`.
|
|
179
|
-
- **Contract B** — \`tool_response\` is present with
|
|
180
|
-
\`interrupted === false\` AND its \`stdout\`+\`stderr\` contain \`gh pr
|
|
181
|
-
merge\`'s own past-tense success sentence: \`${GH_MERGE_SUCCESS_RE.source}\`
|
|
182
|
-
(covers all three merge methods: Squashed / Rebased / plain Merged).
|
|
183
|
-
Verified against the installed \`gh\` binary (v2.94.0,
|
|
184
|
-
\`pkg/cmd/pr/merge/merge.go\` lines 369-376): the line is built as
|
|
185
|
-
\`infof("%s %s pull request %s#%d (%s)", icon, action,
|
|
186
|
-
ghrepo.FullName(baseRepo), pr.Number, pr.Title)\` — the repo
|
|
187
|
-
fullname sits between "pull request" and the PR number, GLUED to
|
|
188
|
-
\`#\` with no space (e.g. \`Squashed and merged pull request
|
|
189
|
-
owner/repo#65 (title)\`), and \`infof\` writes to \`gh\`'s STDERR,
|
|
190
|
-
which is why this contract checks the concatenated
|
|
191
|
-
\`stdout\`+\`stderr\`, not stdout alone.
|
|
192
|
-
Contract A wins whenever it resolves to ANY definite verdict, success
|
|
193
|
-
OR failure — a well-formed non-zero \`exit_code\` short-circuits
|
|
194
|
-
WITHOUT consulting Contract B. Contract B is tried only when Contract
|
|
195
|
-
A's \`exit_code\` is entirely unresolvable (missing field, wrong
|
|
196
|
-
shape, or genuinely absent — as verified live against Claude Code
|
|
197
|
-
2.1.218, whose real PostToolUse Bash payload carries NO \`tool_output\`
|
|
198
|
-
/ no exit-code field at all, only \`tool_response\`; the
|
|
199
|
-
\`tool_output.exit_code\` shape appears to describe a different,
|
|
200
|
-
possibly newer, Claude Code contract). Any other shape on either
|
|
201
|
-
contract writes NO fact; fail-safe against a false "merged" record.
|
|
202
|
-
On a confirmed match, records
|
|
203
|
-
\`${MERGED_TAG_PREFIX}:<repo>:<branch>:<sha>[ pr:<n>] at:<iso>\` to the
|
|
204
|
-
evidence ledger, where \`<sha>\` is the LOCAL branch tip observed right
|
|
205
|
-
after the merge (the exact commit that got merged — \`gh pr merge\`
|
|
206
|
-
merges remote-side and does not itself move the local tip). \`<n>\`
|
|
207
|
-
prefers extraction from the \`gh pr merge\` command itself, falling
|
|
208
|
-
back to the number captured out of the Contract-B success sentence.
|
|
209
|
-
|
|
210
|
-
2. \`PreToolUse\` blocker (\`${BLOCKER_COMMAND}\`, blocking: hard) on
|
|
211
|
-
\`Bash\`: checked in this order —
|
|
212
|
-
a. **Gate-eligibility classification first, unconditionally** (before
|
|
213
|
-
any manifest load or ledger query): the curated mutation matcher
|
|
214
|
-
\`${CURATED_MUTATION_BASH_RE.source}\`. Commands it
|
|
215
|
-
does not match pass through untouched — that unconditionally covers the whole recovery
|
|
216
|
-
vocabulary (\`${ESCAPE_GIT_BASH_RE.source}\` and
|
|
217
|
-
\`${ESCAPE_HARNESS_BASH_RE.source}\`), since none of those verbs are
|
|
218
|
-
curated mutations. **Deny wins over the recovery vocabulary** when
|
|
219
|
-
one command chains both (task 19356be7): \`harness preflight &&
|
|
220
|
-
git push\` is judged by its push half, not exempted by its
|
|
221
|
-
preflight half.
|
|
222
|
-
b. **Ledger check**: denies only when the current branch tip exactly
|
|
223
|
-
equals a recorded \`${MERGED_TAG_PREFIX}:<repo>:<branch>:<sha>\` fact
|
|
224
|
-
for this repo+branch. A new commit moves the tip (gate falls
|
|
225
|
-
silent — that's legitimate continued work); a recycled branch name
|
|
226
|
-
has a different tip (no false positive). No freshness window is
|
|
227
|
-
needed as a result.
|
|
228
|
-
|
|
229
|
-
## Escape hatches
|
|
230
|
-
|
|
231
|
-
- **Recovery path** (named in every deny message): \`git switch
|
|
232
|
-
<default-branch>\`, then \`git pull --ff-only\`, then optionally
|
|
233
|
-
\`git branch -d <branch>\` to clean up the merged local branch.
|
|
234
|
-
- **Read-only / inspection commands** (\`git switch\`/\`checkout\`,
|
|
235
|
-
\`pull\`/\`fetch\`, \`branch -d\`/\`-D\`, \`stash list\`/\`show\`, and any
|
|
236
|
-
\`harness ...\` invocation) always pass **as their own commands**,
|
|
237
|
-
independent of ledger reachability — the gate can never itself become
|
|
238
|
-
the reason the recovery path is unavailable. Chaining one of them with
|
|
239
|
-
a curated mutation does NOT exempt the mutation (the pre-19356be7
|
|
240
|
-
escape-first ordering did, which let the documented
|
|
241
|
-
preflight-then-push workflow skip the gate entirely).
|
|
242
|
-
|
|
243
|
-
## Known gaps (documented, not attempted in v1)
|
|
244
|
-
|
|
245
|
-
- **MCP merge path**: \`mcp__agent-tasks__pull_requests_merge\` is NOT a
|
|
246
|
-
producer trigger. Only the \`gh pr merge\` Bash surface is watched;
|
|
247
|
-
merges done through the agent-tasks MCP tool leave no
|
|
248
|
-
\`${MERGED_TAG_PREFIX}\` fact, so the blocker never fires for that
|
|
249
|
-
branch. Left as a documented gap (spec decision), not silently faked
|
|
250
|
-
as covered.
|
|
251
|
-
- **Regex-vs-shell-eval residual**: same class of gap as every other
|
|
252
|
-
\`bash_match\`-style matcher in this codebase (branch-protection,
|
|
253
|
-
solution-acceptance, the kill-switch deny policies) — a heredoc,
|
|
254
|
-
\`sh -c\`, \`eval\`, or similarly indirected command defeats the TRIGGER
|
|
255
|
-
match before either hook ever runs. Not attempted to close here.
|
|
256
|
-
- **Curated scope, not every Bash command**: destructive non-git
|
|
257
|
-
commands on a just-merged branch (e.g. hand-editing files outside
|
|
258
|
-
git's own history primitives) are out of v1 scope, mirroring
|
|
259
|
-
branch-protection's documented scope-cut.
|
|
260
|
-
- **Chained-escape bypass — CLOSED (task 19356be7)**: the original
|
|
261
|
-
escape-first ordering matched the escape list against the WHOLE
|
|
262
|
-
command string, so a curated mutation chained with an escape verb
|
|
263
|
-
(\`harness preflight && git push\`, \`git commit -am x && git switch
|
|
264
|
-
main\`) skipped the gate entirely. The blocker now classifies by the
|
|
265
|
-
curated mutation match alone (deny wins; measured 0-divergent from
|
|
266
|
-
per-clause evaluation thanks to the escape/deny verb disjointness —
|
|
267
|
-
escape-at-start-only was measured and rejected, it still exempts three
|
|
268
|
-
of the four lines this closed).
|
|
269
|
-
Residual, measured and accepted: a deny verb as quoted TEXT in a
|
|
270
|
-
chain (\`git pull && echo 'a && git push'\`) is gate-eligible even
|
|
271
|
-
though bash never runs it — the existing accepted false-positive
|
|
272
|
-
class, no longer rescued by a chained escape verb.
|
|
273
|
-
- **Inverted trust-boundary residual**: a merged fact written by any
|
|
274
|
-
means OTHER than the producer (e.g. directly via
|
|
275
|
-
\`mcp__grounding-mcp__ledger_add\`) that happens to exactly match the
|
|
276
|
-
CURRENT \`repo:branch:sha\` triple denies curated mutations on that
|
|
277
|
-
branch — recoverable via any escape command or by making a new commit
|
|
278
|
-
(which moves the tip and the fact no longer matches). A fact for a
|
|
279
|
-
different \`repo:branch:sha\` triple is inert; this is availability-only
|
|
280
|
-
(a spurious deny, always escapable), never a privilege the agent gains,
|
|
281
|
-
consistent with docs/okf/evidence-ledger-trust-boundary.md.
|
|
282
|
-
- **Contract B is coupled to \`gh\`'s current wording**: \`${GH_MERGE_SUCCESS_RE.source}\`
|
|
283
|
-
matches \`gh\`'s OWN past-tense success sentence, verbatim, as verified
|
|
284
|
-
against the installed \`gh\` v2.94.0 source
|
|
285
|
-
(\`pkg/cmd/pr/merge/merge.go\` lines 369-376). A future \`gh\` release
|
|
286
|
-
that rephrases that sentence makes
|
|
287
|
-
Contract B silently, FAIL-SAFELY inert on installs that never send
|
|
288
|
-
\`tool_output.exit_code\` (Contract A stays available wherever it's
|
|
289
|
-
actually sent) — never a false "merged" record, but the blocker also
|
|
290
|
-
never fires for that merge. Not attempted to close here (would need a
|
|
291
|
-
\`gh\` wire-format contract, e.g. \`--json\`, out of this pack's Bash-text
|
|
292
|
-
matching design). Verification path after upgrading \`gh\`: merge a
|
|
293
|
-
throwaway PR and check for a fresh \`${MERGED_TAG_PREFIX}\` fact in the
|
|
294
|
-
evidence ledger.
|
|
295
|
-
- **No Codex adapter**: see "Runtime" above.
|
|
296
|
-
- **No opencode adapter**: see "Runtime" above; opencode has no
|
|
297
|
-
declarative hook/event field (only a JS/TS plugin API), so neither
|
|
298
|
-
the producer nor the blocker hook above is ever projected into the
|
|
299
|
-
generated opencode artefact (\`harness.generated/opencode/opencode.json\`)
|
|
300
|
-
— this pack has no effect at all under \`--runtime opencode\`.
|
|
301
|
-
|
|
302
|
-
## Fail posture
|
|
303
|
-
|
|
304
|
-
Fails OPEN (allows, with a stderr warning) when the evidence ledger is
|
|
305
|
-
unreachable — deliberately the OPPOSITE of branch-protection's
|
|
306
|
-
fail-closed posture, because without the ledger "merged" and "not
|
|
307
|
-
merged" are indistinguishable, and fail-closed here would block ordinary
|
|
308
|
-
git history work on every branch whenever grounding-mcp hiccups. This
|
|
309
|
-
pack is advisory-strength against a hostile agent, like the other
|
|
310
|
-
\`requires.ledger_tag\`-style gates
|
|
311
|
-
(docs/okf/evidence-ledger-trust-boundary.md).
|
|
312
|
-
|
|
313
|
-
## Pack metadata
|
|
314
|
-
${description ? `\n> ${description.replace(/\n/g, "\n> ")}\n` : ""}
|
|
315
|
-
- Source: \`builtin\`
|
|
316
|
-
- Pack: \`${PACK_NAME}\`
|
|
317
|
-
- Runtime: \`${runtime}\`
|
|
318
|
-
`;
|
|
319
|
-
}
|
|
320
|
-
export function resolve(pack, runtime = DEFAULT_RUNTIME) {
|
|
321
|
-
const hooks = buildHooks();
|
|
322
|
-
const files = [
|
|
323
|
-
{
|
|
324
|
-
relativePath: `policy-packs/${PACK_NAME}/instructions.md`,
|
|
325
|
-
content: buildInstructions(pack, runtime),
|
|
326
|
-
},
|
|
327
|
-
];
|
|
328
|
-
const warnings = [];
|
|
329
|
-
// HIGH-F1 (batch18 fix-round, task f34eb233): widened from
|
|
330
|
-
// `runtime === "codex"` to `runtime !== "claude-code"` so opencode
|
|
331
|
-
// gets the same pack-level warning codex already got — before this,
|
|
332
|
-
// opencode silently fell through this check (it is neither
|
|
333
|
-
// "claude-code" nor, before the widening, matched by
|
|
334
|
-
// `runtime === "codex"`), losing both the UNSUPPORTED marker above
|
|
335
|
-
// AND this warning even though opencode has no hook wiring at all
|
|
336
|
-
// (strictly worse than codex, whose hooks are at least PROJECTED,
|
|
337
|
-
// just against the wrong tool-name surface).
|
|
338
|
-
if (runtime !== "claude-code") {
|
|
339
|
-
const detail = runtime === "codex"
|
|
340
|
-
? "hooks are wired assuming the Claude Code Bash tool surface and will not fire correctly under a Codex runtime"
|
|
341
|
-
: "opencode has no declarative hook/event wiring, so neither hook is projected into any opencode artefact and this pack has no effect";
|
|
342
|
-
const adapterName = runtime === "codex" ? "Codex" : "opencode";
|
|
343
|
-
warnings.push(`policy_packs[${pack.name}]: post-merge-gate has no ${adapterName} adapter in v1; ${detail}.`);
|
|
344
|
-
}
|
|
345
|
-
return { contribution: { hooks, files }, warnings };
|
|
346
|
-
}
|
|
347
|
-
//# sourceMappingURL=post-merge-gate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"post-merge-gate.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/post-merge-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/** The grounding-mcp version this reconnect lifecycle was verified against. */
|
|
2
|
-
export declare const RECONNECT_PRODUCER_FLOOR = "grounding-mcp >= 0.11.0";
|
|
3
|
-
/** Rendered qualifier prefix both surfaces open the guidance with. */
|
|
4
|
-
export declare const RECONNECT_VERSION_QUALIFIER = "With grounding-mcp >= 0.11.0:";
|
|
5
|
-
export declare const RECONNECT_STATUS_TOOL = "mcp__grounding-mcp__solution_evaluate_status";
|
|
6
|
-
export declare const RECONNECT_RESULT_TOOL = "mcp__grounding-mcp__solution_evaluate_result";
|
|
7
|
-
export declare const RECONNECT_TASK_ID_PLACEHOLDER = "<task-id>";
|
|
8
|
-
export declare const RECONNECT_POLL_MS_ADVERTISED = "5000ms";
|
|
9
|
-
export declare const RECONNECT_RETENTION = "24h";
|
|
10
|
-
export declare const RECONNECT_RETENTION_FLOOR = "100x pollAfterMs";
|
|
11
|
-
/**
|
|
12
|
-
* The three readings `gate.verdict === null` covers. The hook
|
|
13
|
-
* (`classifyNullVerdictReading` / `readAttemptLockLiveness` in
|
|
14
|
-
* `../../cli/pack/hook-solution-acceptance.ts`) reads the documented
|
|
15
|
-
* attempt-lock anchor to rule two of the three out and select the one it
|
|
16
|
-
* detected; this module only owns the wording listing them, consumed by
|
|
17
|
-
* `renderReconnectDenyParagraph` below for its reading-(2)-only paragraph.
|
|
18
|
-
*/
|
|
19
|
-
export declare const RECONNECT_THREE_READINGS_LABELS: readonly ["`solution_evaluate` was never called for \"<task-id>\"", "a `solution_evaluate` call for it is still running in the background", "a marker path exists but what is there was not accepted as a verdict"];
|
|
20
|
-
/** Fact 1: reconnect by attempt id, not by starting a fresh call. */
|
|
21
|
-
export declare const RECONNECT_FACT_RECONNECT_BY_ID: string;
|
|
22
|
-
/**
|
|
23
|
-
* Fact 2: never retry while the lock is held; a second call JOINS, it does
|
|
24
|
-
* not refuse. It deliberately begins lowercase because each renderer owns
|
|
25
|
-
* its own lead-in sentence.
|
|
26
|
-
*/
|
|
27
|
-
export declare const RECONNECT_FACT_JOIN_NOT_RETRY: string;
|
|
28
|
-
/**
|
|
29
|
-
* Fact 3: poll interval and retention bounds, from the released
|
|
30
|
-
* grounding-mcp version. Both renderers use this fact as a fresh sentence
|
|
31
|
-
* (after a period), so it is capitalized.
|
|
32
|
-
*/
|
|
33
|
-
export declare const RECONNECT_FACT_POLL_AND_RETENTION: string;
|
|
34
|
-
/**
|
|
35
|
-
* Compact paragraph appended to the completion-gate's deny reason
|
|
36
|
-
* (`blockJson` in hook-solution-acceptance.ts) when `gate.verdict ===
|
|
37
|
-
* null` AND the hook detected reading (2), a live attempt-lock
|
|
38
|
-
* (`reconnectGuidanceFor`). Renders the SAME fact constants as
|
|
39
|
-
* `renderReconnectInstructionsSection` below.
|
|
40
|
-
*/
|
|
41
|
-
export declare function renderReconnectDenyParagraph(taskId: string): string;
|
|
42
|
-
/**
|
|
43
|
-
* "Reconnecting vs. retrying" section body rendered into the pack's
|
|
44
|
-
* `instructions.md` operator audit copy (`buildInstructions` in
|
|
45
|
-
* solution-acceptance.ts). Renders the SAME fact constants as
|
|
46
|
-
* `renderReconnectDenyParagraph` above; a large repo can outlive a single
|
|
47
|
-
* `solution_evaluate` call, so this section documents reconnecting to an
|
|
48
|
-
* in-flight attempt rather than treating a timeout as a stall to retry.
|
|
49
|
-
*/
|
|
50
|
-
export declare function renderReconnectInstructionsSection(): string;
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
// Reconnect-vs-retry facts for the `solution-acceptance` pack (task
|
|
2
|
-
// 5c9cad05), owned as DATA in exactly one place so the two rendered
|
|
3
|
-
// surfaces cannot drift apart the way they did across review rounds 1-2:
|
|
4
|
-
//
|
|
5
|
-
// 1. `buildInstructions` (solution-acceptance.ts) renders the operator
|
|
6
|
-
// audit copy's "Reconnecting vs. retrying" section from
|
|
7
|
-
// `renderReconnectInstructionsSection`.
|
|
8
|
-
// 2. `blockJson` (../../cli/pack/hook-solution-acceptance.ts) renders the
|
|
9
|
-
// agent-facing deny paragraph from `renderReconnectDenyParagraph`,
|
|
10
|
-
// shown only when `gate.verdict === null` AND the hook detected
|
|
11
|
-
// reading (2), a live attempt-lock (see `reconnectGuidanceFor` in
|
|
12
|
-
// hook-solution-acceptance.ts; the three readings are listed in
|
|
13
|
-
// `RECONNECT_THREE_READINGS_LABELS`
|
|
14
|
-
// below).
|
|
15
|
-
//
|
|
16
|
-
// Both renderers are built from the SAME fact constants below (not just
|
|
17
|
-
// the same values restated in prose twice), and
|
|
18
|
-
// `tests/policy-packs/solution-acceptance-reconnect.test.ts` asserts each
|
|
19
|
-
// fact constant appears verbatim in both rendered surfaces, so a future
|
|
20
|
-
// edit that updates one surface but not the other fails that test instead
|
|
21
|
-
// of shipping a silent drift.
|
|
22
|
-
//
|
|
23
|
-
// Scope: this module documents grounding-mcp's ATTEMPT lifecycle
|
|
24
|
-
// (`solution_evaluate_status` / `solution_evaluate_result`, `attemptId`,
|
|
25
|
-
// `pollAfterMs`, retention), which the pack's producer floor (>= 0.3.2)
|
|
26
|
-
// does not itself guarantee (that lifecycle shipped in grounding-mcp
|
|
27
|
-
// 0.11.0), so every rendering below is explicitly qualified with
|
|
28
|
-
// `RECONNECT_VERSION_QUALIFIER` rather than stated as if it held
|
|
29
|
-
// unconditionally under the pack's own (older) producer floor.
|
|
30
|
-
//
|
|
31
|
-
// grounding-mcp's README also documents an attempt-lock anchor
|
|
32
|
-
// (`<verdict dir>/<id>.attempt-lock`, beside the
|
|
33
|
-
// `<id>.attempt-lock.lock` directory `proper-lockfile` manages, from
|
|
34
|
-
// which the producer itself derives its own `running-unconfirmed`
|
|
35
|
-
// status). The anchor IS read: `classifyNullVerdictReading` /
|
|
36
|
-
// `readAttemptLockLiveness` in `../../cli/pack/hook-solution-acceptance.ts`
|
|
37
|
-
// read it to rule two of the three readings below out and select the
|
|
38
|
-
// one it detected (harness/799de976). This module does not touch the
|
|
39
|
-
// filesystem itself; it only owns the WORDING both rendered surfaces
|
|
40
|
-
// share, including `renderReconnectDenyParagraph`'s reading-(2)-only
|
|
41
|
-
// paragraph below, which the hook appends solely when it has detected
|
|
42
|
-
// the live-attempt reading.
|
|
43
|
-
/** The grounding-mcp version this reconnect lifecycle was verified against. */
|
|
44
|
-
export const RECONNECT_PRODUCER_FLOOR = "grounding-mcp >= 0.11.0";
|
|
45
|
-
/** Rendered qualifier prefix both surfaces open the guidance with. */
|
|
46
|
-
export const RECONNECT_VERSION_QUALIFIER = `With ${RECONNECT_PRODUCER_FLOOR}:`;
|
|
47
|
-
export const RECONNECT_STATUS_TOOL = "mcp__grounding-mcp__solution_evaluate_status";
|
|
48
|
-
export const RECONNECT_RESULT_TOOL = "mcp__grounding-mcp__solution_evaluate_result";
|
|
49
|
-
export const RECONNECT_TASK_ID_PLACEHOLDER = "<task-id>";
|
|
50
|
-
export const RECONNECT_POLL_MS_ADVERTISED = "5000ms";
|
|
51
|
-
export const RECONNECT_RETENTION = "24h";
|
|
52
|
-
export const RECONNECT_RETENTION_FLOOR = "100x pollAfterMs";
|
|
53
|
-
/**
|
|
54
|
-
* The three readings `gate.verdict === null` covers. The hook
|
|
55
|
-
* (`classifyNullVerdictReading` / `readAttemptLockLiveness` in
|
|
56
|
-
* `../../cli/pack/hook-solution-acceptance.ts`) reads the documented
|
|
57
|
-
* attempt-lock anchor to rule two of the three out and select the one it
|
|
58
|
-
* detected; this module only owns the wording listing them, consumed by
|
|
59
|
-
* `renderReconnectDenyParagraph` below for its reading-(2)-only paragraph.
|
|
60
|
-
*/
|
|
61
|
-
export const RECONNECT_THREE_READINGS_LABELS = [
|
|
62
|
-
`\`solution_evaluate\` was never called for "${RECONNECT_TASK_ID_PLACEHOLDER}"`,
|
|
63
|
-
"a `solution_evaluate` call for it is still running in the background",
|
|
64
|
-
"a marker path exists but what is there was not accepted as a verdict",
|
|
65
|
-
];
|
|
66
|
-
/** Fact 1: reconnect by attempt id, not by starting a fresh call. */
|
|
67
|
-
export const RECONNECT_FACT_RECONNECT_BY_ID = `poll \`${RECONNECT_STATUS_TOOL}\` /\n` +
|
|
68
|
-
`\`${RECONNECT_RESULT_TOOL}\` for the SAME \`id\`,\n` +
|
|
69
|
-
`passing the \`attemptId\` you were given (or omitting it to resolve the latest attempt,\n` +
|
|
70
|
-
`the recovery path when your own call timed out before it ever returned one)`;
|
|
71
|
-
/**
|
|
72
|
-
* Fact 2: never retry while the lock is held; a second call JOINS, it does
|
|
73
|
-
* not refuse. It deliberately begins lowercase because each renderer owns
|
|
74
|
-
* its own lead-in sentence.
|
|
75
|
-
*/
|
|
76
|
-
export const RECONNECT_FACT_JOIN_NOT_RETRY = `a second \`solution_evaluate\` call for an \`id\` whose attempt is still live just joins\n` +
|
|
77
|
-
`that attempt and returns its \`attemptId\`, never starting a second \`preflight\` run;\n` +
|
|
78
|
-
`only \`forceNewAttempt\` is refused while that attempt's lock holds`;
|
|
79
|
-
/**
|
|
80
|
-
* Fact 3: poll interval and retention bounds, from the released
|
|
81
|
-
* grounding-mcp version. Both renderers use this fact as a fresh sentence
|
|
82
|
-
* (after a period), so it is capitalized.
|
|
83
|
-
*/
|
|
84
|
-
export const RECONNECT_FACT_POLL_AND_RETENTION = `Wait at least the returned \`pollAfterMs\` (advertised as \`${RECONNECT_POLL_MS_ADVERTISED}\`)\n` +
|
|
85
|
-
`between polls; attempt records are retained \`${RECONNECT_RETENTION}\` by default (always at\n` +
|
|
86
|
-
`least \`${RECONNECT_RETENTION_FLOOR}\`), and a pruned terminal attempt\n` +
|
|
87
|
-
`reads \`expired\``;
|
|
88
|
-
/** The three readings, as one clause, with the task id interpolated. */
|
|
89
|
-
function threeReadingsClause(taskId) {
|
|
90
|
-
const [neverCalled, stillRunning, unreadable] = RECONNECT_THREE_READINGS_LABELS;
|
|
91
|
-
return [
|
|
92
|
-
neverCalled.replace(RECONNECT_TASK_ID_PLACEHOLDER, taskId),
|
|
93
|
-
stillRunning,
|
|
94
|
-
`or ${unreadable}`,
|
|
95
|
-
].join(",\n");
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Compact paragraph appended to the completion-gate's deny reason
|
|
99
|
-
* (`blockJson` in hook-solution-acceptance.ts) when `gate.verdict ===
|
|
100
|
-
* null` AND the hook detected reading (2), a live attempt-lock
|
|
101
|
-
* (`reconnectGuidanceFor`). Renders the SAME fact constants as
|
|
102
|
-
* `renderReconnectInstructionsSection` below.
|
|
103
|
-
*/
|
|
104
|
-
export function renderReconnectDenyParagraph(taskId) {
|
|
105
|
-
return `\n${[
|
|
106
|
-
`Reconnecting vs. retrying. ${RECONNECT_VERSION_QUALIFIER} this same`,
|
|
107
|
-
`"no readable verdict marker" case covers three readings:`,
|
|
108
|
-
threeReadingsClause(taskId),
|
|
109
|
-
`(the verdict marker only appears once an attempt finishes, and is validated on read;`,
|
|
110
|
-
`this hook read the documented attempt-lock anchor and is showing you this paragraph`,
|
|
111
|
-
`because it detected reading (2): an attempt is still live). If you already called`,
|
|
112
|
-
`\`solution_evaluate\` for this \`id\`, do not call it again:`,
|
|
113
|
-
`${RECONNECT_FACT_RECONNECT_BY_ID}.`,
|
|
114
|
-
`Never re-call \`solution_evaluate\`:`,
|
|
115
|
-
`${RECONNECT_FACT_JOIN_NOT_RETRY}.`,
|
|
116
|
-
`${RECONNECT_FACT_POLL_AND_RETENTION}.`,
|
|
117
|
-
].join("\n")}\n`;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* "Reconnecting vs. retrying" section body rendered into the pack's
|
|
121
|
-
* `instructions.md` operator audit copy (`buildInstructions` in
|
|
122
|
-
* solution-acceptance.ts). Renders the SAME fact constants as
|
|
123
|
-
* `renderReconnectDenyParagraph` above; a large repo can outlive a single
|
|
124
|
-
* `solution_evaluate` call, so this section documents reconnecting to an
|
|
125
|
-
* in-flight attempt rather than treating a timeout as a stall to retry.
|
|
126
|
-
*/
|
|
127
|
-
export function renderReconnectInstructionsSection() {
|
|
128
|
-
return `## Reconnecting vs. retrying (${RECONNECT_PRODUCER_FLOOR})
|
|
129
|
-
|
|
130
|
-
${RECONNECT_VERSION_QUALIFIER} a large repo can outlive the call: \`solution_evaluate\` may
|
|
131
|
-
hand back \`{status: "running", attemptId, id, pollAfterMs}\` instead of a verdict, or your
|
|
132
|
-
own call may time out with nothing at all. Either way the \`preflight\` run keeps going in
|
|
133
|
-
the background; reconnect as follows:
|
|
134
|
-
${RECONNECT_FACT_RECONNECT_BY_ID}.
|
|
135
|
-
|
|
136
|
-
Never re-call \`solution_evaluate\` as a stall workaround:
|
|
137
|
-
${RECONNECT_FACT_JOIN_NOT_RETRY}.
|
|
138
|
-
A prior attempt's reported status (\`completed\`,
|
|
139
|
-
\`failed\`, \`unknown\`, or \`expired\`) is informational, not the gate: \`unknown\`/
|
|
140
|
-
\`expired\` never license a new attempt by themselves while another process still holds the
|
|
141
|
-
id's lock. A genuinely new attempt becomes possible only once the previous one is terminal and
|
|
142
|
-
the id's lock is free again, at which point an ordinary \`solution_evaluate\` call starts
|
|
143
|
-
one.
|
|
144
|
-
|
|
145
|
-
${RECONNECT_FACT_POLL_AND_RETENTION}. \`running-unconfirmed\` still means keep
|
|
146
|
-
polling, not stall or escalate: it resolves by itself, into \`running\`
|
|
147
|
-
or once the lock is reclaimed as stale. Never escalate to a human before
|
|
148
|
-
the poll hint has elapsed.
|
|
149
|
-
`;
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=solution-acceptance-reconnect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solution-acceptance-reconnect.js","sourceRoot":"","sources":["../../../src/policy-packs/builtin/solution-acceptance-reconnect.ts"],"names":[],"mappings":"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"}
|