Security & governance

The platform supplies the scope. It never invents the policy.

Governance here is not something the software makes up. It is a ratified, versioned model that the firm already agreed to, owned by the Cockpit governance process. The platform's job is narrow and precise: enforce that model in the data layer, on every access, every time.

For every access question, the Governance and Data-Handling Model (known as "Governance 05") is supreme; it is ratified inside the Cockpit process, and the platform enforces it rather than rewriting it.

Governed by design

Governance is ratified and versioned. The platform enforces it, never rewrites it.

The distinction matters more than any single control. Policy is decided by people, through the Cockpit governance process, and captured as a versioned model. The platform does not hold opinions about who may see what; it reads the model the firm already ratified and applies it in the data layer. Every access, every figure, every refusal follows the rules the firm already agreed to, which is exactly what makes the system auditable rather than a matter of trust.

The platform supplies the scope. It never invents policy. When the answer to "who may see this" needs to change, that is a governance decision, not a code change.

Operating principle
Data classes

Four classes, from open to most restricted, and platform data defaults to confidential.

The firm classifies data into four levels, C0 through C3. Because most of the figures the platform holds are market-sensitive-adjacent, platform data defaults to C1 rather than to open. The most sensitive classes are handled with a hard, simple rule that leaves no room for judgment in the moment.

C0

Open

Non-sensitive material that carries no restriction on where it can appear. The bottom of the ladder.

C1 · default

Confidential

Market-sensitive-adjacent figures. Platform data lands here by default, because most numbers in the book qualify.

C2

Restricted

Sensitive terms and figures held under tighter clearance. Never posts to any Slack channel, ever.

C3

Most restricted

The narrowest tier, handled in a physically separate store. Never posts to any Slack channel, ever.

The hard rule

C2 and C3 never post

The two most sensitive classes are never rendered into any channel under any condition. There is no exception path to weigh in the moment.

Why default up

Confidential unless proven open

Defaulting to C1 means a figure is protected until someone deliberately classifies it lower, not exposed until someone thinks to protect it.

One access model

Role tiers R1 through R6, enforced in the database, with no parallel system.

There is a single access model, and it lives where the data lives. Six role tiers, R1 through R6, are enforced by row-level security in the database from day one, through the shared foundation kernel. There is no second permission system layered on top that could drift out of agreement with the first.

Provenance

Every figure carries its class, its source, and its as-of date.

Reporting is auditable, not a matter of trust, because the evidence travels with the number. Each figure carries the data class it holds, the source document it came from, and the date it was true. Every change to a figure is recorded in a figure-changes record, which sits on top of the foundation's action audit spine.

Travels with the number

Class, source, as-of

A figure is never a bare value. Its data class, the document it was extracted from, and its as-of date are attached to it and move with it wherever it is quoted.

Recorded, not assumed

The figure-changes record

Every change to a figure is written to a figure-changes record, so the history of any number can be reconstructed rather than reasoned about after the fact.

Underneath it all

The action audit spine

The figure-changes record sits on top of the foundation's action audit spine, giving reporting an evidentiary trail rather than a request to take it on faith.

Physical separation

Two stores, two credential scopes, and the platform builds only on the shared one.

Separation is physical, not just logical. Open and confidential data live in a shared store; the most sensitive classes live in a walled store. These are separate Supabase projects with separate credential scopes, so reaching the walled data requires credentials the platform simply does not carry.

Shared store

C0 and C1

Open and confidential data live here, in its own Supabase project with its own credential scope. The platform builds entirely on this store.

Walled store

C2 and C3

The most sensitive classes live in a separate Supabase project with a separate credential scope, physically apart from the shared store and from the platform.

The untrusted-content wall

Machines never read bot posts, and no model decides on its own to ingest a document.

The platform is the only system that extracts and writes financial-document data, and the boundary around that privilege is deliberate. Untrusted content is never allowed to steer what the platform ingests, and the platform's outputs are never mistaken for its inputs.

One writer

The platform is the sole system that extracts and writes financial-document data. That privilege is not shared out to systems that could be steered by whatever content lands in front of them.

Deterministic forwards

When another system forwards a document to the platform, that forward runs as a deterministic post-classification rule or a gated action; it is never a model's free choice to pull something in.

State, not the rendering

Machines never read bot posts. Downstream registers are fed by database events; a Slack post is a rendering of state, never the state itself.

Refusal and routing

Nothing over-shares, and model routing is fail-closed.

Two controls make the failure modes safe by construction. When someone asks for a figure above their clearance, the platform does not stretch; and when the platform reaches for a model, it cannot silently fall back to a weaker guarantee.

Refusal by class

A link, not the figure

An ask above the requester's clearance returns a dashboard deep link, not the number. Nothing over-shares; the boundary is a redirect to what the role may open, never a leak of what it may not.

Fail-closed routing

Tiers, not model names

All model calls go through the firm's own gateway, and code references capability tiers rather than model names. The most sensitive data classes route to local-only providers pending explicit approval, with no fallback that would weaken that guarantee.

A dependency, stated honestly

The Slack surface waits for a signature it does not have yet.

Honesty about what is not yet true is part of being trustworthy. The Slack channel surface depends on a governance amendment, version 2.2, that must be signed by the General Counsel before it ships. That amendment is drafted, not yet ratified, and the platform does not front-run the signature.

  1. The amendment is drafted

    Governance amendment v2.2, which the Slack channel surface depends on, exists in draft form inside the Cockpit governance process.

  2. The General Counsel signs, or does not

    Ratification is a human decision made in that process. Until the amendment is signed, it is not policy, and the platform treats it as if it does not yet exist.

  3. Only then does the surface ship

    The Slack channel surface ships only after the signature lands. The platform does not run ahead of the ratified model to deliver a convenience.

Get started

Trust that is enforced, then earned stage by stage.

The controls above are not promises to keep later; they are properties of the data layer from day one. Adoption is staged so each step earns the next, and every access along the way follows the model the firm already ratified.