audit-tools 0.30.6 → 0.30.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/remediate/dispatch/amendmentClaim.d.ts +7 -0
- package/dist/remediate/dispatch/amendmentClaim.d.ts.map +1 -1
- package/dist/remediate/dispatch/amendmentClaim.js +7 -0
- package/dist/remediate/dispatch/amendmentClaim.js.map +1 -1
- package/dist/remediate/dispatch/ownershipRegistry.d.ts +88 -2
- package/dist/remediate/dispatch/ownershipRegistry.d.ts.map +1 -1
- package/dist/remediate/dispatch/ownershipRegistry.js +224 -11
- package/dist/remediate/dispatch/ownershipRegistry.js.map +1 -1
- package/dist/remediate/dispatch/ownershipScheduler.d.ts +48 -0
- package/dist/remediate/dispatch/ownershipScheduler.d.ts.map +1 -0
- package/dist/remediate/dispatch/ownershipScheduler.js +100 -0
- package/dist/remediate/dispatch/ownershipScheduler.js.map +1 -0
- package/dist/remediate/steps/nextStep.d.ts +17 -2
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +44 -22
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/shared/repair/brokeredDispatch.d.ts +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ownershipScheduler.js","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipScheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,8 +85,14 @@ export { isTerminalStatus, isVerifiedCompleteStatus };
|
|
|
85
85
|
* prerequisite is skipped/blocked, not merely pending) is NOT placed in any
|
|
86
86
|
* level — it is dead-ended by `handlePlanning`.
|
|
87
87
|
*
|
|
88
|
-
* Pure and deterministic:
|
|
89
|
-
*
|
|
88
|
+
* Pure and deterministic: level MEMBERSHIP is fixed by the dependency predicate
|
|
89
|
+
* (INV-RS-01) and is independent of node order; the interposed-rebuild boundaries
|
|
90
|
+
* are therefore stable across runs without an in-level numeric sort. In-level
|
|
91
|
+
* admission ORDER is no longer decided here — it is owned by the file-ownership
|
|
92
|
+
* scheduler (`ownershipSubWaves`, INV-SOO-04/08), which applies its own explicit
|
|
93
|
+
* block_id tie-break AFTER the disjointness filter. The numeric
|
|
94
|
+
* `block_id.localeCompare` admission ordering that used to live here was removed
|
|
95
|
+
* atomically with that change (INV-SOO-04).
|
|
90
96
|
*/
|
|
91
97
|
export declare function rollingDependencyLevels(state: RemediationState): RemediationBlock[][];
|
|
92
98
|
/** A single node's dispatch handler for the in-process rolling engine. */
|
|
@@ -109,6 +115,15 @@ export interface DriveRollingDispatchOptions {
|
|
|
109
115
|
estimateTokens?: (block: RemediationBlock) => number;
|
|
110
116
|
/** Quota state dir for `recordWaveOutcome` (defaults to leaving it unset). */
|
|
111
117
|
quotaStateDir?: string;
|
|
118
|
+
/**
|
|
119
|
+
* A block's declared write-scope, for file-ownership-disjoint admission
|
|
120
|
+
* (INV-SOO). Defaults to `block.touched_files` (the block's authoritative
|
|
121
|
+
* declared write set). An empty/unresolved scope is gated conservatively
|
|
122
|
+
* (admitted only solo) by the ownership scheduler.
|
|
123
|
+
*/
|
|
124
|
+
scopeForBlock?: (block: RemediationBlock) => string[];
|
|
125
|
+
/** Repo root for canonical path identity (INV-SOO-09). Defaults to cwd. */
|
|
126
|
+
root?: string;
|
|
112
127
|
}
|
|
113
128
|
export interface DriveRollingDispatchResult {
|
|
114
129
|
/** Per-level dispatch results, in level order. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextStep.d.ts","sourceRoot":"","sources":["../../../src/remediate/steps/nextStep.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAGV,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAmV,KAAK,sBAAsB,EAA8C,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,YAAY,EAA8B,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAqB,KAAK,sBAAsB,EAAE,KAAK,cAAc,EAAwE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOvwB,OAAO,EASL,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"nextStep.d.ts","sourceRoot":"","sources":["../../../src/remediate/steps/nextStep.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { runClosePhase } from "../phases/close.js";
|
|
|
10
10
|
import { validateRemediationPlan } from "../validation/remediationState.js";
|
|
11
11
|
import { mergeImplementResults, prepareImplementDispatch, readExtractedPlanIfPresent, buildConfirmedPools, executeNodeInWorktree, blockScopesFromPlan, declaredPathsFromPlan, targetedCommandsForBlock, } from "./dispatch.js";
|
|
12
12
|
import { makeProviderNodeDispatcher } from "./providerNodeDispatch.js";
|
|
13
|
+
import { ownershipSubWaves } from "../dispatch/ownershipScheduler.js";
|
|
13
14
|
import { prepareHostRollingDispatch, nodeClaimRegistry, nodeSettledPoolsPath } from "./rollingSession.js";
|
|
14
15
|
import { writeCurrentStep } from "./stepWriter.js";
|
|
15
16
|
import { dependencyVerifiedComplete } from "./stepUtils.js";
|
|
@@ -245,8 +246,14 @@ function blockedByUnsatisfiedDependency(state) {
|
|
|
245
246
|
* prerequisite is skipped/blocked, not merely pending) is NOT placed in any
|
|
246
247
|
* level — it is dead-ended by `handlePlanning`.
|
|
247
248
|
*
|
|
248
|
-
* Pure and deterministic:
|
|
249
|
-
*
|
|
249
|
+
* Pure and deterministic: level MEMBERSHIP is fixed by the dependency predicate
|
|
250
|
+
* (INV-RS-01) and is independent of node order; the interposed-rebuild boundaries
|
|
251
|
+
* are therefore stable across runs without an in-level numeric sort. In-level
|
|
252
|
+
* admission ORDER is no longer decided here — it is owned by the file-ownership
|
|
253
|
+
* scheduler (`ownershipSubWaves`, INV-SOO-04/08), which applies its own explicit
|
|
254
|
+
* block_id tie-break AFTER the disjointness filter. The numeric
|
|
255
|
+
* `block_id.localeCompare` admission ordering that used to live here was removed
|
|
256
|
+
* atomically with that change (INV-SOO-04).
|
|
250
257
|
*/
|
|
251
258
|
export function rollingDependencyLevels(state) {
|
|
252
259
|
const plan = state.plan;
|
|
@@ -254,9 +261,7 @@ export function rollingDependencyLevels(state) {
|
|
|
254
261
|
if (!plan || !items)
|
|
255
262
|
return [];
|
|
256
263
|
const blockById = new Map(plan.blocks.map((b) => [b.block_id, b]));
|
|
257
|
-
const pendingBlocks = plan.blocks
|
|
258
|
-
.filter((b) => b.items.some((id) => items[id]?.status === "pending"))
|
|
259
|
-
.sort((a, b) => a.block_id.localeCompare(b.block_id));
|
|
264
|
+
const pendingBlocks = plan.blocks.filter((b) => b.items.some((id) => items[id]?.status === "pending"));
|
|
260
265
|
// A dependency edge is "completable" only when the dep node is itself pending
|
|
261
266
|
// (will be satisfied by some level) or already verified-complete. A skipped /
|
|
262
267
|
// blocked dependency makes the dependent permanently ineligible — such nodes
|
|
@@ -340,23 +345,34 @@ export async function driveRollingDispatch(levels, options) {
|
|
|
340
345
|
}
|
|
341
346
|
}
|
|
342
347
|
const blockByPacketId = new Map(level.map((b) => [b.block_id, b]));
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
348
|
+
const scopeForBlock = options.scopeForBlock ?? ((b) => b.touched_files ?? []);
|
|
349
|
+
// File-ownership-disjoint admission (INV-SOO): split the level into ordered
|
|
350
|
+
// sub-waves, each a maximal file-disjoint subset (deterministic block_id
|
|
351
|
+
// tie-break AFTER the disjointness filter, INV-SOO-08). Same-file nodes land
|
|
352
|
+
// in successive sub-waves (serialize, INV-SOO-01/02) and a freed file becomes
|
|
353
|
+
// schedulable for the next sub-wave; different-file nodes share a sub-wave and
|
|
354
|
+
// parallelize up to the quota cap the dispatcher enforces (INV-SOO-03/05).
|
|
355
|
+
const subWaves = ownershipSubWaves(level.map((b) => ({ block_id: b.block_id, write_paths: scopeForBlock(b) })), options.root);
|
|
356
|
+
const levelResults = [];
|
|
357
|
+
for (const wave of subWaves) {
|
|
358
|
+
const packets = wave.map((node) => ({
|
|
359
|
+
id: node.block_id,
|
|
360
|
+
payload: { block_id: node.block_id },
|
|
361
|
+
estimatedTokens: estimateTokens(blockByPacketId.get(node.block_id)),
|
|
362
|
+
complexity: 0.5,
|
|
363
|
+
}));
|
|
364
|
+
const dispatcher = createRollingDispatcher({
|
|
365
|
+
confirmedPools: options.confirmedPools,
|
|
366
|
+
sessionConfig: options.sessionConfig,
|
|
367
|
+
dispatchPacket: async (packet, slot) => {
|
|
368
|
+
const block = blockByPacketId.get(packet.payload.block_id);
|
|
369
|
+
return options.dispatchNode(block, slot);
|
|
370
|
+
},
|
|
371
|
+
});
|
|
372
|
+
dispatcher.enqueue(packets);
|
|
373
|
+
levelResults.push(...(await dispatcher.run()));
|
|
374
|
+
}
|
|
375
|
+
out.levels.push({ blockIds: level.map((b) => b.block_id), results: levelResults });
|
|
360
376
|
}
|
|
361
377
|
return out;
|
|
362
378
|
}
|
|
@@ -543,12 +559,18 @@ export async function driveRollingImplementDispatch(options) {
|
|
|
543
559
|
}
|
|
544
560
|
return result;
|
|
545
561
|
};
|
|
562
|
+
// Declared write-scope per block, from the dispatch plan — the same authority
|
|
563
|
+
// the merge-time write-scope gate reads — for file-ownership-disjoint admission
|
|
564
|
+
// (INV-SOO). A block with no plan scope falls back to its touched_files.
|
|
565
|
+
const writePathsByBlock = new Map(allBlockScopes.map((s) => [s.block_id, s.write_paths]));
|
|
546
566
|
await driveRollingDispatch(levels, {
|
|
547
567
|
confirmedPools,
|
|
548
568
|
sessionConfig: options.sessionConfig ?? {},
|
|
549
569
|
dispatchNode: dispatchNodeWithWorktree,
|
|
550
570
|
rebuildSharedBetweenLevels: options.rebuildSharedBetweenLevels,
|
|
551
571
|
quotaStateDir: artifactsDir,
|
|
572
|
+
root,
|
|
573
|
+
scopeForBlock: (block) => writePathsByBlock.get(block.block_id) ?? block.touched_files ?? [],
|
|
552
574
|
});
|
|
553
575
|
// Deterministic merge: same path the wave flow uses (tolerant remap, write-scope
|
|
554
576
|
// gate against each verified branch, lost-update detection). Worktrees are
|