OSIIX Library / Case Study

When a Single Source of Truth Migration Leaves Stale State Behind

A case study of a legacy copy that remained outside the canonical update path

Type
Case study
Status
Published
Updated
2026-10-12
Author
mars70s
Overview

About this article

In this case, the correct Single Source of Truth (SSOT) was introduced. But at the migration commit, the mutable state copy left in an older document was already inconsistent with WORK_STATUS. Later updates followed the correct canonical path and widened the discrepancy.

This was therefore not simply a matter of “someone forgot to update an old file.” The central issue was that the migration to the new authority had not also removed or converted every legacy mutable copy.

Central claim: Declaring a new Single Source of Truth is not enough to complete a migration. Legacy mutable copies must be removed or converted into references; otherwise, correct updates to the canonical state can leave stale replicas outside the update path.

Case

1. What happened

On August 11, 2026, technical-document-workflow adopted active/WORK_STATUS.md as the sole mutable status authority. The duplicated current-state block in §3 of AGENTS.md was removed, and the rule “do not duplicate current state in this document” was adopted.

However, §4 of the same AGENTS.md still contained mutable TOP-04-specific current-state prose. At bba09278, WORK_STATUS already described TOP-04 FORMAL DRAFT CONSTRUCTION and a FIXED_FOR_DRAFT center thesis, while §4 still described initial Evidence construction, a research hypothesis, and no formal-text progression. The §4 copy was already inconsistent with WORK_STATUS at the migration commit.

After that, the TOP-04 formal draft became DRAFT FINALIZED / HUMAN APPROVED, and WORK_STATUS plus related project documents were updated. The discrepancy with AGENTS §4 widened, but those later updates did not create the staleness. On October 12, 2026, the current-state ownership at issue in §4 was changed to reference WORK_STATUS instead.

Tension

2. The apparent contradiction

The case is easy to misread because all three of these statements were true:

  • The correct canonical state existed.
  • Later work updated that canonical state.
  • Another document still contained an older current state.

If SSOT is treated as a mechanism that automatically rewrites every old copy, the outcome looks contradictory. It is not. SSOT transfers authority; it does not automatically erase legacy copies. If removal or reference conversion is not part of the migration, stale state can remain outside the canonical update path.

Timeline

3. Timeline

  1. 2026-08-11 / bba09278 — WORK_STATUS became the sole mutable status authority and the duplicated §3 state block was removed. WORK_STATUS already described TOP-04 FORMAL DRAFT CONSTRUCTION / FIXED_FOR_DRAFT while §4 still described the earlier evidence-construction and hypothesis state, so §4 was already inconsistent.
  2. 2026-08-11 / d8ff5cc2 — The TOP-04 formal draft became DRAFT FINALIZED / HUMAN APPROVED, and WORK_STATUS plus related project documents were updated. Later chapter order, final citations, artwork, and PDF work remained separate. AGENTS.md was not a target of that change.
  3. 2026-08-22 / 74d2b9e9 — README was synchronized with the current work status. The legacy state in AGENTS §4 remained.
  4. 2026-08-25 / 779a735 — AGENTS.md itself was edited to add the release artifact boundary, but the §4 legacy state remained.
  5. 2026-09-24 / 7ac8ecde — AGENTS.md itself was edited to adopt Project-DF routing policy and strengthen authority boundaries. The §4 legacy snapshot nevertheless remained.
  6. 2026-10-04 / 82be6ba — AGENTS.md itself was edited to add the external concept mapping rule, but the §4 legacy state remained.
  7. 2026-10-12 / d023db44 — The mutable current-state duplication at issue in AGENTS §4 was removed, and current target, next gate, evidence authority, and per-Top current state were changed to reference WORK_STATUS.

This chronology establishes the sequence of canonical updates and the later removal of the legacy copy. It does not establish the contemporaneous thoughts or intentions of the people doing the work.

Migration

4. What changed in the SSOT migration

The initial migration succeeded in naming one canonical authority. WORK_STATUS owned current state, while other entry documents were expected to point to it. That was an authority migration.

A migration also has a second side. Mutable values left in older documents must be either (a) removed, (b) converted into references to the canonical source, or (c) explicitly separated as historical records that no longer own current state. In this case, §3 was reorganized in the first direction, but the specific state prose in §4 was left unresolved.

Conceptual before/after

BEFORE

AGENTS §3: current state belongs only to WORK_STATUS

AGENTS §4: current target = TOP-04

AFTER

AGENTS §4: current target / next gate / evidence authority
          / per-Top current state are read from WORK_STATUS
          rather than duplicated here

“Before” is a conceptual illustration of two roles coexisting; it is not a verbatim quotation of the complete file.

Residue

5. What was left behind

The residue was not merely explanatory prose. The TOP-04-specific prose in §4 described a current target and work boundary, so it functioned as mutable current-state value. AGENTS.md therefore said, in one part, not to duplicate state while still holding part of that state in another section.

This mixed document role is important. Is AGENTS.md a durable worker-rule document, or is it also a current-state document? When another file is canonical for ephemeral current state, keeping those values in the durable policy document makes the ownership boundary ambiguous.

Update Path

6. Why later updates did not fix it

The later state updates did not leave the copy behind because the update procedure was wrong. In d8ff5cc2, WORK_STATUS and related project documents changed, while AGENTS.md did not. That is the observed changed-file set; the commit does not establish a recorded authorization set, why AGENTS was excluded, or any lack of authority to change it.

FRAMEWORK_SPEC §4.2 in E1 states that mutable state updates normally target WORK_STATUS and that other documents change when role or reference conditions require it. The record therefore does not support saying that d8ff5cc2 lacked authority to repair AGENTS §4.

AGENTS.md itself was later edited by 779a735, 7ac8ecde, and 82be6ba, but the §4 legacy state remained. The history does not establish why it remained. Persistence therefore cannot be explained only as AGENTS being outside a later state-update path.

The bounded write scope itself is not treated as the defect. More precisely, migration residue existed from E1, the relevant state-update path did not repair it, and later AGENTS edits also left it intact.

Detection

7. Why normal validation could still pass

The history cannot reconstruct every validation command used at the time, so this article does not claim that a particular test passed. It makes a narrower observation about what was and was not directly checked by the visible change history.

The recorded changes were coherent within their intended files and scopes. But the stated semantic invariant — that AGENTS should not retain duplicated mutable current-state values — was not fully satisfied or verified for the §4 material after the first migration.

Diff and syntax checks do not automatically show whether another file contains a semantically equivalent state. This is not a general claim that those checks were inadequate; it is a distinction between validating changed-file mechanics and validating a cross-document semantic invariant.

Analysis

8. Cause and boundaries

Primary root cause — incomplete Single Source of Truth migration
The new canonical authority was introduced, but removal or reference conversion of the legacy mutable copy was not completed.

Contributing condition — policy and ephemeral state were mixed
A durable worker-rule document retained a value that described the current target.

Amplifier — migration residue outside the ordinary canonical state-update path
The relevant state-update commits did not change AGENTS §4, and later AGENTS edits also left the legacy state intact. The history does not establish why any edit left it in place.

Detection gap — the stated invariant was not fully satisfied or verified
The invariant already existed, but changed-file and syntax checks did not by themselves establish that the §4 material satisfied it.

These labels organize the RCA for this case. They are not a proposed taxonomy, Gate, framework, or standard classification.

Remediation

9. “Refreshing the value vs. fixing the ownership structure”

Refreshing the value

One option would be to rewrite the TOP-04 value in AGENTS §4 to the latest value. Updating a copied value is not universally wrong. For example, 74d2b9e9 legitimately refreshed README because README is a subordinate summary with an explicit WORK_STATUS-wins boundary.

For AGENTS §4, however, writing the value back would temporarily reduce the visible discrepancy while leaving mutable state ownership in a section whose adopted design says current state should not be duplicated.

Fixing the ownership structure

In d023db44, the duplication at issue in AGENTS §4 — current target, next gate, current evidence authority, and per-Top current state — was removed, and those values were to be read from WORK_STATUS instead. The change removed ownership of the old value rather than merely refreshing it.

This remediation review is limited to the §4 current-state ownership at issue; it is not a comprehensive audit of every potentially mutable statement in AGENTS.md. For §4, a reference-based fix better matches the adopted authority model.

Practice

10. Practical lessons

  • An SSOT migration should include an inventory of old mutable replicas and their removal or conversion into references.
  • A durable policy file should not own ephemeral current-state values when another document is canonical.
  • A bounded change scope protects boundaries; it does not automatically repair a pre-existing inconsistency outside that scope.
  • Diff and syntax validation may need to be complemented by a document-role invariant when the risk is semantic duplication.
  • The correct remediation may be to remove ownership of mutable state rather than to update its current value.

These are bounded practical lessons from one repository case. The article does not claim that every SSOT migration fails in this way.

Provenance

Evidence / provenance

Technical facts are limited to what can be established from the Git history of technical-document-workflow. The paths below are repository-relative. The “does not establish” column preserves the boundary of each commit.

Commit provenance reviewed for this case
Date / commitWhat it demonstratesWhat it does not establish
2026-08-11
bba09278cb579a1be61730a3df70127a40c55bd5
WORK_STATUS became the sole mutable status authority and the duplicated AGENTS §3 state block was removed.That the legacy current-state prose in AGENTS §4 was intentionally left in place.
2026-08-11
d8ff5cc2a02092788ddbafb99604cedb9ebbbff0
The TOP-04 formal draft became DRAFT FINALIZED / HUMAN APPROVED, and WORK_STATUS plus related project documents were updated; AGENTS was not a target.Whether the worker recognized the AGENTS legacy copy at the time.
2026-08-22
74d2b9e973e3793adec7a27190f84bbe9721f7a9
README was synchronized with the current work status.That AGENTS §4 was checked or repaired by this commit.
2026-08-25
779a7353087ffee6e38fcb25229e6c409c781519
AGENTS.md was edited to add the release artifact boundary.That this edit removed the §4 legacy state, or why it remained.
2026-09-24
7ac8ecdeeb8a0920105114a1cef6883356de73dd
AGENTS.md was edited to adopt Project-DF routing policy and strengthen authority boundaries.That this edit removed the §4 legacy snapshot, or why it remained.
2026-10-04
82be6ba4e630c33b6dae9d0738dba51c15ba304d
AGENTS.md was edited to add the external concept mapping rule.That this edit removed the §4 legacy state, or why it remained.
2026-10-12
d023db44883b47f8210bb38c23fae9affa38b35d
The mutable current-state duplication at issue in AGENTS §4 was removed, and current target, next gate, evidence authority, and per-Top current state were changed to reference WORK_STATUS.That this single case generalizes to other repositories or migrations.

Evidence source: mars70s/technical-document-workflow Git history. No private machine path or internal work-environment detail is included in the reader-facing article.

Limits

Limits

  • This is a case study of one repository.
  • It does not claim that all SSOT migrations produce the same failure.
  • It does not claim that the failure was specific to AI agents or caused by AI.
  • It does not treat the exact write set itself as defective.
  • It does not claim that the stale copy was left intentionally.
  • It does not infer the workers’ motives or mental state at the time.
  • The commit history does not establish every validation command or what each worker knew at the time.
Related