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.
- package/dist/audit/clarification/blastRadius.d.ts +23 -0
- package/dist/audit/clarification/blastRadius.d.ts.map +1 -0
- package/dist/audit/clarification/blastRadius.js +65 -0
- package/dist/audit/clarification/blastRadius.js.map +1 -0
- package/dist/audit/clarification/dials.d.ts +28 -0
- package/dist/audit/clarification/dials.d.ts.map +1 -0
- package/dist/audit/clarification/dials.js +37 -0
- package/dist/audit/clarification/dials.js.map +1 -0
- package/dist/audit/clarification/partition.d.ts +25 -0
- package/dist/audit/clarification/partition.d.ts.map +1 -0
- package/dist/audit/clarification/partition.js +77 -0
- package/dist/audit/clarification/partition.js.map +1 -0
- package/dist/audit/clarification/riskGate.d.ts +24 -0
- package/dist/audit/clarification/riskGate.d.ts.map +1 -0
- package/dist/audit/clarification/riskGate.js +38 -0
- package/dist/audit/clarification/riskGate.js.map +1 -0
- package/dist/audit/clarification/voiQueue.d.ts +17 -0
- package/dist/audit/clarification/voiQueue.d.ts.map +1 -0
- package/dist/audit/clarification/voiQueue.js +37 -0
- package/dist/audit/clarification/voiQueue.js.map +1 -0
- package/dist/audit/cli/auditStep.d.ts +2 -0
- package/dist/audit/cli/auditStep.d.ts.map +1 -1
- package/dist/audit/cli/auditStep.js +9 -1
- package/dist/audit/cli/auditStep.js.map +1 -1
- package/dist/audit/cli/charterClarificationPrompt.d.ts +19 -0
- package/dist/audit/cli/charterClarificationPrompt.d.ts.map +1 -0
- package/dist/audit/cli/charterClarificationPrompt.js +60 -0
- package/dist/audit/cli/charterClarificationPrompt.js.map +1 -0
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +74 -0
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +62 -0
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +129 -0
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/steps.d.ts +4 -4
- package/dist/audit/cli/steps.d.ts.map +1 -1
- package/dist/audit/cli/steps.js +2 -0
- package/dist/audit/cli/steps.js.map +1 -1
- package/dist/audit/io/artifacts.d.ts +6 -0
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +2 -0
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/orchestrator/advance.d.ts +23 -0
- package/dist/audit/orchestrator/advance.d.ts.map +1 -1
- package/dist/audit/orchestrator/advance.js +122 -4
- package/dist/audit/orchestrator/advance.js.map +1 -1
- package/dist/audit/orchestrator/advanceTypes.d.ts +22 -1
- package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
- package/dist/audit/orchestrator/charterClarificationExecutor.d.ts +28 -0
- package/dist/audit/orchestrator/charterClarificationExecutor.d.ts.map +1 -0
- package/dist/audit/orchestrator/charterClarificationExecutor.js +130 -0
- package/dist/audit/orchestrator/charterClarificationExecutor.js.map +1 -0
- package/dist/audit/orchestrator/dependencyMap.d.ts +2 -0
- package/dist/audit/orchestrator/dependencyMap.d.ts.map +1 -1
- package/dist/audit/orchestrator/dependencyMap.js +24 -0
- package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.d.ts +17 -0
- package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.js +50 -0
- package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
- package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +4 -0
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/executors.d.ts.map +1 -1
- package/dist/audit/orchestrator/executors.js +20 -0
- package/dist/audit/orchestrator/executors.js.map +1 -1
- package/dist/audit/orchestrator/nextStep.d.ts +11 -1
- package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
- package/dist/audit/orchestrator/nextStep.js +6 -2
- package/dist/audit/orchestrator/nextStep.js.map +1 -1
- package/dist/audit/orchestrator/staleness.d.ts +27 -1
- package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
- package/dist/audit/orchestrator/staleness.js +33 -16
- package/dist/audit/orchestrator/staleness.js.map +1 -1
- package/dist/audit/orchestrator/state.d.ts +12 -1
- package/dist/audit/orchestrator/state.d.ts.map +1 -1
- package/dist/audit/orchestrator/state.js +41 -2
- package/dist/audit/orchestrator/state.js.map +1 -1
- package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/synthesisExecutors.js +1 -0
- package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
- package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts +25 -0
- package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts.map +1 -0
- package/dist/audit/orchestrator/systemicChallengeExecutor.js +107 -0
- package/dist/audit/orchestrator/systemicChallengeExecutor.js.map +1 -0
- package/dist/audit/reporting/mergeFindings.d.ts +2 -1
- package/dist/audit/reporting/mergeFindings.d.ts.map +1 -1
- package/dist/audit/reporting/mergeFindings.js +6 -1
- package/dist/audit/reporting/mergeFindings.js.map +1 -1
- package/dist/audit/reporting/synthesis.d.ts +2 -0
- package/dist/audit/reporting/synthesis.d.ts.map +1 -1
- package/dist/audit/reporting/synthesis.js +1 -1
- package/dist/audit/reporting/synthesis.js.map +1 -1
- package/dist/audit/systemic/aggregateMetricsDigest.d.ts +11 -0
- package/dist/audit/systemic/aggregateMetricsDigest.d.ts.map +1 -0
- package/dist/audit/systemic/aggregateMetricsDigest.js +84 -0
- package/dist/audit/systemic/aggregateMetricsDigest.js.map +1 -0
- package/dist/audit/systemic/metricsDigestTypes.d.ts +35 -0
- package/dist/audit/systemic/metricsDigestTypes.d.ts.map +1 -0
- package/dist/audit/systemic/metricsDigestTypes.js +10 -0
- package/dist/audit/systemic/metricsDigestTypes.js.map +1 -0
- package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts +16 -0
- package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -0
- package/dist/audit/systemic/secondOrderAdversaryPrompt.js +85 -0
- package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -0
- package/dist/audit/systemic/systemicChallengeLoop.d.ts +48 -0
- package/dist/audit/systemic/systemicChallengeLoop.d.ts.map +1 -0
- package/dist/audit/systemic/systemicChallengeLoop.js +107 -0
- package/dist/audit/systemic/systemicChallengeLoop.js.map +1 -0
- package/dist/audit/types/charterClarification.d.ts +52 -0
- package/dist/audit/types/charterClarification.d.ts.map +1 -0
- package/dist/audit/types/charterClarification.js +2 -0
- package/dist/audit/types/charterClarification.js.map +1 -0
- package/dist/audit/types/systemicChallenge.d.ts +69 -0
- package/dist/audit/types/systemicChallenge.d.ts.map +1 -0
- package/dist/audit/types/systemicChallenge.js +2 -0
- package/dist/audit/types/systemicChallenge.js.map +1 -0
- package/dist/remediate/steps/dispatch/acceptNode.d.ts +178 -0
- package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/acceptNode.js +351 -0
- package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -0
- package/dist/remediate/steps/dispatch/common.d.ts +123 -0
- package/dist/remediate/steps/dispatch/common.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/common.js +236 -0
- package/dist/remediate/steps/dispatch/common.js.map +1 -0
- package/dist/remediate/steps/dispatch/dagNodeFields.d.ts +37 -0
- package/dist/remediate/steps/dispatch/dagNodeFields.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/dagNodeFields.js +19 -0
- package/dist/remediate/steps/dispatch/dagNodeFields.js.map +1 -0
- package/dist/remediate/steps/dispatch/implementPrompt.d.ts +70 -0
- package/dist/remediate/steps/dispatch/implementPrompt.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/implementPrompt.js +577 -0
- package/dist/remediate/steps/dispatch/implementPrompt.js.map +1 -0
- package/dist/remediate/steps/dispatch/marshal.d.ts +32 -0
- package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/marshal.js +935 -0
- package/dist/remediate/steps/dispatch/marshal.js.map +1 -0
- package/dist/remediate/steps/dispatch/verifyCommands.d.ts +97 -0
- package/dist/remediate/steps/dispatch/verifyCommands.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/verifyCommands.js +204 -0
- package/dist/remediate/steps/dispatch/verifyCommands.js.map +1 -0
- package/dist/remediate/steps/dispatch/waveScheduling.d.ts +90 -0
- package/dist/remediate/steps/dispatch/waveScheduling.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/waveScheduling.js +352 -0
- package/dist/remediate/steps/dispatch/waveScheduling.js.map +1 -0
- package/dist/remediate/steps/dispatch/worktreeLifecycle.d.ts +189 -0
- package/dist/remediate/steps/dispatch/worktreeLifecycle.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/worktreeLifecycle.js +643 -0
- package/dist/remediate/steps/dispatch/worktreeLifecycle.js.map +1 -0
- package/dist/remediate/steps/dispatch/writeScope.d.ts +151 -0
- package/dist/remediate/steps/dispatch/writeScope.d.ts.map +1 -0
- package/dist/remediate/steps/dispatch/writeScope.js +376 -0
- package/dist/remediate/steps/dispatch/writeScope.js.map +1 -0
- package/dist/remediate/steps/dispatch.d.ts +16 -871
- package/dist/remediate/steps/dispatch.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch.js +18 -3623
- package/dist/remediate/steps/dispatch.js.map +1 -1
- package/dist/shared/decompose/charterClarification.d.ts +80 -0
- package/dist/shared/decompose/charterClarification.d.ts.map +1 -0
- package/dist/shared/decompose/charterClarification.js +105 -0
- package/dist/shared/decompose/charterClarification.js.map +1 -0
- package/dist/shared/decompose/systemicChallenge.d.ts +326 -0
- package/dist/shared/decompose/systemicChallenge.d.ts.map +1 -0
- package/dist/shared/decompose/systemicChallenge.js +30 -0
- package/dist/shared/decompose/systemicChallenge.js.map +1 -0
- package/dist/shared/index.d.ts +10 -5
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +6 -4
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/opencodePermissions.d.ts +73 -0
- package/dist/shared/opencodePermissions.d.ts.map +1 -1
- package/dist/shared/opencodePermissions.js +172 -0
- package/dist/shared/opencodePermissions.js.map +1 -1
- package/dist/shared/tooling/exec.d.ts +10 -1
- package/dist/shared/tooling/exec.d.ts.map +1 -1
- package/dist/shared/tooling/exec.js +13 -1
- package/dist/shared/tooling/exec.js.map +1 -1
- package/dist/shared/types/charter.d.ts +89 -0
- package/dist/shared/types/charter.d.ts.map +1 -1
- package/dist/shared/types/charter.js +68 -0
- package/dist/shared/types/charter.js.map +1 -1
- package/dist/shared/types/intentCheckpoint.d.ts +15 -0
- package/dist/shared/types/intentCheckpoint.d.ts.map +1 -1
- package/dist/shared/types/intentCheckpoint.js +11 -0
- package/dist/shared/types/intentCheckpoint.js.map +1 -1
- package/dist/shared/validation/charterGate.d.ts +20 -1
- package/dist/shared/validation/charterGate.d.ts.map +1 -1
- package/dist/shared/validation/charterGate.js +23 -0
- package/dist/shared/validation/charterGate.js.map +1 -1
- package/opencode.json +36 -20
- package/package.json +1 -1
- package/scripts/postinstall.mjs +2 -1
- package/wrapper/audit-code-wrapper-opencode.mjs +38 -12
- 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":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAKlF,OAAO,EAIL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAGrB,yEAAyE;AACzE,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,kBAAkB,EAAE,MAAM,EAAE,EAC5B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,kBAAkB,CAsBpB;AAED;;+EAE+E;AAC/E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,uBAAuB,GAC5B,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAMpD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,uBAAuB,EAC7B,OAAO,EAAE,MAAM,GACd,MAAM,EAAE,CAIV;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EAClE,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,kBAAkB,CAoCpB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACpE,GAAG,kBAAkB,CAQrB;AAMD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,gBAAgB,GACtB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAuBrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,qBAAqB,CAAC,cAAc,CAAC,EAClD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B;IACD,SAAS,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;CACnD,CA0DA;AAMD,MAAM,MAAM,qBAAqB,GAC7B,mBAAmB,GACnB,SAAS,GACT,SAAS,GACT,gBAAgB,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,qBAAqB,CAAC;IACnC,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,gBAAgB,GACtB,eAAe,CA+BjB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,MAAM,EAAE,EACzB,iBAAiB,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EACrE,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAaf;AAMD,wFAAwF;AACxF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,gBAAgB,EAAE,GAChC,eAAe,EAAE,CAyDnB"}
|
|
@@ -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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"}
|