@lumenflow/core 2.18.3 → 2.20.0
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/adapters/terminal-renderer.adapter.d.ts.map +1 -1
- package/dist/adapters/terminal-renderer.adapter.js +6 -4
- package/dist/adapters/terminal-renderer.adapter.js.map +1 -1
- package/dist/arg-parser.js +2 -2
- package/dist/arg-parser.js.map +1 -1
- package/dist/atomic-merge.d.ts +21 -0
- package/dist/atomic-merge.d.ts.map +1 -0
- package/dist/atomic-merge.js +83 -0
- package/dist/atomic-merge.js.map +1 -0
- package/dist/context/wu-state-reader.d.ts +2 -0
- package/dist/context/wu-state-reader.d.ts.map +1 -1
- package/dist/context/wu-state-reader.js +3 -0
- package/dist/context/wu-state-reader.js.map +1 -1
- package/dist/delegation-escalation.d.ts +91 -0
- package/dist/delegation-escalation.d.ts.map +1 -0
- package/dist/delegation-escalation.js +258 -0
- package/dist/delegation-escalation.js.map +1 -0
- package/dist/delegation-monitor.d.ts +230 -0
- package/dist/delegation-monitor.d.ts.map +1 -0
- package/dist/delegation-monitor.js +675 -0
- package/dist/delegation-monitor.js.map +1 -0
- package/dist/delegation-recovery.d.ts +83 -0
- package/dist/delegation-recovery.d.ts.map +1 -0
- package/dist/delegation-recovery.js +299 -0
- package/dist/delegation-recovery.js.map +1 -0
- package/dist/delegation-registry-schema.d.ts +80 -0
- package/dist/delegation-registry-schema.d.ts.map +1 -0
- package/dist/delegation-registry-schema.js +91 -0
- package/dist/delegation-registry-schema.js.map +1 -0
- package/dist/delegation-registry-store.d.ts +159 -0
- package/dist/delegation-registry-store.d.ts.map +1 -0
- package/dist/delegation-registry-store.js +299 -0
- package/dist/delegation-registry-store.js.map +1 -0
- package/dist/delegation-tree.d.ts +57 -0
- package/dist/delegation-tree.d.ts.map +1 -0
- package/dist/delegation-tree.js +203 -0
- package/dist/delegation-tree.js.map +1 -0
- package/dist/gates-agent-mode.d.ts +25 -0
- package/dist/gates-agent-mode.d.ts.map +1 -1
- package/dist/gates-agent-mode.js +41 -0
- package/dist/gates-agent-mode.js.map +1 -1
- package/dist/index.d.ts +16 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -9
- package/dist/index.js.map +1 -1
- package/dist/lumenflow-config-schema.d.ts +9 -3
- package/dist/lumenflow-config-schema.d.ts.map +1 -1
- package/dist/lumenflow-config-schema.js +19 -4
- package/dist/lumenflow-config-schema.js.map +1 -1
- package/dist/lumenflow-config.d.ts +2 -0
- package/dist/lumenflow-config.d.ts.map +1 -1
- package/dist/lumenflow-config.js +1 -0
- package/dist/lumenflow-config.js.map +1 -1
- package/dist/micro-worktree.d.ts.map +1 -1
- package/dist/micro-worktree.js +15 -9
- package/dist/micro-worktree.js.map +1 -1
- package/dist/rollback-utils.d.ts +52 -0
- package/dist/rollback-utils.d.ts.map +1 -1
- package/dist/rollback-utils.js +111 -0
- package/dist/rollback-utils.js.map +1 -1
- package/dist/sandbox-allowlist.d.ts +16 -0
- package/dist/sandbox-allowlist.d.ts.map +1 -0
- package/dist/sandbox-allowlist.js +75 -0
- package/dist/sandbox-allowlist.js.map +1 -0
- package/dist/sandbox-backend-linux.d.ts +6 -0
- package/dist/sandbox-backend-linux.d.ts.map +1 -0
- package/dist/sandbox-backend-linux.js +65 -0
- package/dist/sandbox-backend-linux.js.map +1 -0
- package/dist/sandbox-backend-macos.d.ts +6 -0
- package/dist/sandbox-backend-macos.d.ts.map +1 -0
- package/dist/sandbox-backend-macos.js +64 -0
- package/dist/sandbox-backend-macos.js.map +1 -0
- package/dist/sandbox-backend-windows.d.ts +6 -0
- package/dist/sandbox-backend-windows.d.ts.map +1 -0
- package/dist/sandbox-backend-windows.js +28 -0
- package/dist/sandbox-backend-windows.js.map +1 -0
- package/dist/sandbox-profile.d.ts +53 -0
- package/dist/sandbox-profile.d.ts.map +1 -0
- package/dist/sandbox-profile.js +62 -0
- package/dist/sandbox-profile.js.map +1 -0
- package/dist/schemas/index.d.ts +3 -3
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +6 -6
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/initiative-arg-validators.d.ts +1 -0
- package/dist/schemas/initiative-arg-validators.d.ts.map +1 -1
- package/dist/schemas/initiative-schemas.d.ts +3 -1
- package/dist/schemas/initiative-schemas.d.ts.map +1 -1
- package/dist/schemas/initiative-schemas.js +2 -1
- package/dist/schemas/initiative-schemas.js.map +1 -1
- package/dist/schemas/setup-arg-validators.d.ts +4 -4
- package/dist/schemas/setup-arg-validators.d.ts.map +1 -1
- package/dist/schemas/setup-arg-validators.js +6 -6
- package/dist/schemas/setup-arg-validators.js.map +1 -1
- package/dist/schemas/setup-schemas.d.ts +7 -7
- package/dist/schemas/setup-schemas.d.ts.map +1 -1
- package/dist/schemas/setup-schemas.js +11 -11
- package/dist/schemas/setup-schemas.js.map +1 -1
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts +2 -1
- package/dist/schemas/wu-lifecycle-arg-validators.d.ts.map +1 -1
- package/dist/schemas/wu-lifecycle-schemas.d.ts +5 -3
- package/dist/schemas/wu-lifecycle-schemas.d.ts.map +1 -1
- package/dist/schemas/wu-lifecycle-schemas.js +6 -2
- package/dist/schemas/wu-lifecycle-schemas.js.map +1 -1
- package/dist/spawn-strategy.d.ts +1 -1
- package/dist/spawn-strategy.js +1 -1
- package/dist/template-loader.d.ts +7 -3
- package/dist/template-loader.d.ts.map +1 -1
- package/dist/template-loader.js +22 -6
- package/dist/template-loader.js.map +1 -1
- package/dist/validation/types.d.ts +2 -0
- package/dist/validation/types.d.ts.map +1 -1
- package/dist/wu-consistency-checker.d.ts +1 -0
- package/dist/wu-consistency-checker.d.ts.map +1 -1
- package/dist/wu-consistency-checker.js +31 -2
- package/dist/wu-consistency-checker.js.map +1 -1
- package/dist/wu-context-constants.d.ts +4 -2
- package/dist/wu-context-constants.d.ts.map +1 -1
- package/dist/wu-context-constants.js +4 -2
- package/dist/wu-context-constants.js.map +1 -1
- package/dist/wu-done-branch-only.d.ts +2 -11
- package/dist/wu-done-branch-only.d.ts.map +1 -1
- package/dist/wu-done-branch-only.js +81 -45
- package/dist/wu-done-branch-only.js.map +1 -1
- package/dist/wu-done-cleanup.js +33 -1
- package/dist/wu-done-cleanup.js.map +1 -1
- package/dist/wu-done-initiative-sync.d.ts.map +1 -1
- package/dist/wu-done-initiative-sync.js +20 -5
- package/dist/wu-done-initiative-sync.js.map +1 -1
- package/dist/wu-done-machine.d.ts +175 -0
- package/dist/wu-done-machine.d.ts.map +1 -0
- package/dist/wu-done-machine.js +225 -0
- package/dist/wu-done-machine.js.map +1 -0
- package/dist/wu-done-metadata.d.ts.map +1 -1
- package/dist/wu-done-metadata.js +3 -1
- package/dist/wu-done-metadata.js.map +1 -1
- package/dist/wu-done-preflight.d.ts +8 -0
- package/dist/wu-done-preflight.d.ts.map +1 -1
- package/dist/wu-done-preflight.js +17 -1
- package/dist/wu-done-preflight.js.map +1 -1
- package/dist/wu-done-validation.d.ts +0 -37
- package/dist/wu-done-validation.d.ts.map +1 -1
- package/dist/wu-done-validation.js +1 -155
- package/dist/wu-done-validation.js.map +1 -1
- package/dist/wu-done-validators.d.ts +1 -2
- package/dist/wu-done-validators.d.ts.map +1 -1
- package/dist/wu-done-validators.js +1 -3
- package/dist/wu-done-validators.js.map +1 -1
- package/dist/wu-done-worktree-services.d.ts +191 -0
- package/dist/wu-done-worktree-services.d.ts.map +1 -0
- package/dist/wu-done-worktree-services.js +273 -0
- package/dist/wu-done-worktree-services.js.map +1 -0
- package/dist/wu-done-worktree.d.ts +0 -19
- package/dist/wu-done-worktree.d.ts.map +1 -1
- package/dist/wu-done-worktree.js +165 -118
- package/dist/wu-done-worktree.js.map +1 -1
- package/dist/wu-git-constants.d.ts +4 -0
- package/dist/wu-git-constants.d.ts.map +1 -1
- package/dist/wu-git-constants.js +4 -0
- package/dist/wu-git-constants.js.map +1 -1
- package/dist/wu-helpers.d.ts +5 -1
- package/dist/wu-helpers.d.ts.map +1 -1
- package/dist/wu-helpers.js +5 -1
- package/dist/wu-helpers.js.map +1 -1
- package/dist/wu-lint.d.ts +53 -37
- package/dist/wu-lint.d.ts.map +1 -1
- package/dist/wu-lint.js +95 -105
- package/dist/wu-lint.js.map +1 -1
- package/dist/wu-paths-constants.d.ts +3 -3
- package/dist/wu-paths-constants.d.ts.map +1 -1
- package/dist/wu-paths-constants.js +3 -3
- package/dist/wu-paths-constants.js.map +1 -1
- package/dist/wu-preflight-validators.d.ts +28 -77
- package/dist/wu-preflight-validators.d.ts.map +1 -1
- package/dist/wu-preflight-validators.js +86 -130
- package/dist/wu-preflight-validators.js.map +1 -1
- package/dist/wu-recovery.d.ts +89 -0
- package/dist/wu-recovery.d.ts.map +1 -1
- package/dist/wu-recovery.js +118 -0
- package/dist/wu-recovery.js.map +1 -1
- package/dist/wu-rules-core.d.ts +95 -0
- package/dist/wu-rules-core.d.ts.map +1 -0
- package/dist/wu-rules-core.js +399 -0
- package/dist/wu-rules-core.js.map +1 -0
- package/dist/wu-rules-engine.d.ts +29 -0
- package/dist/wu-rules-engine.d.ts.map +1 -0
- package/dist/wu-rules-engine.js +59 -0
- package/dist/wu-rules-engine.js.map +1 -0
- package/dist/wu-rules-resolvers.d.ts +19 -0
- package/dist/wu-rules-resolvers.d.ts.map +1 -0
- package/dist/wu-rules-resolvers.js +208 -0
- package/dist/wu-rules-resolvers.js.map +1 -0
- package/dist/wu-schema.d.ts +24 -9
- package/dist/wu-schema.d.ts.map +1 -1
- package/dist/wu-schema.js +14 -1
- package/dist/wu-schema.js.map +1 -1
- package/dist/wu-spawn-context.d.ts +1 -1
- package/dist/wu-spawn-context.d.ts.map +1 -1
- package/dist/wu-spawn-context.js +8 -2
- package/dist/wu-spawn-context.js.map +1 -1
- package/dist/wu-spawn-helpers.js +2 -2
- package/dist/wu-spawn-helpers.js.map +1 -1
- package/dist/wu-state-schema.d.ts +12 -12
- package/dist/wu-state-schema.d.ts.map +1 -1
- package/dist/wu-state-schema.js +10 -10
- package/dist/wu-state-schema.js.map +1 -1
- package/dist/wu-state-store.d.ts +10 -4
- package/dist/wu-state-store.d.ts.map +1 -1
- package/dist/wu-state-store.js +309 -11
- package/dist/wu-state-store.js.map +1 -1
- package/dist/wu-transaction.d.ts +21 -0
- package/dist/wu-transaction.d.ts.map +1 -1
- package/dist/wu-transaction.js +17 -0
- package/dist/wu-transaction.js.map +1 -1
- package/package.json +14 -11
package/dist/wu-git-constants.js
CHANGED
|
@@ -93,6 +93,8 @@ export const GIT_FLAGS = {
|
|
|
93
93
|
REBASE: '--rebase',
|
|
94
94
|
/** Check ancestry without output (merge-base) */
|
|
95
95
|
IS_ANCESTOR: '--is-ancestor',
|
|
96
|
+
/** Write merged tree object and return conflict status code */
|
|
97
|
+
WRITE_TREE: '--write-tree',
|
|
96
98
|
/** Set upstream tracking */
|
|
97
99
|
UPSTREAM: '-u',
|
|
98
100
|
/** Delete branch (safe - only if merged) */
|
|
@@ -145,6 +147,8 @@ export const GIT_COMMANDS = {
|
|
|
145
147
|
LOG: 'log',
|
|
146
148
|
/** Git merge-base command */
|
|
147
149
|
MERGE_BASE: 'merge-base',
|
|
150
|
+
/** Git merge-tree command */
|
|
151
|
+
MERGE_TREE: 'merge-tree',
|
|
148
152
|
/** Git rev-parse command */
|
|
149
153
|
REV_PARSE: 'rev-parse',
|
|
150
154
|
/** Git diff flags */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wu-git-constants.js","sourceRoot":"","sources":["../src/wu-git-constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wu-git-constants.js","sourceRoot":"","sources":["../src/wu-git-constants.ts"],"names":[],"mappings":"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"}
|
package/dist/wu-helpers.d.ts
CHANGED
|
@@ -127,7 +127,11 @@ export declare function ensureOnMain(git: any): Promise<void>;
|
|
|
127
127
|
*
|
|
128
128
|
* @param {object} git - Git adapter with async fetch() and getCommitHash() methods
|
|
129
129
|
* @param {string} [scriptName='wu'] - Script name for logging
|
|
130
|
+
* @param {object} [options] - Options
|
|
131
|
+
* @param {boolean} [options.skipRemote=false] - WU-1653: Skip remote check (requireRemote=false)
|
|
130
132
|
* @throws {Error} If main is out of sync with origin
|
|
131
133
|
*/
|
|
132
|
-
export declare function ensureMainUpToDate(git: any, _scriptName?: string
|
|
134
|
+
export declare function ensureMainUpToDate(git: any, _scriptName?: string, { skipRemote }?: {
|
|
135
|
+
skipRemote?: boolean;
|
|
136
|
+
}): Promise<void>;
|
|
133
137
|
//# sourceMappingURL=wu-helpers.d.ts.map
|
package/dist/wu-helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wu-helpers.d.ts","sourceRoot":"","sources":["../src/wu-helpers.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAUH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,KAAA,QAIpC;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,GAAG,KAAA,EAAE,IAAI,KAAK,UAMjC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,WAE/B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,WAK5B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,YAM7B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,KAAA,OAQzC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,KAAA;;;;;;;;;;EAqBxC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,KAAA,OAa9B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,KAAA,EAAE,eAAe,WAA6B;;;;EA4B/E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA,UAQhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,KAAA,OAiBjD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAAC,GAAG,KAAA,iBAarC;AAED
|
|
1
|
+
{"version":3,"file":"wu-helpers.d.ts","sourceRoot":"","sources":["../src/wu-helpers.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAUH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,KAAA,QAIpC;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,GAAG,KAAA,EAAE,IAAI,KAAK,UAMjC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,WAE/B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,WAK5B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,YAM7B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,KAAA,OAQzC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,KAAA;;;;;;;;;;EAqBxC;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,KAAA,OAa9B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,KAAA,EAAE,eAAe,WAA6B;;;;EA4B/E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,KAAA,EAAE,OAAO,KAAA,UAQhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,KAAA,OAiBjD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAAC,GAAG,KAAA,iBAarC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,KAAA,EAAE,WAAW,SAAO,EAAE,EAAE,UAAkB,EAAE;;CAAK,iBAU5F"}
|
package/dist/wu-helpers.js
CHANGED
|
@@ -247,9 +247,13 @@ export async function ensureOnMain(git) {
|
|
|
247
247
|
*
|
|
248
248
|
* @param {object} git - Git adapter with async fetch() and getCommitHash() methods
|
|
249
249
|
* @param {string} [scriptName='wu'] - Script name for logging
|
|
250
|
+
* @param {object} [options] - Options
|
|
251
|
+
* @param {boolean} [options.skipRemote=false] - WU-1653: Skip remote check (requireRemote=false)
|
|
250
252
|
* @throws {Error} If main is out of sync with origin
|
|
251
253
|
*/
|
|
252
|
-
export async function ensureMainUpToDate(git, _scriptName = 'wu') {
|
|
254
|
+
export async function ensureMainUpToDate(git, _scriptName = 'wu', { skipRemote = false } = {}) {
|
|
255
|
+
if (skipRemote)
|
|
256
|
+
return;
|
|
253
257
|
await git.fetch(REMOTES.ORIGIN, BRANCHES.MAIN);
|
|
254
258
|
const localMain = await git.getCommitHash(BRANCHES.MAIN);
|
|
255
259
|
const remoteMain = await git.getCommitHash(`${REMOTES.ORIGIN}/${BRANCHES.MAIN}`);
|
package/dist/wu-helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wu-helpers.js","sourceRoot":"","sources":["../src/wu-helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wu-helpers.js","sourceRoot":"","sources":["../src/wu-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/wu-lint.d.ts
CHANGED
|
@@ -5,10 +5,9 @@
|
|
|
5
5
|
* 1. Acceptance criteria cannot reference file paths absent from code_paths
|
|
6
6
|
* 2. Acceptance/code_paths cannot conflict with invariants.yml
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @module tools/lib/wu-lint
|
|
8
|
+
* Shared phase-aware checks are delegated to wu-rules-engine.
|
|
11
9
|
*/
|
|
10
|
+
import { type ValidationPhase } from './wu-rules-engine.js';
|
|
12
11
|
/**
|
|
13
12
|
* Error type constants for WU spec linting
|
|
14
13
|
*/
|
|
@@ -16,32 +15,27 @@ export declare const WU_LINT_ERROR_TYPES: {
|
|
|
16
15
|
ACCEPTANCE_PATH_NOT_IN_CODE_PATHS: string;
|
|
17
16
|
CODE_PATH_CONFLICTS_INVARIANT: string;
|
|
18
17
|
ACCEPTANCE_CONFLICTS_INVARIANT: string;
|
|
19
|
-
/**
|
|
18
|
+
/** CLI registration parity surface missing */
|
|
20
19
|
REGISTRATION_PARITY_MISSING: string;
|
|
20
|
+
/** Backward-compatible key for minimum test intent */
|
|
21
|
+
UNIT_TESTS_REQUIRED: string;
|
|
22
|
+
/** Canonical minimum test intent key */
|
|
23
|
+
MINIMUM_TEST_INTENT_REQUIRED: string;
|
|
21
24
|
};
|
|
22
25
|
/**
|
|
23
|
-
*
|
|
26
|
+
* Registration surface paths required when CLI bin changes.
|
|
24
27
|
*/
|
|
25
28
|
export declare const REGISTRATION_SURFACES: {
|
|
26
29
|
readonly PUBLIC_MANIFEST: "packages/@lumenflow/cli/src/public-manifest.ts";
|
|
27
30
|
readonly MCP_TOOLS: "packages/@lumenflow/mcp/src/tools.ts";
|
|
28
31
|
};
|
|
29
32
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* Only package.json triggers parity checks (indicates new bin entry).
|
|
33
|
-
* Existing CLI source files can have internal changes without needing
|
|
34
|
-
* registration surface updates.
|
|
33
|
+
* Paths historically used to indicate CLI command surface changes.
|
|
34
|
+
* Kept exported for compatibility and docs/tests.
|
|
35
35
|
*/
|
|
36
36
|
export declare const CLI_COMMAND_PATTERNS: string[];
|
|
37
37
|
/**
|
|
38
38
|
* Validate that acceptance criteria only reference paths in code_paths
|
|
39
|
-
*
|
|
40
|
-
* @param {object} wu - WU spec object
|
|
41
|
-
* @param {string} wu.id - WU ID
|
|
42
|
-
* @param {string[]} wu.acceptance - Acceptance criteria
|
|
43
|
-
* @param {string[]} wu.code_paths - Code paths
|
|
44
|
-
* @returns {{valid: boolean, errors: Array<object>}} Validation result
|
|
45
39
|
*/
|
|
46
40
|
export declare function validateAcceptanceCodePaths(wu: any): {
|
|
47
41
|
valid: boolean;
|
|
@@ -49,32 +43,46 @@ export declare function validateAcceptanceCodePaths(wu: any): {
|
|
|
49
43
|
};
|
|
50
44
|
/**
|
|
51
45
|
* Validate that code_paths and acceptance do not conflict with invariants
|
|
52
|
-
*
|
|
53
|
-
* @param {object} wu - WU spec object
|
|
54
|
-
* @param {Array<object>} invariants - Array of invariant definitions
|
|
55
|
-
* @returns {{valid: boolean, errors: Array<object>}} Validation result
|
|
56
46
|
*/
|
|
57
47
|
export declare function validateInvariantsCompliance(wu: any, invariants: any): {
|
|
58
48
|
valid: boolean;
|
|
59
49
|
errors: any[];
|
|
60
50
|
};
|
|
61
51
|
/**
|
|
62
|
-
*
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
* Backward-compatible adapter for minimum test intent.
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateUnitTestsRequirement(wu: {
|
|
55
|
+
id: string;
|
|
56
|
+
type?: string;
|
|
57
|
+
status?: string;
|
|
58
|
+
code_paths?: string[];
|
|
59
|
+
tests?: {
|
|
60
|
+
unit?: string[];
|
|
61
|
+
e2e?: string[];
|
|
62
|
+
integration?: string[];
|
|
63
|
+
manual?: string[];
|
|
64
|
+
};
|
|
65
|
+
}): {
|
|
66
|
+
valid: boolean;
|
|
67
|
+
errors: Array<{
|
|
68
|
+
type: string;
|
|
69
|
+
wuId: string;
|
|
70
|
+
message: string;
|
|
71
|
+
suggestion: string;
|
|
72
|
+
}>;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Adapter for parity surface validation.
|
|
70
76
|
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
77
|
+
* Parity is enforced in reality-phase preflight where git diff context is available.
|
|
78
|
+
* This adapter only enforces when caller explicitly confirms `binChanged`.
|
|
73
79
|
*/
|
|
74
80
|
export declare function validateRegistrationParity(wu: {
|
|
75
81
|
id: string;
|
|
76
82
|
code_paths?: string[];
|
|
77
83
|
status?: string;
|
|
84
|
+
}, options?: {
|
|
85
|
+
binChanged?: boolean;
|
|
78
86
|
}): {
|
|
79
87
|
valid: boolean;
|
|
80
88
|
errors: Array<{
|
|
@@ -83,6 +91,12 @@ export declare function validateRegistrationParity(wu: {
|
|
|
83
91
|
message: string;
|
|
84
92
|
suggestion: string;
|
|
85
93
|
}>;
|
|
94
|
+
warnings?: Array<{
|
|
95
|
+
type: string;
|
|
96
|
+
wuId: string;
|
|
97
|
+
message: string;
|
|
98
|
+
suggestion: string;
|
|
99
|
+
}>;
|
|
86
100
|
};
|
|
87
101
|
/**
|
|
88
102
|
* Options for linting WU spec
|
|
@@ -92,23 +106,25 @@ export interface LintWUSpecOptions {
|
|
|
92
106
|
invariants?: unknown[];
|
|
93
107
|
/** Path to invariants.yml */
|
|
94
108
|
invariantsPath?: string;
|
|
109
|
+
/** Validation phase for shared rule engine */
|
|
110
|
+
phase?: ValidationPhase;
|
|
111
|
+
/** Optional validation context */
|
|
112
|
+
context?: {
|
|
113
|
+
cwd?: string;
|
|
114
|
+
baseRef?: string;
|
|
115
|
+
headRef?: string;
|
|
116
|
+
};
|
|
95
117
|
}
|
|
96
118
|
/**
|
|
97
119
|
* Lint a WU spec against all rules
|
|
98
|
-
*
|
|
99
|
-
* @param {object} wu - WU spec object
|
|
100
|
-
* @param {LintWUSpecOptions} [options={}] - Options
|
|
101
|
-
* @returns {{valid: boolean, errors: Array<object>}} Lint result
|
|
102
120
|
*/
|
|
103
121
|
export declare function lintWUSpec(wu: any, options?: LintWUSpecOptions): {
|
|
104
122
|
valid: boolean;
|
|
105
123
|
errors: any[];
|
|
124
|
+
warnings: any[];
|
|
106
125
|
};
|
|
107
126
|
/**
|
|
108
127
|
* Format lint errors for display
|
|
109
|
-
*
|
|
110
|
-
* @param {Array<object>} errors - Array of lint errors
|
|
111
|
-
* @returns {string} Formatted error message
|
|
112
128
|
*/
|
|
113
129
|
export declare function formatLintErrors(errors: any): string;
|
|
114
130
|
//# sourceMappingURL=wu-lint.d.ts.map
|
package/dist/wu-lint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wu-lint.d.ts","sourceRoot":"","sources":["../src/wu-lint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wu-lint.d.ts","sourceRoot":"","sources":["../src/wu-lint.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;IAI9B,8CAA8C;;IAE9C,sDAAsD;;IAEtD,wCAAwC;;CAEzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,EAA4B,CAAC;AAkDtE;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,KAAA;;;EAyB7C;AAsDD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,KAAA,EAAE,UAAU,KAAA;;;EAe1D;AAwCD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACxF,GAAG;IACF,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF,CAuBA;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,EAAE,EAAE;IACF,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,EACD,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,GACL;IACD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvF,CAkDA;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,kCAAkC;IAClC,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAA,EAAE,OAAO,GAAE,iBAAsB;;;;EAmD7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,KAAA,UAgBtC"}
|
package/dist/wu-lint.js
CHANGED
|
@@ -5,14 +5,13 @@
|
|
|
5
5
|
* 1. Acceptance criteria cannot reference file paths absent from code_paths
|
|
6
6
|
* 2. Acceptance/code_paths cannot conflict with invariants.yml
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @module tools/lib/wu-lint
|
|
8
|
+
* Shared phase-aware checks are delegated to wu-rules-engine.
|
|
11
9
|
*/
|
|
12
10
|
import { existsSync } from 'node:fs';
|
|
13
11
|
import { minimatch } from 'minimatch';
|
|
14
12
|
import { loadInvariants, INVARIANT_TYPES } from './invariants-runner.js';
|
|
15
13
|
import { WU_STATUS } from './wu-constants.js';
|
|
14
|
+
import { CLI_PACKAGE_JSON_PATH, REGISTRATION_SURFACES as RULE_REGISTRATION_SURFACES, RULE_CODES, normalizeValidationIssue, validateWURulesSync, } from './wu-rules-engine.js';
|
|
16
15
|
/**
|
|
17
16
|
* Error type constants for WU spec linting
|
|
18
17
|
*/
|
|
@@ -20,76 +19,59 @@ export const WU_LINT_ERROR_TYPES = {
|
|
|
20
19
|
ACCEPTANCE_PATH_NOT_IN_CODE_PATHS: 'acceptance_path_not_in_code_paths',
|
|
21
20
|
CODE_PATH_CONFLICTS_INVARIANT: 'code_path_conflicts_invariant',
|
|
22
21
|
ACCEPTANCE_CONFLICTS_INVARIANT: 'acceptance_conflicts_invariant',
|
|
23
|
-
/**
|
|
22
|
+
/** CLI registration parity surface missing */
|
|
24
23
|
REGISTRATION_PARITY_MISSING: 'registration_parity_missing',
|
|
24
|
+
/** Backward-compatible key for minimum test intent */
|
|
25
|
+
UNIT_TESTS_REQUIRED: 'unit_tests_required',
|
|
26
|
+
/** Canonical minimum test intent key */
|
|
27
|
+
MINIMUM_TEST_INTENT_REQUIRED: 'minimum_test_intent_required',
|
|
25
28
|
};
|
|
26
29
|
/**
|
|
27
|
-
*
|
|
30
|
+
* Registration surface paths required when CLI bin changes.
|
|
28
31
|
*/
|
|
29
32
|
export const REGISTRATION_SURFACES = {
|
|
30
|
-
PUBLIC_MANIFEST:
|
|
31
|
-
MCP_TOOLS:
|
|
33
|
+
PUBLIC_MANIFEST: RULE_REGISTRATION_SURFACES.PUBLIC_MANIFEST,
|
|
34
|
+
MCP_TOOLS: RULE_REGISTRATION_SURFACES.MCP_TOOLS,
|
|
32
35
|
};
|
|
33
36
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* Only package.json triggers parity checks (indicates new bin entry).
|
|
37
|
-
* Existing CLI source files can have internal changes without needing
|
|
38
|
-
* registration surface updates.
|
|
37
|
+
* Paths historically used to indicate CLI command surface changes.
|
|
38
|
+
* Kept exported for compatibility and docs/tests.
|
|
39
39
|
*/
|
|
40
|
-
export const CLI_COMMAND_PATTERNS = [
|
|
40
|
+
export const CLI_COMMAND_PATTERNS = [CLI_PACKAGE_JSON_PATH];
|
|
41
41
|
/**
|
|
42
42
|
* WU-1504: Patterns that exclude files from parity check trigger.
|
|
43
|
-
*
|
|
44
|
-
* do not imply a new command registration.
|
|
43
|
+
* Kept for backwards compatibility; parity is now reality-phase + diff-aware.
|
|
45
44
|
*/
|
|
46
45
|
const CLI_COMMAND_EXCLUDE_PATTERNS = [
|
|
47
46
|
'__tests__/',
|
|
48
47
|
'/lib/',
|
|
49
48
|
'/shared/',
|
|
50
49
|
'/commands/',
|
|
51
|
-
// WU-1518: init.ts is scaffolding logic, not a CLI command registration
|
|
52
50
|
'/init.ts',
|
|
53
51
|
REGISTRATION_SURFACES.PUBLIC_MANIFEST,
|
|
54
52
|
REGISTRATION_SURFACES.MCP_TOOLS,
|
|
55
53
|
];
|
|
56
54
|
/**
|
|
57
55
|
* Regex to detect file paths in acceptance criteria text
|
|
58
|
-
* Matches patterns like: apps/web/src/file.ts, tools/lib/helper.ts
|
|
59
|
-
* Uses explicit character sets to avoid regex backtracking issues
|
|
60
56
|
*/
|
|
61
57
|
const FILE_PATH_PATTERN = /(?:^|[\s'"`])([a-zA-Z0-9_-]+\/[a-zA-Z0-9_./-]+\.[a-zA-Z0-9]+)/g;
|
|
62
|
-
/**
|
|
63
|
-
* Extract file paths from acceptance criteria text
|
|
64
|
-
*
|
|
65
|
-
* @param {string} text - Acceptance criterion text
|
|
66
|
-
* @returns {string[]} Array of file paths found
|
|
67
|
-
*/
|
|
68
58
|
function extractFilePaths(text) {
|
|
69
59
|
const paths = [];
|
|
70
60
|
let match;
|
|
71
61
|
while ((match = FILE_PATH_PATTERN.exec(text)) !== null) {
|
|
72
62
|
paths.push(match[1]);
|
|
73
63
|
}
|
|
74
|
-
// Reset regex state
|
|
75
64
|
FILE_PATH_PATTERN.lastIndex = 0;
|
|
76
65
|
return paths;
|
|
77
66
|
}
|
|
78
67
|
/**
|
|
79
68
|
* Check if a file path matches any pattern in code_paths
|
|
80
|
-
* Supports glob patterns (e.g., apps/web/src/**\/*.ts)
|
|
81
|
-
*
|
|
82
|
-
* @param {string} filePath - File path to check
|
|
83
|
-
* @param {string[]} codePaths - Array of code_paths (may include globs)
|
|
84
|
-
* @returns {boolean} True if path matches any code_paths pattern
|
|
85
69
|
*/
|
|
86
70
|
function pathMatchesCodePaths(filePath, codePaths) {
|
|
87
71
|
for (const pattern of codePaths) {
|
|
88
|
-
// Exact match
|
|
89
72
|
if (filePath === pattern) {
|
|
90
73
|
return true;
|
|
91
74
|
}
|
|
92
|
-
// Glob match
|
|
93
75
|
if (minimatch(filePath, pattern)) {
|
|
94
76
|
return true;
|
|
95
77
|
}
|
|
@@ -98,12 +80,6 @@ function pathMatchesCodePaths(filePath, codePaths) {
|
|
|
98
80
|
}
|
|
99
81
|
/**
|
|
100
82
|
* Validate that acceptance criteria only reference paths in code_paths
|
|
101
|
-
*
|
|
102
|
-
* @param {object} wu - WU spec object
|
|
103
|
-
* @param {string} wu.id - WU ID
|
|
104
|
-
* @param {string[]} wu.acceptance - Acceptance criteria
|
|
105
|
-
* @param {string[]} wu.code_paths - Code paths
|
|
106
|
-
* @returns {{valid: boolean, errors: Array<object>}} Validation result
|
|
107
83
|
*/
|
|
108
84
|
export function validateAcceptanceCodePaths(wu) {
|
|
109
85
|
const { id, acceptance = [], code_paths = [] } = wu;
|
|
@@ -128,17 +104,9 @@ export function validateAcceptanceCodePaths(wu) {
|
|
|
128
104
|
errors,
|
|
129
105
|
};
|
|
130
106
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Check forbidden-file invariant for conflicts
|
|
133
|
-
*
|
|
134
|
-
* @param {object} invariant - Invariant definition
|
|
135
|
-
* @param {object} wu - WU spec object
|
|
136
|
-
* @returns {Array<object>} Array of errors (empty if no conflicts)
|
|
137
|
-
*/
|
|
138
107
|
function checkForbiddenFileInvariant(invariant, wu) {
|
|
139
108
|
const { id, acceptance = [], code_paths = [] } = wu;
|
|
140
109
|
const errors = [];
|
|
141
|
-
// Check if code_paths includes the forbidden file
|
|
142
110
|
if (code_paths.includes(invariant.path)) {
|
|
143
111
|
errors.push({
|
|
144
112
|
type: WU_LINT_ERROR_TYPES.CODE_PATH_CONFLICTS_INVARIANT,
|
|
@@ -149,7 +117,6 @@ function checkForbiddenFileInvariant(invariant, wu) {
|
|
|
149
117
|
suggestion: invariant.message || `Remove '${invariant.path}' from code_paths`,
|
|
150
118
|
});
|
|
151
119
|
}
|
|
152
|
-
// Check if acceptance mentions creating the forbidden file
|
|
153
120
|
for (const criterion of acceptance) {
|
|
154
121
|
if (criterion.includes(invariant.path)) {
|
|
155
122
|
errors.push({
|
|
@@ -165,17 +132,9 @@ function checkForbiddenFileInvariant(invariant, wu) {
|
|
|
165
132
|
}
|
|
166
133
|
return errors;
|
|
167
134
|
}
|
|
168
|
-
/**
|
|
169
|
-
* Check mutual-exclusivity invariant for conflicts
|
|
170
|
-
*
|
|
171
|
-
* @param {object} invariant - Invariant definition
|
|
172
|
-
* @param {object} wu - WU spec object
|
|
173
|
-
* @returns {Array<object>} Array of errors (empty if no conflicts)
|
|
174
|
-
*/
|
|
175
135
|
function checkMutualExclusivityInvariant(invariant, wu) {
|
|
176
136
|
const { id, code_paths = [] } = wu;
|
|
177
137
|
const errors = [];
|
|
178
|
-
// Check if code_paths includes multiple files from the mutual-exclusivity set
|
|
179
138
|
const conflictingPaths = invariant.paths.filter((p) => code_paths.includes(p));
|
|
180
139
|
if (conflictingPaths.length > 1) {
|
|
181
140
|
errors.push({
|
|
@@ -191,10 +150,6 @@ function checkMutualExclusivityInvariant(invariant, wu) {
|
|
|
191
150
|
}
|
|
192
151
|
/**
|
|
193
152
|
* Validate that code_paths and acceptance do not conflict with invariants
|
|
194
|
-
*
|
|
195
|
-
* @param {object} wu - WU spec object
|
|
196
|
-
* @param {Array<object>} invariants - Array of invariant definitions
|
|
197
|
-
* @returns {{valid: boolean, errors: Array<object>}} Validation result
|
|
198
153
|
*/
|
|
199
154
|
export function validateInvariantsCompliance(wu, invariants) {
|
|
200
155
|
const errors = [];
|
|
@@ -212,12 +167,7 @@ export function validateInvariantsCompliance(wu, invariants) {
|
|
|
212
167
|
};
|
|
213
168
|
}
|
|
214
169
|
/**
|
|
215
|
-
*
|
|
216
|
-
* change that would require registration in public-manifest and MCP tools.
|
|
217
|
-
*
|
|
218
|
-
* A path triggers parity checks if it:
|
|
219
|
-
* 1. Matches any CLI_COMMAND_PATTERNS prefix
|
|
220
|
-
* 2. Does NOT match any exclusion pattern (tests, lib, shared, etc.)
|
|
170
|
+
* Legacy parity trigger helper kept for compatibility tests/docs.
|
|
221
171
|
*/
|
|
222
172
|
function isCliCommandPath(codePath) {
|
|
223
173
|
const matchesCommand = CLI_COMMAND_PATTERNS.some((pattern) => codePath.includes(pattern));
|
|
@@ -226,10 +176,6 @@ function isCliCommandPath(codePath) {
|
|
|
226
176
|
const isExcluded = CLI_COMMAND_EXCLUDE_PATTERNS.some((pattern) => codePath.includes(pattern));
|
|
227
177
|
return !isExcluded;
|
|
228
178
|
}
|
|
229
|
-
/**
|
|
230
|
-
* WU-1504: Terminal WU statuses that should skip parity validation.
|
|
231
|
-
* Matches the same set used by WU-1384 for completeness check skipping.
|
|
232
|
-
*/
|
|
233
179
|
const TERMINAL_STATUSES = new Set([
|
|
234
180
|
WU_STATUS.DONE,
|
|
235
181
|
WU_STATUS.CANCELLED,
|
|
@@ -237,68 +183,102 @@ const TERMINAL_STATUSES = new Set([
|
|
|
237
183
|
WU_STATUS.ABANDONED,
|
|
238
184
|
WU_STATUS.SUPERSEDED,
|
|
239
185
|
]);
|
|
186
|
+
const LINT_TYPE_BY_RULE_CODE = {
|
|
187
|
+
[RULE_CODES.MINIMUM_TEST_INTENT]: WU_LINT_ERROR_TYPES.MINIMUM_TEST_INTENT_REQUIRED,
|
|
188
|
+
[RULE_CODES.PARITY_MISSING_SURFACE]: WU_LINT_ERROR_TYPES.REGISTRATION_PARITY_MISSING,
|
|
189
|
+
};
|
|
190
|
+
function toLintIssue(wuId, issue) {
|
|
191
|
+
const normalized = normalizeValidationIssue(issue, {
|
|
192
|
+
wuId,
|
|
193
|
+
typeByCode: LINT_TYPE_BY_RULE_CODE,
|
|
194
|
+
});
|
|
195
|
+
return {
|
|
196
|
+
type: normalized.type,
|
|
197
|
+
wuId,
|
|
198
|
+
message: normalized.message,
|
|
199
|
+
suggestion: normalized.suggestion,
|
|
200
|
+
};
|
|
201
|
+
}
|
|
240
202
|
/**
|
|
241
|
-
*
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
203
|
+
* Backward-compatible adapter for minimum test intent.
|
|
204
|
+
*/
|
|
205
|
+
export function validateUnitTestsRequirement(wu) {
|
|
206
|
+
const result = validateWURulesSync({
|
|
207
|
+
id: wu.id,
|
|
208
|
+
type: wu.type,
|
|
209
|
+
status: wu.status,
|
|
210
|
+
code_paths: wu.code_paths,
|
|
211
|
+
tests: wu.tests,
|
|
212
|
+
}, { phase: 'structural' });
|
|
213
|
+
const errors = result.errors
|
|
214
|
+
.filter((issue) => issue.code === RULE_CODES.MINIMUM_TEST_INTENT)
|
|
215
|
+
.map((issue) => ({
|
|
216
|
+
...toLintIssue(wu.id, issue),
|
|
217
|
+
type: WU_LINT_ERROR_TYPES.UNIT_TESTS_REQUIRED,
|
|
218
|
+
}));
|
|
219
|
+
return {
|
|
220
|
+
valid: errors.length === 0,
|
|
221
|
+
errors,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Adapter for parity surface validation.
|
|
249
226
|
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
227
|
+
* Parity is enforced in reality-phase preflight where git diff context is available.
|
|
228
|
+
* This adapter only enforces when caller explicitly confirms `binChanged`.
|
|
252
229
|
*/
|
|
253
|
-
export function validateRegistrationParity(wu) {
|
|
230
|
+
export function validateRegistrationParity(wu, options = {}) {
|
|
254
231
|
const { id, code_paths = [], status } = wu;
|
|
255
232
|
const errors = [];
|
|
256
|
-
|
|
233
|
+
const warnings = [];
|
|
257
234
|
if (status && TERMINAL_STATUSES.has(status)) {
|
|
258
|
-
return { valid: true, errors };
|
|
235
|
+
return { valid: true, errors, warnings };
|
|
259
236
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
237
|
+
if (!options.binChanged) {
|
|
238
|
+
const hasCliCommandPath = code_paths.some((p) => isCliCommandPath(p));
|
|
239
|
+
if (hasCliCommandPath) {
|
|
240
|
+
warnings.push({
|
|
241
|
+
type: WU_LINT_ERROR_TYPES.REGISTRATION_PARITY_MISSING,
|
|
242
|
+
wuId: id,
|
|
243
|
+
message: 'Parity check requires diff context and is enforced in reality phase (wu:prep/wu:done preflight).',
|
|
244
|
+
suggestion: 'Run wu:prep or wu:done preflight to evaluate bin-diff-aware registration parity.',
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
return { valid: true, errors, warnings };
|
|
264
248
|
}
|
|
265
|
-
// Check for missing registration surfaces
|
|
266
249
|
const hasPublicManifest = code_paths.includes(REGISTRATION_SURFACES.PUBLIC_MANIFEST);
|
|
267
250
|
const hasMcpTools = code_paths.includes(REGISTRATION_SURFACES.MCP_TOOLS);
|
|
268
251
|
if (!hasPublicManifest) {
|
|
269
252
|
errors.push({
|
|
270
253
|
type: WU_LINT_ERROR_TYPES.REGISTRATION_PARITY_MISSING,
|
|
271
254
|
wuId: id,
|
|
272
|
-
message: `CLI
|
|
273
|
-
suggestion: `Add '${REGISTRATION_SURFACES.PUBLIC_MANIFEST}' to code_paths
|
|
255
|
+
message: `CLI bin change detected but '${REGISTRATION_SURFACES.PUBLIC_MANIFEST}' is not in code_paths`,
|
|
256
|
+
suggestion: `Add '${REGISTRATION_SURFACES.PUBLIC_MANIFEST}' to code_paths`,
|
|
274
257
|
});
|
|
275
258
|
}
|
|
276
259
|
if (!hasMcpTools) {
|
|
277
260
|
errors.push({
|
|
278
261
|
type: WU_LINT_ERROR_TYPES.REGISTRATION_PARITY_MISSING,
|
|
279
262
|
wuId: id,
|
|
280
|
-
message: `CLI
|
|
281
|
-
suggestion: `Add '${REGISTRATION_SURFACES.MCP_TOOLS}' to code_paths
|
|
263
|
+
message: `CLI bin change detected but '${REGISTRATION_SURFACES.MCP_TOOLS}' is not in code_paths`,
|
|
264
|
+
suggestion: `Add '${REGISTRATION_SURFACES.MCP_TOOLS}' to code_paths`,
|
|
282
265
|
});
|
|
283
266
|
}
|
|
284
267
|
return {
|
|
285
268
|
valid: errors.length === 0,
|
|
286
269
|
errors,
|
|
270
|
+
warnings,
|
|
287
271
|
};
|
|
288
272
|
}
|
|
289
273
|
/**
|
|
290
274
|
* Lint a WU spec against all rules
|
|
291
|
-
*
|
|
292
|
-
* @param {object} wu - WU spec object
|
|
293
|
-
* @param {LintWUSpecOptions} [options={}] - Options
|
|
294
|
-
* @returns {{valid: boolean, errors: Array<object>}} Lint result
|
|
295
275
|
*/
|
|
296
276
|
export function lintWUSpec(wu, options = {}) {
|
|
297
277
|
const allErrors = [];
|
|
298
|
-
|
|
278
|
+
const allWarnings = [];
|
|
279
|
+
const phase = options.phase || 'structural';
|
|
299
280
|
const acceptanceResult = validateAcceptanceCodePaths(wu);
|
|
300
281
|
allErrors.push(...acceptanceResult.errors);
|
|
301
|
-
// 2. Load invariants if not provided
|
|
302
282
|
let invariants = options.invariants || [];
|
|
303
283
|
if (!options.invariants && options.invariantsPath) {
|
|
304
284
|
try {
|
|
@@ -307,27 +287,37 @@ export function lintWUSpec(wu, options = {}) {
|
|
|
307
287
|
}
|
|
308
288
|
}
|
|
309
289
|
catch {
|
|
310
|
-
//
|
|
290
|
+
// Continue without invariants when loading fails.
|
|
311
291
|
}
|
|
312
292
|
}
|
|
313
|
-
// 3. Validate invariants compliance
|
|
314
293
|
if (invariants.length > 0) {
|
|
315
294
|
const invariantsResult = validateInvariantsCompliance(wu, invariants);
|
|
316
295
|
allErrors.push(...invariantsResult.errors);
|
|
317
296
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
297
|
+
const rulesResult = validateWURulesSync({
|
|
298
|
+
id: wu.id,
|
|
299
|
+
type: wu.type,
|
|
300
|
+
status: wu.status,
|
|
301
|
+
code_paths: wu.code_paths,
|
|
302
|
+
tests: wu.tests || wu.test_paths,
|
|
303
|
+
cwd: options.context?.cwd,
|
|
304
|
+
baseRef: options.context?.baseRef,
|
|
305
|
+
headRef: options.context?.headRef,
|
|
306
|
+
}, { phase });
|
|
307
|
+
for (const issue of rulesResult.errors) {
|
|
308
|
+
allErrors.push(toLintIssue(wu.id, issue));
|
|
309
|
+
}
|
|
310
|
+
for (const issue of rulesResult.warnings) {
|
|
311
|
+
allWarnings.push(toLintIssue(wu.id, issue));
|
|
312
|
+
}
|
|
321
313
|
return {
|
|
322
314
|
valid: allErrors.length === 0,
|
|
323
315
|
errors: allErrors,
|
|
316
|
+
warnings: allWarnings,
|
|
324
317
|
};
|
|
325
318
|
}
|
|
326
319
|
/**
|
|
327
320
|
* Format lint errors for display
|
|
328
|
-
*
|
|
329
|
-
* @param {Array<object>} errors - Array of lint errors
|
|
330
|
-
* @returns {string} Formatted error message
|
|
331
321
|
*/
|
|
332
322
|
export function formatLintErrors(errors) {
|
|
333
323
|
if (errors.length === 0) {
|