Skip to content

Validation Rules

Purpose: Process Guard validation rules and FSM reference Detail Level: Overview with links to details


Process Guard validates delivery workflow changes at commit time using a Decider pattern. It enforces the 4-state FSM defined in PDR-005 and prevents common workflow violations.

6 validation rules | 4 FSM states | 3 protection levels


Rules are checked in order. Errors block commit; warnings are informational.

Rule IDSeverityDescription
completed-protectionerrorCompleted specs require unlock-reason tag to modify
invalid-status-transitionerrorStatus transitions must follow FSM path
scope-creeperrorActive specs cannot add new deliverables
session-scopewarningFile outside session scope
session-excludederrorFile explicitly excluded from session
deliverable-removedwarningDeliverable was removed from spec

Full error catalog with fix instructions


Valid transitions per PDR-005 MVP Workflow:

stateDiagram-v2
    [*] --> roadmap: new pattern
    roadmap --> active
    roadmap --> deferred
    active --> completed
    active --> roadmap: blocked/regressed
    deferred --> roadmap
    completed --> [*]: terminal

Valid Transitions:

  • roadmap -> active -> completed (normal flow)
  • active -> roadmap (blocked/regressed)
  • roadmap <-> deferred (parking)

Detailed transition matrix


Protection levels determine what modifications are allowed per status.

StatusProtectionCan Add DeliverablesNeeds Unlock
roadmapnoneYesNo
activescopeNoNo
completedhardNoYes
deferrednoneYesNo

Protection level details


Terminal window
# Pre-commit (default mode)
lint-process --staged
# CI pipeline with strict mode
lint-process --all --strict
# Override session scope checking
lint-process --staged --ignore-session
# Debug: show derived process state
lint-process --staged --show-state
FlagDescription
--stagedValidate staged files only (pre-commit)
--allValidate all tracked files (CI)
--strictTreat warnings as errors (exit 1)
--ignore-sessionSkip session scope validation
--show-stateDebug: show derived process state
--format jsonMachine-readable JSON output
CodeMeaning
0No errors (warnings allowed unless --strict)
1Errors found or warnings with --strict

Override mechanisms for exceptional situations.

SituationSolutionExample
Fix bug in completed specAdd unlock reason tag@libar-docs-unlock-reason:'Fix-typo'
Modify outside session scopeUse ignore flaglint-process --staged --ignore-session
CI treats warnings as errorsUse strict flaglint-process --all --strict