// Reading the shelf: Redline Fieldbook Atrium v1.0 · 2026-04
Documentation / Atrium · Disclosure /Disclosure/Ladder Concept · 18 min

The disclosure ladder, in technical detail.

Seven rungs between invisible and full document. Every cross-silo result lands on one of them. The disclosure boundary is enforced at retrieval time, not render time.

TypeConcept
Reading18 min
Revisedv1.0 · 2026-04
Applies toAtrium · all tiers

/ 01Why graduated disclosure

Most disclosure questions are not yes or no. They are how much. A senior partner doing a conflict check needs different information than a junior associate searching cross-silo, even when both are asking about the same matter.

The ladder is the mechanism that lets one query yield seven different answers depending on who is asking. Each step up requires more authority; each step is logged.

/ 02The seven rungs

LevelWhat the requester seesGeneration
L0Nothing. No count, no signal, no graph traversalEnforced at query; no asset
L1Existence stub — "1 document exists; request access?"Deterministic, no AI
L2Faceted view (practice group, jurisdiction, year, doc type)Pre-generated at ingest
L3Sanitised abstract — LLM narrative with specifics strippedPre-generated; steward-reviewed > Internal
L4Redacted claim view — claims visible, sensitive fields redactedPre-generated; steward-reviewed > Internal
L5Full claim payload + provenance (no document binary)Gated retrieval
L6Full claim + on-demand document fetch via connectorStep-up auth required

/ 03Per-requester computation

Every result's level is computed at query time, using OPA against the requester context and the document's classification, ownership, and overrides.

max_level = min(
  classification_ceiling[document.classification][requester.silo, document.silo],
  author_disclosure_setting[document],
  steward_override[document],
)

max_level = max_level INTERSECT (
  requester.silo_share_policy[document.silo],
  requester.clearances,
  ethical_wall_recusals[requester, document.matter],
  conflict_screen[requester, document.client],
)

if max_level == L0:
    # excluded entirely — no row, no count, no signal
    continue

render(result, at_level=max_level)
Note

Filter at retrieval, not at render. Filtering in the UI means restricted data was on the wire — a bug in the renderer becomes a leak. The query layer must never select L0 for an unauthorised requester.

/ 04The L4 reveal pattern

L4 is the cleverest level. A user sees "we have a claim of type deal_value for matter X" without seeing the value itself. They decide whether to request access based on the shape of claims, not their content.

Closer to FOIA-style redaction than summarisation; most often gets a user from "I don't know whether to ask" to "I should ask."

Default redaction policy

  • PII fields → tokenised
  • Client / party names → [REDACTED]
  • Monetary values → [REDACTED] (or banded, opt-in per silo)
  • Dates → year only, or [REDACTED]
  • Predicates and structure preserved

/ 05Aggregation respect

Cross-silo aggregations — counts, sums, averages — must respect each result's disclosure level. A "47 results" count must exclude L0 entries; a sum of deal values must exclude entries below L5 for the requester. Aggregations leak signal too.

The aggregation engine recomputes per-requester at query time. There is no global aggregation cache.

/ 06Asset versioning

Every generated disclosure asset (L2 facets, L3 abstract, L4 redacted view) records its lineage:

  • prompt_version — the versioned prompt template used
  • model_version — the inference model and pin
  • generated_at — timestamp (UTC)
  • reviewed_by · reviewed_at — steward, if reviewed
  • approved · edited · rejected — outcome
  • hash — SHA-256 of canonical payload, for chain-of-custody

Re-generation (model upgrade, prompt upgrade, reclassification) creates a new asset; the previous version is retained for audit.

/ 07Deep dive (visual)

For a visual walk-through of all seven rungs with worked examples per requester role, see the disclosure ladder feature page. It carries the same model, told differently.

Read carefully. Then begin.

Request access Back to documentation