Skip to content

SOP-077 — Change management for the SOP system (add / modify / retire an SOP)

Guide

SOP-077 — Change management for the SOP system (add / modify / retire an SOP)

SOP · owner: Operations (Process Engineer). Layer: SOP/Runbook (docs/canon.md). This SOP governs changes to the SOP system itself — adding, modifying, or retiring an SOP and allocating its ID. It complements, does not duplicate, SOP-002 (docs/sop/change-management.md), which governs the generic document-change flow (propose → review → approve → version → publish). Where this SOP and SOP-002 overlap (review/approve/archive), SOP-002 is the home — this SOP links to it.

Interface Contract

  • Inputs: review passed ← from <Quality & Risk> · trigger: review passed
  • Inputs: binding arbitration call ← from <COO / Principal> · trigger: arbitration decided
  • Outputs: approved SOP / operating-model doc → to Archivist · trigger: artifact approved
  • Outputs: operating-model / canon doc added/changed → to Documentarian · trigger: document changed
  • Handoff trigger (in): an SOP draft is reviewed and ready for preservation
  • Handoff trigger (out): the COO (or doc owner) approves the SOP and it is archived
  • Definition of Done before handoff:
    • [ ] SOP carries a complete, parseable Interface Contract block
    • [ ] node scripts/handoff-reconcile.mjs reads GREEN (exit 0)
    • [ ] ID allocated in docs/sop/registry.md (Operations-assigned, never reused)
    • [ ] Archived (0 drift); canon updated if the doc was added/moved (SOP-002 DoD)
    • [ ] learnings captured to docs/knowledge/ if any

Purpose

A predictable path for changing the SOP system so every SOP has one global ID, one home (docs/sop/), a parseable Interface Contract, and a green reconciler — and so a new SOP wires into CI rather than drifting.

When to use

Adding a new recurring procedure, modifying an existing SOP, retiring a superseded one, or allocating an SOP-NNN ID. For a one-off document change, use SOP-002 instead.

Flow

flowchart LR
  P["Propose<br/>title · owner · purpose"] --> I["Allocate ID<br/>(registry band)"]
  I --> Dr["Draft<br/>template + Interface Contract"]
  Dr --> Rc{"Reconcile<br/>GREEN?"}
  Rc -->|red| Dr
  Rc -->|green| Ap["Approve<br/>(SOP-002)"]
  Ap --> Ar["Archive + canon"]
  classDef s fill:#1d4ed8,color:#fff,stroke:#1e3a8a
  classDef d fill:#0f766e,color:#fff,stroke:#134e4a
  class P,I,Dr,Ap,Ar s
  class Rc d

Text fallback: Propose (send Operations the title, owner unit, one-line purpose) → Allocate ID (Operations assigns the next free SOP-NNN in the owner’s band and adds the registry row) → Draft from templates/sop.md with a complete Interface Contract block → Reconcile (node scripts/handoff-reconcile.mjs; if RED, fix and re-run) → Approve via SOP-002’s approver-by-class flow → Archive (Archivist, 0 drift) and update canon if a doc was added/moved.

Steps

  1. Propose. Send Operations the title, owner unit, and one-line purpose. Do not self-assign an ID.
  2. Allocate the ID. Operations picks the next free SOP-NNN in the owner’s band (docs/sop/registry.md allocation table), never reusing a number, and adds the ledger row.
  3. Draft the SOP flat in docs/sop/ from templates/sop.md, including a complete, parseable Interface Contract block (interface-contract-spec.md §1). Every trigger: value must be a verbatim phrase from docs/handoff-triggers.md; if a new trigger is needed, report it to Operations (reuse-beats-add) — never invent inline.
  4. Reconcile. Run node scripts/handoff-reconcile.mjs. Resolve every defect (GAP / OVERLAP / UNREGISTERED TRIGGER) until GREEN. An overlap escalates to canon RACI.
  5. Approve per SOP-002’s approver-by-class table (SOP/runbook → Operations or doc owner).
  6. Archive (Archivist, artifact approved) and update docs/canon.md if a doc was added/moved/retired (document changed to the Documentarian).
  7. Retire (if applicable): mark the registry row superseded, link the replacement; the ID is never reused.

Roles / approvers

Step Who
Propose / draft the owning agent
Allocate ID Operations (Process Engineer) — numbering authority
Approve SOP-002 approver-by-class (Operations or doc owner; COO for Operations charters)
Archive Archivist
Canon update Documentarian

Guardrails

  • One global ID space, never self-assigned, never reused (docs/sop/registry.md).
  • One home per SOP — flat in docs/sop/; nothing under docs/units/**/sops/.
  • No green, no done — the reconciler is the gate (GR-2); a defect blocks approval.
  • Draw triggers from the registry; report additions, do not invent inline (interface-contract-spec.md §1.2).
  • Mirrors SOP-002 for review/approve/archive — link, do not duplicate (CONTRIBUTING.md).

See also: docs/sop/change-management.md (SOP-002) · docs/sop/registry.md · docs/sop/SOP-078-handoff-reconciliation.md · docs/handoff-triggers.md · interface-contract-spec.md.