@lannguyensi/harness 0.43.0 → 0.44.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 +35 -0
- package/dist/cli/dry-run.js +18 -12
- package/dist/cli/dry-run.js.map +1 -1
- package/dist/cli/index.js +4 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/templates.d.ts +1 -1
- package/dist/cli/init/templates.js +6 -4
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/pack/hook-post-merge-gate.js +43 -25
- package/dist/cli/pack/hook-post-merge-gate.js.map +1 -1
- package/dist/cli/policy/intercept.js +168 -40
- package/dist/cli/policy/intercept.js.map +1 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +90 -10
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +112 -16
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/post-merge-gate.js +39 -22
- package/dist/policy-packs/builtin/post-merge-gate.js.map +1 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +13 -0
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +14 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +1 -1
- package/dist/runtime/command-normalize.d.ts +317 -4
- package/dist/runtime/command-normalize.js +741 -35
- package/dist/runtime/command-normalize.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/intercept.d.ts +171 -3
- package/dist/runtime/intercept.js +422 -42
- package/dist/runtime/intercept.js.map +1 -1
- package/dist/runtime/read-only-bash.js +58 -7
- package/dist/runtime/read-only-bash.js.map +1 -1
- package/dist/runtime/shell-word.d.ts +21 -0
- package/dist/runtime/shell-word.js +242 -0
- package/dist/runtime/shell-word.js.map +1 -0
- package/package.json +3 -1
|
@@ -5,12 +5,15 @@
|
|
|
5
5
|
// the decisions and the Claude Code deny-JSON (or null when all allow).
|
|
6
6
|
// Side effects (stdin, stdout, ledger I/O) live in the thin CLI entrypoint
|
|
7
7
|
// that wraps this.
|
|
8
|
+
import * as fs from "node:fs";
|
|
9
|
+
import * as path from "node:path";
|
|
8
10
|
import { evaluateExtract, evaluateRequires, parseDurationSeconds, substituteTemplate, } from "../policies/index.js";
|
|
9
11
|
import { renderProducers } from "../policies/producers.js";
|
|
10
12
|
import { buildActionEnvelope } from "./action-envelope.js";
|
|
11
13
|
import { renderAgentFacing } from "./agent-facing.js";
|
|
12
|
-
import { normalizeCommand } from "./command-normalize.js";
|
|
14
|
+
import { normalizeCommand, normalizeCommandAmpAware, segmentViewOf, } from "./command-normalize.js";
|
|
13
15
|
import { resolveEnvironment, } from "./environment-resolver.js";
|
|
16
|
+
import { resolveGitContext } from "./git-context.js";
|
|
14
17
|
import { POLICY_DECISION_TYPE } from "./ledger-record.js";
|
|
15
18
|
import { classifyRisk } from "./risk-classifier.js";
|
|
16
19
|
import { resolveSessionId } from "./session-id.js";
|
|
@@ -57,8 +60,16 @@ function enrichEnvelope(manifest, event, riskContext, now) {
|
|
|
57
60
|
* tests), which fall back to computing it lazily right here — correct
|
|
58
61
|
* either way, since `normalizeCommand` is a pure function of the
|
|
59
62
|
* command string alone.
|
|
63
|
+
*
|
|
64
|
+
* `ampNormalizedCommandThunk` (task aabbad63) is the SAME
|
|
65
|
+
* resolved-by-the-wrapper pattern for the ampersand-aware SECOND
|
|
66
|
+
* normalisation pass, but threaded as a memoised THUNK rather than a
|
|
67
|
+
* precomputed value — see `InterceptOptions.ampNormalizedCommandThunk`
|
|
68
|
+
* for why laziness matters here specifically. Omitted callers fall back
|
|
69
|
+
* to calling `normalizeCommandAmpAware` directly, same shape as the
|
|
70
|
+
* `precomputedNormalizedCommand` fallback above.
|
|
60
71
|
*/
|
|
61
|
-
export function policyMatchesEvent(policy, event, precomputedNormalizedCommand) {
|
|
72
|
+
export function policyMatchesEvent(policy, event, precomputedNormalizedCommand, ampNormalizedCommandThunk) {
|
|
62
73
|
if (policy.trigger.event !== event.hook_event_name)
|
|
63
74
|
return false;
|
|
64
75
|
if (policy.trigger.match !== undefined) {
|
|
@@ -80,23 +91,33 @@ export function policyMatchesEvent(policy, event, precomputedNormalizedCommand)
|
|
|
80
91
|
catch {
|
|
81
92
|
return false;
|
|
82
93
|
}
|
|
83
|
-
// Raw-OR-normalised (D-003, run 2026-07-27-gate-
|
|
84
|
-
// resolution
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
//
|
|
94
|
+
// Raw-OR-normalised-OR-amp-normalised (D-003, run 2026-07-27-gate-
|
|
95
|
+
// target-repo-resolution; third arm added task aabbad63): test the
|
|
96
|
+
// RAW command first — cheap, and byte-identical to the pre-fix
|
|
97
|
+
// behaviour — then, only if that fails, the primary NORMALISED
|
|
98
|
+
// command (wrapper prefixes peeled, git global options dropped,
|
|
99
|
+
// whitespace collapsed, BOUNDARY_RE segmentation) — then, only if
|
|
100
|
+
// THAT also fails, the ampersand-aware second pass (AMP_BOUNDARY_RE
|
|
101
|
+
// segmentation, closing the bare-`&` family BOUNDARY_RE cannot see:
|
|
102
|
+
// `A=x&env -C /tmp git status`, `echo hi & nice git status`).
|
|
103
|
+
// Strictly additive at every step: a command that matched today
|
|
104
|
+
// keeps matching via the raw test alone; the primary normalised form
|
|
105
|
+
// can only ADD a match (env/nice/command wrappers, extra git global
|
|
106
|
+
// options, doubled whitespace); the amp-aware form can only add a
|
|
107
|
+
// FURTHER match on top of those two, never remove one either of them
|
|
108
|
+
// already found. Replacing the matcher input instead of OR-ing it in
|
|
109
|
+
// risks silently REMOVING an existing match if some pass ever
|
|
110
|
+
// mangles a shape — the fail-open direction for a gate — so this
|
|
111
|
+
// stays additive rather than a substitution at every arm.
|
|
96
112
|
if (!re.test(command)) {
|
|
97
113
|
const { normalized } = precomputedNormalizedCommand ?? normalizeCommand(command);
|
|
98
|
-
if (!re.test(normalized))
|
|
99
|
-
|
|
114
|
+
if (!re.test(normalized)) {
|
|
115
|
+
const amp = ampNormalizedCommandThunk
|
|
116
|
+
? ampNormalizedCommandThunk()
|
|
117
|
+
: normalizeCommandAmpAware(command);
|
|
118
|
+
if (!re.test(amp.normalized))
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
100
121
|
}
|
|
101
122
|
}
|
|
102
123
|
return true;
|
|
@@ -323,6 +344,325 @@ function filterEntriesByTag(entries, tag) {
|
|
|
323
344
|
(e.content.includes(tag) ||
|
|
324
345
|
(e.source !== undefined && e.source.includes(tag))));
|
|
325
346
|
}
|
|
347
|
+
/**
|
|
348
|
+
* Which of a policy's own trigger-satisfying segments name a target — the
|
|
349
|
+
* attribution sibling of `policyMatchesEvent` (task `98ad072f`, T-003).
|
|
350
|
+
* Re-tests the policy's OWN `bash_match` regex against each segment's
|
|
351
|
+
* `text` in isolation: every shipped `bash_match` alternation includes a
|
|
352
|
+
* `^` branch, so testing it against one segment's canonicalised text
|
|
353
|
+
* alone (no leading boundary character — see `CommandSegment.text`'s own
|
|
354
|
+
* doc comment) is well-defined. Returns every segment that matches on its
|
|
355
|
+
* own — usually one, occasionally several (D-004: a decoy read and a cwd
|
|
356
|
+
* read chained in one command can each independently satisfy the SAME
|
|
357
|
+
* trigger).
|
|
358
|
+
*
|
|
359
|
+
* Never changes WHETHER a policy matches — `policyMatchesEvent` already
|
|
360
|
+
* decided that from the WHOLE command (raw-or-normalised-or-amp-
|
|
361
|
+
* normalised), unchanged by this function. This only narrows down WHICH
|
|
362
|
+
* segment(s), if any, are individually responsible for the match, so
|
|
363
|
+
* `intercept()` below knows which segment's target — if any — to resolve
|
|
364
|
+
* the `${REPO}`/`${BRANCH}`/`currentHeadSha` builtins from instead of the
|
|
365
|
+
* event's own cwd. `[]` when the policy has no `bash_match` trigger (an
|
|
366
|
+
* MCP-tool-name-triggered policy — no segment concept applies), when its
|
|
367
|
+
* regex is malformed (mirrors `policyMatchesEvent`'s own defensive
|
|
368
|
+
* `try/catch`), or when the whole-command match came ONLY from the
|
|
369
|
+
* ampersand-aware third arm: `segments` here is always built from the
|
|
370
|
+
* PRIMARY (`BOUNDARY_RE`) segmentation, which — by construction — cannot
|
|
371
|
+
* itself contain the bare-`&` split the amp arm relies on, so an amp-
|
|
372
|
+
* only match finds no individually-matching segment and this returns
|
|
373
|
+
* `[]` (D-003: cwd builtins, identical to shipped).
|
|
374
|
+
*/
|
|
375
|
+
export function attributeTriggerSegments(policy, segments) {
|
|
376
|
+
if (policy.trigger.bash_match === undefined)
|
|
377
|
+
return [];
|
|
378
|
+
let re;
|
|
379
|
+
try {
|
|
380
|
+
re = new RegExp(policy.trigger.bash_match);
|
|
381
|
+
}
|
|
382
|
+
catch {
|
|
383
|
+
return [];
|
|
384
|
+
}
|
|
385
|
+
return segments.filter((seg) => re.test(seg.text));
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Does a policy's `requires:` reference the per-repo `${REPO}`/`${BRANCH}`
|
|
389
|
+
* builtins, or ask for `at_head`? Only these policies pay the per-policy
|
|
390
|
+
* attribution cost below — every other matching policy keeps the plain,
|
|
391
|
+
* per-event cwd builtins `options.builtins` already carries, byte-
|
|
392
|
+
* identical to before this task. D-005: `at_head` is included even when
|
|
393
|
+
* `ledger_tag` itself doesn't reference `${REPO}`/`${BRANCH}`, because
|
|
394
|
+
* `at_head` compares against `currentHeadSha`, which this task resolves
|
|
395
|
+
* from the SAME per-policy context — splitting the two would check
|
|
396
|
+
* `at_head` against the cwd's HEAD while `${REPO}` (if present elsewhere)
|
|
397
|
+
* named a different repo, the worse inconsistency D-005 rejects.
|
|
398
|
+
*/
|
|
399
|
+
function usesPerRepoBuiltins(policy) {
|
|
400
|
+
const requires = policy.requires;
|
|
401
|
+
if (requires === undefined)
|
|
402
|
+
return false;
|
|
403
|
+
return (requires.at_head === true ||
|
|
404
|
+
requires.ledger_tag.includes("${REPO}") ||
|
|
405
|
+
requires.ledger_tag.includes("${BRANCH}"));
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Bound on the number of DISTINCT attributed contexts one policy is
|
|
409
|
+
* evaluated against for one event (D-013, fix round, run
|
|
410
|
+
* 2026-08-02-per-repo-gate-scoping-redesign). Each distinct context costs
|
|
411
|
+
* one ledger query and one audit write in `intercept()`'s evaluation loop
|
|
412
|
+
* below; on a manifest with several per-repo-builtins policies (the
|
|
413
|
+
* shipped `FULL_TEMPLATE` has four), an event naming K distinct targets
|
|
414
|
+
* amplifies to 4K queries/writes, unbounded by `MAX_NORMALIZE_LENGTH` —
|
|
415
|
+
* measured 200/200 at K=200 by reviewer 2, on a hook budget whose timeout
|
|
416
|
+
* is ALLOW (same class as the 07-27 quadratic hot-path fail-open: a slow
|
|
417
|
+
* enough event silently passes). `resolveAttributedContexts` returns a
|
|
418
|
+
* `"bounded"` result instead of a `contexts` array once a policy's DISTINCT
|
|
419
|
+
* targets would exceed this constant; `intercept()` denies that policy
|
|
420
|
+
* directly (naming the ambiguity) without querying the ledger for any of
|
|
421
|
+
* them, rather than silently evaluating all of them.
|
|
422
|
+
*/
|
|
423
|
+
export const MAX_ATTRIBUTED_CONTEXTS = 4;
|
|
424
|
+
/**
|
|
425
|
+
* Realpath a path for identity comparison, never throwing (D-012, fix
|
|
426
|
+
* round, run 2026-08-02-per-repo-gate-scoping-redesign). Falls back to the
|
|
427
|
+
* LEXICAL path unchanged when the target does not exist or is otherwise
|
|
428
|
+
* unreadable (`fs.realpathSync.native` throws `ENOENT` for a path this
|
|
429
|
+
* module was never guaranteed to have on disk, and this function must
|
|
430
|
+
* never throw — same fail-safe posture as `resolveGitContext` itself,
|
|
431
|
+
* which returns empty strings rather than throwing on a bad path).
|
|
432
|
+
* `.native` (not the plain JS `fs.realpathSync`) resolves via the OS
|
|
433
|
+
* syscall directly — cheaper, and avoids Node's own pure-JS symlink-loop
|
|
434
|
+
* bookkeeping for a value this function only uses for an identity
|
|
435
|
+
* comparison, never for a filesystem walk of its own.
|
|
436
|
+
*/
|
|
437
|
+
function realpathOrSelf(p) {
|
|
438
|
+
try {
|
|
439
|
+
return fs.realpathSync.native(p);
|
|
440
|
+
}
|
|
441
|
+
catch {
|
|
442
|
+
return p;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Resolve the distinct `${REPO}`/`${BRANCH}`/`currentHeadSha` contexts a
|
|
447
|
+
* `usesPerRepoBuiltins` policy must be evaluated against (task `98ad072f`,
|
|
448
|
+
* T-003, `01-plan.md` Proposed Approach items 2-4). The engine trusts a
|
|
449
|
+
* trigger-satisfying segment's `effectiveTarget` UNIFORMLY as the
|
|
450
|
+
* directory that segment's own invocation genuinely runs in (bash
|
|
451
|
+
* semantics) — orchestrator decision D-010, 2026-08-02: an earlier
|
|
452
|
+
* revision of this function additionally distrusted an inherited target
|
|
453
|
+
* whenever a DIFFERENT invocation intervened between the `cd` and the
|
|
454
|
+
* satisfying segment — REJECTED: that coupling has no basis in bash's own
|
|
455
|
+
* semantics, is dodgeable by inserting any harmless read between the `cd`
|
|
456
|
+
* and the gated verb, and carried its own unverified `cd`-recognition
|
|
457
|
+
* gap. The `cd <B> && git log && git push` shape this was meant to guard
|
|
458
|
+
* is not a regression at all under this design — `git push` genuinely
|
|
459
|
+
* runs inside B — see `tests/runtime/intercept-cli.test.ts`'s "leading-cd
|
|
460
|
+
* is now a deliverable" block.
|
|
461
|
+
*
|
|
462
|
+
* D-021 (UNIVERSAL-ADDITIVE, operator decision, fix round, run
|
|
463
|
+
* 2026-08-02-per-repo-gate-scoping-redesign): attribution is uniformly
|
|
464
|
+
* ADDITIVE, never REPLACE. Every satisfying segment with an attributable
|
|
465
|
+
* target — `seg.effectiveTarget !== null`, whether it came from the
|
|
466
|
+
* segment's OWN explicit repo-relocating flag (`-C`/`env -C`/`--git-dir`;
|
|
467
|
+
* `--work-tree` is excluded from ever producing a target at all, D-017)
|
|
468
|
+
* or was INHERITED from a preceding `cd` — demands the cwd context AND
|
|
469
|
+
* that target's own context, side by side; `seg.ownTarget` is not
|
|
470
|
+
* consulted for this decision. Any unsatisfied context blocks the whole
|
|
471
|
+
* event (the existing per-context evaluation machinery below is
|
|
472
|
+
* unchanged). `seg.effectiveTarget === null` (fully unattributable —
|
|
473
|
+
* D-003) still adds ONLY the cwd context — there is no foreign target to
|
|
474
|
+
* be additive WITH.
|
|
475
|
+
*
|
|
476
|
+
* Demanding cwd unconditionally makes the engine structurally immune to
|
|
477
|
+
* misattribution of the foreign target: no gap in `command-normalize.ts`'s
|
|
478
|
+
* static, string-only model of shell control flow (subshells, pipes,
|
|
479
|
+
* `cd -`, a later `cd`, an unmodeled git flag composition) can ever make a
|
|
480
|
+
* gate WEAKER than the shipped, cwd-only engine, because cwd's own demand
|
|
481
|
+
* is never dropped — only added to. This replaces an earlier REPLACE-for-
|
|
482
|
+
* own-target design (D-011) that trusted a statically extracted own
|
|
483
|
+
* target as proof of "this one invocation operates there"; four
|
|
484
|
+
* independent review passes each measured a live bypass of that
|
|
485
|
+
* invariant against the shipped binary (a forged `.git/HEAD` directory
|
|
486
|
+
* reached through, respectively, a non-persisting `cd`, `--work-tree`,
|
|
487
|
+
* more than one repo-relocating flag, and a tilde-valued flag not counted
|
|
488
|
+
* by the multi-flag guard) — see `03-decisions.md` D-011/D-017/D-018/
|
|
489
|
+
* D-019/D-020/D-021 for the full history. The static-analysis-proves-it
|
|
490
|
+
* invariant those bypasses each disproved is not carried forward here.
|
|
491
|
+
* Cost accepted by the operator: a legitimate `git -C B` from cwd A now
|
|
492
|
+
* demands BOTH A's and B's context, where the pre-D-021 engine demanded
|
|
493
|
+
* only B's.
|
|
494
|
+
*
|
|
495
|
+
* D-012: a target reached through a symlink resolves to its REAL
|
|
496
|
+
* (realpath'd) repository identity, not the symlink's own lexical
|
|
497
|
+
* basename — `resolveGitContext` derives `repo` from the basename of
|
|
498
|
+
* wherever it's pointed, and never itself realpaths, so an agent could
|
|
499
|
+
* otherwise pick the demanded repo identity by naming a symlink.
|
|
500
|
+
*
|
|
501
|
+
* D-013: distinct contexts are bounded at `MAX_ATTRIBUTED_CONTEXTS`; see
|
|
502
|
+
* that constant's own comment.
|
|
503
|
+
*
|
|
504
|
+
* D-015: the cwd context is deduped by its OWN `[REPO, BRANCH, sha]`
|
|
505
|
+
* signature (not the literal string `"cwd"`), so a foreign path that
|
|
506
|
+
* resolves to the SAME repository identity as cwd (e.g. a subdirectory of
|
|
507
|
+
* the cwd repo reached via an explicit `-C`) collapses into the cwd
|
|
508
|
+
* context instead of producing a spurious duplicate decision/audit write.
|
|
509
|
+
* `repoOverridden` / `branchOverridden` (from `InterceptOptions`, both
|
|
510
|
+
* default `false`) keep an operator's `HARNESS_REPO`/`HARNESS_BRANCH`
|
|
511
|
+
* override intact in an attributed foreign context instead of letting the
|
|
512
|
+
* target repo's own identity silently overwrite it — independently per
|
|
513
|
+
* field. `satisfying` is a `Set` (not `Array.includes` per segment) for
|
|
514
|
+
* O(1) membership tests instead of O(n) per segment.
|
|
515
|
+
*
|
|
516
|
+
* A policy with no attributable foreign target (no `bash_match`, no
|
|
517
|
+
* individually-matching segment, only an amp-arm-only match, an
|
|
518
|
+
* unattributable composition, a target resolving to the SAME repository
|
|
519
|
+
* identity as cwd, or a target outside any git repo — D-003) is evaluated
|
|
520
|
+
* EXACTLY as it is today, with the EXACT SAME `options.builtins` object
|
|
521
|
+
* reference (no clone) when nothing attributed, keeping that the
|
|
522
|
+
* byte-identical common case.
|
|
523
|
+
*
|
|
524
|
+
* `resolveGitContextMemo` is a per-`intercept()`-call cache keyed by the
|
|
525
|
+
* REALPATH'D absolute path (never module-level state — no cross-event
|
|
526
|
+
* caching), so several policies (or several satisfying segments) naming
|
|
527
|
+
* the same foreign path within one event pay the `fs` cost once, not
|
|
528
|
+
* once per policy per segment.
|
|
529
|
+
*/
|
|
530
|
+
function resolveAttributedContexts(policy, segments, cwdBuiltins, cwdCurrentHeadSha, resolveGitContextMemo, repoOverridden, branchOverridden) {
|
|
531
|
+
const cwdContext = { builtins: cwdBuiltins, currentHeadSha: cwdCurrentHeadSha };
|
|
532
|
+
const satisfying = new Set(attributeTriggerSegments(policy, segments));
|
|
533
|
+
if (satisfying.size === 0)
|
|
534
|
+
return { kind: "contexts", contexts: [cwdContext] };
|
|
535
|
+
const cwdSignature = [cwdBuiltins.REPO, cwdBuiltins.BRANCH, cwdCurrentHeadSha ?? ""].join("|");
|
|
536
|
+
const seenSignatures = new Set();
|
|
537
|
+
const contexts = [];
|
|
538
|
+
const addCwdOnce = () => {
|
|
539
|
+
if (seenSignatures.has(cwdSignature))
|
|
540
|
+
return;
|
|
541
|
+
seenSignatures.add(cwdSignature);
|
|
542
|
+
contexts.push(cwdContext);
|
|
543
|
+
};
|
|
544
|
+
const cwdReal = realpathOrSelf(cwdBuiltins.CWD);
|
|
545
|
+
for (const seg of segments) {
|
|
546
|
+
if (!satisfying.has(seg))
|
|
547
|
+
continue;
|
|
548
|
+
if (seg.effectiveTarget === null) {
|
|
549
|
+
// D-003: fully unattributable — cwd only, no foreign target to be
|
|
550
|
+
// additive with.
|
|
551
|
+
addCwdOnce();
|
|
552
|
+
continue;
|
|
553
|
+
}
|
|
554
|
+
// D-021 (UNIVERSAL-ADDITIVE, operator decision after the four-pass
|
|
555
|
+
// halt — see this function's own doc comment): the cwd context is
|
|
556
|
+
// demanded UNCONDITIONALLY here, regardless of whether the target came
|
|
557
|
+
// from the segment's own explicit flag or was inherited from a
|
|
558
|
+
// preceding `cd`. `seg.ownTarget` is no longer read for this decision.
|
|
559
|
+
addCwdOnce();
|
|
560
|
+
const resolvedLexical = path.resolve(cwdBuiltins.CWD, seg.effectiveTarget);
|
|
561
|
+
const resolved = realpathOrSelf(resolvedLexical);
|
|
562
|
+
if (resolved === cwdReal) {
|
|
563
|
+
addCwdOnce();
|
|
564
|
+
continue;
|
|
565
|
+
}
|
|
566
|
+
let gitCtx = resolveGitContextMemo.get(resolved);
|
|
567
|
+
if (gitCtx === undefined) {
|
|
568
|
+
gitCtx = resolveGitContext(resolved);
|
|
569
|
+
resolveGitContextMemo.set(resolved, gitCtx);
|
|
570
|
+
}
|
|
571
|
+
if (gitCtx.repo.length === 0) {
|
|
572
|
+
// D-003: outside any repo → cwd fallback, not a distinct context.
|
|
573
|
+
addCwdOnce();
|
|
574
|
+
continue;
|
|
575
|
+
}
|
|
576
|
+
const signature = [gitCtx.repo, gitCtx.branch, gitCtx.sha].join("|");
|
|
577
|
+
if (signature === cwdSignature) {
|
|
578
|
+
// D-015: a foreign target that resolves to cwd's own REAL identity
|
|
579
|
+
// (e.g. a subdirectory of the cwd repo reached via `-C`, a
|
|
580
|
+
// different literal path than `cwdBuiltins.CWD` itself but the SAME
|
|
581
|
+
// `.git`) collapses into the cwd context regardless of segment
|
|
582
|
+
// order — not just when a bare cwd-reading segment happened to add
|
|
583
|
+
// it first.
|
|
584
|
+
addCwdOnce();
|
|
585
|
+
continue;
|
|
586
|
+
}
|
|
587
|
+
if (seenSignatures.has(signature))
|
|
588
|
+
continue;
|
|
589
|
+
if (contexts.length >= MAX_ATTRIBUTED_CONTEXTS) {
|
|
590
|
+
// D-013: fail CLOSED — do not evaluate any of them, name the
|
|
591
|
+
// ambiguity instead. `contexts.length + 1` names "at least this
|
|
592
|
+
// many distinct targets", the count observed before bailing, not
|
|
593
|
+
// necessarily the final total (the loop stops here).
|
|
594
|
+
return { kind: "bounded", distinctCount: contexts.length + 1 };
|
|
595
|
+
}
|
|
596
|
+
seenSignatures.add(signature);
|
|
597
|
+
contexts.push({
|
|
598
|
+
builtins: {
|
|
599
|
+
...cwdBuiltins,
|
|
600
|
+
REPO: repoOverridden ? cwdBuiltins.REPO : gitCtx.repo,
|
|
601
|
+
BRANCH: branchOverridden ? cwdBuiltins.BRANCH : gitCtx.branch,
|
|
602
|
+
},
|
|
603
|
+
currentHeadSha: gitCtx.sha.length > 0 ? gitCtx.sha : undefined,
|
|
604
|
+
});
|
|
605
|
+
}
|
|
606
|
+
// Defensive fallback: every satisfying segment existed but somehow none
|
|
607
|
+
// was added above (should not happen — every branch above adds either
|
|
608
|
+
// the cwd context or a foreign one). Never leave a matched, per-repo-
|
|
609
|
+
// builtins policy with zero contexts to evaluate against.
|
|
610
|
+
return { kind: "contexts", contexts: contexts.length > 0 ? contexts : [cwdContext] };
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Lazily resolve the event's per-segment view for attribution, computed
|
|
614
|
+
* at most once per `intercept()` call (the caller, `intercept()` below,
|
|
615
|
+
* memoises the RESULT in its own `segmentsForAttribution` local — this
|
|
616
|
+
* function itself is called at most once per call already, but stays
|
|
617
|
+
* side-effect-free so that remains true regardless of caller changes).
|
|
618
|
+
* Prefers `options.commandSegmentsThunk` (D-015 fix round: the deferred,
|
|
619
|
+
* compute-only-if-needed seam — see its own doc comment), then the eager
|
|
620
|
+
* `options.commandSegments`, then falls back to computing it directly
|
|
621
|
+
* from the event's own command for standalone callers/tests that inject
|
|
622
|
+
* neither. `null` (truncated — see `segmentViewOf`) and "no Bash command
|
|
623
|
+
* on this event" both collapse to `[]`, the same "nothing to attribute,
|
|
624
|
+
* cwd builtins" shape as a policy with no `bash_match` at all.
|
|
625
|
+
*/
|
|
626
|
+
function resolveCommandSegments(options) {
|
|
627
|
+
if (options.commandSegmentsThunk !== undefined)
|
|
628
|
+
return options.commandSegmentsThunk() ?? [];
|
|
629
|
+
if (options.commandSegments !== undefined)
|
|
630
|
+
return options.commandSegments ?? [];
|
|
631
|
+
const command = extractShellCommand(options.event);
|
|
632
|
+
if (command === null)
|
|
633
|
+
return [];
|
|
634
|
+
return segmentViewOf(command) ?? [];
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Synthesise the single decision `intercept()` records for a policy whose
|
|
638
|
+
* distinct attributed contexts exceeded `MAX_ATTRIBUTED_CONTEXTS` (D-013).
|
|
639
|
+
* Routes through `outcomeForFailedRequires` — the SAME enforcement-to-
|
|
640
|
+
* outcome mapping every other "could not safely evaluate" branch in
|
|
641
|
+
* `evaluateOnePolicy` uses — rather than a hardcoded outcome, so a
|
|
642
|
+
* `block`-enforcement policy (the security-critical case: preflight/push/
|
|
643
|
+
* merge gates) genuinely denies, while a `warn`-enforcement policy warns
|
|
644
|
+
* instead of hard-blocking, consistent with how every other failed-
|
|
645
|
+
* evaluation branch in this module already respects the policy's own
|
|
646
|
+
* declared enforcement. No ledger query, no template substitution against
|
|
647
|
+
* a resolved `ledger_tag` (there is no single context to substitute one
|
|
648
|
+
* against) — `extractValues` is still computed from `trigger.extract`
|
|
649
|
+
* against the CWD builtins (cheap, pure, matches the `operator_only`
|
|
650
|
+
* short-circuit's own reasoning) so a `ux:`/`producers:` block on this
|
|
651
|
+
* policy can still render.
|
|
652
|
+
*/
|
|
653
|
+
function boundedContextsDecision(policy, event, distinctCount, cwdBuiltins, evaluatedAt) {
|
|
654
|
+
const extract = evaluateExtract(policy.trigger.extract ?? {}, buildEventContext(event), cwdBuiltins);
|
|
655
|
+
return {
|
|
656
|
+
policyName: policy.name,
|
|
657
|
+
enforcement: policy.enforcement,
|
|
658
|
+
outcome: outcomeForFailedRequires(policy.enforcement),
|
|
659
|
+
reason: `ambiguous: this command names at least ${distinctCount} distinct repository targets for this policy, ` +
|
|
660
|
+
`exceeding the ${MAX_ATTRIBUTED_CONTEXTS}-context bound — refusing to evaluate all of them`,
|
|
661
|
+
extractValues: extract.values,
|
|
662
|
+
ledgerTag: "(bounded: too many distinct attributed targets — no context queried)",
|
|
663
|
+
evaluatedAt,
|
|
664
|
+
};
|
|
665
|
+
}
|
|
326
666
|
export async function intercept(options) {
|
|
327
667
|
const { manifest, event } = options;
|
|
328
668
|
// The Risk Gate is active only when some policy declares a `when:`
|
|
@@ -351,8 +691,9 @@ export async function intercept(options) {
|
|
|
351
691
|
const whenFallbackMap = new Map();
|
|
352
692
|
const matching = [];
|
|
353
693
|
for (const p of manifest.policies) {
|
|
354
|
-
if (!policyMatchesEvent(p, event, options.normalizedCommand))
|
|
694
|
+
if (!policyMatchesEvent(p, event, options.normalizedCommand, options.ampNormalizedCommandThunk)) {
|
|
355
695
|
continue;
|
|
696
|
+
}
|
|
356
697
|
if (p.when === undefined) {
|
|
357
698
|
matching.push(p);
|
|
358
699
|
continue;
|
|
@@ -364,34 +705,73 @@ export async function intercept(options) {
|
|
|
364
705
|
matching.push(p);
|
|
365
706
|
}
|
|
366
707
|
}
|
|
708
|
+
// Per-policy attribution (task `98ad072f`, T-003): `segmentsForAttribution`
|
|
709
|
+
// is resolved at most once, lazily, only if some matching policy actually
|
|
710
|
+
// uses `${REPO}`/`${BRANCH}`/`at_head` — a manifest with none of those
|
|
711
|
+
// (every Phase 4/5/6-only manifest) never computes it.
|
|
712
|
+
// `resolveGitContextMemo` is this call's own, non-module-level cache
|
|
713
|
+
// (task constraint: no eager/global filesystem work) — see
|
|
714
|
+
// `resolveAttributedContexts`'s own comment.
|
|
715
|
+
let segmentsForAttribution;
|
|
716
|
+
const resolveGitContextMemo = new Map();
|
|
367
717
|
const decisions = [];
|
|
368
718
|
for (const policy of matching) {
|
|
369
|
-
const
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
719
|
+
const attributed = usesPerRepoBuiltins(policy)
|
|
720
|
+
? resolveAttributedContexts(policy, (segmentsForAttribution ??= resolveCommandSegments(options)), options.builtins, options.currentHeadSha, resolveGitContextMemo, options.repoOverridden === true, options.branchOverridden === true)
|
|
721
|
+
: { kind: "contexts", contexts: [{ builtins: options.builtins, currentHeadSha: options.currentHeadSha }] };
|
|
722
|
+
if (attributed.kind === "bounded") {
|
|
723
|
+
// D-013: fail CLOSED without querying the ledger for any of the
|
|
724
|
+
// (too many) distinct targets — one synthetic decision, one audit
|
|
725
|
+
// write, then move on to the next policy. Ledger-query count for
|
|
726
|
+
// THIS policy stays at zero regardless of how many distinct targets
|
|
727
|
+
// the command actually names, instead of scaling with them.
|
|
728
|
+
const evaluatedAt = (options.now ?? new Date()).toISOString();
|
|
729
|
+
const decision = boundedContextsDecision(policy, event, attributed.distinctCount, options.builtins, evaluatedAt);
|
|
730
|
+
decisions.push(decision);
|
|
731
|
+
try {
|
|
732
|
+
await options.ledger.record(decision, resolveSessionId(event.session_id));
|
|
383
733
|
}
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
734
|
+
catch (err) {
|
|
735
|
+
(options.stderr ?? process.stderr).write(`harness runtime intercept: audit-write failed for ${decision.policyName}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
736
|
+
}
|
|
737
|
+
continue;
|
|
388
738
|
}
|
|
389
|
-
|
|
390
|
-
//
|
|
391
|
-
//
|
|
392
|
-
//
|
|
393
|
-
//
|
|
394
|
-
|
|
739
|
+
for (const context of attributed.contexts) {
|
|
740
|
+
// Same object reference as `options` on the (overwhelmingly common)
|
|
741
|
+
// single-cwd-context path — no clone, byte-identical to the
|
|
742
|
+
// pre-attribution call shape. Only a genuinely foreign context
|
|
743
|
+
// builds a shallow override.
|
|
744
|
+
const contextOptions = context.builtins === options.builtins &&
|
|
745
|
+
context.currentHeadSha === options.currentHeadSha
|
|
746
|
+
? options
|
|
747
|
+
: { ...options, builtins: context.builtins, currentHeadSha: context.currentHeadSha };
|
|
748
|
+
const base = await evaluateOnePolicy(policy, contextOptions);
|
|
749
|
+
// Attach the per-event Risk Gate verdicts so `harness audit` /
|
|
750
|
+
// `explain --trace` can replay the classification + environment
|
|
751
|
+
// that the `when:` match was made against. Also carry the
|
|
752
|
+
// unclassifiedFallback flag (M7) when the when: evaluation set it
|
|
753
|
+
// to true; leave the field absent otherwise so decisions from
|
|
754
|
+
// manifests without a `when:` policy stay byte-identical.
|
|
755
|
+
const whenFallback = whenFallbackMap.get(policy.name);
|
|
756
|
+
const decision = enriched
|
|
757
|
+
? {
|
|
758
|
+
...base,
|
|
759
|
+
risk: enriched.risk,
|
|
760
|
+
environment: enriched.environment,
|
|
761
|
+
...(whenFallback === true ? { whenUnclassifiedFallback: true } : {}),
|
|
762
|
+
}
|
|
763
|
+
: base;
|
|
764
|
+
decisions.push(decision);
|
|
765
|
+
try {
|
|
766
|
+
await options.ledger.record(decision, resolveSessionId(event.session_id));
|
|
767
|
+
}
|
|
768
|
+
catch (err) {
|
|
769
|
+
// Audit-write failure must not block; the decision is still applied.
|
|
770
|
+
// Surface the failure to stderr so a persistently-failing recorder
|
|
771
|
+
// does not silently leave `harness audit` / `explain --trace` blind.
|
|
772
|
+
// Goes to stderr to keep the stdout deny-JSON contract intact.
|
|
773
|
+
(options.stderr ?? process.stderr).write(`harness runtime intercept: audit-write failed for ${decision.policyName}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
774
|
+
}
|
|
395
775
|
}
|
|
396
776
|
}
|
|
397
777
|
// First blocking decision wins the envelope. `deny` and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../src/runtime/intercept.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intercept.js","sourceRoot":"","sources":["../../src/runtime/intercept.ts"],"names":[],"mappings":"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"}
|