@lumenflow/cli 2.12.0 → 2.14.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/README.md +105 -105
- package/dist/gates-graceful-degradation.js +151 -0
- package/dist/gates-graceful-degradation.js.map +1 -0
- package/dist/gates.js +90 -5
- package/dist/gates.js.map +1 -1
- package/dist/hooks/enforcement-checks.js +104 -37
- package/dist/hooks/enforcement-checks.js.map +1 -1
- package/dist/hooks/enforcement-generator.js +229 -28
- package/dist/hooks/enforcement-generator.js.map +1 -1
- package/dist/hooks/enforcement-sync.js +4 -1
- package/dist/hooks/enforcement-sync.js.map +1 -1
- package/dist/init.js +160 -13
- package/dist/init.js.map +1 -1
- package/dist/initiative-edit.js +3 -2
- package/dist/initiative-edit.js.map +1 -1
- package/dist/lifecycle-regression-harness.js +179 -0
- package/dist/lifecycle-regression-harness.js.map +1 -0
- package/dist/mem-recover.js +0 -0
- package/dist/public-manifest.js +7 -0
- package/dist/public-manifest.js.map +1 -1
- package/dist/wu-claim-mode.js +80 -0
- package/dist/wu-claim-mode.js.map +1 -0
- package/dist/wu-claim.js +163 -9
- package/dist/wu-claim.js.map +1 -1
- package/dist/wu-create.js +5 -1
- package/dist/wu-create.js.map +1 -1
- package/dist/wu-delete.js +196 -60
- package/dist/wu-delete.js.map +1 -1
- package/dist/wu-done.js +99 -17
- package/dist/wu-done.js.map +1 -1
- package/dist/wu-edit.js +5 -4
- package/dist/wu-edit.js.map +1 -1
- package/dist/wu-prep.js +122 -27
- package/dist/wu-prep.js.map +1 -1
- package/package.json +7 -6
- package/templates/vendors/claude/.claude/hooks/enforce-worktree.sh +78 -17
- package/templates/vendors/claude/.claude/hooks/session-start-recovery.sh +30 -0
package/dist/wu-prep.js
CHANGED
|
@@ -9,12 +9,19 @@
|
|
|
9
9
|
* (not caused by the current WU), prints a ready-to-copy wu:done --skip-gates
|
|
10
10
|
* command with reason and fix-wu placeholders.
|
|
11
11
|
*
|
|
12
|
+
* WU-1493: Adds branch-pr mode support. When a WU has claimed_mode: branch-pr,
|
|
13
|
+
* wu:prep reads the mode before rejecting non-worktree locations, validates that
|
|
14
|
+
* the current branch matches the expected lane branch, and outputs PR-based
|
|
15
|
+
* completion next steps on success.
|
|
16
|
+
*
|
|
12
17
|
* Workflow:
|
|
13
|
-
* 1.
|
|
14
|
-
* 2.
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
+
* 1. Read WU YAML to check claimed_mode
|
|
19
|
+
* 2. For worktree mode: verify we're in a worktree (error if in main checkout)
|
|
20
|
+
* For branch-pr mode: verify we're on the correct lane branch
|
|
21
|
+
* 3. Run gates
|
|
22
|
+
* 4. If gates fail, check if failures are pre-existing on main
|
|
23
|
+
* 5. If pre-existing, print skip-gates command; otherwise, print fix guidance
|
|
24
|
+
* 6. On success, print mode-appropriate next steps
|
|
18
25
|
*
|
|
19
26
|
* Usage:
|
|
20
27
|
* pnpm wu:prep --id WU-XXX [--docs-only]
|
|
@@ -30,7 +37,9 @@ import { die } from '@lumenflow/core/dist/error-handler.js';
|
|
|
30
37
|
import { resolveLocation } from '@lumenflow/core/dist/context/location-resolver.js';
|
|
31
38
|
import { readWU } from '@lumenflow/core/dist/wu-yaml.js';
|
|
32
39
|
import { WU_PATHS } from '@lumenflow/core/dist/wu-paths.js';
|
|
33
|
-
import { CONTEXT_VALIDATION, PATTERNS, EXIT_CODES, WU_STATUS, EMOJI, } from '@lumenflow/core/dist/wu-constants.js';
|
|
40
|
+
import { CONTEXT_VALIDATION, PATTERNS, EXIT_CODES, WU_STATUS, EMOJI, CLAIMED_MODES, } from '@lumenflow/core/dist/wu-constants.js';
|
|
41
|
+
import { defaultBranchFrom } from '@lumenflow/core/dist/wu-done-paths.js';
|
|
42
|
+
import { getCurrentBranch } from '@lumenflow/core/dist/wu-helpers.js';
|
|
34
43
|
import { runGates } from './gates.js';
|
|
35
44
|
const { LOCATION_TYPES } = CONTEXT_VALIDATION;
|
|
36
45
|
/**
|
|
@@ -205,6 +214,57 @@ export async function checkPreExistingFailures(options) {
|
|
|
205
214
|
};
|
|
206
215
|
}
|
|
207
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* WU-1493: Check if a WU doc uses branch-pr claimed mode.
|
|
219
|
+
*
|
|
220
|
+
* @param doc - Partial WU YAML document (needs claimed_mode field)
|
|
221
|
+
* @returns true if claimed_mode is 'branch-pr'
|
|
222
|
+
*/
|
|
223
|
+
export function isBranchPrMode(doc) {
|
|
224
|
+
return doc.claimed_mode === CLAIMED_MODES.BRANCH_PR;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* WU-1493: Validate that the current git branch matches the expected lane branch
|
|
228
|
+
* for branch-pr mode.
|
|
229
|
+
*
|
|
230
|
+
* @param options - Branch comparison options
|
|
231
|
+
* @param options.currentBranch - The currently checked-out branch
|
|
232
|
+
* @param options.expectedBranch - The expected lane branch (e.g., lane/framework-cli/wu-1493)
|
|
233
|
+
* @returns Validation result with valid flag and optional error message
|
|
234
|
+
*/
|
|
235
|
+
export function validateBranchPrBranch(options) {
|
|
236
|
+
const { currentBranch, expectedBranch } = options;
|
|
237
|
+
if (currentBranch === expectedBranch) {
|
|
238
|
+
return { valid: true };
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
valid: false,
|
|
242
|
+
error: `Current branch '${currentBranch}' does not match expected lane branch '${expectedBranch}'.\n\n` +
|
|
243
|
+
`Switch to the lane branch first:\n` +
|
|
244
|
+
` git checkout ${expectedBranch}`,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* WU-1493: Format success message for branch-pr mode.
|
|
249
|
+
* Shows PR-based completion next steps instead of wu:done.
|
|
250
|
+
*
|
|
251
|
+
* @param options - Message options
|
|
252
|
+
* @param options.wuId - The WU ID
|
|
253
|
+
* @param options.laneBranch - The lane branch name
|
|
254
|
+
* @returns Formatted success message string
|
|
255
|
+
*/
|
|
256
|
+
export function formatBranchPrSuccessMessage(options) {
|
|
257
|
+
const { wuId, laneBranch } = options;
|
|
258
|
+
return (`${PREP_PREFIX} ${EMOJI.SUCCESS} ${wuId}: Prep completed successfully!\n` +
|
|
259
|
+
`\n` +
|
|
260
|
+
`${PREP_PREFIX} Gates passed on branch ${laneBranch}.\n` +
|
|
261
|
+
`\n` +
|
|
262
|
+
`${PREP_PREFIX} Next steps for branch-pr mode:\n` +
|
|
263
|
+
`\n` +
|
|
264
|
+
` 1. Push the branch: git push origin ${laneBranch}\n` +
|
|
265
|
+
` 2. Create a PR: gh pr create --base main --head ${laneBranch}\n` +
|
|
266
|
+
` 3. After PR merge: pnpm wu:cleanup --id ${wuId}\n`);
|
|
267
|
+
}
|
|
208
268
|
/**
|
|
209
269
|
* Print success message with copy-paste instruction.
|
|
210
270
|
*/
|
|
@@ -237,21 +297,8 @@ async function main() {
|
|
|
237
297
|
}
|
|
238
298
|
// Detect location
|
|
239
299
|
const location = await resolveLocation();
|
|
240
|
-
// WU-
|
|
241
|
-
|
|
242
|
-
die(`${EMOJI.FAILURE} wu:prep must be run from a worktree, not ${location.type}.\n\n` +
|
|
243
|
-
`Current location: ${location.cwd}\n\n` +
|
|
244
|
-
`If you have a worktree for ${id}, navigate to it first:\n` +
|
|
245
|
-
` cd worktrees/<lane>-${id.toLowerCase()}\n\n` +
|
|
246
|
-
`If you don't have a worktree yet, claim the WU first:\n` +
|
|
247
|
-
` pnpm wu:claim --id ${id} --lane "<lane>"`);
|
|
248
|
-
}
|
|
249
|
-
// Verify the worktree is for the correct WU
|
|
250
|
-
if (location.worktreeWuId && location.worktreeWuId !== id) {
|
|
251
|
-
console.warn(`${PREP_PREFIX} ${EMOJI.WARNING} Worktree is for ${location.worktreeWuId}, but you specified ${id}.`);
|
|
252
|
-
console.warn(`${PREP_PREFIX} Proceeding with ${id} as specified.`);
|
|
253
|
-
}
|
|
254
|
-
// Read WU YAML to validate it exists and check status
|
|
300
|
+
// WU-1493: Read WU YAML early to check claimed_mode BEFORE location rejection.
|
|
301
|
+
// This allows branch-pr WUs to run from main checkout on the lane branch.
|
|
255
302
|
const wuPath = WU_PATHS.WU(id);
|
|
256
303
|
let doc;
|
|
257
304
|
try {
|
|
@@ -263,6 +310,47 @@ async function main() {
|
|
|
263
310
|
` 1. Check if WU file exists: ls -la ${wuPath}\n` +
|
|
264
311
|
` 2. Validate YAML syntax: pnpm wu:validate --id ${id}`);
|
|
265
312
|
}
|
|
313
|
+
const branchPr = isBranchPrMode(doc);
|
|
314
|
+
// WU-1223 + WU-1493: Location validation
|
|
315
|
+
// For branch-pr mode: allow running from main checkout on the correct lane branch
|
|
316
|
+
// For worktree mode: must be in a worktree (original behavior)
|
|
317
|
+
if (branchPr) {
|
|
318
|
+
// WU-1493: branch-pr mode - validate we're on the correct lane branch
|
|
319
|
+
const expectedBranch = defaultBranchFrom(doc);
|
|
320
|
+
const currentBranch = getCurrentBranch();
|
|
321
|
+
if (!expectedBranch) {
|
|
322
|
+
die(`${EMOJI.FAILURE} Cannot determine lane branch for ${id}.\n\n` +
|
|
323
|
+
`Check that the WU has a valid lane and id in its YAML spec.`);
|
|
324
|
+
}
|
|
325
|
+
if (!currentBranch) {
|
|
326
|
+
die(`${EMOJI.FAILURE} Cannot determine current git branch.\n\n` +
|
|
327
|
+
`Ensure you are in a git repository.`);
|
|
328
|
+
}
|
|
329
|
+
const branchCheck = validateBranchPrBranch({
|
|
330
|
+
currentBranch,
|
|
331
|
+
expectedBranch,
|
|
332
|
+
});
|
|
333
|
+
if (!branchCheck.valid) {
|
|
334
|
+
die(`${EMOJI.FAILURE} ${branchCheck.error}`);
|
|
335
|
+
}
|
|
336
|
+
console.log(`${PREP_PREFIX} branch-pr mode detected for ${id}`);
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
// Original worktree-only behavior
|
|
340
|
+
if (location.type !== LOCATION_TYPES.WORKTREE) {
|
|
341
|
+
die(`${EMOJI.FAILURE} wu:prep must be run from a worktree, not ${location.type}.\n\n` +
|
|
342
|
+
`Current location: ${location.cwd}\n\n` +
|
|
343
|
+
`If you have a worktree for ${id}, navigate to it first:\n` +
|
|
344
|
+
` cd worktrees/<lane>-${id.toLowerCase()}\n\n` +
|
|
345
|
+
`If you don't have a worktree yet, claim the WU first:\n` +
|
|
346
|
+
` pnpm wu:claim --id ${id} --lane "<lane>"`);
|
|
347
|
+
}
|
|
348
|
+
// Verify the worktree is for the correct WU
|
|
349
|
+
if (location.worktreeWuId && location.worktreeWuId !== id) {
|
|
350
|
+
console.warn(`${PREP_PREFIX} ${EMOJI.WARNING} Worktree is for ${location.worktreeWuId}, but you specified ${id}.`);
|
|
351
|
+
console.warn(`${PREP_PREFIX} Proceeding with ${id} as specified.`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
266
354
|
// Validate WU status is in_progress
|
|
267
355
|
if (doc.status !== WU_STATUS.IN_PROGRESS) {
|
|
268
356
|
die(`${EMOJI.FAILURE} WU ${id} status is '${doc.status}', expected '${WU_STATUS.IN_PROGRESS}'.\n\n` +
|
|
@@ -313,8 +401,8 @@ async function main() {
|
|
|
313
401
|
console.log(`${PREP_PREFIX} No pre-existing failures on main.`);
|
|
314
402
|
}
|
|
315
403
|
console.log('');
|
|
316
|
-
// Run gates
|
|
317
|
-
console.log(`${PREP_PREFIX} Running gates
|
|
404
|
+
// Run gates
|
|
405
|
+
console.log(`${PREP_PREFIX} Running gates...`);
|
|
318
406
|
const gatesResult = await runGates({
|
|
319
407
|
cwd: location.cwd,
|
|
320
408
|
docsOnly: args.docsOnly,
|
|
@@ -324,14 +412,21 @@ async function main() {
|
|
|
324
412
|
// the exit handler above will print the skip-gates command.
|
|
325
413
|
// Otherwise, tell the user to fix the failures.
|
|
326
414
|
if (!hasPreExistingOnly) {
|
|
327
|
-
die(`${EMOJI.FAILURE} Gates failed
|
|
328
|
-
`Fix the gate failures and run wu:prep again.`);
|
|
415
|
+
die(`${EMOJI.FAILURE} Gates failed.\n\n` + `Fix the gate failures and run wu:prep again.`);
|
|
329
416
|
}
|
|
330
417
|
// Pre-existing failures - exit with error, handler will print skip-gates command
|
|
331
418
|
process.exit(EXIT_CODES.ERROR);
|
|
332
419
|
}
|
|
333
|
-
// Success - print
|
|
334
|
-
|
|
420
|
+
// WU-1493: Success - print mode-appropriate message
|
|
421
|
+
if (branchPr) {
|
|
422
|
+
const laneBranch = defaultBranchFrom(doc) ?? '';
|
|
423
|
+
const message = formatBranchPrSuccessMessage({ wuId: id, laneBranch });
|
|
424
|
+
console.log('');
|
|
425
|
+
console.log(message);
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
printSuccessMessage(id, location.mainCheckout);
|
|
429
|
+
}
|
|
335
430
|
}
|
|
336
431
|
// WU-1181: Use import.meta.main instead of process.argv[1] comparison
|
|
337
432
|
// The old pattern fails with pnpm symlinks because process.argv[1] is the symlink
|
package/dist/wu-prep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wu-prep.js","sourceRoot":"","sources":["../src/wu-prep.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wu-prep.js","sourceRoot":"","sources":["../src/wu-prep.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lumenflow/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.14.0",
|
|
4
4
|
"description": "Command-line interface for LumenFlow workflow framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lumenflow",
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
"mem-summarize": "./dist/mem-summarize.js",
|
|
70
70
|
"mem-triage": "./dist/mem-triage.js",
|
|
71
71
|
"mem-delete": "./dist/mem-delete.js",
|
|
72
|
+
"mem-recover": "./dist/mem-recover.js",
|
|
72
73
|
"initiative-create": "./dist/initiative-create.js",
|
|
73
74
|
"initiative-edit": "./dist/initiative-edit.js",
|
|
74
75
|
"initiative-list": "./dist/initiative-list.js",
|
|
@@ -139,11 +140,11 @@
|
|
|
139
140
|
"pretty-ms": "^9.2.0",
|
|
140
141
|
"simple-git": "^3.30.0",
|
|
141
142
|
"yaml": "^2.8.2",
|
|
142
|
-
"@lumenflow/
|
|
143
|
-
"@lumenflow/metrics": "2.
|
|
144
|
-
"@lumenflow/
|
|
145
|
-
"@lumenflow/memory": "2.
|
|
146
|
-
"@lumenflow/
|
|
143
|
+
"@lumenflow/agent": "2.14.0",
|
|
144
|
+
"@lumenflow/metrics": "2.14.0",
|
|
145
|
+
"@lumenflow/initiatives": "2.14.0",
|
|
146
|
+
"@lumenflow/memory": "2.14.0",
|
|
147
|
+
"@lumenflow/core": "2.14.0"
|
|
147
148
|
},
|
|
148
149
|
"devDependencies": {
|
|
149
150
|
"@vitest/coverage-v8": "^4.0.17",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
#
|
|
3
|
-
# enforce-worktree.sh
|
|
3
|
+
# enforce-worktree.sh (WU-1501)
|
|
4
4
|
#
|
|
5
5
|
# Claude PreToolUse hook that blocks Write/Edit operations on main branch.
|
|
6
|
+
# Fail-closed: blocks even when no worktrees exist (no unguarded main writes).
|
|
6
7
|
#
|
|
7
8
|
# This hook enforces worktree discipline for Claude Code specifically,
|
|
8
9
|
# complementing the git pre-commit hook for stronger enforcement.
|
|
@@ -11,14 +12,17 @@
|
|
|
11
12
|
# 0 = Allow operation
|
|
12
13
|
# 2 = Block operation (stderr shown to Claude as guidance)
|
|
13
14
|
#
|
|
14
|
-
# Security: Fail-
|
|
15
|
-
# -
|
|
16
|
-
# -
|
|
15
|
+
# Security: Fail-closed on main when LumenFlow is configured
|
|
16
|
+
# - Allowlist: docs/04-operations/tasks/wu/, .lumenflow/, .claude/, plan/
|
|
17
|
+
# - Branch-PR claimed_mode permits writes from main checkout
|
|
18
|
+
# - Graceful degradation only when LumenFlow is NOT configured
|
|
17
19
|
#
|
|
18
20
|
# Blocking conditions:
|
|
19
21
|
# - Current branch is main or master
|
|
20
22
|
# - Tool is Write or Edit
|
|
21
23
|
# - Target file is in the main repo (not a worktree)
|
|
24
|
+
# - No allowlisted path match
|
|
25
|
+
# - No branch-pr WU in progress
|
|
22
26
|
#
|
|
23
27
|
|
|
24
28
|
set -euo pipefail
|
|
@@ -34,6 +38,14 @@ else
|
|
|
34
38
|
fi
|
|
35
39
|
fi
|
|
36
40
|
|
|
41
|
+
WORKTREES_DIR="${MAIN_REPO_PATH}/worktrees"
|
|
42
|
+
LUMENFLOW_DIR="${MAIN_REPO_PATH}/.lumenflow"
|
|
43
|
+
|
|
44
|
+
# Graceful degradation: LumenFlow not configured
|
|
45
|
+
if [[ ! -d "$LUMENFLOW_DIR" ]]; then
|
|
46
|
+
exit 0
|
|
47
|
+
fi
|
|
48
|
+
|
|
37
49
|
# Check if we're on main/master branch
|
|
38
50
|
CURRENT_BRANCH=$(git -C "$MAIN_REPO_PATH" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")
|
|
39
51
|
|
|
@@ -96,25 +108,79 @@ if [[ "$TOOL_NAME" != "Write" && "$TOOL_NAME" != "Edit" ]]; then
|
|
|
96
108
|
exit 0
|
|
97
109
|
fi
|
|
98
110
|
|
|
99
|
-
#
|
|
100
|
-
WORKTREES_DIR="${MAIN_REPO_PATH}/worktrees"
|
|
101
|
-
|
|
111
|
+
# Resolve file path
|
|
102
112
|
if [[ -n "$FILE_PATH" ]]; then
|
|
103
113
|
RESOLVED_PATH=$(realpath -m "$FILE_PATH" 2>/dev/null || echo "$FILE_PATH")
|
|
114
|
+
else
|
|
115
|
+
RESOLVED_PATH=""
|
|
116
|
+
fi
|
|
104
117
|
|
|
105
|
-
|
|
106
|
-
|
|
118
|
+
# Allow if path is outside repo entirely
|
|
119
|
+
if [[ -n "$RESOLVED_PATH" ]]; then
|
|
120
|
+
if [[ "$RESOLVED_PATH" != "${MAIN_REPO_PATH}/"* && "$RESOLVED_PATH" != "${MAIN_REPO_PATH}" ]]; then
|
|
107
121
|
exit 0
|
|
108
122
|
fi
|
|
109
123
|
fi
|
|
110
124
|
|
|
111
|
-
#
|
|
125
|
+
# Allow if path is inside a worktree
|
|
126
|
+
if [[ -n "$RESOLVED_PATH" && "$RESOLVED_PATH" == "${WORKTREES_DIR}/"* ]]; then
|
|
127
|
+
exit 0
|
|
128
|
+
fi
|
|
129
|
+
|
|
130
|
+
# Check if any active worktrees exist
|
|
131
|
+
WORKTREE_COUNT=0
|
|
132
|
+
if [[ -d "$WORKTREES_DIR" ]]; then
|
|
133
|
+
WORKTREE_COUNT=$(find "$WORKTREES_DIR" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l)
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
# If worktrees exist, block writes to main repo (original behavior)
|
|
137
|
+
if [[ "$WORKTREE_COUNT" -gt 0 ]]; then
|
|
138
|
+
echo "" >&2
|
|
139
|
+
echo "=== LumenFlow Worktree Enforcement ===" >&2
|
|
140
|
+
echo "" >&2
|
|
141
|
+
echo "BLOCKED: ${TOOL_NAME} operation on main branch" >&2
|
|
142
|
+
echo "" >&2
|
|
143
|
+
echo "You are on the '${CURRENT_BRANCH}' branch. Direct edits to main are not allowed." >&2
|
|
144
|
+
echo "" >&2
|
|
145
|
+
echo "WHAT TO DO:" >&2
|
|
146
|
+
echo " 1. cd to your worktree: cd worktrees/<lane>-wu-<id>/" >&2
|
|
147
|
+
echo " 2. Make your edits in the worktree" >&2
|
|
148
|
+
echo "" >&2
|
|
149
|
+
echo "See: LUMENFLOW.md for complete workflow documentation" >&2
|
|
150
|
+
echo "========================================" >&2
|
|
151
|
+
exit 2
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# WU-1501: Fail-closed on main when no worktrees exist
|
|
155
|
+
# Check allowlist: paths that are always safe to write on main
|
|
156
|
+
if [[ -n "$RESOLVED_PATH" ]]; then
|
|
157
|
+
RELATIVE_PATH="${RESOLVED_PATH#${MAIN_REPO_PATH}/}"
|
|
158
|
+
|
|
159
|
+
case "$RELATIVE_PATH" in
|
|
160
|
+
docs/04-operations/tasks/wu/*) exit 0 ;; # WU YAML specs
|
|
161
|
+
.lumenflow/*) exit 0 ;; # LumenFlow state/config
|
|
162
|
+
.claude/*) exit 0 ;; # Claude Code config
|
|
163
|
+
plan/*) exit 0 ;; # Plan/spec scaffolds
|
|
164
|
+
esac
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
# Check for branch-pr claimed_mode (allows main writes without worktree)
|
|
168
|
+
STATE_FILE="${LUMENFLOW_DIR}/state/wu-events.jsonl"
|
|
169
|
+
if [[ -f "$STATE_FILE" ]]; then
|
|
170
|
+
if grep -q '"claimed_mode":"branch-pr"' "$STATE_FILE" 2>/dev/null; then
|
|
171
|
+
if grep -q '"status":"in_progress"' "$STATE_FILE" 2>/dev/null; then
|
|
172
|
+
exit 0 # Branch-PR WU active - allow main writes
|
|
173
|
+
fi
|
|
174
|
+
fi
|
|
175
|
+
fi
|
|
176
|
+
|
|
177
|
+
# Fail-closed: block the write
|
|
112
178
|
echo "" >&2
|
|
113
179
|
echo "=== LumenFlow Worktree Enforcement ===" >&2
|
|
114
180
|
echo "" >&2
|
|
115
|
-
echo "BLOCKED: ${TOOL_NAME} operation on main branch" >&2
|
|
181
|
+
echo "BLOCKED: ${TOOL_NAME} operation on main branch (no active WU claim)" >&2
|
|
116
182
|
echo "" >&2
|
|
117
|
-
echo "You are on the '${CURRENT_BRANCH}' branch
|
|
183
|
+
echo "You are on the '${CURRENT_BRANCH}' branch with no active WU." >&2
|
|
118
184
|
echo "" >&2
|
|
119
185
|
echo "WHAT TO DO:" >&2
|
|
120
186
|
echo " 1. Claim a WU to create a worktree:" >&2
|
|
@@ -125,11 +191,6 @@ echo " cd worktrees/<lane>-wu-xxxx" >&2
|
|
|
125
191
|
echo "" >&2
|
|
126
192
|
echo " 3. Make your edits in the worktree" >&2
|
|
127
193
|
echo "" >&2
|
|
128
|
-
echo "WHY THIS MATTERS:" >&2
|
|
129
|
-
echo " - Worktrees isolate your changes from other work" >&2
|
|
130
|
-
echo " - All changes are tracked through the WU workflow" >&2
|
|
131
|
-
echo " - Parallel work across lanes stays independent" >&2
|
|
132
|
-
echo "" >&2
|
|
133
194
|
echo "See: LUMENFLOW.md for complete workflow documentation" >&2
|
|
134
195
|
echo "========================================" >&2
|
|
135
196
|
exit 2
|
|
@@ -28,6 +28,36 @@ else
|
|
|
28
28
|
fi
|
|
29
29
|
fi
|
|
30
30
|
|
|
31
|
+
# WU-1505: Early warning for dirty main checkout at SessionStart.
|
|
32
|
+
# Informational only (never blocks), helps agents catch polluted main state
|
|
33
|
+
# before any work begins.
|
|
34
|
+
CWD=$(pwd)
|
|
35
|
+
WORKTREES_DIR="${REPO_PATH}/worktrees"
|
|
36
|
+
CURRENT_BRANCH=$(git -C "$REPO_PATH" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")
|
|
37
|
+
|
|
38
|
+
# No-op in worktrees and non-main branches.
|
|
39
|
+
if [[ "$CWD" != "${WORKTREES_DIR}/"* ]] && [[ "$CURRENT_BRANCH" == "main" ]]; then
|
|
40
|
+
DIRTY_LINES=$(git -C "$REPO_PATH" status --porcelain --untracked-files=all 2>/dev/null || true)
|
|
41
|
+
if [[ -n "$DIRTY_LINES" ]]; then
|
|
42
|
+
echo "" >&2
|
|
43
|
+
echo "═══════════════════════════════════════════════════════" >&2
|
|
44
|
+
echo "⚠️ DIRTY MAIN CHECKOUT DETECTED" >&2
|
|
45
|
+
echo "═══════════════════════════════════════════════════════" >&2
|
|
46
|
+
echo "" >&2
|
|
47
|
+
echo "Uncommitted files in main checkout:" >&2
|
|
48
|
+
echo "$DIRTY_LINES" | head -20 | sed 's/^/ /' >&2
|
|
49
|
+
if [[ $(echo "$DIRTY_LINES" | wc -l | tr -d ' ') -gt 20 ]]; then
|
|
50
|
+
echo " ... (truncated)" >&2
|
|
51
|
+
fi
|
|
52
|
+
echo "" >&2
|
|
53
|
+
echo "Recommended next steps:" >&2
|
|
54
|
+
echo " 1. Inspect: git status --short" >&2
|
|
55
|
+
echo " 2. Move changes into a WU worktree or commit/discard intentionally" >&2
|
|
56
|
+
echo " 3. Keep main clean before starting new work" >&2
|
|
57
|
+
echo "" >&2
|
|
58
|
+
fi
|
|
59
|
+
fi
|
|
60
|
+
|
|
31
61
|
RECOVERY_DIR="${REPO_PATH}/.lumenflow/state"
|
|
32
62
|
|
|
33
63
|
# Check if recovery directory exists
|