@substrate-ai/sdlc 0.20.58 → 0.20.59

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.
@@ -0,0 +1,65 @@
1
+ /**
2
+ * CrossStoryConsistencyCheck — Story 68-1.
3
+ *
4
+ * Tier B cross-story verification check that detects when concurrent stories
5
+ * modify overlapping file sets, and validates that their interface signatures
6
+ * do not conflict.
7
+ *
8
+ * Motivating incidents:
9
+ * - Epic 66 run a832487a: 66-1+66-2+66-7 concurrent dispatch — concurrent
10
+ * stories modifying shared test files caused transient verification failures
11
+ * when the earlier-committing story's changes affected the later story's
12
+ * verification gate.
13
+ * - Epic 67 run a59e4c96: 67-1+67-2 concurrent dispatch —
14
+ * methodology-pack.test.ts BUDGET_LIMIT constant (30000 vs 32000) was updated
15
+ * by story 67-1 AFTER 67-2's verification ran on the un-bumped tree, causing
16
+ * a false pipeline failure verdict despite fully coherent on-disk state.
17
+ *
18
+ * Two detection layers:
19
+ * Layer 1 — path intersection: detect shared file paths between the current
20
+ * story's modified files and priorStoryFiles (other concurrent stories).
21
+ * Runs unconditionally when Tier B context is present.
22
+ * Layer 2 — diff validation: only runs when buildCheckPassed !== false and
23
+ * Layer 1 found at least one collision path. Parses git diff output for
24
+ * type signature changes (export interface/type) and constant reassignments
25
+ * in the collision file set.
26
+ *
27
+ * Per Story 60-4/60-10 convention: motivating incident citations appear in this
28
+ * header comment rather than inline in the check logic.
29
+ */
30
+ import type { VerificationCheck, VerificationContext, VerificationResult } from '../types.js';
31
+ /**
32
+ * Compute the set of file paths that collide between the current story's
33
+ * modified files and the prior stories' modified files.
34
+ *
35
+ * Uses `context._crossStoryConflictingFiles` as a direct override when
36
+ * supplied (test-hook / runtime-probe path). Otherwise computes the
37
+ * intersection of `devStoryResult.files_modified` ∩ `priorStoryFiles`.
38
+ */
39
+ export declare function computeCollisionPaths(context: VerificationContext): string[];
40
+ /**
41
+ * Parse a unified diff text for type signature changes or constant reassignments.
42
+ *
43
+ * Returns `true` when the diff contains any added or removed export
44
+ * interface/type declaration OR any added/removed constant assignment —
45
+ * indicating a potential interface-level change that concurrent story authors
46
+ * should review.
47
+ */
48
+ export declare function diffContainsInterfaceOrConstChange(diffText: string): boolean;
49
+ /**
50
+ * Standalone function implementing the cross-story consistency check logic.
51
+ * Exported separately so tests can call it directly without instantiating the class.
52
+ */
53
+ export declare function runCrossStoryConsistencyCheck(context: VerificationContext): Promise<VerificationResult>;
54
+ /**
55
+ * VerificationCheck class for cross-story consistency analysis.
56
+ *
57
+ * name = 'cross-story-consistency'
58
+ * tier = 'B' (requires cross-story context; skipped for single-story runs)
59
+ */
60
+ export declare class CrossStoryConsistencyCheck implements VerificationCheck {
61
+ readonly name = "cross-story-consistency";
62
+ readonly tier: "B";
63
+ run(context: VerificationContext): Promise<VerificationResult>;
64
+ }
65
+ //# sourceMappingURL=cross-story-consistency-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-story-consistency-check.d.ts","sourceRoot":"","sources":["../../../src/verification/checks/cross-story-consistency-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EAEnB,kBAAkB,EACnB,MAAM,aAAa,CAAA;AAuBpB;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAkB5E;AAMD;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO5E;AAqDD;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAkG7B;AAMD;;;;;GAKG;AACH,qBAAa,0BAA2B,YAAW,iBAAiB;IAClE,QAAQ,CAAC,IAAI,6BAA4B;IACzC,QAAQ,CAAC,IAAI,EAAG,GAAG,CAAS;IAEtB,GAAG,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAGrE"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * CrossStoryConsistencyCheck — Story 68-1.
3
+ *
4
+ * Tier B cross-story verification check that detects when concurrent stories
5
+ * modify overlapping file sets, and validates that their interface signatures
6
+ * do not conflict.
7
+ *
8
+ * Motivating incidents:
9
+ * - Epic 66 run a832487a: 66-1+66-2+66-7 concurrent dispatch — concurrent
10
+ * stories modifying shared test files caused transient verification failures
11
+ * when the earlier-committing story's changes affected the later story's
12
+ * verification gate.
13
+ * - Epic 67 run a59e4c96: 67-1+67-2 concurrent dispatch —
14
+ * methodology-pack.test.ts BUDGET_LIMIT constant (30000 vs 32000) was updated
15
+ * by story 67-1 AFTER 67-2's verification ran on the un-bumped tree, causing
16
+ * a false pipeline failure verdict despite fully coherent on-disk state.
17
+ *
18
+ * Two detection layers:
19
+ * Layer 1 — path intersection: detect shared file paths between the current
20
+ * story's modified files and priorStoryFiles (other concurrent stories).
21
+ * Runs unconditionally when Tier B context is present.
22
+ * Layer 2 — diff validation: only runs when buildCheckPassed !== false and
23
+ * Layer 1 found at least one collision path. Parses git diff output for
24
+ * type signature changes (export interface/type) and constant reassignments
25
+ * in the collision file set.
26
+ *
27
+ * Per Story 60-4/60-10 convention: motivating incident citations appear in this
28
+ * header comment rather than inline in the check logic.
29
+ */
30
+ import { execSync } from 'child_process';
31
+ import { CATEGORY_CROSS_STORY_CONCURRENT_MODIFICATION, renderFindings, } from '../findings.js';
32
+ // ---------------------------------------------------------------------------
33
+ // Layer 2 diff patterns
34
+ // ---------------------------------------------------------------------------
35
+ /**
36
+ * Matches added/removed export interface or type declarations.
37
+ * Example: `+export interface Foo {` or `-export type Bar =`
38
+ */
39
+ const INTERFACE_CHANGE_PATTERN = /^[+-]\s*(export\s+(?:interface|type)\s+\w+)/;
40
+ /**
41
+ * Matches added/removed constant assignments.
42
+ * Example: `+const BUDGET_LIMIT = 32000` or `-const BUDGET_LIMIT = 30000`
43
+ * Also matches `export const`, `let`, `var`.
44
+ */
45
+ const CONST_CHANGE_PATTERN = /^[+-]\s*(?:export\s+)?(?:const|let|var)\s+\w+\s*=/;
46
+ // ---------------------------------------------------------------------------
47
+ // Layer 1: collision path computation
48
+ // ---------------------------------------------------------------------------
49
+ /**
50
+ * Compute the set of file paths that collide between the current story's
51
+ * modified files and the prior stories' modified files.
52
+ *
53
+ * Uses `context._crossStoryConflictingFiles` as a direct override when
54
+ * supplied (test-hook / runtime-probe path). Otherwise computes the
55
+ * intersection of `devStoryResult.files_modified` ∩ `priorStoryFiles`.
56
+ */
57
+ export function computeCollisionPaths(context) {
58
+ // Test-hook override: use provided collision paths directly
59
+ if (context._crossStoryConflictingFiles !== undefined &&
60
+ context._crossStoryConflictingFiles.length > 0) {
61
+ return context._crossStoryConflictingFiles;
62
+ }
63
+ const currentFiles = context.devStoryResult?.files_modified ?? [];
64
+ const priorFiles = context.priorStoryFiles ?? [];
65
+ if (currentFiles.length === 0 || priorFiles.length === 0) {
66
+ return [];
67
+ }
68
+ const priorSet = new Set(priorFiles);
69
+ return currentFiles.filter((f) => priorSet.has(f));
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // Layer 2: diff validation
73
+ // ---------------------------------------------------------------------------
74
+ /**
75
+ * Parse a unified diff text for type signature changes or constant reassignments.
76
+ *
77
+ * Returns `true` when the diff contains any added or removed export
78
+ * interface/type declaration OR any added/removed constant assignment —
79
+ * indicating a potential interface-level change that concurrent story authors
80
+ * should review.
81
+ */
82
+ export function diffContainsInterfaceOrConstChange(diffText) {
83
+ const lines = diffText.split('\n');
84
+ for (const line of lines) {
85
+ if (INTERFACE_CHANGE_PATTERN.test(line))
86
+ return true;
87
+ if (CONST_CHANGE_PATTERN.test(line))
88
+ return true;
89
+ }
90
+ return false;
91
+ }
92
+ /**
93
+ * Run `git diff --no-renames <commitSha>^...<commitSha> -- <file>` to get
94
+ * the per-file diff for the story's commit.
95
+ *
96
+ * Returns `null` when git is unavailable or the file wasn't part of the commit.
97
+ */
98
+ function getDiffForFile(workingDir, commitSha, filePath) {
99
+ try {
100
+ return execSync(`git diff --no-renames ${commitSha}~1 ${commitSha} -- ${filePath}`, {
101
+ cwd: workingDir,
102
+ encoding: 'utf-8',
103
+ stdio: ['ignore', 'pipe', 'pipe'],
104
+ });
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ /**
111
+ * Get numstat diff for a story commit to confirm a file was modified.
112
+ * Returns lines like: `5\t3\tsrc/foo.ts`
113
+ */
114
+ function getNumstatDiff(workingDir, commitSha) {
115
+ try {
116
+ return execSync(`git diff --no-renames --numstat ${commitSha}~1 ${commitSha}`, {
117
+ cwd: workingDir,
118
+ encoding: 'utf-8',
119
+ stdio: ['ignore', 'pipe', 'pipe'],
120
+ });
121
+ }
122
+ catch {
123
+ return null;
124
+ }
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // Standalone function
128
+ // ---------------------------------------------------------------------------
129
+ /**
130
+ * Standalone function implementing the cross-story consistency check logic.
131
+ * Exported separately so tests can call it directly without instantiating the class.
132
+ */
133
+ export async function runCrossStoryConsistencyCheck(context) {
134
+ const start = Date.now();
135
+ const findings = [];
136
+ // --- Early exit: no Tier B context ---
137
+ // If priorStoryFiles is absent AND no test-hook override, this is a
138
+ // single-story run. Return pass immediately without any analysis.
139
+ if ((context.priorStoryFiles === undefined || context.priorStoryFiles.length === 0) &&
140
+ (context._crossStoryConflictingFiles === undefined ||
141
+ context._crossStoryConflictingFiles.length === 0)) {
142
+ return {
143
+ status: 'pass',
144
+ details: 'cross-story-consistency: no Tier B context (priorStoryFiles absent) — skipping check',
145
+ duration_ms: Date.now() - start,
146
+ findings: [],
147
+ };
148
+ }
149
+ // --- Layer 1: path intersection ---
150
+ const collisionPaths = computeCollisionPaths(context);
151
+ if (collisionPaths.length > 0) {
152
+ findings.push({
153
+ category: 'cross-story-file-collision',
154
+ severity: 'warn',
155
+ message: `Layer 1 collision: story "${context.storyKey}" shares ${collisionPaths.length} file(s) ` +
156
+ `with concurrent stories: ${collisionPaths.join(', ')}. ` +
157
+ `Recommended action: serialize these stories to avoid race conditions. ` +
158
+ `Motivating incidents: Epic 66 (a832487a), Epic 67 (a59e4c96).`,
159
+ });
160
+ }
161
+ // --- Layer 2: diff validation (gated behind buildCheckPassed) ---
162
+ // Only run when build passed AND there are collision paths to analyze.
163
+ // If buildCheckPassed is absent/undefined, treat as true (fail-open).
164
+ const shouldRunLayer2 = context.buildCheckPassed !== false && collisionPaths.length > 0;
165
+ if (shouldRunLayer2) {
166
+ const numstat = getNumstatDiff(context.workingDir, context.commitSha);
167
+ // Parse binary file names from numstat (appear as "-\t-\t<file>")
168
+ const binaryFiles = new Set();
169
+ if (numstat !== null) {
170
+ for (const line of numstat.split('\n')) {
171
+ const binMatch = /^-\t-\t(.+)$/.exec(line.trim());
172
+ if (binMatch?.[1])
173
+ binaryFiles.add(binMatch[1]);
174
+ }
175
+ }
176
+ for (const filePath of collisionPaths) {
177
+ // Skip binary files
178
+ if (binaryFiles.has(filePath))
179
+ continue;
180
+ // Normalize path for git (always use forward slashes)
181
+ const normalizedPath = filePath.replace(/\\/g, '/');
182
+ const diffText = getDiffForFile(context.workingDir, context.commitSha, normalizedPath);
183
+ if (diffText === null)
184
+ continue;
185
+ if (diffContainsInterfaceOrConstChange(diffText)) {
186
+ findings.push({
187
+ category: CATEGORY_CROSS_STORY_CONCURRENT_MODIFICATION,
188
+ severity: 'warn',
189
+ message: `Layer 2 interface/constant change in shared file "${filePath}": ` +
190
+ `this story's commit modified export signatures or constants that may ` +
191
+ `conflict with concurrent story changes. Manual review recommended. ` +
192
+ `(Epic 66/67 reconciliation pattern: verify working-tree coherence via ` +
193
+ `build + tests before treating pipeline outcome as definitive.)`,
194
+ });
195
+ }
196
+ }
197
+ }
198
+ // --- Derive status ---
199
+ const status = findings.some((f) => f.severity === 'error')
200
+ ? 'fail'
201
+ : findings.some((f) => f.severity === 'warn')
202
+ ? 'warn'
203
+ : 'pass';
204
+ return {
205
+ status,
206
+ details: findings.length > 0
207
+ ? renderFindings(findings)
208
+ : 'cross-story-consistency: no file collisions detected between concurrent stories',
209
+ duration_ms: Date.now() - start,
210
+ findings,
211
+ };
212
+ }
213
+ // ---------------------------------------------------------------------------
214
+ // Check class
215
+ // ---------------------------------------------------------------------------
216
+ /**
217
+ * VerificationCheck class for cross-story consistency analysis.
218
+ *
219
+ * name = 'cross-story-consistency'
220
+ * tier = 'B' (requires cross-story context; skipped for single-story runs)
221
+ */
222
+ export class CrossStoryConsistencyCheck {
223
+ name = 'cross-story-consistency';
224
+ tier = 'B';
225
+ async run(context) {
226
+ return runCrossStoryConsistencyCheck(context);
227
+ }
228
+ }
229
+ //# sourceMappingURL=cross-story-consistency-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-story-consistency-check.js","sourceRoot":"","sources":["../../../src/verification/checks/cross-story-consistency-check.ts"],"names":[],"mappings":"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"}
@@ -16,4 +16,5 @@ export { BuildCheck, BUILD_CHECK_TIMEOUT_MS, detectBuildCommand } from './build-
16
16
  export { RuntimeProbeCheck } from './runtime-probe-check.js';
17
17
  export type { RuntimeProbeExecutors } from './runtime-probe-check.js';
18
18
  export { SourceAcShelloutCheck, runShelloutCheck, scanFile, isCommentLine, isInStringLiteralContext, } from './source-ac-shellout-check.js';
19
+ export { CrossStoryConsistencyCheck, runCrossStoryConsistencyCheck, computeCollisionPaths, diffContainsInterfaceOrConstChange, } from './cross-story-consistency-check.js';
19
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verification/checks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAA;AACvH,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,wBAAwB,GACzB,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/verification/checks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAA;AACvH,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,wBAAwB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,qBAAqB,EACrB,kCAAkC,GACnC,MAAM,oCAAoC,CAAA"}
@@ -15,4 +15,5 @@ export { AcceptanceCriteriaEvidenceCheck, extractAcceptanceCriteriaIds } from '.
15
15
  export { BuildCheck, BUILD_CHECK_TIMEOUT_MS, detectBuildCommand } from './build-check.js';
16
16
  export { RuntimeProbeCheck } from './runtime-probe-check.js';
17
17
  export { SourceAcShelloutCheck, runShelloutCheck, scanFile, isCommentLine, isInStringLiteralContext, } from './source-ac-shellout-check.js';
18
+ export { CrossStoryConsistencyCheck, runCrossStoryConsistencyCheck, computeCollisionPaths, diffContainsInterfaceOrConstChange, } from './cross-story-consistency-check.js';
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verification/checks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAA;AACvH,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,wBAAwB,GACzB,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/verification/checks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAChG,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAA;AACvH,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,wBAAwB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,qBAAqB,EACrB,kCAAkC,GACnC,MAAM,oCAAoC,CAAA"}
@@ -75,6 +75,22 @@ export interface VerificationFinding {
75
75
  * a dependency-confusion attack vector.
76
76
  */
77
77
  export declare const CATEGORY_SHELLOUT_NPX_FALLBACK: "source-ac-shellout-npx-fallback";
78
+ /**
79
+ * cross-story-concurrent-modification — Story 68-1, Epic 66/67 cross-story-interaction fix.
80
+ *
81
+ * Severity: warn (defensive rollout per Story 60-16 pattern). Emitted by
82
+ * CrossStoryConsistencyCheck (Layer 2) when post-completion analysis shows two
83
+ * concurrent stories modified the same file AND interface signatures differ
84
+ * between their commits.
85
+ *
86
+ * Motivating incidents: Epic 66 run a832487a (66-1+66-2+66-7 concurrent dispatch)
87
+ * + Epic 67 run a59e4c96 (67-1+67-2 methodology-pack.test.ts budget constant race).
88
+ *
89
+ * NOTE: Promotion to 'error' is deferred pending empirical low-false-positive
90
+ * validation across multiple substrate-on-substrate dispatch runs. Do NOT change
91
+ * severity to 'error' until at least 3 consecutive runs with zero false positives.
92
+ */
93
+ export declare const CATEGORY_CROSS_STORY_CONCURRENT_MODIFICATION: "cross-story-concurrent-modification";
78
94
  /**
79
95
  * Render a list of findings into the multi-line human-readable string that
80
96
  * populates VerificationResult.details. One line per finding:
@@ -1 +1 @@
1
- {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/verification/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;;;;;;GAQG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,QAAQ,EAAE,2BAA2B,CAAA;IACrC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,qGAAqG;IACrG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,cAAc,GAAG,0BAA0B,CAAA;IACzD;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAgBD;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,EACzC,iCAA0C,CAAA;AAM5C;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAKtE"}
1
+ {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/verification/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;;;;;;GAQG;AACH,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEnE;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAA;IAChB,gEAAgE;IAChE,QAAQ,EAAE,2BAA2B,CAAA;IACrC,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAA;IACf,qGAAqG;IACrG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,cAAc,GAAG,0BAA0B,CAAA;IACzD;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAgBD;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,EACzC,iCAA0C,CAAA;AAE5C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,4CAA4C,EACvD,qCAA8C,CAAA;AAMhD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAKtE"}
@@ -33,6 +33,22 @@ const SEVERITY_PREFIX = {
33
33
  * a dependency-confusion attack vector.
34
34
  */
35
35
  export const CATEGORY_SHELLOUT_NPX_FALLBACK = 'source-ac-shellout-npx-fallback';
36
+ /**
37
+ * cross-story-concurrent-modification — Story 68-1, Epic 66/67 cross-story-interaction fix.
38
+ *
39
+ * Severity: warn (defensive rollout per Story 60-16 pattern). Emitted by
40
+ * CrossStoryConsistencyCheck (Layer 2) when post-completion analysis shows two
41
+ * concurrent stories modified the same file AND interface signatures differ
42
+ * between their commits.
43
+ *
44
+ * Motivating incidents: Epic 66 run a832487a (66-1+66-2+66-7 concurrent dispatch)
45
+ * + Epic 67 run a59e4c96 (67-1+67-2 methodology-pack.test.ts budget constant race).
46
+ *
47
+ * NOTE: Promotion to 'error' is deferred pending empirical low-false-positive
48
+ * validation across multiple substrate-on-substrate dispatch runs. Do NOT change
49
+ * severity to 'error' until at least 3 consecutive runs with zero false positives.
50
+ */
51
+ export const CATEGORY_CROSS_STORY_CONCURRENT_MODIFICATION = 'cross-story-concurrent-modification';
36
52
  // ---------------------------------------------------------------------------
37
53
  // Rendering
38
54
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/verification/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA6DH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,eAAe,GAAgD;IACnE,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACb,CAAA;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,iCAA0C,CAAA;AAE5C,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,QAA+B;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACzE,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/verification/findings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA6DH,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,eAAe,GAAgD;IACnE,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;CACb,CAAA;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,iCAA0C,CAAA;AAE5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,4CAA4C,GACvD,qCAA8C,CAAA;AAEhD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,QAA+B;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACpC,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACzE,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC"}
@@ -18,4 +18,8 @@ export { TrivialOutputCheck, DEFAULT_TRIVIAL_OUTPUT_THRESHOLD } from './checks/i
18
18
  export { AcceptanceCriteriaEvidenceCheck, extractAcceptanceCriteriaIds } from './checks/index.js';
19
19
  export { BuildCheck, BUILD_CHECK_TIMEOUT_MS, detectBuildCommand } from './checks/index.js';
20
20
  export { SourceAcFidelityCheck } from './source-ac-fidelity-check.js';
21
+ export { SourceAcShelloutCheck, runShelloutCheck } from './checks/index.js';
22
+ export { CATEGORY_SHELLOUT_NPX_FALLBACK } from './findings.js';
23
+ export { CrossStoryConsistencyCheck, runCrossStoryConsistencyCheck, } from './checks/index.js';
24
+ export { CATEGORY_CROSS_STORY_CONCURRENT_MODIFICATION } from './findings.js';
21
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AACpG,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AACpG,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAG9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAE1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAErE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAA;AAE9D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,4CAA4C,EAAE,MAAM,eAAe,CAAA"}
@@ -20,4 +20,10 @@ export { AcceptanceCriteriaEvidenceCheck, extractAcceptanceCriteriaIds } from '.
20
20
  export { BuildCheck, BUILD_CHECK_TIMEOUT_MS, detectBuildCommand } from './checks/index.js';
21
21
  // Story 58-2: source AC fidelity check
22
22
  export { SourceAcFidelityCheck } from './source-ac-fidelity-check.js';
23
+ // Story 67-3: bare npx fallback static-analysis gate
24
+ export { SourceAcShelloutCheck, runShelloutCheck } from './checks/index.js';
25
+ export { CATEGORY_SHELLOUT_NPX_FALLBACK } from './findings.js';
26
+ // Story 68-1: cross-story consistency check + finding category
27
+ export { CrossStoryConsistencyCheck, runCrossStoryConsistencyCheck, } from './checks/index.js';
28
+ export { CATEGORY_CROSS_STORY_CONCURRENT_MODIFICATION } from './findings.js';
23
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AAYpG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,2CAA2C;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,0DAA0D;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,iFAAiF;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAQ1B,+CAA+C;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC1F,uCAAuC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,MAAM,4BAA4B,CAAA;AAYpG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,2CAA2C;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAEnE,0DAA0D;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,iFAAiF;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAA;AAQ1B,+CAA+C;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC1F,uCAAuC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,qDAAqD;AACrD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAA;AAC9D,+DAA+D;AAC/D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,4CAA4C,EAAE,MAAM,eAAe,CAAA"}
@@ -109,6 +109,28 @@ export interface VerificationContext {
109
109
  * passes (non-fatal for projects that don't use the planning-artifacts layout).
110
110
  */
111
111
  sourceEpicContent?: string;
112
+ /**
113
+ * Signal indicating whether the BuildCheck (Tier A) passed for this story.
114
+ *
115
+ * Used by CrossStoryConsistencyCheck (Story 68-1) to gate Layer 2 diff validation:
116
+ * if the build did not pass, Layer 2 is skipped to avoid false positives from
117
+ * broken code changes that may never ship.
118
+ *
119
+ * Absent/undefined → treated as `true` (fail-open, so existing single-story
120
+ * runs without this field populated are unaffected).
121
+ */
122
+ buildCheckPassed?: boolean;
123
+ /**
124
+ * Pre-computed set of file paths that collide between concurrent stories.
125
+ *
126
+ * Story 68-1 test hook: when set, CrossStoryConsistencyCheck uses this list
127
+ * directly as the Layer 1 collision result instead of computing the intersection
128
+ * from devStoryResult.files_modified ∩ priorStoryFiles.
129
+ *
130
+ * Not populated in production — used only by tests and runtime probes to
131
+ * drive detection without requiring real concurrent-story context.
132
+ */
133
+ _crossStoryConflictingFiles?: string[];
112
134
  }
113
135
  /**
114
136
  * Result returned by a single VerificationCheck.run() invocation.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/verification/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGxD,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAMrF;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,6GAA6G;IAC7G,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACtC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CACjC;AAMD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,eAAe,CAAA;IAChC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB;wDACoD;IACpD,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,SAAS,EAAE,MAAM,CAAA;CAClB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,uBAAuB,EAAE,CAAA;IACjC,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,IAAI,EAAE,GAAG,GAAG,GAAG,CAAA;IACf;;;OAGG;IACH,GAAG,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;CAC/D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/verification/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGxD,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAMrF;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,6GAA6G;IAC7G,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;IACtC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CACjC;AAMD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,eAAe,CAAA;IAChC;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;;;;;;OASG;IACH,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAA;CACvC;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB;wDACoD;IACpD,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,SAAS,EAAE,MAAM,CAAA;CAClB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,uBAAuB,EAAE,CAAA;IACjC,gDAAgD;IAChD,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAMD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,mFAAmF;IACnF,IAAI,EAAE,GAAG,GAAG,GAAG,CAAA;IACf;;;OAGG;IACH,GAAG,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;CAC/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"verification-pipeline.d.ts","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EAEnB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AA8BhF;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAElD;;;OAGG;gBACS,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAE,iBAAiB,EAAO;IAO5E;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;;;;;;;;;OAUG;IACG,GAAG,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,GAAE,GAAG,GAAG,GAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAqE7F;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,EAC9B,MAAM,CAAC,EAAE,wBAAwB,GAChC,oBAAoB,CAWtB"}
1
+ {"version":3,"file":"verification-pipeline.d.ts","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EAEnB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AAGnB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AA+BhF;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAElD;;;OAGG;gBACS,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAE,iBAAiB,EAAO;IAO5E;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAIxC;;;;;;;;;;OAUG;IACG,GAAG,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,GAAE,GAAG,GAAG,GAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAqE7F;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,EAC9B,MAAM,CAAC,EAAE,wBAAwB,GAChC,oBAAoB,CAYtB"}
@@ -17,6 +17,7 @@ import { BuildCheck } from './checks/build-check.js';
17
17
  import { RuntimeProbeCheck } from './checks/runtime-probe-check.js';
18
18
  import { SourceAcFidelityCheck } from './source-ac-fidelity-check.js';
19
19
  import { SourceAcShelloutCheck } from './checks/source-ac-shellout-check.js';
20
+ import { CrossStoryConsistencyCheck } from './checks/cross-story-consistency-check.js';
20
21
  // ---------------------------------------------------------------------------
21
22
  // Helpers
22
23
  // ---------------------------------------------------------------------------
@@ -167,6 +168,7 @@ export function createDefaultVerificationPipeline(bus, config) {
167
168
  new RuntimeProbeCheck(), // Epic 55 Phase 2: runtime behavior verification
168
169
  new SourceAcFidelityCheck(), // Story 58-2: source AC fidelity gate
169
170
  new SourceAcShelloutCheck(), // Story 67-3: bare npx fallback static-analysis gate (obs_2026-05-03_023 fix #3)
171
+ new CrossStoryConsistencyCheck(), // Story 68-1: cross-story file collision + diff validation (Epic 66/67)
170
172
  ];
171
173
  return new VerificationPipeline(bus, checks);
172
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verification-pipeline.js","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-pipeline.js","sourceRoot":"","sources":["../../src/verification/verification-pipeline.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@substrate-ai/sdlc",
3
- "version": "0.20.58",
3
+ "version": "0.20.59",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -24,7 +24,7 @@
24
24
  "node": ">=22.0.0"
25
25
  },
26
26
  "dependencies": {
27
- "@substrate-ai/core": "0.20.58",
27
+ "@substrate-ai/core": "0.20.59",
28
28
  "js-yaml": "^4.1.1",
29
29
  "zod": "^4.3.6"
30
30
  },