audit-tools 0.32.55 → 0.32.56
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/dist/audit/cli/dispatch/pausePersist.d.ts +60 -0
- package/dist/audit/cli/dispatch/pausePersist.d.ts.map +1 -0
- package/dist/audit/cli/dispatch/pausePersist.js +110 -0
- package/dist/audit/cli/dispatch/pausePersist.js.map +1 -0
- package/dist/audit/cli/dispatch/types.d.ts +12 -0
- package/dist/audit/cli/dispatch/types.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +49 -1
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.d.ts +9 -0
- package/dist/audit/cli/mergeAndIngestCommand.d.ts.map +1 -1
- package/dist/audit/cli/mergeAndIngestCommand.js +2 -27
- package/dist/audit/cli/mergeAndIngestCommand.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts +0 -10
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +3 -33
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.js +55 -115
- package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
- package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
- package/dist/audit/cli/semanticReviewStep.js +41 -0
- package/dist/audit/cli/semanticReviewStep.js.map +1 -1
- package/dist/audit/orchestrator/intentScopeDisposition.d.ts +14 -24
- package/dist/audit/orchestrator/intentScopeDisposition.d.ts.map +1 -1
- package/dist/audit/orchestrator/intentScopeDisposition.js +17 -35
- package/dist/audit/orchestrator/intentScopeDisposition.js.map +1 -1
- package/dist/audit/orchestrator/scope.d.ts +0 -1
- package/dist/audit/orchestrator/scope.d.ts.map +1 -1
- package/dist/audit/orchestrator/scope.js +2 -4
- package/dist/audit/orchestrator/scope.js.map +1 -1
- package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
- package/dist/audit/reporting/mergeFindings.js +17 -222
- package/dist/audit/reporting/mergeFindings.js.map +1 -1
- package/dist/audit/systemic/systemicChallengeLoop.d.ts.map +1 -1
- package/dist/audit/systemic/systemicChallengeLoop.js +3 -8
- package/dist/audit/systemic/systemicChallengeLoop.js.map +1 -1
- package/dist/remediate/dedup/crossLensDedup.d.ts +11 -4
- package/dist/remediate/dedup/crossLensDedup.d.ts.map +1 -1
- package/dist/remediate/dedup/crossLensDedup.js +27 -146
- package/dist/remediate/dedup/crossLensDedup.js.map +1 -1
- package/dist/remediate/index.d.ts +0 -10
- package/dist/remediate/index.d.ts.map +1 -1
- package/dist/remediate/index.js +1 -32
- package/dist/remediate/index.js.map +1 -1
- package/dist/remediate/intent/checkpointFilter.d.ts +4 -3
- package/dist/remediate/intent/checkpointFilter.d.ts.map +1 -1
- package/dist/remediate/intent/checkpointFilter.js +12 -53
- package/dist/remediate/intent/checkpointFilter.js.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/marshal.js +2 -29
- package/dist/remediate/steps/dispatch/marshal.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +48 -4
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/providerNodeDispatch.d.ts.map +1 -1
- package/dist/remediate/steps/providerNodeDispatch.js +12 -53
- package/dist/remediate/steps/providerNodeDispatch.js.map +1 -1
- package/dist/remediate/steps/rollingSession.d.ts +13 -0
- package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
- package/dist/remediate/steps/rollingSession.js +35 -1
- package/dist/remediate/steps/rollingSession.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +13 -4
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/dispatch/admissionLeaseReconcile.d.ts +20 -0
- package/dist/shared/dispatch/admissionLeaseReconcile.d.ts.map +1 -0
- package/dist/shared/dispatch/admissionLeaseReconcile.js +36 -0
- package/dist/shared/dispatch/admissionLeaseReconcile.js.map +1 -0
- package/dist/shared/dispatch/hostDispatchWall.d.ts +34 -0
- package/dist/shared/dispatch/hostDispatchWall.d.ts.map +1 -0
- package/dist/shared/dispatch/hostDispatchWall.js +15 -0
- package/dist/shared/dispatch/hostDispatchWall.js.map +1 -0
- package/dist/shared/dispatch/providerLaunchFinalize.d.ts +49 -0
- package/dist/shared/dispatch/providerLaunchFinalize.d.ts.map +1 -0
- package/dist/shared/dispatch/providerLaunchFinalize.js +90 -0
- package/dist/shared/dispatch/providerLaunchFinalize.js.map +1 -0
- package/dist/shared/dispatch/rollingDispatch.d.ts +0 -15
- package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
- package/dist/shared/findings/dedupe.d.ts +106 -0
- package/dist/shared/findings/dedupe.d.ts.map +1 -0
- package/dist/shared/findings/dedupe.js +304 -0
- package/dist/shared/findings/dedupe.js.map +1 -0
- package/dist/shared/index.d.ts +8 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +6 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/intake/guidanceBootstrap.d.ts +13 -0
- package/dist/shared/intake/guidanceBootstrap.d.ts.map +1 -0
- package/dist/shared/intake/guidanceBootstrap.js +36 -0
- package/dist/shared/intake/guidanceBootstrap.js.map +1 -0
- package/dist/shared/intent/pathScope.d.ts +27 -0
- package/dist/shared/intent/pathScope.d.ts.map +1 -0
- package/dist/shared/intent/pathScope.js +99 -0
- package/dist/shared/intent/pathScope.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,40 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* predicate
|
|
2
|
+
* Single authority for "is this UNIT excluded by the host's STRUCTURED intent
|
|
3
|
+
* scope" — the per-unit disposition derived from the shared per-file exclusion
|
|
4
|
+
* predicate (`fileExclusionReason` in `audit-tools/shared`, which both orchestrators
|
|
5
|
+
* consume so their scope coverage can't drift). A pure leaf module (no artifact /
|
|
6
|
+
* extractor imports) so every consumer can depend on it without an import cycle:
|
|
7
|
+
*
|
|
8
|
+
* - the design-review prompt's per-unit `[in scope]` / `[excluded: reason]`
|
|
9
|
+
* annotation (`designReviewPrompt.ts`), and
|
|
10
|
+
* - the design-review staleness projection (`designReviewProjection.ts`),
|
|
11
|
+
* which captures the disposition KIND so a scope change re-stales the review.
|
|
12
|
+
*
|
|
13
|
+
* Reads ONLY the structured IntentCheckpoint scope fields via the shared authority
|
|
14
|
+
* (`excluded_scope` / `disposition_overrides` / `must_not_touch`) — never
|
|
15
|
+
* `free_form_intent` (interpreted into priority/lens signals, never threaded
|
|
16
|
+
* verbatim, INV-S04). Co-locating the unit derivation here means the consumers can
|
|
17
|
+
* never disagree on what "excluded" means.
|
|
5
18
|
*/
|
|
6
|
-
|
|
7
|
-
const f = filePath.replace(/\\/g, "/");
|
|
8
|
-
const p = entryPath.replace(/\\/g, "/").replace(/\/+$/, "");
|
|
9
|
-
if (!p)
|
|
10
|
-
return false;
|
|
11
|
-
return f === p || f.startsWith(`${p}/`);
|
|
12
|
-
}
|
|
13
|
-
/** Statuses a `disposition_overrides` entry can carry that mean "out of scope". */
|
|
14
|
-
const EXCLUDED_OVERRIDE_STATUSES = new Set([
|
|
15
|
-
"excluded",
|
|
16
|
-
"generated",
|
|
17
|
-
"vendor",
|
|
18
|
-
]);
|
|
19
|
-
/**
|
|
20
|
-
* Resolve a single file's structured exclusion (path match wins over override),
|
|
21
|
-
* returning the reason when excluded or null when in scope. Reads only the
|
|
22
|
-
* structured `excluded_scope` / `disposition_overrides` fields.
|
|
23
|
-
*/
|
|
24
|
-
function fileExclusionReason(filePath, checkpoint) {
|
|
25
|
-
const excludedScope = checkpoint?.excluded_scope ?? [];
|
|
26
|
-
for (const entry of excludedScope) {
|
|
27
|
-
if (pathMatchesExclusion(filePath, entry.path))
|
|
28
|
-
return entry.reason;
|
|
29
|
-
}
|
|
30
|
-
const overrides = checkpoint?.disposition_overrides ?? [];
|
|
31
|
-
for (const ov of overrides) {
|
|
32
|
-
if (EXCLUDED_OVERRIDE_STATUSES.has(ov.status) && pathMatchesExclusion(filePath, ov.path)) {
|
|
33
|
-
return ov.reason;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
19
|
+
import { fileExclusionReason } from "audit-tools/shared";
|
|
38
20
|
/**
|
|
39
21
|
* Disposition of a whole unit: excluded only when every file is excluded by the
|
|
40
22
|
* structured scope, carrying the first file's reason (units are excluded as a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intentScopeDisposition.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/intentScopeDisposition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"intentScopeDisposition.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/intentScopeDisposition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,mBAAmB,EAAyB,MAAM,oBAAoB,CAAC;AAYhF;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAwB,EACxB,UAAwC;IAExC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACnE,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACjD,IAAI,WAAW,KAAK,IAAI;YAAE,WAAW,GAAG,MAAM,CAAC;IACjD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,IAAI,cAAc,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -2,7 +2,6 @@ import type { GraphBundle } from "audit-tools/shared";
|
|
|
2
2
|
import type { ArtifactBundle } from "../io/artifacts.js";
|
|
3
3
|
import type { CoverageMatrix } from "../types.js";
|
|
4
4
|
import type { AuditScopeBudget, AuditScopeManifest } from "../types/auditScope.js";
|
|
5
|
-
export { pathMatchesExclusion } from "./intentScopeDisposition.js";
|
|
6
5
|
/** Default cap on in-scope files (seeds + expanded) before expansion stops. */
|
|
7
6
|
export declare const DEFAULT_SCOPE_MAX_FILES = 200;
|
|
8
7
|
/** Graph edges below this confidence are never traversed during expansion. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAWnF,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,8EAA8E;AAC9E,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,kBAAkB,CA0IpB;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAC5B,MAAM,CAAC,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,CASpB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,kBAAkB,CAwCpB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,kBAAkB,EACzB,aAAa,CAAC,EAAE,cAAc,GAC7B,cAAc,CAmChB;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,cAAc,EACxB,aAAa,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,GACjE,MAAM,EAAE,CAiBV"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { changedFiles, gitRefExists, isGitRepo } from "audit-tools/shared";
|
|
1
|
+
import { changedFiles, gitRefExists, isGitRepo, pathMatchesPrefix } from "audit-tools/shared";
|
|
2
2
|
import { buildDispositionMap } from "../extractors/disposition.js";
|
|
3
3
|
import { buildPathLookup } from "../extractors/graph.js";
|
|
4
|
-
import { pathMatchesExclusion } from "./intentScopeDisposition.js";
|
|
5
4
|
import { HIGH_FAN_DEGREE_THRESHOLD, buildGraphDegreeIndex, collectGraphEdges, graphEdgeConfidence, normalizeGraphPath, } from "./reviewPacketGraph.js";
|
|
6
|
-
export { pathMatchesExclusion } from "./intentScopeDisposition.js";
|
|
7
5
|
/** Default cap on in-scope files (seeds + expanded) before expansion stops. */
|
|
8
6
|
export const DEFAULT_SCOPE_MAX_FILES = 200;
|
|
9
7
|
/** Graph edges below this confidence are never traversed during expansion. */
|
|
@@ -249,7 +247,7 @@ export function applyIntentExclusionsToCoverage(coverage, excludedScope) {
|
|
|
249
247
|
for (const file of coverage.files) {
|
|
250
248
|
if (file.audit_status === "excluded")
|
|
251
249
|
continue;
|
|
252
|
-
if (excludedScope.some((entry) =>
|
|
250
|
+
if (excludedScope.some((entry) => pathMatchesPrefix(file.path, entry.path))) {
|
|
253
251
|
file.required_lenses = [];
|
|
254
252
|
file.completed_lenses = [];
|
|
255
253
|
file.unit_ids = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeFindings.d.ts","sourceRoot":"","sources":["../../../src/audit/reporting/mergeFindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"mergeFindings.d.ts","sourceRoot":"","sources":["../../../src/audit/reporting/mergeFindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAyC7E,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EAAE,EACtB,aAAa,CAAC,EAAE,uBAAuB,EACvC,uBAAuB,CAAC,EAAE,uBAAuB,EAAE,EACnD,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,sBAAsB,CAAC,EAAE,sBAAsB,EAC/C,eAAe,CAAC,EAAE,eAAe,EACjC,iBAAiB,CAAC,EAAE,yBAAyB,GAC5C,OAAO,EAAE,CA2EX"}
|
|
@@ -1,182 +1,5 @@
|
|
|
1
1
|
import { severityRank, confidenceRank } from "./findingRanks.js";
|
|
2
|
-
import {
|
|
3
|
-
function normalizeText(value) {
|
|
4
|
-
return (value ?? "").trim().toLowerCase();
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* File-independent finding identity. Re-emissions of the same logical finding
|
|
8
|
-
* (exact normalized lens + category + title) across files, units, and passes
|
|
9
|
-
* share one key, so the exact-key merge collapses them into a single finding
|
|
10
|
-
* whose affected_files / evidence are the union of every re-emission.
|
|
11
|
-
*
|
|
12
|
-
* Cross-file merging happens ONLY on this exact equality — the fuzzy
|
|
13
|
-
* (Jaccard-title) dedup passes below stay grouped by primary path, which is
|
|
14
|
-
* what guarantees that distinct problems in different units never collapse
|
|
15
|
-
* on mere similarity.
|
|
16
|
-
*/
|
|
17
|
-
function findingKey(finding) {
|
|
18
|
-
return [
|
|
19
|
-
normalizeText(finding.lens),
|
|
20
|
-
normalizeText(finding.category),
|
|
21
|
-
normalizeText(finding.title),
|
|
22
|
-
].join("|");
|
|
23
|
-
}
|
|
24
|
-
function runtimeSummary(report) {
|
|
25
|
-
if (!report) {
|
|
26
|
-
return [];
|
|
27
|
-
}
|
|
28
|
-
return report.results
|
|
29
|
-
.filter((result) => result.status !== "pending")
|
|
30
|
-
.map((result) => `${result.task_id}: ${result.status} — ${result.summary}`);
|
|
31
|
-
}
|
|
32
|
-
function mergeAffectedFiles(existing, incoming) {
|
|
33
|
-
const seen = new Set(existing.affected_files.map((f) => `${f.path}:${f.line_start ?? ""}:${f.line_end ?? ""}:${f.symbol ?? ""}`));
|
|
34
|
-
for (const file of incoming.affected_files) {
|
|
35
|
-
const key = `${file.path}:${file.line_start ?? ""}:${file.line_end ?? ""}:${file.symbol ?? ""}`;
|
|
36
|
-
if (!seen.has(key)) {
|
|
37
|
-
existing.affected_files.push(file);
|
|
38
|
-
seen.add(key);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
existing.affected_files.sort((a, b) => a.path.localeCompare(b.path) || (a.line_start ?? 0) - (b.line_start ?? 0));
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Merge two grounding verdicts by precedence: grounded > refuted > ungrounded >
|
|
45
|
-
* absent (S7). Grounded-wins (a verified span/anchor on ANY pass upgrades the
|
|
46
|
-
* survivor — an ungrounded or absent verdict never downgrades it). A refutation
|
|
47
|
-
* (anchor DISPROOF) outranks ungrounded/absent, so a finding refuted on any pass
|
|
48
|
-
* is quarantined UNLESS another pass grounded it (grounded still wins over
|
|
49
|
-
* refuted — B4: "refuted only excludes when nothing grounded it"). Without the
|
|
50
|
-
* grounded-wins rule, merging a same-identity re-emission that carried no matching
|
|
51
|
-
* quote into a verified survivor would falsely quarantine a finding that DID
|
|
52
|
-
* re-verify on another pass.
|
|
53
|
-
*/
|
|
54
|
-
function mergeGrounding(existing, incoming) {
|
|
55
|
-
const rank = (g) => g?.status === "grounded" ? 3 : g?.status === "refuted" ? 2 : g?.status === "ungrounded" ? 1 : 0;
|
|
56
|
-
const winner = rank(incoming) > rank(existing) ? incoming : existing;
|
|
57
|
-
// Normalize a grounded winner to the bare verdict (grounded carries no reason),
|
|
58
|
-
// preserving the prior contract; refuted/ungrounded keep their reason.
|
|
59
|
-
return winner?.status === "grounded" ? { status: "grounded" } : winner;
|
|
60
|
-
}
|
|
61
|
-
function absorbFinding(survivor, absorbed) {
|
|
62
|
-
mergeAffectedFiles(survivor, absorbed);
|
|
63
|
-
survivor.evidence = [
|
|
64
|
-
...new Set([
|
|
65
|
-
...(survivor.evidence ?? []),
|
|
66
|
-
...(absorbed.evidence ?? []),
|
|
67
|
-
]),
|
|
68
|
-
];
|
|
69
|
-
survivor.systemic = Boolean(survivor.systemic || absorbed.systemic);
|
|
70
|
-
survivor.grounding = mergeGrounding(survivor.grounding, absorbed.grounding);
|
|
71
|
-
if (absorbed.summary.length > survivor.summary.length) {
|
|
72
|
-
survivor.summary = absorbed.summary;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
function lineRangeOverlaps(a, b) {
|
|
76
|
-
const aFile = a.affected_files[0];
|
|
77
|
-
const bFile = b.affected_files[0];
|
|
78
|
-
if (!aFile || !bFile)
|
|
79
|
-
return false;
|
|
80
|
-
if (aFile.path !== bFile.path)
|
|
81
|
-
return false;
|
|
82
|
-
const aStart = aFile.line_start ?? 0;
|
|
83
|
-
const aEnd = aFile.line_end ?? aStart;
|
|
84
|
-
const bStart = bFile.line_start ?? 0;
|
|
85
|
-
const bEnd = bFile.line_end ?? bStart;
|
|
86
|
-
if (aEnd === 0 && bEnd === 0)
|
|
87
|
-
return true;
|
|
88
|
-
return aStart <= bEnd && bStart <= aEnd;
|
|
89
|
-
}
|
|
90
|
-
function deduplicateSameLens(findings) {
|
|
91
|
-
const groups = new Map();
|
|
92
|
-
for (const finding of findings) {
|
|
93
|
-
const key = `${normalizeText(finding.lens)}:${primaryPath(finding)}`;
|
|
94
|
-
const group = groups.get(key);
|
|
95
|
-
if (group) {
|
|
96
|
-
group.push(finding);
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
groups.set(key, [finding]);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
const removed = new Set();
|
|
103
|
-
for (const group of groups.values()) {
|
|
104
|
-
if (group.length < 2)
|
|
105
|
-
continue;
|
|
106
|
-
for (let i = 0; i < group.length; i++) {
|
|
107
|
-
if (removed.has(group[i]))
|
|
108
|
-
continue;
|
|
109
|
-
for (let j = i + 1; j < group.length; j++) {
|
|
110
|
-
if (removed.has(group[j]))
|
|
111
|
-
continue;
|
|
112
|
-
const a = group[i];
|
|
113
|
-
const b = group[j];
|
|
114
|
-
const titleSim = wordJaccard(a.title, b.title);
|
|
115
|
-
const catMatch = normalizeText(a.category) === normalizeText(b.category);
|
|
116
|
-
const threshold = catMatch ? 0.35 : 0.45;
|
|
117
|
-
if (titleSim < threshold)
|
|
118
|
-
continue;
|
|
119
|
-
if (!lineRangeOverlaps(a, b) && filePathOverlap(a, b) < 0.5)
|
|
120
|
-
continue;
|
|
121
|
-
const aSev = severityRank(a.severity);
|
|
122
|
-
const bSev = severityRank(b.severity);
|
|
123
|
-
const aConf = confidenceRank(a.confidence);
|
|
124
|
-
const bConf = confidenceRank(b.confidence);
|
|
125
|
-
const keepA = aSev > bSev || (aSev === bSev && aConf >= bConf);
|
|
126
|
-
const [survivor, absorbed] = keepA ? [a, b] : [b, a];
|
|
127
|
-
absorbFinding(survivor, absorbed);
|
|
128
|
-
removed.add(absorbed);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return findings.filter((f) => !removed.has(f));
|
|
133
|
-
}
|
|
134
|
-
function deduplicateCrossLens(findings) {
|
|
135
|
-
const groups = new Map();
|
|
136
|
-
for (const finding of findings) {
|
|
137
|
-
const key = primaryPath(finding);
|
|
138
|
-
const group = groups.get(key);
|
|
139
|
-
if (group) {
|
|
140
|
-
group.push(finding);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
groups.set(key, [finding]);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
const removed = new Set();
|
|
147
|
-
for (const group of groups.values()) {
|
|
148
|
-
if (group.length < 2)
|
|
149
|
-
continue;
|
|
150
|
-
for (let i = 0; i < group.length; i++) {
|
|
151
|
-
if (removed.has(group[i]))
|
|
152
|
-
continue;
|
|
153
|
-
for (let j = i + 1; j < group.length; j++) {
|
|
154
|
-
if (removed.has(group[j]))
|
|
155
|
-
continue;
|
|
156
|
-
const a = group[i];
|
|
157
|
-
const b = group[j];
|
|
158
|
-
if (normalizeText(a.lens) === normalizeText(b.lens))
|
|
159
|
-
continue;
|
|
160
|
-
const titleSim = wordJaccard(a.title, b.title);
|
|
161
|
-
const catMatch = normalizeText(a.category) === normalizeText(b.category);
|
|
162
|
-
const threshold = catMatch ? 0.4 : 0.5;
|
|
163
|
-
if (titleSim < threshold)
|
|
164
|
-
continue;
|
|
165
|
-
if (filePathOverlap(a, b) < 0.5)
|
|
166
|
-
continue;
|
|
167
|
-
const aSev = severityRank(a.severity);
|
|
168
|
-
const bSev = severityRank(b.severity);
|
|
169
|
-
const aConf = confidenceRank(a.confidence);
|
|
170
|
-
const bConf = confidenceRank(b.confidence);
|
|
171
|
-
const keepA = aSev > bSev || (aSev === bSev && aConf >= bConf);
|
|
172
|
-
const [survivor, absorbed] = keepA ? [a, b] : [b, a];
|
|
173
|
-
absorbFinding(survivor, absorbed);
|
|
174
|
-
removed.add(absorbed);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return findings.filter((f) => !removed.has(f));
|
|
179
|
-
}
|
|
2
|
+
import { crossLensDedupe, sameLensDedupe, upsertFindingByIdentity, } from "audit-tools/shared";
|
|
180
3
|
function relevantRuntimeEvidence(finding, report) {
|
|
181
4
|
if (!report)
|
|
182
5
|
return [];
|
|
@@ -203,45 +26,6 @@ function relevantExternalEvidence(finding, results) {
|
|
|
203
26
|
.filter((item) => findingPaths.has(item.path))
|
|
204
27
|
.map((item) => `external:${tool.tool}:${item.path}:${item.summary}`));
|
|
205
28
|
}
|
|
206
|
-
/**
|
|
207
|
-
* Insert a finding into the identity-keyed map, or absorb it into the existing
|
|
208
|
-
* finding with the same identity: affected_files and evidence are unioned,
|
|
209
|
-
* severity / confidence escalate to the maximum rank seen, `systemic` ORs,
|
|
210
|
-
* impact / likelihood backfill, and the longest summary wins.
|
|
211
|
-
*/
|
|
212
|
-
function upsertFinding(merged, finding) {
|
|
213
|
-
const key = findingKey(finding);
|
|
214
|
-
const existing = merged.get(key);
|
|
215
|
-
if (!existing) {
|
|
216
|
-
merged.set(key, {
|
|
217
|
-
...finding,
|
|
218
|
-
affected_files: [...finding.affected_files],
|
|
219
|
-
evidence: [...(finding.evidence ?? [])],
|
|
220
|
-
});
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
if (severityRank(finding.severity) > severityRank(existing.severity)) {
|
|
224
|
-
existing.severity = finding.severity;
|
|
225
|
-
}
|
|
226
|
-
if (confidenceRank(finding.confidence) > confidenceRank(existing.confidence)) {
|
|
227
|
-
existing.confidence = finding.confidence;
|
|
228
|
-
}
|
|
229
|
-
existing.systemic = Boolean(existing.systemic || finding.systemic);
|
|
230
|
-
existing.grounding = mergeGrounding(existing.grounding, finding.grounding);
|
|
231
|
-
existing.impact = existing.impact ?? finding.impact;
|
|
232
|
-
existing.likelihood = existing.likelihood ?? finding.likelihood;
|
|
233
|
-
existing.summary =
|
|
234
|
-
existing.summary.length >= finding.summary.length
|
|
235
|
-
? existing.summary
|
|
236
|
-
: finding.summary;
|
|
237
|
-
mergeAffectedFiles(existing, finding);
|
|
238
|
-
existing.evidence = [
|
|
239
|
-
...new Set([
|
|
240
|
-
...(existing.evidence ?? []),
|
|
241
|
-
...(finding.evidence ?? []),
|
|
242
|
-
]),
|
|
243
|
-
];
|
|
244
|
-
}
|
|
245
29
|
export function mergeFindings(results, runtimeReport, externalAnalyzerResults, designAssessment, structureDecomposition, charterRegister, systemicChallenge) {
|
|
246
30
|
const merged = new Map();
|
|
247
31
|
const allDesignFindings = [
|
|
@@ -259,12 +43,12 @@ export function mergeFindings(results, runtimeReport, externalAnalyzerResults, d
|
|
|
259
43
|
...(charterRegister?.findings ?? []),
|
|
260
44
|
// Phase E second-order-adversary improvement leads (systemic layer). These carry
|
|
261
45
|
// their TRUE lens (tests/performance/operability/…), NOT a hardcoded architecture
|
|
262
|
-
// tag —
|
|
46
|
+
// tag — upsertFindingByIdentity keys on the finding's own lens, so a systemic improvement is
|
|
263
47
|
// routed to its real lens rather than collapsed into an architecture bucket.
|
|
264
48
|
...(systemicChallenge?.findings ?? []),
|
|
265
49
|
];
|
|
266
50
|
for (const finding of allDesignFindings) {
|
|
267
|
-
|
|
51
|
+
upsertFindingByIdentity(merged, finding);
|
|
268
52
|
}
|
|
269
53
|
// Callers pass the supersession-resolved ledger (`selectCurrentResults`) so a
|
|
270
54
|
// re-dispatched result's fresh findings have already replaced the stale base
|
|
@@ -272,7 +56,7 @@ export function mergeFindings(results, runtimeReport, externalAnalyzerResults, d
|
|
|
272
56
|
// result set it is given.
|
|
273
57
|
for (const result of results) {
|
|
274
58
|
for (const finding of result.findings) {
|
|
275
|
-
|
|
59
|
+
upsertFindingByIdentity(merged, finding);
|
|
276
60
|
}
|
|
277
61
|
}
|
|
278
62
|
for (const finding of merged.values()) {
|
|
@@ -288,8 +72,19 @@ export function mergeFindings(results, runtimeReport, externalAnalyzerResults, d
|
|
|
288
72
|
];
|
|
289
73
|
}
|
|
290
74
|
}
|
|
291
|
-
const dedupedSameLens =
|
|
292
|
-
|
|
75
|
+
const dedupedSameLens = sameLensDedupe([...merged.values()]);
|
|
76
|
+
// Audit's DRAW of the shared cross-lens core: read-only report policy — mutate
|
|
77
|
+
// survivors in place, grounding-precedence merge, sort files, and a SOFT category
|
|
78
|
+
// gate (merge cross-category at a higher title threshold). No exact-identity
|
|
79
|
+
// short-circuit / no break; the mergeMap is unused (a human reads the report).
|
|
80
|
+
return crossLensDedupe(dedupedSameLens, {
|
|
81
|
+
categoryGate: "soft",
|
|
82
|
+
exactIdentityShortCircuit: false,
|
|
83
|
+
survivorMutation: "mutate",
|
|
84
|
+
mergeGrounding: true,
|
|
85
|
+
sortAffectedFiles: true,
|
|
86
|
+
breakOnAbsorbedSurvivor: false,
|
|
87
|
+
}).findings.sort((a, b) => {
|
|
293
88
|
const severityDelta = severityRank(b.severity) - severityRank(a.severity);
|
|
294
89
|
if (severityDelta !== 0)
|
|
295
90
|
return severityDelta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeFindings.js","sourceRoot":"","sources":["../../../src/audit/reporting/mergeFindings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mergeFindings.js","sourceRoot":"","sources":["../../../src/audit/reporting/mergeFindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemicChallengeLoop.d.ts","sourceRoot":"","sources":["../../../src/audit/systemic/systemicChallengeLoop.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"systemicChallengeLoop.d.ts","sourceRoot":"","sources":["../../../src/audit/systemic/systemicChallengeLoop.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAyBpD,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,gFAAgF;IAChF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iFAAiF;IACjF,GAAG,EAAE,OAAO,CAAC;IACb,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IACnD,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CACvD,GAAG,mBAAmB,CA4CtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,QACO,CAAC"}
|
|
@@ -20,14 +20,9 @@
|
|
|
20
20
|
// route each improvement to its real lens.
|
|
21
21
|
//
|
|
22
22
|
// PURE + deterministic + language-neutral: no IO, no LLM.
|
|
23
|
-
import { groundDesignFindings } from "audit-tools/shared";
|
|
23
|
+
import { groundDesignFindings, findingReEmissionKey } from "audit-tools/shared";
|
|
24
24
|
import { goalBlastRadius } from "../clarification/blastRadius.js";
|
|
25
25
|
import { DEFAULT_RISK_GATE_THRESHOLDS } from "../clarification/riskGate.js";
|
|
26
|
-
/** File-independent finding identity (lens + category + title), lower-cased. */
|
|
27
|
-
function findingKey(finding) {
|
|
28
|
-
const norm = (v) => (v ?? "").trim().toLowerCase();
|
|
29
|
-
return [norm(finding.lens), norm(finding.category), norm(finding.title)].join("|");
|
|
30
|
-
}
|
|
31
26
|
/**
|
|
32
27
|
* Resolve the blast radius of an improvement finding over the goal DAG. A finding
|
|
33
28
|
* carrying a `node_id`-style goal linkage (its first affected component maps to a
|
|
@@ -64,7 +59,7 @@ export function foldChallengeRound(params) {
|
|
|
64
59
|
const grounded = groundDesignFindings(params.submitted, params.repoManifest);
|
|
65
60
|
const byKey = new Map();
|
|
66
61
|
for (const finding of params.prior)
|
|
67
|
-
byKey.set(
|
|
62
|
+
byKey.set(findingReEmissionKey(finding), finding);
|
|
68
63
|
const new_finding_ids = [];
|
|
69
64
|
for (const finding of grounded) {
|
|
70
65
|
if (finding.grounding?.status === "ungrounded") {
|
|
@@ -78,7 +73,7 @@ export function foldChallengeRound(params) {
|
|
|
78
73
|
lens: finding.lens,
|
|
79
74
|
blast_radius: resolveBlastRadius(finding, params.goalGraph, goalNodeOf),
|
|
80
75
|
};
|
|
81
|
-
const key =
|
|
76
|
+
const key = findingReEmissionKey(enriched);
|
|
82
77
|
if (!byKey.has(key)) {
|
|
83
78
|
new_finding_ids.push(enriched.id);
|
|
84
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemicChallengeLoop.js","sourceRoot":"","sources":["../../../src/audit/systemic/systemicChallengeLoop.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,EAAE;AACF,oFAAoF;AACpF,sFAAsF;AACtF,wEAAwE;AACxE,gFAAgF;AAChF,8EAA8E;AAC9E,4CAA4C;AAC5C,EAAE;AACF,qFAAqF;AACrF,6EAA6E;AAC7E,oFAAoF;AACpF,sFAAsF;AACtF,sFAAsF;AACtF,qBAAqB;AACrB,EAAE;AACF,sFAAsF;AACtF,sFAAsF;AACtF,kFAAkF;AAClF,2CAA2C;AAC3C,EAAE;AACF,0DAA0D;AAI1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"systemicChallengeLoop.js","sourceRoot":"","sources":["../../../src/audit/systemic/systemicChallengeLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { wordJaccard } from "audit-tools/shared";
|
|
2
|
+
import type { CrossLensDedupeResult } from "audit-tools/shared";
|
|
2
3
|
import type { Finding, RemediationBlock } from "../state/types.js";
|
|
3
4
|
export { wordJaccard };
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export type CrossLensDedupResult = CrossLensDedupeResult;
|
|
6
|
+
/**
|
|
7
|
+
* Remediate's DRAW of the shared cross-lens dedup core (`crossLensDedupe`): the
|
|
8
|
+
* auto-apply block-machine policy — a HARD category gate (never collapse two
|
|
9
|
+
* different-category fixes, OBL-C003-DEDUP), the exact-identity short-circuit
|
|
10
|
+
* (drift-plan R2), CLONE survivors so the caller's Finding objects are never
|
|
11
|
+
* mutated (INV-remediate-state-05), no grounding merge / no file sort, break on an
|
|
12
|
+
* absorbed i-slot, and a structured merge log. The returned `mergeMap` feeds
|
|
13
|
+
* `fixupBlocksAfterDedup`.
|
|
14
|
+
*/
|
|
8
15
|
export declare function deduplicateCrossLensFindings(findings: Finding[]): CrossLensDedupResult;
|
|
9
16
|
export declare function fixupBlocksAfterDedup(blocks: RemediationBlock[], mergeMap: Map<string, string>): RemediationBlock[];
|
|
10
17
|
//# sourceMappingURL=crossLensDedup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crossLensDedup.d.ts","sourceRoot":"","sources":["../../../src/remediate/dedup/crossLensDedup.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"crossLensDedup.d.ts","sourceRoot":"","sources":["../../../src/remediate/dedup/crossLensDedup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAInE,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,OAAO,EAAE,GAClB,oBAAoB,CAsBtB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EAAE,EAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B,gBAAgB,EAAE,CAMpB"}
|