Contextfulv0.23.0

Docs / Specification

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

Visibility, disclosure and accountability — card

Generated by contextful-spec state from the contract’s files and spec/terms/disclosure.toml; not authored.

Operations

OperationCoversClausesProved
mirrorThe three-way conjunction, the access tables as store data, and the binding that compiles a table’s semi-join.70
sweepObservation of one source’s permission state: sweep kinds, the observation clock, the coverage watermark, tombstones and revocation.160
reachPer-request resolution of a subject to the resources it reaches, the bounded group closure, and the reachable-set cache.90
bound-stalenessThe declared age budget on mirrored authorization, the refusal past it, and the one narrowing posture.80
declare-fidelityThe fidelity level a table claims, the source family bounding the claim, and live federation under a reader’s delegated credential.30
packThe reviewed unit landing one source: a manifest fragment plus a connector pin, its access mapping, defaults and container allowlist.60
drive-sweepMapping Drive file permissions into the governed source’s visibility rows.60
set-modeThe two deployment settings a derived result is computed in, the offline diagnostic, and the cross-owner hashed join.90
releaseThe ordered statistics release, the write-time disclosure policy, and the per-unit budget reservation.150
suppressThe group-size floor, the contributor-share ceiling, and the single signal a withheld group leaves.60
templateQuery templates a releasing principal calls by name: the single-statement rule, the checks they pass, and the truncation flag a capped read carries.30
bound-cohortThe line between a per-person table and a cohort table, and the floor a cohort read carries.90
recordWhat a read leaves behind: the span, the hash-linked audit entry, where telemetry lands, and the key custody a log opens under.540
explainThe access decision and its path, replay over a window with its coverage, and the audience report.90
attestChain verification, signed segment roots, lineage attestations, and the reach of each guarantee.140
eraseThe one erasure verb: subject tombstones, the bounded provenance cascade, and the tenant rewrite.310
receiptThe signed artifact a tenant purge returns: its claim, its coverage block, its pseudonym and its idempotence.70

Error cases

ErrorWhenClause
VisibilityUnboundTableA table on an organization-wide face carries no visibility block.disclosure.mirror.unbound-table
VisibilityBindingIncompleteA servable binding lacks a declared sweep or a staleness budget.disclosure.mirror.incomplete-binding
VisibilityWatermarkUncoveredA sweep run that missed a governed resource advanced the watermark.disclosure.sweep.coverage-watermark
VisibilityUngappedStreamThe watermark advanced from an event stream not declared gap-detectable.disclosure.sweep.ungapped-stream
VisibilityOrphanGrantA grant landed with no resource row, or on an unknown-class resource.disclosure.sweep.orphan-grant
VisibilityClosureDepthThe group closure reached its depth or node bound; no set is returned.disclosure.reach.closure-overflow
VisibilityDegradedCachedA result produced past a budget or under the narrowing posture was retained.disclosure.reach.degraded-uncached
VisibilityBudgetMalformedA staleness budget is compound, bare, or carries an unknown suffix.disclosure.bound-staleness.budget-grammar
VisibilityAccessStaleSource lag exceeds a touched table’s budget, or the source was never fully swept.disclosure.bound-staleness.access-stale
VisibilityBudgetUnreachableA budget is tighter than the sweep cadence its source sustains.disclosure.bound-staleness.budget-below-cadence
VisibilityFamilyBoundA table declared a level its source family does not permit.disclosure.declare-fidelity.family-bound
VisibilityFamilyUndeclaredA mapping landed a table without naming its family.disclosure.declare-fidelity.family-undeclared
VisibilityFederatedRegisteredA federated table was registered on a read face.disclosure.declare-fidelity.federated-registered
VisibilityMappingAbsentA pack landed a table with neither a mapping nor an exclusion.disclosure.pack.mapping-absent
VisibilityPackAssertsAccessA pack carries an access-shaped key the mapping schema lacks.disclosure.pack.asserts-access
VisibilityAllowlistAnyOfA container allowlist is evaluated as any-of.disclosure.pack.any-of-allowlist
VisibilityUnsupportedCoarseA table declared coarse where its source emits no container signal.disclosure.pack.unsupported-coarse
DisclosurePolicyAbsentA published aggregate-shaped model carries no policy and no opt-out.disclosure.set-mode.policy-absent
DisclosureModelUnreadableA published model’s statement text does not read.disclosure.set-mode.model-unreadable
DisclosureCleanRoomPreconditionUnmetA shared store lacks a clean-room requirement.disclosure.set-mode.clean-room-preconditions
DisclosureStaticPepperA cross-owner hashed join is keyed on a static pepper.disclosure.set-mode.hashed-join
DisclosureReleaseRequiredA model declaring a disclosure policy is built outside a release.disclosure.release.governed-build
DisclosureUnitBudgetExhaustedA contributing unit’s budget reservation failed; nothing is published.disclosure.release.budget-reservation
DisclosureMetricBoundsAbsentA noised sum has no finite contributor bounds or positive quantum.disclosure.release.metric-bounds
DisclosureLookalikeUnsupportedA release requests an activation handle or lookalike segment.disclosure.release.lookalike-refusal
DisclosureSpendUndeclaredA released model’s policy declares no positive per-run spend.disclosure.release.spend-declaration
DisclosureDuplicateGrainA carried non-grain column is not constant within its group.disclosure.release.duplicate-grain
DisclosureGroupKeyNotPermittedA group key is not a subset of the permitted grouping columns.disclosure.release.group-key
DisclosureContributorKeyAbsentA governed statement omits the contributor key.disclosure.release.contributor-key
DisclosureForbiddenColumnPublishedA contract declares, or a materialization produces, a forbidden column.disclosure.release.forbidden-column
DisclosureMinGroupSizeBelowFloorA declared min_group_size is below the floor.disclosure.suppress.min-group-size
DisclosureShareOutOfRangeA declared max_contributor_share lies outside (0, 1].disclosure.suppress.contributor-share
DisclosureDominanceUnverifiablePer-contributor masses are unavailable where a share constraint applies.disclosure.suppress.dominance-unverifiable
DisclosurePolicySuppressesNothingA policy sets neither threshold.disclosure.suppress.empty-policy
DisclosureGroupingAllowlistEmptyA grouping allowlist is empty or names a non-column.disclosure.suppress.grouping-allowlist
DisclosureTemplateMultiStatementA template declaration holds more than one statement.disclosure.template.single-statement
DisclosureCohortWideningA read grouped a cohort table by a strict subset of its group key.disclosure.bound-cohort.cohort-widening
DisclosurePerIndividualUngrantedA read touched a cohort model’s source table without read-individual.disclosure.bound-cohort.per-individual-row
DisclosureSingletonCohortA cohort key’s grain resolves to one person.disclosure.bound-cohort.singleton-cohort
DisclosureExactPerPersonA per-person table declares exact figures.disclosure.bound-cohort.exact-figures
AuditHeaderUnsupportedA chain header names a format, digest or segment size this build does not verify.disclosure.record.header-unsupported
AuditAttributeInexactA v1 entry’s attribute holds an integer the canonical form cannot write exactly.disclosure.record.inexact-integer
AuditEntryUnpersistedA read’s audit entry did not persist; no rows are returned.disclosure.record.unpersisted-entry
AuditLogReadOnlyAn append through a read-only audit handle.disclosure.record.read-only
AuditLogAnchoredAn unanchored handle opened over a chain holding a signed tip, a signed root or a held record.disclosure.record.unanchored-over-signed
AuditLogUnanchoredA held open or signed check over a chain whose tip is unsigned, carrying no held record or signed root.disclosure.record.unsigned-tip
VisibilityDiagnosticRowAn explanation returned content from the resource it decides about.disclosure.explain.no-row
VisibilityNoObservationsA replay window holds no observations; no claim is available.disclosure.explain.empty-window
VisibilityUnqualifiedAssuranceA negative assurance answer lacks its coverage block.disclosure.explain.unqualified-assurance
VisibilityIndividualNamedAn explanation rendered the members of a group on the path.disclosure.explain.groups-not-members
AuditChainBrokenA digest, format or Merkle root mismatch, sequence gap or vanished chain, with the earliest failing index.disclosure.attest.broken-chain
AuditProofInvalidAn inclusion proof’s entry, path, header, root or signature disagrees.disclosure.attest.proof-invalid
AuditProofUnavailableNo signed Merkle root covers the entry to prove.disclosure.attest.proof-unavailable
AuditRequiresOwnerAn audit verb reading a chain was presented a capability credential.disclosure.attest.owner-only
ErasureUngrantedA caller erased without the forget grant.disclosure.erase.privilege
ErasureScopeUnsupportedThe request has no targets or requires an unsupported narrowed Forget scope.disclosure.erase.unsupported-scope
ErasureSubjectUndeclaredA subject erasure names a table with no subject column.disclosure.erase.subject-column
ErasureTransactionIncompleteAn erasure transaction record cannot select a complete authenticated frontier.disclosure.erase.recovery
ErasureCascadeUnboundedA provenance chain exceeds the cascade bound; nothing commits.disclosure.erase.cascade-unbounded
PurgeTenantColumnTypeThe tenant column is not a string type.disclosure.erase.tenant-column-type
PurgeTenantUndeclaredNo model declares an outermost partition key.disclosure.erase.tenant-undeclared
PurgeRequiresOwnerA purge was presented with a capability token.disclosure.erase.owner-only
ReceiptIdentifierLeakA receipt carries a tenant identifier in cleartext.disclosure.receipt.pseudonym
ReceiptClaimWidenedA coverage block exceeds its receipt version.disclosure.receipt.widened-claim
ReceiptReplayedAn earlier artifact was returned in place of a fresh signature.disclosure.receipt.replayed

Bounds

BoundValueBasisClause
visibility-closure-nodes10000 nodeschosendisclosure.reach.closure-walk
visibility-group-depth8 hopschosendisclosure.reach.closure-walk
visibility-reach-cache100000 entrieschosendisclosure.reach.cache-capacity
diagnostic-store-requests0 requestschosendisclosure.set-mode.offline-diagnostic
min-group-size-floor2 subjectschosendisclosure.suppress.min-group-size
contributor-share-ceiling100 percentchosendisclosure.suppress.contributor-share
contributor-share-floor0 percentchosendisclosure.suppress.contributor-share
template-overfetch1 rowschosendisclosure.template.overfetch
audit-segment-entries4096 entrieschosendisclosure.record.segment
audit-segment-max65536 entrieschosendisclosure.record.chain-header
audit-group-syncs1 syncchosendisclosure.record.group-commit
audit-segment-open-syncs1 syncchosendisclosure.record.segment-open
audit-tip-idle1 schosendisclosure.record.tip-signing
telemetry-projection-latency1 smeasured:audit-projection-latencydisclosure.record.projection
telemetry-projection-window24 hchosendisclosure.record.projection
span-queue2048 spanschosendisclosure.record.span-queue
audit-root-cadence10 minchosendisclosure.attest.root-replication
erasure-cascade-depth16 hopschosendisclosure.erase.cascade
erasure-physical-removal24 hchosendisclosure.erase.physical-removal

Types

Each struct or enum a {{type:<path>}} pointer names, with the keys serde reads and their doc comments.

contextful_core::disclosure::declare::RawBinding

The struct at crates/contextful-core/src/disclosure/declare.rs, named by disclosure.mirror.binding-keys.

KeyDoc
source
resource_key
resource_kind
fidelity
family
max_acl_staleness
on_stale

contextful_core::disclosure::pack::RawMapping

The struct at crates/contextful-core/src/disclosure/pack.rs, named by disclosure.pack.mapping-keys.

KeyDoc
resource_key
resource_kind
family
fidelity
container_key
principal_kind
level

contextful_core::disclosure::sweep::GrantLine

The struct at crates/contextful-core/src/disclosure/sweep.rs, named by disclosure.sweep.grants-file.

KeyDoc
resource_id
principal
principal_kind
level

contextful_core::disclosure::sweep::LinkLine

The struct at crates/contextful-core/src/disclosure/sweep.rs, named by disclosure.sweep.directory-file.

KeyDoc
source_principal
subject
method
confidence

contextful_core::disclosure::sweep::Membership

The struct at crates/contextful-core/src/disclosure/sweep.rs, named by disclosure.sweep.directory-file.

KeyDoc
group
member
member_kind

contextful_core::disclosure::sweep::RawBlock

The struct at crates/contextful-core/src/disclosure/sweep.rs, named by disclosure.sweep.sweep-block.

KeyDoc
source
enumerate
full
incremental
credential
events

contextful_policy::audit::AuditEntry

The struct at crates/contextful-policy/src/audit.rs, named by disclosure.record.entry-format, disclosure.record.entry-fields.

KeyDoc
format1 on a v1 entry; absent, read as 0, on a v0 entry.
seq
prev_hash
attributes
entry_hash

contextful_policy::audit::ChainHeader

The struct at crates/contextful-policy/src/audit.rs, named by disclosure.record.header-unsupported.

KeyDoc
format
digest
segment_entries

Decisions

SectionCited by
A-disclosure#aggregate-disclosure-enforceddisclosure.release.budget-reservation, disclosure.release.release-envelope, disclosure.release.duplicate-grain, disclosure.release.group-key, disclosure.release.contributor-key, disclosure.release.forbidden-column, disclosure.suppress.min-group-size, disclosure.suppress.contributor-share, disclosure.suppress.dominance-unverifiable, disclosure.suppress.empty-policy, disclosure.suppress.grouping-allowlist, disclosure.suppress.sentinel-row, disclosure.bound-cohort.singleton-cohort, disclosure.bound-cohort.exact-figures
A-disclosure#append-group-holdsdisclosure.record.read-entry, disclosure.record.single-writer, disclosure.record.audit-key, disclosure.record.foreign-tail, disclosure.record.read-only
A-disclosure#append-group-paysdisclosure.record.group-commit, disclosure.record.segment-open, disclosure.record.tip-signing
A-disclosure#audit-format-v1disclosure.record.chain-header, disclosure.record.entry-format, disclosure.record.v0-chain, disclosure.attest.broken-chain, disclosure.attest.merkle-root, disclosure.attest.root-tag, disclosure.attest.inclusion-proof, disclosure.attest.proof-invalid
A-disclosure#audit-log-opensdisclosure.record.read-signer, disclosure.record.audit-key-loss, disclosure.record.unanchored-over-signed, disclosure.record.unsigned-tip, disclosure.erase.signer-binding
A-disclosure#audit-reads-viewdisclosure.record.reads-view, disclosure.record.erasures-view, disclosure.record.refused-read
A-disclosure#cross-owner-releasedisclosure.set-mode.check-verb, disclosure.set-mode.aggregate-shape, disclosure.set-mode.policy-absent, disclosure.set-mode.opt-out-record, disclosure.set-mode.model-unreadable, disclosure.set-mode.clean-room-preconditions, disclosure.set-mode.hashed-join, disclosure.set-mode.pepper-version
A-disclosure#drive-permission-coveragedisclosure.drive-sweep.permission-pages, disclosure.drive-sweep.unreadable-resource
A-disclosure#erasure-forced-rewritestore.declare.erasure-metadata, disclosure.erase.recovery, disclosure.erase.unsigned-recovery, disclosure.erase.retirement-inventory, disclosure.erase.canonical-audit-key
A-disclosure#exact-integer-noisedisclosure.release.noise-mechanism, disclosure.release.metric-bounds, disclosure.release.lookalike-refusal
A-disclosure#explanation-reads-exchangedisclosure.explain.decision, disclosure.explain.path, disclosure.explain.replay, disclosure.explain.coverage, disclosure.explain.audience
A-disclosure#fidelity-bounded-whatdisclosure.declare-fidelity.family-bound, disclosure.declare-fidelity.family-undeclared, disclosure.declare-fidelity.federated-registered, disclosure.pack.mapping-absent, disclosure.pack.asserts-access, disclosure.pack.unsupported-coarse
A-disclosure#forced-rewrite-measureddisclosure.erase.subject-column, disclosure.erase.key-set, disclosure.erase.surviving-citations, disclosure.erase.survivor-names, disclosure.erase.cascade, disclosure.erase.cascade-unbounded, disclosure.erase.tenant-column-type, disclosure.erase.tenant-undeclared, disclosure.erase.owner-only, disclosure.erase.tenant-rewrite, disclosure.receipt.pseudonym, disclosure.receipt.widened-claim, disclosure.receipt.replayed, disclosure.receipt.chain-record
A-disclosure#grants-rows-underdisclosure.mirror.grants-table, disclosure.mirror.unmirrorable-opening, disclosure.reach.closure-overflow, disclosure.template.read-envelope
A-disclosure#hash-chain-attestabledisclosure.record.unpersisted-entry, disclosure.record.read-chain, disclosure.attest.root-replication
A-disclosure#mirrored-authorization-carriesdisclosure.sweep.coverage-watermark, disclosure.sweep.ungapped-stream, disclosure.sweep.sweep-epoch, disclosure.reach.degraded-uncached, disclosure.reach.cache-epochs, disclosure.bound-staleness.budget-grammar, disclosure.bound-staleness.access-stale, disclosure.bound-staleness.budget-below-cadence
A-disclosure#model-declares-spenddisclosure.release.model-policy, disclosure.release.release-verb, disclosure.release.spend-declaration, disclosure.release.lifetime-cap, disclosure.release.budget-ledger
A-disclosure#re-synthesis-afterdisclosure.erase.atomic-publication, disclosure.erase.reader-frontier, disclosure.erase.shared-references, disclosure.erase.subject-pseudonym, disclosure.erase.row-free-audit, disclosure.erase.store-binding, disclosure.erase.working-publication, disclosure.erase.recovery-verb, disclosure.erase.physical-removal