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
@@ -24,13 +24,13 @@ import { checkAffectedFileIntegrity } from "../utils/fileIntegrity.js";
24
24
  import { resolveIntakeStep } from "./intakeResolver.js";
25
25
  import { runToolOwnedFinalGate, applyCoarseReblock, readFinalGateSidecar, writeFinalGateSidecar, } from "./finalGate.js";
26
26
  import { buildNextContractPipelineStep, shouldEnterContractPipeline, writePathASeedFromFindings, } from "./contractPipeline.js";
27
- import { evaluateFastPath, buildLeanExtractedPlan, distinctAffectedFiles, interpretLeanLightReviewVerdict, LEAN_LIGHT_REVIEW_SCHEMA_VERSION, } from "./leanFastPath.js";
27
+ import { buildLeanExtractedPlan, interpretLeanLightReviewVerdict, LEAN_LIGHT_REVIEW_SCHEMA_VERSION, } from "./leanFastPath.js";
28
28
  import { contractArtifactExists, contractPipelineDir, } from "../contractPipeline/artifactStore.js";
29
29
  import { buildReviewRequest, applyReviewResolution, } from "../review/reviewGate.js";
30
30
  import { buildAutonomousReviewDecision } from "../review/autonomousGate.js";
31
31
  import { runFindingFilterPass } from "../findingFilter.js";
32
32
  import { intakePaths, isIntakeReady, readIntakeArtifacts, resolveManifestSources, } from "../intake.js";
33
- import { ensureIntakeRiskSignal, readIntakeRiskSignal, writeIntakeRiskSignal, escalateRiskSignal, } from "../riskSignal.js";
33
+ import { ensureIntakeRiskSignal, readIntakeRiskSignal, writeIntakeRiskSignal, escalateRiskSignal, findingRiskEvidence, distinctAffectedFiles, } from "../riskSignal.js";
34
34
  import { ambiguityReviewPrompt, clarificationPrompt, collectIntakeClarificationsPrompt, collectStartingPointPrompt, loaderCommand, reviewApprovalPrompt, synthesizeIntakePrompt, triagePrompt, } from "./prompts.js";
35
35
  // Single-sourced prose renders of the canonical lens / severity vocabularies
36
36
  // (`audit-tools/shared` `LENSES` / `SEVERITIES`) for the intent-checkpoint
@@ -2114,21 +2114,37 @@ async function handleReadyIntakeContractPipeline(root, artifactsDir, options) {
2114
2114
  }
2115
2115
  // Persist the filter dispositions so coverage is built over the originals.
2116
2116
  await persistReviewFilterDispositions(artifactsDir, originals, filter);
2117
- // A1 conservative lean fast path. When the approved set is a handful
2118
- // of grounded, high-confidence, localized, non-cross-cutting findings,
2119
- // the run skips the heavy contract DESIGN loop and synthesizes the
2120
- // extracted plan directly; the plan→implement→close machinery (per-node
2121
- // verify-before-merge + the final whole-repo gate) is the retained safety
2122
- // net. Runs only here on Path A (structured_audit), the only intake
2123
- // with a pre-existing finding set to judge.
2117
+ // Lean path = the `low` risk tier's realization (D-68 leanFastPath folded
2118
+ // into the self-scaling dial). A run skips the heavy contract DESIGN loop and
2119
+ // synthesizes the extracted plan directly IFF its effective risk tier is `low`;
2120
+ // the plan→implement→close machinery (per-node verify-before-merge + the final
2121
+ // whole-repo gate) is the retained safety net. Runs only here — on Path A
2122
+ // (structured_audit), the only intake with a pre-existing finding set to judge.
2124
2123
  //
2125
- // T1 slice 3b — the fast path is NOT zero-scrutiny: an eligible run first
2126
- // runs a bounded LIGHT adversarial review over the approved findings (the
2127
- // floor, never off). A clear verdict proceeds to the lean plan; a verdict
2128
- // that surfaces a real concern escalates the risk signal (evidence the
2129
- // work is harder than assessed) and routes to the full pipeline below.
2130
- const fast = evaluateFastPath(gate.approved);
2131
- if (fast.eligible) {
2124
+ // First fold the APPROVED set's finding-level risk (grounding / confidence /
2125
+ // coupling / systemic / architecture / count the finding-QUALITY dimension the
2126
+ // intake path/breadth/intent signal doesn't see) INTO the shared risk signal as
2127
+ // escalate-on-evidence. This makes the tier the SINGLE classifier: there is no
2128
+ // separate fast-path boolean that can DISAGREE with it (a grounded handful
2129
+ // touching a risk subsystem stays `high` and takes the full pipeline, instead of
2130
+ // bypassing it as the old parallel `evaluateFastPath` allowed).
2131
+ const findingEvidence = findingRiskEvidence(gate.approved);
2132
+ let riskSignal = await readIntakeRiskSignal(artifactsDir);
2133
+ if (findingEvidence && riskSignal) {
2134
+ const raised = escalateRiskSignal(riskSignal, findingEvidence);
2135
+ // escalateRiskSignal returns the SAME reference when the evidence does not
2136
+ // raise the tier — only persist on an actual change (no byte-identical rewrite).
2137
+ if (raised !== riskSignal) {
2138
+ riskSignal = raised;
2139
+ await writeIntakeRiskSignal(artifactsDir, riskSignal);
2140
+ }
2141
+ }
2142
+ // T1 slice 3b — the lean tier is NOT zero-scrutiny: a `low`-tier run first runs
2143
+ // a bounded LIGHT adversarial review over the approved findings (the floor,
2144
+ // never off — `adversarialDepthForTier("low") === "light"`). A clear verdict
2145
+ // proceeds to the lean plan; a verdict that surfaces a real concern escalates
2146
+ // the risk signal and routes to the full pipeline below.
2147
+ if (gate.approved.length > 0 && riskSignal?.tier === "low") {
2132
2148
  const review = await runLeanLightReviewGate(root, artifactsDir, gate.approved);
2133
2149
  if (review.kind === "halt") {
2134
2150
  return review.step;
@@ -2137,20 +2153,17 @@ async function handleReadyIntakeContractPipeline(root, artifactsDir, options) {
2137
2153
  // Escalate-on-evidence: raise the signal to at least `medium` so the
2138
2154
  // full pipeline's adversarial depth is `full` (see slice 3a), then
2139
2155
  // fall through to the full pipeline.
2140
- const current = await readIntakeRiskSignal(artifactsDir);
2141
- if (current) {
2142
- await writeIntakeRiskSignal(artifactsDir, escalateRiskSignal(current, {
2143
- tier: "medium",
2144
- reason: `lean light review surfaced a concern: ${review.concerns.join("; ")}`,
2145
- }));
2146
- }
2156
+ await writeIntakeRiskSignal(artifactsDir, escalateRiskSignal(riskSignal, {
2157
+ tier: "medium",
2158
+ reason: `lean light review surfaced a concern: ${review.concerns.join("; ")}`,
2159
+ }));
2147
2160
  process.stderr.write(`[remediate-code] Lean light review escalated (${review.concerns.join("; ")}); routing to the full contract pipeline.\n`);
2148
2161
  }
2149
2162
  else {
2150
2163
  // Clear verdict → proceed with the lean plan.
2151
2164
  const leanPlan = buildLeanExtractedPlan(gate.approved, randomRunId("LEAN"));
2152
2165
  await writeJsonFile(intakePaths(artifactsDir).extractedPlan, leanPlan);
2153
- process.stderr.write(`[remediate-code] Lean fast path: ${fast.reason}; light review clear. Routing to plan→implement.\n`);
2166
+ process.stderr.write(`[remediate-code] Lean fast path (risk tier low): ${riskSignal.rationale.join("; ")}; light review clear. Routing to plan→implement.\n`);
2154
2167
  const planned = await handlePendingExtractedPlan(root, artifactsDir, { status: "pending" }, leanPlan);
2155
2168
  if (planned) {
2156
2169
  return planned;