audit-tools 0.30.10 → 0.30.11

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 (44) hide show
  1. package/dist/remediate/dispatch/ownershipRegistry.d.ts +39 -0
  2. package/dist/remediate/dispatch/ownershipRegistry.d.ts.map +1 -1
  3. package/dist/remediate/dispatch/ownershipRegistry.js +71 -0
  4. package/dist/remediate/dispatch/ownershipRegistry.js.map +1 -1
  5. package/dist/remediate/dispatch/ownershipScheduler.d.ts +20 -0
  6. package/dist/remediate/dispatch/ownershipScheduler.d.ts.map +1 -1
  7. package/dist/remediate/dispatch/ownershipScheduler.js +24 -0
  8. package/dist/remediate/dispatch/ownershipScheduler.js.map +1 -1
  9. package/dist/remediate/phases/plan.d.ts +1 -1
  10. package/dist/remediate/phases/plan.d.ts.map +1 -1
  11. package/dist/remediate/phases/plan.js +56 -17
  12. package/dist/remediate/phases/plan.js.map +1 -1
  13. package/dist/remediate/state/types.d.ts +34 -12
  14. package/dist/remediate/state/types.d.ts.map +1 -1
  15. package/dist/remediate/state/types.js +14 -3
  16. package/dist/remediate/state/types.js.map +1 -1
  17. package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
  18. package/dist/remediate/steps/contractPipeline.js +9 -0
  19. package/dist/remediate/steps/contractPipeline.js.map +1 -1
  20. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  21. package/dist/remediate/steps/nextStep.js +5 -0
  22. package/dist/remediate/steps/nextStep.js.map +1 -1
  23. package/dist/remediate/validation/remediationState.d.ts.map +1 -1
  24. package/dist/remediate/validation/remediationState.js +15 -1
  25. package/dist/remediate/validation/remediationState.js.map +1 -1
  26. package/dist/shared/index.d.ts +3 -3
  27. package/dist/shared/index.d.ts.map +1 -1
  28. package/dist/shared/index.js +2 -2
  29. package/dist/shared/index.js.map +1 -1
  30. package/dist/shared/providers/codexProvider.d.ts +1 -1
  31. package/dist/shared/providers/codexProvider.js +1 -1
  32. package/dist/shared/quota/limits.d.ts +11 -3
  33. package/dist/shared/quota/limits.d.ts.map +1 -1
  34. package/dist/shared/quota/limits.js +12 -18
  35. package/dist/shared/quota/limits.js.map +1 -1
  36. package/dist/shared/quota/scheduler.d.ts +45 -2
  37. package/dist/shared/quota/scheduler.d.ts.map +1 -1
  38. package/dist/shared/quota/scheduler.js +57 -8
  39. package/dist/shared/quota/scheduler.js.map +1 -1
  40. package/dist/shared/repair/brokeredDispatch.d.ts +1 -0
  41. package/dist/shared/repair/brokeredDispatch.d.ts.map +1 -1
  42. package/dist/shared/repair/brokeredDispatch.js +6 -3
  43. package/dist/shared/repair/brokeredDispatch.js.map +1 -1
  44. package/package.json +1 -1
@@ -32,6 +32,23 @@ export declare function canonicalizeFilePath(path: string, opts?: {
32
32
  root?: string;
33
33
  resolveSymlinks?: boolean;
34
34
  }): string;
35
+ /**
36
+ * The disposition a node reaches when the rolling engine stops driving it for the
37
+ * current pass. INV-SOO-10 (releasing-disposition discipline) keys the claim
38
+ * lifecycle off this: a RELEASING disposition frees the node's in-flight claim
39
+ * (`releaseInFlight`); a CLAIM-RETAINING disposition keeps it held so no foreign
40
+ * same-file node can be admitted on the still-contested key.
41
+ */
42
+ export type NodeClaimDisposition = "merged" | "blocked_final" | "abandoned" | "failed_no_retry" | "no_op_satisfied" | "blocked_pending_triage" | "triage_retry_handoff" | "redispatch";
43
+ /**
44
+ * Single source of truth for INV-SOO-10: whether `disposition` RELEASES the
45
+ * node's in-flight file claim. A redispatch (CE-007) and a triage-retry hand-off
46
+ * (CE-006) are explicitly claim-RETAINING — the key stays held by the node across
47
+ * the re-emit / recomputation window so the re-run can never run boundary-ungated
48
+ * alongside a foreign same-file writer. The enumeration is exhaustive (a `never`
49
+ * fallthrough keeps it in lockstep with `NodeClaimDisposition`).
50
+ */
51
+ export declare function isReleasingDisposition(disposition: NodeClaimDisposition): boolean;
35
52
  export interface OwnershipRegistryJson {
36
53
  /** nodeId → set of paths from that node's original contract scope */
37
54
  contractScopes: Record<string, string[]>;
@@ -167,6 +184,28 @@ export declare class OwnershipRegistry {
167
184
  * `fromNodeId === toNodeId`.
168
185
  */
169
186
  handoffInFlight(fromNodeId: string, toNodeId: string): void;
187
+ /**
188
+ * Redispatch of an in-flight node (CE-007 / INV-SOO-10): an M4
189
+ * RepairOutcome.redispatch re-emits the SAME node without releasing its claim.
190
+ * This is a claim-RETAINING disposition — `nodeId` keeps every in-flight +
191
+ * amendment claim it holds across the re-emit, so the re-run cannot be admitted
192
+ * boundary-ungated alongside a foreign same-file writer. A no-op on the registry
193
+ * by construction (the claim is simply not released); this named affordance
194
+ * exists so callers route a redispatch through it (and `isReleasingDisposition`)
195
+ * rather than reasoning about claim retention by hand. Verifies the node still
196
+ * holds a live claim so a redispatch of an already-released node surfaces as a
197
+ * precondition violation instead of silently running ungated.
198
+ */
199
+ redispatchInFlight(nodeId: string): void;
200
+ /**
201
+ * Apply a node's terminal-for-this-pass disposition to its claim lifecycle in
202
+ * one call (INV-SOO-10). A releasing disposition frees the claim; a
203
+ * claim-retaining one leaves it held. Single entry-point so the release-vs-retain
204
+ * decision is never re-derived by callers (auditor-agnostic robustness). For a
205
+ * `triage_retry_handoff` pass the successor id via `toNodeId` so the claim is
206
+ * atomically transferred (CE-006) rather than released-then-reclaimed.
207
+ */
208
+ applyDisposition(nodeId: string, disposition: NodeClaimDisposition, toNodeId?: string): void;
170
209
  /** Serialize to a plain JSON-safe object. */
171
210
  serialize(): OwnershipRegistryJson;
172
211
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ownershipRegistry.d.ts","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ownershipRegistry.d.ts","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipRegistry.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,32 @@ export function canonicalizeFilePath(path, opts = {}) {
55
55
  const slashed = abs.split(sep).join("/");
56
56
  return CASE_INSENSITIVE_FS ? slashed.toLowerCase() : slashed;
57
57
  }
58
+ /**
59
+ * Single source of truth for INV-SOO-10: whether `disposition` RELEASES the
60
+ * node's in-flight file claim. A redispatch (CE-007) and a triage-retry hand-off
61
+ * (CE-006) are explicitly claim-RETAINING — the key stays held by the node across
62
+ * the re-emit / recomputation window so the re-run can never run boundary-ungated
63
+ * alongside a foreign same-file writer. The enumeration is exhaustive (a `never`
64
+ * fallthrough keeps it in lockstep with `NodeClaimDisposition`).
65
+ */
66
+ export function isReleasingDisposition(disposition) {
67
+ switch (disposition) {
68
+ case "merged":
69
+ case "blocked_final":
70
+ case "abandoned":
71
+ case "failed_no_retry":
72
+ case "no_op_satisfied":
73
+ return true;
74
+ case "blocked_pending_triage":
75
+ case "triage_retry_handoff":
76
+ case "redispatch":
77
+ return false;
78
+ default: {
79
+ const _exhaustive = disposition;
80
+ return _exhaustive;
81
+ }
82
+ }
83
+ }
58
84
  /**
59
85
  * OwnershipRegistry tracks write-scope ownership per DAG node.
60
86
  *
@@ -340,6 +366,51 @@ export class OwnershipRegistry {
340
366
  if (changed)
341
367
  this._persist();
342
368
  }
369
+ /**
370
+ * Redispatch of an in-flight node (CE-007 / INV-SOO-10): an M4
371
+ * RepairOutcome.redispatch re-emits the SAME node without releasing its claim.
372
+ * This is a claim-RETAINING disposition — `nodeId` keeps every in-flight +
373
+ * amendment claim it holds across the re-emit, so the re-run cannot be admitted
374
+ * boundary-ungated alongside a foreign same-file writer. A no-op on the registry
375
+ * by construction (the claim is simply not released); this named affordance
376
+ * exists so callers route a redispatch through it (and `isReleasingDisposition`)
377
+ * rather than reasoning about claim retention by hand. Verifies the node still
378
+ * holds a live claim so a redispatch of an already-released node surfaces as a
379
+ * precondition violation instead of silently running ungated.
380
+ */
381
+ redispatchInFlight(nodeId) {
382
+ for (const owner of this.inFlightClaims.values()) {
383
+ if (owner === nodeId)
384
+ return; // still holds at least one claim — retained.
385
+ }
386
+ for (const owner of this.amendmentClaims.values()) {
387
+ if (owner === nodeId)
388
+ return;
389
+ }
390
+ throw new Error(`OwnershipRegistry.redispatchInFlight: ${nodeId} holds no live claim; ` +
391
+ `a redispatch must retain an existing claim (claim-retaining disposition, CE-007). ` +
392
+ `Re-claim via claimInFlight before redispatching.`);
393
+ }
394
+ /**
395
+ * Apply a node's terminal-for-this-pass disposition to its claim lifecycle in
396
+ * one call (INV-SOO-10). A releasing disposition frees the claim; a
397
+ * claim-retaining one leaves it held. Single entry-point so the release-vs-retain
398
+ * decision is never re-derived by callers (auditor-agnostic robustness). For a
399
+ * `triage_retry_handoff` pass the successor id via `toNodeId` so the claim is
400
+ * atomically transferred (CE-006) rather than released-then-reclaimed.
401
+ */
402
+ applyDisposition(nodeId, disposition, toNodeId) {
403
+ if (disposition === "triage_retry_handoff") {
404
+ this.handoffInFlight(nodeId, toNodeId ?? nodeId);
405
+ return;
406
+ }
407
+ if (isReleasingDisposition(disposition)) {
408
+ this.releaseInFlight(nodeId);
409
+ this.releaseAmendments(nodeId);
410
+ return;
411
+ }
412
+ // blocked_pending_triage / redispatch: claim-retaining — leave it held.
413
+ }
343
414
  /** Serialize to a plain JSON-safe object. */
344
415
  serialize() {
345
416
  const contractScopes = {};
@@ -1 +1 @@
1
- {"version":3,"file":"ownershipRegistry.js","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ownershipRegistry.js","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipRegistry.ts"],"names":[],"mappings":"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"}
@@ -45,4 +45,24 @@ export declare function canonicalScopeKeys(node: OwnershipSchedulerNode, root?:
45
45
  * (INV-SOO-01 / CE-008).
46
46
  */
47
47
  export declare function ownershipSubWaves(level: OwnershipSchedulerNode[], root?: string): OwnershipSchedulerNode[][];
48
+ /**
49
+ * CE-003 (deterministic partial admission): when the broker caps a single
50
+ * sub-wave so `total_slots < subWave.length`, the admitted subset is the
51
+ * block_id-ordered PREFIX of the sub-wave — the first `total_slots` nodes in the
52
+ * SAME INV-SOO-08 ascending-block_id order — NOT whichever nodes happen to win
53
+ * a ClaimRegistry race. The deferred suffix is returned so the caller re-offers
54
+ * it (in the same order) on the next wave. Because both the admitted prefix and
55
+ * the deferred suffix are block_id-ordered slices of a deterministic sub-wave,
56
+ * realized dispatch — which work lands this wave vs. is deferred — is
57
+ * reproducible across two runs over identical state, never a claim-race lottery.
58
+ *
59
+ * Pure: re-sorts the sub-wave by the canonical INV-SOO-08 tie-break before
60
+ * slicing, so the prefix is independent of the order the sub-wave was passed in.
61
+ * A non-positive `totalSlots` admits nothing; a `totalSlots >= subWave.length`
62
+ * admits the whole sub-wave with an empty deferred suffix.
63
+ */
64
+ export declare function admitSubWaveUnderCapacity(subWave: OwnershipSchedulerNode[], totalSlots: number): {
65
+ admitted: OwnershipSchedulerNode[];
66
+ deferred: OwnershipSchedulerNode[];
67
+ };
48
68
  //# sourceMappingURL=ownershipScheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ownershipScheduler.d.ts","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,EAC5B,IAAI,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,CAAC,CAIb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,EAAE,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,sBAAsB,EAAE,EAAE,CAwD5B"}
1
+ {"version":3,"file":"ownershipScheduler.d.ts","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,sBAAsB,EAC5B,IAAI,CAAC,EAAE,MAAM,GACZ,GAAG,CAAC,MAAM,CAAC,CAIb;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,EAAE,EAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,sBAAsB,EAAE,EAAE,CAwD5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,sBAAsB,EAAE,EACjC,UAAU,EAAE,MAAM,GACjB;IAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IAAC,QAAQ,EAAE,sBAAsB,EAAE,CAAA;CAAE,CAO5E"}
@@ -97,4 +97,28 @@ export function ownershipSubWaves(level, root) {
97
97
  }
98
98
  return subWaves;
99
99
  }
100
+ /**
101
+ * CE-003 (deterministic partial admission): when the broker caps a single
102
+ * sub-wave so `total_slots < subWave.length`, the admitted subset is the
103
+ * block_id-ordered PREFIX of the sub-wave — the first `total_slots` nodes in the
104
+ * SAME INV-SOO-08 ascending-block_id order — NOT whichever nodes happen to win
105
+ * a ClaimRegistry race. The deferred suffix is returned so the caller re-offers
106
+ * it (in the same order) on the next wave. Because both the admitted prefix and
107
+ * the deferred suffix are block_id-ordered slices of a deterministic sub-wave,
108
+ * realized dispatch — which work lands this wave vs. is deferred — is
109
+ * reproducible across two runs over identical state, never a claim-race lottery.
110
+ *
111
+ * Pure: re-sorts the sub-wave by the canonical INV-SOO-08 tie-break before
112
+ * slicing, so the prefix is independent of the order the sub-wave was passed in.
113
+ * A non-positive `totalSlots` admits nothing; a `totalSlots >= subWave.length`
114
+ * admits the whole sub-wave with an empty deferred suffix.
115
+ */
116
+ export function admitSubWaveUnderCapacity(subWave, totalSlots) {
117
+ const ordered = [...subWave].sort((a, b) => a.block_id.localeCompare(b.block_id));
118
+ const slots = Math.max(0, Math.floor(totalSlots));
119
+ return {
120
+ admitted: ordered.slice(0, slots),
121
+ deferred: ordered.slice(slots),
122
+ };
123
+ }
100
124
  //# sourceMappingURL=ownershipScheduler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ownershipScheduler.js","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ownershipScheduler.js","sourceRoot":"","sources":["../../../src/remediate/dispatch/ownershipScheduler.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ export declare function deriveBlocksFromTestGraph(findings: Finding[], testFiles
42
42
  useful: boolean;
43
43
  };
44
44
  export { ESTIMATED_PROMPT_OVERHEAD_TOKENS as ESTIMATED_BLOCK_BASE_TOKENS, ESTIMATED_ITEM_OVERHEAD_TOKENS as ESTIMATED_FINDING_OVERHEAD_TOKENS, } from "audit-tools/shared";
45
- export declare function estimateGroupTokens(findingIds: string[], findings: Finding[], fileByteCounts: Map<string, number>): number;
45
+ export declare function estimateGroupTokens(findingIds: string[], findings: Finding[], fileByteCounts: Map<string, number>, root?: string): number;
46
46
  export declare function splitBlocksByContextBudget(blocks: RemediationBlock[], findings: Finding[], root: string, contextBudget: number): RemediationBlock[];
47
47
  /**
48
48
  * Account for every finding the plan received: each is marked `planned` (kept and
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/remediate/phases/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/remediate/phases/plan.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { snapshotAffectedFileHashes } from "../utils/fileIntegrity.js";
6
6
  import { groundExtractedFindings, } from "./grounding.js";
7
7
  import { readOptionalJsonFile, writeJsonFile, readJsonFile, formatValidationIssues, discoverProjectCommands, resolveContextBudget, estimateTokensFromBytes, ESTIMATED_PROMPT_OVERHEAD_TOKENS, ESTIMATED_ITEM_OVERHEAD_TOKENS, } from "audit-tools/shared";
8
8
  import { createFreshSessionProvider } from "../providers/index.js";
9
+ import { canonicalizeFilePath } from "../dispatch/ownershipRegistry.js";
9
10
  import { deduplicateCrossLensFindings, fixupBlocksAfterDedup, } from "../dedup/crossLensDedup.js";
10
11
  import { filterFindingsByCheckpoint } from "../intent/checkpointFilter.js";
11
12
  import { applyIntentOrdering } from "../intent/intentOrdering.js";
@@ -64,6 +65,10 @@ export function parseAuditFindingsReport(report) {
64
65
  items: [...(block.finding_ids ?? [])],
65
66
  dependencies: [...(block.depends_on ?? [])],
66
67
  parallel_safe: (block.depends_on?.length ?? 0) === 0,
68
+ // touched_files is REQUIRED on the block contract; the meaningful
69
+ // surface is derived downstream (mergeBlocksSharingFiles / M1-DECOMPOSE)
70
+ // from the block's findings — seed it empty here.
71
+ touched_files: [],
67
72
  }))
68
73
  : [];
69
74
  const themes = Array.isArray(report.themes) ? report.themes : [];
@@ -95,7 +100,7 @@ function createBlockId(counter) {
95
100
  function assignFindingToBlock(finding, blockId, blocks, fileToBlock) {
96
101
  let block = blocks.find((candidate) => candidate.block_id === blockId);
97
102
  if (!block) {
98
- block = { block_id: blockId, items: [], parallel_safe: true };
103
+ block = { block_id: blockId, items: [], parallel_safe: true, touched_files: [] };
99
104
  blocks.push(block);
100
105
  }
101
106
  block.items.push(finding.id);
@@ -293,9 +298,16 @@ function groupFindingsByFileOverlap(findingIds, findings, repoRoot = ".") {
293
298
  // by many findings would otherwise collapse them all into one indivisible block.
294
299
  if (isDirectoryPath(af.path, repoRoot))
295
300
  continue;
296
- const list = fileToIds.get(af.path) ?? [];
301
+ // CE-008: key the overlap map by the M1-BOUNDARY canonical physical-file
302
+ // identity, not the raw spelling, so `src/A.ts`, `./src/A.ts`, `src\A.ts`
303
+ // (and case variants on a case-insensitive FS) collide on ONE key and the
304
+ // findings that touch that file are unioned into one block. Comparing raw
305
+ // strings would leave them in separate blocks that then write the same
306
+ // physical file in parallel (the clobber CE-008 closes).
307
+ const key = canonicalizeFilePath(af.path, { root: repoRoot });
308
+ const list = fileToIds.get(key) ?? [];
297
309
  list.push(id);
298
- fileToIds.set(af.path, list);
310
+ fileToIds.set(key, list);
299
311
  }
300
312
  }
301
313
  for (const ids of fileToIds.values()) {
@@ -315,21 +327,28 @@ function groupFindingsByFileOverlap(findingIds, findings, repoRoot = ".") {
315
327
  }
316
328
  return [...groups.values()];
317
329
  }
318
- export function estimateGroupTokens(findingIds, findings, fileByteCounts) {
330
+ export function estimateGroupTokens(findingIds, findings, fileByteCounts,
331
+ // CE-008: when `root` is supplied, file keys are resolved to the M1-BOUNDARY
332
+ // canonical physical-file identity so a file cited under two spellings is
333
+ // de-duplicated to ONE entry and resolves to the byte-count map keyed the same
334
+ // way. When omitted, raw spellings are used as keys (callers that pre-key the
335
+ // byte-count map by raw path keep working unchanged).
336
+ root) {
337
+ const fileKey = (p) => root === undefined ? p : canonicalizeFilePath(p, { root });
319
338
  const uniqueFiles = new Set();
320
339
  const findingMap = new Map(findings.map((f) => [f.id, f]));
321
340
  for (const id of findingIds) {
322
341
  for (const af of findingMap.get(id)?.affected_files ?? [])
323
- uniqueFiles.add(af.path);
342
+ uniqueFiles.add(fileKey(af.path));
324
343
  }
325
344
  const totalBytes = [...uniqueFiles].reduce((sum, p) => sum + (fileByteCounts.get(p) ?? 0), 0);
326
345
  return (ESTIMATED_PROMPT_OVERHEAD_TOKENS +
327
346
  estimateTokensFromBytes(totalBytes) +
328
347
  findingIds.length * ESTIMATED_ITEM_OVERHEAD_TOKENS);
329
348
  }
330
- function splitOversizedOverlapGroup(group, findings, fileByteCounts, contextBudget) {
349
+ function splitOversizedOverlapGroup(group, findings, fileByteCounts, contextBudget, root) {
331
350
  if (group.length <= 1 ||
332
- estimateGroupTokens(group, findings, fileByteCounts) <= contextBudget) {
351
+ estimateGroupTokens(group, findings, fileByteCounts, root) <= contextBudget) {
333
352
  return [group];
334
353
  }
335
354
  const chunks = [];
@@ -337,7 +356,7 @@ function splitOversizedOverlapGroup(group, findings, fileByteCounts, contextBudg
337
356
  for (const findingId of group) {
338
357
  const candidate = [...current, findingId];
339
358
  if (current.length > 0 &&
340
- estimateGroupTokens(candidate, findings, fileByteCounts) > contextBudget) {
359
+ estimateGroupTokens(candidate, findings, fileByteCounts, root) > contextBudget) {
341
360
  chunks.push(current);
342
361
  current = [findingId];
343
362
  }
@@ -350,17 +369,23 @@ function splitOversizedOverlapGroup(group, findings, fileByteCounts, contextBudg
350
369
  return chunks;
351
370
  }
352
371
  export function splitBlocksByContextBudget(blocks, findings, root, contextBudget) {
353
- const allFiles = new Set();
372
+ // CE-008: index byte counts by the M1-BOUNDARY canonical physical-file identity
373
+ // so the same file cited under two spellings is sized ONCE (not double-counted)
374
+ // and `estimateGroupTokens` resolves every spelling to the same entry.
375
+ const allFiles = new Map(); // canonical key -> a raw spelling to stat
354
376
  const findingMap = new Map(findings.map((f) => [f.id, f]));
355
377
  for (const block of blocks) {
356
378
  for (const id of block.items) {
357
- for (const af of findingMap.get(id)?.affected_files ?? [])
358
- allFiles.add(af.path);
379
+ for (const af of findingMap.get(id)?.affected_files ?? []) {
380
+ const key = canonicalizeFilePath(af.path, { root });
381
+ if (!allFiles.has(key))
382
+ allFiles.set(key, af.path);
383
+ }
359
384
  }
360
385
  }
361
386
  const fileByteCounts = new Map();
362
- for (const filePath of allFiles) {
363
- fileByteCounts.set(filePath, fileSizeBytes(filePath, root));
387
+ for (const [key, rawPath] of allFiles) {
388
+ fileByteCounts.set(key, fileSizeBytes(rawPath, root));
364
389
  }
365
390
  const result = [];
366
391
  // Maps an original block_id to the sub-block IDs it was expanded into.
@@ -372,9 +397,9 @@ export function splitBlocksByContextBudget(blocks, findings, root, contextBudget
372
397
  let currentItems = [];
373
398
  let currentTokens = 0;
374
399
  for (const overlapGroup of fileGroups) {
375
- const groups = splitOversizedOverlapGroup(overlapGroup, findings, fileByteCounts, contextBudget);
400
+ const groups = splitOversizedOverlapGroup(overlapGroup, findings, fileByteCounts, contextBudget, root);
376
401
  for (const group of groups) {
377
- const groupTokens = estimateGroupTokens(group, findings, fileByteCounts);
402
+ const groupTokens = estimateGroupTokens(group, findings, fileByteCounts, root);
378
403
  if (currentItems.length > 0 && currentTokens + groupTokens > contextBudget) {
379
404
  subBlocks.push(currentItems);
380
405
  currentItems = group;
@@ -400,6 +425,9 @@ export function splitBlocksByContextBudget(blocks, findings, root, contextBudget
400
425
  items: subBlocks[i],
401
426
  parallel_safe: block.parallel_safe,
402
427
  dependencies: block.dependencies,
428
+ // Sub-blocks inherit the parent's declared surface; the per-sub-block
429
+ // narrowing is a downstream (M1-DECOMPOSE) concern.
430
+ touched_files: [...(block.touched_files ?? [])],
403
431
  });
404
432
  }
405
433
  }
@@ -438,6 +466,8 @@ function deriveFallbackBlocks(findings, options, deps) {
438
466
  block_id: createBlockId(index + 1),
439
467
  items: [finding.id],
440
468
  parallel_safe: true,
469
+ // One finding per block — declare its affected files as the block surface.
470
+ touched_files: finding.affected_files.map((af) => af.path),
441
471
  })),
442
472
  blockStrategy: "file_overlap",
443
473
  };
@@ -547,12 +577,17 @@ export function mergeBlocksSharingFiles(blocks, findings, root = ".") {
547
577
  return blocks;
548
578
  const findingMap = new Map(findings.map((f) => [f.id, f]));
549
579
  const byId = new Map(blocks.map((b) => [b.block_id, b]));
580
+ // CE-008: a block's file set is keyed by the M1-BOUNDARY canonical physical-file
581
+ // identity, so two blocks that cite the same file under different spellings
582
+ // (rel/abs, `./`-prefixed, mixed separators, case on a case-insensitive FS) are
583
+ // detected as sharing it and merged — never left to clobber it in parallel.
550
584
  const fileSet = (b) => {
551
585
  const files = new Set();
552
586
  for (const id of b.items) {
553
587
  for (const af of findingMap.get(id)?.affected_files ?? []) {
554
- if (!isDirectoryPath(af.path, root))
555
- files.add(af.path);
588
+ if (!isDirectoryPath(af.path, root)) {
589
+ files.add(canonicalizeFilePath(af.path, { root }));
590
+ }
556
591
  }
557
592
  }
558
593
  return files;
@@ -632,10 +667,14 @@ export function mergeBlocksSharingFiles(blocks, findings, root = ".") {
632
667
  // its original parallel_safe rather than recomputing (and possibly flipping)
633
668
  // it from deps. Only genuinely merged groups derive parallel_safe afresh.
634
669
  const parallel_safe = idxs.length === 1 ? groupBlocks[0].parallel_safe : deps.size === 0;
670
+ const touched_files = [
671
+ ...new Set(groupBlocks.flatMap((b) => b.touched_files ?? [])),
672
+ ];
635
673
  return {
636
674
  block_id: mergedId,
637
675
  items,
638
676
  parallel_safe,
677
+ touched_files,
639
678
  ...(deps.size > 0 ? { dependencies: [...deps] } : {}),
640
679
  };
641
680
  });