audit-tools 0.32.20 → 0.32.22

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 (195) hide show
  1. package/dist/audit/clarification/blastRadius.d.ts +23 -0
  2. package/dist/audit/clarification/blastRadius.d.ts.map +1 -0
  3. package/dist/audit/clarification/blastRadius.js +65 -0
  4. package/dist/audit/clarification/blastRadius.js.map +1 -0
  5. package/dist/audit/clarification/dials.d.ts +28 -0
  6. package/dist/audit/clarification/dials.d.ts.map +1 -0
  7. package/dist/audit/clarification/dials.js +37 -0
  8. package/dist/audit/clarification/dials.js.map +1 -0
  9. package/dist/audit/clarification/partition.d.ts +25 -0
  10. package/dist/audit/clarification/partition.d.ts.map +1 -0
  11. package/dist/audit/clarification/partition.js +77 -0
  12. package/dist/audit/clarification/partition.js.map +1 -0
  13. package/dist/audit/clarification/riskGate.d.ts +24 -0
  14. package/dist/audit/clarification/riskGate.d.ts.map +1 -0
  15. package/dist/audit/clarification/riskGate.js +38 -0
  16. package/dist/audit/clarification/riskGate.js.map +1 -0
  17. package/dist/audit/clarification/voiQueue.d.ts +17 -0
  18. package/dist/audit/clarification/voiQueue.d.ts.map +1 -0
  19. package/dist/audit/clarification/voiQueue.js +37 -0
  20. package/dist/audit/clarification/voiQueue.js.map +1 -0
  21. package/dist/audit/cli/auditStep.d.ts +2 -0
  22. package/dist/audit/cli/auditStep.d.ts.map +1 -1
  23. package/dist/audit/cli/auditStep.js +9 -1
  24. package/dist/audit/cli/auditStep.js.map +1 -1
  25. package/dist/audit/cli/charterClarificationPrompt.d.ts +19 -0
  26. package/dist/audit/cli/charterClarificationPrompt.d.ts.map +1 -0
  27. package/dist/audit/cli/charterClarificationPrompt.js +60 -0
  28. package/dist/audit/cli/charterClarificationPrompt.js.map +1 -0
  29. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  30. package/dist/audit/cli/nextStepCommand.js +74 -0
  31. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  32. package/dist/audit/cli/nextStepHelpers.d.ts +62 -0
  33. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  34. package/dist/audit/cli/nextStepHelpers.js +129 -0
  35. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  36. package/dist/audit/cli/steps.d.ts +4 -4
  37. package/dist/audit/cli/steps.d.ts.map +1 -1
  38. package/dist/audit/cli/steps.js +2 -0
  39. package/dist/audit/cli/steps.js.map +1 -1
  40. package/dist/audit/io/artifacts.d.ts +6 -0
  41. package/dist/audit/io/artifacts.d.ts.map +1 -1
  42. package/dist/audit/io/artifacts.js +2 -0
  43. package/dist/audit/io/artifacts.js.map +1 -1
  44. package/dist/audit/orchestrator/advance.d.ts +23 -0
  45. package/dist/audit/orchestrator/advance.d.ts.map +1 -1
  46. package/dist/audit/orchestrator/advance.js +122 -4
  47. package/dist/audit/orchestrator/advance.js.map +1 -1
  48. package/dist/audit/orchestrator/advanceTypes.d.ts +22 -1
  49. package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
  50. package/dist/audit/orchestrator/charterClarificationExecutor.d.ts +28 -0
  51. package/dist/audit/orchestrator/charterClarificationExecutor.d.ts.map +1 -0
  52. package/dist/audit/orchestrator/charterClarificationExecutor.js +130 -0
  53. package/dist/audit/orchestrator/charterClarificationExecutor.js.map +1 -0
  54. package/dist/audit/orchestrator/dependencyMap.d.ts +2 -0
  55. package/dist/audit/orchestrator/dependencyMap.d.ts.map +1 -1
  56. package/dist/audit/orchestrator/dependencyMap.js +24 -0
  57. package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
  58. package/dist/audit/orchestrator/designReviewPrompt.d.ts +17 -0
  59. package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
  60. package/dist/audit/orchestrator/designReviewPrompt.js +50 -0
  61. package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
  62. package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
  63. package/dist/audit/orchestrator/executorRunners.js +4 -0
  64. package/dist/audit/orchestrator/executorRunners.js.map +1 -1
  65. package/dist/audit/orchestrator/executors.d.ts.map +1 -1
  66. package/dist/audit/orchestrator/executors.js +20 -0
  67. package/dist/audit/orchestrator/executors.js.map +1 -1
  68. package/dist/audit/orchestrator/nextStep.d.ts +11 -1
  69. package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
  70. package/dist/audit/orchestrator/nextStep.js +6 -2
  71. package/dist/audit/orchestrator/nextStep.js.map +1 -1
  72. package/dist/audit/orchestrator/staleness.d.ts +27 -1
  73. package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
  74. package/dist/audit/orchestrator/staleness.js +33 -16
  75. package/dist/audit/orchestrator/staleness.js.map +1 -1
  76. package/dist/audit/orchestrator/state.d.ts +12 -1
  77. package/dist/audit/orchestrator/state.d.ts.map +1 -1
  78. package/dist/audit/orchestrator/state.js +41 -2
  79. package/dist/audit/orchestrator/state.js.map +1 -1
  80. package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
  81. package/dist/audit/orchestrator/synthesisExecutors.js +1 -0
  82. package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
  83. package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts +25 -0
  84. package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts.map +1 -0
  85. package/dist/audit/orchestrator/systemicChallengeExecutor.js +107 -0
  86. package/dist/audit/orchestrator/systemicChallengeExecutor.js.map +1 -0
  87. package/dist/audit/reporting/mergeFindings.d.ts +2 -1
  88. package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
  89. package/dist/audit/reporting/mergeFindings.js +6 -1
  90. package/dist/audit/reporting/mergeFindings.js.map +1 -1
  91. package/dist/audit/reporting/synthesis.d.ts +2 -0
  92. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  93. package/dist/audit/reporting/synthesis.js +1 -1
  94. package/dist/audit/reporting/synthesis.js.map +1 -1
  95. package/dist/audit/systemic/aggregateMetricsDigest.d.ts +11 -0
  96. package/dist/audit/systemic/aggregateMetricsDigest.d.ts.map +1 -0
  97. package/dist/audit/systemic/aggregateMetricsDigest.js +84 -0
  98. package/dist/audit/systemic/aggregateMetricsDigest.js.map +1 -0
  99. package/dist/audit/systemic/metricsDigestTypes.d.ts +35 -0
  100. package/dist/audit/systemic/metricsDigestTypes.d.ts.map +1 -0
  101. package/dist/audit/systemic/metricsDigestTypes.js +10 -0
  102. package/dist/audit/systemic/metricsDigestTypes.js.map +1 -0
  103. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts +16 -0
  104. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -0
  105. package/dist/audit/systemic/secondOrderAdversaryPrompt.js +85 -0
  106. package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -0
  107. package/dist/audit/systemic/systemicChallengeLoop.d.ts +48 -0
  108. package/dist/audit/systemic/systemicChallengeLoop.d.ts.map +1 -0
  109. package/dist/audit/systemic/systemicChallengeLoop.js +107 -0
  110. package/dist/audit/systemic/systemicChallengeLoop.js.map +1 -0
  111. package/dist/audit/types/charterClarification.d.ts +52 -0
  112. package/dist/audit/types/charterClarification.d.ts.map +1 -0
  113. package/dist/audit/types/charterClarification.js +2 -0
  114. package/dist/audit/types/charterClarification.js.map +1 -0
  115. package/dist/audit/types/systemicChallenge.d.ts +69 -0
  116. package/dist/audit/types/systemicChallenge.d.ts.map +1 -0
  117. package/dist/audit/types/systemicChallenge.js +2 -0
  118. package/dist/audit/types/systemicChallenge.js.map +1 -0
  119. package/dist/remediate/steps/dispatch/acceptNode.d.ts +178 -0
  120. package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -0
  121. package/dist/remediate/steps/dispatch/acceptNode.js +351 -0
  122. package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -0
  123. package/dist/remediate/steps/dispatch/common.d.ts +123 -0
  124. package/dist/remediate/steps/dispatch/common.d.ts.map +1 -0
  125. package/dist/remediate/steps/dispatch/common.js +236 -0
  126. package/dist/remediate/steps/dispatch/common.js.map +1 -0
  127. package/dist/remediate/steps/dispatch/dagNodeFields.d.ts +37 -0
  128. package/dist/remediate/steps/dispatch/dagNodeFields.d.ts.map +1 -0
  129. package/dist/remediate/steps/dispatch/dagNodeFields.js +19 -0
  130. package/dist/remediate/steps/dispatch/dagNodeFields.js.map +1 -0
  131. package/dist/remediate/steps/dispatch/implementPrompt.d.ts +70 -0
  132. package/dist/remediate/steps/dispatch/implementPrompt.d.ts.map +1 -0
  133. package/dist/remediate/steps/dispatch/implementPrompt.js +577 -0
  134. package/dist/remediate/steps/dispatch/implementPrompt.js.map +1 -0
  135. package/dist/remediate/steps/dispatch/marshal.d.ts +32 -0
  136. package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -0
  137. package/dist/remediate/steps/dispatch/marshal.js +935 -0
  138. package/dist/remediate/steps/dispatch/marshal.js.map +1 -0
  139. package/dist/remediate/steps/dispatch/verifyCommands.d.ts +97 -0
  140. package/dist/remediate/steps/dispatch/verifyCommands.d.ts.map +1 -0
  141. package/dist/remediate/steps/dispatch/verifyCommands.js +204 -0
  142. package/dist/remediate/steps/dispatch/verifyCommands.js.map +1 -0
  143. package/dist/remediate/steps/dispatch/waveScheduling.d.ts +90 -0
  144. package/dist/remediate/steps/dispatch/waveScheduling.d.ts.map +1 -0
  145. package/dist/remediate/steps/dispatch/waveScheduling.js +352 -0
  146. package/dist/remediate/steps/dispatch/waveScheduling.js.map +1 -0
  147. package/dist/remediate/steps/dispatch/worktreeLifecycle.d.ts +189 -0
  148. package/dist/remediate/steps/dispatch/worktreeLifecycle.d.ts.map +1 -0
  149. package/dist/remediate/steps/dispatch/worktreeLifecycle.js +643 -0
  150. package/dist/remediate/steps/dispatch/worktreeLifecycle.js.map +1 -0
  151. package/dist/remediate/steps/dispatch/writeScope.d.ts +151 -0
  152. package/dist/remediate/steps/dispatch/writeScope.d.ts.map +1 -0
  153. package/dist/remediate/steps/dispatch/writeScope.js +376 -0
  154. package/dist/remediate/steps/dispatch/writeScope.js.map +1 -0
  155. package/dist/remediate/steps/dispatch.d.ts +16 -871
  156. package/dist/remediate/steps/dispatch.d.ts.map +1 -1
  157. package/dist/remediate/steps/dispatch.js +18 -3623
  158. package/dist/remediate/steps/dispatch.js.map +1 -1
  159. package/dist/shared/decompose/charterClarification.d.ts +80 -0
  160. package/dist/shared/decompose/charterClarification.d.ts.map +1 -0
  161. package/dist/shared/decompose/charterClarification.js +105 -0
  162. package/dist/shared/decompose/charterClarification.js.map +1 -0
  163. package/dist/shared/decompose/systemicChallenge.d.ts +326 -0
  164. package/dist/shared/decompose/systemicChallenge.d.ts.map +1 -0
  165. package/dist/shared/decompose/systemicChallenge.js +30 -0
  166. package/dist/shared/decompose/systemicChallenge.js.map +1 -0
  167. package/dist/shared/index.d.ts +10 -5
  168. package/dist/shared/index.d.ts.map +1 -1
  169. package/dist/shared/index.js +6 -4
  170. package/dist/shared/index.js.map +1 -1
  171. package/dist/shared/opencodePermissions.d.ts +73 -0
  172. package/dist/shared/opencodePermissions.d.ts.map +1 -1
  173. package/dist/shared/opencodePermissions.js +172 -0
  174. package/dist/shared/opencodePermissions.js.map +1 -1
  175. package/dist/shared/tooling/exec.d.ts +10 -1
  176. package/dist/shared/tooling/exec.d.ts.map +1 -1
  177. package/dist/shared/tooling/exec.js +13 -1
  178. package/dist/shared/tooling/exec.js.map +1 -1
  179. package/dist/shared/types/charter.d.ts +89 -0
  180. package/dist/shared/types/charter.d.ts.map +1 -1
  181. package/dist/shared/types/charter.js +68 -0
  182. package/dist/shared/types/charter.js.map +1 -1
  183. package/dist/shared/types/intentCheckpoint.d.ts +15 -0
  184. package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
  185. package/dist/shared/types/intentCheckpoint.js +11 -0
  186. package/dist/shared/types/intentCheckpoint.js.map +1 -1
  187. package/dist/shared/validation/charterGate.d.ts +20 -1
  188. package/dist/shared/validation/charterGate.d.ts.map +1 -1
  189. package/dist/shared/validation/charterGate.js +23 -0
  190. package/dist/shared/validation/charterGate.js.map +1 -1
  191. package/opencode.json +36 -20
  192. package/package.json +1 -1
  193. package/scripts/postinstall.mjs +2 -1
  194. package/wrapper/audit-code-wrapper-opencode.mjs +38 -12
  195. package/wrapper/remediate-code-wrapper-opencode.mjs +38 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktreeLifecycle.js","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/worktreeLifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import type { RemediationState } from "../../state/store.js";
2
+ import type { RemediationBlock } from "../../state/types.js";
3
+ import type { ImplementWorkerResult, RemediationDispatchPlan } from "../types.js";
4
+ import { type GitEditedFiles, type GitBranchHunks } from "./common.js";
5
+ /** The decision a write-scope gate makes given the resolved edit set. */
6
+ export interface WriteScopeDecision {
7
+ blocked: boolean;
8
+ reason?: string;
9
+ }
10
+ /**
11
+ * Pure write-scope gate decision (OBL-DS-06). Given the block's declared write
12
+ * paths and the resolved git edit set:
13
+ * - `not_a_repo` → no ground truth (no worktree workflow) → not blocked.
14
+ * - `probe_failed` → git is a repo but the diff failed → FAIL CLOSED (blocked).
15
+ * - available → block iff any edited file is outside declared scope.
16
+ * The worker's self-reported `amended_files` is never an input here.
17
+ */
18
+ export declare function enforceWriteScope(declaredWritePaths: string[], edited: GitEditedFiles, root: string): WriteScopeDecision;
19
+ /** Each block's declared write scope from a dispatch plan — the seed for the
20
+ * accept-time write-scope gate's ownership registry (so an amended path owned by
21
+ * a sibling block is recognised as a seam conflict, not silently granted). */
22
+ export declare function blockScopesFromPlan(plan: RemediationDispatchPlan): Array<{
23
+ block_id: string;
24
+ write_paths: string[];
25
+ }>;
26
+ /**
27
+ * A block's declared target paths (write ∪ read) from the persisted dispatch plan
28
+ * — the single source of the scope the worker actually received (same authority
29
+ * the accept-time write-scope gate reads). Used to seed untracked declared targets
30
+ * into a fresh worktree (see {@link seedUntrackedDeclaredPaths}).
31
+ */
32
+ export declare function declaredPathsFromPlan(plan: RemediationDispatchPlan, blockId: string): string[];
33
+ /**
34
+ * Pure write-scope adjudication (OBL-DS-06) — git-free so it is unit-testable with
35
+ * a synthetic edit set. Seeds an ephemeral `OwnershipRegistry` from `allBlockScopes`
36
+ * (normalised to repo-relative so ownership compares like-for-like) and routes the
37
+ * node's ACTUAL out-of-declared edits — the git ground truth, never a self-report:
38
+ * - an edit to a file no sibling block owns is granted and widens this node's
39
+ * effective scope (a too-narrow — or empty — declared scope no longer blocks a
40
+ * correct fix; this is the sanctioned "extend into unowned files" path);
41
+ * - an edit to a file in another block's declared scope is a seam conflict that
42
+ * blocks until the seam protocol re-scopes or serialises the nodes.
43
+ * Cross-sibling contention on a file two live nodes both touch (neither declared)
44
+ * is left to the merge-time lost-update detector (`detectOverlappingEdits`), which
45
+ * sees the full set of merged blocks a single accept cannot.
46
+ */
47
+ export declare function adjudicateWriteScope(allBlockScopes: Array<{
48
+ block_id: string;
49
+ write_paths: string[];
50
+ }>, blockId: string, edited: GitEditedFiles, root: string): WriteScopeDecision;
51
+ /**
52
+ * Accept-time write-scope gate, run from `acceptNodeWorktree` AFTER the verify and
53
+ * BEFORE the cherry-pick so a violation PREVENTS the merge rather than being
54
+ * reported once the edit already landed in main. Thin git wrapper around
55
+ * {@link adjudicateWriteScope}: resolves the branch's actual edits and adjudicates.
56
+ */
57
+ export declare function enforceAcceptWriteScope(params: {
58
+ root: string;
59
+ branch: string;
60
+ blockId: string;
61
+ allBlockScopes: Array<{
62
+ block_id: string;
63
+ write_paths: string[];
64
+ }>;
65
+ }): WriteScopeDecision;
66
+ /**
67
+ * Build the map from a known obligation/node alias to the finding id that owns
68
+ * it, for one block. A worker that mislabels its `finding_id` as an obligation
69
+ * id it was assigned (or a CP-BLOCK-prefixed/unprefixed node alias) is remapped
70
+ * to the owning node's finding rather than dropped as an orphan — the tolerant
71
+ * seam (the host is a variable of any strength). The map only ever points at
72
+ * findings that belong to THIS block, so a mislabel can never resolve to an
73
+ * unrelated node.
74
+ */
75
+ export declare function buildBlockAliasMap(block: RemediationBlock, state: RemediationState): Map<string, string>;
76
+ /**
77
+ * Collapse a worker result's `item_results` to one entry per resolved finding
78
+ * id, applying the block alias map first (obligation/node-alias → finding). When
79
+ * several entries collapse onto the same finding, a single `blocked` entry wins
80
+ * over `resolved` (a node is not complete if any reported facet failed), and the
81
+ * union of evidence / first failure_reason is preserved. Entries whose id is
82
+ * neither a known finding nor a known alias are returned in `unresolved` so the
83
+ * caller can record them as orphans.
84
+ */
85
+ export declare function collapseItemResults(itemResults: ImplementWorkerResult["item_results"], aliasMap: Map<string, string>, knownFindingIds: Set<string>): {
86
+ collapsed: ImplementWorkerResult["item_results"];
87
+ unresolved: ImplementWorkerResult["item_results"];
88
+ };
89
+ export type NodeDispositionStatus = "verified_complete" | "blocked" | "skipped" | "missing_result";
90
+ export interface NodeDisposition {
91
+ node_id: string;
92
+ block_id: string;
93
+ disposition: NodeDispositionStatus;
94
+ /** The state status the node's finding(s) ended in. */
95
+ finding_status: string;
96
+ /** Reconciliation expectations the node was responsible for honoring (INV-DS-12). */
97
+ reconciliation_expectations: string[];
98
+ /** Why the node landed in this disposition (failure_reason / skip reason). */
99
+ reason?: string;
100
+ }
101
+ /**
102
+ * Build the per-node disposition for a block (INV-DS-15). A SKIP disposition
103
+ * (user-skipped: `ignored` / `deemed_inappropriate`) is NEVER reported as
104
+ * `verified_complete`. Each block maps 1:1 to a node, so the disposition keys on
105
+ * the block's first finding (the node id).
106
+ */
107
+ export declare function buildNodeDisposition(block: RemediationBlock, state: RemediationState): NodeDisposition;
108
+ /**
109
+ * Attribute a post-merge sibling-block failure (INV-DS-14). Given the repo-
110
+ * relative paths implicated by a red sibling and the merged blocks' declared
111
+ * write scopes, return the exactly-one block whose scope contains an implicated
112
+ * file (attributable → route THAT sibling to triage). When zero or more than one
113
+ * merged block could own the failure, the red is unattributable and is deferred
114
+ * to the rolling-scheduler's coarse backstop (return null).
115
+ */
116
+ export declare function attributeSiblingRed(implicatedFiles: string[], mergedBlockScopes: Array<{
117
+ block_id: string;
118
+ write_paths: string[];
119
+ }>, root: string): string | null;
120
+ /** A merged block's ACTUAL edited file set (resolved from its worktree branch diff). */
121
+ export interface BlockEditedFiles {
122
+ block_id: string;
123
+ /** Repo-relative forward-slash paths the block's worker actually changed. */
124
+ files: Set<string>;
125
+ /**
126
+ * The block's ACTUAL edited hunks (new-side line ranges), when git could
127
+ * resolve them. When absent / unavailable, {@link detectOverlappingEdits} MUST
128
+ * fail closed and treat any same-file pairing as a potential collision — a
129
+ * missing hunk map is never disjointness evidence.
130
+ */
131
+ hunks?: GitBranchHunks;
132
+ }
133
+ /** One detected overlap: two merged blocks whose actual edits hit the same file. */
134
+ export interface OverlappingEdit {
135
+ path: string;
136
+ block_ids: string[];
137
+ }
138
+ /**
139
+ * Detect lost-update hazards across concurrently-merged blocks (ARC-f378135d-2 /
140
+ * ARC-c1693139). When the rolling engine dispatches multiple nodes in flight and
141
+ * each worker edits in its own worktree, two workers can both modify the SAME
142
+ * file; cherry-picking both branches silently drops one worker's change to that
143
+ * file (lost update). This pure function returns every repo-relative path that
144
+ * appears in more than one merged block's ACTUAL edit set, with the owning block
145
+ * ids. The caller routes the involved blocks to triage so the conflict is
146
+ * reconciled rather than silently losing an edit. Result-file artifacts and the
147
+ * agent-feedback file are sanctioned side outputs and are never counted as
148
+ * overlaps.
149
+ */
150
+ export declare function detectOverlappingEdits(editedByBlock: BlockEditedFiles[]): OverlappingEdit[];
151
+ //# sourceMappingURL=writeScope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeScope.d.ts","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/writeScope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,376 @@
1
+ import { OwnershipRegistry } from "../../dispatch/ownershipRegistry.js";
2
+ import { routeAmendmentRequest } from "../../dispatch/amendmentClaim.js";
3
+ import { toBlockId, fromBlockId } from "../../contractPipeline/idRegistry.js";
4
+ import { AGENT_FEEDBACK_FILENAME } from "audit-tools/shared";
5
+ import { isSkipStatus, isVerifiedCompleteStatus, } from "../../state/itemStatus.js";
6
+ import { toRepoRelative, writeScopeViolations, gitEditedFilesForBranch, } from "./common.js";
7
+ import { reconciliationExpectationsOf } from "./dagNodeFields.js";
8
+ /**
9
+ * Pure write-scope gate decision (OBL-DS-06). Given the block's declared write
10
+ * paths and the resolved git edit set:
11
+ * - `not_a_repo` → no ground truth (no worktree workflow) → not blocked.
12
+ * - `probe_failed` → git is a repo but the diff failed → FAIL CLOSED (blocked).
13
+ * - available → block iff any edited file is outside declared scope.
14
+ * The worker's self-reported `amended_files` is never an input here.
15
+ */
16
+ export function enforceWriteScope(declaredWritePaths, edited, root) {
17
+ if (!edited.available) {
18
+ if (edited.reason === "not_a_repo") {
19
+ return { blocked: false };
20
+ }
21
+ // probe_failed: git is present but could not be queried → fail closed.
22
+ return {
23
+ blocked: true,
24
+ reason: `Write-scope could not be verified: git probe failed (${edited.error}). ` +
25
+ `Failing closed rather than trusting self-reported edits.`,
26
+ };
27
+ }
28
+ const violations = writeScopeViolations(declaredWritePaths, edited.files, root);
29
+ if (violations.length === 0)
30
+ return { blocked: false };
31
+ return {
32
+ blocked: true,
33
+ reason: `Worker edited files outside its declared write scope: ${violations.join(", ")}. ` +
34
+ `Declared scope must be amended through the seam protocol; the self-reported ` +
35
+ `amended_files set is not trusted for this gate.`,
36
+ };
37
+ }
38
+ /** Each block's declared write scope from a dispatch plan — the seed for the
39
+ * accept-time write-scope gate's ownership registry (so an amended path owned by
40
+ * a sibling block is recognised as a seam conflict, not silently granted). */
41
+ export function blockScopesFromPlan(plan) {
42
+ return plan.items.flatMap((item) => item.block_id && item.access
43
+ ? [{ block_id: item.block_id, write_paths: item.access.write_paths }]
44
+ : []);
45
+ }
46
+ /**
47
+ * A block's declared target paths (write ∪ read) from the persisted dispatch plan
48
+ * — the single source of the scope the worker actually received (same authority
49
+ * the accept-time write-scope gate reads). Used to seed untracked declared targets
50
+ * into a fresh worktree (see {@link seedUntrackedDeclaredPaths}).
51
+ */
52
+ export function declaredPathsFromPlan(plan, blockId) {
53
+ const item = plan.items.find((i) => i.block_id === blockId);
54
+ if (!item?.access)
55
+ return [];
56
+ return [...(item.access.write_paths ?? []), ...(item.access.read_paths ?? [])];
57
+ }
58
+ /**
59
+ * Pure write-scope adjudication (OBL-DS-06) — git-free so it is unit-testable with
60
+ * a synthetic edit set. Seeds an ephemeral `OwnershipRegistry` from `allBlockScopes`
61
+ * (normalised to repo-relative so ownership compares like-for-like) and routes the
62
+ * node's ACTUAL out-of-declared edits — the git ground truth, never a self-report:
63
+ * - an edit to a file no sibling block owns is granted and widens this node's
64
+ * effective scope (a too-narrow — or empty — declared scope no longer blocks a
65
+ * correct fix; this is the sanctioned "extend into unowned files" path);
66
+ * - an edit to a file in another block's declared scope is a seam conflict that
67
+ * blocks until the seam protocol re-scopes or serialises the nodes.
68
+ * Cross-sibling contention on a file two live nodes both touch (neither declared)
69
+ * is left to the merge-time lost-update detector (`detectOverlappingEdits`), which
70
+ * sees the full set of merged blocks a single accept cannot.
71
+ */
72
+ export function adjudicateWriteScope(allBlockScopes, blockId, edited, root) {
73
+ const registry = new OwnershipRegistry();
74
+ registry.initialize(allBlockScopes.map((b) => ({
75
+ node_id: b.block_id,
76
+ write_paths: b.write_paths.map((p) => toRepoRelative(p, root)),
77
+ })));
78
+ if (edited.available) {
79
+ // The node's real source edits outside its declared scope (sanctioned side
80
+ // outputs already excluded by writeScopeViolations).
81
+ const candidates = writeScopeViolations(registry.getScope(blockId), edited.files, root);
82
+ if (candidates.length > 0) {
83
+ const { seam_routed } = routeAmendmentRequest(registry, blockId, candidates);
84
+ if (seam_routed.length > 0) {
85
+ const detail = seam_routed
86
+ .map((r) => {
87
+ const reason = r.reason;
88
+ if (reason.outcome === "owned")
89
+ return `${r.path} owned by ${reason.owner_node_id}`;
90
+ if (reason.outcome === "contended") {
91
+ return `${r.path} contended by ${reason.sibling_node_id}`;
92
+ }
93
+ return r.path;
94
+ })
95
+ .join("; ");
96
+ return {
97
+ blocked: true,
98
+ reason: `Node edited files owned by another block (seam conflict): ${detail}. ` +
99
+ `Resolve via the seam protocol (re-scope contracts or serialise the nodes) before this node can land.`,
100
+ };
101
+ }
102
+ // every candidate was unowned → granted into this node's effective scope.
103
+ }
104
+ }
105
+ return enforceWriteScope(registry.getScope(blockId), edited, root);
106
+ }
107
+ /**
108
+ * Accept-time write-scope gate, run from `acceptNodeWorktree` AFTER the verify and
109
+ * BEFORE the cherry-pick so a violation PREVENTS the merge rather than being
110
+ * reported once the edit already landed in main. Thin git wrapper around
111
+ * {@link adjudicateWriteScope}: resolves the branch's actual edits and adjudicates.
112
+ */
113
+ export function enforceAcceptWriteScope(params) {
114
+ const { root, branch, blockId, allBlockScopes } = params;
115
+ return adjudicateWriteScope(allBlockScopes, blockId, gitEditedFilesForBranch(root, branch), root);
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // Merge-seam: obligation-id → node remap + multi-entry collapse (tolerance)
119
+ // ---------------------------------------------------------------------------
120
+ /**
121
+ * Build the map from a known obligation/node alias to the finding id that owns
122
+ * it, for one block. A worker that mislabels its `finding_id` as an obligation
123
+ * id it was assigned (or a CP-BLOCK-prefixed/unprefixed node alias) is remapped
124
+ * to the owning node's finding rather than dropped as an orphan — the tolerant
125
+ * seam (the host is a variable of any strength). The map only ever points at
126
+ * findings that belong to THIS block, so a mislabel can never resolve to an
127
+ * unrelated node.
128
+ */
129
+ export function buildBlockAliasMap(block, state) {
130
+ const aliasToFinding = new Map();
131
+ for (const findingId of block.items) {
132
+ const finding = state.plan?.findings.find((f) => f.id === findingId);
133
+ if (!finding)
134
+ continue;
135
+ // The node id itself, and its block-prefixed / unprefixed aliases.
136
+ const register = (alias) => {
137
+ if (!alias || alias === findingId)
138
+ return;
139
+ if (!aliasToFinding.has(alias))
140
+ aliasToFinding.set(alias, findingId);
141
+ };
142
+ // CP-BLOCK- aliases are now resolved deterministically by the id registry in
143
+ // `collapseItemResults` (S4); registering them here is defence-in-depth only.
144
+ register(toBlockId(findingId));
145
+ register(block.block_id);
146
+ // The obligation ids the node satisfies/verifies — a worker may report one.
147
+ for (const obl of [
148
+ ...(finding.contract_obligation_ids ?? []),
149
+ ...(finding.verification_obligation_ids ?? []),
150
+ ]) {
151
+ register(obl);
152
+ }
153
+ }
154
+ return aliasToFinding;
155
+ }
156
+ /**
157
+ * Collapse a worker result's `item_results` to one entry per resolved finding
158
+ * id, applying the block alias map first (obligation/node-alias → finding). When
159
+ * several entries collapse onto the same finding, a single `blocked` entry wins
160
+ * over `resolved` (a node is not complete if any reported facet failed), and the
161
+ * union of evidence / first failure_reason is preserved. Entries whose id is
162
+ * neither a known finding nor a known alias are returned in `unresolved` so the
163
+ * caller can record them as orphans.
164
+ */
165
+ export function collapseItemResults(itemResults, aliasMap, knownFindingIds) {
166
+ const byFinding = new Map();
167
+ const unresolved = [];
168
+ for (const entry of itemResults) {
169
+ let targetId = entry.finding_id;
170
+ if (!knownFindingIds.has(targetId)) {
171
+ // Registry-authoritative (S4): a CP-BLOCK- block id maps deterministically
172
+ // to its bare node id via the id registry, so the common "worker reported
173
+ // the block id" mislabel resolves here without the tolerant alias remap —
174
+ // the remap is defence-in-depth for non-block aliases (e.g. a mislabelled
175
+ // obligation id) only.
176
+ const nodeId = fromBlockId(targetId);
177
+ if (nodeId && knownFindingIds.has(nodeId)) {
178
+ targetId = nodeId;
179
+ }
180
+ else {
181
+ const remapped = aliasMap.get(targetId);
182
+ if (remapped) {
183
+ targetId = remapped;
184
+ }
185
+ else {
186
+ unresolved.push(entry);
187
+ continue;
188
+ }
189
+ }
190
+ }
191
+ const normalized = { ...entry, finding_id: targetId };
192
+ const existing = byFinding.get(targetId);
193
+ if (!existing) {
194
+ byFinding.set(targetId, normalized);
195
+ continue;
196
+ }
197
+ // Collapse precedence: blocked > needs_clarification > resolved >
198
+ // resolved_no_change. A hard failure dominates an unanswered scoping question,
199
+ // which dominates an actual change, which dominates a no-change claim (a
200
+ // no-change claim only survives if every entry agreed nothing changed). Merge
201
+ // evidence; keep first failure_reason / clarification question.
202
+ const mergedEvidence = [
203
+ ...new Set([...(existing.evidence ?? []), ...(normalized.evidence ?? [])]),
204
+ ];
205
+ const status = existing.status === "blocked" || normalized.status === "blocked"
206
+ ? "blocked"
207
+ : existing.status === "needs_clarification" || normalized.status === "needs_clarification"
208
+ ? "needs_clarification"
209
+ : existing.status === "resolved" || normalized.status === "resolved"
210
+ ? "resolved"
211
+ : "resolved_no_change";
212
+ byFinding.set(targetId, {
213
+ finding_id: targetId,
214
+ status,
215
+ evidence: mergedEvidence.length > 0 ? mergedEvidence : undefined,
216
+ failure_reason: existing.failure_reason ?? normalized.failure_reason,
217
+ clarification_question: existing.clarification_question ?? normalized.clarification_question,
218
+ clarification_category: existing.clarification_category ?? normalized.clarification_category,
219
+ });
220
+ }
221
+ return { collapsed: [...byFinding.values()], unresolved };
222
+ }
223
+ /**
224
+ * Build the per-node disposition for a block (INV-DS-15). A SKIP disposition
225
+ * (user-skipped: `ignored` / `deemed_inappropriate`) is NEVER reported as
226
+ * `verified_complete`. Each block maps 1:1 to a node, so the disposition keys on
227
+ * the block's first finding (the node id).
228
+ */
229
+ export function buildNodeDisposition(block, state) {
230
+ const nodeId = block.items[0] ?? block.block_id;
231
+ const finding = state.plan?.findings.find((f) => f.id === nodeId);
232
+ // Resolve the block's overall status from its items.
233
+ const statuses = block.items.map((id) => state.items?.[id]?.status ?? "pending");
234
+ const isSkip = statuses.some((s) => isSkipStatus(s));
235
+ const allResolved = statuses.length > 0 && statuses.every((s) => isVerifiedCompleteStatus(s));
236
+ const anyBlocked = statuses.some((s) => s === "blocked");
237
+ let disposition;
238
+ if (isSkip) {
239
+ // INV-DS-15: a skipped node is never verified_complete.
240
+ disposition = "skipped";
241
+ }
242
+ else if (anyBlocked) {
243
+ disposition = "blocked";
244
+ }
245
+ else if (allResolved) {
246
+ disposition = "verified_complete";
247
+ }
248
+ else {
249
+ disposition = "missing_result";
250
+ }
251
+ const reason = block.items
252
+ .map((id) => state.items?.[id]?.failure_reason)
253
+ .find((r) => typeof r === "string" && r.length > 0);
254
+ return {
255
+ node_id: nodeId,
256
+ block_id: block.block_id,
257
+ disposition,
258
+ finding_status: statuses.join(","),
259
+ reconciliation_expectations: finding ? reconciliationExpectationsOf(finding) : [],
260
+ reason,
261
+ };
262
+ }
263
+ /**
264
+ * Attribute a post-merge sibling-block failure (INV-DS-14). Given the repo-
265
+ * relative paths implicated by a red sibling and the merged blocks' declared
266
+ * write scopes, return the exactly-one block whose scope contains an implicated
267
+ * file (attributable → route THAT sibling to triage). When zero or more than one
268
+ * merged block could own the failure, the red is unattributable and is deferred
269
+ * to the rolling-scheduler's coarse backstop (return null).
270
+ */
271
+ export function attributeSiblingRed(implicatedFiles, mergedBlockScopes, root) {
272
+ const implicated = new Set(implicatedFiles.map((p) => toRepoRelative(p, root)));
273
+ const owners = new Set();
274
+ for (const { block_id, write_paths } of mergedBlockScopes) {
275
+ for (const wp of write_paths) {
276
+ if (implicated.has(toRepoRelative(wp, root))) {
277
+ owners.add(block_id);
278
+ break;
279
+ }
280
+ }
281
+ }
282
+ // Attributable only when a single merged block owns the implicated surface.
283
+ return owners.size === 1 ? [...owners][0] : null;
284
+ }
285
+ /**
286
+ * Detect lost-update hazards across concurrently-merged blocks (ARC-f378135d-2 /
287
+ * ARC-c1693139). When the rolling engine dispatches multiple nodes in flight and
288
+ * each worker edits in its own worktree, two workers can both modify the SAME
289
+ * file; cherry-picking both branches silently drops one worker's change to that
290
+ * file (lost update). This pure function returns every repo-relative path that
291
+ * appears in more than one merged block's ACTUAL edit set, with the owning block
292
+ * ids. The caller routes the involved blocks to triage so the conflict is
293
+ * reconciled rather than silently losing an edit. Result-file artifacts and the
294
+ * agent-feedback file are sanctioned side outputs and are never counted as
295
+ * overlaps.
296
+ */
297
+ export function detectOverlappingEdits(editedByBlock) {
298
+ const isSanctionedSideOutput = (rel) => rel.endsWith(".result.json") || rel.endsWith(AGENT_FEEDBACK_FILENAME);
299
+ // path → block_id → the block's hunks for that path (undefined when hunk info
300
+ // is unavailable for the block, which forces the conservative fail-closed path).
301
+ const pathToBlockHunks = new Map();
302
+ for (const { block_id, files, hunks } of editedByBlock) {
303
+ for (const file of files) {
304
+ const rel = file.replace(/\\/g, "/");
305
+ // Sanctioned non-source outputs never constitute a lost-update conflict.
306
+ if (isSanctionedSideOutput(rel))
307
+ continue;
308
+ let byBlock = pathToBlockHunks.get(rel);
309
+ if (!byBlock) {
310
+ byBlock = new Map();
311
+ pathToBlockHunks.set(rel, byBlock);
312
+ }
313
+ // Hunk info is only usable when git resolved it AND this block edited this
314
+ // file per its hunk set. `available:false` (or an absent map) → undefined,
315
+ // which detectOverlap treats as "cannot prove disjoint" → collision stands.
316
+ const fileHunks = hunks?.available === true
317
+ ? hunks.hunks.filter((h) => h.file === rel)
318
+ : undefined;
319
+ byBlock.set(block_id, fileHunks);
320
+ }
321
+ }
322
+ const overlaps = [];
323
+ for (const [path, byBlock] of pathToBlockHunks) {
324
+ if (byBlock.size <= 1)
325
+ continue;
326
+ const owners = [...byBlock.keys()].sort();
327
+ // A file is a lost-update hazard iff SOME pair of owning blocks has edits we
328
+ // cannot prove disjoint. If EVERY pair's hunks are known and disjoint, the
329
+ // cherry-picks compose cleanly → not a collision. Any pair with unavailable
330
+ // hunks fails closed (treated as overlapping).
331
+ let collides = false;
332
+ outer: for (let i = 0; i < owners.length; i++) {
333
+ for (let j = i + 1; j < owners.length; j++) {
334
+ const a = byBlock.get(owners[i]);
335
+ const b = byBlock.get(owners[j]);
336
+ if (a === undefined || b === undefined) {
337
+ collides = true; // fail closed: no proof of disjointness.
338
+ break outer;
339
+ }
340
+ if (hunkRangesOverlap(a, b)) {
341
+ collides = true;
342
+ break outer;
343
+ }
344
+ }
345
+ }
346
+ if (collides) {
347
+ overlaps.push({ path, block_ids: owners });
348
+ }
349
+ }
350
+ // Deterministic ordering so the diagnostic + tests are stable.
351
+ return overlaps.sort((a, b) => a.path.localeCompare(b.path));
352
+ }
353
+ /**
354
+ * True when any hunk in `a` shares a new-side line with any hunk in `b`. Each
355
+ * hunk spans `[startLine, startLine + lineCount - 1]`; a zero-line hunk (pure
356
+ * deletion at `startLine`) is treated as touching the single anchor line
357
+ * `startLine` so a deletion adjacent to another block's insertion is still a
358
+ * conflict. Purely non-overlapping ranges (e.g. lines 1–5 vs 40–50) return
359
+ * false → the two edits are disjoint and compose cleanly.
360
+ */
361
+ function hunkRangesOverlap(a, b) {
362
+ const span = (h) => {
363
+ const count = h.lineCount > 0 ? h.lineCount : 1;
364
+ return [h.startLine, h.startLine + count - 1];
365
+ };
366
+ for (const ha of a) {
367
+ const [aStart, aEnd] = span(ha);
368
+ for (const hb of b) {
369
+ const [bStart, bEnd] = span(hb);
370
+ if (aStart <= bEnd && bStart <= aEnd)
371
+ return true;
372
+ }
373
+ }
374
+ return false;
375
+ }
376
+ //# sourceMappingURL=writeScope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writeScope.js","sourceRoot":"","sources":["../../../../src/remediate/steps/dispatch/writeScope.ts"],"names":[],"mappings":"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"}