Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0036

ADR-0036: Classification facts are stamped at creation under the trusted boundary

field value
Status Proposed
Date 2026-07-24
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0036-classification-provenance-under-the-trust-boundary.md — permalink at bdafa201a (unchanged on master since that commit)
Wiki register entry ADR-0036 (wiki status: Proposed)

← ADR-0035 · ADR-0037 →

The record

Context

ADR-0034 derives category membership from resource attributes (env, class, ...), and ADR-0035 matches authorization selectors against those same attributes. The entire model therefore rests on one fact being trustworthy: who says r_prod_users is class=user_data and r_fix_88 is class=test_fixture?

If the acting agent can assert those attributes, the whole thing inverts: an agent about to delete a production table asserts resource(r_prod_users, class=test_fixture, env=test), the standing auto_authorized rule fires, and the deletion proceeds with no human — the classifier has been handed to the attacker. This is exactly the confused-deputy / self-report failure the design closes everywhere else, now at the classification layer.

Decision

A resource's classification attributes are written by its CREATOR at creation time, under the trusted-side identity, and are immutable to the acting (agent) identity.

Alternatives rejected

Consequences

Provenance

Derived while answering Mohamed's 2026-07-24 consent-scoping question: the prod-vs-test example only holds if class=test_fixture cannot be forged by the agent doing the delete — making classification provenance the load-bearing precondition of ADR-0034 and ADR-0035.

Rulings cited

None.

Specs cited