audit-tools 0.28.8 → 0.28.10
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/audit-code-wrapper-install-hosts.mjs +133 -27
- package/dist/audit/cli/confirmIntentStep.d.ts +1 -0
- package/dist/audit/cli/confirmIntentStep.d.ts.map +1 -1
- package/dist/audit/cli/confirmIntentStep.js +14 -10
- package/dist/audit/cli/confirmIntentStep.js.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/quotaPool.js +47 -39
- package/dist/audit/cli/dispatch/quotaPool.js.map +1 -1
- package/dist/audit/cli/dispatch.d.ts +15 -1
- package/dist/audit/cli/dispatch.d.ts.map +1 -1
- package/dist/audit/cli/dispatch.js +54 -19
- package/dist/audit/cli/dispatch.js.map +1 -1
- package/dist/audit/cli/hybridDispatch.d.ts +46 -0
- package/dist/audit/cli/hybridDispatch.d.ts.map +1 -0
- package/dist/audit/cli/hybridDispatch.js +77 -0
- package/dist/audit/cli/hybridDispatch.js.map +1 -0
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +119 -2
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/reviewRun.d.ts +19 -0
- package/dist/audit/cli/reviewRun.d.ts.map +1 -1
- package/dist/audit/cli/reviewRun.js +2 -2
- package/dist/audit/cli/reviewRun.js.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.d.ts +57 -4
- package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
- package/dist/audit/cli/rollingAuditDispatch.js +137 -10
- package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
- package/dist/audit/cli/scoreAuditCommand.d.ts +16 -0
- package/dist/audit/cli/scoreAuditCommand.d.ts.map +1 -0
- package/dist/audit/cli/scoreAuditCommand.js +82 -0
- package/dist/audit/cli/scoreAuditCommand.js.map +1 -0
- package/dist/audit/cli.d.ts.map +1 -1
- package/dist/audit/cli.js +5 -1
- package/dist/audit/cli.js.map +1 -1
- package/dist/audit/orchestrator/designReviewProjection.d.ts +9 -1
- package/dist/audit/orchestrator/designReviewProjection.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewProjection.js +19 -1
- package/dist/audit/orchestrator/designReviewProjection.js.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.d.ts +2 -0
- package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.js +11 -1
- package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +1 -1
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts +9 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.js +16 -3
- package/dist/audit/orchestrator/intakeExecutors.js.map +1 -1
- package/dist/audit/orchestrator/intentCheckpointExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/intentCheckpointExecutor.js +3 -0
- package/dist/audit/orchestrator/intentCheckpointExecutor.js.map +1 -1
- package/dist/audit/orchestrator/intentInterpreter.d.ts +21 -7
- package/dist/audit/orchestrator/intentInterpreter.d.ts.map +1 -1
- package/dist/audit/orchestrator/intentInterpreter.js +30 -11
- package/dist/audit/orchestrator/intentInterpreter.js.map +1 -1
- package/dist/audit/orchestrator/intentScopeDisposition.d.ts +49 -0
- package/dist/audit/orchestrator/intentScopeDisposition.d.ts.map +1 -0
- package/dist/audit/orchestrator/intentScopeDisposition.js +57 -0
- package/dist/audit/orchestrator/intentScopeDisposition.js.map +1 -0
- package/dist/audit/orchestrator/rollingDispatch.d.ts +9 -0
- package/dist/audit/orchestrator/rollingDispatch.d.ts.map +1 -1
- package/dist/audit/orchestrator/rollingDispatch.js +10 -0
- package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
- package/dist/audit/orchestrator/scope.d.ts +1 -0
- package/dist/audit/orchestrator/scope.d.ts.map +1 -1
- package/dist/audit/orchestrator/scope.js +2 -7
- package/dist/audit/orchestrator/scope.js.map +1 -1
- package/dist/audit/quota/index.d.ts +5 -0
- package/dist/audit/quota/index.d.ts.map +1 -1
- package/dist/audit/reporting/scoreAudit.d.ts +161 -0
- package/dist/audit/reporting/scoreAudit.d.ts.map +1 -0
- package/dist/audit/reporting/scoreAudit.js +224 -0
- package/dist/audit/reporting/scoreAudit.js.map +1 -0
- package/dist/audit/types/activeDispatch.d.ts +29 -1
- package/dist/audit/types/activeDispatch.d.ts.map +1 -1
- package/dist/audit/types/activeDispatch.js.map +1 -1
- package/dist/audit/types/analyzerCapability.d.ts +6 -6
- package/dist/remediate/contractPipeline/changeClassification.d.ts +146 -0
- package/dist/remediate/contractPipeline/changeClassification.d.ts.map +1 -0
- package/dist/remediate/contractPipeline/changeClassification.js +398 -0
- package/dist/remediate/contractPipeline/changeClassification.js.map +1 -0
- package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/derive.js +9 -0
- package/dist/remediate/contractPipeline/derive.js.map +1 -1
- package/dist/remediate/intent/intentOrdering.d.ts +51 -0
- package/dist/remediate/intent/intentOrdering.d.ts.map +1 -0
- package/dist/remediate/intent/intentOrdering.js +150 -0
- package/dist/remediate/intent/intentOrdering.js.map +1 -0
- package/dist/remediate/phases/plan.d.ts.map +1 -1
- package/dist/remediate/phases/plan.js +14 -1
- package/dist/remediate/phases/plan.js.map +1 -1
- package/dist/remediate/providers/index.d.ts +32 -0
- package/dist/remediate/providers/index.d.ts.map +1 -1
- package/dist/remediate/providers/index.js +28 -1
- package/dist/remediate/providers/index.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +15 -1
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +282 -14
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/dispatch.d.ts +75 -1
- package/dist/remediate/steps/dispatch.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch.js +159 -43
- package/dist/remediate/steps/dispatch.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +53 -2
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +255 -81
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/providerNodeDispatch.d.ts +8 -1
- package/dist/remediate/steps/providerNodeDispatch.d.ts.map +1 -1
- package/dist/remediate/steps/providerNodeDispatch.js +7 -2
- package/dist/remediate/steps/providerNodeDispatch.js.map +1 -1
- package/dist/remediate/steps/rollingSession.d.ts +55 -1
- package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
- package/dist/remediate/steps/rollingSession.js +132 -21
- package/dist/remediate/steps/rollingSession.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts +23 -8
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +43 -38
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/dispatch/coordinator.d.ts +170 -0
- package/dist/shared/dispatch/coordinator.d.ts.map +1 -0
- package/dist/shared/dispatch/coordinator.js +177 -0
- package/dist/shared/dispatch/coordinator.js.map +1 -0
- package/dist/shared/dispatch/hybridDispatch.d.ts +74 -0
- package/dist/shared/dispatch/hybridDispatch.d.ts.map +1 -0
- package/dist/shared/dispatch/hybridDispatch.js +54 -0
- package/dist/shared/dispatch/hybridDispatch.js.map +1 -0
- package/dist/shared/dispatch/settledPools.d.ts +21 -0
- package/dist/shared/dispatch/settledPools.d.ts.map +1 -0
- package/dist/shared/dispatch/settledPools.js +34 -0
- package/dist/shared/dispatch/settledPools.js.map +1 -0
- package/dist/shared/index.d.ts +15 -5
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +14 -2
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/intent/clauseInterpreter.d.ts +19 -0
- package/dist/shared/intent/clauseInterpreter.d.ts.map +1 -1
- package/dist/shared/intent/clauseInterpreter.js +19 -0
- package/dist/shared/intent/clauseInterpreter.js.map +1 -1
- package/dist/shared/providers/sharedProviderConfirmation.d.ts +134 -0
- package/dist/shared/providers/sharedProviderConfirmation.d.ts.map +1 -0
- package/dist/shared/providers/sharedProviderConfirmation.js +244 -0
- package/dist/shared/providers/sharedProviderConfirmation.js.map +1 -0
- package/dist/shared/quota/apiPool.d.ts +109 -0
- package/dist/shared/quota/apiPool.d.ts.map +1 -0
- package/dist/shared/quota/apiPool.js +183 -0
- package/dist/shared/quota/apiPool.js.map +1 -0
- package/dist/shared/quota/capacity.d.ts +29 -1
- package/dist/shared/quota/capacity.d.ts.map +1 -1
- package/dist/shared/quota/capacity.js +5 -0
- package/dist/shared/quota/capacity.js.map +1 -1
- package/dist/shared/quota/claimRegistry.d.ts +64 -0
- package/dist/shared/quota/claimRegistry.d.ts.map +1 -0
- package/dist/shared/quota/claimRegistry.js +157 -0
- package/dist/shared/quota/claimRegistry.js.map +1 -0
- package/dist/shared/quota/compositeQuotaSource.d.ts +10 -1
- package/dist/shared/quota/compositeQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/compositeQuotaSource.js +34 -6
- package/dist/shared/quota/compositeQuotaSource.js.map +1 -1
- package/dist/shared/quota/fileLock.d.ts.map +1 -1
- package/dist/shared/quota/fileLock.js +7 -1
- package/dist/shared/quota/fileLock.js.map +1 -1
- package/dist/shared/quota/httpQuotaSource.d.ts +9 -1
- package/dist/shared/quota/httpQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/httpQuotaSource.js +33 -8
- package/dist/shared/quota/httpQuotaSource.js.map +1 -1
- package/dist/shared/quota/learnedQuotaSource.d.ts +7 -1
- package/dist/shared/quota/learnedQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/learnedQuotaSource.js +18 -7
- package/dist/shared/quota/learnedQuotaSource.js.map +1 -1
- package/dist/shared/quota/quotaSource.d.ts +41 -0
- package/dist/shared/quota/quotaSource.d.ts.map +1 -1
- package/dist/shared/quota/quotaSource.js +19 -0
- package/dist/shared/quota/quotaSource.js.map +1 -1
- package/dist/shared/types/contractPipeline/obligations.d.ts +42 -0
- package/dist/shared/types/contractPipeline/obligations.d.ts.map +1 -1
- package/dist/shared/types/contractPipeline.d.ts +1 -1
- package/dist/shared/types/contractPipeline.d.ts.map +1 -1
- package/dist/shared/types/contractPipeline.js.map +1 -1
- package/dist/shared/types/intentCheckpoint.d.ts +14 -0
- package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
- package/dist/shared/types/intentCheckpoint.js +10 -0
- package/dist/shared/types/intentCheckpoint.js.map +1 -1
- package/dist/shared/types/sessionConfig.d.ts +60 -0
- package/dist/shared/types/sessionConfig.d.ts.map +1 -1
- package/dist/shared/types/sessionConfig.js +13 -0
- package/dist/shared/types/sessionConfig.js.map +1 -1
- package/package.json +3 -2
|
@@ -17,8 +17,10 @@
|
|
|
17
17
|
* repo root and writes only its result file. The merge step is result ingestion,
|
|
18
18
|
* not a git merge.
|
|
19
19
|
*/
|
|
20
|
-
import { type SessionConfig, type ProviderSlot, type RollingDispatchPacket, type RollingDispatchResult, type FreshSessionProvider, type HostModelRosterEntry } from "audit-tools/shared";
|
|
20
|
+
import { type SessionConfig, type CapacityPool, type ProviderSlot, type RollingDispatchPacket, type RollingDispatchResult, type FreshSessionProvider, type HostModelRosterEntry, type DispatchableSource } from "audit-tools/shared";
|
|
21
|
+
import type { AuditTask } from "../types.js";
|
|
21
22
|
import type { ActiveReviewRun } from "../supervisor/operatorHandoff.js";
|
|
23
|
+
import { type DispatchPausedState } from "../types/activeDispatch.js";
|
|
22
24
|
import { type DispatchPlanEntry } from "./dispatch.js";
|
|
23
25
|
import { type MergeAndIngestResult } from "./mergeAndIngestCommand.js";
|
|
24
26
|
/**
|
|
@@ -50,11 +52,20 @@ export type AuditResultIngestor = (params: {
|
|
|
50
52
|
}) => Promise<MergeAndIngestResult>;
|
|
51
53
|
/** Outcome of an in-process rolling audit dispatch pass. */
|
|
52
54
|
export interface DriveRollingAuditDispatchResult {
|
|
53
|
-
/**
|
|
54
|
-
|
|
55
|
+
/**
|
|
56
|
+
* - `complete` — every packet dispatched.
|
|
57
|
+
* - `paused` — the pool exhausted and the run is paused on a resumable
|
|
58
|
+
* `waiting_for_provider` state (DC-4): re-invoking re-discovers
|
|
59
|
+
* capacity and resumes, rather than stranding the packets. Pauses
|
|
60
|
+
* ONLY after the engine's in-pass spill + reactive re-route already
|
|
61
|
+
* failed (a full strand), so spill is always tried first.
|
|
62
|
+
* - `partial` — terminal: the pause limit was reached (livelock) and the
|
|
63
|
+
* stranded packets are yielded to synthesis on partial coverage.
|
|
64
|
+
*/
|
|
65
|
+
status: "complete" | "paused" | "partial";
|
|
55
66
|
/** Number of packets dispatched this pass (0 = nothing eligible). */
|
|
56
67
|
packet_count: number;
|
|
57
|
-
/** Packet ids stranded when status === "partial"
|
|
68
|
+
/** Packet ids stranded when status === "partial", or held while `paused`. */
|
|
58
69
|
stranded_ids: string[];
|
|
59
70
|
/**
|
|
60
71
|
* Result of the deterministic ingestion that folds the worker results in, or
|
|
@@ -63,7 +74,22 @@ export interface DriveRollingAuditDispatchResult {
|
|
|
63
74
|
* to synthesis on partial coverage without a spurious "all results missing" block).
|
|
64
75
|
*/
|
|
65
76
|
ingest: MergeAndIngestResult | null;
|
|
77
|
+
/**
|
|
78
|
+
* The resumable paused state recorded when `status === "paused"` (the live
|
|
79
|
+
* `waiting_for_provider` lifecycle + the accumulated settled-exclusion set), so
|
|
80
|
+
* the caller can render a resumable "waiting for provider" handoff. Absent for
|
|
81
|
+
* `complete` / `partial`.
|
|
82
|
+
*/
|
|
83
|
+
paused_state?: DispatchPausedState;
|
|
66
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Re-discover the provider ids currently available to the run. Injected by the
|
|
87
|
+
* caller (and stubbable in tests); the default — used in production wiring — is
|
|
88
|
+
* supplied by the orchestrator from the live provider roster. Returns the bare
|
|
89
|
+
* provider/pool ids so `filterNewProviders` can diff them against the persisted
|
|
90
|
+
* `SettledExclusionSet`.
|
|
91
|
+
*/
|
|
92
|
+
export type ProviderRediscovery = () => Promise<string[]> | string[];
|
|
67
93
|
/**
|
|
68
94
|
* Build the live, provider-backed per-packet dispatcher — the programmatic worker
|
|
69
95
|
* the rolling engine drives. It resolves the `FreshSessionProvider` the scheduler
|
|
@@ -81,6 +107,12 @@ export declare function makeAuditProviderPacketDispatcher(params: {
|
|
|
81
107
|
timeoutMs: number;
|
|
82
108
|
/** Injectable for tests so the engine runs without spawning a real worker. */
|
|
83
109
|
createProvider?: (name: string | undefined, sessionConfig: SessionConfig) => FreshSessionProvider;
|
|
110
|
+
/**
|
|
111
|
+
* Per-pool dispatchable source (A-8 generic sources), keyed by `slot.poolId`. When a
|
|
112
|
+
* packet's pool is source-backed, its review worker is built FROM that source's config
|
|
113
|
+
* (its own endpoint/model/parameters), not the global per-provider block.
|
|
114
|
+
*/
|
|
115
|
+
sourceByPoolId?: Map<string, DispatchableSource>;
|
|
84
116
|
}): AuditPacketDispatcher;
|
|
85
117
|
/**
|
|
86
118
|
* Drive the semantic-review phase through the in-process rolling engine. Prepares
|
|
@@ -115,5 +147,26 @@ export declare function driveRollingAuditDispatch(params: {
|
|
|
115
147
|
* a seam here rather than an inline call.
|
|
116
148
|
*/
|
|
117
149
|
ingest?: AuditResultIngestor;
|
|
150
|
+
/**
|
|
151
|
+
* Re-discover the provider ids currently available. Probed only when the run is
|
|
152
|
+
* already paused on a `waiting_for_provider` state, to decide resume vs. stay
|
|
153
|
+
* paused vs. terminal/livelock (DC-4). Defaults to the run's confirmed pool ids
|
|
154
|
+
* (the dispatch plan's pools), i.e. "the same pools that were just exhausted" —
|
|
155
|
+
* so with no external re-discovery wiring the run still advances toward livelock
|
|
156
|
+
* rather than spinning forever, while a caller that can re-probe a live roster
|
|
157
|
+
* (or a8's coordinator that adds a spilled-in pool) supplies real net-new ids.
|
|
158
|
+
*/
|
|
159
|
+
discoverProviders?: ProviderRediscovery;
|
|
160
|
+
/** Override the livelock pause limit (defaults to the shared `LIVELOCK_PAUSE_LIMIT`). */
|
|
161
|
+
livelockLimit?: number;
|
|
162
|
+
/**
|
|
163
|
+
* A-8 hybrid: review ONLY this task subset (the coordinator-assigned backend/NIM
|
|
164
|
+
* partition), packetized + dispatched against {@link poolsOverride}, WITHOUT
|
|
165
|
+
* touching the shared `pending-audit-tasks.json` the host-review path owns for its
|
|
166
|
+
* complementary subset.
|
|
167
|
+
*/
|
|
168
|
+
tasksOverride?: AuditTask[];
|
|
169
|
+
/** A-8 hybrid: size + dispatch against these backend (NIM) pool(s), not the host pool. */
|
|
170
|
+
poolsOverride?: CapacityPool[];
|
|
118
171
|
}): Promise<DriveRollingAuditDispatchResult>;
|
|
119
172
|
//# sourceMappingURL=rollingAuditDispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollingAuditDispatch.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/rollingAuditDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"rollingAuditDispatch.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/rollingAuditDispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* not a git merge.
|
|
19
19
|
*/
|
|
20
20
|
import { dirname, join } from "node:path";
|
|
21
|
-
import { readJsonFile, readOptionalJsonFile, writeJsonFile, } from "audit-tools/shared";
|
|
21
|
+
import { readJsonFile, readOptionalJsonFile, writeJsonFile, advancePausedState, withSourceConfig, sourceByPoolId, } from "audit-tools/shared";
|
|
22
22
|
import { ACTIVE_DISPATCH_FILENAME, } from "../types/activeDispatch.js";
|
|
23
23
|
import { runRollingDispatch } from "../orchestrator/rollingDispatch.js";
|
|
24
24
|
import { createFreshSessionProvider } from "../providers/index.js";
|
|
@@ -107,7 +107,10 @@ export function makeAuditProviderPacketDispatcher(params) {
|
|
|
107
107
|
return async (packet, slot) => {
|
|
108
108
|
const entry = packet.payload;
|
|
109
109
|
const resolveProvider = params.createProvider ?? createFreshSessionProvider;
|
|
110
|
-
|
|
110
|
+
// A-8 generic sources: build the per-packet worker FROM its pool's source config.
|
|
111
|
+
const source = params.sourceByPoolId?.get(slot?.poolId ?? "");
|
|
112
|
+
const cfg = withSourceConfig(params.sessionConfig, source);
|
|
113
|
+
const provider = resolveProvider(slot?.providerName || cfg.provider, cfg);
|
|
111
114
|
const resultPath = entry.result_path;
|
|
112
115
|
const dir = dirname(resultPath);
|
|
113
116
|
// Sidecar files share the packet's canonical FS-safe stem. Packet ids embed
|
|
@@ -206,6 +209,8 @@ export async function driveRollingAuditDispatch(params) {
|
|
|
206
209
|
hostOutputTokens: params.hostOutputTokens,
|
|
207
210
|
hostModelRoster: params.hostModelRoster,
|
|
208
211
|
hostModelId: params.hostModelId,
|
|
212
|
+
tasksOverride: params.tasksOverride,
|
|
213
|
+
poolsOverride: params.poolsOverride,
|
|
209
214
|
});
|
|
210
215
|
// Nothing eligible this pass (every task already answered / budget-capped):
|
|
211
216
|
// ingest whatever landed and let the loop re-derive state.
|
|
@@ -230,16 +235,27 @@ export async function driveRollingAuditDispatch(params) {
|
|
|
230
235
|
runId,
|
|
231
236
|
sessionConfig,
|
|
232
237
|
timeoutMs: params.timeoutMs,
|
|
238
|
+
// A packet on a source-backed pool launches FROM that source's config.
|
|
239
|
+
sourceByPoolId: sourceByPoolId(dispatch.pools),
|
|
233
240
|
});
|
|
234
241
|
const run = await runRollingDispatch(packets, dispatch.pools, sessionConfig, {}, dispatchPacket);
|
|
235
|
-
// Stranded packets (
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
//
|
|
242
|
+
// Stranded packets (the engine's in-pass spill + reactive re-route already failed
|
|
243
|
+
// — a FULL strand): rather than immediately stranding to a partial-completion
|
|
244
|
+
// terminal, enter (or advance) the resumable `waiting_for_provider` pause so a
|
|
245
|
+
// quota-exhausted run resumes when capacity returns instead of giving up (DC-4).
|
|
246
|
+
// The pause is promoted to a partial-completion terminal only once the livelock
|
|
247
|
+
// guard fires (capacity never returned within the pause limit), at which point the
|
|
248
|
+
// pipeline proceeds to synthesis on partial coverage. Because this branch is
|
|
249
|
+
// reached ONLY on a full strand, spill is always exhausted before any pause.
|
|
250
|
+
let pausedState;
|
|
239
251
|
if (run.status === "partial" && run.stranded_ids.length > 0) {
|
|
240
|
-
await
|
|
241
|
-
|
|
242
|
-
|
|
252
|
+
pausedState = await advanceRollingPause({
|
|
253
|
+
artifactsDir,
|
|
254
|
+
runId,
|
|
255
|
+
strandedIds: run.stranded_ids,
|
|
256
|
+
exhaustedPoolIds: run.exhausted_pool_ids,
|
|
257
|
+
discoverProviders: params.discoverProviders,
|
|
258
|
+
livelockLimit: params.livelockLimit,
|
|
243
259
|
});
|
|
244
260
|
}
|
|
245
261
|
// Ingest only when at least one packet produced a result. A full strand (every
|
|
@@ -268,13 +284,124 @@ export async function driveRollingAuditDispatch(params) {
|
|
|
268
284
|
`(every provider-accepted result was invalid): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
269
285
|
}
|
|
270
286
|
}
|
|
287
|
+
// A resumable pause is its own status so the caller renders a "waiting for
|
|
288
|
+
// provider" handoff rather than a terminal partial. The terminal (livelock)
|
|
289
|
+
// strand keeps `run.status` ("partial") — `advanceRollingPause` already stamped
|
|
290
|
+
// the partial-completion terminal that lets synthesis proceed on partial coverage.
|
|
271
291
|
return {
|
|
272
|
-
status: run.status,
|
|
292
|
+
status: pausedState ? "paused" : run.status,
|
|
273
293
|
packet_count: packets.length,
|
|
274
294
|
stranded_ids: run.stranded_ids,
|
|
275
295
|
ingest: ingestResult,
|
|
296
|
+
paused_state: pausedState,
|
|
276
297
|
};
|
|
277
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Advance the resumable `waiting_for_provider` pause for a full-strand pass (DC-4).
|
|
301
|
+
*
|
|
302
|
+
* On the FIRST strand there is no prior paused state, so the run enters
|
|
303
|
+
* `waiting_for_provider` (pause_count 0) carrying the freshly-exhausted pool ids as
|
|
304
|
+
* its `SettledExclusionSet`. On a SUBSEQUENT strand a prior paused state exists, so
|
|
305
|
+
* the persisted settled set is UNIONED with this pass's exhausted ids (CE-001 — the
|
|
306
|
+
* shared set is co-derived/accumulated, never shrunk), the available providers are
|
|
307
|
+
* re-discovered, and `advancePausedState` decides:
|
|
308
|
+
* - genuinely-new capacity (a provider not in the settled set) → `running` →
|
|
309
|
+
* pause cleared, the next pass re-dispatches the stranded packets;
|
|
310
|
+
* - still no new capacity, below the limit → bump `pause_count`, stay paused;
|
|
311
|
+
* - at/over the limit → `terminal/livelock` → record the partial-completion
|
|
312
|
+
* terminal so the pipeline proceeds to synthesis on partial coverage.
|
|
313
|
+
*
|
|
314
|
+
* Returns the live paused state when the run stays paused, or `undefined` when it
|
|
315
|
+
* resumed or went terminal (both clear the paused state on the artifact).
|
|
316
|
+
*/
|
|
317
|
+
async function advanceRollingPause(params) {
|
|
318
|
+
const { artifactsDir, runId, strandedIds, exhaustedPoolIds } = params;
|
|
319
|
+
const prior = await readActiveDispatch(artifactsDir, runId);
|
|
320
|
+
const priorPaused = prior?.paused_state;
|
|
321
|
+
// Accumulate the shared settled-exclusion set: prior settled ∪ this pass's
|
|
322
|
+
// exhausted pools. Never shrinks — a pool that has been spilled-then-exhausted
|
|
323
|
+
// stays settled so re-discovery cannot re-offer it as net-new (INV-S03 / CE-001).
|
|
324
|
+
const settled = new Set([
|
|
325
|
+
...(priorPaused?.settled_exclusions ?? []),
|
|
326
|
+
...exhaustedPoolIds,
|
|
327
|
+
]);
|
|
328
|
+
const settledArray = [...settled].sort();
|
|
329
|
+
// First strand: enter the paused state. No re-discovery yet — the pool was just
|
|
330
|
+
// exhausted this very pass, so probing now would only re-surface the same ids.
|
|
331
|
+
if (!priorPaused) {
|
|
332
|
+
const lifecycle = {
|
|
333
|
+
kind: "waiting_for_provider",
|
|
334
|
+
paused_at: new Date().toISOString(),
|
|
335
|
+
pause_count: 0,
|
|
336
|
+
stranded_node_ids: strandedIds,
|
|
337
|
+
};
|
|
338
|
+
const pausedState = {
|
|
339
|
+
lifecycle,
|
|
340
|
+
settled_exclusions: settledArray,
|
|
341
|
+
};
|
|
342
|
+
await persistPausedState(artifactsDir, runId, pausedState);
|
|
343
|
+
return pausedState;
|
|
344
|
+
}
|
|
345
|
+
// Already paused: re-discover and let advancePausedState transition.
|
|
346
|
+
const rediscovered = params.discoverProviders
|
|
347
|
+
? await params.discoverProviders()
|
|
348
|
+
: exhaustedPoolIds; // default: the same (already-settled) pools → no net-new.
|
|
349
|
+
const next = advancePausedState({
|
|
350
|
+
current: priorPaused.lifecycle,
|
|
351
|
+
rediscoveredProviders: rediscovered,
|
|
352
|
+
settledExclusions: settled,
|
|
353
|
+
livelockLimit: params.livelockLimit,
|
|
354
|
+
});
|
|
355
|
+
if (next.kind === "running") {
|
|
356
|
+
// Capacity returned: clear the pause so the next pass re-dispatches.
|
|
357
|
+
await clearPausedState(artifactsDir, runId);
|
|
358
|
+
return undefined;
|
|
359
|
+
}
|
|
360
|
+
if (next.kind === "terminal") {
|
|
361
|
+
// Livelock: clear the pause and record the partial-completion terminal so the
|
|
362
|
+
// pipeline proceeds to synthesis on partial coverage (the no-indefinite-stall
|
|
363
|
+
// guard, CE-003/CE-205). The terminal carries the stranded ids it gave up on.
|
|
364
|
+
await clearPausedState(artifactsDir, runId);
|
|
365
|
+
await recordPartialCompletionTerminal(artifactsDir, runId, {
|
|
366
|
+
reason: "livelock_guard",
|
|
367
|
+
stranded_ids: next.stranded_node_ids,
|
|
368
|
+
});
|
|
369
|
+
return undefined;
|
|
370
|
+
}
|
|
371
|
+
// Still waiting (pause_count bumped). Persist the advanced state + settled set.
|
|
372
|
+
const pausedState = {
|
|
373
|
+
lifecycle: next,
|
|
374
|
+
settled_exclusions: settledArray,
|
|
375
|
+
};
|
|
376
|
+
await persistPausedState(artifactsDir, runId, pausedState);
|
|
377
|
+
return pausedState;
|
|
378
|
+
}
|
|
379
|
+
/** Read the run's active-dispatch artifact, or null when absent / for another run. */
|
|
380
|
+
async function readActiveDispatch(artifactsDir, runId) {
|
|
381
|
+
const path = join(artifactsDir, ACTIVE_DISPATCH_FILENAME);
|
|
382
|
+
const existing = await readJsonFile(path).catch(() => null);
|
|
383
|
+
return existing && existing.run_id === runId ? existing : null;
|
|
384
|
+
}
|
|
385
|
+
/** Persist the resumable paused state onto the active-dispatch artifact. */
|
|
386
|
+
async function persistPausedState(artifactsDir, runId, pausedState) {
|
|
387
|
+
const existing = await readActiveDispatch(artifactsDir, runId);
|
|
388
|
+
if (!existing)
|
|
389
|
+
return;
|
|
390
|
+
await writeJsonFile(join(artifactsDir, ACTIVE_DISPATCH_FILENAME), {
|
|
391
|
+
...existing,
|
|
392
|
+
paused_state: pausedState,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
/** Clear the paused state (run resumed or went terminal). */
|
|
396
|
+
async function clearPausedState(artifactsDir, runId) {
|
|
397
|
+
const existing = await readActiveDispatch(artifactsDir, runId);
|
|
398
|
+
if (!existing || !existing.paused_state)
|
|
399
|
+
return;
|
|
400
|
+
const { paused_state: _dropped, ...rest } = existing;
|
|
401
|
+
await writeJsonFile(join(artifactsDir, ACTIVE_DISPATCH_FILENAME), {
|
|
402
|
+
...rest,
|
|
403
|
+
});
|
|
404
|
+
}
|
|
278
405
|
/**
|
|
279
406
|
* Stamp the rolling engine's partial-completion terminal onto the run's
|
|
280
407
|
* active-dispatch artifact. `prepareDispatchArtifacts` already wrote the artifact;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollingAuditDispatch.js","sourceRoot":"","sources":["../../../src/audit/cli/rollingAuditDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,aAAa,
|
|
1
|
+
{"version":3,"file":"rollingAuditDispatch.js","sourceRoot":"","sources":["../../../src/audit/cli/rollingAuditDispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `score-audit` — emit the deterministic finding-quality scorecard for a fresh
|
|
3
|
+
* audit against a corpus's human-applied labels (A-2).
|
|
4
|
+
*
|
|
5
|
+
* Resolution:
|
|
6
|
+
* --findings <path> audit-findings.json (default: <artifacts>/audit-findings.json)
|
|
7
|
+
* --labels <path> corpus/<run-id>.labels.json (REQUIRED)
|
|
8
|
+
* --baseline <path> a prior scorecard.json to gate against (optional)
|
|
9
|
+
* --out <path> where to write scorecard.json (default: <artifacts>/score-audit.json)
|
|
10
|
+
*
|
|
11
|
+
* The exit code is wired SOLELY to a hallucination-rate REGRESSION vs --baseline
|
|
12
|
+
* (track-don't-gate: precision/recall are printed but never gate). With no
|
|
13
|
+
* baseline the run only emits the scorecard and always exits 0.
|
|
14
|
+
*/
|
|
15
|
+
export declare function cmdScoreAudit(argv: string[]): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=scoreAuditCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoreAuditCommand.d.ts","sourceRoot":"","sources":["../../../src/audit/cli/scoreAuditCommand.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EjE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { readJsonFile, writeJsonFile, writeTextFile, } from "audit-tools/shared";
|
|
3
|
+
import { scoreAudit, hallucinationRegressed, renderScorecardMarkdown, } from "../reporting/scoreAudit.js";
|
|
4
|
+
import { getArtifactsDir, getFlag } from "./args.js";
|
|
5
|
+
/**
|
|
6
|
+
* `score-audit` — emit the deterministic finding-quality scorecard for a fresh
|
|
7
|
+
* audit against a corpus's human-applied labels (A-2).
|
|
8
|
+
*
|
|
9
|
+
* Resolution:
|
|
10
|
+
* --findings <path> audit-findings.json (default: <artifacts>/audit-findings.json)
|
|
11
|
+
* --labels <path> corpus/<run-id>.labels.json (REQUIRED)
|
|
12
|
+
* --baseline <path> a prior scorecard.json to gate against (optional)
|
|
13
|
+
* --out <path> where to write scorecard.json (default: <artifacts>/score-audit.json)
|
|
14
|
+
*
|
|
15
|
+
* The exit code is wired SOLELY to a hallucination-rate REGRESSION vs --baseline
|
|
16
|
+
* (track-don't-gate: precision/recall are printed but never gate). With no
|
|
17
|
+
* baseline the run only emits the scorecard and always exits 0.
|
|
18
|
+
*/
|
|
19
|
+
export async function cmdScoreAudit(argv) {
|
|
20
|
+
const artifactsDir = getArtifactsDir(argv);
|
|
21
|
+
const findingsPath = getFlag(argv, "--findings") ?? join(artifactsDir, "audit-findings.json");
|
|
22
|
+
const labelsPath = getFlag(argv, "--labels");
|
|
23
|
+
const baselinePath = getFlag(argv, "--baseline");
|
|
24
|
+
const outPath = getFlag(argv, "--out") ?? join(artifactsDir, "score-audit.json");
|
|
25
|
+
if (!labelsPath) {
|
|
26
|
+
console.error("score-audit requires --labels <corpus/<run-id>.labels.json> (human-applied finding labels)");
|
|
27
|
+
process.exitCode = 1;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
let findingsDoc;
|
|
31
|
+
try {
|
|
32
|
+
findingsDoc = await readJsonFile(findingsPath);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error(`Could not read findings at ${findingsPath}: ${error.message}`);
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const findings = Array.isArray(findingsDoc.findings) ? findingsDoc.findings : [];
|
|
40
|
+
let labels;
|
|
41
|
+
try {
|
|
42
|
+
labels = await readJsonFile(labelsPath);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error(`Could not read labels at ${labelsPath}: ${error.message}`);
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
let baseline = null;
|
|
50
|
+
if (baselinePath) {
|
|
51
|
+
try {
|
|
52
|
+
baseline = await readJsonFile(baselinePath);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error(`Could not read baseline scorecard at ${baselinePath}: ${error.message}`);
|
|
56
|
+
process.exitCode = 1;
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const scorecard = scoreAudit(findings, labels);
|
|
61
|
+
await writeJsonFile(outPath, scorecard);
|
|
62
|
+
const summary = renderScorecardMarkdown(scorecard);
|
|
63
|
+
const summaryPath = outPath.replace(/\.json$/, ".md");
|
|
64
|
+
await writeTextFile(summaryPath, summary);
|
|
65
|
+
process.stdout.write(summary);
|
|
66
|
+
console.error(`Scorecard written to ${outPath} (summary: ${summaryPath})`);
|
|
67
|
+
// The ONLY gate: a hallucination-rate regression against the baseline.
|
|
68
|
+
if (hallucinationRegressed(scorecard, baseline)) {
|
|
69
|
+
console.error(`✗ hallucination-rate regression: ${fmt(scorecard.hallucination_rate)} > ` +
|
|
70
|
+
`baseline ${fmt(baseline?.hallucination_rate ?? 0)}`);
|
|
71
|
+
process.exitCode = 1;
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (baseline) {
|
|
75
|
+
console.error(`✓ hallucination rate ${fmt(scorecard.hallucination_rate)} within baseline ` +
|
|
76
|
+
`${fmt(baseline.hallucination_rate ?? 0)}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function fmt(value) {
|
|
80
|
+
return value === null ? "n/a" : `${(value * 100).toFixed(1)}%`;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=scoreAuditCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoreAuditCommand.js","sourceRoot":"","sources":["../../../src/audit/cli/scoreAuditCommand.ts"],"names":[],"mappings":"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"}
|
package/dist/audit/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,OAAO,EACP,OAAO,EACP,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,OAAO,EACP,OAAO,EACP,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAoBtD,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;CAWxB,CAAC;AAuFF,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1D"}
|
package/dist/audit/cli.js
CHANGED
|
@@ -26,6 +26,7 @@ import { cmdResynthesize } from "./cli/resynthesizeCommand.js";
|
|
|
26
26
|
import { cmdCleanup } from "./cli/cleanupCommand.js";
|
|
27
27
|
import { cmdQuota } from "./cli/quotaCommand.js";
|
|
28
28
|
import { cmdDispatchStatus } from "./cli/dispatchStatusCommand.js";
|
|
29
|
+
import { cmdScoreAudit } from "./cli/scoreAuditCommand.js";
|
|
29
30
|
export { runSample };
|
|
30
31
|
export const cliTestUtils = {
|
|
31
32
|
defaults: DIRECT_CLI_DEFAULTS,
|
|
@@ -112,9 +113,12 @@ async function main(argv) {
|
|
|
112
113
|
case "dispatch-status":
|
|
113
114
|
await cmdDispatchStatus(argv);
|
|
114
115
|
return;
|
|
116
|
+
case "score-audit":
|
|
117
|
+
await cmdScoreAudit(argv);
|
|
118
|
+
return;
|
|
115
119
|
default:
|
|
116
120
|
console.error(`Unknown command: ${command}`);
|
|
117
|
-
console.error("Available commands: sample-run, advance-audit, next-step, worker-run, import-external-analyzer, intake, plan, ingest-results, explain-task, update-runtime-validation, validate, validate-results, requeue, synthesize, resynthesize, cleanup, prepare-dispatch, merge-and-ingest, submit-packet, validate-result, quota, status, dispatch-status");
|
|
121
|
+
console.error("Available commands: sample-run, advance-audit, next-step, worker-run, import-external-analyzer, intake, plan, ingest-results, explain-task, update-runtime-validation, validate, validate-results, requeue, synthesize, resynthesize, cleanup, prepare-dispatch, merge-and-ingest, submit-packet, validate-result, quota, status, dispatch-status, score-audit");
|
|
118
122
|
process.exitCode = 1;
|
|
119
123
|
}
|
|
120
124
|
}
|
package/dist/audit/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,EACnB,OAAO,EACP,OAAO,EACP,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/audit/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* artifact set. The generic diff + hashing machinery is single-sourced in
|
|
27
27
|
* `audit-tools/shared/reReview`.
|
|
28
28
|
*/
|
|
29
|
-
import { type CriticalFlowManifest, type GraphBundle, type RiskRegister, type SurfaceManifest } from "audit-tools/shared";
|
|
29
|
+
import { type CriticalFlowManifest, type GraphBundle, type IntentCheckpoint, type RiskRegister, type SurfaceManifest } from "audit-tools/shared";
|
|
30
30
|
import type { RepoManifest, UnitManifest } from "../types.js";
|
|
31
31
|
import type { DesignAssessment } from "../types/designAssessment.js";
|
|
32
32
|
/**
|
|
@@ -44,6 +44,14 @@ export interface DesignReviewBundle {
|
|
|
44
44
|
critical_flows?: CriticalFlowManifest;
|
|
45
45
|
risk_register?: RiskRegister;
|
|
46
46
|
design_assessment?: DesignAssessment;
|
|
47
|
+
/**
|
|
48
|
+
* The confirmed intent checkpoint, read ONLY to derive each unit's structured
|
|
49
|
+
* in-scope/excluded disposition (see `projectUnitManifest`). The cosmetic
|
|
50
|
+
* bracket-tag reason text is not projected — only the disposition KIND, which
|
|
51
|
+
* the prompt renders as `[in scope]` vs `[excluded: …]` and which the review
|
|
52
|
+
* actually reasons about (which units to skip).
|
|
53
|
+
*/
|
|
54
|
+
intent_checkpoint?: IntentCheckpoint;
|
|
47
55
|
}
|
|
48
56
|
/**
|
|
49
57
|
* The structural artifacts the design-review passes read. A design-review
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"designReviewProjection.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/designReviewProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"designReviewProjection.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/designReviewProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGrE;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,yIAQvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiLtE;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,kBAAkB,GACzB,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAMpC"}
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* `audit-tools/shared/reReview`.
|
|
28
28
|
*/
|
|
29
29
|
import { stableStringifyProjection, } from "audit-tools/shared";
|
|
30
|
+
import { deriveUnitScopeDisposition } from "./intentScopeDisposition.js";
|
|
30
31
|
/**
|
|
31
32
|
* The structural artifacts the design-review passes read. A design-review
|
|
32
33
|
* snapshot records the projection of each of these; a change to any of them
|
|
@@ -69,11 +70,27 @@ function projectRepoManifest(bundle) {
|
|
|
69
70
|
files: sortByProjection(files),
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Project units to their boundaries: id, name, kind, files, lenses, flows, and
|
|
75
|
+
* the structured in-scope/excluded `scope` disposition.
|
|
76
|
+
*
|
|
77
|
+
* The `scope` field keeps dc4's per-unit determination INSIDE the projection so a
|
|
78
|
+
* scope change re-stales: when an `excluded_scope` / `disposition_overrides` edit
|
|
79
|
+
* flips a unit between in-scope and excluded, the prompt's `[in scope]` vs
|
|
80
|
+
* `[excluded: …]` tag flips with it, and the review must re-run (a unit it was
|
|
81
|
+
* told to skip is now reviewable, or vice versa). Only the disposition KIND is
|
|
82
|
+
* captured, NOT the reason text: the bracket-tag reason (`[excluded: <reason>]`)
|
|
83
|
+
* is cosmetic prose — re-wording "third-party code" to "third party" does not
|
|
84
|
+
* change which units the review covers, so it must not re-stale. The reason is
|
|
85
|
+
* read by no other downstream consumer (only this one prompt-render path puts it
|
|
86
|
+
* in front of the model, and it carries no machine-checkable meaning), so
|
|
87
|
+
* excluding it is sound under CE-008.
|
|
88
|
+
*/
|
|
73
89
|
function projectUnitManifest(bundle) {
|
|
74
90
|
const units = bundle.unit_manifest?.units;
|
|
75
91
|
if (!units)
|
|
76
92
|
return null;
|
|
93
|
+
const checkpoint = bundle.intent_checkpoint;
|
|
77
94
|
const projected = units.map((unit) => ({
|
|
78
95
|
unit_id: unit.unit_id,
|
|
79
96
|
name: unit.name,
|
|
@@ -81,6 +98,7 @@ function projectUnitManifest(bundle) {
|
|
|
81
98
|
files: sortStrings(unit.files),
|
|
82
99
|
required_lenses: sortStrings(unit.required_lenses),
|
|
83
100
|
critical_flows: sortStrings(unit.critical_flows),
|
|
101
|
+
scope: deriveUnitScopeDisposition(unit.files, checkpoint).kind,
|
|
84
102
|
}));
|
|
85
103
|
return sortByProjection(projected);
|
|
86
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"designReviewProjection.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/designReviewProjection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EACL,yBAAyB,
|
|
1
|
+
{"version":3,"file":"designReviewProjection.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/designReviewProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ArtifactBundle } from "../io/artifacts.js";
|
|
2
|
+
import { deriveUnitScopeDisposition, type UnitScopeDisposition } from "./intentScopeDisposition.js";
|
|
3
|
+
export { deriveUnitScopeDisposition, type UnitScopeDisposition };
|
|
2
4
|
export interface DesignReviewOptions {
|
|
3
5
|
max_units?: number;
|
|
4
6
|
conceptual_depth?: "shallow" | "deep";
|