@lumenflow/cli 2.11.0 → 2.12.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.
Files changed (248) hide show
  1. package/README.md +6 -17
  2. package/dist/__tests__/commands.test.js +198 -2
  3. package/dist/__tests__/init-docs-structure.test.js +33 -0
  4. package/dist/__tests__/initiative-add-wu.test.js +71 -1
  5. package/dist/__tests__/no-beacon-references-docs.test.js +30 -0
  6. package/dist/__tests__/no-beacon-references.test.js +39 -0
  7. package/dist/__tests__/wu-create.test.js +50 -1
  8. package/dist/__tests__/wu-done-docs-only-policy.test.js +20 -0
  9. package/dist/__tests__/wu-prep-default-exec.test.js +35 -0
  10. package/dist/__tests__/wu-prep.test.js +32 -0
  11. package/dist/__tests__/wu-validate.test.js +36 -0
  12. package/dist/agent-issues-query.js +1 -0
  13. package/dist/agent-issues-query.js.map +1 -0
  14. package/dist/agent-log-issue.js +1 -0
  15. package/dist/agent-log-issue.js.map +1 -0
  16. package/dist/agent-session-end.js +1 -0
  17. package/dist/agent-session-end.js.map +1 -0
  18. package/dist/agent-session.js +1 -0
  19. package/dist/agent-session.js.map +1 -0
  20. package/dist/backlog-prune.js +2 -0
  21. package/dist/backlog-prune.js.map +1 -0
  22. package/dist/cli-entry-point.js +1 -0
  23. package/dist/cli-entry-point.js.map +1 -0
  24. package/dist/commands/integrate.js +1 -0
  25. package/dist/commands/integrate.js.map +1 -0
  26. package/dist/commands.js +56 -77
  27. package/dist/commands.js.map +1 -0
  28. package/dist/deps-add.js +1 -0
  29. package/dist/deps-add.js.map +1 -0
  30. package/dist/deps-remove.js +1 -0
  31. package/dist/deps-remove.js.map +1 -0
  32. package/dist/docs-sync.js +1 -0
  33. package/dist/docs-sync.js.map +1 -0
  34. package/dist/doctor.js +1 -0
  35. package/dist/doctor.js.map +1 -0
  36. package/dist/file-delete.js +1 -0
  37. package/dist/file-delete.js.map +1 -0
  38. package/dist/file-edit.js +1 -0
  39. package/dist/file-edit.js.map +1 -0
  40. package/dist/file-read.js +1 -0
  41. package/dist/file-read.js.map +1 -0
  42. package/dist/file-write.js +1 -0
  43. package/dist/file-write.js.map +1 -0
  44. package/dist/flow-bottlenecks.js +1 -0
  45. package/dist/flow-bottlenecks.js.map +1 -0
  46. package/dist/flow-report.js +1 -0
  47. package/dist/flow-report.js.map +1 -0
  48. package/dist/gates.js +26 -12
  49. package/dist/gates.js.map +1 -0
  50. package/dist/git-branch.js +1 -0
  51. package/dist/git-branch.js.map +1 -0
  52. package/dist/git-diff.js +1 -0
  53. package/dist/git-diff.js.map +1 -0
  54. package/dist/git-log.js +1 -0
  55. package/dist/git-log.js.map +1 -0
  56. package/dist/git-status.js +1 -0
  57. package/dist/git-status.js.map +1 -0
  58. package/dist/guard-locked.js +1 -0
  59. package/dist/guard-locked.js.map +1 -0
  60. package/dist/guard-main-branch.js +1 -0
  61. package/dist/guard-main-branch.js.map +1 -0
  62. package/dist/guard-worktree-commit.js +1 -0
  63. package/dist/guard-worktree-commit.js.map +1 -0
  64. package/dist/hooks/auto-checkpoint-utils.js +52 -0
  65. package/dist/hooks/auto-checkpoint-utils.js.map +1 -0
  66. package/dist/hooks/enforcement-checks.js +1 -0
  67. package/dist/hooks/enforcement-checks.js.map +1 -0
  68. package/dist/hooks/enforcement-generator.js +185 -1
  69. package/dist/hooks/enforcement-generator.js.map +1 -0
  70. package/dist/hooks/enforcement-sync.js +91 -1
  71. package/dist/hooks/enforcement-sync.js.map +1 -0
  72. package/dist/hooks/index.js +1 -0
  73. package/dist/hooks/index.js.map +1 -0
  74. package/dist/index.js +1 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/init.js +32 -36
  77. package/dist/init.js.map +1 -0
  78. package/dist/initiative-add-wu.js +180 -59
  79. package/dist/initiative-add-wu.js.map +1 -0
  80. package/dist/initiative-bulk-assign-wus.js +3 -1
  81. package/dist/initiative-bulk-assign-wus.js.map +1 -0
  82. package/dist/initiative-create.js +1 -0
  83. package/dist/initiative-create.js.map +1 -0
  84. package/dist/initiative-edit.js +67 -32
  85. package/dist/initiative-edit.js.map +1 -0
  86. package/dist/initiative-list.js +1 -0
  87. package/dist/initiative-list.js.map +1 -0
  88. package/dist/initiative-plan.js +1 -0
  89. package/dist/initiative-plan.js.map +1 -0
  90. package/dist/initiative-remove-wu.js +1 -0
  91. package/dist/initiative-remove-wu.js.map +1 -0
  92. package/dist/initiative-status.js +1 -0
  93. package/dist/initiative-status.js.map +1 -0
  94. package/dist/lane-health.js +1 -0
  95. package/dist/lane-health.js.map +1 -0
  96. package/dist/lane-suggest.js +1 -0
  97. package/dist/lane-suggest.js.map +1 -0
  98. package/dist/lumenflow-upgrade.js +1 -0
  99. package/dist/lumenflow-upgrade.js.map +1 -0
  100. package/dist/mem-checkpoint.js +1 -0
  101. package/dist/mem-checkpoint.js.map +1 -0
  102. package/dist/mem-cleanup.js +114 -1
  103. package/dist/mem-cleanup.js.map +1 -0
  104. package/dist/mem-context.js +1 -0
  105. package/dist/mem-context.js.map +1 -0
  106. package/dist/mem-create.js +1 -0
  107. package/dist/mem-create.js.map +1 -0
  108. package/dist/mem-delete.js +1 -0
  109. package/dist/mem-delete.js.map +1 -0
  110. package/dist/mem-export.js +1 -0
  111. package/dist/mem-export.js.map +1 -0
  112. package/dist/mem-inbox.js +1 -0
  113. package/dist/mem-inbox.js.map +1 -0
  114. package/dist/mem-index.js +1 -0
  115. package/dist/mem-index.js.map +1 -0
  116. package/dist/mem-init.js +1 -0
  117. package/dist/mem-init.js.map +1 -0
  118. package/dist/mem-profile.js +1 -0
  119. package/dist/mem-profile.js.map +1 -0
  120. package/dist/mem-promote.js +1 -0
  121. package/dist/mem-promote.js.map +1 -0
  122. package/dist/mem-ready.js +1 -0
  123. package/dist/mem-ready.js.map +1 -0
  124. package/dist/mem-recover.js +1 -0
  125. package/dist/mem-recover.js.map +1 -0
  126. package/dist/mem-signal.js +12 -1
  127. package/dist/mem-signal.js.map +1 -0
  128. package/dist/mem-start.js +1 -0
  129. package/dist/mem-start.js.map +1 -0
  130. package/dist/mem-summarize.js +1 -0
  131. package/dist/mem-summarize.js.map +1 -0
  132. package/dist/mem-triage.js +2 -1
  133. package/dist/mem-triage.js.map +1 -0
  134. package/dist/merge-block.js +1 -0
  135. package/dist/merge-block.js.map +1 -0
  136. package/dist/metrics-cli.js +1 -0
  137. package/dist/metrics-cli.js.map +1 -0
  138. package/dist/metrics-snapshot.js +1 -0
  139. package/dist/metrics-snapshot.js.map +1 -0
  140. package/dist/onboarding-smoke-test.js +1 -0
  141. package/dist/onboarding-smoke-test.js.map +1 -0
  142. package/dist/orchestrate-init-status.js +1 -0
  143. package/dist/orchestrate-init-status.js.map +1 -0
  144. package/dist/orchestrate-initiative.js +1 -0
  145. package/dist/orchestrate-initiative.js.map +1 -0
  146. package/dist/orchestrate-monitor.js +1 -0
  147. package/dist/orchestrate-monitor.js.map +1 -0
  148. package/dist/plan-create.js +1 -0
  149. package/dist/plan-create.js.map +1 -0
  150. package/dist/plan-edit.js +1 -0
  151. package/dist/plan-edit.js.map +1 -0
  152. package/dist/plan-link.js +1 -0
  153. package/dist/plan-link.js.map +1 -0
  154. package/dist/plan-promote.js +1 -0
  155. package/dist/plan-promote.js.map +1 -0
  156. package/dist/public-manifest.js +773 -0
  157. package/dist/public-manifest.js.map +1 -0
  158. package/dist/release.js +3 -2
  159. package/dist/release.js.map +1 -0
  160. package/dist/rotate-progress.js +2 -1
  161. package/dist/rotate-progress.js.map +1 -0
  162. package/dist/session-coordinator.js +1 -0
  163. package/dist/session-coordinator.js.map +1 -0
  164. package/dist/shared-validators.js +78 -0
  165. package/dist/shared-validators.js.map +1 -0
  166. package/dist/signal-cleanup.js +1 -0
  167. package/dist/signal-cleanup.js.map +1 -0
  168. package/dist/spawn-list.js +1 -0
  169. package/dist/spawn-list.js.map +1 -0
  170. package/dist/state-bootstrap.js +1 -0
  171. package/dist/state-bootstrap.js.map +1 -0
  172. package/dist/state-cleanup.js +1 -0
  173. package/dist/state-cleanup.js.map +1 -0
  174. package/dist/state-doctor-fix.js +1 -0
  175. package/dist/state-doctor-fix.js.map +1 -0
  176. package/dist/state-doctor.js +1 -0
  177. package/dist/state-doctor.js.map +1 -0
  178. package/dist/sync-templates.js +1 -0
  179. package/dist/sync-templates.js.map +1 -0
  180. package/dist/trace-gen.js +1 -0
  181. package/dist/trace-gen.js.map +1 -0
  182. package/dist/validate-agent-skills.js +1 -0
  183. package/dist/validate-agent-skills.js.map +1 -0
  184. package/dist/validate-agent-sync.js +1 -0
  185. package/dist/validate-agent-sync.js.map +1 -0
  186. package/dist/validate-backlog-sync.js +1 -0
  187. package/dist/validate-backlog-sync.js.map +1 -0
  188. package/dist/validate-skills-spec.js +1 -0
  189. package/dist/validate-skills-spec.js.map +1 -0
  190. package/dist/validate.js +1 -0
  191. package/dist/validate.js.map +1 -0
  192. package/dist/wu-block.js +1 -0
  193. package/dist/wu-block.js.map +1 -0
  194. package/dist/wu-claim-repair-guidance.js +10 -0
  195. package/dist/wu-claim-repair-guidance.js.map +1 -0
  196. package/dist/wu-claim.js +40 -0
  197. package/dist/wu-claim.js.map +1 -0
  198. package/dist/wu-cleanup.js +2 -1
  199. package/dist/wu-cleanup.js.map +1 -0
  200. package/dist/wu-create.js +58 -14
  201. package/dist/wu-create.js.map +1 -0
  202. package/dist/wu-delete.js +3 -2
  203. package/dist/wu-delete.js.map +1 -0
  204. package/dist/wu-deps.js +2 -1
  205. package/dist/wu-deps.js.map +1 -0
  206. package/dist/wu-done-auto-cleanup.js +1 -0
  207. package/dist/wu-done-auto-cleanup.js.map +1 -0
  208. package/dist/wu-done-check.js +1 -0
  209. package/dist/wu-done-check.js.map +1 -0
  210. package/dist/wu-done-decay.js +88 -0
  211. package/dist/wu-done-decay.js.map +1 -0
  212. package/dist/wu-done.js +75 -18
  213. package/dist/wu-done.js.map +1 -0
  214. package/dist/wu-edit.js +2 -1
  215. package/dist/wu-edit.js.map +1 -0
  216. package/dist/wu-infer-lane.js +1 -0
  217. package/dist/wu-infer-lane.js.map +1 -0
  218. package/dist/wu-preflight.js +1 -0
  219. package/dist/wu-preflight.js.map +1 -0
  220. package/dist/wu-prep.js +105 -9
  221. package/dist/wu-prep.js.map +1 -0
  222. package/dist/wu-proto.js +12 -9
  223. package/dist/wu-proto.js.map +1 -0
  224. package/dist/wu-prune.js +1 -0
  225. package/dist/wu-prune.js.map +1 -0
  226. package/dist/wu-recover.js +1 -0
  227. package/dist/wu-recover.js.map +1 -0
  228. package/dist/wu-release.js +2 -1
  229. package/dist/wu-release.js.map +1 -0
  230. package/dist/wu-repair.js +1 -0
  231. package/dist/wu-repair.js.map +1 -0
  232. package/dist/wu-spawn-completion.js +1 -0
  233. package/dist/wu-spawn-completion.js.map +1 -0
  234. package/dist/wu-spawn.js +1 -0
  235. package/dist/wu-spawn.js.map +1 -0
  236. package/dist/wu-status.js +1 -0
  237. package/dist/wu-status.js.map +1 -0
  238. package/dist/wu-unblock.js +1 -0
  239. package/dist/wu-unblock.js.map +1 -0
  240. package/dist/wu-unlock-lane.js +1 -0
  241. package/dist/wu-unlock-lane.js.map +1 -0
  242. package/dist/wu-validate.js +58 -9
  243. package/dist/wu-validate.js.map +1 -0
  244. package/package.json +11 -21
  245. package/templates/core/.husky/pre-commit.template +5 -5
  246. package/templates/core/LUMENFLOW.md.template +2 -2
  247. package/templates/core/ai/onboarding/agent-safety-card.md.template +6 -6
  248. package/templates/core/ai/onboarding/lumenflow-force-usage.md.template +4 -4
@@ -25,7 +25,31 @@ import { validateWU, validateWUCompleteness } from '@lumenflow/core/dist/wu-sche
25
25
  import { FILE_SYSTEM, EMOJI, PATTERNS } from '@lumenflow/core/dist/wu-constants.js';
26
26
  // WU-2253: Import WU spec linter for acceptance/code_paths validation
27
27
  import { lintWUSpec } from '@lumenflow/core/dist/wu-lint.js';
28
+ import { validateWuValidateCliArgs } from './shared-validators.js';
28
29
  const LOG_PREFIX = '[wu:validate]';
30
+ export function validateWuValidateOptions(id, noStrict) {
31
+ return validateWuValidateCliArgs({ id, noStrict });
32
+ }
33
+ /**
34
+ * Summarize validation results for JSON output.
35
+ */
36
+ export function summarizeValidationResults(results) {
37
+ const totalValid = results.filter((r) => r.valid).length;
38
+ const totalInvalid = results.filter((r) => !r.valid).length;
39
+ const totalWarnings = results.reduce((sum, r) => sum + (r.warnings?.length ?? 0), 0);
40
+ const invalid = results.filter((r) => !r.valid).map((r) => ({ wuId: r.wuId, errors: r.errors }));
41
+ const warnings = results
42
+ .filter((r) => r.warnings && r.warnings.length > 0)
43
+ .map((r) => ({ wuId: r.wuId, warnings: r.warnings }));
44
+ return {
45
+ valid: totalInvalid === 0,
46
+ totalValid,
47
+ totalInvalid,
48
+ totalWarnings,
49
+ invalid,
50
+ warnings,
51
+ };
52
+ }
29
53
  /**
30
54
  * Validate a single WU file
31
55
  *
@@ -82,7 +106,7 @@ function validateSingleWU(wuPath, { strict = true } = {}) {
82
106
  *
83
107
  * @param {object} options - Validation options
84
108
  * @param {boolean} options.strict - Treat warnings as errors (default: true)
85
- * @returns {{totalValid: number, totalInvalid: number, totalWarnings: number, results: object[]}}
109
+ * @returns {{totalValid: number, totalInvalid: number, totalWarnings: number, results: ValidationResult[]}}
86
110
  */
87
111
  function validateAllWUs({ strict = true } = {}) {
88
112
  const wuDir = WU_PATHS.WU_DIR();
@@ -126,11 +150,17 @@ async function main() {
126
150
  },
127
151
  // WU-1329: Change from --strict to --no-strict (strict is now default)
128
152
  WU_OPTIONS.noStrict,
153
+ {
154
+ name: 'json',
155
+ flags: '--json',
156
+ type: 'boolean',
157
+ description: 'Output JSON summary only',
158
+ },
129
159
  ],
130
160
  required: [],
131
161
  allowPositionalId: true,
132
162
  });
133
- const { id, all, noStrict } = args;
163
+ const { id, all, noStrict, json } = args;
134
164
  // WU-1329: Strict mode is the default, --no-strict opts out
135
165
  const strict = !noStrict;
136
166
  // WU-1329: Log when strict validation is bypassed
@@ -145,8 +175,15 @@ async function main() {
145
175
  }
146
176
  if (all) {
147
177
  // Validate all WUs
148
- console.log(`${LOG_PREFIX} Validating all WU files...`);
149
- const { totalValid, totalInvalid, totalWarnings, results } = validateAllWUs({ strict });
178
+ if (!json) {
179
+ console.log(`${LOG_PREFIX} Validating all WU files...`);
180
+ }
181
+ const { results } = validateAllWUs({ strict });
182
+ const summary = summarizeValidationResults(results);
183
+ if (json) {
184
+ console.log(JSON.stringify(summary));
185
+ process.exit(summary.valid ? 0 : 1);
186
+ }
150
187
  // Print results
151
188
  for (const result of results) {
152
189
  if (result.errors.length > 0) {
@@ -160,14 +197,18 @@ async function main() {
160
197
  }
161
198
  console.log('');
162
199
  console.log(`${LOG_PREFIX} Summary:`);
163
- console.log(` ${EMOJI.SUCCESS} Valid: ${totalValid}`);
164
- console.log(` ${EMOJI.FAILURE} Invalid: ${totalInvalid}`);
165
- console.log(` ${EMOJI.WARNING} Warnings: ${totalWarnings}`);
166
- if (totalInvalid > 0) {
200
+ console.log(` ${EMOJI.SUCCESS} Valid: ${summary.totalValid}`);
201
+ console.log(` ${EMOJI.FAILURE} Invalid: ${summary.totalInvalid}`);
202
+ console.log(` ${EMOJI.WARNING} Warnings: ${summary.totalWarnings}`);
203
+ if (!summary.valid) {
167
204
  process.exit(1);
168
205
  }
169
206
  }
170
207
  else {
208
+ const validation = validateWuValidateOptions(id, noStrict);
209
+ if (!validation.valid) {
210
+ die(`Invalid wu:validate arguments:\n - ${validation.errors.join('\n - ')}`);
211
+ }
171
212
  // Validate single WU
172
213
  const wuId = id.toUpperCase();
173
214
  if (!PATTERNS.WU_ID.test(wuId)) {
@@ -177,8 +218,15 @@ async function main() {
177
218
  if (!existsSync(wuPath)) {
178
219
  die(`WU file not found: ${wuPath}`);
179
220
  }
180
- console.log(`${LOG_PREFIX} Validating ${wuId}...`);
221
+ if (!json) {
222
+ console.log(`${LOG_PREFIX} Validating ${wuId}...`);
223
+ }
181
224
  const result = validateSingleWU(wuPath, { strict });
225
+ const summary = summarizeValidationResults([{ wuId, ...result }]);
226
+ if (json) {
227
+ console.log(JSON.stringify(summary));
228
+ process.exit(summary.valid ? 0 : 1);
229
+ }
182
230
  if (result.errors.length > 0) {
183
231
  console.log(`${EMOJI.FAILURE} Validation failed:`);
184
232
  result.errors.forEach((e) => console.log(` ${e}`));
@@ -200,3 +248,4 @@ import { runCLI } from './cli-entry-point.js';
200
248
  if (import.meta.main) {
201
249
  runCLI(main);
202
250
  }
251
+ //# sourceMappingURL=wu-validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-validate.js","sourceRoot":"","sources":["../src/wu-validate.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.11.0",
3
+ "version": "2.12.0",
4
4
  "description": "Command-line interface for LumenFlow workflow framework",
5
5
  "keywords": [
6
6
  "lumenflow",
@@ -109,25 +109,13 @@
109
109
  "file-write": "./dist/file-write.js",
110
110
  "file-edit": "./dist/file-edit.js",
111
111
  "file-delete": "./dist/file-delete.js",
112
- "guard-worktree-commit": "./dist/guard-worktree-commit.js",
113
- "guard-locked": "./dist/guard-locked.js",
114
112
  "validate": "./dist/validate.js",
115
113
  "lumenflow-validate": "./dist/validate.js",
116
- "validate-agent-skills": "./dist/validate-agent-skills.js",
117
- "validate-agent-sync": "./dist/validate-agent-sync.js",
118
- "validate-backlog-sync": "./dist/validate-backlog-sync.js",
119
- "validate-skills-spec": "./dist/validate-skills-spec.js",
120
- "deps-add": "./dist/deps-add.js",
121
- "deps-remove": "./dist/deps-remove.js",
122
- "session-coordinator": "./dist/session-coordinator.js",
123
- "rotate-progress": "./dist/rotate-progress.js",
124
114
  "lumenflow-upgrade": "./dist/lumenflow-upgrade.js",
125
- "trace-gen": "./dist/trace-gen.js",
126
115
  "git-status": "./dist/git-status.js",
127
116
  "git-diff": "./dist/git-diff.js",
128
117
  "git-log": "./dist/git-log.js",
129
118
  "git-branch": "./dist/git-branch.js",
130
- "guard-main-branch": "./dist/guard-main-branch.js",
131
119
  "state-bootstrap": "./dist/state-bootstrap.js",
132
120
  "lane-health": "./dist/lane-health.js",
133
121
  "lane-suggest": "./dist/lane-suggest.js",
@@ -146,16 +134,16 @@
146
134
  "cli-table3": "^0.6.5",
147
135
  "commander": "^14.0.2",
148
136
  "fast-glob": "^3.3.3",
149
- "minimatch": "^10.1.1",
137
+ "minimatch": "^10.1.2",
150
138
  "ms": "^2.1.3",
151
139
  "pretty-ms": "^9.2.0",
152
140
  "simple-git": "^3.30.0",
153
141
  "yaml": "^2.8.2",
154
- "@lumenflow/core": "2.11.0",
155
- "@lumenflow/metrics": "2.11.0",
156
- "@lumenflow/memory": "2.11.0",
157
- "@lumenflow/initiatives": "2.11.0",
158
- "@lumenflow/agent": "2.11.0"
142
+ "@lumenflow/core": "2.12.0",
143
+ "@lumenflow/metrics": "2.12.0",
144
+ "@lumenflow/agent": "2.12.0",
145
+ "@lumenflow/memory": "2.12.0",
146
+ "@lumenflow/initiatives": "2.12.0"
159
147
  },
160
148
  "devDependencies": {
161
149
  "@vitest/coverage-v8": "^4.0.17",
@@ -170,9 +158,11 @@
170
158
  },
171
159
  "scripts": {
172
160
  "build": "tsc",
173
- "build:dist": "tsc -p tsconfig.build.json",
161
+ "build:dist": "rm -rf dist && tsc -p tsconfig.build.json",
174
162
  "pack:dist": "pnpm pack",
175
163
  "clean": "rm -rf dist *.tgz",
176
- "test": "vitest run"
164
+ "test": "vitest run",
165
+ "lint": "eslint src --quiet --rule no-console:off --rule @typescript-eslint/no-unused-vars:off --rule sonarjs/concise-regex:off",
166
+ "typecheck": "tsc --noEmit"
177
167
  }
178
168
  }
@@ -30,8 +30,8 @@ case "$BRANCH" in tmp/*) exit 0 ;; esac
30
30
  if [ "$LUMENFLOW_FORCE" = "1" ]; then
31
31
  if [ -z "$LUMENFLOW_FORCE_REASON" ]; then
32
32
  echo "" >&2
33
- echo "[pre-commit] Warning: LUMENFLOW_FORCE_REASON not set." >&2
34
- echo "Consider: LUMENFLOW_FORCE_REASON=\"reason\" LUMENFLOW_FORCE=1 git commit ..." >&2
33
+ echo "[pre-commit] Warning: Hook bypass used without a reason." >&2
34
+ echo "Please provide a reason for the audit trail." >&2
35
35
  echo "" >&2
36
36
  fi
37
37
  # Log bypass to .beacon/ for audit trail
@@ -79,10 +79,10 @@ case "$BRANCH" in
79
79
  echo " - Run: pnpm wu:help" >&2
80
80
  echo "" >&2
81
81
  echo "------------------------------------------------------------------" >&2
82
- echo "EMERGENCY BYPASS (last resort, logged)" >&2
82
+ echo "STUCK?" >&2
83
83
  echo "------------------------------------------------------------------" >&2
84
- echo "Bypasses are audit-logged. Only use for genuine emergencies." >&2
85
- echo " LUMENFLOW_FORCE=1 LUMENFLOW_FORCE_REASON=\"<reason>\" git commit ..." >&2
84
+ echo "If you need to fix workflow state:" >&2
85
+ echo " pnpm wu:recover --id WU-XXXX" >&2
86
86
  echo "------------------------------------------------------------------" >&2
87
87
  echo "" >&2
88
88
  exit 1
@@ -132,8 +132,8 @@ LumenFlow enforces safety at the repository level so protections apply to all ag
132
132
  - **Git wrapper**: `scripts/safe-git` blocks destructive operations (e.g. `worktree remove`, `reset --hard`, `clean -fd`, `push --force`).
133
133
  - **Husky hooks**: staged secret scanning, absolute-path scanning, lockfile sync, and worktree discipline.
134
134
  - **Audit logs**:
135
- - `.beacon/safety-blocks.log`
136
- - `.beacon/force-bypasses.log`
135
+ - `.lumenflow/safety-blocks.log`
136
+ - `.lumenflow/force-bypasses.log`
137
137
 
138
138
  ---
139
139
 
@@ -68,8 +68,8 @@ These run for everyone:
68
68
 
69
69
  Audit logs:
70
70
 
71
- - `.beacon/safety-blocks.log` (blocked safety actions)
72
- - `.beacon/force-bypasses.log` (LUMENFLOW_FORCE bypasses)
71
+ - `.lumenflow/safety-blocks.log` (blocked safety actions)
72
+ - `.lumenflow/force-bypasses.log` (LUMENFLOW_FORCE bypasses)
73
73
 
74
74
  ---
75
75
 
@@ -162,7 +162,7 @@ Agents MUST stop and ask before using LUMENFLOW_FORCE. Present the situation to
162
162
 
163
163
  ```
164
164
  I need to bypass the safety check for [reason].
165
- This will be logged to .beacon/force-bypasses.log.
165
+ This will be logged to .lumenflow/force-bypasses.log.
166
166
  Do you approve? (yes/no)
167
167
  ```
168
168
 
@@ -191,7 +191,7 @@ notes: |
191
191
 
192
192
  ### Audit Log Format
193
193
 
194
- All bypasses are logged to `.beacon/force-bypasses.log`:
194
+ All bypasses are logged to `.lumenflow/force-bypasses.log`:
195
195
 
196
196
  ```
197
197
  ISO_TIMESTAMP|BYPASSED|COMMAND_OR_HOOK|USER|BRANCH|REASON|CWD
@@ -200,7 +200,7 @@ ISO_TIMESTAMP|BYPASSED|COMMAND_OR_HOOK|USER|BRANCH|REASON|CWD
200
200
  Example:
201
201
 
202
202
  ```
203
- {{DATE}}T12:34:56Z|BYPASSED|git reset --hard HEAD|tom|lane/core/wu-1172|user-approved: recovering state|/home/tom/source/project
203
+ {{DATE}}T12:34:56Z|BYPASSED|git reset --hard HEAD|tom|lane/core/wu-1172|user-approved: recovering state|<cwd>
204
204
  ```
205
205
 
206
206
  ### Warning When No Reason Provided
@@ -329,5 +329,5 @@ ls -la .husky/
329
329
 
330
330
  # Verify bypass works with audit
331
331
  LUMENFLOW_FORCE_REASON="testing" LUMENFLOW_FORCE=1 ./scripts/safe-git --version
332
- # Should succeed and log to .beacon/force-bypasses.log
332
+ # Should succeed and log to .lumenflow/force-bypasses.log
333
333
  ```
@@ -8,7 +8,7 @@ This document presents the findings from WU-1220, investigating improper LUMENFL
8
8
 
9
9
  ## Executive Summary
10
10
 
11
- Analysis of `.beacon/force-bypasses.log` reveals that LUMENFLOW_FORCE is used extensively, but almost exclusively by human operators (user "Tom") rather than AI agents. The vast majority of uses are for legitimate infrastructure operations such as:
11
+ Analysis of `.lumenflow/force-bypasses.log` reveals that LUMENFLOW_FORCE is used extensively, but almost exclusively by human operators (user "Tom") rather than AI agents. The vast majority of uses are for legitimate infrastructure operations such as:
12
12
 
13
13
  - Release version pushes
14
14
  - Micro-worktree recovery operations
@@ -76,11 +76,11 @@ Analysis of 347 logged bypass events shows:
76
76
 
77
77
  ### Technical Safeguards
78
78
 
79
- 1. **Audit logging:** All bypasses logged to `.beacon/force-bypasses.log` with timestamp, hook, user, branch, reason, and working directory.
79
+ 1. **Audit logging:** All bypasses logged to `.lumenflow/force-bypasses.log` with timestamp, hook, user, branch, reason, and working directory.
80
80
 
81
81
  2. **Warning when no reason:** If LUMENFLOW_FORCE_REASON is not provided, a warning is printed.
82
82
 
83
- 3. **Git-tracked audit log:** The `.beacon/force-bypasses.log` file is version controlled, providing historical accountability.
83
+ 3. **Git-tracked audit log:** The `.lumenflow/force-bypasses.log` file is version controlled, providing historical accountability.
84
84
 
85
85
  4. **Hook enforcement:** Pre-commit, commit-msg, pre-push, and prepare-commit-msg hooks all check for LUMENFLOW_FORCE before allowing bypass.
86
86
 
@@ -126,7 +126,7 @@ Where `SESSION_TYPE` could be: `human`, `claude-code`, `cursor`, `windsurf`, `un
126
126
 
127
127
  ### 2. Periodic Audit Review (Process)
128
128
 
129
- Establish a monthly review of `.beacon/force-bypasses.log` to identify:
129
+ Establish a monthly review of `.lumenflow/force-bypasses.log` to identify:
130
130
 
131
131
  - High volume of "no reason provided" entries
132
132
  - Unexpected patterns in bypass usage