Contextfulv0.23.0

Docs / Specification

contract disclosure · 60-visibility.md · 61-disclosure.md · 62-accountability.md · guide · card

Aggregate disclosure

A derived result answers a question over many contributors without handing any contributor’s rows to the party asking. This file fixes the setting a result is derived in, the ordered release, the suppression signal a consumer sees, the reviewed templates a releasing principal executes, and the line between a per-person table and a cohort table.

A derived result, from the deployment’s setting to the published rows:

Flowchart diagram Flowchart, top to bottom. 11 nodes, 11 edges. operator → deployment setting? [chosen setting] deployment setting? → write-time disclosure policy [single operator]; → per-owner partitions [clean room] write-time disclosure policy → release job [policy] per-owner partitions → release job [partitions] releasing principal → template allowlist [template id, arguments] template allowlist → release job [reviewed template] release job → suppression pass [size floor, dominance] contributing units → release job [reserved budgets] suppression pass → published derived table [noised figures] published derived table → asking party [cohort read, floor applied] chosen setting single operator clean room template id, arguments reviewed template policy partitions reserved budgets size floor, dominance noised figures cohort read, floor applied operator deployment setting? write-time disclosure policy per-owner partitions releasing principal template allowlist release job contributing units suppression pass published derived table asking party

set-mode

The two deployment settings a derived result is computed in, the offline diagnostic, and the cross-owner hashed join.

unsettled: Which CLI or MCP verb opens a cross-owner store and runs hashed-join and pepper-version, given that no production path reaches open_cross_owner? owner: disclosure affects: disclosure.set-mode

release

The ordered statistics release, the write-time disclosure policy, and the per-unit budget reservation.

suppress

The group-size floor, the contributor-share ceiling, and the single signal a withheld group leaves.

template

Query templates a releasing principal calls by name: the single-statement rule, the checks they pass, and the truncation flag a capped read carries.

unsettled: Does a template read take read-envelope’s suppression presence and policy hash from the release envelope its table was published under, and which surface serves that read? owner: disclosure affects: disclosure.template

bound-cohort

The line between a per-person table and a cohort table, and the floor a cohort read carries.

Shapes

A disclosure policy on a governed model:

[model.disclosure]
grouping_allowlist    = ["category", "region", "period"]
contributor_key       = "tenant_id"
min_group_size        = 5
max_contributor_share = 0.4
emit_sentinel         = true
figures               = "noised"   # the default; "exact" only on a cohort table
governance            = "per-person"   # the default; "cohort" for figures describing a cohort
forbidden_columns     = ["tenant_id", "subject_id", "account_email"]
per_run_spend         = 0.5        # epsilon reserved from each contributing unit per release

[model.disclosure.metric_bounds]
value = { lower = 0, upper = 1000000, quantum = 1 }

[disclosure]
unit_lifetime_cap = 10             # epsilon each contributing unit spends across every release

The breakdown a governed statement emits, and the rows published from it:

-- emitted: one row per (group, contributor)
category  region  period  tenant_id  value
group-a   emea    2       t-0191     142000
group-a   emea    2       t-0044     128000
group-a   emea    2       t-0332     111000
group-a   emea    2       t-0072     102000
group-a   emea    2       t-0088      88000
group-b   emea    2       t-0044      55000

-- published after noisy partition selection, suppression and roll-up;
-- the figure is noised, not the exact sum 571000
category  region  period  value
group-a   emea    2       568940
__suppressed__

The envelope a capped template read returns:

{
  "rows": [{ "period": 2, "value": 568940 }],
  "truncated": true,
  "row_ceiling": 500,
  "suppression_present": true,
  "disclosure_policy_hash": "sha256:4f1c…"
}