audit-tools 0.28.7 → 0.28.9

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 (209) hide show
  1. package/audit-code-wrapper-install-hosts.mjs +133 -27
  2. package/dist/audit/cli/confirmIntentStep.d.ts +1 -0
  3. package/dist/audit/cli/confirmIntentStep.d.ts.map +1 -1
  4. package/dist/audit/cli/confirmIntentStep.js +14 -10
  5. package/dist/audit/cli/confirmIntentStep.js.map +1 -1
  6. package/dist/audit/cli/dispatch/quotaPool.d.ts.map +1 -1
  7. package/dist/audit/cli/dispatch/quotaPool.js +4 -3
  8. package/dist/audit/cli/dispatch/quotaPool.js.map +1 -1
  9. package/dist/audit/cli/dispatch.d.ts +15 -1
  10. package/dist/audit/cli/dispatch.d.ts.map +1 -1
  11. package/dist/audit/cli/dispatch.js +54 -19
  12. package/dist/audit/cli/dispatch.js.map +1 -1
  13. package/dist/audit/cli/hybridDispatch.d.ts +46 -0
  14. package/dist/audit/cli/hybridDispatch.d.ts.map +1 -0
  15. package/dist/audit/cli/hybridDispatch.js +77 -0
  16. package/dist/audit/cli/hybridDispatch.js.map +1 -0
  17. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  18. package/dist/audit/cli/nextStepHelpers.js +111 -2
  19. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  20. package/dist/audit/cli/quotaCommand.d.ts.map +1 -1
  21. package/dist/audit/cli/quotaCommand.js +20 -10
  22. package/dist/audit/cli/quotaCommand.js.map +1 -1
  23. package/dist/audit/cli/reviewRun.d.ts +8 -0
  24. package/dist/audit/cli/reviewRun.d.ts.map +1 -1
  25. package/dist/audit/cli/reviewRun.js +1 -1
  26. package/dist/audit/cli/reviewRun.js.map +1 -1
  27. package/dist/audit/cli/rollingAuditDispatch.d.ts +57 -4
  28. package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
  29. package/dist/audit/cli/rollingAuditDispatch.js +137 -10
  30. package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
  31. package/dist/audit/cli/scoreAuditCommand.d.ts +16 -0
  32. package/dist/audit/cli/scoreAuditCommand.d.ts.map +1 -0
  33. package/dist/audit/cli/scoreAuditCommand.js +82 -0
  34. package/dist/audit/cli/scoreAuditCommand.js.map +1 -0
  35. package/dist/audit/cli/submitPacketCommand.d.ts.map +1 -1
  36. package/dist/audit/cli/submitPacketCommand.js +8 -1
  37. package/dist/audit/cli/submitPacketCommand.js.map +1 -1
  38. package/dist/audit/cli.d.ts.map +1 -1
  39. package/dist/audit/cli.js +5 -1
  40. package/dist/audit/cli.js.map +1 -1
  41. package/dist/audit/orchestrator/designReviewProjection.d.ts +9 -1
  42. package/dist/audit/orchestrator/designReviewProjection.d.ts.map +1 -1
  43. package/dist/audit/orchestrator/designReviewProjection.js +19 -1
  44. package/dist/audit/orchestrator/designReviewProjection.js.map +1 -1
  45. package/dist/audit/orchestrator/designReviewPrompt.d.ts +2 -0
  46. package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
  47. package/dist/audit/orchestrator/designReviewPrompt.js +11 -1
  48. package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
  49. package/dist/audit/orchestrator/executorRunners.js +1 -1
  50. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  51. package/dist/audit/orchestrator/intakeExecutors.d.ts +9 -1
  52. package/dist/audit/orchestrator/intakeExecutors.d.ts.map +1 -1
  53. package/dist/audit/orchestrator/intakeExecutors.js +16 -3
  54. package/dist/audit/orchestrator/intakeExecutors.js.map +1 -1
  55. package/dist/audit/orchestrator/intentCheckpointExecutor.d.ts.map +1 -1
  56. package/dist/audit/orchestrator/intentCheckpointExecutor.js +3 -0
  57. package/dist/audit/orchestrator/intentCheckpointExecutor.js.map +1 -1
  58. package/dist/audit/orchestrator/intentInterpreter.d.ts +21 -7
  59. package/dist/audit/orchestrator/intentInterpreter.d.ts.map +1 -1
  60. package/dist/audit/orchestrator/intentInterpreter.js +30 -11
  61. package/dist/audit/orchestrator/intentInterpreter.js.map +1 -1
  62. package/dist/audit/orchestrator/intentScopeDisposition.d.ts +49 -0
  63. package/dist/audit/orchestrator/intentScopeDisposition.d.ts.map +1 -0
  64. package/dist/audit/orchestrator/intentScopeDisposition.js +57 -0
  65. package/dist/audit/orchestrator/intentScopeDisposition.js.map +1 -0
  66. package/dist/audit/orchestrator/rollingDispatch.d.ts +9 -0
  67. package/dist/audit/orchestrator/rollingDispatch.d.ts.map +1 -1
  68. package/dist/audit/orchestrator/rollingDispatch.js +10 -0
  69. package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
  70. package/dist/audit/orchestrator/scope.d.ts +1 -0
  71. package/dist/audit/orchestrator/scope.d.ts.map +1 -1
  72. package/dist/audit/orchestrator/scope.js +2 -7
  73. package/dist/audit/orchestrator/scope.js.map +1 -1
  74. package/dist/audit/quota/index.d.ts +5 -0
  75. package/dist/audit/quota/index.d.ts.map +1 -1
  76. package/dist/audit/reporting/scoreAudit.d.ts +161 -0
  77. package/dist/audit/reporting/scoreAudit.d.ts.map +1 -0
  78. package/dist/audit/reporting/scoreAudit.js +224 -0
  79. package/dist/audit/reporting/scoreAudit.js.map +1 -0
  80. package/dist/audit/types/activeDispatch.d.ts +29 -1
  81. package/dist/audit/types/activeDispatch.d.ts.map +1 -1
  82. package/dist/audit/types/activeDispatch.js.map +1 -1
  83. package/dist/audit/types/analyzerCapability.d.ts +6 -6
  84. package/dist/audit/validation/auditResults.d.ts +13 -0
  85. package/dist/audit/validation/auditResults.d.ts.map +1 -1
  86. package/dist/audit/validation/auditResults.js +35 -12
  87. package/dist/audit/validation/auditResults.js.map +1 -1
  88. package/dist/remediate/contractPipeline/changeClassification.d.ts +146 -0
  89. package/dist/remediate/contractPipeline/changeClassification.d.ts.map +1 -0
  90. package/dist/remediate/contractPipeline/changeClassification.js +398 -0
  91. package/dist/remediate/contractPipeline/changeClassification.js.map +1 -0
  92. package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
  93. package/dist/remediate/contractPipeline/derive.js +9 -0
  94. package/dist/remediate/contractPipeline/derive.js.map +1 -1
  95. package/dist/remediate/intent/intentOrdering.d.ts +51 -0
  96. package/dist/remediate/intent/intentOrdering.d.ts.map +1 -0
  97. package/dist/remediate/intent/intentOrdering.js +150 -0
  98. package/dist/remediate/intent/intentOrdering.js.map +1 -0
  99. package/dist/remediate/phases/plan.d.ts.map +1 -1
  100. package/dist/remediate/phases/plan.js +14 -1
  101. package/dist/remediate/phases/plan.js.map +1 -1
  102. package/dist/remediate/providers/index.d.ts +32 -0
  103. package/dist/remediate/providers/index.d.ts.map +1 -1
  104. package/dist/remediate/providers/index.js +28 -1
  105. package/dist/remediate/providers/index.js.map +1 -1
  106. package/dist/remediate/steps/contractPipeline.d.ts +15 -1
  107. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  108. package/dist/remediate/steps/contractPipeline.js +282 -14
  109. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  110. package/dist/remediate/steps/dispatch.d.ts +56 -1
  111. package/dist/remediate/steps/dispatch.d.ts.map +1 -1
  112. package/dist/remediate/steps/dispatch.js +120 -29
  113. package/dist/remediate/steps/dispatch.js.map +1 -1
  114. package/dist/remediate/steps/nextStep.d.ts +53 -2
  115. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  116. package/dist/remediate/steps/nextStep.js +253 -81
  117. package/dist/remediate/steps/nextStep.js.map +1 -1
  118. package/dist/remediate/steps/providerNodeDispatch.d.ts +8 -1
  119. package/dist/remediate/steps/providerNodeDispatch.d.ts.map +1 -1
  120. package/dist/remediate/steps/providerNodeDispatch.js +7 -2
  121. package/dist/remediate/steps/providerNodeDispatch.js.map +1 -1
  122. package/dist/remediate/steps/rollingSession.d.ts +55 -1
  123. package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
  124. package/dist/remediate/steps/rollingSession.js +128 -19
  125. package/dist/remediate/steps/rollingSession.js.map +1 -1
  126. package/dist/remediate/validation/contractPipelineGates.d.ts +23 -8
  127. package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
  128. package/dist/remediate/validation/contractPipelineGates.js +43 -38
  129. package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
  130. package/dist/shared/dispatch/coordinator.d.ts +170 -0
  131. package/dist/shared/dispatch/coordinator.d.ts.map +1 -0
  132. package/dist/shared/dispatch/coordinator.js +177 -0
  133. package/dist/shared/dispatch/coordinator.js.map +1 -0
  134. package/dist/shared/dispatch/hybridDispatch.d.ts +74 -0
  135. package/dist/shared/dispatch/hybridDispatch.d.ts.map +1 -0
  136. package/dist/shared/dispatch/hybridDispatch.js +54 -0
  137. package/dist/shared/dispatch/hybridDispatch.js.map +1 -0
  138. package/dist/shared/dispatch/settledPools.d.ts +21 -0
  139. package/dist/shared/dispatch/settledPools.d.ts.map +1 -0
  140. package/dist/shared/dispatch/settledPools.js +34 -0
  141. package/dist/shared/dispatch/settledPools.js.map +1 -0
  142. package/dist/shared/index.d.ts +16 -6
  143. package/dist/shared/index.d.ts.map +1 -1
  144. package/dist/shared/index.js +15 -3
  145. package/dist/shared/index.js.map +1 -1
  146. package/dist/shared/intent/clauseInterpreter.d.ts +19 -0
  147. package/dist/shared/intent/clauseInterpreter.d.ts.map +1 -1
  148. package/dist/shared/intent/clauseInterpreter.js +19 -0
  149. package/dist/shared/intent/clauseInterpreter.js.map +1 -1
  150. package/dist/shared/io/json.d.ts +25 -0
  151. package/dist/shared/io/json.d.ts.map +1 -1
  152. package/dist/shared/io/json.js +67 -0
  153. package/dist/shared/io/json.js.map +1 -1
  154. package/dist/shared/providers/opencodeProvider.d.ts.map +1 -1
  155. package/dist/shared/providers/opencodeProvider.js +12 -0
  156. package/dist/shared/providers/opencodeProvider.js.map +1 -1
  157. package/dist/shared/providers/providerConfirmation.d.ts.map +1 -1
  158. package/dist/shared/providers/providerConfirmation.js +9 -1
  159. package/dist/shared/providers/providerConfirmation.js.map +1 -1
  160. package/dist/shared/providers/providerFactory.d.ts +1 -0
  161. package/dist/shared/providers/providerFactory.d.ts.map +1 -1
  162. package/dist/shared/providers/providerFactory.js +10 -8
  163. package/dist/shared/providers/providerFactory.js.map +1 -1
  164. package/dist/shared/providers/sharedProviderConfirmation.d.ts +134 -0
  165. package/dist/shared/providers/sharedProviderConfirmation.d.ts.map +1 -0
  166. package/dist/shared/providers/sharedProviderConfirmation.js +244 -0
  167. package/dist/shared/providers/sharedProviderConfirmation.js.map +1 -0
  168. package/dist/shared/quota/apiPool.d.ts +67 -0
  169. package/dist/shared/quota/apiPool.d.ts.map +1 -0
  170. package/dist/shared/quota/apiPool.js +139 -0
  171. package/dist/shared/quota/apiPool.js.map +1 -0
  172. package/dist/shared/quota/capacity.d.ts +29 -1
  173. package/dist/shared/quota/capacity.d.ts.map +1 -1
  174. package/dist/shared/quota/capacity.js +5 -0
  175. package/dist/shared/quota/capacity.js.map +1 -1
  176. package/dist/shared/quota/claimRegistry.d.ts +64 -0
  177. package/dist/shared/quota/claimRegistry.d.ts.map +1 -0
  178. package/dist/shared/quota/claimRegistry.js +157 -0
  179. package/dist/shared/quota/claimRegistry.js.map +1 -0
  180. package/dist/shared/quota/compositeQuotaSource.d.ts +10 -1
  181. package/dist/shared/quota/compositeQuotaSource.d.ts.map +1 -1
  182. package/dist/shared/quota/compositeQuotaSource.js +34 -6
  183. package/dist/shared/quota/compositeQuotaSource.js.map +1 -1
  184. package/dist/shared/quota/httpQuotaSource.d.ts +9 -1
  185. package/dist/shared/quota/httpQuotaSource.d.ts.map +1 -1
  186. package/dist/shared/quota/httpQuotaSource.js +33 -8
  187. package/dist/shared/quota/httpQuotaSource.js.map +1 -1
  188. package/dist/shared/quota/learnedQuotaSource.d.ts +7 -1
  189. package/dist/shared/quota/learnedQuotaSource.d.ts.map +1 -1
  190. package/dist/shared/quota/learnedQuotaSource.js +18 -7
  191. package/dist/shared/quota/learnedQuotaSource.js.map +1 -1
  192. package/dist/shared/quota/quotaSource.d.ts +41 -0
  193. package/dist/shared/quota/quotaSource.d.ts.map +1 -1
  194. package/dist/shared/quota/quotaSource.js +19 -0
  195. package/dist/shared/quota/quotaSource.js.map +1 -1
  196. package/dist/shared/types/contractPipeline/obligations.d.ts +42 -0
  197. package/dist/shared/types/contractPipeline/obligations.d.ts.map +1 -1
  198. package/dist/shared/types/contractPipeline.d.ts +1 -1
  199. package/dist/shared/types/contractPipeline.d.ts.map +1 -1
  200. package/dist/shared/types/contractPipeline.js.map +1 -1
  201. package/dist/shared/types/intentCheckpoint.d.ts +14 -0
  202. package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
  203. package/dist/shared/types/intentCheckpoint.js +10 -0
  204. package/dist/shared/types/intentCheckpoint.js.map +1 -1
  205. package/dist/shared/types/sessionConfig.d.ts +60 -0
  206. package/dist/shared/types/sessionConfig.d.ts.map +1 -1
  207. package/dist/shared/types/sessionConfig.js +13 -0
  208. package/dist/shared/types/sessionConfig.js.map +1 -1
  209. package/package.json +3 -2
@@ -1,7 +1,9 @@
1
1
  import { changedFiles, gitRefExists, isGitRepo } 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";
4
5
  import { HIGH_FAN_DEGREE_THRESHOLD, buildGraphDegreeIndex, collectGraphEdges, graphEdgeConfidence, normalizeGraphPath, } from "./reviewPacketGraph.js";
6
+ export { pathMatchesExclusion } from "./intentScopeDisposition.js";
5
7
  /** Default cap on in-scope files (seeds + expanded) before expansion stops. */
6
8
  export const DEFAULT_SCOPE_MAX_FILES = 200;
7
9
  /** Graph edges below this confidence are never traversed during expansion. */
@@ -232,13 +234,6 @@ export function applyScopeToCoverage(coverage, scope, priorCoverage) {
232
234
  }
233
235
  return coverage;
234
236
  }
235
- function pathMatchesExclusion(filePath, entryPath) {
236
- const f = filePath.replace(/\\/g, "/");
237
- const p = entryPath.replace(/\\/g, "/").replace(/\/+$/, "");
238
- if (!p)
239
- return false;
240
- return f === p || f.startsWith(`${p}/`);
241
- }
242
237
  /**
243
238
  * Apply the intent checkpoint's `excluded_scope` to a coverage matrix: any file
244
239
  * whose path matches an exclusion (exact or directory-prefix) is marked excluded
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/scope.ts"],"names":[],"mappings":"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"}
@@ -119,6 +119,7 @@ export declare const DispatchQuotaSchema: z.ZodObject<{
119
119
  captured_at: string;
120
120
  source: string;
121
121
  }>>>;
122
+ quota_signal_degraded: z.ZodOptional<z.ZodBoolean>;
122
123
  }, "strict", z.ZodTypeAny, {
123
124
  confidence: "high" | "low" | "medium";
124
125
  source: "default" | "explicit_config" | "discovered_capability" | "cli_flags" | "provider_default" | "learned";
@@ -149,6 +150,7 @@ export declare const DispatchQuotaSchema: z.ZodObject<{
149
150
  captured_at: string;
150
151
  source: string;
151
152
  } | null | undefined;
153
+ quota_signal_degraded?: boolean | undefined;
152
154
  }, {
153
155
  confidence: "high" | "low" | "medium";
154
156
  source: "default" | "explicit_config" | "discovered_capability" | "cli_flags" | "provider_default" | "learned";
@@ -179,6 +181,7 @@ export declare const DispatchQuotaSchema: z.ZodObject<{
179
181
  captured_at: string;
180
182
  source: string;
181
183
  } | null | undefined;
184
+ quota_signal_degraded?: boolean | undefined;
182
185
  }>, "many">>;
183
186
  /** Echo of the host-reported model roster (lowest rank first), when given. */
184
187
  host_model_roster: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -293,6 +296,7 @@ export declare const DispatchQuotaSchema: z.ZodObject<{
293
296
  captured_at: string;
294
297
  source: string;
295
298
  } | null | undefined;
299
+ quota_signal_degraded?: boolean | undefined;
296
300
  }[] | undefined;
297
301
  host_model_roster?: {
298
302
  context_tokens: number;
@@ -365,6 +369,7 @@ export declare const DispatchQuotaSchema: z.ZodObject<{
365
369
  captured_at: string;
366
370
  source: string;
367
371
  } | null | undefined;
372
+ quota_signal_degraded?: boolean | undefined;
368
373
  }[] | undefined;
369
374
  host_model_roster?: {
370
375
  context_tokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/quota/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3F,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAErH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAG/H,eAAO,MAAM,uBAAuB,EAAG,oCAA6C,CAAC;AACrF,eAAO,MAAM,uBAAuB,EAAG,oCAA6C,CAAC;AAErF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgB5B,8EAA8E;;;;;;;;;;;;;;;;;IAE9E,gFAAgF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKzE,CAAC;AACZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/quota/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,0BAA0B,EAC1B,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3F,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,YAAY,EACV,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAErH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAG/H,eAAO,MAAM,uBAAuB,EAAG,oCAA6C,CAAC;AACrF,eAAO,MAAM,uBAAuB,EAAG,oCAA6C,CAAC;AAErF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgB5B,8EAA8E;;;;;;;;;;;;;;;;;IAE9E,gFAAgF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKzE,CAAC;AACZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * A-2 — the deterministic finding-quality oracle (`score-audit`).
3
+ *
4
+ * `scoreAudit` is a PURE function of (a fresh audit's findings, a corpus's
5
+ * human-applied labels). It is the falsifiable measure of audit output quality:
6
+ * precision (are emitted findings real?), recall_against_known (did this run
7
+ * re-find the labeled true-positives?), and hallucination_rate (how many emitted
8
+ * findings are labeled `hallucinated` — cited code that doesn't exist / says
9
+ * otherwise, exactly what the grounding pass should have caught).
10
+ *
11
+ * Two design rules, both load-bearing:
12
+ *
13
+ * 1. **Match ONLY by `findingIdentitySignature`** — the one shared "is this the
14
+ * same finding?" authority. Volatile fields (line numbers, pass ordinals,
15
+ * reworded titles) never reach the signature, so a reworded re-emission of a
16
+ * labeled finding still matches its label across runs.
17
+ * 2. **No silent scoring.** Every emitted finding and every label that cannot be
18
+ * cleanly matched is surfaced in `unmatched[]` with an explicit reason — it is
19
+ * never folded into a verdict it doesn't belong to. In particular the CE-010
20
+ * case (`findingIdentitySignature` is non-injective: two DISTINCT findings can
21
+ * share `affected_files[0].path + symbol`, e.g. tier-2 lens+category fileless
22
+ * collisions) is surfaced as an `ambiguous_signature_collision` group rather
23
+ * than scoring multiple distinct findings/labels under one verdict.
24
+ *
25
+ * The exit code (the CI gate) is wired SOLELY to a hallucination-rate
26
+ * REGRESSION — see {@link hallucinationRegressed}. Precision and recall are
27
+ * tracked and emitted but never gate the build (the A-2 "track, don't gate"
28
+ * decision: precision/recall thresholds are flaky on legitimate finding-set
29
+ * changes until a baseline is established; hallucination-rate is the one
30
+ * unambiguous metric, already half-enforced by grounding).
31
+ *
32
+ * Pure module: no IO, no clock, no model identity — the same (findings, labels)
33
+ * always yields a byte-identical scorecard.
34
+ */
35
+ import { type Finding } from "audit-tools/shared";
36
+ /** The label a human applies to one finding of a labeled corpus run. */
37
+ export type FindingLabel = "true_positive" | "false_positive" | "hallucinated";
38
+ /**
39
+ * One human-applied label, keyed on a finding-identity SIGNATURE (not a finding
40
+ * id — ids are run-local and content-addressed; the signature is the stable
41
+ * cross-run identity). `note` is optional human context, ignored by scoring.
42
+ */
43
+ export interface CorpusLabel {
44
+ /** The `findingIdentitySignature` of the labeled finding. */
45
+ signature: string;
46
+ label: FindingLabel;
47
+ /** Optional human note (e.g. why it was deemed hallucinated). Not scored. */
48
+ note?: string;
49
+ }
50
+ /**
51
+ * A versioned corpus labels file (`corpus/<run-id>.labels.json`). Decoupled from
52
+ * the raw run so a re-run of the auditor can be scored against the SAME labels.
53
+ */
54
+ export interface CorpusLabels {
55
+ schema_version: "score-audit-corpus-labels/v1";
56
+ /** The run these labels were applied to (provenance only; not scored). */
57
+ run_id: string;
58
+ labels: CorpusLabel[];
59
+ }
60
+ /** Why a finding or a label could not be cleanly scored. */
61
+ export type UnmatchedReason =
62
+ /** An emitted finding whose signature has no label in the corpus. */
63
+ "finding_unlabeled"
64
+ /** A label whose signature was not emitted by this run (recall miss bucket). */
65
+ | "label_unmatched"
66
+ /**
67
+ * CE-010: a signature shared by MORE THAN ONE distinct emitted finding and/or
68
+ * more than one label — non-injective identity. Surfaced, never scored under a
69
+ * single verdict.
70
+ */
71
+ | "ambiguous_signature_collision";
72
+ /** One entry in the explicit, no-silent-scoring `unmatched[]` accounting. */
73
+ export interface UnmatchedEntry {
74
+ signature: string;
75
+ reason: UnmatchedReason;
76
+ /** Ids of the emitted finding(s) at this signature (stable order). */
77
+ finding_ids: string[];
78
+ /** Labels recorded at this signature (stable order). */
79
+ labels: FindingLabel[];
80
+ }
81
+ /** The deterministic scorecard `scoreAudit` emits. */
82
+ export interface Scorecard {
83
+ schema_version: "score-audit-scorecard/v1";
84
+ run_id: string;
85
+ counts: {
86
+ /** Findings emitted by the run (the scorer's input finding set). */
87
+ findings_emitted: number;
88
+ /** Labels in the corpus. */
89
+ labels_total: number;
90
+ /** Findings cleanly matched 1:1 to a label by signature. */
91
+ matched: number;
92
+ /** Of matched, labeled `true_positive`. */
93
+ true_positives: number;
94
+ /** Of matched, labeled `false_positive`. */
95
+ false_positives: number;
96
+ /** Of matched, labeled `hallucinated`. */
97
+ hallucinated: number;
98
+ /** Labeled true_positives NOT re-found by this run (recall misses). */
99
+ known_true_positives_missed: number;
100
+ /** Total entries in `unmatched[]` (collisions + unlabeled + label misses). */
101
+ unmatched: number;
102
+ /** Of `unmatched`, the CE-010 collision groups. */
103
+ collisions: number;
104
+ };
105
+ /**
106
+ * precision = TP / (TP + FP + hallucinated) over CLEANLY-MATCHED findings.
107
+ * `null` when there are no matched findings (undefined, never silently 0).
108
+ */
109
+ precision: number | null;
110
+ /**
111
+ * recall_against_known = (labeled TP re-found) / (all labeled TP). `null` when
112
+ * the corpus labels no true_positives. Recall-against-KNOWN, not absolute.
113
+ */
114
+ recall_against_known: number | null;
115
+ /**
116
+ * hallucination_rate = hallucinated / findings_emitted. The gated metric.
117
+ * `null` when the run emitted no findings (undefined, never silently 0).
118
+ */
119
+ hallucination_rate: number | null;
120
+ /** Explicit accounting of everything not cleanly scored (no silent scoring). */
121
+ unmatched: UnmatchedEntry[];
122
+ }
123
+ /**
124
+ * The signature of a finding — the single match key (CE-010 axis). Delegates to
125
+ * the pipeline's one finding-identity authority (`findingIdentityKey`); it is NOT
126
+ * re-derived here, so the scorer can never drift from the auditor's own
127
+ * "is this the same finding?" rule.
128
+ */
129
+ export declare function findingSignature(finding: Finding): string;
130
+ /**
131
+ * Score a fresh audit's findings against a corpus's labels — the pure A-2 oracle.
132
+ *
133
+ * Matching is by `findingIdentitySignature` ONLY. A signature carrying more than
134
+ * one distinct emitted finding OR more than one label is non-injective (CE-010);
135
+ * it is surfaced as an `ambiguous_signature_collision` and excluded from every
136
+ * verdict — neither finding nor label at a colliding signature is scored.
137
+ *
138
+ * Cleanly matched (exactly one finding ↔ exactly one label) drives precision /
139
+ * hallucination_rate; the labeled true_positive set drives recall_against_known.
140
+ * Emitted findings with no label, and labels not re-found by the run, are each
141
+ * surfaced in `unmatched[]` (no silent scoring).
142
+ */
143
+ export declare function scoreAudit(findings: Finding[], corpus: CorpusLabels): Scorecard;
144
+ /**
145
+ * The SOLE gate predicate: did the hallucination rate REGRESS against a baseline?
146
+ *
147
+ * The CI exit code is wired to this and nothing else (A-2 track-don't-gate).
148
+ * Precision/recall are emitted for tracking but never gate the build.
149
+ *
150
+ * - With no baseline, nothing has regressed (the first run establishes the
151
+ * baseline — it cannot regress against itself).
152
+ * - A `null` current rate (the run emitted no findings) cannot regress.
153
+ * - A `null` baseline rate (the baseline emitted no findings) is treated as 0 —
154
+ * any positive current rate is then a regression.
155
+ *
156
+ * `epsilon` absorbs floating-point noise so a byte-identical re-run never trips.
157
+ */
158
+ export declare function hallucinationRegressed(current: Scorecard, baseline: Scorecard | null | undefined, epsilon?: number): boolean;
159
+ /** A compact, deterministic human summary of a {@link Scorecard}. */
160
+ export declare function renderScorecardMarkdown(scorecard: Scorecard): string;
161
+ //# sourceMappingURL=scoreAudit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreAudit.d.ts","sourceRoot":"","sources":["../../../src/audit/reporting/scoreAudit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAsB,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAEtE,wEAAwE;AACxE,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,8BAA8B,CAAC;IAC/C,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,4DAA4D;AAC5D,MAAM,MAAM,eAAe;AACzB,qEAAqE;AACnE,mBAAmB;AACrB,gFAAgF;GAC9E,iBAAiB;AACnB;;;;GAIG;GACD,+BAA+B,CAAC;AAEpC,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,sEAAsE;IACtE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,wDAAwD;IACxD,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,sDAAsD;AACtD,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,0BAA0B,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,oEAAoE;QACpE,gBAAgB,EAAE,MAAM,CAAC;QACzB,4BAA4B;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,4DAA4D;QAC5D,OAAO,EAAE,MAAM,CAAC;QAChB,2CAA2C;QAC3C,cAAc,EAAE,MAAM,CAAC;QACvB,4CAA4C;QAC5C,eAAe,EAAE,MAAM,CAAC;QACxB,0CAA0C;QAC1C,YAAY,EAAE,MAAM,CAAC;QACrB,uEAAuE;QACvE,2BAA2B,EAAE,MAAM,CAAC;QACpC,8EAA8E;QAC9E,SAAS,EAAE,MAAM,CAAC;QAClB,mDAAmD;QACnD,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF;;;OAGG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gFAAgF;IAChF,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEzD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,YAAY,GACnB,SAAS,CAuHX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,EACtC,OAAO,SAAO,GACb,OAAO,CAMT;AAED,qEAAqE;AACrE,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CA2BpE"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * A-2 — the deterministic finding-quality oracle (`score-audit`).
3
+ *
4
+ * `scoreAudit` is a PURE function of (a fresh audit's findings, a corpus's
5
+ * human-applied labels). It is the falsifiable measure of audit output quality:
6
+ * precision (are emitted findings real?), recall_against_known (did this run
7
+ * re-find the labeled true-positives?), and hallucination_rate (how many emitted
8
+ * findings are labeled `hallucinated` — cited code that doesn't exist / says
9
+ * otherwise, exactly what the grounding pass should have caught).
10
+ *
11
+ * Two design rules, both load-bearing:
12
+ *
13
+ * 1. **Match ONLY by `findingIdentitySignature`** — the one shared "is this the
14
+ * same finding?" authority. Volatile fields (line numbers, pass ordinals,
15
+ * reworded titles) never reach the signature, so a reworded re-emission of a
16
+ * labeled finding still matches its label across runs.
17
+ * 2. **No silent scoring.** Every emitted finding and every label that cannot be
18
+ * cleanly matched is surfaced in `unmatched[]` with an explicit reason — it is
19
+ * never folded into a verdict it doesn't belong to. In particular the CE-010
20
+ * case (`findingIdentitySignature` is non-injective: two DISTINCT findings can
21
+ * share `affected_files[0].path + symbol`, e.g. tier-2 lens+category fileless
22
+ * collisions) is surfaced as an `ambiguous_signature_collision` group rather
23
+ * than scoring multiple distinct findings/labels under one verdict.
24
+ *
25
+ * The exit code (the CI gate) is wired SOLELY to a hallucination-rate
26
+ * REGRESSION — see {@link hallucinationRegressed}. Precision and recall are
27
+ * tracked and emitted but never gate the build (the A-2 "track, don't gate"
28
+ * decision: precision/recall thresholds are flaky on legitimate finding-set
29
+ * changes until a baseline is established; hallucination-rate is the one
30
+ * unambiguous metric, already half-enforced by grounding).
31
+ *
32
+ * Pure module: no IO, no clock, no model identity — the same (findings, labels)
33
+ * always yields a byte-identical scorecard.
34
+ */
35
+ import { findingIdentityKey } from "audit-tools/shared";
36
+ /**
37
+ * The signature of a finding — the single match key (CE-010 axis). Delegates to
38
+ * the pipeline's one finding-identity authority (`findingIdentityKey`); it is NOT
39
+ * re-derived here, so the scorer can never drift from the auditor's own
40
+ * "is this the same finding?" rule.
41
+ */
42
+ export function findingSignature(finding) {
43
+ return findingIdentityKey(finding);
44
+ }
45
+ function ratio(numerator, denominator) {
46
+ return denominator === 0 ? null : numerator / denominator;
47
+ }
48
+ /**
49
+ * Score a fresh audit's findings against a corpus's labels — the pure A-2 oracle.
50
+ *
51
+ * Matching is by `findingIdentitySignature` ONLY. A signature carrying more than
52
+ * one distinct emitted finding OR more than one label is non-injective (CE-010);
53
+ * it is surfaced as an `ambiguous_signature_collision` and excluded from every
54
+ * verdict — neither finding nor label at a colliding signature is scored.
55
+ *
56
+ * Cleanly matched (exactly one finding ↔ exactly one label) drives precision /
57
+ * hallucination_rate; the labeled true_positive set drives recall_against_known.
58
+ * Emitted findings with no label, and labels not re-found by the run, are each
59
+ * surfaced in `unmatched[]` (no silent scoring).
60
+ */
61
+ export function scoreAudit(findings, corpus) {
62
+ // Group emitted findings by signature (stable id order within a group).
63
+ const findingsBySig = new Map();
64
+ for (const finding of findings) {
65
+ const sig = findingSignature(finding);
66
+ const ids = findingsBySig.get(sig) ?? [];
67
+ ids.push(finding.id);
68
+ findingsBySig.set(sig, ids);
69
+ }
70
+ for (const ids of findingsBySig.values())
71
+ ids.sort();
72
+ // Group labels by signature (stable label order within a group).
73
+ const labelsBySig = new Map();
74
+ for (const entry of corpus.labels) {
75
+ const labels = labelsBySig.get(entry.signature) ?? [];
76
+ labels.push(entry.label);
77
+ labelsBySig.set(entry.signature, labels);
78
+ }
79
+ for (const labels of labelsBySig.values())
80
+ labels.sort();
81
+ // The universe of signatures, iterated in a deterministic (sorted) order so
82
+ // the scorecard is byte-identical across runs regardless of input ordering.
83
+ const allSignatures = [
84
+ ...new Set([...findingsBySig.keys(), ...labelsBySig.keys()]),
85
+ ].sort();
86
+ let truePositives = 0;
87
+ let falsePositives = 0;
88
+ let hallucinated = 0;
89
+ let matched = 0;
90
+ let knownTpMissed = 0;
91
+ const unmatched = [];
92
+ // Recall denominator: every labeled true_positive in the corpus. A signature
93
+ // is only counted as RE-FOUND when it cleanly matches (no collision).
94
+ let knownTpTotal = 0;
95
+ for (const labels of labelsBySig.values()) {
96
+ knownTpTotal += labels.filter((l) => l === "true_positive").length;
97
+ }
98
+ for (const sig of allSignatures) {
99
+ const findingIds = findingsBySig.get(sig) ?? [];
100
+ const labels = labelsBySig.get(sig) ?? [];
101
+ // CE-010: non-injective signature. More than one distinct finding OR more
102
+ // than one label at this signature → cannot attribute a single verdict.
103
+ // Surface as a collision; score NOTHING here.
104
+ if (findingIds.length > 1 || labels.length > 1) {
105
+ unmatched.push({
106
+ signature: sig,
107
+ reason: "ambiguous_signature_collision",
108
+ finding_ids: findingIds,
109
+ labels,
110
+ });
111
+ // A colliding signature whose labels include true_positives is NOT counted
112
+ // as re-found (we cannot prove which finding satisfied which label).
113
+ knownTpMissed += labels.filter((l) => l === "true_positive").length;
114
+ continue;
115
+ }
116
+ // Exactly one finding and exactly one label → a clean 1:1 match.
117
+ if (findingIds.length === 1 && labels.length === 1) {
118
+ matched += 1;
119
+ const label = labels[0];
120
+ if (label === "true_positive")
121
+ truePositives += 1;
122
+ else if (label === "false_positive")
123
+ falsePositives += 1;
124
+ else
125
+ hallucinated += 1;
126
+ continue;
127
+ }
128
+ // A finding with no label — surfaced, never scored.
129
+ if (findingIds.length === 1 && labels.length === 0) {
130
+ unmatched.push({
131
+ signature: sig,
132
+ reason: "finding_unlabeled",
133
+ finding_ids: findingIds,
134
+ labels: [],
135
+ });
136
+ continue;
137
+ }
138
+ // A label not re-found by this run — a recall miss bucket, surfaced.
139
+ if (findingIds.length === 0 && labels.length === 1) {
140
+ unmatched.push({
141
+ signature: sig,
142
+ reason: "label_unmatched",
143
+ finding_ids: [],
144
+ labels,
145
+ });
146
+ knownTpMissed += labels.filter((l) => l === "true_positive").length;
147
+ continue;
148
+ }
149
+ }
150
+ const findingsEmitted = findings.length;
151
+ const collisions = unmatched.filter((u) => u.reason === "ambiguous_signature_collision").length;
152
+ return {
153
+ schema_version: "score-audit-scorecard/v1",
154
+ run_id: corpus.run_id,
155
+ counts: {
156
+ findings_emitted: findingsEmitted,
157
+ labels_total: corpus.labels.length,
158
+ matched,
159
+ true_positives: truePositives,
160
+ false_positives: falsePositives,
161
+ hallucinated,
162
+ known_true_positives_missed: knownTpMissed,
163
+ unmatched: unmatched.length,
164
+ collisions,
165
+ },
166
+ // precision over cleanly-matched findings only.
167
+ precision: ratio(truePositives, truePositives + falsePositives + hallucinated),
168
+ recall_against_known: ratio(knownTpTotal - knownTpMissed, knownTpTotal),
169
+ hallucination_rate: ratio(hallucinated, findingsEmitted),
170
+ unmatched,
171
+ };
172
+ }
173
+ /**
174
+ * The SOLE gate predicate: did the hallucination rate REGRESS against a baseline?
175
+ *
176
+ * The CI exit code is wired to this and nothing else (A-2 track-don't-gate).
177
+ * Precision/recall are emitted for tracking but never gate the build.
178
+ *
179
+ * - With no baseline, nothing has regressed (the first run establishes the
180
+ * baseline — it cannot regress against itself).
181
+ * - A `null` current rate (the run emitted no findings) cannot regress.
182
+ * - A `null` baseline rate (the baseline emitted no findings) is treated as 0 —
183
+ * any positive current rate is then a regression.
184
+ *
185
+ * `epsilon` absorbs floating-point noise so a byte-identical re-run never trips.
186
+ */
187
+ export function hallucinationRegressed(current, baseline, epsilon = 1e-9) {
188
+ if (!baseline)
189
+ return false;
190
+ const currentRate = current.hallucination_rate;
191
+ if (currentRate === null)
192
+ return false;
193
+ const baselineRate = baseline.hallucination_rate ?? 0;
194
+ return currentRate > baselineRate + epsilon;
195
+ }
196
+ /** A compact, deterministic human summary of a {@link Scorecard}. */
197
+ export function renderScorecardMarkdown(scorecard) {
198
+ const pct = (value) => value === null ? "n/a" : `${(value * 100).toFixed(1)}%`;
199
+ const c = scorecard.counts;
200
+ const lines = [
201
+ `# Audit scorecard — ${scorecard.run_id}`,
202
+ "",
203
+ `- Findings emitted: ${c.findings_emitted}`,
204
+ `- Labels: ${c.labels_total}`,
205
+ `- Matched (1:1 by signature): ${c.matched} ` +
206
+ `(TP ${c.true_positives}, FP ${c.false_positives}, hallucinated ${c.hallucinated})`,
207
+ `- Precision: ${pct(scorecard.precision)}`,
208
+ `- Recall against known: ${pct(scorecard.recall_against_known)} ` +
209
+ `(${c.known_true_positives_missed} known TP missed)`,
210
+ `- Hallucination rate (gated): ${pct(scorecard.hallucination_rate)}`,
211
+ `- Unmatched: ${c.unmatched} ` +
212
+ `(of which ${c.collisions} ambiguous signature collision(s))`,
213
+ ];
214
+ if (scorecard.unmatched.length > 0) {
215
+ lines.push("", "## Unmatched (not scored)");
216
+ for (const entry of scorecard.unmatched) {
217
+ const ids = entry.finding_ids.length > 0 ? entry.finding_ids.join(", ") : "—";
218
+ const labels = entry.labels.length > 0 ? entry.labels.join(", ") : "—";
219
+ lines.push(`- \`${entry.signature}\` — ${entry.reason}: findings [${ids}], labels [${labels}]`);
220
+ }
221
+ }
222
+ return lines.join("\n") + "\n";
223
+ }
224
+ //# sourceMappingURL=scoreAudit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreAudit.js","sourceRoot":"","sources":["../../../src/audit/reporting/scoreAudit.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,26 @@
1
- import type { PartialCompletionTerminal } from "audit-tools/shared";
1
+ import type { PartialCompletionTerminal, RollingEngineLifecycleState } from "audit-tools/shared";
2
2
  export declare const DISPATCH_RESULT_MAP_FILENAME = "dispatch-result-map.json";
3
3
  export declare const ACTIVE_DISPATCH_FILENAME = "active-dispatch.json";
4
+ /**
5
+ * The resumable `waiting_for_provider` paused state of an audit rolling-dispatch
6
+ * run, persisted on the active-dispatch artifact so a quota-exhausted run pauses
7
+ * across `next-step` invocations instead of stranding packets (DC-4 fix 1). It
8
+ * carries the rolling-engine lifecycle state (`waiting_for_provider` →
9
+ * `terminal/livelock` per `advancePausedState`) PLUS the accumulated
10
+ * `SettledExclusionSet` — the pool ids that have been spilled-then-exhausted. The
11
+ * set is serialized as a sorted array (JSON has no Set) and rehydrated to a
12
+ * `ReadonlySet` before `advancePausedState`, so a settled pool is never re-offered
13
+ * as net-new on re-discovery (INV-S03 / CE-001). a8's cross-pool coordinator reads
14
+ * and co-derives the SAME field — this is the shared exclusion set, not a private
15
+ * one — so a pool a8 spilled off is already accounted for when the pause engages.
16
+ */
17
+ export interface DispatchPausedState {
18
+ lifecycle: Extract<RollingEngineLifecycleState, {
19
+ kind: "waiting_for_provider";
20
+ }>;
21
+ /** Sorted pool ids that have been exhausted (the shared SettledExclusionSet). */
22
+ settled_exclusions: string[];
23
+ }
4
24
  export interface ActiveDispatchState {
5
25
  run_id: string;
6
26
  created_at: string;
@@ -22,6 +42,14 @@ export interface ActiveDispatchState {
22
42
  * on partial coverage, without blocking on tasks that can never be dispatched.
23
43
  */
24
44
  partial_completion_terminal?: PartialCompletionTerminal;
45
+ /**
46
+ * Set when the rolling audit run is paused on an exhausted provider pool and is
47
+ * resumable (DC-4). Cleared once it resumes (capacity returned) or is promoted to
48
+ * a `partial_completion_terminal` (livelock after the pause limit). Mutually
49
+ * exclusive with a "done" state — a run is either paused here or terminal there,
50
+ * never both.
51
+ */
52
+ paused_state?: DispatchPausedState;
25
53
  }
26
54
  export interface DispatchResultMapEntry {
27
55
  packet_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"activeDispatch.d.ts","sourceRoot":"","sources":["../../../src/audit/types/activeDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,iGAAiG;IACjG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,2BAA2B,CAAC,EAAE,yBAAyB,CAAC;CACzD;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,sCAAsC,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC"}
1
+ {"version":3,"file":"activeDispatch.d.ts","sourceRoot":"","sources":["../../../src/audit/types/activeDispatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AACvE,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAChB,2BAA2B,EAC3B;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CACjC,CAAC;IACF,iFAAiF;IACjF,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,iGAAiG;IACjG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,2BAA2B,CAAC,EAAE,yBAAyB,CAAC;IACxD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,sCAAsC,CAAC;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"activeDispatch.js","sourceRoot":"","sources":["../../../src/audit/types/activeDispatch.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC"}
1
+ {"version":3,"file":"activeDispatch.js","sourceRoot":"","sources":["../../../src/audit/types/activeDispatch.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,sBAAsB,CAAC"}
@@ -10,14 +10,14 @@ export declare const AnalyzerCapabilityEntrySchema: z.ZodObject<{
10
10
  note: z.ZodOptional<z.ZodString>;
11
11
  }, "strict", z.ZodTypeAny, {
12
12
  id: string;
13
- resolution: "repo" | "skip" | "cache" | "absent" | "installed" | "not_applicable";
13
+ resolution: "repo" | "skip" | "cache" | "absent" | "not_applicable" | "installed";
14
14
  setting: "auto" | "repo" | "ephemeral" | "permanent" | "skip";
15
15
  edges_added: number;
16
16
  routes_added: number;
17
17
  note?: string | undefined;
18
18
  }, {
19
19
  id: string;
20
- resolution: "repo" | "skip" | "cache" | "absent" | "installed" | "not_applicable";
20
+ resolution: "repo" | "skip" | "cache" | "absent" | "not_applicable" | "installed";
21
21
  setting: "auto" | "repo" | "ephemeral" | "permanent" | "skip";
22
22
  edges_added: number;
23
23
  routes_added: number;
@@ -36,14 +36,14 @@ export declare const AnalyzerCapabilityRecordSchema: z.ZodObject<{
36
36
  note: z.ZodOptional<z.ZodString>;
37
37
  }, "strict", z.ZodTypeAny, {
38
38
  id: string;
39
- resolution: "repo" | "skip" | "cache" | "absent" | "installed" | "not_applicable";
39
+ resolution: "repo" | "skip" | "cache" | "absent" | "not_applicable" | "installed";
40
40
  setting: "auto" | "repo" | "ephemeral" | "permanent" | "skip";
41
41
  edges_added: number;
42
42
  routes_added: number;
43
43
  note?: string | undefined;
44
44
  }, {
45
45
  id: string;
46
- resolution: "repo" | "skip" | "cache" | "absent" | "installed" | "not_applicable";
46
+ resolution: "repo" | "skip" | "cache" | "absent" | "not_applicable" | "installed";
47
47
  setting: "auto" | "repo" | "ephemeral" | "permanent" | "skip";
48
48
  edges_added: number;
49
49
  routes_added: number;
@@ -53,7 +53,7 @@ export declare const AnalyzerCapabilityRecordSchema: z.ZodObject<{
53
53
  status: "applied" | "omitted";
54
54
  analyzers: {
55
55
  id: string;
56
- resolution: "repo" | "skip" | "cache" | "absent" | "installed" | "not_applicable";
56
+ resolution: "repo" | "skip" | "cache" | "absent" | "not_applicable" | "installed";
57
57
  setting: "auto" | "repo" | "ephemeral" | "permanent" | "skip";
58
58
  edges_added: number;
59
59
  routes_added: number;
@@ -63,7 +63,7 @@ export declare const AnalyzerCapabilityRecordSchema: z.ZodObject<{
63
63
  status: "applied" | "omitted";
64
64
  analyzers: {
65
65
  id: string;
66
- resolution: "repo" | "skip" | "cache" | "absent" | "installed" | "not_applicable";
66
+ resolution: "repo" | "skip" | "cache" | "absent" | "not_applicable" | "installed";
67
67
  setting: "auto" | "repo" | "ephemeral" | "permanent" | "skip";
68
68
  edges_added: number;
69
69
  routes_added: number;