Skip to main content
manual page/ ADRs

ADR-0120 — Re-baselining: reconciling when reality has drifted from the artifacts

Sections
4
Format
Markdown
Order
156 / 156

Context

Adopters and agents make changes without writing artifacts — a hotfix, a fast iteration, a design tweak shipped straight to the code. Over time the specs no longer describe what was built: requirements reality outran, acceptance criteria that no longer hold, whole features with no spec. The artifacts and the code disagree.

Suspec has the pieces to recover but never named the procedure. Inventory maps current code (ADR-0068). Specs are living and support supersession (ADR-0103, ADR-0108). The harness is reconcile-only — it surfaces drift, it never blocks (ADR-0077). The staleness signals catch the mechanical cases — a stale review packet (ADR-0107), status/spec incoherence (ADR-0116). What was missing is the answer to "the code drifted from the spec — now what?"

Decision

Drift is expected, not a failure. When reality and the artifacts disagree, you re-baseline: trust the code, reconcile the specs to it, and record the gap. Suspec never punishes the drift — it gives a procedure to make the artifacts true again. The re-baseline pass, when you notice the mismatch (or a coherence check flags it):

  1. Inventory the current reality (ADR-0068). Map what the code actually is now, with evidence. Read the code, not the stale spec.
  2. Audit the gap. Record what drifted — which specs reality outran, which acceptance criteria no longer hold, what shipped with no spec. Observation only: severity and evidence, no prescriptions.
  3. Re-baseline the specs. For each drifted requirement: if the change was intended, revise the spec or its AC to match what was built, or mark the spec superseded; if reality is wrong, that is a finding, not a re-baseline. The spec is intent — reconciliation makes it describe what is true.
  4. Record the drift as a finding. The durable lesson — that changes landed without artifacts, and what to watch — so the gap is a recorded reconciliation, not a silent reset.
  5. Update the board to the re-baselined state.

The honest scope: Suspec does not auto-detect semantic code-vs-spec drift — that is review and human judgment. The mechanical cases (a stale evidence hash, a status/spec mismatch) are flagged by the existing signals; the rest is a triggered, human-run reconciliation. Level: convention.

Consequences

  • The brownfield doc gains a re-baseline note: Inventory → Audit → re-baseline the specs → record the finding is the recovery path when reality has drifted.
  • Re-baselining is the same machinery as adoption into an existing codebase (Inventory first), pointed at a workspace whose own specs went stale.
  • It stays reconcile-only: the procedure recovers truth; it never gates the work that caused the drift.

Status

Accepted. Extends ADR-0068 and the living specs (ADR-0103, ADR-0108); relates ADR-0096, ADR-0116.

Starter kit: Set up a workspace