@lumenflow/cli 3.1.1 → 3.1.3
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 +36 -35
- package/dist/agent-issues-query.js +13 -8
- package/dist/agent-log-issue.js +15 -4
- package/dist/agent-session-end.js +15 -4
- package/dist/agent-session.js +18 -6
- package/dist/backlog-prune.js +1 -1
- package/dist/commands/integrate.js +32 -18
- package/dist/config-get.js +27 -15
- package/dist/config-set.js +104 -37
- package/dist/delegation-list.js +1 -1
- package/dist/doctor.js +19 -13
- package/dist/file-delete.js +1 -1
- package/dist/file-edit.js +1 -1
- package/dist/file-read.js +1 -1
- package/dist/file-write.js +1 -1
- package/dist/flow-bottlenecks.js +1 -1
- package/dist/flow-report.js +10 -9
- package/dist/gates.js +3 -2
- package/dist/git-branch.js +1 -1
- package/dist/git-diff.js +1 -1
- package/dist/git-log.js +1 -1
- package/dist/init.js +244 -61
- package/dist/initiative-add-wu.js +1 -1
- package/dist/initiative-bulk-assign-wus.js +1 -1
- package/dist/initiative-create.js +2 -2
- package/dist/initiative-edit.js +1 -1
- package/dist/initiative-list.js +1 -1
- package/dist/initiative-plan.js +1 -3
- package/dist/initiative-status.js +47 -6
- package/dist/lane-edit.js +19 -10
- package/dist/lane-health.js +13 -24
- package/dist/lane-lock.js +4 -5
- package/dist/lane-setup.js +5 -5
- package/dist/lane-status.js +4 -5
- package/dist/lane-suggest.js +9 -7
- package/dist/lane-validate.js +4 -5
- package/dist/lumenflow-upgrade.js +17 -11
- package/dist/mem-checkpoint.js +1 -1
- package/dist/mem-cleanup.js +6 -23
- package/dist/mem-context.js +1 -1
- package/dist/mem-create.js +1 -1
- package/dist/mem-delete.js +1 -1
- package/dist/mem-export.js +1 -1
- package/dist/mem-inbox.js +1 -1
- package/dist/mem-init.js +1 -1
- package/dist/mem-ready.js +1 -1
- package/dist/mem-recover.js +1 -1
- package/dist/mem-signal.js +1 -1
- package/dist/mem-start.js +1 -1
- package/dist/mem-summarize.js +8 -7
- package/dist/mem-triage.js +7 -5
- package/dist/metrics-cli.js +1 -1
- package/dist/metrics-snapshot.js +1 -1
- package/dist/onboard.js +295 -120
- package/dist/orchestrate-init-status.js +12 -7
- package/dist/orchestrate-initiative.js +23 -12
- package/dist/orchestrate-monitor.js +20 -8
- package/dist/pack-scaffold.js +1 -1
- package/dist/plan-create.js +1 -3
- package/dist/plan-edit.js +1 -3
- package/dist/plan-link.js +1 -3
- package/dist/plan-promote.js +1 -3
- package/dist/release.js +1 -3
- package/dist/signal-cleanup.js +4 -18
- package/dist/state-bootstrap.js +11 -8
- package/dist/state-cleanup.js +5 -19
- package/dist/state-doctor.js +213 -9
- package/dist/task-claim.js +1 -1
- package/dist/validate.js +1 -1
- package/dist/workspace-init.js +61 -61
- package/dist/wu-block.js +1 -1
- package/dist/wu-brief.js +1 -1
- package/dist/wu-claim.js +1 -1
- package/dist/wu-cleanup.js +1 -1
- package/dist/wu-create.js +3 -3
- package/dist/wu-delegate.js +1 -1
- package/dist/wu-deps.js +1 -1
- package/dist/wu-done.js +66 -34
- package/dist/wu-edit.js +1 -1
- package/dist/wu-infer-lane.js +1 -1
- package/dist/wu-preflight.js +1 -1
- package/dist/wu-prep.js +1 -1
- package/dist/wu-proto.js +1 -1
- package/dist/wu-prune.js +1 -1
- package/dist/wu-recover.js +1 -1
- package/dist/wu-release.js +1 -1
- package/dist/wu-repair.js +1 -1
- package/dist/wu-sandbox.js +40 -27
- package/dist/wu-status.js +1 -1
- package/dist/wu-unblock.js +1 -1
- package/dist/wu-unlock-lane.js +1 -1
- package/dist/wu-validate.js +1 -1
- package/package.json +12 -8
- package/packs/software-delivery/constants.ts +10 -0
- package/packs/software-delivery/extensions.ts +140 -0
- package/packs/software-delivery/gate-policies.ts +134 -0
- package/packs/software-delivery/index.ts +8 -0
- package/packs/software-delivery/manifest-schema.ts +236 -0
- package/packs/software-delivery/manifest.ts +417 -0
- package/packs/software-delivery/manifest.yaml +711 -0
- package/packs/software-delivery/pack-registration.ts +113 -0
- package/packs/software-delivery/tool-impl/agent-tools.ts +263 -0
- package/packs/software-delivery/tool-impl/delegation-tools.ts +66 -0
- package/packs/software-delivery/tool-impl/flow-metrics-tools.ts +219 -0
- package/packs/software-delivery/tool-impl/git-runner.ts +113 -0
- package/packs/software-delivery/tool-impl/git-tools.ts +316 -0
- package/packs/software-delivery/tool-impl/index.ts +15 -0
- package/packs/software-delivery/tool-impl/initiative-orchestration-tools.ts +720 -0
- package/packs/software-delivery/tool-impl/lane-lock.ts +246 -0
- package/packs/software-delivery/tool-impl/memory-tools.ts +415 -0
- package/packs/software-delivery/tool-impl/pending-runtime-tools.ts +21 -0
- package/packs/software-delivery/tool-impl/runtime-cli-adapter.ts +328 -0
- package/packs/software-delivery/tool-impl/runtime-native-tools.ts +687 -0
- package/packs/software-delivery/tool-impl/worker-loader.ts +52 -0
- package/packs/software-delivery/tool-impl/worktree-tools.ts +46 -0
- package/packs/software-delivery/tool-impl/wu-lifecycle-tools.ts +759 -0
- package/packs/software-delivery/tools/delegation-tools.ts +23 -0
- package/packs/software-delivery/tools/git-tools.ts +55 -0
- package/packs/software-delivery/tools/index.ts +8 -0
- package/packs/software-delivery/tools/lane-lock-tool.ts +37 -0
- package/packs/software-delivery/tools/types.ts +71 -0
- package/packs/software-delivery/tools/worktree-tools.ts +49 -0
- package/templates/core/LUMENFLOW.md.template +3 -3
- package/templates/core/ai/onboarding/agent-invocation-guide.md.template +1 -1
- package/templates/core/ai/onboarding/lumenflow-force-usage.md.template +1 -1
- package/templates/core/ai/onboarding/quick-ref-commands.md.template +5 -5
- package/templates/core/ai/onboarding/starting-prompt.md.template +3 -3
- package/templates/core/ai/onboarding/vendor-support.md.template +1 -1
- package/templates/core/ai/onboarding/wu-create-checklist.md.template +1 -1
- package/dist/agent-issues-query.js.map +0 -1
- package/dist/agent-log-issue.js.map +0 -1
- package/dist/agent-session-end.js.map +0 -1
- package/dist/agent-session.js.map +0 -1
- package/dist/backlog-prune.js.map +0 -1
- package/dist/cli-entry-point.js +0 -149
- package/dist/cli-entry-point.js.map +0 -1
- package/dist/commands/integrate.js.map +0 -1
- package/dist/commands.js.map +0 -1
- package/dist/config-get.js.map +0 -1
- package/dist/config-set.js.map +0 -1
- package/dist/delegation-list.js.map +0 -1
- package/dist/deps-add.js +0 -259
- package/dist/deps-add.js.map +0 -1
- package/dist/deps-remove.js +0 -105
- package/dist/deps-remove.js.map +0 -1
- package/dist/docs-sync.js.map +0 -1
- package/dist/doctor.js.map +0 -1
- package/dist/file-delete.js.map +0 -1
- package/dist/file-edit.js.map +0 -1
- package/dist/file-read.js.map +0 -1
- package/dist/file-write.js.map +0 -1
- package/dist/flow-bottlenecks.js.map +0 -1
- package/dist/flow-report.js.map +0 -1
- package/dist/formatters.js +0 -151
- package/dist/formatters.js.map +0 -1
- package/dist/gate-defaults.js +0 -131
- package/dist/gate-defaults.js.map +0 -1
- package/dist/gate-registry.js +0 -73
- package/dist/gate-registry.js.map +0 -1
- package/dist/gates-graceful-degradation.js +0 -153
- package/dist/gates-graceful-degradation.js.map +0 -1
- package/dist/gates-plan-resolvers.js +0 -152
- package/dist/gates-plan-resolvers.js.map +0 -1
- package/dist/gates-runners.js +0 -509
- package/dist/gates-runners.js.map +0 -1
- package/dist/gates-types.js +0 -4
- package/dist/gates-types.js.map +0 -1
- package/dist/gates-utils.js +0 -323
- package/dist/gates-utils.js.map +0 -1
- package/dist/gates.js.map +0 -1
- package/dist/git-branch.js.map +0 -1
- package/dist/git-diff.js.map +0 -1
- package/dist/git-log.js.map +0 -1
- package/dist/git-status.js.map +0 -1
- package/dist/guard-locked.js +0 -172
- package/dist/guard-locked.js.map +0 -1
- package/dist/guard-main-branch.js +0 -217
- package/dist/guard-main-branch.js.map +0 -1
- package/dist/guard-worktree-commit.js +0 -163
- package/dist/guard-worktree-commit.js.map +0 -1
- package/dist/hooks/auto-checkpoint-utils.js +0 -54
- package/dist/hooks/auto-checkpoint-utils.js.map +0 -1
- package/dist/hooks/enforcement-checks.js +0 -399
- package/dist/hooks/enforcement-checks.js.map +0 -1
- package/dist/hooks/enforcement-generator.js +0 -139
- package/dist/hooks/enforcement-generator.js.map +0 -1
- package/dist/hooks/enforcement-sync.js +0 -385
- package/dist/hooks/enforcement-sync.js.map +0 -1
- package/dist/hooks/generators/auto-checkpoint.js +0 -125
- package/dist/hooks/generators/auto-checkpoint.js.map +0 -1
- package/dist/hooks/generators/enforce-worktree.js +0 -190
- package/dist/hooks/generators/enforce-worktree.js.map +0 -1
- package/dist/hooks/generators/index.js +0 -18
- package/dist/hooks/generators/index.js.map +0 -1
- package/dist/hooks/generators/pre-compact-checkpoint.js +0 -136
- package/dist/hooks/generators/pre-compact-checkpoint.js.map +0 -1
- package/dist/hooks/generators/require-wu.js +0 -117
- package/dist/hooks/generators/require-wu.js.map +0 -1
- package/dist/hooks/generators/session-start-recovery.js +0 -103
- package/dist/hooks/generators/session-start-recovery.js.map +0 -1
- package/dist/hooks/generators/signal-utils.js +0 -54
- package/dist/hooks/generators/signal-utils.js.map +0 -1
- package/dist/hooks/generators/warn-incomplete.js +0 -67
- package/dist/hooks/generators/warn-incomplete.js.map +0 -1
- package/dist/hooks/index.js +0 -10
- package/dist/hooks/index.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-detection.js +0 -230
- package/dist/init-detection.js.map +0 -1
- package/dist/init-lane-validation.js +0 -143
- package/dist/init-lane-validation.js.map +0 -1
- package/dist/init-scaffolding.js +0 -158
- package/dist/init-scaffolding.js.map +0 -1
- package/dist/init-templates.js +0 -1964
- package/dist/init-templates.js.map +0 -1
- package/dist/init.js.map +0 -1
- package/dist/initiative-add-wu.js.map +0 -1
- package/dist/initiative-bulk-assign-wus.js.map +0 -1
- package/dist/initiative-create.js.map +0 -1
- package/dist/initiative-edit.js.map +0 -1
- package/dist/initiative-list.js.map +0 -1
- package/dist/initiative-plan.js.map +0 -1
- package/dist/initiative-remove-wu.js.map +0 -1
- package/dist/initiative-status.js.map +0 -1
- package/dist/lane-edit.js.map +0 -1
- package/dist/lane-health.js.map +0 -1
- package/dist/lane-lifecycle-process.js +0 -366
- package/dist/lane-lifecycle-process.js.map +0 -1
- package/dist/lane-lock.js.map +0 -1
- package/dist/lane-setup.js.map +0 -1
- package/dist/lane-status.js.map +0 -1
- package/dist/lane-suggest.js.map +0 -1
- package/dist/lane-validate.js.map +0 -1
- package/dist/lifecycle-regression-harness.js +0 -181
- package/dist/lifecycle-regression-harness.js.map +0 -1
- package/dist/lumenflow-upgrade.js.map +0 -1
- package/dist/mem-checkpoint.js.map +0 -1
- package/dist/mem-cleanup.js.map +0 -1
- package/dist/mem-context.js.map +0 -1
- package/dist/mem-create.js.map +0 -1
- package/dist/mem-delete.js.map +0 -1
- package/dist/mem-export.js.map +0 -1
- package/dist/mem-inbox.js.map +0 -1
- package/dist/mem-index.js +0 -214
- package/dist/mem-index.js.map +0 -1
- package/dist/mem-init.js.map +0 -1
- package/dist/mem-profile.js +0 -210
- package/dist/mem-profile.js.map +0 -1
- package/dist/mem-promote.js +0 -257
- package/dist/mem-promote.js.map +0 -1
- package/dist/mem-ready.js.map +0 -1
- package/dist/mem-recover.js.map +0 -1
- package/dist/mem-signal.js.map +0 -1
- package/dist/mem-start.js.map +0 -1
- package/dist/mem-summarize.js.map +0 -1
- package/dist/mem-triage.js.map +0 -1
- package/dist/merge-block.js +0 -225
- package/dist/merge-block.js.map +0 -1
- package/dist/metrics-cli.js.map +0 -1
- package/dist/metrics-snapshot.js.map +0 -1
- package/dist/onboard.js.map +0 -1
- package/dist/onboarding-smoke-test.js +0 -418
- package/dist/onboarding-smoke-test.js.map +0 -1
- package/dist/orchestrate-init-status.js.map +0 -1
- package/dist/orchestrate-initiative.js.map +0 -1
- package/dist/orchestrate-monitor.js.map +0 -1
- package/dist/pack-author.js.map +0 -1
- package/dist/pack-hash.js.map +0 -1
- package/dist/pack-install.js.map +0 -1
- package/dist/pack-publish.js.map +0 -1
- package/dist/pack-scaffold.js.map +0 -1
- package/dist/pack-search.js.map +0 -1
- package/dist/pack-validate.js.map +0 -1
- package/dist/plan-create.js.map +0 -1
- package/dist/plan-edit.js.map +0 -1
- package/dist/plan-link.js.map +0 -1
- package/dist/plan-promote.js.map +0 -1
- package/dist/public-manifest.js +0 -920
- package/dist/public-manifest.js.map +0 -1
- package/dist/release.js.map +0 -1
- package/dist/rotate-progress.js +0 -253
- package/dist/rotate-progress.js.map +0 -1
- package/dist/session-coordinator.js +0 -303
- package/dist/session-coordinator.js.map +0 -1
- package/dist/shared-validators.js +0 -81
- package/dist/shared-validators.js.map +0 -1
- package/dist/signal-cleanup.js.map +0 -1
- package/dist/state-bootstrap.js.map +0 -1
- package/dist/state-cleanup.js.map +0 -1
- package/dist/state-doctor-fix.js +0 -226
- package/dist/state-doctor-fix.js.map +0 -1
- package/dist/state-doctor-stamps.js +0 -23
- package/dist/state-doctor-stamps.js.map +0 -1
- package/dist/state-doctor.js.map +0 -1
- package/dist/strict-progress.js +0 -255
- package/dist/strict-progress.js.map +0 -1
- package/dist/sync-templates.js.map +0 -1
- package/dist/task-claim.js.map +0 -1
- package/dist/trace-gen.js +0 -401
- package/dist/trace-gen.js.map +0 -1
- package/dist/validate-agent-skills.js +0 -223
- package/dist/validate-agent-skills.js.map +0 -1
- package/dist/validate-agent-sync.js +0 -151
- package/dist/validate-agent-sync.js.map +0 -1
- package/dist/validate-backlog-sync.js +0 -77
- package/dist/validate-backlog-sync.js.map +0 -1
- package/dist/validate-skills-spec.js +0 -211
- package/dist/validate-skills-spec.js.map +0 -1
- package/dist/validate.js.map +0 -1
- package/dist/validator-defaults.js +0 -107
- package/dist/validator-defaults.js.map +0 -1
- package/dist/validator-registry.js +0 -71
- package/dist/validator-registry.js.map +0 -1
- package/dist/workspace-init.js.map +0 -1
- package/dist/wu-block.js.map +0 -1
- package/dist/wu-brief.js.map +0 -1
- package/dist/wu-claim-branch.js +0 -123
- package/dist/wu-claim-branch.js.map +0 -1
- package/dist/wu-claim-cloud.js +0 -79
- package/dist/wu-claim-cloud.js.map +0 -1
- package/dist/wu-claim-mode.js +0 -82
- package/dist/wu-claim-mode.js.map +0 -1
- package/dist/wu-claim-output.js +0 -85
- package/dist/wu-claim-output.js.map +0 -1
- package/dist/wu-claim-repair-guidance.js +0 -12
- package/dist/wu-claim-repair-guidance.js.map +0 -1
- package/dist/wu-claim-resume-handler.js +0 -87
- package/dist/wu-claim-resume-handler.js.map +0 -1
- package/dist/wu-claim-state.js +0 -581
- package/dist/wu-claim-state.js.map +0 -1
- package/dist/wu-claim-validation.js +0 -457
- package/dist/wu-claim-validation.js.map +0 -1
- package/dist/wu-claim-worktree.js +0 -223
- package/dist/wu-claim-worktree.js.map +0 -1
- package/dist/wu-claim.js.map +0 -1
- package/dist/wu-cleanup-cloud.js +0 -78
- package/dist/wu-cleanup-cloud.js.map +0 -1
- package/dist/wu-cleanup.js.map +0 -1
- package/dist/wu-code-path-coverage.js +0 -83
- package/dist/wu-code-path-coverage.js.map +0 -1
- package/dist/wu-create-cloud.js +0 -30
- package/dist/wu-create-cloud.js.map +0 -1
- package/dist/wu-create-content.js +0 -264
- package/dist/wu-create-content.js.map +0 -1
- package/dist/wu-create-readiness.js +0 -59
- package/dist/wu-create-readiness.js.map +0 -1
- package/dist/wu-create-validation.js +0 -128
- package/dist/wu-create-validation.js.map +0 -1
- package/dist/wu-create.js.map +0 -1
- package/dist/wu-delegate.js.map +0 -1
- package/dist/wu-delete.js.map +0 -1
- package/dist/wu-deps.js.map +0 -1
- package/dist/wu-done-auto-cleanup.js +0 -203
- package/dist/wu-done-auto-cleanup.js.map +0 -1
- package/dist/wu-done-check.js +0 -38
- package/dist/wu-done-check.js.map +0 -1
- package/dist/wu-done-cloud.js +0 -48
- package/dist/wu-done-cloud.js.map +0 -1
- package/dist/wu-done-decay.js +0 -86
- package/dist/wu-done-decay.js.map +0 -1
- package/dist/wu-done.js.map +0 -1
- package/dist/wu-edit-operations.js +0 -399
- package/dist/wu-edit-operations.js.map +0 -1
- package/dist/wu-edit-validators.js +0 -282
- package/dist/wu-edit-validators.js.map +0 -1
- package/dist/wu-edit.js.map +0 -1
- package/dist/wu-infer-lane.js.map +0 -1
- package/dist/wu-preflight.js.map +0 -1
- package/dist/wu-prep.js.map +0 -1
- package/dist/wu-proto.js.map +0 -1
- package/dist/wu-prune.js.map +0 -1
- package/dist/wu-recover.js.map +0 -1
- package/dist/wu-release.js.map +0 -1
- package/dist/wu-repair.js.map +0 -1
- package/dist/wu-sandbox.js.map +0 -1
- package/dist/wu-spawn-completion.js +0 -33
- package/dist/wu-spawn-completion.js.map +0 -1
- package/dist/wu-spawn-prompt-builders.js +0 -1197
- package/dist/wu-spawn-prompt-builders.js.map +0 -1
- package/dist/wu-spawn-strategy-resolver.js +0 -322
- package/dist/wu-spawn-strategy-resolver.js.map +0 -1
- package/dist/wu-spawn.js +0 -59
- package/dist/wu-spawn.js.map +0 -1
- package/dist/wu-state-cloud.js +0 -41
- package/dist/wu-state-cloud.js.map +0 -1
- package/dist/wu-status.js.map +0 -1
- package/dist/wu-unblock.js.map +0 -1
- package/dist/wu-unlock-lane.js.map +0 -1
- package/dist/wu-validate.js.map +0 -1
|
@@ -1,457 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2026 Hellmai Ltd
|
|
2
|
-
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
/**
|
|
4
|
-
* @file wu-claim-validation.ts
|
|
5
|
-
* @description Pre-flight validation, schema validation, lane/spec checks for wu:claim.
|
|
6
|
-
*
|
|
7
|
-
* WU-1649: Extracted from wu-claim.ts to reduce orchestration complexity.
|
|
8
|
-
* All functions are mechanical extractions preserving original behavior.
|
|
9
|
-
*/
|
|
10
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
11
|
-
import { access, readFile } from 'node:fs/promises';
|
|
12
|
-
import { parseYAML } from '@lumenflow/core/wu-yaml';
|
|
13
|
-
import { assertTransition } from '@lumenflow/core/state-machine';
|
|
14
|
-
import { checkLaneFree, validateLaneFormat, checkWipJustification, } from '@lumenflow/core/lane-checker';
|
|
15
|
-
import { validateLaneCodePaths, logLaneValidationWarnings, } from '@lumenflow/core/code-path-validator';
|
|
16
|
-
import { detectConflicts } from '@lumenflow/core/code-paths-overlap';
|
|
17
|
-
import { getGitForCwd } from '@lumenflow/core/git-adapter';
|
|
18
|
-
import { die, getErrorMessage } from '@lumenflow/core/error-handler';
|
|
19
|
-
import { CLAIMED_MODES, LOG_PREFIX, WU_STATUS, STATUS_SECTIONS, STRING_LITERALS, FILE_SYSTEM, resolveWUStatus, } from '@lumenflow/core/wu-constants';
|
|
20
|
-
import { emitWUFlowEvent } from '@lumenflow/core/telemetry';
|
|
21
|
-
import { checkLaneForOrphanDoneWU, repairWUInconsistency, } from '@lumenflow/core/wu-consistency-checker';
|
|
22
|
-
import { validateWU } from '@lumenflow/core/wu-schema';
|
|
23
|
-
import { WU_PATHS } from '@lumenflow/core/wu-paths';
|
|
24
|
-
import { withMicroWorktree } from '@lumenflow/core/micro-worktree';
|
|
25
|
-
import { validateSpecCompleteness } from '@lumenflow/core/wu-done-validators';
|
|
26
|
-
import { hasManualTests, isDocsOrProcessType } from '@lumenflow/core/wu-type-helpers';
|
|
27
|
-
import { detectFixableIssues, applyFixes, formatIssues } from '@lumenflow/core/wu-yaml-fixer';
|
|
28
|
-
import { getConfig } from '@lumenflow/core/config';
|
|
29
|
-
import { MICRO_WORKTREE_OPERATIONS, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
|
|
30
|
-
const PREFIX = LOG_PREFIX.CLAIM;
|
|
31
|
-
export function resolveClaimStatus(status) {
|
|
32
|
-
return resolveWUStatus(status, WU_STATUS.READY);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Pre-flight validation: Check WU file exists and is valid BEFORE UnsafeAny git operations
|
|
36
|
-
* Prevents zombie worktrees when WU YAML is missing or malformed
|
|
37
|
-
*/
|
|
38
|
-
export function preflightValidateWU(WU_PATH, id) {
|
|
39
|
-
// Check file exists
|
|
40
|
-
if (!existsSync(WU_PATH)) {
|
|
41
|
-
die(`WU file not found: ${WU_PATH}\n\n` +
|
|
42
|
-
`Cannot claim a WU that doesn't exist.\n\n` +
|
|
43
|
-
`Options:\n` +
|
|
44
|
-
` 1. Create the WU first: pnpm wu:create --id ${id} --lane <lane> --title "..."\n` +
|
|
45
|
-
` 2. Check if the WU ID is correct\n` +
|
|
46
|
-
` 3. Check if the WU file was moved or deleted`);
|
|
47
|
-
}
|
|
48
|
-
// Parse and validate YAML structure
|
|
49
|
-
const text = readFileSync(WU_PATH, { encoding: FILE_SYSTEM.UTF8 });
|
|
50
|
-
let doc;
|
|
51
|
-
try {
|
|
52
|
-
doc = parseYAML(text);
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
die(`Failed to parse WU YAML ${WU_PATH}\n\n` +
|
|
56
|
-
`YAML parsing error: ${getErrorMessage(e)}\n\n` +
|
|
57
|
-
`Fix the YAML syntax errors before claiming.`);
|
|
58
|
-
}
|
|
59
|
-
// Validate ID matches
|
|
60
|
-
if (!doc || doc.id !== id) {
|
|
61
|
-
die(`WU YAML id mismatch in ${WU_PATH}\n\n` +
|
|
62
|
-
`Expected: ${id}\n` +
|
|
63
|
-
`Found: ${doc?.id || 'missing'}\n\n` +
|
|
64
|
-
`Fix the id field in the WU YAML before claiming.`);
|
|
65
|
-
}
|
|
66
|
-
// Validate state transition is allowed
|
|
67
|
-
const currentStatus = resolveClaimStatus(doc.status);
|
|
68
|
-
try {
|
|
69
|
-
assertTransition(currentStatus, WU_STATUS.IN_PROGRESS, id);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
die(`Cannot claim ${id} - invalid state transition\n\n` +
|
|
73
|
-
`Current status: ${currentStatus}\n` +
|
|
74
|
-
`Attempted transition: ${currentStatus} → in_progress\n\n` +
|
|
75
|
-
`Reason: ${getErrorMessage(error)}`);
|
|
76
|
-
}
|
|
77
|
-
return doc;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* WU-1361: Validate YAML schema at claim time
|
|
81
|
-
*
|
|
82
|
-
* Validates WU YAML against Zod schema AFTER git pull.
|
|
83
|
-
* Detects fixable issues BEFORE schema validation (so --fix can run even if schema fails).
|
|
84
|
-
* Returns fixable issues for application in worktree (WU-1361 fix).
|
|
85
|
-
*
|
|
86
|
-
* @param {string} WU_PATH - Path to WU YAML file
|
|
87
|
-
* @param {object} doc - Parsed WU YAML data
|
|
88
|
-
* @param {object} args - CLI arguments
|
|
89
|
-
* @param {boolean} args.fix - If true, issues will be fixed in worktree
|
|
90
|
-
* @returns {Array} Array of fixable issues to apply in worktree
|
|
91
|
-
*/
|
|
92
|
-
export function validateYAMLSchema(WU_PATH, doc, args) {
|
|
93
|
-
// WU-1361: Detect fixable issues BEFORE schema validation
|
|
94
|
-
// This allows --fix to work even when schema would fail
|
|
95
|
-
const fixableIssues = detectFixableIssues(doc);
|
|
96
|
-
if (fixableIssues.length > 0) {
|
|
97
|
-
if (args.fix) {
|
|
98
|
-
// WU-1425: Apply fixes to in-memory doc so validation passes
|
|
99
|
-
// Note: This does NOT modify the file on disk - only the in-memory object
|
|
100
|
-
// The actual file fix happens when the doc is written to the worktree
|
|
101
|
-
applyFixes(doc, fixableIssues);
|
|
102
|
-
console.log(`${PREFIX} Detected ${fixableIssues.length} fixable YAML issue(s) (will fix in worktree):`);
|
|
103
|
-
console.log(formatIssues(fixableIssues));
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
// Report issues and suggest --fix
|
|
107
|
-
console.warn(`${PREFIX} Detected ${fixableIssues.length} fixable YAML issue(s):`);
|
|
108
|
-
console.warn(formatIssues(fixableIssues));
|
|
109
|
-
console.warn(`${PREFIX} Run with --fix to auto-repair these issues.`);
|
|
110
|
-
// Continue - Zod validation will provide the detailed error
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
// Now run Zod schema validation
|
|
114
|
-
const schemaResult = validateWU(doc);
|
|
115
|
-
if (!schemaResult.success) {
|
|
116
|
-
const issueList = schemaResult.error.issues
|
|
117
|
-
.map((i) => {
|
|
118
|
-
const pathText = i.path.map(String).join('.');
|
|
119
|
-
return ` - ${pathText}: ${i.message}`;
|
|
120
|
-
})
|
|
121
|
-
.join(STRING_LITERALS.NEWLINE);
|
|
122
|
-
const tip = fixableIssues.length > 0 ? 'Tip: Run with --fix to auto-repair common issues.\n' : '';
|
|
123
|
-
die(`WU YAML schema validation failed for ${WU_PATH}:\n\n${issueList}\n\nFix these issues before claiming.\n${tip}`);
|
|
124
|
-
}
|
|
125
|
-
// WU-1361: Return fixable issues for application in worktree
|
|
126
|
-
return args.fix ? fixableIssues : [];
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* WU-1508: Enforce tests.manual at claim time for non-doc/process WUs.
|
|
130
|
-
* This is non-bypassable (independent of --allow-incomplete) to fail early.
|
|
131
|
-
*/
|
|
132
|
-
export function validateManualTestsForClaim(doc, id) {
|
|
133
|
-
if (isDocsOrProcessType(doc?.type)) {
|
|
134
|
-
return { valid: true };
|
|
135
|
-
}
|
|
136
|
-
if (hasManualTests(doc?.tests)) {
|
|
137
|
-
return { valid: true };
|
|
138
|
-
}
|
|
139
|
-
return {
|
|
140
|
-
valid: false,
|
|
141
|
-
error: `${id}: Missing required tests.manual for non-documentation WU.\n` +
|
|
142
|
-
`Add at least one manual verification step under tests.manual before claiming.`,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Handle orphan WU check and auto-repair (WU-1276)
|
|
147
|
-
* WU-1426: Commits repair changes to avoid dirty working tree blocking claim
|
|
148
|
-
* WU-1437: Use pushOnly micro-worktree to keep local main pristine
|
|
149
|
-
*/
|
|
150
|
-
export async function handleOrphanCheck(lane, id) {
|
|
151
|
-
const orphanCheck = (await checkLaneForOrphanDoneWU(lane, id));
|
|
152
|
-
if (orphanCheck.valid)
|
|
153
|
-
return;
|
|
154
|
-
// Try auto-repair for single orphan
|
|
155
|
-
if (orphanCheck.orphans.length === 1) {
|
|
156
|
-
const orphanId = orphanCheck.orphans[0];
|
|
157
|
-
console.log(`${PREFIX} Auto-repairing orphan: ${orphanId}`);
|
|
158
|
-
// WU-1437: Use micro-worktree with pushOnly to keep main pristine
|
|
159
|
-
await withMicroWorktree({
|
|
160
|
-
operation: MICRO_WORKTREE_OPERATIONS.ORPHAN_REPAIR,
|
|
161
|
-
id: orphanId,
|
|
162
|
-
logPrefix: PREFIX,
|
|
163
|
-
pushOnly: true,
|
|
164
|
-
execute: async ({ worktreePath }) => {
|
|
165
|
-
// Run repair inside micro-worktree using projectRoot option
|
|
166
|
-
const report = orphanCheck.reports?.[0];
|
|
167
|
-
if (!report) {
|
|
168
|
-
throw new Error(`Lane ${lane} has orphan done WU: ${orphanId} with missing report`);
|
|
169
|
-
}
|
|
170
|
-
const repairResult = await repairWUInconsistency(report, {
|
|
171
|
-
projectRoot: worktreePath,
|
|
172
|
-
});
|
|
173
|
-
if (repairResult.failed > 0) {
|
|
174
|
-
throw new Error(`Lane ${lane} has orphan done WU: ${orphanId}\n` +
|
|
175
|
-
`Auto-repair failed. Fix manually with: pnpm wu:repair --id ${orphanId}`);
|
|
176
|
-
}
|
|
177
|
-
if (repairResult.repaired === 0) {
|
|
178
|
-
// Nothing to repair - return empty result
|
|
179
|
-
return { commitMessage: null, files: [] };
|
|
180
|
-
}
|
|
181
|
-
// Return files for commit
|
|
182
|
-
// WU-1740: Include wu-events.jsonl to persist state store events
|
|
183
|
-
return {
|
|
184
|
-
commitMessage: `chore(repair): auto-repair orphan ${orphanId.toLowerCase()}`,
|
|
185
|
-
files: [
|
|
186
|
-
WU_PATHS.BACKLOG(),
|
|
187
|
-
WU_PATHS.STATUS(),
|
|
188
|
-
WU_PATHS.STAMP(orphanId),
|
|
189
|
-
LUMENFLOW_PATHS.WU_EVENTS,
|
|
190
|
-
],
|
|
191
|
-
};
|
|
192
|
-
},
|
|
193
|
-
});
|
|
194
|
-
console.log(`${PREFIX} Auto-repair successful`);
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
die(`Lane ${lane} has ${orphanCheck.orphans.length} orphan done WUs: ${orphanCheck.orphans.join(', ')}\n` +
|
|
198
|
-
`Fix with: pnpm wu:repair --id <WU-ID> for each, or pnpm wu:repair --all`);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Validate lane format with user-friendly error messages
|
|
202
|
-
*/
|
|
203
|
-
export function validateLaneFormatWithError(lane) {
|
|
204
|
-
try {
|
|
205
|
-
validateLaneFormat(lane);
|
|
206
|
-
}
|
|
207
|
-
catch (error) {
|
|
208
|
-
die(`Invalid lane format: ${getErrorMessage(error)}\n\n` +
|
|
209
|
-
`Valid formats:\n` +
|
|
210
|
-
` - Parent-only: "Operations", "Intelligence", "Experience", etc.\n` +
|
|
211
|
-
` - Sub-lane: "Operations: Tooling", "Intelligence: Prompts", etc.\n\n` +
|
|
212
|
-
`Format rules:\n` +
|
|
213
|
-
` - Single colon with EXACTLY one space after (e.g., "Parent: Subdomain")\n` +
|
|
214
|
-
` - No spaces before colon\n` +
|
|
215
|
-
` - No multiple colons\n\n` +
|
|
216
|
-
`See .lumenflow.config.yaml for valid parent lanes.`);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Handle lane occupancy check and enforce WIP limit policy
|
|
221
|
-
*
|
|
222
|
-
* WU-1016: Updated to support configurable WIP limits per lane.
|
|
223
|
-
* The WIP limit is read from .lumenflow.config.yaml and defaults to 1.
|
|
224
|
-
*/
|
|
225
|
-
export function handleLaneOccupancy(laneCheck, lane, id, force) {
|
|
226
|
-
if (laneCheck.free)
|
|
227
|
-
return;
|
|
228
|
-
if (laneCheck.error) {
|
|
229
|
-
die(`Lane check failed: ${laneCheck.error}`);
|
|
230
|
-
}
|
|
231
|
-
if (!laneCheck.occupiedBy)
|
|
232
|
-
return;
|
|
233
|
-
// WU-1016: Include WIP limit info in messages
|
|
234
|
-
const wipLimit = laneCheck.wipLimit ?? 1;
|
|
235
|
-
const currentCount = laneCheck.currentCount ?? 0;
|
|
236
|
-
const inProgressList = laneCheck.inProgressWUs?.join(', ') || laneCheck.occupiedBy;
|
|
237
|
-
if (force) {
|
|
238
|
-
console.warn(`${PREFIX} ⚠️ WARNING: Lane "${lane}" has ${currentCount}/${wipLimit} WUs in progress`);
|
|
239
|
-
console.warn(`${PREFIX} ⚠️ In progress: ${inProgressList}`);
|
|
240
|
-
console.warn(`${PREFIX} ⚠️ Forcing WIP limit override. Risk of worktree collision!`);
|
|
241
|
-
console.warn(`${PREFIX} ⚠️ Use only for P0 emergencies or manual recovery.`);
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
die(`Lane "${lane}" is at WIP limit (${currentCount}/${wipLimit}).\n\n` +
|
|
245
|
-
`In progress: ${inProgressList}\n\n` +
|
|
246
|
-
`LumenFlow enforces WIP limits per lane to maintain focus.\n` +
|
|
247
|
-
`Current limit for "${lane}": ${wipLimit} (configure in .lumenflow.config.yaml)\n\n` +
|
|
248
|
-
`Options:\n` +
|
|
249
|
-
` 1. Wait for a WU to complete or block\n` +
|
|
250
|
-
` 2. Choose a different lane\n` +
|
|
251
|
-
` 3. Increase wip_limit in .lumenflow.config.yaml\n` +
|
|
252
|
-
` 4. Use --force to override (P0 emergencies only)\n\n` +
|
|
253
|
-
// WU-1311: Use config-based status path
|
|
254
|
-
`To check lane status: grep "${STATUS_SECTIONS.IN_PROGRESS}" ${getConfig().directories.statusPath}`);
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Handle code path overlap detection (WU-901)
|
|
258
|
-
*/
|
|
259
|
-
export function handleCodePathOverlap(WU_PATH, STATUS_PATH, id, args) {
|
|
260
|
-
if (!existsSync(WU_PATH))
|
|
261
|
-
return;
|
|
262
|
-
const wuContent = readFileSync(WU_PATH, { encoding: FILE_SYSTEM.UTF8 });
|
|
263
|
-
const wuDoc = parseYAML(wuContent);
|
|
264
|
-
const codePaths = Array.isArray(wuDoc?.code_paths) ? wuDoc.code_paths : [];
|
|
265
|
-
if (codePaths.length === 0)
|
|
266
|
-
return;
|
|
267
|
-
const overlapCheck = detectConflicts(STATUS_PATH, codePaths, id);
|
|
268
|
-
emitWUFlowEvent({
|
|
269
|
-
script: 'wu-claim',
|
|
270
|
-
wu_id: id,
|
|
271
|
-
step: 'overlap_check',
|
|
272
|
-
conflicts_count: overlapCheck.conflicts.length,
|
|
273
|
-
forced: args.forceOverlap || false,
|
|
274
|
-
});
|
|
275
|
-
if (overlapCheck.hasBlocker && !args.forceOverlap) {
|
|
276
|
-
const conflictList = overlapCheck.conflicts
|
|
277
|
-
.map((c) => {
|
|
278
|
-
const displayedOverlaps = c.overlaps.slice(0, 3).join(', ');
|
|
279
|
-
const remainingCount = c.overlaps.length - 3;
|
|
280
|
-
const suffix = remainingCount > 0 ? ` (+${remainingCount} more)` : '';
|
|
281
|
-
return ` - ${c.wuid}: ${displayedOverlaps}${suffix}`;
|
|
282
|
-
})
|
|
283
|
-
.join(STRING_LITERALS.NEWLINE);
|
|
284
|
-
// WU-1311: Use config-based status path in error message
|
|
285
|
-
die(`Code path overlap detected with in-progress WUs:\n\n${conflictList}\n\n` +
|
|
286
|
-
`Merge conflicts are guaranteed if both WUs proceed.\n\n` +
|
|
287
|
-
`Options:\n` +
|
|
288
|
-
` 1. Wait for conflicting WU(s) to complete\n` +
|
|
289
|
-
` 2. Coordinate with agent working on conflicting WU\n` +
|
|
290
|
-
` 3. Use --force-overlap --reason "..." (emits telemetry for audit)\n\n` +
|
|
291
|
-
`To check WU status: grep "${STATUS_SECTIONS.IN_PROGRESS}" ${getConfig().directories.statusPath}`);
|
|
292
|
-
}
|
|
293
|
-
if (args.forceOverlap) {
|
|
294
|
-
if (!args.reason) {
|
|
295
|
-
die('--force-overlap requires --reason "explanation" for audit trail');
|
|
296
|
-
}
|
|
297
|
-
emitWUFlowEvent({
|
|
298
|
-
script: 'wu-claim',
|
|
299
|
-
wu_id: id,
|
|
300
|
-
event: 'overlap_forced',
|
|
301
|
-
reason: args.reason,
|
|
302
|
-
conflicts: overlapCheck.conflicts.map((c) => ({
|
|
303
|
-
wuid: c.wuid,
|
|
304
|
-
files: c.overlaps,
|
|
305
|
-
})),
|
|
306
|
-
});
|
|
307
|
-
console.warn(`${PREFIX} ⚠️ WARNING: Overlap forced with reason: ${args.reason}`);
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Validate branch-only mode can be used
|
|
312
|
-
*/
|
|
313
|
-
export async function validateBranchOnlyMode(STATUS_PATH, id) {
|
|
314
|
-
const branchOnlyCheck = await checkExistingBranchOnlyWU(STATUS_PATH, id);
|
|
315
|
-
if (branchOnlyCheck.hasBranchOnly) {
|
|
316
|
-
die(`Branch-Only mode does not support parallel WUs.\n\n` +
|
|
317
|
-
`Another Branch-Only WU is already in progress: ${branchOnlyCheck.existingWU}\n\n` +
|
|
318
|
-
`Options:\n` +
|
|
319
|
-
` 1. Complete ${branchOnlyCheck.existingWU} first (pnpm wu:done --id ${branchOnlyCheck.existingWU})\n` +
|
|
320
|
-
` 2. Block ${branchOnlyCheck.existingWU} (pnpm wu:block --id ${branchOnlyCheck.existingWU} --reason "...")\n` +
|
|
321
|
-
` 3. Use Worktree mode instead (omit --branch-only flag)\n\n` +
|
|
322
|
-
`Branch-Only mode works in the main checkout and cannot isolate parallel WUs.`);
|
|
323
|
-
}
|
|
324
|
-
// Ensure working directory is clean for Branch-Only mode
|
|
325
|
-
const status = await getGitForCwd().getStatus();
|
|
326
|
-
if (status) {
|
|
327
|
-
die(`Branch-Only mode requires a clean working directory.\n\n` +
|
|
328
|
-
`Uncommitted changes detected:\n${status}\n\n` +
|
|
329
|
-
`Options:\n` +
|
|
330
|
-
` 1. Commit or stash your changes\n` +
|
|
331
|
-
` 2. Use Worktree mode instead (omit --branch-only flag for isolated workspace)`);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Check if there's already a Branch-Only WU in progress
|
|
336
|
-
* Branch-Only mode doesn't support parallel WUs (only one WU at a time in main checkout)
|
|
337
|
-
* @param {string} statusPath - Path to status.md
|
|
338
|
-
* @param {string} currentWU - Current WU ID being claimed
|
|
339
|
-
* @returns {Promise<{hasBranchOnly: boolean, existingWU: string|null}>}
|
|
340
|
-
*/
|
|
341
|
-
async function checkExistingBranchOnlyWU(statusPath, currentWU) {
|
|
342
|
-
// Check file exists
|
|
343
|
-
try {
|
|
344
|
-
await access(statusPath);
|
|
345
|
-
}
|
|
346
|
-
catch {
|
|
347
|
-
return { hasBranchOnly: false, existingWU: null };
|
|
348
|
-
}
|
|
349
|
-
// Read file
|
|
350
|
-
const content = await readFile(statusPath, { encoding: FILE_SYSTEM.UTF8 });
|
|
351
|
-
const lines = content.split(STRING_LITERALS.NEWLINE);
|
|
352
|
-
// Find "In Progress" section
|
|
353
|
-
const startIdx = lines.findIndex((l) => l.trim().toLowerCase() === '## in progress');
|
|
354
|
-
if (startIdx === -1)
|
|
355
|
-
return { hasBranchOnly: false, existingWU: null };
|
|
356
|
-
let endIdx = lines.slice(startIdx + 1).findIndex((l) => l.startsWith('## '));
|
|
357
|
-
if (endIdx === -1)
|
|
358
|
-
endIdx = lines.length - startIdx - 1;
|
|
359
|
-
else
|
|
360
|
-
endIdx = startIdx + 1 + endIdx;
|
|
361
|
-
// Extract WU IDs from In Progress section
|
|
362
|
-
// Use RegExp.exec for sonarjs/prefer-regexp-exec compliance
|
|
363
|
-
const wuPattern = /\[?(WU-\d+)/i;
|
|
364
|
-
const inProgressWUs = lines
|
|
365
|
-
.slice(startIdx + 1, endIdx)
|
|
366
|
-
.map((line) => {
|
|
367
|
-
const match = wuPattern.exec(line);
|
|
368
|
-
return match ? match[1].toUpperCase() : null;
|
|
369
|
-
})
|
|
370
|
-
.filter((wuid) => Boolean(wuid))
|
|
371
|
-
.filter((wuid) => wuid !== currentWU); // exclude the WU we're claiming
|
|
372
|
-
// Check each in-progress WU for claimed_mode: branch-only
|
|
373
|
-
for (const wuid of inProgressWUs) {
|
|
374
|
-
const wuPath = WU_PATHS.WU(wuid);
|
|
375
|
-
// Check file exists
|
|
376
|
-
try {
|
|
377
|
-
await access(wuPath);
|
|
378
|
-
}
|
|
379
|
-
catch {
|
|
380
|
-
continue; // File doesn't exist, skip
|
|
381
|
-
}
|
|
382
|
-
try {
|
|
383
|
-
// Read file
|
|
384
|
-
const text = await readFile(wuPath, { encoding: FILE_SYSTEM.UTF8 });
|
|
385
|
-
const doc = parseYAML(text);
|
|
386
|
-
if (doc && doc.claimed_mode === CLAIMED_MODES.BRANCH_ONLY) {
|
|
387
|
-
return { hasBranchOnly: true, existingWU: wuid };
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
catch {
|
|
391
|
-
// ignore parse errors
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
return { hasBranchOnly: false, existingWU: null };
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Run all pre-flight validations on the WU.
|
|
398
|
-
* Called from main() after git fetch/pull but before lane lock acquisition.
|
|
399
|
-
*
|
|
400
|
-
* Returns the validated doc and fixable issues for worktree application.
|
|
401
|
-
*/
|
|
402
|
-
export async function runPreflightValidations(args, id, WU_PATH, STATUS_PATH) {
|
|
403
|
-
// PRE-FLIGHT VALIDATION (on post-pull data)
|
|
404
|
-
const doc = preflightValidateWU(WU_PATH, id);
|
|
405
|
-
const manualTestsCheck = validateManualTestsForClaim(doc, id);
|
|
406
|
-
if (manualTestsCheck.valid === false) {
|
|
407
|
-
die(manualTestsCheck.error);
|
|
408
|
-
}
|
|
409
|
-
const lane = args.lane;
|
|
410
|
-
if (!lane) {
|
|
411
|
-
die('Missing required --lane argument for wu:claim.');
|
|
412
|
-
}
|
|
413
|
-
await handleOrphanCheck(lane, id);
|
|
414
|
-
validateLaneFormatWithError(lane);
|
|
415
|
-
// WU-1187: Check for WIP justification when WIP > 1 (soft enforcement - warning only)
|
|
416
|
-
const wipJustificationCheck = checkWipJustification(lane);
|
|
417
|
-
if (wipJustificationCheck.warning) {
|
|
418
|
-
console.warn(`${PREFIX} ${wipJustificationCheck.warning}`);
|
|
419
|
-
}
|
|
420
|
-
// WU-1372: Lane-to-code_paths consistency check (advisory only, never blocks)
|
|
421
|
-
const laneValidation = validateLaneCodePaths(doc, lane);
|
|
422
|
-
logLaneValidationWarnings(laneValidation, PREFIX);
|
|
423
|
-
// WU-1361: YAML schema validation at claim time
|
|
424
|
-
// Returns fixable issues for application in worktree (not on main)
|
|
425
|
-
const fixableIssues = validateYAMLSchema(WU_PATH, doc, args);
|
|
426
|
-
// WU-1362: Spec completeness validation (fail-fast before expensive operations)
|
|
427
|
-
// Two-tier validation: Schema errors (above) are never bypassable; spec completeness is bypassable
|
|
428
|
-
const specResult = validateSpecCompleteness(doc, id);
|
|
429
|
-
if (!specResult.valid) {
|
|
430
|
-
const errorList = specResult.errors
|
|
431
|
-
.map((e) => ` - ${e}`)
|
|
432
|
-
.join(STRING_LITERALS.NEWLINE);
|
|
433
|
-
if (args.allowIncomplete) {
|
|
434
|
-
console.warn(`${PREFIX} ⚠️ Spec completeness warnings (bypassed with --allow-incomplete):`);
|
|
435
|
-
console.warn(errorList);
|
|
436
|
-
console.warn(`${PREFIX} Proceeding with incomplete spec. Fix before wu:done.`);
|
|
437
|
-
}
|
|
438
|
-
else {
|
|
439
|
-
die(`Spec completeness validation failed for ${WU_PATH}:\n\n${errorList}\n\n` +
|
|
440
|
-
`Fix these issues before claiming, or use --allow-incomplete to bypass.\n` +
|
|
441
|
-
`Note: Schema errors (placeholders, invalid structure) cannot be bypassed.`);
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
// Check lane occupancy (WIP=1 per sub-lane)
|
|
445
|
-
const laneCheck = checkLaneFree(STATUS_PATH, lane, id);
|
|
446
|
-
emitWUFlowEvent({
|
|
447
|
-
script: 'wu-claim',
|
|
448
|
-
wu_id: id,
|
|
449
|
-
lane,
|
|
450
|
-
step: 'lane_check',
|
|
451
|
-
occupied: !laneCheck.free,
|
|
452
|
-
occupiedBy: laneCheck.occupiedBy,
|
|
453
|
-
});
|
|
454
|
-
handleLaneOccupancy(laneCheck, lane, id, args.force);
|
|
455
|
-
return { doc, fixableIssues };
|
|
456
|
-
}
|
|
457
|
-
//# sourceMappingURL=wu-claim-validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wu-claim-validation.js","sourceRoot":"","sources":["../src/wu-claim-validation.ts"],"names":[],"mappings":"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"}
|