audit-tools 0.32.42 → 0.32.44

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.
Files changed (84) hide show
  1. package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
  2. package/dist/audit/cli/rollingAuditDispatch.js +21 -1
  3. package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
  4. package/dist/audit/cli/scoreTokensCommand.d.ts +18 -0
  5. package/dist/audit/cli/scoreTokensCommand.d.ts.map +1 -0
  6. package/dist/audit/cli/scoreTokensCommand.js +130 -0
  7. package/dist/audit/cli/scoreTokensCommand.js.map +1 -0
  8. package/dist/audit/cli.d.ts.map +1 -1
  9. package/dist/audit/cli.js +5 -1
  10. package/dist/audit/cli.js.map +1 -1
  11. package/dist/audit/io/tokenUsageLedger.d.ts +57 -0
  12. package/dist/audit/io/tokenUsageLedger.d.ts.map +1 -0
  13. package/dist/audit/io/tokenUsageLedger.js +52 -0
  14. package/dist/audit/io/tokenUsageLedger.js.map +1 -0
  15. package/dist/audit/reporting/scoreTokens.d.ts +112 -0
  16. package/dist/audit/reporting/scoreTokens.d.ts.map +1 -0
  17. package/dist/audit/reporting/scoreTokens.js +195 -0
  18. package/dist/audit/reporting/scoreTokens.js.map +1 -0
  19. package/dist/remediate/contractPipeline/counterexampleFingerprint.d.ts +27 -0
  20. package/dist/remediate/contractPipeline/counterexampleFingerprint.d.ts.map +1 -0
  21. package/dist/remediate/contractPipeline/counterexampleFingerprint.js +37 -0
  22. package/dist/remediate/contractPipeline/counterexampleFingerprint.js.map +1 -0
  23. package/dist/remediate/index.d.ts +34 -0
  24. package/dist/remediate/index.d.ts.map +1 -1
  25. package/dist/remediate/index.js +92 -26
  26. package/dist/remediate/index.js.map +1 -1
  27. package/dist/remediate/riskSignal.d.ts +30 -0
  28. package/dist/remediate/riskSignal.d.ts.map +1 -1
  29. package/dist/remediate/riskSignal.js +87 -1
  30. package/dist/remediate/riskSignal.js.map +1 -1
  31. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  32. package/dist/remediate/steps/contractPipeline.js +35 -4
  33. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  34. package/dist/remediate/steps/contractPipelinePrompts.d.ts.map +1 -1
  35. package/dist/remediate/steps/contractPipelinePrompts.js +1 -1
  36. package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
  37. package/dist/remediate/steps/dispatch/acceptNode.d.ts +30 -0
  38. package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -1
  39. package/dist/remediate/steps/dispatch/acceptNode.js +71 -1
  40. package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -1
  41. package/dist/remediate/steps/gateCommands.d.ts +17 -0
  42. package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
  43. package/dist/remediate/steps/gateCommands.js +19 -0
  44. package/dist/remediate/steps/gateCommands.js.map +1 -1
  45. package/dist/remediate/steps/leanFastPath.d.ts +0 -31
  46. package/dist/remediate/steps/leanFastPath.d.ts.map +1 -1
  47. package/dist/remediate/steps/leanFastPath.js +27 -127
  48. package/dist/remediate/steps/leanFastPath.js.map +1 -1
  49. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  50. package/dist/remediate/steps/nextStep.js +37 -24
  51. package/dist/remediate/steps/nextStep.js.map +1 -1
  52. package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
  53. package/dist/remediate/steps/rollingSession.js +21 -4
  54. package/dist/remediate/steps/rollingSession.js.map +1 -1
  55. package/dist/remediate/validation/artifacts.d.ts.map +1 -1
  56. package/dist/remediate/validation/artifacts.js +15 -26
  57. package/dist/remediate/validation/artifacts.js.map +1 -1
  58. package/dist/remediate/validation/contractPipeline.d.ts +1 -1
  59. package/dist/remediate/validation/contractPipeline.d.ts.map +1 -1
  60. package/dist/remediate/validation/contractPipeline.js +1 -1
  61. package/dist/remediate/validation/contractPipeline.js.map +1 -1
  62. package/dist/remediate/validation/contractPipelineGates.d.ts +52 -0
  63. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  64. package/dist/remediate/validation/contractPipelineGates.js +61 -0
  65. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  66. package/dist/shared/dispatch/rollingDispatch.d.ts +15 -0
  67. package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
  68. package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
  69. package/dist/shared/index.d.ts +1 -0
  70. package/dist/shared/index.d.ts.map +1 -1
  71. package/dist/shared/index.js +1 -0
  72. package/dist/shared/index.js.map +1 -1
  73. package/dist/shared/loopCorePaths.d.ts +12 -0
  74. package/dist/shared/loopCorePaths.d.ts.map +1 -0
  75. package/dist/shared/loopCorePaths.js +67 -0
  76. package/dist/shared/loopCorePaths.js.map +1 -0
  77. package/dist/shared/providers/openAiCompatibleProvider.d.ts +29 -0
  78. package/dist/shared/providers/openAiCompatibleProvider.d.ts.map +1 -1
  79. package/dist/shared/providers/openAiCompatibleProvider.js +60 -0
  80. package/dist/shared/providers/openAiCompatibleProvider.js.map +1 -1
  81. package/dist/shared/providers/types.d.ts +19 -0
  82. package/dist/shared/providers/types.d.ts.map +1 -1
  83. package/package.json +2 -1
  84. package/wrapper/audit-code-wrapper-lib.mjs +15 -39
@@ -0,0 +1,195 @@
1
+ /**
2
+ * score-tokens — the COST counterpart to the A-2 quality oracle (`score-audit`).
3
+ *
4
+ * `scoreTokens` is a PURE function of a run's recorded token-usage ledger
5
+ * (`token-usage.jsonl`, appended post-hoc at packet-completion time by
6
+ * `appendTokenUsageLine` — see `src/audit/io/tokenUsageLedger.ts`). It reports
7
+ * real per-step input/output tokens and prefix cache-hit ratio, exactly what the
8
+ * provider reported on a COMPLETED response — never a metered/token-counting API
9
+ * call and never `estimateTokensFromBytes` (that estimator is for PLANNING only).
10
+ *
11
+ * No-silent-scoring (mirrors score-audit's `unmatched[]` discipline): a step
12
+ * whose usage is entirely unreported (the agentic-CLI providers — claude-code /
13
+ * codex / opencode — spawn an external process with no structured usage) is
14
+ * counted in `totals.unmeasured_steps` and excluded from the token/cache-hit
15
+ * aggregates — NEVER folded in as a silent 0.
16
+ *
17
+ * Pure module: no IO, no clock (the ledger's wall-clock timestamp is read but
18
+ * never used to influence the verdict), no model identity — the same (entries,
19
+ * prefixHashes) always yields a byte-identical scorecard, order-independent.
20
+ */
21
+ import { createHash } from "node:crypto";
22
+ function ratio(numerator, denominator) {
23
+ return denominator === 0 ? null : numerator / denominator;
24
+ }
25
+ /** True iff at least one of the four usage legs was reported (not null/undefined). */
26
+ function isMeasured(entry) {
27
+ return (entry.input_tokens != null ||
28
+ entry.output_tokens != null ||
29
+ entry.cache_read_tokens != null ||
30
+ entry.cache_creation_tokens != null);
31
+ }
32
+ /**
33
+ * Score a run's recorded token-usage ledger — the pure score-tokens oracle.
34
+ *
35
+ * `prefixHashes` is an OPTIONAL caller-supplied map of `packet_id ->
36
+ * fixed-prefix hash` (see {@link packetPromptPrefixHash}), computed by the
37
+ * caller from the run's recorded packet prompts. Omit it when wiring real
38
+ * prompt hashes end-to-end is not available — `prefix_stability` then defaults
39
+ * to `{ stable: true, diverging_packet_ids: [] }` (no signal, not a false
40
+ * failure).
41
+ */
42
+ export function scoreTokens(runId, entries, prefixHashes) {
43
+ // Deterministic (sorted by packet_id) iteration so the scorecard is
44
+ // byte-identical regardless of input order.
45
+ const sorted = [...entries].sort((a, b) => a.packet_id.localeCompare(b.packet_id));
46
+ const steps = [];
47
+ let totalInput = 0;
48
+ let totalOutput = 0;
49
+ let measuredSteps = 0;
50
+ let unmeasuredSteps = 0;
51
+ let cacheHitReadSum = 0;
52
+ let cacheHitDenomSum = 0;
53
+ let cacheHitQualifyingSteps = 0;
54
+ const providerCoverage = new Map();
55
+ for (const entry of sorted) {
56
+ const poolKey = entry.pool_id ?? "unknown";
57
+ const measured = isMeasured(entry);
58
+ if (measured) {
59
+ measuredSteps += 1;
60
+ totalInput += entry.input_tokens ?? 0;
61
+ totalOutput += entry.output_tokens ?? 0;
62
+ // A pool is "measured" the moment ANY of its steps reported usage.
63
+ providerCoverage.set(poolKey, "measured");
64
+ }
65
+ else {
66
+ unmeasuredSteps += 1;
67
+ // Never downgrade a pool already proven "measured" by an earlier step.
68
+ if (providerCoverage.get(poolKey) !== "measured") {
69
+ providerCoverage.set(poolKey, "unmeasured");
70
+ }
71
+ }
72
+ // cache_hit_ratio requires BOTH legs measured (a lone cache_read with no
73
+ // input denominator, or vice versa, is not a ratio — surfaced as null).
74
+ const cacheRead = entry.cache_read_tokens;
75
+ const input = entry.input_tokens;
76
+ let cacheHitRatio = null;
77
+ if (cacheRead != null && input != null) {
78
+ cacheHitRatio = ratio(cacheRead, cacheRead + input);
79
+ if (cacheHitRatio !== null) {
80
+ cacheHitReadSum += cacheRead;
81
+ cacheHitDenomSum += cacheRead + input;
82
+ cacheHitQualifyingSteps += 1;
83
+ }
84
+ }
85
+ steps.push({
86
+ packet_id: entry.packet_id,
87
+ pool_id: entry.pool_id ?? null,
88
+ lens: entry.lens ?? null,
89
+ input_tokens: entry.input_tokens ?? null,
90
+ output_tokens: entry.output_tokens ?? null,
91
+ cache_read_tokens: entry.cache_read_tokens ?? null,
92
+ cache_hit_ratio: cacheHitRatio,
93
+ });
94
+ }
95
+ return {
96
+ schema_version: "score-tokens-scorecard/v1",
97
+ run_id: runId,
98
+ steps,
99
+ totals: {
100
+ input_tokens: totalInput,
101
+ output_tokens: totalOutput,
102
+ measured_steps: measuredSteps,
103
+ unmeasured_steps: unmeasuredSteps,
104
+ },
105
+ cache_hit_ratio_overall: cacheHitQualifyingSteps > 0 ? ratio(cacheHitReadSum, cacheHitDenomSum) : null,
106
+ prefix_stability: computePrefixStability(prefixHashes),
107
+ provider_coverage: Object.fromEntries([...providerCoverage.entries()].sort(([a], [b]) => a.localeCompare(b))),
108
+ };
109
+ }
110
+ /**
111
+ * Derive `prefix_stability` from an optional `packet_id -> fixed-prefix hash`
112
+ * map. Absent/empty input defaults to "stable" (no structural signal available,
113
+ * not a false failure). Otherwise every packet must share the FIRST (by sorted
114
+ * packet_id) hash; any divergence is surfaced, never silently averaged away.
115
+ */
116
+ function computePrefixStability(prefixHashes) {
117
+ const entries = prefixHashes ? Object.entries(prefixHashes) : [];
118
+ if (entries.length === 0)
119
+ return { stable: true, diverging_packet_ids: [] };
120
+ const sortedEntries = [...entries].sort(([a], [b]) => a.localeCompare(b));
121
+ const referenceHash = sortedEntries[0][1];
122
+ const diverging = sortedEntries
123
+ .filter(([, hash]) => hash !== referenceHash)
124
+ .map(([packetId]) => packetId)
125
+ .sort();
126
+ return { stable: diverging.length === 0, diverging_packet_ids: diverging };
127
+ }
128
+ /**
129
+ * The structural, provider-independent prefix-stability boundary: hash of the
130
+ * FIXED prefix of a packet's rendered prompt — everything BEFORE the volatile
131
+ * `## Packet` section (the same boundary
132
+ * `tests/audit/dispatch-helpers.test.mjs` pins for prompt-caching:
133
+ * `prompt.slice(0, prompt.indexOf("## Packet"))`). Two packets in the same run
134
+ * whose fixed prefix hashes to the SAME value are byte-identical up to that
135
+ * point — the structural precondition for a provider's prefix cache to hit,
136
+ * independent of whether the provider actually reports a cache-hit ratio.
137
+ *
138
+ * A prompt with no `## Packet` marker hashes its entirety (defensive — never
139
+ * throws on an unexpected prompt shape).
140
+ */
141
+ export function packetPromptPrefixHash(prompt) {
142
+ const markerIdx = prompt.indexOf("## Packet");
143
+ const prefix = markerIdx >= 0 ? prompt.slice(0, markerIdx) : prompt;
144
+ return createHash("sha256").update(prefix, "utf8").digest("hex");
145
+ }
146
+ /**
147
+ * The SOLE gate predicate: did the overall cache-hit ratio REGRESS (drop)
148
+ * against a baseline? Mirrors score-audit's `hallucinationRegressed` mechanism
149
+ * exactly, direction-flipped (higher cache-hit ratio is BETTER, so a regression
150
+ * is a DECREASE, not an increase).
151
+ *
152
+ * - With no baseline, nothing has regressed.
153
+ * - A `null` current ratio (no measured cache-eligible steps this run) cannot
154
+ * regress.
155
+ * - A `null` baseline ratio is treated as 0 (the floor a ratio can't drop
156
+ * below), so a null baseline never triggers a regression.
157
+ *
158
+ * Token totals are tracked (`totals`) but never gate — track-don't-gate, same
159
+ * policy as score-audit's precision/recall.
160
+ */
161
+ export function cacheHitRatioRegressed(current, baseline, epsilon = 1e-9) {
162
+ if (!baseline)
163
+ return false;
164
+ const currentRatio = current.cache_hit_ratio_overall;
165
+ if (currentRatio === null)
166
+ return false;
167
+ const baselineRatio = baseline.cache_hit_ratio_overall ?? 0;
168
+ return currentRatio < baselineRatio - epsilon;
169
+ }
170
+ /** A compact, deterministic human summary of a {@link TokenScorecard}. */
171
+ export function renderTokenScorecardMarkdown(scorecard) {
172
+ const pct = (value) => value === null ? "n/a" : `${(value * 100).toFixed(1)}%`;
173
+ const t = scorecard.totals;
174
+ const lines = [
175
+ `# Token scorecard — ${scorecard.run_id}`,
176
+ "",
177
+ `- Steps: ${t.measured_steps + t.unmeasured_steps} (measured ${t.measured_steps}, unmeasured ${t.unmeasured_steps})`,
178
+ `- Input tokens (measured only): ${t.input_tokens}`,
179
+ `- Output tokens (measured only): ${t.output_tokens}`,
180
+ `- Cache-hit ratio (gated): ${pct(scorecard.cache_hit_ratio_overall)}`,
181
+ `- Prefix stability: ${scorecard.prefix_stability.stable ? "stable" : "DIVERGING"}` +
182
+ (scorecard.prefix_stability.diverging_packet_ids.length > 0
183
+ ? ` (${scorecard.prefix_stability.diverging_packet_ids.join(", ")})`
184
+ : ""),
185
+ ];
186
+ const coverageEntries = Object.entries(scorecard.provider_coverage);
187
+ if (coverageEntries.length > 0) {
188
+ lines.push("", "## Provider coverage");
189
+ for (const [poolId, status] of coverageEntries) {
190
+ lines.push(`- \`${poolId}\`: ${status}`);
191
+ }
192
+ }
193
+ return lines.join("\n") + "\n";
194
+ }
195
+ //# sourceMappingURL=scoreTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreTokens.js","sourceRoot":"","sources":["../../../src/audit/reporting/scoreTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Content fingerprint for a counterexample.
3
+ *
4
+ * The judge↔repair convergence gate ({@link evaluateJudgeGate} in
5
+ * `../steps/contractPipeline.js`) must detect genuine re-occurrence of the
6
+ * same unrepaired defect across independent adversarial rounds. The
7
+ * reviewer-supplied counterexample `id` is free text (see
8
+ * `Counterexample.id` in `audit-tools/shared`'s obligations types) and is NOT
9
+ * a stable cross-round identity: two independent critic rounds each commonly
10
+ * label their genuinely-distinct top counterexample "CE-001" (the prompt
11
+ * schema's own example value). Keying convergence on the raw id string then
12
+ * misreads "two different CEs that happen to share a label" as "the same CE
13
+ * re-accepted after a repair" and falsely escalates a stall while a real new
14
+ * defect is being correctly repaired.
15
+ *
16
+ * This fingerprint keys on CONTENT instead: the tool-constrained
17
+ * `violated_obligation_ids` vocabulary (sorted, normalized) paired with the
18
+ * normalized `claim` prose, falling back to the normalized claim alone when
19
+ * no obligations are cited. Mirrors the derivation style of
20
+ * `src/shared/findingIdentitySignature.ts` (tiered stable fields, aggressive
21
+ * title normalization, truncated content hash) rather than introducing a
22
+ * second identity convention.
23
+ */
24
+ import { type Counterexample } from "audit-tools/shared";
25
+ /** Deterministic, content-derived identity for a counterexample. */
26
+ export declare function counterexampleFingerprint(ce: Counterexample): string;
27
+ //# sourceMappingURL=counterexampleFingerprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counterexampleFingerprint.d.ts","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/counterexampleFingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEtF,oEAAoE;AACpE,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAWpE"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Content fingerprint for a counterexample.
3
+ *
4
+ * The judge↔repair convergence gate ({@link evaluateJudgeGate} in
5
+ * `../steps/contractPipeline.js`) must detect genuine re-occurrence of the
6
+ * same unrepaired defect across independent adversarial rounds. The
7
+ * reviewer-supplied counterexample `id` is free text (see
8
+ * `Counterexample.id` in `audit-tools/shared`'s obligations types) and is NOT
9
+ * a stable cross-round identity: two independent critic rounds each commonly
10
+ * label their genuinely-distinct top counterexample "CE-001" (the prompt
11
+ * schema's own example value). Keying convergence on the raw id string then
12
+ * misreads "two different CEs that happen to share a label" as "the same CE
13
+ * re-accepted after a repair" and falsely escalates a stall while a real new
14
+ * defect is being correctly repaired.
15
+ *
16
+ * This fingerprint keys on CONTENT instead: the tool-constrained
17
+ * `violated_obligation_ids` vocabulary (sorted, normalized) paired with the
18
+ * normalized `claim` prose, falling back to the normalized claim alone when
19
+ * no obligations are cited. Mirrors the derivation style of
20
+ * `src/shared/findingIdentitySignature.ts` (tiered stable fields, aggressive
21
+ * title normalization, truncated content hash) rather than introducing a
22
+ * second identity convention.
23
+ */
24
+ import { hashContent, normalizeTitle } from "audit-tools/shared";
25
+ /** Deterministic, content-derived identity for a counterexample. */
26
+ export function counterexampleFingerprint(ce) {
27
+ const obligations = (ce.violated_obligation_ids ?? [])
28
+ .map((id) => id.trim().toLowerCase())
29
+ .filter((id) => id.length > 0)
30
+ .sort();
31
+ const claim = normalizeTitle(ce.claim);
32
+ const key = obligations.length > 0
33
+ ? `obligations|${obligations.join(",")}|${claim}`
34
+ : `claim|${claim}`;
35
+ return hashContent(key, { length: 8 });
36
+ }
37
+ //# sourceMappingURL=counterexampleFingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counterexampleFingerprint.js","sourceRoot":"","sources":["../../../src/remediate/contractPipeline/counterexampleFingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AAEtF,oEAAoE;AACpE,MAAM,UAAU,yBAAyB,CAAC,EAAkB;IAC1D,MAAM,WAAW,GAAG,CAAC,EAAE,CAAC,uBAAuB,IAAI,EAAE,CAAC;SACnD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACpC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SAC7B,IAAI,EAAE,CAAC;IACV,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,GAAG,GACP,WAAW,CAAC,MAAM,GAAG,CAAC;QACpB,CAAC,CAAC,eAAe,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE;QACjD,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC;IACvB,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC"}
@@ -1,6 +1,40 @@
1
1
  import { Command } from "commander";
2
2
  import { runCommand } from "./utils/commands.js";
3
+ import { type ContractPipelineArtifactName } from "./contractPipeline/artifactStore.js";
4
+ import type { ValidationIssue } from "audit-tools/shared";
3
5
  declare const program: Command;
6
+ export interface ValidateArtifactActionResult {
7
+ status: "ok" | "error";
8
+ name?: ContractPipelineArtifactName;
9
+ issue_count?: number;
10
+ issues?: ValidationIssue[];
11
+ message?: string;
12
+ }
13
+ /**
14
+ * The `validate-artifact --name X` self-check's full logic, exported so tests
15
+ * can call it directly (no dist build / subprocess race). Returns the JSON body
16
+ * + exit code the CLI action prints/exits with, without doing either itself.
17
+ *
18
+ * Beyond the per-artifact structural validator, this ALSO loads the on-disk
19
+ * sibling contract-pipeline artifacts (under `<artifactsDir>/intake/contract/`)
20
+ * and runs the SAME cross-artifact gates the plural `validate-artifacts` sweep
21
+ * and `next-step` enforce (evaluateContractPipelineCrossGates — single-sourced
22
+ * in validation/contractPipelineGates.ts), substituting the in-flight `name`
23
+ * payload for its on-disk version so the in-flight edit always wins over a
24
+ * stale/absent sibling. Without this, a shape-valid artifact missing its
25
+ * cross-artifact obligations (e.g. a test_validator_plan missing its CE-006
26
+ * scoped negative) could self-validate "ok" here and only fail later at
27
+ * next-step — the exact authoring round-trip this closes.
28
+ */
29
+ export declare function runValidateArtifactAction(options: {
30
+ name: string;
31
+ file?: string;
32
+ root: string;
33
+ artifactsDir: string;
34
+ }): Promise<{
35
+ result: ValidateArtifactActionResult;
36
+ exitCode: number;
37
+ }>;
4
38
  export { program };
5
39
  /**
6
40
  * Parse argv through the program after normalizing the `=value` form of the
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remediate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAuEjD,QAAA,MAAM,OAAO,SAAgB,CAAC;AA2U9B,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEjD;AAUD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAuBR;AAYD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,MAAM,CAIR;AAED,wBAAgB,kBAAkB,CAChC,IAAI,GAAE;IACJ,GAAG,CAAC,EAAE,OAAO,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,GACL,MAAM,CAcR;AA4FD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,EACxC,OAAO,SAAY,EACnB,IAAI,SAAgB,GACnB,IAAI,CA4EN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remediate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAajD,OAAO,EAML,KAAK,4BAA4B,EAClC,MAAM,qCAAqC,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyD1D,QAAA,MAAM,OAAO,SAAgB,CAAC;AAoP9B,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,4BAA4B,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,4BAA4B,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAuFtE;AAiCD,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAEjD;AAUD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAuBR;AAYD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,MAAM,CAIR;AAED,wBAAgB,kBAAkB,CAChC,IAAI,GAAE;IACJ,GAAG,CAAC,EAAE,OAAO,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,GACL,MAAM,CAcR;AA4FD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,EACxC,OAAO,SAAY,EACnB,IAAI,SAAgB,GACnB,IAAI,CA4EN"}
@@ -9,9 +9,10 @@ import { decideNextStep } from "./steps/nextStep.js";
9
9
  import { mergeImplementResults, prepareImplementDispatch, } from "./steps/dispatch.js";
10
10
  import { advanceHostRolling, reverifyQuarantinedNode } from "./steps/rollingSession.js";
11
11
  import { validateArtifacts } from "./validation/artifacts.js";
12
- import { CONTRACT_PIPELINE_VALIDATORS } from "./validation/contractPipeline.js";
13
- import { CP_ARTIFACT_NAMES, isEnvelope, stampToolCreatedAt, } from "./contractPipeline/artifactStore.js";
14
- import { setQuotaStateDir, parseHostModelRoster, PROVIDER_NAMES, remediationArtifactsDir, resolveRepoRoot, mergeOpenCodeAgentPermissionRule, mergeOpenCodeGlobalPermissionRule, migrateOpenCodeGlobalExternalDirectory, withoutOpenCodeWildcard, } from "audit-tools/shared";
12
+ import { CONTRACT_PIPELINE_VALIDATORS, evaluateContractPipelineCrossGates, } from "./validation/contractPipeline.js";
13
+ import { CP_ARTIFACT_NAMES, isEnvelope, stampToolCreatedAt, readContractArtifact, envelopePayload, } from "./contractPipeline/artifactStore.js";
14
+ import { intakePaths } from "./intake.js";
15
+ import { setQuotaStateDir, parseHostModelRoster, PROVIDER_NAMES, remediationArtifactsDir, resolveRepoRoot, mergeOpenCodeAgentPermissionRule, mergeOpenCodeGlobalPermissionRule, migrateOpenCodeGlobalExternalDirectory, withoutOpenCodeWildcard, readOptionalJsonFile, } from "audit-tools/shared";
15
16
  // src/remediate/index.ts (source) or dist/remediate/index.js (built) → three
16
17
  // dirnames up is the package root, holding package.json + skills/ + opencode.json.
17
18
  const pkgRoot = dirname(dirname(dirname(fileURLToPath(import.meta.url))));
@@ -184,20 +185,33 @@ program
184
185
  console.log(JSON.stringify(result, null, 2));
185
186
  process.exit(result.status === "ok" ? 0 : 1);
186
187
  });
187
- program
188
- .command("validate-artifact")
189
- .description("Validate a single contract-pipeline artifact payload against its contract (write-time self-check)")
190
- .requiredOption("--name <name>", "Contract-pipeline artifact name (e.g. obligation_ledger, test_validator_plan)")
191
- .option("--file <path>", "Path to the artifact JSON file (defaults to stdin)")
192
- .action(async (options) => {
188
+ /**
189
+ * The `validate-artifact --name X` self-check's full logic, exported so tests
190
+ * can call it directly (no dist build / subprocess race). Returns the JSON body
191
+ * + exit code the CLI action prints/exits with, without doing either itself.
192
+ *
193
+ * Beyond the per-artifact structural validator, this ALSO loads the on-disk
194
+ * sibling contract-pipeline artifacts (under `<artifactsDir>/intake/contract/`)
195
+ * and runs the SAME cross-artifact gates the plural `validate-artifacts` sweep
196
+ * and `next-step` enforce (evaluateContractPipelineCrossGates — single-sourced
197
+ * in validation/contractPipelineGates.ts), substituting the in-flight `name`
198
+ * payload for its on-disk version so the in-flight edit always wins over a
199
+ * stale/absent sibling. Without this, a shape-valid artifact missing its
200
+ * cross-artifact obligations (e.g. a test_validator_plan missing its CE-006
201
+ * scoped negative) could self-validate "ok" here and only fail later at
202
+ * next-step — the exact authoring round-trip this closes.
203
+ */
204
+ export async function runValidateArtifactAction(options) {
193
205
  const name = options.name;
194
206
  const validator = CONTRACT_PIPELINE_VALIDATORS[name];
195
207
  if (!validator) {
196
- console.log(JSON.stringify({
197
- status: "error",
198
- message: `Unknown contract-pipeline artifact "${options.name}". Valid names: ${CP_ARTIFACT_NAMES.join(", ")}.`,
199
- }, null, 2));
200
- process.exit(2);
208
+ return {
209
+ result: {
210
+ status: "error",
211
+ message: `Unknown contract-pipeline artifact "${options.name}". Valid names: ${CP_ARTIFACT_NAMES.join(", ")}.`,
212
+ },
213
+ exitCode: 2,
214
+ };
201
215
  }
202
216
  let raw;
203
217
  try {
@@ -206,16 +220,20 @@ program
206
220
  : readFileSync(0, "utf8");
207
221
  }
208
222
  catch (err) {
209
- console.log(JSON.stringify({ status: "error", message: `Could not read artifact input: ${err.message}` }, null, 2));
210
- process.exit(2);
223
+ return {
224
+ result: { status: "error", message: `Could not read artifact input: ${err.message}` },
225
+ exitCode: 2,
226
+ };
211
227
  }
212
228
  let parsed;
213
229
  try {
214
230
  parsed = JSON.parse(raw);
215
231
  }
216
232
  catch (err) {
217
- console.log(JSON.stringify({ status: "error", message: `Artifact is not valid JSON: ${err.message}` }, null, 2));
218
- process.exit(2);
233
+ return {
234
+ result: { status: "error", message: `Artifact is not valid JSON: ${err.message}` },
235
+ exitCode: 2,
236
+ };
219
237
  }
220
238
  // Unwrap a stored content-hash envelope so the bare payload is validated
221
239
  // against its contract; a plain payload validates as-is. Uses the canonical
@@ -224,15 +242,63 @@ program
224
242
  // Stamp the tool-owned `created_at` (host has no clock) so the self-check
225
243
  // matches ingest: a host payload without a timestamp is valid here too (B4).
226
244
  const payload = stampToolCreatedAt(unwrapped, new Date().toISOString());
227
- const issues = validator(payload, name);
245
+ const structuralIssues = validator(payload, name);
246
+ const root = resolve(options.root);
247
+ const artifactsDir = resolveArtifactsDirOption(options.root, options.artifactsDir);
248
+ let crossGateIssues;
249
+ try {
250
+ const payloads = new Map();
251
+ for (const siblingName of CP_ARTIFACT_NAMES) {
252
+ const siblingPayload = envelopePayload(await readContractArtifact(artifactsDir, siblingName));
253
+ if (siblingPayload !== undefined)
254
+ payloads.set(siblingName, siblingPayload);
255
+ }
256
+ // The in-flight payload ALWAYS wins over any stale/absent on-disk copy of
257
+ // the SAME artifact — this is the write-time self-check for `name`, so its
258
+ // in-flight content is what must be gated, not a possibly-stale sibling file.
259
+ payloads.set(name, payload);
260
+ const findingEnumeration = await readOptionalJsonFile(intakePaths(artifactsDir).findingEnumeration);
261
+ crossGateIssues = evaluateContractPipelineCrossGates({
262
+ payloads,
263
+ findingEnumeration,
264
+ root,
265
+ }).flat();
266
+ }
267
+ catch (err) {
268
+ // readContractArtifact / readOptionalJsonFile throw on a corrupt (malformed-
269
+ // JSON) sibling envelope — mirror the same JSON-parse-error shape/exit code
270
+ // the primary --file parse error above uses.
271
+ return {
272
+ result: {
273
+ status: "error",
274
+ message: `Could not load a sibling contract-pipeline artifact: ${err.message}`,
275
+ },
276
+ exitCode: 2,
277
+ };
278
+ }
279
+ const issues = [...structuralIssues, ...crossGateIssues];
228
280
  const errors = issues.filter((issue) => issue.severity === "error");
229
- console.log(JSON.stringify({
230
- status: errors.length === 0 ? "ok" : "error",
231
- name,
232
- issue_count: issues.length,
233
- issues,
234
- }, null, 2));
235
- process.exit(errors.length === 0 ? 0 : 1);
281
+ return {
282
+ result: {
283
+ status: errors.length === 0 ? "ok" : "error",
284
+ name,
285
+ issue_count: issues.length,
286
+ issues,
287
+ },
288
+ exitCode: errors.length === 0 ? 0 : 1,
289
+ };
290
+ }
291
+ program
292
+ .command("validate-artifact")
293
+ .description("Validate a single contract-pipeline artifact payload against its contract (write-time self-check)")
294
+ .requiredOption("--name <name>", "Contract-pipeline artifact name (e.g. obligation_ledger, test_validator_plan)")
295
+ .option("--file <path>", "Path to the artifact JSON file (defaults to stdin)")
296
+ .option("--root <path>", "Repository root", ".")
297
+ .option("--artifacts-dir <path>", "Artifacts directory", ".audit-tools/remediation")
298
+ .action(async (options) => {
299
+ const { result, exitCode } = await runValidateArtifactAction(options);
300
+ console.log(JSON.stringify(result, null, 2));
301
+ process.exit(exitCode);
236
302
  });
237
303
  program
238
304
  .command("validate")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/remediate/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/remediate/index.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@
21
21
  * - Re-assessable as the run produces evidence (escalate-on-evidence), and the
22
22
  * re-assessment may only RAISE the tier, never lower it.
23
23
  */
24
+ import type { Finding } from "audit-tools/shared";
24
25
  export declare const INTAKE_RISK_SIGNAL_SCHEMA_VERSION: "remediate-code-intake-risk-signal/v1alpha1";
25
26
  /**
26
27
  * Ordered risk tiers. The two dials map onto this:
@@ -165,6 +166,35 @@ export interface DecompositionEvidenceInput {
165
166
  * deterministic; the {@link escalateRiskSignal} combinator enforces raise-only.
166
167
  */
167
168
  export declare function decompositionRiskEvidence(input: DecompositionEvidenceInput): RiskEscalationEvidence | undefined;
169
+ /**
170
+ * Max findings a `low`-tier (lean) run will take — "a handful". Above this, the
171
+ * coordination risk of the batch warrants at least `medium` (the full pipeline).
172
+ */
173
+ export declare const MAX_FAST_PATH_FINDINGS = 5;
174
+ /**
175
+ * Max DISTINCT affected files across the approved set for a `low`-tier run. A small
176
+ * footprint is the primary structural proxy for "no broad cross-module ripple".
177
+ * (Aligned with the intake breadth threshold `DEFAULT_MEDIUM_FILE_COUNT = 6`, so >5
178
+ * files is `medium` by both the intake signal and this finding-level check.)
179
+ */
180
+ export declare const MAX_FAST_PATH_FILES = 5;
181
+ /** Distinct affected-file paths across a finding set. */
182
+ export declare function distinctAffectedFiles(findings: Finding[]): string[];
183
+ /**
184
+ * Derive escalate-on-evidence from the APPROVED finding set's finding-level quality /
185
+ * coupling signals — the dimension the intake path/breadth/intent signal does not
186
+ * capture. Any signal that carries design-level doubt raises the tier so the run leaves
187
+ * the `low` (lean) tier for the full contract pipeline:
188
+ * - a `systemic` finding, or an `architecture`-lens finding ⇒ `high` (design-level);
189
+ * - an ungrounded finding, a below-high-confidence finding, a finding coupled to
190
+ * related findings (seam risk), more than {@link MAX_FAST_PATH_FINDINGS} findings,
191
+ * or more than {@link MAX_FAST_PATH_FILES} distinct affected files ⇒ `medium`.
192
+ * Returns undefined when the set is a clean handful of grounded, high-confidence,
193
+ * localized, non-coupled fixes (the tier stays `low` ⇒ lean). Pure + deterministic;
194
+ * the {@link escalateRiskSignal} combinator enforces raise-only. Mirrors
195
+ * {@link decompositionRiskEvidence}'s shape — evidence, never a direct tier write.
196
+ */
197
+ export declare function findingRiskEvidence(findings: Finding[]): RiskEscalationEvidence | undefined;
168
198
  /** Read the persisted intake risk signal, or undefined when none is recorded. */
169
199
  export declare function readIntakeRiskSignal(artifactsDir: string): Promise<IntakeRiskSignal | undefined>;
170
200
  /** Persist (overwrite) the intake risk signal. */
@@ -1 +1 @@
1
- {"version":3,"file":"riskSignal.d.ts","sourceRoot":"","sources":["../../src/remediate/riskSignal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"riskSignal.d.ts","sourceRoot":"","sources":["../../src/remediate/riskSignal.ts"],"names":[],"mappings":"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"}