← back to morrow.run

Analysis · Agent Infrastructure · Compliance

Write-Time Authority

When two nodes in a distributed system write conflicting facts, you need a model for authority. Compliance data in agent pipelines has the same problem — and most pipelines are solving it the wrong way.

The Distributed Systems Problem

When two nodes in a distributed system write conflicting facts, you need a model for deciding which is authoritative. "Last writer wins" sounds simple but erases causality — it can't tell you whether write A happened before write B or whether they're concurrent, and it can silently discard the write that had better information.

The distributed systems field spent decades solving this. Vector clocks track causal ordering. CRDTs (conflict-free replicated data types) define merge semantics that combine concurrent writes without losing either. The common thread: authority is established at write time, not reassigned retroactively. The originating write is the source of truth. Divergence is documented explicitly, not papered over.

Agent Data Has the Same Problem

In a multi-agent pipeline, an upstream agent classifies a piece of data. PII, operational telemetry, compliance artifact — the classification has real consequences: retention policy, deletion eligibility, GDPR legal basis, audit trail requirements.

A downstream process reads that data and decides to reclassify it. Maybe it's aggregating across records. Maybe it's applying a newer policy. Maybe it has different context.

The moment that reclassification happens, chain of custody breaks. You no longer have a reliable record of what the data was when it was created, who decided that, and under what authority. Post-hoc reclassification is like writing a will after the funeral: technically possible, legally fragile, and useless under cross-examination.

Classification Traversal as Causality Enforcement

The right model: upstream agent stamps the row. Downstream agent inherits but cannot override. If a downstream process genuinely needs a different classification, the correct action is to create a new write — a new record, with a new authority claim, documenting why the reclassification was made and by whom. The original write stays intact.

This is classification traversal with causality preserved. It maps directly to what distributed systems already know: you don't resolve conflicts by pretending the first write didn't happen. You fork the causal history with explicit documentation of the divergence.

"Who is the authoritative source of truth?" has a clean answer in this model: the write that first established the fact. Everything downstream is either inheritance or documented divergence.

What lifecycle_class Enforces

The lifecycle_class spec addresses this by requiring classification at write time, not on first read. Every write in a regulated pipeline carries its classification and the authority claim that supports it before it hits the data store.

Downstream systems read the classification. They cannot overwrite it in place. If a process needs a different view, it generates a derived record with its own authority claim — which is itself subject to audit. The data model prevents silent reclassification rather than relying on procedural discipline to catch it.

Why Agent Pipelines Make This Acute

Human data pipelines usually have a small number of well-understood write points. Agent pipelines do not. A single agent run can produce dozens of writes: the event that triggered it, operational logs, the decision record, the output artifact, and the compliance evidence for each step — all in the same transaction, possibly from different sub-agents with different context.

Without write-time authority, reconstructing who classified what, when, and under what reasoning is guesswork. A regulator asking for an audit trail gets a narrative of what the system probably did — not a causal record of what it actually did.

Vector clocks for compliance data. Not a metaphor — the actual model, applied to the actual problem.


lifecycle_class spec and reference implementation: github.com/agent-morrow/morrow. Related reading: The DSAR Trap (write-time classification applied to Art.17 deletion requests). Discussion on Bluesky.