Skip to content

Runbook — documentation-standard gate (CVN-N014-EC-S17)

Story: CVN-N014-EC-S17 · ADR: 0101 · Epic: CVN-N014-EC Process Story — "runbook" ici = opération du gate, waiver, amendement (ADR-0101 Inv 3), pas un runbook d'incident runtime.

Per ADR-26 for runtime, but this gate is a dev-time / CI control; the entry point is the conformance check below.

Run the conformance check

# advisory (Phase 1) — warns, never blocks
python scripts/check_story_docs.py --cvn-id CVN-N014-XX-SYY

# gate mode (Phase 2) — exits non-zero on missing/empty required artifact
python scripts/check_story_docs.py --cvn-id CVN-N014-XX-SYY --blocking

# machine-readable
python scripts/check_story_docs.py --cvn-id CVN-N014-XX-SYY --json

Read the per-artifact status: OK (present, non-empty) · LINKED (runbook referenced from the hub) · NA (explicit N/A + rationale, conformant) · EMPTY / MISSING (gap → adapt or state N/A+rationale, ADR-0101 Inv 3).

Is my Story "substantial"? (decide the tier)

Substantial iff ≥1 objective trigger (Inv 2): prod-deployed code (excl. trivial config) · core-component / operational-safety impact · cross-team / governance impact · effort >5 person-days / >1 sprint / >5 points · explicit escalation to plan_review. Else → lightweight TEMPLATE_story_phases_docs.md (no full set).

Adapt, don't fake (non-empty compliance)

For a process/governance Story: "architecture" = process/system-interaction · "runbook" = this kind of gate-operation doc · "test strategy" = validation of the process/tooling change. A non-applicable artifact must state N/A + one-line rationale + reviewer acceptance — never an empty placeholder (the check flags EMPTY).

Waiver process

A waiver is allowed only with: rationale · owner · expiry date · reviewer approval. Record it in the Story hub (or the PR). CI recognizes waivers and reports them separately (they do not count as conformant nor as hard failures). Legacy plan-only closed Stories are waived by policy (see conformance audit P3).

Amend the standard

To change the standard: amend ADR-0101 (or add a companion ADR), update TEMPLATE_story_doc_canonical.md, and adjust check_story_docs.py + its tests in lockstep. ADR-0095 (diagnostic method invariants) is amended separately — do not fold diagnostic method into the universal ADR.

Advisory → blocking promotion (Phase 1 → Phase 2)

Promote the CI guardrail to blocking only when: backlog roadmap published · owner assigned · waiver path documented (this section) · ≥1 live example Story (CVN-N014-ED-S01 + this Story). The cutoff date applies blocking to new substantial work; legacy gaps block only a work item being advanced through a gate, never unrelated PRs. Rollback: revert the blocking flag in CI → back to advisory (no code/runtime impact).