TimeBack Platform / shared schema and producer surfaces

Shared data dictionary for tenants, idempotency, audit, module dictionaries, and Incept provenance.

This is the migration-grade reference for the shared platform.* tables every module inherits, plus PITD-032 coverage for the governed incept.* producer-surface objects. It lifts stable QTI predecessor patterns into platform truth, separates module identity from current release state, names the exact QTI reconciliation points, and pins the conventions QTI, OneRoster, Caliper, CASE, Incept, and future module dictionaries must follow.

Shared tables7
Documented fields93
Incept coverage18 objects / 392 fields
Architecture sourcePlatform ITDs

How To Use This Dictionary

Use this page as the source of truth before writing migrations, shared middleware, module tables that reference platform.*, Incept producer-surface projections, or customer documentation that mentions tenants, idempotency, audit, generation provenance, or Incept progress/status reads. Each object gives lifecycle and query context first, then field rows with SQL shape, meaning, constraints, relationships, invalid examples, edge cases, and provenance.

Migration rule. If a migration cannot be derived from this page, the dictionary is incomplete and must be re-delivered before implementation proceeds.

QTI rule. QTI Alpha and QTI 1EdTech are separate surfaces, and neither surface's status is inferred from module_key=qti. For QTI 1EdTech, use the module-release-state row below: it is generated from loop/qti/state.json and currently shows approved because all required QTI 1EdTech deliverables are approved. If an older rolled-back /platform/modules deployment says otherwise, the downstream implementation must be rolled forward to this dictionary. The platform dictionary supersedes QTI only for shared cross-module concepts and module-status semantics explicitly named here.

Incept rule. Incept is a producer surface, not a third consumer API surface. Direct SUPABASE_DB_URL reads are deprecated bootstrap only; product reads must use Platform3 API/view paths with tenant scope, normal auth, audit, and the object semantics below.

Shared Schema Overview

platform.* contains shared concepts. Module-specific content, runtime, standards projection, and conformance tables stay in module schemas such as qti.*, oneroster.*, caliper.*, and case.*.

TablePurposeArchitectureQTI reconciliation
platform.tenant The shared school, district, publisher, application, or workspace boundary used by every module. PITD-002: Module Schemas And Shared Platform Schema
PITD-003: Shared Tenant Model
PITD-005: Authentication, Authorization, And Tenant Scope
Supersedes qti.tenant as cross-module truth. The platform implementation must either migrate qti.tenant rows into platform.tenant and add QTI foreign keys, or expose qti.tenant as a compatibility view over platform.tenant before claiming full platform/QTI conformance.
platform.idempotency_key Shared retry ledger for customer-visible create, import, upload, export-job, and asynchronous command operations. PITD-007: Idempotency And Optimistic Concurrency
PITD-006: HTTP Envelope, Status, And Problem Errors
PITD-009: Cross-Module Audit Log
Promotes qti.content_package.idempotency_key from a package-specific field into a reusable platform ledger. QTI package rows may keep their package-specific key copy for query compatibility, but replay and conflict behavior belongs to platform.idempotency_key.
platform.audit_log Append-only cross-module record of high-risk writes, privileged reads, learner-runtime deletion, denied authorization, and trust changes. PITD-009: Cross-Module Audit Log
PITD-008: Student Data Privacy And PII Handling
PITD-010: Observability, Metrics, And SLOs
Adds a shared operational table that QTI did not have. QTI import, authoring, delivery deletion, service-role, conformance, and trust-status operations must emit rows here once the platform shared library is integrated.
platform.end_user_identity_binding Durable, operator-authorized binding from one exact Cognito issuer/subject to one People & Orgs person. PITD-005: Authentication, Authorization, And Tenant Scope
PITD-008: Student Data Privacy And PII Handling
PITD-009: Cross-Module Audit Log
None. End-user identity is Platform-owned and QTI receives only the short-lived tenant-scoped Bearer claims it is authorized to consume.
platform.end_user_session Opaque first-party browser session whose only credential at rest is a SHA-256 handle hash. PITD-005: Authentication, Authorization, And Tenant Scope
PITD-008: Student Data Privacy And PII Handling
PITD-009: Cross-Module Audit Log
None. QTI and every other customer API see only a 600-second Platform Bearer JWT, never this cookie/session row.
platform.producer_credential_grant Tenant-bound envelope, created once at tenant onboarding, that lets a producer principal self-mint scoped short-lived credentials without any human. PITD-005: Authentication, Authorization, And Tenant Scope
PITD-009: Cross-Module Audit Log
PITD-008: Student Data Privacy And PII Handling
None. Consumer modules (Content first) keep verifying ordinary platform HS256 Bearer JWTs; the grant changes who may mint them, not how they are verified.
platform.producer_credential Append-only issuance and revocation ledger for self-minted producer credentials; stores only the SHA-256 fingerprint of each issued JWT. PITD-005: Authentication, Authorization, And Tenant Scope
PITD-008: Student Data Privacy And PII Handling
PITD-009: Cross-Module Audit Log
None. Issued credentials are ordinary platform HS256 Bearer JWTs carrying the tenant key claim consumer modules already route by.

Module Release State Is Separate From module_key

module_key is the stable namespace stored on shared retry and audit rows. It is not a promise that every surface for that module is currently approved. The customer website and /platform/modules registry must derive release state from the module loop state and expose statuses from module_release_status.

Module keySurfaceRelease statusLoop evidenceRegistry rule
platform 1edtech approved Platform 1EdTech is being re-delivered from this data dictionary. The approved architecture remains upstream truth; downstream customer/API/QC/integration routing is withheld during the cascade, even if older deploy URLs still resolve. Build-time source: loop/platform/state.json, generated 2026-08-10T12:39:23Z; regenerate this site rather than copying this row as permanent release truth. Advertise Platform 1EdTech as approved. Keep deriving that routing from loop/platform/state.json; if any required deliverable leaves approved, regenerate the registry before publishing.
qti 1edtech approved Build-time derivation from loop/qti/state.json: approved deliverables are architecture, data_dictionary, customer_website, implementation, surface_qc, integration, skill_pack; not release-approved for registry routing are none. Regenerate this site to refresh the dated snapshot. Advertise QTI 1EdTech as approved. Keep deriving that routing from loop/qti/state.json; if any required deliverable leaves approved, regenerate the registry before publishing.
qti alpha approved Build-time derivation from loop/qti/state.json: approved deliverables are architecture, data_dictionary, customer_website, implementation, surface_qc; not release-approved for registry routing are none. Regenerate this site to refresh the dated snapshot. Advertise QTI Alpha as approved. Keep deriving that routing from loop/qti/state.json; if any required deliverable leaves approved, regenerate the registry before publishing.
oneroster 1edtech approved Build-time derivation from loop/oneroster/state.json: approved deliverables are architecture, data_dictionary, customer_website, implementation, surface_qc, integration, skill_pack; not release-approved for registry routing are none. Regenerate this site to refresh the dated snapshot. Advertise OneRoster 1EdTech as approved. Keep deriving that routing from loop/oneroster/state.json; if any required deliverable leaves approved, regenerate the registry before publishing.
caliper 1edtech approved Build-time derivation from loop/caliper/state.json: approved deliverables are architecture, data_dictionary, customer_website, implementation, surface_qc, integration, skill_pack; not release-approved for registry routing are none. Regenerate this site to refresh the dated snapshot. Advertise Caliper 1EdTech as approved. Keep deriving that routing from loop/caliper/state.json; if any required deliverable leaves approved, regenerate the registry before publishing.
case 1edtech approved Build-time derivation from loop/case/state.json: approved deliverables are architecture, data_dictionary, customer_website, implementation, surface_qc, integration, skill_pack; not release-approved for registry routing are none. Regenerate this site to refresh the dated snapshot. Advertise CASE 1EdTech as approved. Keep deriving that routing from loop/case/state.json; if any required deliverable leaves approved, regenerate the registry before publishing.

Platform shared table

platform.tenant Tenant

The shared school, district, publisher, application, or workspace boundary used by every module.

Purpose

A tenant is the platform-wide owner of content, learner runtime records, integrations, and API access. QTI used qti.tenant as the first-module pattern; this table promotes that boundary so QTI, OneRoster, Caliper, CASE, and future modules all point to the same customer/workspace row.

Lifecycle

Created in provisioning before any module writes tenant-scoped data. Moves to active when authentication and operational setup are complete; the same idempotent create may start active only when the exact platform-operator tenant principal has the service role plus platform:tenant:create or platform:* scope and setup is already complete. Other create authorities remain provisioning-only. Suspended pauses writes, and archived retains the workspace for history but closes ordinary writes. Learner-runtime deletion is handled by module tables, not by deleting the tenant row.

QTI reconciliation

Supersedes qti.tenant as cross-module truth. The platform implementation must either migrate qti.tenant rows into platform.tenant and add QTI foreign keys, or expose qti.tenant as a compatibility view over platform.tenant before claiming full platform/QTI conformance.

Primary key

tenant_id

RelationshipsConstraintsIndexesInvalid examples
  • Parent of platform.idempotency_key through platform.idempotency_key.tenant_id.
  • Parent of platform.audit_log through platform.audit_log.tenant_id.
  • Future module tenant-scoped tables must reference platform.tenant(tenant_id) rather than creating module-local tenant tables.
  • QTI predecessor: qti.tenant(tenant_id) is reconciled to this table by migration or compatibility view.
  • tenant_key is unique and stable across platform.tenant.
  • status must be one of tenant_status.
  • metadata must be a JSON object and must not contain direct learner/parent PII, credentials, Bearer tokens, raw JWTs, or contact details.
  • updated_at must be greater than or equal to created_at.
  • primary key (tenant_id)
  • unique (tenant_key)
  • index (status)
  • index (updated_at)
  • tenant_key = 'North Valley' because keys must be lowercase slug values.
  • metadata contains a student email, parent phone number, raw JWT subject, access token, or SIS identifier.
  • status = 'enabled' because the only active state is active.
  • A module table references qti.tenant instead of platform.tenant after the platform compatibility bridge exists.
Example row, query snippets, migration sketch, and SQL comments
{
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "tenant_key": "north-valley",
  "display_name": "North Valley School District",
  "status": "active",
  "metadata": {
    "region": "us-east",
    "externalRefs": [
      {
        "system": "crm",
        "ref": "acct_7x9"
      }
    ]
  },
  "created_at": "2026-05-21T12:00:00Z",
  "updated_at": "2026-05-21T12:00:00Z"
}
select tenant_id, status from platform.tenant where tenant_key = $1;

insert into platform.tenant (tenant_key, display_name, status, metadata) values ($1, $2, 'provisioning', '{}'::jsonb) returning tenant_id;

select t.tenant_key, count(a.audit_log_id) from platform.tenant t left join platform.audit_log a using (tenant_id) where t.status = 'active' group by t.tenant_key;
create table platform.tenant (
  tenant_id uuid primary key default gen_random_uuid(),
  tenant_key text not null unique,
  display_name text not null,
  status text not null default 'provisioning',
  metadata jsonb not null default '{}'::jsonb,
  created_at timestamptz not null default now(),
  updated_at timestamptz not null default now(),
  constraint tenant_key_format_ck
    check (tenant_key ~ '^[a-z0-9]([a-z0-9-]{1,62}[a-z0-9])$'),
  constraint tenant_display_name_present_ck
    check (length(btrim(display_name)) between 1 and 160),
  constraint tenant_status_ck
    check (status in ('provisioning', 'active', 'suspended', 'archived')),
  constraint tenant_metadata_object_ck
    check (jsonb_typeof(metadata) = 'object'),
  constraint tenant_updated_after_created_ck
    check (updated_at >= created_at)
);

create index tenant_status_idx on platform.tenant(status);
create index tenant_updated_at_idx on platform.tenant(updated_at);
comment on table platform.tenant is 'A tenant is the platform-wide owner of content, learner runtime records, integrations, and API access. QTI used qti.tenant as the first-module pattern; this table promotes that boundary so QTI, OneRoster, Caliper, CASE, and future modules all point to the same customer/workspace row.';
comment on column platform.tenant.tenant_id is 'Stable database identifier for one customer/workspace boundary. This is the value module tables reference and tenant-scoped JWTs must match.';
comment on column platform.tenant.tenant_key is 'Human-stable lookup key for routes, local tooling, logs, and examples. It is a convenience key, not an authorization secret.';
comment on column platform.tenant.display_name is 'Customer-facing label shown in admin tools and documentation examples.';
comment on column platform.tenant.status is 'Tenant lifecycle state that tells modules whether ordinary tenant-scoped writes may proceed.';
comment on column platform.tenant.metadata is 'Small redacted operational facts about the tenant that do not deserve first-class columns yet.';
comment on column platform.tenant.created_at is 'Timestamp when the tenant row was inserted.';
comment on column platform.tenant.updated_at is 'Timestamp when the tenant row was last changed.';

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
tenant_id Primary key uuid Required Default: gen_random_uuid() Stable database identifier for one customer/workspace boundary. This is the value module tables reference and tenant-scoped JWTs must match. Must be a valid PostgreSQL UUID and unique as the primary key. No enum Referenced by platform.idempotency_key.tenant_id, platform.audit_log.tenant_id, and future module tenant_id fields. One tenant has many module records. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 Not parseable as UUID, reused by another tenant, copied into learner-facing content as identity text, or replaced by tenant_key in foreign keys. Platform shared PITD-003 required tenant_id in platform.tenant. Edge: QTI reconciliation must preserve existing qti.tenant tenant_id values or provide a deterministic mapping table during migration.
tenant_key Unique text Required Default: none Human-stable lookup key for routes, local tooling, logs, and examples. It is a convenience key, not an authorization secret. 3 to 64 characters. Lowercase ASCII letters, digits, and hyphens only. Must start and end with a letter or digit. Unique across platform.tenant. No enum No foreign keys should point at tenant_key; use tenant_id for joins. north-valley Blank, uppercase, contains spaces, contains an email/domain secret, duplicates another tenant, or is used as proof of authorization. Platform shared QTI's qti.tenant.tenant_key pattern promoted into platform tenant lookup. Edge: A renamed school may keep its tenant_key stable and update display_name instead; changing tenant_key is a migration because URLs and examples may depend on it.
display_name Field text Required Default: none Customer-facing label shown in admin tools and documentation examples. 1 to 160 visible characters after trimming. Required. Must not be used for uniqueness, routing, authorization, or joins. No enum None. It describes the tenant row and can change without changing tenant_id. North Valley School District Null, blank, over 160 characters, used as an authorization key, or copied into module records instead of joining to platform.tenant. Platform shared PITD-003 required display_name in platform.tenant. Edge: The name may contain a school or district name. Do not store student, parent, or teacher contact details here.
status Field text Required Default: 'provisioning' Tenant lifecycle state that tells modules whether ordinary tenant-scoped writes may proceed. Must satisfy tenant_status_allowed: provisioning, active, suspended, or archived. tenant_status No foreign key. Modules read this before accepting customer writes. active Outside tenant_status, null, manually changed without an audit row explaining the administrative action, or created active without the exact platform-operator tenant principal, service role, and platform:tenant:create or platform:* scope. Platform shared PITD-003 left status to the data dictionary; PITD-005 and PITD-009 require auditable tenant scope. Edge: Create defaults to provisioning. Direct active creation is the existing idempotent create with the exact platform-operator tenant principal, Platform service role, and explicit tenant-create or wildcard scope after setup is complete; reviewer, writer, demo, and every tenant-bound service credential remain provisioning-only. Suspended and archived tenants can still be read by authorized support or export flows if the customer website documents that behavior.
metadata Field jsonb Required Default: '{}'::jsonb Small redacted operational facts about the tenant that do not deserve first-class columns yet. Must be a JSON object. Recommended top-level keys are region, externalRefs, notes, and featureFlags. Must not contain secrets, raw JWTs, direct learner/parent PII, raw package bytes, IP addresses, or user agents. No enum None. External references inside metadata are diagnostic and cannot replace tenant_id joins. {"region":"us-east","externalRefs":[{"system":"crm","ref":"acct_7x9"}]} Null, non-object JSON, stores a student email/phone/name/SIS ID, stores credentials, or becomes the only place a required module relationship is recorded. Platform shared PITD-003 required metadata; PITD-008 limits PII in shared tables. Edge: If a metadata key becomes required for authorization, billing, or module behavior, promote it to a typed column through a new data-dictionary attempt and migration.
created_at Field timestamptz Required Default: now() Timestamp when the tenant row was inserted. Required timestamp with time zone. Stored in UTC by PostgreSQL/Supabase conventions. No enum None. 2026-05-21T12:00:00Z Null, manually backdated without migration evidence, or compared as local wall time. Platform shared PITD-017 requires DDL comments and lifecycle timestamps. Edge: Bulk migrations from qti.tenant may preserve an older source created_at only when the migration notes explain the source.
updated_at Field timestamptz Required Default: now() Timestamp when the tenant row was last changed. Required timestamp with time zone. Must be greater than or equal to created_at. Updated on every display_name, status, or metadata change. No enum None. 2026-05-21T12:00:00Z Null, earlier than created_at, or left unchanged after a tenant status or metadata mutation. Platform shared PITD-017 requires forward-only migrations and observable shared state. Edge: Audit rows remain the detailed history; updated_at is only the latest-row freshness indicator.

Platform shared table

platform.idempotency_key Idempotency key

Shared retry ledger for customer-visible create, import, upload, export-job, and asynchronous command operations.

Purpose

This table records the first request to claim an Idempotency-Key within a precise Platform-owned scope. The default is tenant/module/surface/operation; explicit route profiles such as CASE 1EdTech may enforce a stricter tenant/module/surface/key scope. Later matching requests replay the original safe result, while key reuse with a different canonical request returns 409 before side effects.

Lifecycle

Inserted as in_progress before a mutation performs side effects. Updated to completed or failed_permanent when a replayable final outcome exists, failed_transient when no stable result can be replayed but retry is proven safe, commit_uncertain when side-effect commit state is unknown and non-reclaimable, and expired after the documented replay window. While in_progress or failed_transient, locked_until is the lease boundary: future locks reject concurrent duplicates, stale same-hash locks may be reclaimed only under the safe-retry precondition, and different hashes remain conflicts. Cleanup may retain expired rows for audit while making them non-replayable.

QTI reconciliation

Promotes qti.content_package.idempotency_key from a package-specific field into a reusable platform ledger. QTI package rows may keep their package-specific key copy for query compatibility, but replay and conflict behavior belongs to platform.idempotency_key.

Primary key

idempotency_key_id

RelationshipsConstraintsIndexesInvalid examples
  • Belongs to one platform.tenant.
  • May be referenced by many platform.audit_log rows through platform.audit_log.idempotency_key_id.
  • Module-specific rows may store their own resource identifier; this table records retry state and safe replay data, not the source of record for module resources.
  • Unique scope: tenant_id, module, surface, method, route_template, operation_id, idempotency_key.
  • CASE 1EdTech route-profile scope: unique tenant_id, module=case, surface=1edtech, idempotency_key. Method, route, operation, concrete resource identity, body, and If-Match remain part of its canonical hash, so cross-route or cross-resource reuse conflicts.
  • request_hash must be sha256:<64 lowercase hex characters>.
  • Default request_hash canonical input order is ["v1", METHOD, route_template, tenant_id, module, surface, operation_id, canonical_payload_sha256, canonical_header_sha256]; only an explicit Platform-owned route profile may pin a different exact canonical input for deployed compatibility.
  • By default, locked_until drives the live-lock and stale-lock-reclaim rules: same hash plus future lock returns 409 idempotency_in_progress with Retry-After; same hash plus stale lock can be reclaimed by one FOR UPDATE worker only when the mutation is proven not to have committed or is internally idempotent; different hash is always conflict; commit_uncertain rows are never reclaimable. An explicit Platform-owned route profile may choose a more conservative non-reclaimable terminal response and a documented live progress status.
  • response_status must be null while status is in_progress, failed_transient, or commit_uncertain and between 100 and 599 when present.
  • response_body must be null or a redacted JSON object or array safe to replay to the same tenant.
  • response_headers must be a redacted JSON object; canonical_request_hash and lease_token fence protocol-specific ownership without turning request IDs into owner credentials.
  • expires_at must be later than created_at.
  • primary key (idempotency_key_id)
  • unique (tenant_id, module, surface, method, route_template, operation_id, idempotency_key)
  • partial unique (tenant_id, module, surface, idempotency_key) where module=case and surface=1edtech
  • index (tenant_id, expires_at)
  • index (status, locked_until) for stale-lock-reclaim and cleanup scans
  • index (request_hash)
  • Same scope and key with a different request_hash is a 409 idempotency conflict, not a second mutation.
  • response_body includes raw package bytes, JWTs, headers, IP addresses, user agents, learner PII, or unredacted Problem details.
  • route_template stores a concrete path like /tenants/0d4.../qti/packages instead of /tenants/{tenant_id}/qti/packages.
  • expires_at is null or earlier than created_at.

Request hash canonicalization

By default, request_hash is the SHA-256 digest of an RFC 8785 / JSON Canonicalization Scheme (JCS) component array, not a digest of raw request bytes and not a free-form implementation choice. An exact route profile in this Platform-owned dictionary may define a different compatibility-preserving canonical input.

  • Default component order is fixed: ["v1", METHOD, route_template, tenant_id, module, surface, operation_id, canonical_payload_sha256, canonical_header_sha256].
  • METHOD is uppercase; route_template is the documented template with variables in braces; tenant_id, module, surface, and operation_id are the exact values stored in the unique idempotency scope.
  • For JSON request bodies, canonical_payload_sha256 is the SHA-256 of RFC 8785 / JCS canonical JSON: reject duplicate object keys, accept only I-JSON values, sort object keys lexicographically at every object level, preserve array order, preserve strings as-is with no Unicode normalization, emit no insignificant whitespace, serialize primitives and finite numbers per JCS, and UTF-8 encode the result.
  • For non-JSON uploads, canonical_payload_sha256 is the endpoint-documented streaming SHA-256 of the bytes or package digest; the raw body is never stored in platform.idempotency_key.
  • canonical_header_sha256 is the SHA-256 of RFC 8785 / JCS canonical JSON containing only lowercase header names the endpoint declares idempotency-relevant. When no headers are relevant, hash an empty object, not the full request header set.
  • Under the default profile, the stored value is "sha256:" plus the lowercase hex digest of the RFC 8785 / JCS canonical JSON component array.
  • A route-specific hash profile may differ only when this Platform-owned dictionary names the exact route, canonical fields, compatibility reason, and conflict rule. Implementation-only hash exceptions are invalid.
{
  "requestBody": {
    "packageUrl": "s3://loop-artifacts/demo/qti-package.zip",
    "profile": "qti3",
    "dryRun": false
  },
  "canonicalPayloadJson": "{\"dryRun\":false,\"packageUrl\":\"s3://loop-artifacts/demo/qti-package.zip\",\"profile\":\"qti3\"}",
  "canonicalPayloadSha256": "sha256:e0d1774a456d4048632d5de17b291cfaef674580b79bd385648333e4fa401116",
  "canonicalHeadersJson": "{\"content-type\":\"application/json\"}",
  "canonicalHeaderSha256": "sha256:940a617179f48cedaf9e31fe07bb583861ebee3edf13e258621a715110e3e31d",
  "componentArrayJson": "[\"v1\",\"POST\",\"/tenants/{tenant_id}/qti/packages\",\"0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3\",\"qti\",\"1edtech\",\"qti.packages.import\",\"sha256:e0d1774a456d4048632d5de17b291cfaef674580b79bd385648333e4fa401116\",\"sha256:940a617179f48cedaf9e31fe07bb583861ebee3edf13e258621a715110e3e31d\"]",
  "requestHash": "sha256:c3def4353e3f07428c94ff3675ed7f0007811dfd7fcbf7044df6c7800f8bd478"
}

Provenance. PITD-007 pins same-hash replay and different-hash conflict; PITD-014 requires the data dictionary to carry the exact field contract. Architecture source

Claim/replay/conflict middleware responses

The claim query below returns one branch, and shared-default middleware maps that branch to exactly one response behavior before any side effects run. An exact Platform-owned route profile may override the transport mapping or choose a more conservative non-reclaimable outcome while preserving the same no-side-effect branch discipline.

BranchConditionMiddleware response
claimed No existing row is visible in the full unique scope, so this request is the first claimant. Proceed with the mutation inside the same transaction or operation lease; no HTTP response is sent yet. Finalize the row as completed, failed_permanent, failed_transient, or commit_uncertain according to the outcome rules below.
stale_lock_reclaimed An existing row has the same request_hash, status in in_progress or failed_transient, and locked_until is null or no later than now(). The prior worker's lease is stale; the operation is reclaimable only when the mutation is proven not to have committed or is internally idempotent. A different request_hash is still conflict, not reclaim, and commit_uncertain is never reclaimable. The worker that holds FOR UPDATE on the stale row resets status to in_progress, extends locked_until, updates updated_at, and proceeds only under the safe-retry precondition. Treat this like claimed for side effects after that precondition is true, but preserve the branch name for logs, metrics, and audit explanation.
replay Existing row has the same request_hash and status in completed or failed_permanent. By default, return the stored response_status and response_body exactly as the safe replay for this tenant. An explicit route profile may map the stored result to a different replay transport status. Do not run the mutation again.
conflict Existing row has the same unique scope and Idempotency-Key but a different request_hash. Return 409 RFC 7807 Problem with code idempotency_conflict. Do not run side effects and do not overwrite the first row.
already_in_progress Existing row has the same request_hash, status in in_progress or failed_transient, and locked_until is still in the future. By default, return 409 RFC 7807 Problem with code idempotency_in_progress and Retry-After equal to the remaining lock seconds, clamped to at least 1. An explicit route profile may return a documented progress status instead. Do not run side effects and do not save a replay body for this concurrent request.
concurrent_insert_loser This worker tried to insert a new scoped key at the same time as another worker. PostgreSQL either reports unique_violation SQLSTATE 23505 on the seven-column unique constraint or, when the documented ON CONFLICT DO NOTHING form is used, the inserted and existing CTEs return no row because the winning row is still uncommitted. Roll back the decision transaction immediately, wait for the winning transaction to become visible, and rerun this same decision query once before doing any side effects. The second decision must then resolve to replay, conflict, already_in_progress, expired, commit_uncertain, stale_lock_reclaimed, or claimed. If it still returns no row, return 409 idempotency_in_progress with Retry-After: 1 rather than running the mutation.
commit_uncertain Existing row has the same request_hash and status commit_uncertain, meaning a prior worker could not prove whether platform-owned side effects committed and did not store a safe replay body. Return 500 RFC 7807 Problem with code idempotency_commit_uncertain, include requestId and traceId for support, and do not run side effects. Only module-specific reconciliation may later move the row to completed with a replay body or another documented non-retryable final state.
expired Existing row is expired inside the retained audit window. Return 409 RFC 7807 Problem with code idempotency_key_expired. The client must choose a new Idempotency-Key if it wants a new operation.
Problem body
{
  "type": "https://platform.timeback.com/problems/idempotency-in-progress",
  "title": "Idempotency key is already processing",
  "status": 409,
  "code": "idempotency_in_progress",
  "detail": "The original request for this Idempotency-Key is still running. Retry the same request after the Retry-After interval.",
  "requestId": "req_20260521_0002",
  "traceId": "trace_20260521_0002"
}

Response headers
{
  "Retry-After": "17"
}

Provenance. PITD-006 defines typed Problem errors; PITD-007 defines in-progress conflict behavior before duplicate side effects. Architecture source

Live-lock and stale-lock-reclaim rules

locked_until is a short operation lease, not a queue, not a background-job timer, and not a hint clients interpret themselves. These are the shared defaults; an exact Platform-owned route profile may define a documented progress response or a more conservative terminal stale outcome without allowing duplicate execution.

  • Concurrent live-lock rule (default): when a same-scope, same-hash row is status in_progress or failed_transient and locked_until is greater than now(), middleware returns 409 idempotency_in_progress with Retry-After. It never waits inside the database transaction, never performs side effects, and never writes a replay body for the second request.
  • Stale-lock-reclaim rule (default): when a same-scope, same-hash row is status in_progress or failed_transient and locked_until is null or no later than now(), exactly one worker may lock that row with FOR UPDATE, set status='in_progress', set locked_until=now()+interval '30 seconds', set updated_at=now(), and continue under branch stale_lock_reclaimed only if the mutation is proven not to have committed or the operation is internally idempotent.
  • Reclaim is same-hash only. A same Idempotency-Key with a different request_hash returns idempotency_conflict even if locked_until is stale, because key reuse with different content is never allowed to reclaim a row.
  • Commit-uncertain rule: if a worker cannot prove whether platform-owned side effects committed and cannot reconstruct a safe replay body, it must set status='commit_uncertain' with null response_status, null response_body, and null locked_until. Later retries return idempotency_commit_uncertain and never stale-lock-reclaim that row.
  • Long-running asynchronous work should finalize the idempotency row with a replayable 202 response and move progress into a job/resource table. It must not keep extending locked_until for the entire background job.
  • The index (status, locked_until) exists for stale-lock-reclaim and cleanup scans such as where status in ('in_progress','failed_transient') and locked_until <= now(). It is not a customer search index.

Provenance. PITD-007 requires one platform-owned concurrency contract for idempotent writes; the data dictionary must explain the lock branch and the status/locked_until index without source-code inspection. Architecture source

CASE 1EdTech transactional idempotency profile

Platform-owned route profile for every retryable CASE 1.1 write. It makes the customer Idempotency-Key tenant-wide within CASE 1EdTech and commits each business mutation with its terminal replay receipt.

  • Scope is exactly tenant_id plus module=case, surface=1edtech, and idempotency_key, enforced by partial unique index case_1edtech_idempotency_key_uidx. Method, route_template, and operation_id remain required ledger identity, but reusing a key for another CASE route conflicts instead of creating a second scope.
  • request_hash is sha256:<lowercase hex> over recursively key-sorted JSON with fields version=case-v2, method, routeTemplate, operationId, tenantId, and requestBody. POST requestBody is the submitted JSON; PUT/PATCH requestBody also includes the concrete resourceId and If-Match; DELETE includes resourceId, body=null, and If-Match; CFPackage import uses the submitted package JSON. Object keys sort at every depth, array order and string bytes are preserved, and JSON primitives use JSON serialization.
  • A short claim transaction inserts status=in_progress, canonical_request_hash=request_hash, claim_protocol=case-v2, a server-generated case-v2:<uuid> lease_token, the route/method/operation identity, and a 30-second locked_until before validation or business side effects. first_request_id is audit identity, never ownership.
  • A same-hash live contender returns the existing CASE 409 case:idempotency_conflict Problem contract with Retry-After clamped to 1-30 seconds. A different hash returns the same 409 code before its callback. Neither contender waits behind or executes the mutation.
  • The elected owner locks the exact tenant/key/hash/protocol/token row, performs the CASE mutation through the same PostgreSQL transaction, writes status=completed plus response status/body/headers and resource identity, then commits once. POST, PUT, PATCH, DELETE, Alignment writes, and CFPackage imports all use this transaction-bound repository path.
  • Only an exact stale case-v2 in_progress or failed_transient row with matching hash/token and no response/header/resource evidence may be reclaimed. The conditional takeover has a 250 ms PostgreSQL lock timeout: a still-running owner keeps its row lock and the contender returns in-progress. Unknown protocols, incomplete terminal receipts, and commit_uncertain never execute.
  • An ambiguous COMMIT is read back. A terminal receipt replays; otherwise the exact owner token may mark commit_uncertain, which is never reclaimed. Failures proven to have rolled back all business writes may become failed_transient. Permanent 4xx Problems are retained as failed_permanent receipts.
  • The pre-#1454 table case.idempotency_key is a deprecated migration source only. Its completed rows migrate as case-v1-terminal history; current CASE code reads and writes platform.idempotency_key exclusively. The lifecycle and rollout boundary are owned by loop/context/case-idempotency-claim-decision.md.

Provenance. PITD-024 and CASE CITD-008 require a shared durable claim, exact replay metadata, and fail-closed ambiguous outcomes; Issue #1454 defines the CASE route profile. Architecture source

Content Alpha QTI transactional idempotency profile

Platform-owned route profile for POST /tenants/{tenantId}/alpha/content/imports/qti-package. It preserves the deployed Content Alpha retry contract while keeping the shared ledger lifecycle and no-duplicate guarantee authoritative here.

  • Scope is exactly module=content, surface=alpha, method=POST, route_template=/tenants/{tenantId}/alpha/content/imports/qti-package, and operation_id=content.import_qti_package. No other route inherits this profile implicitly.
  • For this route only, request_hash is sha256:<lowercase hex> over canonical JSON with keys package_hash, byte_length, and sourceName. package_hash is the SHA-256 of the exact ZIP bytes, byte_length is the exact byte count, and sourceName is the exact X-QTI-Source-Name value when present, otherwise the exact legacy X-Content-Source-Name value when present, otherwise null. X-QTI-Source-Name takes precedence when both headers are present. This compact profile and legacy-header fallback are retained for deployed-ledger compatibility; same-length changed bytes still conflict because package_hash changes.
  • A caller generates a candidate idempotency_key_id UUID before INSERT. The unique-scope upsert may return the winning row to every contender, but only the caller whose candidate equals the returned primary key owns the claim and may execute. first_request_id remains the audit request id and is not an ownership token.
  • Only the winning claimant may perform prerequisite seed repair. QTI Content writes and the final status=completed ledger update, response_status=202, redacted response_body, response headers, resource type, and resource id commit in one bound PostgreSQL transaction. response_status and response_body remain null while status is in_progress.
  • A live same-hash retry returns 202 application/json with status=in_progress and Retry-After, without storing that progress body or performing side effects. This is the explicit route exception to the shared default 409 idempotency_in_progress mapping.
  • The implementation must preserve database read/claim capacity while long import transactions are open so same-instance retries can observe the committed claim and return the live 202 promptly. Capping long transactions at poolMax-1 is a conforming mechanism; queued imports must wait outside the connection pool.
  • A completed same-request retry returns HTTP 200 with Idempotency-Replayed: true and the stored response body and resource identifiers. The stored first-attempt response_status remains 202. This is the explicit route transport exception to exact stored-status replay; the body itself must remain equivalent after delivery-URL canonicalization.
  • An expired unfinished claim returns terminal 503 and is never automatically reclaimed or rerun. This conservative route exception applies because the synchronous importer has no independent job/resource state that proves a stale owner stopped; operators must reconcile explicitly rather than rotate keys automatically.
  • A completed legacy row may bypass request_hash equality only when its stored public response proves the exact same package_hash, byte_length, and source_name, or when it matches the immediately preceding full-parser request hash exactly. Active, failed, expired, or commit_uncertain rows never use legacy equivalence.
  • A different package hash, byte length, or source name under the same key returns 409 idempotency_conflict. Recovery must never scan Content rows by source name, title, creation time, or other heuristic identity.

Provenance. PITD-007 owns ledger replay/conflict semantics; this explicit profile governs Content Alpha issue #613/#616 without creating a Content-local semantic fork. Architecture source

Worked QTI POST middleware flow

For a retryable QTI package import, middleware runs the decision query first, branches before side effects, and finalizes the same ledger row only after the branch is known.

  • Step 1: derive the unique scope exactly as tenant_id=0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3, module=qti, surface=1edtech, method=POST, route_template=/tenants/{tenant_id}/qti/packages, operation_id=qti.packages.import, idempotency_key=pkg-upload-2026-05-21-001.
  • Step 2: derive request_hash from the canonical component array shown in the request-hash card; the worked QTI POST stores sha256:c3def4353e3f07428c94ff3675ed7f0007811dfd7fcbf7044df6c7800f8bd478.
  • Step 3: run the claim/replay/conflict decision query. Its INSERT uses ON CONFLICT DO NOTHING, then locks any existing row with FOR UPDATE so every retry follows the same branch table. If an implementation uses a plain INSERT instead, catch PostgreSQL unique_violation SQLSTATE 23505 for this unique constraint, roll back, and rerun the same decision query before side effects.
  • Step 4: if the branch is claimed or stale_lock_reclaimed, run the QTI import once. For stale_lock_reclaimed, first prove the prior mutation did not commit or that the import is internally idempotent under the same request_hash. On success, run the completed finalizer update with the idempotency_key_id returned by the decision query, response_status=201, the redacted replay body, resource_type=qti.content_package, and the created package id.
  • Step 5: if the decision query returns no row because ON CONFLICT DO NOTHING lost to a concurrent uncommitted insert, roll back the decision transaction, wait for the winning transaction to become visible, rerun the decision query once, and do not run the QTI import unless the rerun returns claimed or stale_lock_reclaimed.
  • Step 6: if the same request returns replay later, return the stored response_status and response_body. If a retry reuses the same key with a different request_hash, return idempotency_conflict. If the first worker is still locked, return 409 idempotency_in_progress with Retry-After.
  • Step 7: if validation or authorization fails before side effects, run the failed_permanent finalizer with the safe Problem response. Use failed_transient only when the failed attempt is proven not to have committed platform-owned side effects, or when the operation is internally idempotent under the same request_hash. If the worker cannot prove whether side effects committed, run the commit_uncertain finalizer; later same-hash retries return idempotency_commit_uncertain and must not reclaim or rerun the mutation.
{
  "firstDecision": {
    "idempotency_decision": "claimed",
    "idempotency_key_id": "b81db6f4-c7ea-4757-b5aa-87570f7ad119",
    "replay_or_problem_status": null
  },
  "staleLockReclaimed": {
    "idempotency_decision": "stale_lock_reclaimed",
    "idempotency_key_id": "b81db6f4-c7ea-4757-b5aa-87570f7ad119",
    "replay_or_problem_status": null,
    "locked_until": "2026-05-21T12:02:00Z"
  },
  "completedFinalizer": {
    "status": "completed",
    "response_status": 201,
    "response_body": {
      "packageId": "7f2e4dd2-c147-49ea-af77-41a6fdd70980",
      "importStatus": "imported"
    },
    "resource_type": "qti.content_package",
    "resource_id": "7f2e4dd2-c147-49ea-af77-41a6fdd70980"
  },
  "sameRequestRetry": {
    "idempotency_decision": "replay",
    "replay_or_problem_status": 201,
    "replay_body": {
      "packageId": "7f2e4dd2-c147-49ea-af77-41a6fdd70980",
      "importStatus": "imported"
    }
  },
  "sameKeyDifferentBodyRetry": {
    "idempotency_decision": "conflict",
    "replay_or_problem_status": 409,
    "problem_code": "idempotency_conflict"
  }
}

Provenance. PITD-007 requires same-key same-request replay and same-key different-request conflict; the data dictionary must show the middleware sequence without requiring source-code inspection. Architecture source

Example row, query snippets, migration sketch, and SQL comments
{
  "idempotency_key_id": "b81db6f4-c7ea-4757-b5aa-87570f7ad119",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "module": "qti",
  "surface": "1edtech",
  "method": "POST",
  "route_template": "/tenants/{tenant_id}/qti/packages",
  "operation_id": "qti.packages.import",
  "idempotency_key": "pkg-upload-2026-05-21-001",
  "request_hash": "sha256:c3def4353e3f07428c94ff3675ed7f0007811dfd7fcbf7044df6c7800f8bd478",
  "canonical_request_hash": "sha256:c3def4353e3f07428c94ff3675ed7f0007811dfd7fcbf7044df6c7800f8bd478",
  "claim_protocol": null,
  "status": "completed",
  "response_status": 201,
  "response_body": {
    "packageId": "7f2e4dd2-c147-49ea-af77-41a6fdd70980",
    "importStatus": "imported"
  },
  "response_headers": {},
  "resource_type": "qti.content_package",
  "resource_id": "7f2e4dd2-c147-49ea-af77-41a6fdd70980",
  "first_request_id": "req_20260521_0001",
  "lease_token": null,
  "locked_until": null,
  "expires_at": "2026-05-22T12:01:00Z",
  "created_at": "2026-05-21T12:01:00Z",
  "updated_at": "2026-05-21T12:01:08Z"
}
-- Claim/replay/conflict decision for one retryable QTI POST. Run inside the same transaction before side effects.
-- The INSERT uses ON CONFLICT DO NOTHING on the seven-column unique scope. If an implementation uses plain INSERT instead,
-- catch PostgreSQL unique_violation SQLSTATE 23505 for that same constraint, roll back, and run this decision query before work.
-- If a concurrent uncommitted claim wins the unique race and ON CONFLICT DO NOTHING makes inserted/existing return no row,
-- roll back and retry this decision query once before doing work; if the retry still returns no row, return 409 idempotency_in_progress.
-- Branch response mapping:
--   claimed -> first claimant; perform the mutation and later finalize this row.
--   stale_lock_reclaimed -> same-hash stale lease was reset; perform the mutation only after the safe-retry precondition is true, then finalize this row.
--   replay -> return stored response_status/response_body.
--   conflict -> 409 Problem code idempotency_conflict.
--   already_in_progress -> 409 Problem code idempotency_in_progress with Retry-After from locked_until.
--   commit_uncertain -> 500 Problem code idempotency_commit_uncertain; support reconciliation required.
--   expired -> 409 Problem code idempotency_key_expired.
with inserted as (
  insert into platform.idempotency_key (
    tenant_id, module, surface, method, route_template, operation_id,
    idempotency_key, request_hash, first_request_id, locked_until, expires_at
  )
  values (
    $1, $2, $3, $4, $5, $6,
    $7, $8, $9, now() + interval '30 seconds', now() + interval '24 hours'
  )
  on conflict (tenant_id, module, surface, method, route_template, operation_id, idempotency_key)
  do nothing
  returning
    idempotency_key_id, request_hash, status, response_status, response_body,
    locked_until, 'claimed'::text as branch
),
existing as (
  select
    idempotency_key_id, request_hash, status, response_status, response_body,
    locked_until
  from platform.idempotency_key
  where tenant_id = $1
    and module = $2
    and surface = $3
    and method = $4
    and route_template = $5
    and operation_id = $6
    and idempotency_key = $7
    and not exists (select 1 from inserted)
  for update
),
classified as (
  select *,
    case
      when request_hash <> $8 then 'conflict'
      when status = 'commit_uncertain' then 'commit_uncertain'
      when status in ('completed', 'failed_permanent') then 'replay'
      when status = 'expired' then 'expired'
      when status in ('in_progress', 'failed_transient')
        and (locked_until is null or locked_until <= now()) then 'stale_lock_reclaimed'
      else 'already_in_progress'
    end as branch
  from existing
),
stale_reclaim as (
  update platform.idempotency_key target
  set status = 'in_progress',
      locked_until = now() + interval '30 seconds',
      updated_at = now()
  from classified
  where target.idempotency_key_id = classified.idempotency_key_id
    and classified.branch = 'stale_lock_reclaimed'
  returning
    target.idempotency_key_id, target.request_hash, target.status,
    target.response_status, target.response_body, target.locked_until,
    'stale_lock_reclaimed'::text as branch
),
decision as (
  select * from inserted
  union all
  select * from stale_reclaim
  union all
  select
    idempotency_key_id, request_hash, status, response_status, response_body,
    locked_until, branch
  from classified
  where branch <> 'stale_lock_reclaimed'
)
select
  idempotency_key_id,
  branch as idempotency_decision,
  case
    when branch = 'replay' then response_status
    when branch = 'commit_uncertain' then 500
    when branch in ('conflict', 'already_in_progress', 'expired') then 409
    else null
  end as replay_or_problem_status,
  case when branch = 'replay' then response_body else null end as replay_body,
  case
    when branch = 'conflict' then 'idempotency_conflict'
    when branch = 'already_in_progress' then 'idempotency_in_progress'
    when branch = 'commit_uncertain' then 'idempotency_commit_uncertain'
    when branch = 'expired' then 'idempotency_key_expired'
    else null
  end as problem_code
from decision;

update platform.idempotency_key set status = 'completed', response_status = $2, response_body = $3, resource_type = $4, resource_id = $5, locked_until = null, updated_at = now() where idempotency_key_id = $1 and status = 'in_progress';

update platform.idempotency_key set status = 'failed_permanent', response_status = $2, response_body = $3, locked_until = null, updated_at = now() where idempotency_key_id = $1 and status = 'in_progress';

update platform.idempotency_key set status = 'failed_transient', response_status = null, response_body = null, locked_until = null, updated_at = now() where idempotency_key_id = $1 and status = 'in_progress';

update platform.idempotency_key set status = 'commit_uncertain', response_status = null, response_body = null, locked_until = null, updated_at = now() where idempotency_key_id = $1 and status = 'in_progress';
create table platform.idempotency_key (
  idempotency_key_id uuid primary key default gen_random_uuid(),
  tenant_id uuid not null references platform.tenant(tenant_id),
  module text not null,
  surface text not null,
  method text not null,
  route_template text not null,
  operation_id text not null,
  idempotency_key text not null,
  request_hash text not null,
  canonical_request_hash text,
  claim_protocol text,
  status text not null default 'in_progress',
  response_status integer,
  response_body jsonb,
  response_headers jsonb not null default '{}'::jsonb,
  resource_type text,
  resource_id text,
  first_request_id text not null,
  lease_token text,
  locked_until timestamptz,
  expires_at timestamptz not null,
  created_at timestamptz not null default now(),
  updated_at timestamptz not null default now(),
  constraint idempotency_module_ck
    check (module in ('platform', 'incept', 'qti', 'oneroster', 'caliper', 'case', 'nweamap', 'ed_fi', 'people_and_orgs', 'curriculum', 'content', 'events', 'results', 'analytics')),
  constraint idempotency_surface_ck
    check (surface in ('platform', '1edtech', 'alpha')),
  constraint idempotency_method_ck
    check (method in ('POST', 'PUT', 'PATCH', 'DELETE')),
  constraint idempotency_route_template_ck
    check (route_template like '/%' and position('?' in route_template) = 0),
  constraint idempotency_operation_id_ck
    check (operation_id ~ '^[a-z0-9][a-z0-9._-]{0,119}$'),
  constraint idempotency_key_length_ck
    check (length(btrim(idempotency_key)) between 1 and 128),
  constraint idempotency_request_hash_ck
    check (request_hash ~ '^sha256:[0-9a-f]{64}$'),
  constraint idempotency_status_ck
    check (status in ('in_progress', 'completed', 'failed_permanent', 'failed_transient', 'commit_uncertain', 'expired')),
  constraint idempotency_response_status_ck
    check (response_status is null or response_status between 100 and 599),
  constraint idempotency_response_body_shape_ck
    check (response_body is null or jsonb_typeof(response_body) in ('object', 'array')),
  constraint idempotency_response_headers_shape_ck
    check (jsonb_typeof(response_headers) = 'object'),
  constraint idempotency_expires_after_created_ck
    check (expires_at > created_at),
  constraint idempotency_updated_after_created_ck
    check (updated_at >= created_at),
  unique (tenant_id, module, surface, method, route_template, operation_id, idempotency_key)
);

create index idempotency_tenant_expires_idx on platform.idempotency_key(tenant_id, expires_at);
create index idempotency_status_lock_idx on platform.idempotency_key(status, locked_until);
create index idempotency_request_hash_idx on platform.idempotency_key(request_hash);
create unique index case_1edtech_idempotency_key_uidx
  on platform.idempotency_key(tenant_id, module, surface, idempotency_key)
  where module = 'case' and surface = '1edtech';
comment on table platform.idempotency_key is 'This table records the first request to claim an Idempotency-Key within a precise Platform-owned scope. The default is tenant/module/surface/operation; explicit route profiles such as CASE 1EdTech may enforce a stricter tenant/module/surface/key scope. Later matching requests replay the original safe result, while key reuse with a different canonical request returns 409 before side effects.';
comment on column platform.idempotency_key.idempotency_key_id is 'Stable identifier for the retry ledger row. Audit rows refer to this value rather than repeating replay internals.';
comment on column platform.idempotency_key.tenant_id is 'Tenant that owns the retry scope and the mutation being protected.';
comment on column platform.idempotency_key.module is 'Module namespace whose operation claimed the idempotency key.';
comment on column platform.idempotency_key.surface is 'Surface whose API contract produced the retryable operation.';
comment on column platform.idempotency_key.method is 'HTTP method for the mutation protected by the key.';
comment on column platform.idempotency_key.route_template is 'Stable route pattern from the customer website or OpenAPI operation, with variable path segments expressed as braces.';
comment on column platform.idempotency_key.operation_id is 'Stable operation identifier used by docs, OpenAPI, logs, audit, and idempotency middleware.';
comment on column platform.idempotency_key.idempotency_key is 'Opaque customer-supplied Idempotency-Key header value for one retryable operation.';
comment on column platform.idempotency_key.request_hash is 'Digest of the canonical replay identity for the first request. It lets middleware distinguish a safe retry from key reuse with different content.';
comment on column platform.idempotency_key.canonical_request_hash is 'Immutable canonical request identity retained when claim_protocol needs request_hash as a rolling-deployment or active-owner fence.';
comment on column platform.idempotency_key.claim_protocol is 'Versioned ownership protocol that defines which token, stale-state, finalization, and rolling-deployment rules govern the row.';
comment on column platform.idempotency_key.status is 'Replay lifecycle state of the idempotency row.';
comment on column platform.idempotency_key.response_status is 'HTTP status originally returned for a final replayable outcome.';
comment on column platform.idempotency_key.response_body is 'Redacted JSON body safe to replay to the same tenant for completed or failed_permanent outcomes.';
comment on column platform.idempotency_key.response_headers is 'Redacted terminal response headers needed to replay the original HTTP contract, including ETag and documented retry metadata.';
comment on column platform.idempotency_key.resource_type is 'Optional type of resource created, imported, deleted, or accepted by the operation.';
comment on column platform.idempotency_key.resource_id is 'Optional identifier of the primary resource associated with the replayable outcome.';
comment on column platform.idempotency_key.first_request_id is 'Request identifier of the first request that claimed this key.';
comment on column platform.idempotency_key.lease_token is 'Server-generated claimant fence used by versioned protocols to prove which request may mutate or finalize the ledger row.';
comment on column platform.idempotency_key.locked_until is 'Temporary lock deadline used while an in-progress operation is executing.';
comment on column platform.idempotency_key.expires_at is 'Timestamp after which the key is no longer promised to replay the original response.';
comment on column platform.idempotency_key.created_at is 'Timestamp when the first request claimed the idempotency key.';
comment on column platform.idempotency_key.updated_at is 'Timestamp when the row last changed status, replay body, lock, or expiry.';

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
idempotency_key_id Primary key uuid Required Default: gen_random_uuid() Stable identifier for the retry ledger row. Audit rows refer to this value rather than repeating replay internals. Must be a valid PostgreSQL UUID and unique as the primary key. No enum Referenced by platform.audit_log.idempotency_key_id. One idempotency row can explain many audit rows for retries and final outcomes. b81db6f4-c7ea-4757-b5aa-87570f7ad119 Not a UUID, reused across rows, or exposed as the customer Idempotency-Key header value. Platform shared PITD-007 requires a shared retry ledger. Edge: This is an internal row id; the externally supplied key is idempotency_key.
tenant_id Foreign key uuid Required Default: none Tenant that owns the retry scope and the mutation being protected. Must reference platform.tenant(tenant_id). No enum Many idempotency rows belong to one platform.tenant. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 Null, not found in platform.tenant, or different from the tenant_id claim in the Bearer JWT for a tenant-scoped route. Platform shared PITD-007 defines tenant_id as part of idempotency scope. Edge: Platform-wide maintenance operations that do not have a tenant must not use this table unless the operation is deliberately scoped to a tenant row.
module Scope key text Required Default: none Module namespace whose operation claimed the idempotency key. Must satisfy module_key_allowed: platform, incept, qti, oneroster, caliper, case, nweamap, ed_fi, people_and_orgs, curriculum, content, events, results, analytics. module_key Pairs with surface, route_template, and operation_id to define replay scope. qti Null, outside module_key, used to store a route group instead of the module namespace, or used by /platform/modules as a release-status substitute. Platform shared PITD-002 requires module schemas and shared platform operational tables. Edge: module=qti remains valid identity for QTI-owned retry scopes independent of release-state display. Public registries must separately expose module_release_status derived from loop/qti/state.json; at this generation, qti/1edtech is approved because all required QTI 1EdTech deliverables are approved.
surface Scope key text Required Default: none Surface whose API contract produced the retryable operation. Must satisfy surface_code_allowed: platform, 1edtech, or alpha. surface_code Pairs with module so qti/1edtech and qti/alpha operations can have different customer contracts over shared persistence. 1edtech Null, outside surface_code, or used to hide whether an Alpha divergence changed operation behavior. Platform shared PITD-015 defines platform, 1EdTech, and Alpha surfaces. Edge: The platform surface uses module=platform and surface=platform.
method Scope key text Required Default: none HTTP method for the mutation protected by the key. Must satisfy mutation_http_method_allowed: POST, PUT, PATCH, or DELETE. mutation_http_method Part of the unique retry scope. Same route and key under different mutation methods are distinct scopes. POST Null, GET, lowercase if the implementation normalizes to uppercase, or method does not match the documented endpoint. Platform shared PITD-007 defines retryable create, upload, import, export-job, and command operations. Edge: PUT/PATCH operations that can overwrite user work still need If-Match or an equivalent validator; idempotency does not replace optimistic concurrency.
route_template Scope key text Required Default: none Stable route pattern from the customer website or OpenAPI operation, with variable path segments expressed as braces. Must start with /. Must not contain a query string. Path variables use {name}. Must not include concrete tenant IDs, resource IDs, learner refs, or secrets. No enum Part of the unique retry scope; links the row back to a documented endpoint. /tenants/{tenant_id}/qti/packages Contains concrete UUIDs, query strings, raw learner refs, access tokens, or an undocumented internal route. Platform shared PITD-006 requires endpoint-local contracts and PITD-007 requires route template scope. Edge: If the Alpha route names the tenant as workspaceId, the template still uses the public Alpha route name documented by that surface.
operation_id Scope key text Required Default: none Stable operation identifier used by docs, OpenAPI, logs, audit, and idempotency middleware. 1 to 120 characters. Lowercase letters, digits, dots, underscores, and hyphens. Must be stable across wording-only documentation edits. No enum Part of the unique retry scope and repeated in audit rows. qti.packages.import Blank, generated from a localized title, contains spaces, or changes without a customer-site and implementation update. Platform shared PITD-010 and PITD-009 require shared operation_id fields. Edge: If two routes intentionally share replay behavior, they still need separate operation_id values unless the architecture explicitly declares them equivalent.
idempotency_key Scope key text Required Default: none Opaque customer-supplied Idempotency-Key header value for one retryable operation. 1 to 128 printable ASCII characters after trimming. Unique within the tenant/module/surface/method/route_template/operation_id scope. Must not be a token, password, email, phone number, student identifier, or raw request hash. No enum Part of the unique retry scope. Not a foreign key. pkg-upload-2026-05-21-001 Blank, reused for different request_hash in the same scope, contains credentials or direct learner PII, or exceeds the documented length. Platform shared QTI package ingest used Idempotency-Key; PITD-007 promotes the rule. Edge: Same key with same request_hash replays; same key with different request_hash returns 409.
request_hash Field text Required Default: none Digest of the canonical replay identity for the first request. It lets middleware distinguish a safe retry from key reuse with different content. Must be sha256:<64 lowercase hex characters>. The default hash input order is ["v1", METHOD, route_template, tenant_id, module, surface, operation_id, canonical_payload_sha256, canonical_header_sha256]. For JSON bodies, canonical_payload_sha256 uses RFC 8785 / JCS canonical JSON: reject duplicate object keys, accept only I-JSON values, sort object keys lexicographically at every object level, preserve array order, preserve strings as-is with no Unicode normalization, emit no insignificant whitespace, serialize primitives and finite numbers per JCS, and UTF-8 encode. For non-JSON uploads, use the endpoint-documented streaming byte/package digest. canonical_header_sha256 hashes RFC 8785 / JCS canonical JSON of only endpoint-declared idempotency-relevant lowercase headers, or {} when none apply. A different canonical input is valid only for a route explicitly named by a Platform-owned reference card, such as the Content Alpha QTI transactional profile. No enum No foreign key. Compared with later requests in the same unique scope. sha256:c3def4353e3f07428c94ff3675ed7f0007811dfd7fcbf7044df6c7800f8bd478 Missing algorithm prefix, not sha256, uppercase/malformed hex, computed from raw bytes or non-JCS JSON, contains duplicate object keys or non-I-JSON values, or includes raw secrets in a way that would be logged. Platform shared PITD-007 requires request hash conflict detection. Edge: Large uploads hash normalized bytes or a precomputed payload hash, never raw bytes stored in this table. The worked example in the object reference card is the default canonical QTI POST import hash for the example row. The Content Alpha QTI profile pins its compact package_hash/byte_length/sourceName identity for deployed-ledger compatibility.
canonical_request_hash Field text Nullable Default: none Immutable canonical request identity retained when claim_protocol needs request_hash as a rolling-deployment or active-owner fence. Nullable for protocols that store the canonical sha256 hash directly in request_hash. When present, must be sha256:<64 lowercase hex characters> and must not change for the row's lifetime. No enum No foreign key. Protocol-specific claim and completion predicates compare it with the incoming canonical identity. sha256:c3def4353e3f07428c94ff3675ed7f0007811dfd7fcbf7044df6c7800f8bd478 Malformed, changed during completion, derived from a different payload than request_hash, or used to bypass a different-hash conflict. Platform shared PITD-024 and module rolling-deployment decisions require immutable request identity across ownership protocols. Edge: CASE case-v2 always sets this equal to its canonical request_hash. Curriculum may temporarily tag request_hash during its legacy bridge while this field retains the canonical value.
claim_protocol Field text Nullable Default: none Versioned ownership protocol that defines which token, stale-state, finalization, and rolling-deployment rules govern the row. Nullable only for documented legacy/default rows. Current CASE 1EdTech claims use case-v2; a module must have a Platform-owned profile before introducing another value. No enum No foreign key. Interpreted together with canonical_request_hash, lease_token, status, locked_until, and the module/surface profile. case-v2 An undocumented free-form value, changed by a contender, or treated as sufficient ownership without the exact tenant/key/hash/token fence. Platform shared PITD-024 requires explicit durable ownership and stale/uncertain-state policy. Edge: Unknown protocols fail closed. Historical CASE rows use case-v1-terminal and are replay-only, never stale-reclaimed.
status Field text Required Default: 'in_progress' Replay lifecycle state of the idempotency row. Must satisfy idempotency_status_allowed. idempotency_status No foreign key. Determines whether middleware replays, rejects, waits, or allows stale-lock reclaim. completed Outside idempotency_status, null, or incompatible with response_status/locked_until, such as completed with no final status. Platform shared PITD-007 requires original outcome replay and conflict behavior. Edge: failed_transient and stale in_progress rows can be reclaimed after locked_until only when request_hash matches and the mutation is proven not to have committed or is internally idempotent. commit_uncertain rows are non-reclaimable and return idempotency_commit_uncertain. failed_permanent rows replay the safe Problem response. By default, a matching in_progress row whose locked_until is still in the future returns 409 idempotency_in_progress with Retry-After; middleware must not run the mutation again. The explicit Content Alpha QTI profile instead returns live 202 and terminal stale 503 without rerunning.
response_status Field integer Nullable Default: none HTTP status originally returned for a final replayable outcome. Nullable while in_progress, failed_transient, or commit_uncertain. When present, must be an integer from 100 through 599 and match the stored response_body/resource outcome. No enum No foreign key. Used with response_body to replay the original result. 201 Present while status is in_progress, outside 100-599, or does not match the Problem/status or resource creation outcome. Platform shared PITD-006 defines HTTP status policy and PITD-007 defines replay. Edge: 204 outcomes store response_status=204 and response_body=null.
response_body Field jsonb Nullable Default: none Redacted JSON body safe to replay to the same tenant for completed or failed_permanent outcomes. Nullable. When present, must be a JSON object or array that matches the documented response schema. Must not include secrets, raw package bytes, headers, access tokens, IP addresses, user agents, direct learner PII, or unredacted processing traces. No enum May contain resource identifiers that point into module tables, but the module table remains source of record. {"packageId":"7f2e4dd2-c147-49ea-af77-41a6fdd70980","importStatus":"imported"} Stores raw request body, file bytes, secrets, PII, non-JSON text, or a body that cannot be returned to the authenticated tenant. Platform shared PITD-006 requires redacted Problem/errors; PITD-007 requires replayable outcomes. Edge: For async operations, response_body can be a 202 job resource even though final module processing continues elsewhere.
response_headers Field jsonb Required Default: '{}'::jsonb Redacted terminal response headers needed to replay the original HTTP contract, including ETag and documented retry metadata. Must be a JSON object. Values must be safe for the same authenticated tenant and must exclude credentials, cookies, tracing internals, IP addresses, and user agents. No enum No foreign key. Replayed with response_status and response_body for completed or failed_permanent rows. {"etag":"\"case-v1\""} An array/scalar, contains authorization or set-cookie, or omits an ETag that the original CASE mutation returned. Platform shared PITD-006 requires exact endpoint-local HTTP contracts and PITD-024 requires persisted replay metadata. Edge: Empty object is valid. A 204 response keeps response_body SQL null while headers remain an object.
resource_type Field text Nullable Default: none Optional type of resource created, imported, deleted, or accepted by the operation. Nullable. When present, use a stable table or API object path such as qti.content_package, qti.delivery_session, platform.tenant, or alpha.activity. No enum Pairs with resource_id for audit and support lookup. Does not enforce a foreign key because target tables vary by module. qti.content_package Contains a display title, localized wording, raw URL, or path with tenant/resource IDs. Platform shared PITD-009 uses resource_type in audit and replay support. Edge: For operations that create multiple resources, store the primary customer-visible resource and put redacted counts in response_body or audit metadata.
resource_id Field text Nullable Default: none Optional identifier of the primary resource associated with the replayable outcome. Nullable. When present, must be the canonical resource identifier for resource_type and tenant_id. No enum Pairs with resource_type; target cardinality is many idempotency rows may point at one resource only when retries or aliases are documented. 7f2e4dd2-c147-49ea-af77-41a6fdd70980 Contains a student name, email, phone number, raw package path, or ID outside the tenant. Platform shared PITD-009 requires resource identifiers for operational traceability. Edge: Async accepted work can use a job/run id here while the final content resource appears later in module tables.
first_request_id Field text Required Default: none Request identifier of the first request that claimed this key. Required non-empty text, 1 to 120 characters. Must be safe for logs and customer support. Must not contain tokens, IP addresses, user agents, or PII. No enum Should match platform.audit_log.request_id for the original attempt when that attempt is audited. req_20260521_0001 Null, blank, regenerated on replay, or includes sensitive request details. Platform shared PITD-010 requires request_id in structured operational evidence. Edge: Retry requests have their own request_id in access logs, but this field stays fixed to the first attempt.
lease_token Field text Nullable Default: none Server-generated claimant fence used by versioned protocols to prove which request may mutate or finalize the ledger row. Nullable for legacy/default protocols. Current owners must use a cryptographically unpredictable protocol-prefixed token and every takeover/finalizer must compare it conditionally. No enum No foreign key. first_request_id remains support/audit identity and is never substituted for this ownership token. case-v2:3c64bc41-b033-4aad-8c19-a4dfadad13d5 Customer supplied, reused across claims, logged as a credential, or omitted from an ownership-sensitive finalizer predicate. Platform shared PITD-024 and CASE CITD-008 require durable single-owner fencing before mutation. Edge: A safe stale takeover replaces the old token atomically. A superseded owner cannot finalize or mark the row uncertain.
locked_until Field timestamptz Nullable Default: none Temporary lock deadline used while an in-progress operation is executing. Nullable. When status is in_progress, should be a future timestamp. Must be null for completed, failed_permanent, and commit_uncertain rows. No enum No foreign key. Used by middleware to decide whether another worker must reject a concurrent live lock or may reclaim a stale same-hash row. 2026-05-21T12:01:30Z Expired while status remains in_progress without stale-lock-reclaim logic, set on completed rows, or earlier than created_at. Platform shared PITD-007 centralizes replay and conflict behavior. Edge: Long-running async jobs should complete the idempotency row with a 202 response rather than hold this lock for the whole job. By default, a concurrent same-hash request while locked_until is in the future returns 409 idempotency_in_progress and Retry-After from this timestamp; a stale same-hash row may be reset by exactly one FOR UPDATE worker under branch stale_lock_reclaimed only when the safe-retry precondition is true. commit_uncertain rows keep locked_until null and are never stale-lock-reclaimed. The Content Alpha QTI profile documents its live 202 and terminal stale 503 exceptions.
expires_at Field timestamptz Required Default: none Timestamp after which the key is no longer promised to replay the original response. Required timestamp with time zone. Must be later than created_at. Default policy is at least 24 hours after first claim; modules may document longer windows for async jobs or exports. No enum Indexed for cleanup and expiry marking. 2026-05-22T12:01:00Z Null, before created_at, shorter than the customer website promises, or extended without retention/audit reason. Platform shared PITD-007 requires a shared idempotency policy rather than per-module drift. Edge: Expired rows may remain queryable for audit but must not silently replay after the documented window.
created_at Field timestamptz Required Default: now() Timestamp when the first request claimed the idempotency key. Required timestamp with time zone. No enum None. 2026-05-21T12:01:00Z Null, changed after insert, or compared without timezone normalization. Platform shared PITD-017 requires lifecycle timestamps. Edge: Use created_at plus expires_at for replay-window reporting.
updated_at Field timestamptz Required Default: now() Timestamp when the row last changed status, replay body, lock, or expiry. Required timestamp with time zone. Must be greater than or equal to created_at. No enum None. 2026-05-21T12:01:08Z Null, earlier than created_at, or left unchanged after finalizing the row. Platform shared PITD-017 requires DDL discipline and auditability. Edge: Retries that merely read/replay do not need to update updated_at unless the implementation records replay counts elsewhere.

Platform shared table

platform.audit_log Audit log

Append-only cross-module record of high-risk writes, privileged reads, learner-runtime deletion, denied authorization, and trust changes.

Purpose

This table gives support, compliance, release, and future AI agents one durable account of who did what, under which tenant and module, with what result. Module tables remain the source of record for domain state; audit rows are the redacted narrative that explains sensitive platform actions across modules.

Lifecycle

Inserted once by shared audit middleware at the end of a high-risk operation or authorization decision. Rows are append-only: corrections are represented by a later compensating audit row, not by updating or deleting the original. Retention cleanup requires a named maintenance action and its own audit row.

QTI reconciliation

Adds a shared operational table that QTI did not have. QTI import, authoring, delivery deletion, service-role, conformance, and trust-status operations must emit rows here once the platform shared library is integrated.

Primary key

audit_log_id

RelationshipsConstraintsIndexesInvalid examples
  • Belongs to one platform.tenant.
  • May reference one platform.idempotency_key row when the audited operation used Idempotency-Key.
  • Refers to module resources by resource_type and resource_id instead of foreign keys because target tables vary by module.
  • One request_id or trace_id can appear in multiple audit rows when a command touches multiple resources.
  • Rows are append-only; ordinary application roles cannot update or delete them.
  • tenant_id must reference platform.tenant. Cross-tenant maintenance writes one row per affected tenant.
  • module, surface, action, and outcome must use documented allowed values.
  • redacted_metadata must be a JSON object and must not include raw request bodies, tokens, learner names, emails, phone numbers, package bytes, IP addresses, or user agents.
  • http_status must be an integer from 100 through 599.
  • primary key (audit_log_id)
  • index (tenant_id, occurred_at desc)
  • index (tenant_id, resource_type, resource_id, occurred_at desc)
  • index (request_id)
  • index (trace_id)
  • index (module, surface, operation_id, occurred_at desc)
  • index (idempotency_key_id)
  • actor_subject = 'teacher@example.org' because actor subjects must be pseudonymous or hashed.
  • redacted_metadata stores raw QTI package bytes, processing traces with student identity, request headers, IP address, or access token.
  • A service-role tenant suspension changes platform.tenant.status without an audit row.
  • action = 'changed' or outcome = 'ok' because allowed values must be behaviorally explained.
Example row, query snippets, migration sketch, and SQL comments
{
  "audit_log_id": "a597b7de-b1dd-4c9e-93a3-9623cb90bc34",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "module": "qti",
  "surface": "1edtech",
  "operation_id": "qti.packages.import",
  "actor_subject": "userhash:1bd7b5bd0d77",
  "actor_roles": [
    "teacher",
    "content-admin"
  ],
  "resource_type": "qti.content_package",
  "resource_id": "7f2e4dd2-c147-49ea-af77-41a6fdd70980",
  "action": "import",
  "outcome": "succeeded",
  "http_status": 201,
  "request_id": "req_20260521_0001",
  "trace_id": "trace_20260521_a1f4",
  "idempotency_key_id": "b81db6f4-c7ea-4757-b5aa-87570f7ad119",
  "occurred_at": "2026-05-21T12:01:08Z",
  "redacted_metadata": {
    "packageHash": "sha256:6a8c1f58c16f4b0b4f0a0d8c6be8d226e3d5d80f0b2f7d2f49e6d7d9e9d4f1cb",
    "resourceCount": 18,
    "fileCount": 42
  }
}
insert into platform.audit_log (tenant_id, module, surface, operation_id, actor_subject, actor_roles, resource_type, resource_id, action, outcome, http_status, request_id, trace_id, idempotency_key_id, redacted_metadata) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15);

select occurred_at, actor_subject, action, outcome, http_status from platform.audit_log where tenant_id = $1 and resource_type = $2 and resource_id = $3 order by occurred_at desc;

select module, surface, operation_id, outcome, count(*) from platform.audit_log where tenant_id = $1 and occurred_at >= now() - interval '7 days' group by module, surface, operation_id, outcome order by count(*) desc;
create table platform.audit_log (
  audit_log_id uuid primary key default gen_random_uuid(),
  tenant_id uuid not null references platform.tenant(tenant_id),
  module text not null,
  surface text not null,
  operation_id text not null,
  actor_subject text not null,
  actor_roles text[] not null default '{}'::text[],
  resource_type text not null,
  resource_id text not null,
  action text not null,
  outcome text not null,
  http_status integer not null,
  request_id text not null,
  trace_id text not null,
  idempotency_key_id uuid references platform.idempotency_key(idempotency_key_id) on delete set null,
  occurred_at timestamptz not null default now(),
  redacted_metadata jsonb not null default '{}'::jsonb,
  constraint audit_module_ck
    check (module in ('platform', 'incept', 'qti', 'oneroster', 'caliper', 'case', 'nweamap', 'ed_fi', 'people_and_orgs', 'curriculum', 'content', 'events', 'results', 'analytics')),
  constraint audit_surface_ck
    check (surface in ('platform', '1edtech', 'alpha')),
  constraint audit_action_ck
    check (action in ('create', 'update', 'delete', 'import', 'export', 'read_privileged', 'runtime_delete', 'conformance_change', 'trust_change', 'authz_denied', 'maintenance')),
  constraint audit_outcome_ck
    check (outcome in ('accepted', 'succeeded', 'failed_validation', 'failed_authorization', 'failed_conflict', 'failed_not_found', 'failed_server')),
  constraint audit_http_status_ck
    check (http_status between 100 and 599),
  constraint audit_metadata_object_ck
    check (jsonb_typeof(redacted_metadata) = 'object'),
  constraint audit_required_text_ck
    check (
      length(btrim(operation_id)) > 0 and
      length(btrim(actor_subject)) > 0 and
      length(btrim(resource_type)) > 0 and
      length(btrim(resource_id)) > 0 and
      length(btrim(request_id)) > 0 and
      length(btrim(trace_id)) > 0
    )
);

create index audit_tenant_time_idx on platform.audit_log(tenant_id, occurred_at desc);
create index audit_resource_idx on platform.audit_log(tenant_id, resource_type, resource_id, occurred_at desc);
create index audit_request_idx on platform.audit_log(request_id);
create index audit_trace_idx on platform.audit_log(trace_id);
create index audit_operation_idx on platform.audit_log(module, surface, operation_id, occurred_at desc);
create index audit_idempotency_idx on platform.audit_log(idempotency_key_id);
comment on table platform.audit_log is 'This table gives support, compliance, release, and future AI agents one durable account of who did what, under which tenant and module, with what result. Module tables remain the source of record for domain state; audit rows are the redacted narrative that explains sensitive platform actions across modules.';
comment on column platform.audit_log.audit_log_id is 'Stable identifier for one append-only audit event.';
comment on column platform.audit_log.tenant_id is 'Tenant affected by the audited action.';
comment on column platform.audit_log.module is 'Module responsible for the operation being audited.';
comment on column platform.audit_log.surface is 'Surface through which the action was initiated or exposed.';
comment on column platform.audit_log.operation_id is 'Stable operation identifier from the customer website, OpenAPI, or platform maintenance command.';
comment on column platform.audit_log.actor_subject is 'Pseudonymous actor identifier for the user, service, or release process that attempted the action.';
comment on column platform.audit_log.actor_roles is 'Roles or scopes that justified the action or explain why authorization failed.';
comment on column platform.audit_log.resource_type is 'Stable resource class affected by the action.';
comment on column platform.audit_log.resource_id is 'Identifier of the primary resource affected by the action, or a documented sentinel when authorization failed before resource resolution.';
comment on column platform.audit_log.action is 'Behavioral category of the audited action.';
comment on column platform.audit_log.outcome is 'Final result category for the action.';
comment on column platform.audit_log.http_status is 'HTTP status returned for the request or the HTTP-equivalent status assigned to a background/service operation.';
comment on column platform.audit_log.request_id is 'Per-request identifier exposed in Problem responses and support logs.';
comment on column platform.audit_log.trace_id is 'Trace identifier that links logs, metrics, audit rows, and downstream spans for one request or job.';
comment on column platform.audit_log.idempotency_key_id is 'Optional link to the idempotency row that governed the audited operation.';
comment on column platform.audit_log.occurred_at is 'Timestamp when the audited action reached the recorded outcome.';
comment on column platform.audit_log.redacted_metadata is 'Small, safe, structured context that helps explain the audit event without storing raw sensitive data.';

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
audit_log_id Primary key uuid Required Default: gen_random_uuid() Stable identifier for one append-only audit event. Must be a valid PostgreSQL UUID and unique as the primary key. No enum No child table in this dictionary; support tools and future evidence exports may reference it. a597b7de-b1dd-4c9e-93a3-9623cb90bc34 Not a UUID, reused, or generated outside the database without collision safeguards. Platform shared PITD-009 required audit_log_id. Edge: Corrections never update this row; write a later audit event that references the corrected resource.
tenant_id Foreign key uuid Required Default: none Tenant affected by the audited action. Must reference platform.tenant(tenant_id). Cross-tenant maintenance must emit one row per affected tenant rather than a tenantless row. No enum Many audit rows belong to one platform.tenant. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 Null, not found, copied from an untrusted path without JWT tenant validation, or used to record a resource outside the tenant. Platform shared PITD-009 required tenant_id and PITD-005 requires tenant scope enforcement. Edge: Authenticated authorization denials should use the route tenant after checking it is a real platform.tenant row; missing-auth events stay in security logs, not tenant audit rows.
module Audit dimension text Required Default: none Module responsible for the operation being audited. Must satisfy module_key_allowed: platform, incept, qti, oneroster, caliper, case, nweamap, ed_fi, people_and_orgs, curriculum, content, events, results, analytics. module_key Pairs with surface and operation_id for operational reporting. case Null, outside module_key, set to platform for module resource changes, or used by support tooling as proof that the module surface is approved. Platform shared PITD-002 defines module boundaries and PITD-009 requires module in audit rows. Edge: Service-role maintenance that changes QTI records still uses module=qti; release readiness belongs to module_release_status in the registry and is currently approved for qti/1edtech by loop/qti/state.json. CASE standards-browser maintenance still uses module=case unless the action changes only platform.* rows.
surface Audit dimension text Required Default: none Surface through which the action was initiated or exposed. Must satisfy surface_code_allowed. surface_code Pairs with module and operation_id. 1edtech Null, outside surface_code, or set to alpha for expert-only conformance mutation. Platform shared PITD-015 defines surface model and derivation. Edge: Background jobs spawned by an Alpha request keep surface=alpha if the customer contract and audit trail originate there.
operation_id Audit dimension text Required Default: none Stable operation identifier from the customer website, OpenAPI, or platform maintenance command. DDL-enforced: nonblank after trimming. Platform convention: use the same lowercase dotted identifier style as platform.idempotency_key.operation_id and match the documented operation whenever an API route triggered the row; audit_log deliberately does not enforce the idempotency regex so legacy and maintenance events can still be audited. No enum Same naming convention as platform.idempotency_key.operation_id. qti.packages.import Blank, derived from localized prose, inconsistent with the endpoint that produced the event, or changed without docs and tests. Platform shared PITD-009 and PITD-010 require operation_id for audit and observability. Edge: Maintenance operation IDs should be named, such as platform.tenants.backfill-qti-view, not generic maintenance.
actor_subject Field text Required Default: none Pseudonymous actor identifier for the user, service, or release process that attempted the action. Required non-empty text. Use an HMAC/hash or stable opaque subject such as userhash:<hex> or service:<name>. Must not be a name, email, phone number, raw JWT subject, access token, SIS ID, or parent/student contact detail. No enum No foreign key. Correlates with auth logs only through redacted identity systems. userhash:1bd7b5bd0d77 Contains @, phone-like text, direct student/parent/teacher name, raw JWT sub, Bearer token, or service credentials. Platform shared PITD-008 requires pseudonymous learner/customer data in logs and audit rows. Edge: For service-role operations use service:<operation-or-system>, and record narrow roles/scopes in actor_roles.
actor_roles Field text[] Required Default: '{}'::text[] Roles or scopes that justified the action or explain why authorization failed. Required array. Values should be lowercase scope/role slugs. Must not include tokens, emails, names, or tenant secrets. No enum No foreign key in this dictionary; auth systems remain outside durable audit scope. {teacher,content-admin} Null, contains raw JWT claims with PII, includes access tokens, or omits the service-role scope for privileged operations. Platform shared PITD-005 requires explicit roles/scopes for privileged operations. Edge: An empty array is allowed only when actor_subject is a known service identity and operation_id explains the maintenance path.
resource_type Resource lookup text Required Default: none Stable resource class affected by the action. Required text. Use a table path or public object path such as platform.tenant, qti.content_package, alpha.activity, or qti.conformance_run. Must not include concrete IDs. No enum Pairs with resource_id. No database foreign key because target resource tables vary. qti.content_package Blank, localized title, raw URL, or includes tenant/resource IDs. Platform shared PITD-009 required resource_type. Edge: For collection-level denials use a collection type such as qti.content_package with resource_id='unresolved'.
resource_id Resource lookup text Required Default: none Identifier of the primary resource affected by the action, or a documented sentinel when authorization failed before resource resolution. Required text, 1 to 160 characters. Use the canonical resource ID for resource_type. Use unresolved only for authorization denials before a resource can be safely looked up. No enum Pairs with resource_type for support queries. 7f2e4dd2-c147-49ea-af77-41a6fdd70980 Blank, direct learner PII, access token, raw path with query secrets, or an ID from another tenant. Platform shared PITD-009 required resource_id. Edge: For import operations, resource_id may be the accepted package/job id while module tables later attach child resources.
action Audit dimension text Required Default: none Behavioral category of the audited action. Must satisfy audit_action_allowed. audit_action No foreign key. Used with outcome for reporting and incident review. import Null, outside audit_action, or too vague to distinguish import from create, delete from runtime_delete, or read from read_privileged. Platform shared PITD-009 defines action semantics. Edge: When one request performs multiple high-risk actions, write multiple audit rows rather than collapsing them into a generic action.
outcome Audit dimension text Required Default: none Final result category for the action. Must satisfy audit_outcome_allowed. audit_outcome No foreign key. Should align with http_status. succeeded Null, outside audit_outcome, inconsistent with http_status, or hides authorization failure as validation failure. Platform shared PITD-009 requires outcome and PITD-006 defines status/error policy. Edge: Async operations start with accepted; later completion can be represented by a module state change and, when high-risk, another audit row.
http_status Field integer Required Default: none HTTP status returned for the request or the HTTP-equivalent status assigned to a background/service operation. Required integer from 100 through 599. Must align with outcome: 2xx for accepted/succeeded, 403 for failed_authorization, 400 for failed_validation, 409/412/428 for failed_conflict, 404 for failed_not_found, and 5xx for failed_server. No enum No foreign key. Matches customer-visible Problem/status when the action came from an API route. 201 Null, outside 100-599, or inconsistent with outcome. Platform shared PITD-006 defines HTTP status policy; PITD-009 requires http_status. Edge: For non-HTTP maintenance, use the status the platform would return from the equivalent command API.
request_id Correlation text Required Default: none Per-request identifier exposed in Problem responses and support logs. Required non-empty text, 1 to 120 characters. Must be safe to return to customers. Must not include IP addresses, user agents, auth headers, or PII. No enum May match platform.idempotency_key.first_request_id for first attempts. req_20260521_0001 Null, blank, contains request headers/secrets, or changes within the same request flow. Platform shared PITD-006 requires requestId in Problem errors and PITD-010 requires structured logs. Edge: Retries have separate request_id values even when they reuse an idempotency row.
trace_id Correlation text Required Default: none Trace identifier that links logs, metrics, audit rows, and downstream spans for one request or job. Required non-empty text, 1 to 160 characters. Use W3C traceparent-derived or platform trace ids. Must not include secrets or direct identity data. No enum Can appear on multiple audit rows and logs in the same request/job. trace_20260521_a1f4 Null, blank, contains auth tokens, or is regenerated per row inside the same request flow. Platform shared PITD-010 requires trace_id in structured logs and audit evidence. Edge: If no distributed tracer is present, set trace_id equal to request_id until tracing is installed.
idempotency_key_id Foreign key uuid Nullable Default: none Optional link to the idempotency row that governed the audited operation. Nullable. When present, must reference platform.idempotency_key(idempotency_key_id). Set null for operations that do not use Idempotency-Key. No enum Many audit rows may refer to one platform.idempotency_key row. b81db6f4-c7ea-4757-b5aa-87570f7ad119 Not a UUID, points to a different tenant, or stores the customer-supplied header value instead of the internal row id. Platform shared PITD-007 and PITD-009 connect retry behavior to audit. Edge: On idempotency conflict, the audit row may point at the existing idempotency_key_id while outcome=failed_conflict.
occurred_at Ordering timestamptz Required Default: now() Timestamp when the audited action reached the recorded outcome. Required timestamp with time zone. Stored in UTC by database convention. No enum Used with tenant_id and resource lookup indexes. 2026-05-21T12:01:08Z Null, manually backdated without maintenance evidence, or compared as local time. Platform shared PITD-009 required occurred_at. Edge: For async accepted work, occurred_at is acceptance time; final job completion has its own module state and possible audit row.
redacted_metadata Field jsonb Required Default: '{}'::jsonb Small, safe, structured context that helps explain the audit event without storing raw sensitive data. Must be a JSON object. Allowed content includes counts, hashes, profile names, version numbers, safe problem codes, and redacted summaries. Must not include raw request bodies, tokens, learner names, emails, phone numbers, SIS IDs, raw package bytes, IP addresses, user agents, or direct PII. No enum No foreign key. If a metadata field becomes query-critical, promote it to a typed column in a later dictionary attempt. {"packageHash":"sha256:6a8c1f58c16f4b0b4f0a0d8c6be8d226e3d5d80f0b2f7d2f49e6d7d9e9d4f1cb","resourceCount":18} Null, non-object JSON, stores secrets/PII/raw bodies, or becomes the only place a required relationship is stored. Platform shared PITD-008 and PITD-009 require redacted audit metadata. Edge: For validation failures, store safe error codes and field names, not the full rejected payload.

Platform shared table

platform.end_user_identity_binding End-user identity binding

Durable, operator-authorized binding from one exact Cognito issuer/subject to one People & Orgs person.

Purpose

The TimeBack bridge needs one stable, revocable answer to which current roster person an authenticated Cognito subject represents. It never binds by email and never stores a password or Cognito token.

Lifecycle

Created only by an operator-authorized Bearer request after the legacy invite returns the Cognito subject and People & Orgs confirms the person is real, enabled, non-deleted, and lifecycle-current. Revocation closes the row and every linked browser session. Rebinding inserts history rather than rewriting a revoked row.

QTI reconciliation

None. End-user identity is Platform-owned and QTI receives only the short-lived tenant-scoped Bearer claims it is authorized to consume.

Primary key

identity_binding_id

RelationshipsConstraintsIndexesInvalid examples
  • Many bindings belong to one platform.tenant through tenant_id.
  • One binding may own many platform.end_user_session rows through the same tenant_id plus identity_binding_id.
  • person_id is a logical same-tenant reference to People & Orgs because the legacy boundary owns that identifier outside platform.* storage.
  • At most one active row exists for tenant_id + issuer + subject.
  • At most one active row exists for tenant_id + issuer + person_id.
  • Revocation timestamp, actor, and reason are either all null or all present.
  • primary key (identity_binding_id)
  • partial unique (tenant_id, issuer, subject) where revoked_at is null
  • partial unique (tenant_id, issuer, person_id) where revoked_at is null
  • A row created from an email match or without an operator-authorized Bearer request.
  • Two active Cognito subjects bound to the same People & Orgs person for one issuer.
  • issuer differs from the configured Amazon Cognito issuer or subject is normalized instead of stored exactly.
  • A binding stores Cognito access, ID, refresh tokens, password material, email, or names.
Example row, query snippets, migration sketch, and SQL comments
{
  "identity_binding_id": "41877f4a-d9ce-4b3c-82a4-9cf437212765",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "issuer": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_example",
  "subject": "0a1b2c3d-opaque-cognito-subject",
  "person_id": "person_student_001",
  "created_by_subject": "operator:7d29b03c917f1a8ef83c6efb7763ca12",
  "created_at": "2026-08-04T14:00:00Z",
  "revoked_at": null,
  "revoked_by_subject": null,
  "revocation_reason": null
}
select identity_binding_id, person_id from platform.end_user_identity_binding where tenant_id = $1 and issuer = $2 and subject = $3 and revoked_at is null;

update platform.end_user_identity_binding set revoked_at = now(), revoked_by_subject = $3, revocation_reason = $4 where tenant_id = $1 and identity_binding_id = $2 and revoked_at is null returning identity_binding_id;
create table platform.end_user_identity_binding (
  identity_binding_id uuid primary key default gen_random_uuid(),
  tenant_id uuid not null references platform.tenant(tenant_id),
  issuer text not null,
  subject text not null,
  person_id text not null,
  created_by_subject text not null,
  created_at timestamptz not null default now(),
  revoked_at timestamptz,
  revoked_by_subject text,
  revocation_reason text,
  constraint end_user_identity_issuer_ck check (issuer ~ '^https://[^[:space:]]{1,480}$'),
  constraint end_user_identity_subject_ck check (length(subject) between 1 and 255),
  constraint end_user_identity_person_ck check (length(person_id) between 1 and 255),
  constraint end_user_identity_revocation_ck check (
    (revoked_at is null and revoked_by_subject is null and revocation_reason is null)
    or (revoked_at is not null and revoked_by_subject is not null and revocation_reason is not null)
  ),
  unique (tenant_id, identity_binding_id)
);
create unique index end_user_identity_active_subject_uidx on platform.end_user_identity_binding(tenant_id, issuer, subject) where revoked_at is null;
create unique index end_user_identity_active_person_uidx on platform.end_user_identity_binding(tenant_id, issuer, person_id) where revoked_at is null;
comment on table platform.end_user_identity_binding is 'The TimeBack bridge needs one stable, revocable answer to which current roster person an authenticated Cognito subject represents. It never binds by email and never stores a password or Cognito token.';
comment on column platform.end_user_identity_binding.identity_binding_id is 'Stable id for one historical binding row.';
comment on column platform.end_user_identity_binding.tenant_id is 'Canonical active Platform tenant UUID carried by the binding and local sessions.';
comment on column platform.end_user_identity_binding.issuer is 'Exact configured HTTPS Cognito issuer.';
comment on column platform.end_user_identity_binding.subject is 'Exact opaque Cognito subject returned by the operator invite and signed ID token.';
comment on column platform.end_user_identity_binding.person_id is 'Canonical People & Orgs person represented by the bound subject.';
comment on column platform.end_user_identity_binding.created_by_subject is 'Pseudonymous hash label for the operator who authorized the binding.';
comment on column platform.end_user_identity_binding.created_at is 'Time the binding history row was created.';
comment on column platform.end_user_identity_binding.revoked_at is 'Time the binding stopped authorizing new sessions/tokens.';
comment on column platform.end_user_identity_binding.revoked_by_subject is 'Pseudonymous hash label for the revoking operator.';
comment on column platform.end_user_identity_binding.revocation_reason is 'Bounded operational reason for revocation.';

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
identity_binding_id Primary key uuid Required Default: gen_random_uuid() Stable id for one historical binding row. UUID primary key; unique with tenant_id for the session foreign key. No enum Parent of many platform.end_user_session rows. 41877f4a-d9ce-4b3c-82a4-9cf437212765 Missing, reused, or used without tenant_id for tenant-scoped lookup. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
tenant_id Foreign key uuid Required Default: none Canonical active Platform tenant UUID carried by the binding and local sessions. Must reference platform.tenant(tenant_id); never a tenant key or alias. No enum Many bindings belong to one platform.tenant; session-token loads this row before signing its unique tenant_key for downstream APIs. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 A module tenant key, a second mapping id, or a tenant outside the operator Bearer scope. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
issuer Field text Required Default: none Exact configured HTTPS Cognito issuer. HTTPS URL, at most 480 characters, and exact match to configured Amazon Cognito issuer. No enum Pairs with subject as the external identity key. https://cognito-idp.us-east-1.amazonaws.com/us-east-1_example Normalized to another issuer, caller-selected, non-HTTPS, or a hosted UI domain. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
subject Field text Required Default: none Exact opaque Cognito subject returned by the operator invite and signed ID token. 1 to 255 characters; exact match only; never derived from email. No enum Unique with tenant_id + issuer while active. 0a1b2c3d-opaque-cognito-subject Email, name, normalized value, token, or a subject from another issuer. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: This is the narrow raw-subject storage exception; audit/session JWT subjects use hashes instead.
person_id Field text Required Default: none Canonical People & Orgs person represented by the bound subject. 1 to 255 characters and confirmed current at bind time; authorization is rechecked at every token mint. No enum Logical same-tenant reference to People & Orgs alpha.person. person_student_001 Email, SIS identifier, inactive/deleted/test person, or inferred relationship. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
created_by_subject Field text Required Default: none Pseudonymous hash label for the operator who authorized the binding. Required operator:<32 lowercase hex>; never raw JWT sub or email. No enum Correlates to redacted auth/audit evidence without a foreign key. operator:7d29b03c917f1a8ef83c6efb7763ca12 Raw email, name, bearer token, or Cognito end-user subject. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
created_at Field timestamptz Required Default: now() Time the binding history row was created. Required UTC timestamp. No enum No foreign key; interpreted only by the Platform TimeBack bridge. 2026-08-04T14:00:00Z Null or rewritten during revocation. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
revoked_at Field timestamptz Nullable Default: none Time the binding stopped authorizing new sessions/tokens. Null while active; present with revoked_by_subject and revocation_reason. No enum No foreign key; interpreted only by the Platform TimeBack bridge. null Present without actor/reason or cleared to reuse a historical row. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
revoked_by_subject Field text Nullable Default: none Pseudonymous hash label for the revoking operator. Null while active; required with revoked_at and reason. No enum No foreign key; interpreted only by the Platform TimeBack bridge. null Raw identity, present on an active row, or omitted on revocation. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
revocation_reason Field text Nullable Default: none Bounded operational reason for revocation. Null while active; required when revoked; no PII or token material. No enum No foreign key; interpreted only by the Platform TimeBack bridge. null Contains email/name/token, or absent when revoked. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.

Platform shared table

platform.end_user_session End-user session

Opaque first-party browser session whose only credential at rest is a SHA-256 handle hash.

Purpose

The TimeBack bridge keeps browser continuity without persisting Cognito tokens or allowing a cookie to authorize customer APIs. The browser exchanges this session for short-lived Bearer JWTs whose People & Orgs claims are re-derived each time.

Lifecycle

Created after a signed Cognito code+PKCE callback resolves an active binding. Idle expiry advances at successful token mint but never beyond the 2-hour absolute expiry. Logout, expiry, or identity revocation closes the row; invalid-origin attempts fail without advancing it. Closed rows are retained for audit/history.

QTI reconciliation

None. QTI and every other customer API see only a 600-second Platform Bearer JWT, never this cookie/session row.

Primary key

end_user_session_id

RelationshipsConstraintsIndexesInvalid examples
  • Many sessions belong to one platform.tenant.
  • Many sessions belong to one platform.end_user_identity_binding under the same tenant.
  • No Cognito access, ID, or refresh-token table relates to this row.
  • handle_hash is globally unique and must be sha256:<64 lowercase hex>.
  • authenticated_at <= last_seen_at < idle_expires_at <= absolute_expires_at.
  • Revocation timestamp and reason are both null or both present.
  • primary key (end_user_session_id)
  • unique (handle_hash)
  • index (tenant_id, identity_binding_id, absolute_expires_at desc)
  • partial index (absolute_expires_at) where revoked_at is null
  • handle_hash contains the raw cookie handle, a reversible encoding, or a Cognito token.
  • idle_expires_at advances past absolute_expires_at or the row lacks a tenant-scoped binding.
  • A session-token or logout request is accepted from an origin other than the configured first-party origin.
  • The session cookie is accepted as authorization by a Content, Curriculum, Results, CASE, or other customer API.
Example row, query snippets, migration sketch, and SQL comments
{
  "end_user_session_id": "750b24b4-10b3-4625-94f7-5a91076418df",
  "tenant_id": "0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3",
  "identity_binding_id": "41877f4a-d9ce-4b3c-82a4-9cf437212765",
  "handle_hash": "sha256:16ff5a9f6f981798c985bb7d32438e6ae2df1cd90c4c08f704d7839c57425913",
  "authenticated_at": "2026-08-04T14:00:00Z",
  "last_seen_at": "2026-08-04T14:05:00Z",
  "idle_expires_at": "2026-08-04T14:35:00Z",
  "absolute_expires_at": "2026-08-04T16:00:00Z",
  "revoked_at": null,
  "revocation_reason": null
}
select * from platform.end_user_session where tenant_id = $1 and handle_hash = $2;

update platform.end_user_session set revoked_at = now(), revocation_reason = 'identity_binding_revoked' where tenant_id = $1 and identity_binding_id = $2 and revoked_at is null;
create table platform.end_user_session (
  end_user_session_id uuid primary key default gen_random_uuid(),
  tenant_id uuid not null references platform.tenant(tenant_id),
  identity_binding_id uuid not null,
  handle_hash text not null unique,
  authenticated_at timestamptz not null,
  last_seen_at timestamptz not null,
  idle_expires_at timestamptz not null,
  absolute_expires_at timestamptz not null,
  revoked_at timestamptz,
  revocation_reason text,
  foreign key (tenant_id, identity_binding_id) references platform.end_user_identity_binding(tenant_id, identity_binding_id),
  constraint end_user_session_handle_hash_ck check (handle_hash ~ '^sha256:[0-9a-f]{64}$'),
  constraint end_user_session_lifetime_ck check (authenticated_at <= last_seen_at and last_seen_at < idle_expires_at and idle_expires_at <= absolute_expires_at),
  constraint end_user_session_revocation_ck check ((revoked_at is null and revocation_reason is null) or (revoked_at is not null and revocation_reason is not null))
);
create index end_user_session_binding_idx on platform.end_user_session(tenant_id, identity_binding_id, absolute_expires_at desc);
create index end_user_session_expiry_idx on platform.end_user_session(absolute_expires_at) where revoked_at is null;
comment on table platform.end_user_session is 'The TimeBack bridge keeps browser continuity without persisting Cognito tokens or allowing a cookie to authorize customer APIs. The browser exchanges this session for short-lived Bearer JWTs whose People & Orgs claims are re-derived each time.';
comment on column platform.end_user_session.end_user_session_id is 'Stable id for one local browser session.';
comment on column platform.end_user_session.tenant_id is 'Canonical Platform tenant UUID that scopes the local session and binding.';
comment on column platform.end_user_session.identity_binding_id is 'Active subject/person binding that authenticated this session.';
comment on column platform.end_user_session.handle_hash is 'SHA-256 of the random 256-bit HttpOnly cookie handle.';
comment on column platform.end_user_session.authenticated_at is 'Time Cognito callback validation created the session.';
comment on column platform.end_user_session.last_seen_at is 'Last successful session-token mint time.';
comment on column platform.end_user_session.idle_expires_at is 'Sliding inactivity deadline, normally 30 minutes after last_seen_at.';
comment on column platform.end_user_session.absolute_expires_at is 'Non-extendable deadline, exactly 2 hours after authentication for this contract.';
comment on column platform.end_user_session.revoked_at is 'Time logout, expiry, invalid state, or binding revocation closed the session.';
comment on column platform.end_user_session.revocation_reason is 'Safe operational reason the session stopped authorizing token mint.';

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
end_user_session_id Primary key uuid Required Default: gen_random_uuid() Stable id for one local browser session. UUID primary key. No enum No foreign key; interpreted only by the Platform TimeBack bridge. 750b24b4-10b3-4625-94f7-5a91076418df Missing, reused, or exposed as a browser credential. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
tenant_id Foreign key uuid Required Default: none Canonical Platform tenant UUID that scopes the local session and binding. Must reference platform.tenant and match the binding tenant. No enum Many sessions belong to one platform.tenant; its unique tenant_key is signed into downstream People & Orgs and Results JWT tenant fields. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 A tenant key is stored in this UUID field or the session points to another tenant's binding. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
identity_binding_id Foreign key uuid Required Default: none Active subject/person binding that authenticated this session. With tenant_id, references platform.end_user_identity_binding. No enum Many sessions belong to one identity binding. 41877f4a-d9ce-4b3c-82a4-9cf437212765 Another tenant's binding or a fabricated UUID. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
handle_hash Unique credential hash text Required Default: none SHA-256 of the random 256-bit HttpOnly cookie handle. Unique sha256:<64 lowercase hex>; raw handle is never stored. No enum No foreign key; interpreted only by the Platform TimeBack bridge. sha256:16ff5a9f6f981798c985bb7d32438e6ae2df1cd90c4c08f704d7839c57425913 Raw cookie, JWT, Cognito token, weak digest, or duplicate. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Lookup compares the hash; the database cannot reconstruct the browser cookie.
authenticated_at Field timestamptz Required Default: none Time Cognito callback validation created the session. Required UTC timestamp and no later than last_seen_at. No enum No foreign key; interpreted only by the Platform TimeBack bridge. 2026-08-04T14:00:00Z Null, after last_seen_at, or refreshed without a new login. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
last_seen_at Field timestamptz Required Default: none Last successful session-token mint time. At or after authenticated_at and before idle_expires_at. No enum No foreign key; interpreted only by the Platform TimeBack bridge. 2026-08-04T14:05:00Z After expiry or advanced by a failed/cross-origin request. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
idle_expires_at Field timestamptz Required Default: none Sliding inactivity deadline, normally 30 minutes after last_seen_at. After last_seen_at and no later than absolute_expires_at. No enum No foreign key; interpreted only by the Platform TimeBack bridge. 2026-08-04T14:35:00Z Past the absolute deadline or advanced without a successful fresh-claims mint. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
absolute_expires_at Field timestamptz Required Default: none Non-extendable deadline, exactly 2 hours after authentication for this contract. At or after idle_expires_at; never updated. No enum No foreign key; interpreted only by the Platform TimeBack bridge. 2026-08-04T16:00:00Z Extended by activity, absent, or longer than the locked pilot contract. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
revoked_at Field timestamptz Nullable Default: none Time logout, expiry, invalid state, or binding revocation closed the session. Null while active; present with revocation_reason. No enum No foreign key; interpreted only by the Platform TimeBack bridge. null Present without reason or cleared for reuse. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.
revocation_reason Field text Nullable Default: none Safe operational reason the session stopped authorizing token mint. Null while active; present when revoked; no direct identity or token material. No enum No foreign key; interpreted only by the Platform TimeBack bridge. null Contains PII/token or absent on a revoked row. Platform shared PITD-005 and issue #445 define the Platform-owned TimeBack identity/session boundary. Edge: Operator and browser routes fail closed rather than guessing a value.

Platform shared table

platform.producer_credential_grant Producer-credential grant envelope

Tenant-bound envelope, created once at tenant onboarding, that lets a producer principal self-mint scoped short-lived credentials without any human.

Purpose

Producers (Incept/AP One-class content generators) must obtain scoped credentials such as publish:content through an authenticated API, never a ticket. The grant is the one-time operator onboarding act; everything after it — minting, rotation, self-revocation — is producer self-service bounded by this envelope.

Lifecycle

Created by an operator-authorized Bearer request (operator role or platform:credential:grant scope) for an active tenant. At most one active grant exists per tenant + producer_key and per tenant + bound_subject. Revocation closes the envelope, stops all further minting, and cascades revocation to every outstanding issued credential. A replacement grant inserts a new row rather than rewriting a revoked one.

QTI reconciliation

None. Consumer modules (Content first) keep verifying ordinary platform HS256 Bearer JWTs; the grant changes who may mint them, not how they are verified.

Primary key

grant_id

RelationshipsConstraintsIndexesInvalid examples
  • Many grants belong to one platform.tenant through tenant_id.
  • One grant may own many platform.producer_credential rows through grant_id.
  • bound_subject is the exact principal subject whose same-tenant Bearer requests may mint under this envelope; it is not a foreign key.
  • allowed_scopes must be a non-empty subset of the enumerated producer_credential_scope vocabulary; wildcard and credential-admin scopes are never grantable.
  • allowed_roles must be exactly the enumerated producer role class (service).
  • max_ttl_seconds is bounded to 60..3600; issued credentials are always short-lived.
  • max_issuances_per_hour is bounded to 1..1000 and enforced fail-closed at mint time.
  • At most one active row per tenant_id + producer_key and per tenant_id + bound_subject.
  • Revocation timestamp, actor, and reason are either all null or all present.
  • primary key (grant_id)
  • partial unique (tenant_id, producer_key) where revoked_at is null
  • partial unique (tenant_id, bound_subject) where revoked_at is null
  • A grant whose allowed_scopes contains platform:*, platform:credential:grant, content:*, or any value outside the enumerated producer_credential_scope set.
  • A grant whose allowed_roles contains operator, issuer, reviewer, or any role other than service.
  • Two active grants for the same tenant + producer_key, or one bound_subject holding active envelopes in the same tenant twice.
  • A grant created by a producer credential, a demo principal, or any caller without operator role or platform:credential:grant scope.
  • A revoked grant that keeps minting, or a revocation that leaves outstanding issued credentials unrevoked.
Example row, query snippets, migration sketch, and SQL comments
{
  "grant_id": "8c9a4b6e-2f31-4a7d-9b0e-5d1c3e8f7a20",
  "tenant_id": "4fb95b74-06dc-4a8b-8f50-14ce56c93970",
  "producer_key": "ap-one",
  "bound_subject": "ap-one-producer",
  "allowed_scopes": [
    "author:content",
    "publish:content"
  ],
  "allowed_roles": [
    "service"
  ],
  "max_ttl_seconds": 900,
  "max_issuances_per_hour": 30,
  "created_by_subject": "operator-owner",
  "created_at": "2026-08-10T12:00:00Z",
  "revoked_at": null,
  "revoked_by_subject": null,
  "revocation_reason": null
}
select grant_id, allowed_scopes, allowed_roles, max_ttl_seconds, max_issuances_per_hour from platform.producer_credential_grant where tenant_id = $1 and bound_subject = $2 and revoked_at is null;

update platform.producer_credential_grant set revoked_at = now(), revoked_by_subject = $3, revocation_reason = $4 where tenant_id = $1 and grant_id = $2 and revoked_at is null returning grant_id;
create table platform.producer_credential_grant (
  grant_id uuid primary key default gen_random_uuid(),
  tenant_id uuid not null references platform.tenant(tenant_id),
  producer_key text not null,
  bound_subject text not null,
  allowed_scopes text[] not null,
  allowed_roles text[] not null default '{service}'::text[],
  max_ttl_seconds integer not null default 900,
  max_issuances_per_hour integer not null default 30,
  created_by_subject text not null,
  created_at timestamptz not null default now(),
  revoked_at timestamptz,
  revoked_by_subject text,
  revocation_reason text,
  constraint producer_grant_producer_key_ck check (producer_key ~ '^[a-z0-9]([a-z0-9-]{1,62}[a-z0-9])$'),
  constraint producer_grant_bound_subject_ck check (bound_subject ~ '^[A-Za-z0-9._:@/-]{1,160}$'),
  constraint producer_grant_scopes_enumerated_ck check (allowed_scopes <@ array['author:content', 'publish:content', 'read:content']::text[] and array_length(allowed_scopes, 1) between 1 and 20),
  constraint producer_grant_roles_enumerated_ck check (allowed_roles <@ array['service']::text[] and array_length(allowed_roles, 1) = 1),
  constraint producer_grant_ttl_ck check (max_ttl_seconds between 60 and 3600),
  constraint producer_grant_rate_ck check (max_issuances_per_hour between 1 and 1000),
  constraint producer_grant_revocation_ck check (
    (revoked_at is null and revoked_by_subject is null and revocation_reason is null)
    or (revoked_at is not null and revoked_by_subject is not null and revocation_reason is not null)
  )
);
create unique index producer_grant_active_producer_uidx on platform.producer_credential_grant(tenant_id, producer_key) where revoked_at is null;
create unique index producer_grant_active_subject_uidx on platform.producer_credential_grant(tenant_id, bound_subject) where revoked_at is null;
comment on table platform.producer_credential_grant is 'Producers (Incept/AP One-class content generators) must obtain scoped credentials such as publish:content through an authenticated API, never a ticket. The grant is the one-time operator onboarding act; everything after it — minting, rotation, self-revocation — is producer self-service bounded by this envelope.';
comment on column platform.producer_credential_grant.grant_id is 'Stable id for one historical grant envelope row.';
comment on column platform.producer_credential_grant.tenant_id is 'Canonical Platform tenant the envelope is bound to.';
comment on column platform.producer_credential_grant.producer_key is 'Human-stable lowercase producer identity (for example ap-one).';
comment on column platform.producer_credential_grant.bound_subject is 'Exact principal subject whose same-tenant Bearer requests may mint under this envelope.';
comment on column platform.producer_credential_grant.allowed_scopes is 'Exhaustive grantable scope list for this producer; requested scopes must be a subset.';
comment on column platform.producer_credential_grant.allowed_roles is 'Role class issued credentials may carry.';
comment on column platform.producer_credential_grant.max_ttl_seconds is 'Upper bound for issued-credential lifetime; also the revocation-convergence horizon for offline verifiers.';
comment on column platform.producer_credential_grant.max_issuances_per_hour is 'Bounded issuance rate enforced at mint time by counting ledger rows in the trailing hour.';
comment on column platform.producer_credential_grant.created_by_subject is 'Subject of the operator principal that created the envelope at onboarding.';
comment on column platform.producer_credential_grant.created_at is 'Time the envelope was created.';
comment on column platform.producer_credential_grant.revoked_at is 'Time the envelope stopped authorizing minting; cascades revocation to outstanding credentials.';
comment on column platform.producer_credential_grant.revoked_by_subject is 'Subject of the operator that revoked the envelope.';
comment on column platform.producer_credential_grant.revocation_reason is 'Bounded operational reason for revocation.';

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
grant_id Primary key uuid Required Default: gen_random_uuid() Stable id for one historical grant envelope row. UUID primary key. No enum Parent of many platform.producer_credential rows. 8c9a4b6e-2f31-4a7d-9b0e-5d1c3e8f7a20 Missing, reused, or rewritten after revocation. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
tenant_id Foreign key uuid Required Default: none Canonical Platform tenant the envelope is bound to. Must reference platform.tenant(tenant_id); grants exist only for stored tenants. No enum Many grants belong to one platform.tenant. 4fb95b74-06dc-4a8b-8f50-14ce56c93970 A tenant key, alias, stateless demo handle, or a tenant outside the operator Bearer scope. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
producer_key Field text Required Default: none Human-stable lowercase producer identity (for example ap-one). Lowercase slug, 3 to 64 characters; unique per tenant while active. No enum Unique with tenant_id while active. ap-one Free-form display text, uppercase, or a duplicate active producer in the tenant. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
bound_subject Field text Required Default: none Exact principal subject whose same-tenant Bearer requests may mint under this envelope. 1 to 160 visible non-space characters; exact match at mint time. No enum Matched against the authenticated principal subject; issued credentials reuse this subject. ap-one-producer An email, a pattern/wildcard, the public demo-reader subject for a privileged envelope, or a subject from another tenant. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
allowed_scopes Envelope bound text[] Required Default: none Exhaustive grantable scope list for this producer; requested scopes must be a subset. Non-empty subset of the enumerated producer_credential_scope vocabulary; at most 20 values. producer_credential_scope Bounds platform.producer_credential.scopes for every credential minted under the grant. {author:content,publish:content} Contains platform:*, platform:credential:grant, or any value outside the enumerated set. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Widening the vocabulary is a dictionary + migration change, never a runtime decision.
allowed_roles Envelope bound text[] Required Default: '{service}'::text[] Role class issued credentials may carry. Exactly one value from the enumerated producer role class (service). No enum Bounds platform.producer_credential.roles. {service} operator, issuer, reviewer, writer, or more than one role. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
max_ttl_seconds Field integer Required Default: 900 Upper bound for issued-credential lifetime; also the revocation-convergence horizon for offline verifiers. Integer 60..3600. No enum Caps ttlSeconds on every mint under the grant. 900 Longer than 3600 seconds; producer credentials are never long-lived static secrets. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
max_issuances_per_hour Field integer Required Default: 30 Bounded issuance rate enforced at mint time by counting ledger rows in the trailing hour. Integer 1..1000; exceeding it returns the documented 429 rate_limited Problem. No enum Evaluated against platform.producer_credential rows for the grant. 30 Bypassed on repository read failure; the rate check fails closed. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
created_by_subject Field text Required Default: none Subject of the operator principal that created the envelope at onboarding. Required; never a raw secret or email. No enum Correlates to the platform.audit_log create row. operator-owner A producer credential subject; producer credentials cannot administer grants. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
created_at Field timestamptz Required Default: now() Time the envelope was created. Required UTC timestamp. No enum No foreign key; interpreted only by the Platform producer-credential routes. 2026-08-10T12:00:00Z Null or rewritten on revocation. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
revoked_at Field timestamptz Nullable Default: none Time the envelope stopped authorizing minting; cascades revocation to outstanding credentials. Null while active; present with actor and reason. No enum No foreign key; interpreted only by the Platform producer-credential routes. null Present without actor/reason, or cleared to resurrect a revoked envelope. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
revoked_by_subject Field text Nullable Default: none Subject of the operator that revoked the envelope. Null while active; required with revoked_at. No enum No foreign key; interpreted only by the Platform producer-credential routes. null Present on an active row or omitted on revocation. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
revocation_reason Field text Nullable Default: none Bounded operational reason for revocation. Null while active; single line, at most 200 characters; no secrets or PII. No enum No foreign key; interpreted only by the Platform producer-credential routes. null Contains a token, email, or is absent when revoked. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.

Platform shared table

platform.producer_credential Producer credential issuance ledger

Append-only issuance and revocation ledger for self-minted producer credentials; stores only the SHA-256 fingerprint of each issued JWT.

Purpose

Every self-service issuance must be auditable and individually revocable. The ledger row is the durable record the mint route checks before rotation, the revocation switch for one credential, and the join target for issuance/revocation audit rows — while the raw token exists only in the mint response.

Lifecycle

Inserted atomically with each successful mint under an active grant. Rotation inserts a new row; presenting a revoked or unknown credential to the mint route fails closed. Self-revocation (the credential's own subject) or operator revocation closes the row immediately for platform routes; offline verifiers converge within the credential's bounded remaining TTL. Grant revocation cascades revocation with reason grant_revoked.

QTI reconciliation

None. Issued credentials are ordinary platform HS256 Bearer JWTs carrying the tenant key claim consumer modules already route by.

Primary key

credential_id

RelationshipsConstraintsIndexesInvalid examples
  • Many credentials belong to one platform.producer_credential_grant through grant_id.
  • Many credentials belong to one platform.tenant through tenant_id.
  • platform.audit_log issuance/revocation rows reference credential_id as resource_id; the ledger row, not the audit row, carries the fingerprint.
  • credential_sha256 is globally unique and must be sha256:<64 lowercase hex>; the raw JWT is never stored.
  • scopes and roles are frozen copies of what was minted and always inside the grant envelope.
  • expires_at is strictly after issued_at and bounded by the grant max_ttl_seconds.
  • Revocation timestamp, actor, and reason are either all null or all present.
  • primary key (credential_id)
  • unique (credential_sha256)
  • index (grant_id, issued_at desc) — the rate-limit window scan
  • index (tenant_id, issued_at desc)
  • A row storing the raw JWT, a reversible encoding of it, or the signing secret in any column.
  • A credential whose scopes or roles exceed its grant envelope.
  • A revoked credential accepted by the mint/rotate route, or a revoked grant with unrevoked outstanding credentials.
  • An issuance without a matching platform.audit_log row, or an audit row that carries token-derived strings instead of joining by credential_id.
Example row, query snippets, migration sketch, and SQL comments
{
  "credential_id": "3f2b8c1d-7e4a-4b9f-8d2c-6a5e9f0b1c3d",
  "grant_id": "8c9a4b6e-2f31-4a7d-9b0e-5d1c3e8f7a20",
  "tenant_id": "4fb95b74-06dc-4a8b-8f50-14ce56c93970",
  "subject": "ap-one-producer",
  "roles": [
    "service"
  ],
  "scopes": [
    "publish:content"
  ],
  "credential_sha256": "sha256:ba216f040c3d109731eb370f6252a989d05e65a3344f88b7e89181ee2a80ba70",
  "issued_by_subject": "ap-one-producer",
  "issued_at": "2026-08-10T12:05:00Z",
  "expires_at": "2026-08-10T12:20:00Z",
  "revoked_at": null,
  "revoked_by_subject": null,
  "revocation_reason": null
}
select count(*) from platform.producer_credential where grant_id = $1 and issued_at >= now() - interval '1 hour';

update platform.producer_credential set revoked_at = now(), revoked_by_subject = $3, revocation_reason = $4 where tenant_id = $1 and credential_id = $2 returning credential_id;
create table platform.producer_credential (
  credential_id uuid primary key default gen_random_uuid(),
  grant_id uuid not null references platform.producer_credential_grant(grant_id),
  tenant_id uuid not null references platform.tenant(tenant_id),
  subject text not null,
  roles text[] not null,
  scopes text[] not null,
  credential_sha256 text not null unique,
  issued_by_subject text not null,
  issued_at timestamptz not null default now(),
  expires_at timestamptz not null,
  revoked_at timestamptz,
  revoked_by_subject text,
  revocation_reason text,
  constraint producer_credential_subject_ck check (subject ~ '^[A-Za-z0-9._:@/-]{1,160}$'),
  constraint producer_credential_hash_ck check (credential_sha256 ~ '^sha256:[0-9a-f]{64}$'),
  constraint producer_credential_scopes_ck check (array_length(scopes, 1) between 1 and 20),
  constraint producer_credential_roles_ck check (array_length(roles, 1) between 1 and 5),
  constraint producer_credential_expiry_ck check (expires_at > issued_at),
  constraint producer_credential_revocation_ck check (
    (revoked_at is null and revoked_by_subject is null and revocation_reason is null)
    or (revoked_at is not null and revoked_by_subject is not null and revocation_reason is not null)
  )
);
create index producer_credential_grant_issued_idx on platform.producer_credential(grant_id, issued_at desc);
create index producer_credential_tenant_issued_idx on platform.producer_credential(tenant_id, issued_at desc);
comment on table platform.producer_credential is 'Every self-service issuance must be auditable and individually revocable. The ledger row is the durable record the mint route checks before rotation, the revocation switch for one credential, and the join target for issuance/revocation audit rows — while the raw token exists only in the mint response.';
comment on column platform.producer_credential.credential_id is 'Stable id for one issued credential; also embedded in the JWT as the credential_id claim so rotation and revocation can find this row.';
comment on column platform.producer_credential.grant_id is 'Grant envelope the credential was minted under.';
comment on column platform.producer_credential.tenant_id is 'Canonical Platform tenant the credential is bound to.';
comment on column platform.producer_credential.subject is 'Principal subject carried by the issued JWT; always the grant bound_subject.';
comment on column platform.producer_credential.roles is 'Frozen role list minted into the JWT.';
comment on column platform.producer_credential.scopes is 'Frozen scope list minted into the JWT.';
comment on column platform.producer_credential.credential_sha256 is 'SHA-256 fingerprint of the issued JWT; the only stored representation of the secret.';
comment on column platform.producer_credential.issued_by_subject is 'Subject of the principal that requested the mint (the bootstrap principal or the rotating credential''s subject).';
comment on column platform.producer_credential.issued_at is 'Mint time; the rate-limit window counts rows by this column.';
comment on column platform.producer_credential.expires_at is 'JWT exp; the credential is useless everywhere after this time.';
comment on column platform.producer_credential.revoked_at is 'Time the credential stopped being accepted by platform producer-credential routes.';
comment on column platform.producer_credential.revoked_by_subject is 'Subject that revoked the credential: its own producer principal (self-revoke on suspected leak), an operator, or the grant revocation cascade.';
comment on column platform.producer_credential.revocation_reason is 'Bounded operational reason; the grant cascade writes grant_revoked.';

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
credential_id Primary key uuid Required Default: gen_random_uuid() Stable id for one issued credential; also embedded in the JWT as the credential_id claim so rotation and revocation can find this row. UUID primary key. No enum Referenced by audit rows and by the credential_id JWT claim. 3f2b8c1d-7e4a-4b9f-8d2c-6a5e9f0b1c3d Missing from the minted JWT or reused across issuances. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
grant_id Foreign key uuid Required Default: none Grant envelope the credential was minted under. Must reference platform.producer_credential_grant(grant_id). No enum Many credentials belong to one grant. 8c9a4b6e-2f31-4a7d-9b0e-5d1c3e8f7a20 Another tenant's grant or a revoked envelope at mint time. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
tenant_id Foreign key uuid Required Default: none Canonical Platform tenant the credential is bound to. Must reference platform.tenant(tenant_id) and equal the grant tenant. No enum Many credentials belong to one platform.tenant. 4fb95b74-06dc-4a8b-8f50-14ce56c93970 Differs from the grant tenant; tenant binding is enforced server-side. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
subject Field text Required Default: none Principal subject carried by the issued JWT; always the grant bound_subject. 1 to 160 visible non-space characters. No enum Equals platform.producer_credential_grant.bound_subject. ap-one-producer A caller-chosen subject different from the envelope binding. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
roles Field text[] Required Default: none Frozen role list minted into the JWT. Non-empty subset of the grant allowed_roles; 1 to 5 values. No enum Bounded by platform.producer_credential_grant.allowed_roles. {service} Any role outside the envelope. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
scopes Field text[] Required Default: none Frozen scope list minted into the JWT. Non-empty subset of the grant allowed_scopes; 1 to 20 values. producer_credential_scope Bounded by platform.producer_credential_grant.allowed_scopes. {publish:content} Any scope outside the envelope; escalation attempts are refused and audited as authz_denied. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
credential_sha256 Unique credential fingerprint text Required Default: none SHA-256 fingerprint of the issued JWT; the only stored representation of the secret. Unique sha256:<64 lowercase hex>. No enum No foreign key; interpreted only by the Platform producer-credential routes. sha256:ba216f040c3d109731eb370f6252a989d05e65a3344f88b7e89181ee2a80ba70 The raw JWT, a truncated digest, or a duplicate fingerprint. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: The database cannot reconstruct the token; a leaked ledger row grants nothing.
issued_by_subject Field text Required Default: none Subject of the principal that requested the mint (the bootstrap principal or the rotating credential's subject). Required; never a raw secret. No enum Correlates to the platform.audit_log issuance row. ap-one-producer Empty or an unauthenticated placeholder. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
issued_at Field timestamptz Required Default: now() Mint time; the rate-limit window counts rows by this column. Required UTC timestamp equal to the JWT iat. No enum No foreign key; interpreted only by the Platform producer-credential routes. 2026-08-10T12:05:00Z Backdated to evade the issuance rate bound. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
expires_at Field timestamptz Required Default: none JWT exp; the credential is useless everywhere after this time. Strictly after issued_at; at most grant max_ttl_seconds later. No enum No foreign key; interpreted only by the Platform producer-credential routes. 2026-08-10T12:20:00Z More than 3600 seconds after issuance. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
revoked_at Field timestamptz Nullable Default: none Time the credential stopped being accepted by platform producer-credential routes. Null while active; present with actor and reason. No enum No foreign key; interpreted only by the Platform producer-credential routes. null Cleared to resurrect a revoked credential. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
revoked_by_subject Field text Nullable Default: none Subject that revoked the credential: its own producer principal (self-revoke on suspected leak), an operator, or the grant revocation cascade. Null while active; required with revoked_at. No enum No foreign key; interpreted only by the Platform producer-credential routes. null A subject that is neither the credential owner nor a grant administrator. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.
revocation_reason Field text Nullable Default: none Bounded operational reason; the grant cascade writes grant_revoked. Null while active; single line, at most 200 characters. No enum No foreign key; interpreted only by the Platform producer-credential routes. null Contains a token or PII. Platform shared PITD-005 plus issues #2727/#2794 place self-service, tenant-bound, auditable producer-credential provisioning in Platform tenant onboarding. Edge: Producer-credential routes fail closed rather than widening an envelope or guessing a value.

PITD-032 governed producer surface

Incept Producer-Surface Coverage

The Platform architecture registers Incept as an upstream producer surface. These incept.* rows preserve generation-loop provenance, but they do not replace Content/QTI, Results, Events, or Analytics. Consumer-facing progress and status reads must be exposed through Platform3 API/view paths with normal auth, tenant scope, audit, and non-service-role readback.

Incept is a Platform3 upstream producer surface, not a consumer API surface and not an alternate Content/Results/Events/Analytics model.

Every student-facing generated artifact referenced by Incept rows must materialize as canonical Content/QTI rows or carry an explicit reconciliation error.

Consumer-facing Incept progress/status reads go through Platform3 API/view paths with normal auth, tenant scope, audit, data-dictionary coverage, and non-service-role readback.

Incept producer events use incept_traffic_class values in payload. Headline customer Accuracy counts only trafficClass=customer; owner-directed materialization traffic must be goal-run, loop self-tests must be self-test, and missing legacy values default to customer only for backward compatibility.

The Platform3 Incept progress API is the canonical customer-progress read model for contractId=incept-customer-progress-v1 and projectionName=generation-loop-progress-report; omitting contractId/projectionName defaults to this compact customer-progress read model, and it exposes the denominator/detail fields needed to render customer progress without direct SUPABASE_DB_URL access.

The same Platform3 Incept progress API is the canonical customer-generation repair-evidence read model for contractId=incept-customer-generation-ledger-v1; it exposes redacted scope and failure details needed by progress counts and automated repair loops without exposing raw artifacts, and raw repair-evidence API reads must include at least one narrowing filter plus a bounded limit.

GET /platform/producer-surfaces/incept/quality-verdicts/{qualityBarId} is the canonical hosted verdict for a named producer quality bar. It delegates to governed Incept ledger/projection evidence and returns passed, failed, or pending; absent evidence is pending with nullReason=source_missing, never a 404 or inferred pass.

public.incept_generation_runs is legacy/bootstrap compatibility only; no new durable public.incept_* tables may be added.

PostgREST schema exposure alone is not the product contract unless it sits behind Platform3 auth, tenant scope, audit, and this dictionary.

Catalog evidence. Snapshot checked at 2026-06-25T23:03:53.409Z: 11 tables, 7 views, 392 fields.

ObjectKindPurposeField countPrimary key / projection grain
incept.incept_event_ledger table Append-only canonical ledger for Incept loop events in the shared Platform3 Supabase/Postgres database. Generated JSON reports are projections from this stream. 41 (event_id)
incept.incept_loop_runs table Durable run envelope for daemon, global, and per-loop executions. The event ledger remains the canonical fact stream; this table is the run index. 26 (loop_run_id)
incept.incept_event_artifacts table Pointers from ledger events to durable evidence: Supabase Storage objects, local JSON paths, GitHub URLs, Workflowy URLs, model outputs, screenshots, and generated artifacts. 17 (artifact_pointer_id)
incept.incept_quality_bars table Versioned quality-bar definitions observed by Incept events. Changes are represented by ledger events; this table indexes the active definitions. 12 (quality_bar_id, quality_bar_version)
incept.incept_model_grid_evidence table Typed index for model-grid evaluation evidence. The linked ledger event is canonical if this row and payload ever disagree. 21 (model_grid_evidence_id)
incept.incept_customer_feedback table Typed index for customer and GitHub-linked quality evidence that has been normalized into ledger events. 18 (feedback_id)
incept.incept_repair_attempts table Typed index for repair attempts created by loop events. Promotion acceptance remains a separate decision row linked to the attempt. 22 (repair_attempt_id)
incept.incept_promotion_decisions table AI-oversight repair and promotion decisions. This records the decision index; the event ledger preserves the canonical payload. 23 (promotion_decision_id)
incept.incept_external_issue_links table Links from ledger events to GitHub Issues and other external trackers. GitHub remains the issue tracker; this table only links issues into Incept evidence. 16 (external_issue_link_id)
incept.incept_deployments table Deployment and landing attempts linked to promotion, repair, and release events. 16 (deployment_id)
incept.incept_projection_checkpoints table Materialization checkpoints for ledger-backed projections. The first supported projection is data/generation-loop-progress-report.json. 12 (projection_name, projection_version, checkpoint_key)
incept.incept_regeneration_event_timeline_v view Flat event timeline for regeneration, evaluation, repair, promotion, deployment, and supervisor report reconstruction. 35 Read-only projection grain; see projection rule and view definition.
incept.incept_progress_projection_input_v view Normalized input for rebuilding the generation-loop progress projection from ledger facts. 22 Read-only projection grain; see projection rule and view definition.
incept.incept_quality_grid_fact_v view Quality grid fact view by skill, content type, subtype, subject, grade, and quality bar. 26 Read-only projection grain; see projection rule and view definition.
incept.incept_model_grid_latest_v view Latest model-grid evidence per grid/task/subtype/provider/model for side-by-side comparison reports. 22 Read-only projection grain; see projection rule and view definition.
incept.incept_customer_feedback_status_v view Customer audit and customer feedback status view with GitHub issue links. 20 Read-only projection grain; see projection rule and view definition.
incept.incept_layer_health_v view Layer health and five-layer supervisor status facts for owner/manager reporting. 16 Read-only projection grain; see projection rule and view definition.
incept.incept_promotion_timeline_v view Promotion, deployment, and release decision timeline for skill/version reporting. 27 Read-only projection grain; see projection rule and view definition.
Raw-DB convergence query shape
-- Raw-DB input for an Incept customer progress/status answer. Apply JWT tenant scope first.
-- This mirrors the Platform API's materialized customer-progress fast path.
select e.event_id, e.tenant_id, e.loop_run_id, e.loop_id, e.skill_id,
       e.content_type, e.content_subtype, e.quality_bar_id, e.quality_bar_version,
       e.event_type, e.payload ->> 'status' as event_status,
       e.payload ->> 'projectionStatus' as projection_status,
       coalesce(nullif(e.payload ->> 'trafficClass', ''), nullif(e.payload ->> 'traffic_class', ''), 'customer') as traffic_class,
       e.payload ->> 'currentScore' as current_score,
       e.payload ->> 'targetScore' as target_score,
       e.payload ->> 'customerAvailable' as customer_available,
       e.payload ->> 'qualityCleared' as quality_cleared,
       e.occurred_at, e.recorded_at,
       e.payload ->> 'contractId' as contract_id,
       e.payload ->> 'projectionName' as projection_name,
       e.payload ->> 'title' as title,
       e.payload ->> 'skillTitle' as skill_title,
       e.payload ->> 'blockingReason' as blocking_reason,
       e.payload ->> 'reason' as reason,
       e.payload ->> 'status' as status,
       e.payload ->> 'failureReason' as failure_reason,
       e.payload ->> 'feedback' as feedback,
       e.payload ->> 'feedbackSummary' as feedback_summary,
       e.payload -> 'failedCheckIds' as failed_check_ids,
       e.payload ->> 'reviewerConfidence' as reviewer_confidence,
       e.payload ->> 'capabilityGridNumerator' as capability_grid_numerator,
       e.payload ->> 'capabilityGridDenominator' as capability_grid_denominator,
       e.payload ->> 'accuracyEventNumerator' as accuracy_event_numerator,
       e.payload ->> 'accuracyEventDenominator' as accuracy_event_denominator,
       e.payload ->> 'heldOutNumerator' as held_out_numerator,
       e.payload ->> 'heldOutDenominator' as held_out_denominator
from incept.incept_event_ledger e
where e.payload ->> 'contractId' = 'incept-customer-progress-v1'
  and e.payload ->> 'projectionName' = 'generation-loop-progress-report'
order by e.occurred_at asc, e.recorded_at asc, e.event_id asc;

-- Raw-DB input for Incept automated repair evidence. Apply JWT tenant scope first.
-- API callers must provide at least one narrowing filter for this raw repair-evidence contract
-- (for example eventType, subject, gradeLevel, contentType, contentSubtype, skillId, loopId,
-- occurredSince, or occurredUntil) and a bounded limit before payload details are extracted.
select p.*, e.payload ->> 'contractId' as contract_id,
       e.payload ->> 'subject' as subject,
       e.payload ->> 'gradeLevel' as grade_level,
       e.payload ->> 'grade' as grade,
       e.payload ->> 'contentType' as content_type,
       e.payload ->> 'contentSubtype' as content_subtype,
       coalesce(nullif(e.payload ->> 'trafficClass', ''), nullif(e.payload ->> 'traffic_class', ''), 'customer') as traffic_class,
       e.payload -> 'dimensionVector' as dimension_vector,
       e.payload ->> 'status' as status,
       e.payload ->> 'failureReason' as failure_reason,
       e.payload ->> 'feedback' as feedback,
       e.payload ->> 'feedbackSummary' as feedback_summary,
       e.payload -> 'failedCheckIds' as failed_check_ids,
       e.payload ->> 'reviewerConfidence' as reviewer_confidence,
       e.payload ->> 'accuracyEventNumerator' as accuracy_event_numerator,
       e.payload ->> 'accuracyEventDenominator' as accuracy_event_denominator,
       e.payload ->> 'currentScore' as current_score,
       e.payload ->> 'targetScore' as target_score
from incept.incept_progress_projection_input_v p
join incept.incept_event_ledger e on e.event_id = p.event_id
where e.payload ->> 'contractId' = 'incept-customer-generation-ledger-v1'
  and p.event_type = 'evaluation.completed'
  and coalesce(p.content_type, e.payload ->> 'contentType') = 'image'
  and p.occurred_at >= timestamptz '2026-01-01T00:00:00Z'
order by p.occurred_at asc, p.recorded_at asc, p.event_id asc;

-- Reproduce projection freshness from the checkpoint watermark.
select projection_name, projection_version, checkpoint_key, last_event_id,
       source_event_count, materialized_at, status, watermark
from incept.incept_projection_checkpoints
where projection_name = 'generation-loop-progress-report';

Incept governed table

incept.incept_event_ledger Event Ledger

Append-only canonical ledger for Incept loop events in the shared Platform3 Supabase/Postgres database. Generated JSON reports are projections from this stream.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(event_id)

Kind

table

Fields

41 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • causation_event_id references incept.incept_event_ledger.event_id.
  • platform_audit_log_id references platform.audit_log.audit_log_id.
  • platform_idempotency_key_id references platform.idempotency_key.idempotency_key_id.
  • tenant_id references platform.tenant.tenant_id.
  • CHECK: CHECK (length(btrim(actor_type)) > 0 AND length(btrim(actor_subject)) > 0)
  • FOREIGN KEY: FOREIGN KEY (causation_event_id) REFERENCES incept.incept_event_ledger(event_id)
  • CHECK: CHECK (event_type ~ '^[a-z][a-z0-9_.-]{1,159}$'::text)
  • CHECK: CHECK (length(btrim(idempotency_key)) >= 1 AND length(btrim(idempotency_key)) <= 200)
  • UNIQUE: UNIQUE (idempotency_key)
  • CHECK: CHECK (jsonb_typeof(redacted_metadata) = 'object'::text)
  • CHECK: CHECK (module_key = 'incept'::text)
  • CHECK: CHECK (payload_hash IS NULL OR payload_hash ~ '^sha256:[0-9a-f]{64}$'::text)
  • CHECK: CHECK (jsonb_typeof(payload) = 'object'::text)
  • PRIMARY KEY: PRIMARY KEY (event_id)
  • FOREIGN KEY: FOREIGN KEY (platform_audit_log_id) REFERENCES platform.audit_log(audit_log_id)
  • FOREIGN KEY: FOREIGN KEY (platform_idempotency_key_id) REFERENCES platform.idempotency_key(idempotency_key_id)
  • CHECK: CHECK (surface = ANY (ARRAY['platform'::text, '1edtech'::text, 'alpha'::text, 'incept'::text]))
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE INDEX incept_event_ledger_correlation_idx ON incept.incept_event_ledger USING btree (correlation_id, occurred_at DESC)
  • CREATE UNIQUE INDEX incept_event_ledger_idempotency_key_key ON incept.incept_event_ledger USING btree (idempotency_key)
  • CREATE UNIQUE INDEX incept_event_ledger_idempotency_uidx ON incept.incept_event_ledger USING btree (idempotency_key)
  • CREATE INDEX incept_event_ledger_loop_idx ON incept.incept_event_ledger USING btree (loop_id, occurred_at DESC)
  • CREATE INDEX incept_event_ledger_payload_gin_idx ON incept.incept_event_ledger USING gin (payload)
  • CREATE UNIQUE INDEX incept_event_ledger_pkey ON incept.incept_event_ledger USING btree (event_id)
  • CREATE INDEX incept_event_ledger_recorded_idx ON incept.incept_event_ledger USING btree (recorded_at, event_id)
  • CREATE INDEX incept_event_ledger_skill_idx ON incept.incept_event_ledger USING btree (skill_id, occurred_at DESC)
  • CREATE INDEX incept_event_ledger_source_path_idx ON incept.incept_event_ledger USING btree (source_path)
  • CREATE INDEX incept_event_ledger_type_time_idx ON incept.incept_event_ledger USING btree (event_type, occurred_at DESC)
  • Append-only canonical Incept fact stream. Typed index tables and views are projections from this stream.
  • Incept producer events carry trafficClass in payload using incept_traffic_class values. Platform3 API readback also accepts legacy traffic_class payload spelling and defaults missing legacy rows to customer for compatibility.
  • Generated student-facing artifacts referenced by payload or artifact rows must materialize as canonical Content/QTI rows or explicit reconciliation errors.
  • Direct app reads from this table are deprecated bootstrap only; product reads go through Platform3-native API/view paths with tenant scope and audit.
Example query
select event_id, event_type, occurred_at, payload_hash from incept.incept_event_ledger where tenant_id = $1 order by occurred_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
event_id Primary key uuid Required Default: gen_random_uuid() Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. Default: gen_random_uuid(). FOREIGN KEY: FOREIGN KEY (causation_event_id) REFERENCES incept.incept_event_ledger(event_id). PRIMARY KEY: PRIMARY KEY (event_id). No enum Primary event identity for the canonical ledger. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_event_ledger rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
platform_audit_log_id Foreign key uuid Nullable Default: none Optional link to platform.audit_log for the cross-module redacted audit narrative. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (platform_audit_log_id) REFERENCES platform.audit_log(audit_log_id). No enum Many incept_event_ledger rows reference one platform.audit_log.audit_log_id; nullable=true. 0b7d63b5-e670-42fb-bac0-a821fd0626c0 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
platform_idempotency_key_id Foreign key uuid Nullable Default: none Optional link to platform.idempotency_key for HTTP/API writers once the Platform module admits incept as an idempotency module. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (platform_idempotency_key_id) REFERENCES platform.idempotency_key(idempotency_key_id). No enum Many incept_event_ledger rows reference one platform.idempotency_key.idempotency_key_id; nullable=true. 8535685a-8730-4c61-9226-581f0370bd37 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
module_key Field text Required Default: 'incept'::text Writer namespace. For Incept ledger rows this must be incept, which records producer attribution without making Incept a consumer-facing model. Required text column. Default: 'incept'::text. CHECK: CHECK (module_key = 'incept'::text). No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. incept null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
surface Field text Required Default: 'platform'::text Surface or producer path that emitted the fact. The incept value is a producer-writer identity, not a third consumer API surface. Required text column. Default: 'platform'::text. CHECK: CHECK (surface = ANY (ARRAY['platform'::text, '1edtech'::text, 'alpha'::text, 'incept'::text])). Allowed values: platform means Platform3 substrate path; 1edtech means expert standards surface path; alpha means plain-language Alpha path; incept means governed producer-writer path. No enum No object relationship; this field is scalar evidence interpreted at the object grain. incept null; outside allowed values: platform means Platform3 substrate path; 1edtech means expert standards surface path; alpha means plain-language Alpha path; incept means governed producer-writer path. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_type Field text Required Default: none Governed event label that names what happened in the generation loop. Required text column. CHECK: CHECK (event_type ~ '^[a-z][a-z0-9_.-]{1,159}$'::text). No enum No object relationship; this field is scalar evidence interpreted at the object grain. incept.producer_surface.registered null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_schema_version Field integer(32) Required Default: 1 Version of the payload contract used by this event. Required integer(32) column. Default: 1. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
idempotency_key Field text Required Default: none Deterministic writer-supplied key. Duplicate inserts must reuse the existing event instead of creating a second canonical fact. Required text column. CHECK: CHECK (length(btrim(idempotency_key)) >= 1 AND length(btrim(idempotency_key)) <= 200). UNIQUE: UNIQUE (idempotency_key). FOREIGN KEY: FOREIGN KEY (platform_idempotency_key_id) REFERENCES platform.idempotency_key(idempotency_key_id). No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. incept-run-2026-06-25-001 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
operation_id Field text Nullable Default: none Stable operation name used for audit, idempotency, and support correlation. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. incept.producer_surface.register not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
request_id Field text Nullable Default: none Request-instance identifier returned to callers and used in support/debug correlation. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. req_20260625_148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
trace_id Field text Nullable Default: none End-to-end trace identifier shared with logs, Problems, and audit rows. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. trace_20260625_148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
correlation_id Field text Nullable Default: none Cross-event correlation key for related generation, repair, promotion, and deployment facts. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. corr-platform3-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
causation_event_id Foreign key uuid Nullable Default: none Ledger event that caused this event. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (causation_event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_event_ledger rows reference one incept.incept_event_ledger.event_id; nullable=true. f499f17f-7c3e-4aa8-8f6c-0bd98278dba7 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Field text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_type Field text Nullable Default: none Generated artifact type, such as lesson, question, script, or report component. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_subtype Field text Nullable Default: none More specific generated artifact subtype used for quality grids and model comparisons. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. mastery_gate_question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_id Field text Nullable Default: none Quality bar identifier applied to the event, evidence row, or projection. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. qb-platform-dd-field-coverage not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_version Field text Nullable Default: none Version of the quality bar definition used for scoring or gating. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_id Field text Nullable Default: none Generated or evaluated artifact identifier from the producer workflow. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. artifact-platform-dd-index-html not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
external_issue_key Field text Nullable Default: none Stable external issue key that connects Platform3 evidence to GitHub or another tracker. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. GH-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_type Field text Required Default: none Kind of actor that emitted or approved the fact, such as agent, human, system, or daemon. Required text column. CHECK: CHECK (length(btrim(actor_type)) > 0 AND length(btrim(actor_subject)) > 0). CHECK: CHECK (length(btrim(actor_type)) > 0 AND length(btrim(actor_subject)) > 0). No enum No object relationship; this field is scalar evidence interpreted at the object grain. agent null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_subject Field text Required Default: none Pseudonymous subject for the actor; do not store credentials, JWTs, or direct customer PII here. Required text column. CHECK: CHECK (length(btrim(actor_type)) > 0 AND length(btrim(actor_subject)) > 0). CHECK: CHECK (length(btrim(actor_type)) > 0 AND length(btrim(actor_subject)) > 0). No enum No object relationship; this field is scalar evidence interpreted at the object grain. agent:codex:data-dictionary-doer null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_agent_id Field text Nullable Default: none Agent identifier when the actor is an AI or automated process. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. agent-codex-data-dictionary-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_agent_model Field text Nullable Default: none Model name or version for the AI agent that produced or judged the event. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. gpt-5-codex-2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repo_url Field text Nullable Default: none Repository URL associated with the event or deployment evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
branch_name Field text Nullable Default: none Git branch associated with the event or deployment evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. platform3-148-incept-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
base_branch Field text Nullable Default: none Base branch used for comparison, PR, or landing evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. main not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
commit_sha Field text Nullable Default: none Git commit SHA tied to the event, repair, promotion, or deployment. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
worktree_path Field text Nullable Default: none Local or agent worktree path recorded as evidence; it is diagnostic and not a durable product URL. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
pull_request_url Field text Nullable Default: none Pull request URL linked to a repair, promotion, or deployment event. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_system Field text Required Default: 'incept'::text System that produced the evidence, such as GitHub, Workflowy, agent runner, deployment provider, or local backfill. Required text column. Default: 'incept'::text. No enum No object relationship; this field is scalar evidence interpreted at the object grain. github null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
occurred_at Field timestamptz Required Default: none Time the underlying event happened. Required timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
recorded_at Field timestamptz Required Default: now() Time Platform3 recorded the event. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
payload Field jsonb Required Default: '{}'::jsonb Typed event body. Keep direct credentials, JWTs, raw customer PII, IP addresses, and user agents out of this field. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (payload_hash IS NULL OR payload_hash ~ '^sha256:[0-9a-f]{64}$'::text). CHECK: CHECK (jsonb_typeof(payload) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
payload_hash Field text Nullable Default: none sha256 hash proving the payload used by this row or projection. Nullable text column. CHECK: CHECK (payload_hash IS NULL OR payload_hash ~ '^sha256:[0-9a-f]{64}$'::text). No enum No object relationship; this field is scalar evidence interpreted at the object grain. sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
redacted_metadata Field jsonb Required Default: '{}'::jsonb Small redacted operational facts only: counts, hashes, timings, source paths, and summary labels. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(redacted_metadata) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_loop_runs Loop Runs

Durable run envelope for daemon, global, and per-loop executions. The event ledger remains the canonical fact stream; this table is the run index.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(loop_run_id)

Kind

table

Fields

26 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • completed_event_id references incept.incept_event_ledger.event_id.
  • started_event_id references incept.incept_event_ledger.event_id.
  • tenant_id references platform.tenant.tenant_id.
  • FOREIGN KEY: FOREIGN KEY (completed_event_id) REFERENCES incept.incept_event_ledger(event_id)
  • PRIMARY KEY: PRIMARY KEY (loop_run_id)
  • CHECK: CHECK (scope = ANY (ARRAY['loop'::text, 'global'::text, 'daemon'::text, 'backfill'::text]))
  • FOREIGN KEY: FOREIGN KEY (started_event_id) REFERENCES incept.incept_event_ledger(event_id)
  • CHECK: CHECK (status = ANY (ARRAY['queued'::text, 'running'::text, 'succeeded'::text, 'failed'::text, 'cancelled'::text, 'skipped'::text]))
  • CHECK: CHECK (jsonb_typeof(summary) = 'object'::text)
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE INDEX incept_loop_runs_event_config_idx ON incept.incept_loop_runs USING btree (event_config_id, started_at DESC)
  • CREATE INDEX incept_loop_runs_loop_ids_gin_idx ON incept.incept_loop_runs USING gin (loop_ids)
  • CREATE UNIQUE INDEX incept_loop_runs_pkey ON incept.incept_loop_runs USING btree (loop_run_id)
  • CREATE INDEX incept_loop_runs_status_idx ON incept.incept_loop_runs USING btree (status, started_at DESC)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_loop_runs where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
loop_run_id Primary key text Required Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Required text column. PRIMARY KEY: PRIMARY KEY (loop_run_id). No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. loop-run-2026-06-25-001 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_loop_runs rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
started_event_id Foreign key uuid Nullable Default: none Ledger event that marks when this loop run started; null means the run envelope was backfilled or created before start-event linking was available. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (started_event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_loop_runs rows may reference one incept.incept_event_ledger.event_id as their start event; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
completed_event_id Foreign key uuid Nullable Default: none Ledger event that records the terminal outcome for this loop run; null means the run is still open or ended before completion-event linking was available. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (completed_event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_loop_runs rows may reference one incept.incept_event_ledger.event_id as their completion event; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_config_id Field text Nullable Default: none Soft reference to the runner or daemon configuration that launched the run, used to compare runs started from the same schedule, prompt set, or operator profile. Nullable text column. No enum Soft reference to an Incept runner configuration outside this catalog snapshot; many loop runs may share one event_config_id; nullable=true. event-config-platform3-nightly not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
trigger_name Field text Nullable Default: none Named trigger that started the loop run, such as daemon schedule, manual operator run, issue triage, or backfill. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. manual_repair not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
scope Field text Required Default: 'loop'::text Run scope for the Incept loop envelope. The table CHECK defines whether this is one loop, global work, daemon work, or backfill. Required text column. Default: 'loop'::text. CHECK: CHECK (scope = ANY (ARRAY['loop'::text, 'global'::text, 'daemon'::text, 'backfill'::text])). Allowed values: loop means the run is scoped to one named generation loop or skill path; global means the run spans multiple loops or platform-wide Incept maintenance; daemon means the run was started by an automated recurring worker; backfill means the run is replaying or repairing historical Incept evidence. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop null; outside allowed values: loop means the run is scoped to one named generation loop or skill path; global means the run spans multiple loops or platform-wide Incept maintenance; daemon means the run was started by an automated recurring worker; backfill means the run is replaying or repairing historical Incept evidence. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_ids Field text[] Required Default: '{}'::text[] Array of loop identifiers included in a multi-loop, global, daemon, or backfill run. Required text[] column. Default: '{}'::text[]. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {math,reading} null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Field text Required Default: 'queued'::text Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Required text column. Default: 'queued'::text. CHECK: CHECK (status = ANY (ARRAY['queued'::text, 'running'::text, 'succeeded'::text, 'failed'::text, 'cancelled'::text, 'skipped'::text])). Allowed values: queued means accepted but not started; running means actively executing; succeeded means completed successfully; failed means completed with an error; cancelled means intentionally stopped before completion; skipped means deliberately not run. No enum No object relationship; this field is scalar evidence interpreted at the object grain. running null; outside allowed values: queued means accepted but not started; running means actively executing; succeeded means completed successfully; failed means completed with an error; cancelled means intentionally stopped before completion; skipped means deliberately not run. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
started_at Field timestamptz Nullable Default: none Time the run or repair attempt started. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
completed_at Field timestamptz Nullable Default: none Time the run or repair attempt reached a terminal state. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_type Field text Required Default: none Kind of actor that emitted or approved the fact, such as agent, human, system, or daemon. Required text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. agent null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_subject Field text Required Default: none Pseudonymous subject for the actor; do not store credentials, JWTs, or direct customer PII here. Required text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. agent:codex:data-dictionary-doer null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_agent_id Field text Nullable Default: none Agent identifier when the actor is an AI or automated process. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. agent-codex-data-dictionary-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_agent_model Field text Nullable Default: none Model name or version for the AI agent that produced or judged the event. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. gpt-5-codex-2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repo_url Field text Nullable Default: none Repository URL associated with the event or deployment evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
branch_name Field text Nullable Default: none Git branch associated with the event or deployment evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. platform3-148-incept-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
base_branch Field text Nullable Default: none Base branch used for comparison, PR, or landing evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. main not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
commit_sha Field text Nullable Default: none Git commit SHA tied to the event, repair, promotion, or deployment. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
worktree_path Field text Nullable Default: none Local or agent worktree path recorded as evidence; it is diagnostic and not a durable product URL. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
command Field text[] Required Default: '{}'::text[] Command or agent invocation that started the run. It is diagnostic evidence, not an executable contract for consumers. Required text[] column. Default: '{}'::text[]. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {math,reading} null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
summary Field jsonb Required Default: '{}'::jsonb Redacted summary object used for reports and checkpoint evidence. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(summary) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
updated_at Field timestamptz Required Default: now() Timestamp when this row was last updated. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_event_artifacts Event Artifacts

Pointers from ledger events to durable evidence: Supabase Storage objects, local JSON paths, GitHub URLs, Workflowy URLs, model outputs, screenshots, and generated artifacts.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(artifact_pointer_id)

Kind

table

Fields

17 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • event_id references incept.incept_event_ledger.event_id.
  • tenant_id references platform.tenant.tenant_id.
  • UNIQUE: UNIQUE (event_id, artifact_key)
  • FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id)
  • CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL)
  • CHECK: CHECK (jsonb_typeof(metadata) = 'object'::text)
  • PRIMARY KEY: PRIMARY KEY (artifact_pointer_id)
  • CHECK: CHECK (sha256 IS NULL OR sha256 ~ '^sha256:[0-9a-f]{64}$'::text)
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE UNIQUE INDEX incept_event_artifacts_event_id_artifact_key_key ON incept.incept_event_artifacts USING btree (event_id, artifact_key)
  • CREATE INDEX incept_event_artifacts_event_idx ON incept.incept_event_artifacts USING btree (event_id)
  • CREATE UNIQUE INDEX incept_event_artifacts_pkey ON incept.incept_event_artifacts USING btree (artifact_pointer_id)
  • CREATE INDEX incept_event_artifacts_source_path_idx ON incept.incept_event_artifacts USING btree (source_path)
  • CREATE INDEX incept_event_artifacts_storage_path_idx ON incept.incept_event_artifacts USING btree (storage_bucket, storage_path)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_event_artifacts where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
artifact_pointer_id Primary key uuid Required Default: gen_random_uuid() Primary identifier for one durable artifact pointer attached to a ledger event, such as a storage object, source path, report, screenshot, or generated file. Required uuid column. Default: gen_random_uuid(). PRIMARY KEY: PRIMARY KEY (artifact_pointer_id). No enum Primary key for incept.incept_event_artifacts; referenced by model-grid evidence when that evidence has a linked artifact; nullable=false. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Foreign key uuid Required Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. UNIQUE: UNIQUE (event_id, artifact_key). UNIQUE: UNIQUE (event_id, artifact_key). UNIQUE: UNIQUE (event_id, artifact_key). UNIQUE: UNIQUE (event_id, artifact_key). FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_event_artifacts rows reference one incept.incept_event_ledger.event_id; nullable=false. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_event_artifacts rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_key Field text Required Default: none Stable key for one artifact pointer within a ledger event; unique with event_id so evidence can be updated without ambiguity. Required text column. UNIQUE: UNIQUE (event_id, artifact_key). UNIQUE: UNIQUE (event_id, artifact_key). UNIQUE: UNIQUE (event_id, artifact_key). UNIQUE: UNIQUE (event_id, artifact_key). No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. repair-plan null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_kind Field text Required Default: none Kind of artifact linked to the event, such as model output, screenshot, generated file, report, or source evidence. Required text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. generated_file null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_role Field text Nullable Default: none Role the artifact played in the event, such as input, output, evidence, screenshot, repair, or promotion proof. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. evidence not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
storage_provider Field text Nullable Default: none Storage system that holds the artifact when it is not represented only by a source URL/path. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. supabase-storage not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
storage_bucket Field text Nullable Default: none Storage bucket containing the artifact when storage_provider points at object storage. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop-artifacts not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
storage_path Field text Nullable Default: none Path evidence for incept_event_artifacts. It is diagnostic unless a canonical Platform3 artifact or Content/QTI row also references it. Nullable text column. CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
external_id Field text Nullable Default: none Producer-supplied external artifact identifier when the evidence is known by a source system rather than by a Platform3 storage path. Nullable text column. CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). CHECK: CHECK (storage_path IS NOT NULL OR source_url IS NOT NULL OR source_path IS NOT NULL OR external_id IS NOT NULL). No enum Free external identifier scoped by event_id and artifact_key; no Platform3 table is the target; nullable=true. github-artifact-182763 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
media_type Field text Nullable Default: none MIME media type for the artifact payload, used by readers to render or validate evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. application/json not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
sha256 Field text Nullable Default: none sha256 digest for artifact bytes, used to prove evidence identity without storing the artifact inline. Nullable text column. CHECK: CHECK (sha256 IS NULL OR sha256 ~ '^sha256:[0-9a-f]{64}$'::text). No enum No object relationship; this field is scalar evidence interpreted at the object grain. sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
byte_size Field bigint(64) Nullable Default: none Artifact size in bytes, used for evidence validation and storage/debugging reports. Nullable bigint(64) column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 4096 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
metadata Field jsonb Required Default: '{}'::jsonb Redacted operational metadata. Do not store secrets, raw PII, JWTs, IP addresses, or user agents. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(metadata) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_quality_bars Quality Bars

Versioned quality-bar definitions observed by Incept events. Changes are represented by ledger events; this table indexes the active definitions.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(quality_bar_id, quality_bar_version)

Kind

table

Fields

12 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • event_id references incept.incept_event_ledger.event_id.
  • tenant_id references platform.tenant.tenant_id.
  • CHECK: CHECK (jsonb_typeof(definition) = 'object'::text)
  • FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id)
  • PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version)
  • CHECK: CHECK (status = ANY (ARRAY['draft'::text, 'active'::text, 'superseded'::text, 'retired'::text]))
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE INDEX incept_quality_bars_event_idx ON incept.incept_quality_bars USING btree (event_id)
  • CREATE UNIQUE INDEX incept_quality_bars_pkey ON incept.incept_quality_bars USING btree (quality_bar_id, quality_bar_version)
  • CREATE INDEX incept_quality_bars_status_idx ON incept.incept_quality_bars USING btree (status, effective_at DESC)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_quality_bars where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
quality_bar_id Primary key text Required Default: none Quality bar identifier applied to the event, evidence row, or projection. Required text column. PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. qb-platform-dd-field-coverage null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_version Primary key text Required Default: none Version of the quality bar definition used for scoring or gating. Required text column. PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). PRIMARY KEY: PRIMARY KEY (quality_bar_id, quality_bar_version). No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Foreign key uuid Required Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_quality_bars rows reference one incept.incept_event_ledger.event_id; nullable=false. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_quality_bars rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
name Field text Required Default: none Human-readable name for the Incept definition row, such as the label of a quality bar. Required text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. student-facing generated content quality bar null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Field text Required Default: 'active'::text Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Required text column. Default: 'active'::text. CHECK: CHECK (status = ANY (ARRAY['draft'::text, 'active'::text, 'superseded'::text, 'retired'::text])). Allowed values: draft means not yet active; active means usable for current evaluation; superseded means a newer row replaces this one; retired means no longer used for new work. No enum No object relationship; this field is scalar evidence interpreted at the object grain. running null; outside allowed values: draft means not yet active; active means usable for current evaluation; superseded means a newer row replaces this one; retired means no longer used for new work. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
effective_at Field timestamptz Required Default: none Time a versioned quality bar becomes active for scoring or gating. Required timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
superseded_at Field timestamptz Nullable Default: none Time a versioned quality bar is replaced by a newer definition. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
definition Field jsonb Required Default: '{}'::jsonb JSON definition for the quality bar or governed policy object. It must be versioned and tied to ledger evidence. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(definition) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_model_grid_evidence Model Grid Evidence

Typed index for model-grid evaluation evidence. The linked ledger event is canonical if this row and payload ever disagree.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(model_grid_evidence_id)

Kind

table

Fields

21 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • artifact_pointer_id references incept.incept_event_artifacts.artifact_pointer_id.
  • event_id references incept.incept_event_ledger.event_id.
  • tenant_id references platform.tenant.tenant_id.
  • FOREIGN KEY: FOREIGN KEY (artifact_pointer_id) REFERENCES incept.incept_event_artifacts(artifact_pointer_id)
  • FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id)
  • PRIMARY KEY: PRIMARY KEY (model_grid_evidence_id)
  • CHECK: CHECK (jsonb_typeof(result) = 'object'::text)
  • CHECK: CHECK (score IS NULL OR score >= 0::numeric)
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE INDEX incept_model_grid_evidence_event_idx ON incept.incept_model_grid_evidence USING btree (event_id)
  • CREATE INDEX incept_model_grid_evidence_grid_idx ON incept.incept_model_grid_evidence USING btree (grid_id, task_id, subtype_id, created_at DESC)
  • CREATE UNIQUE INDEX incept_model_grid_evidence_pkey ON incept.incept_model_grid_evidence USING btree (model_grid_evidence_id)
  • CREATE INDEX incept_model_grid_evidence_provider_idx ON incept.incept_model_grid_evidence USING btree (provider, model_name, created_at DESC)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_model_grid_evidence where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
model_grid_evidence_id Primary key text Required Default: none Primary identifier for one model-grid evidence row at the run, grid, task, subtype, provider, and model comparison grain. Required text column. PRIMARY KEY: PRIMARY KEY (model_grid_evidence_id). No enum Primary key for incept.incept_model_grid_evidence; projected by incept_model_grid_latest_v; nullable=false. mg-ev-platform3-dd-001 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Foreign key uuid Required Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_model_grid_evidence rows reference one incept.incept_event_ledger.event_id; nullable=false. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_model_grid_evidence rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
run_id Field text Nullable Default: none Soft reference to the model-grid execution run that produced this comparison evidence. Nullable text column. No enum Soft reference to a model-grid run recorded in ledger payloads or external runner state; many evidence rows may share one run_id; nullable=true. model-grid-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
grid_id Field text Nullable Default: none Soft reference to the model-grid definition or comparison grid whose cells this evidence row populates. Nullable text column. No enum Soft reference to a model-grid definition recorded in ledger payloads or source files; many evidence rows may share one grid_id; nullable=true. platform3-data-dictionary-grid not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
task_id Field text Nullable Default: none Soft reference to the individual evaluation task inside the model grid, such as generating a field description or reviewing a deliverable. Nullable text column. No enum Soft reference to a task definition inside the model-grid run; many provider/model rows may share one task_id; nullable=true. describe-incept-reference-fields not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
subtype_id Field text Nullable Default: none Soft reference to the content subtype or evaluation slice within the grid task, used to compare models on the same subtype grain. Nullable text column. No enum Soft reference to a subtype slice defined by the grid/task payload; many evidence rows may share one subtype_id; nullable=true. reference-field-docs not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
provider Field text Nullable Default: none AI provider or execution provider that produced model-grid evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. openai not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
model_name Field text Nullable Default: none Model identifier used for a generation or evaluation run. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. gpt-5-codex not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
evaluator_id Field text Nullable Default: none Identifier for the evaluator, grader, or judge configuration that produced model-grid evidence. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. rubric-judge-platform-dd not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_id Field text Nullable Default: none Quality bar identifier applied to the event, evidence row, or projection. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. qb-platform-dd-field-coverage not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_version Field text Nullable Default: none Version of the quality bar definition used for scoring or gating. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
score Field numeric Nullable Default: none Numeric score produced by an evaluator or quality gate. Nullable numeric column. CHECK: CHECK (score IS NULL OR score >= 0::numeric). No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
passed Field boolean Nullable Default: none Boolean result of a quality, model-grid, layer-health, or projection check. Nullable boolean column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
latency_ms Field integer(32) Nullable Default: none Measured latency in milliseconds for a model-grid task or evaluation. Nullable integer(32) column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
cost_usd Field numeric Nullable Default: none Estimated task cost in US dollars for model-grid comparison. Nullable numeric column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_pointer_id Foreign key uuid Nullable Default: none Optional link to the artifact pointer that stores the model output, judge trace, screenshot, or generated file behind this evidence row. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (artifact_pointer_id) REFERENCES incept.incept_event_artifacts(artifact_pointer_id). No enum Many incept_model_grid_evidence rows reference one incept.incept_event_artifacts.artifact_pointer_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
result Field jsonb Required Default: '{}'::jsonb Typed evaluation result payload for model-grid or quality evidence. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(result) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_customer_feedback Customer Feedback

Typed index for customer and GitHub-linked quality evidence that has been normalized into ledger events.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(feedback_id)

Kind

table

Fields

18 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • event_id references incept.incept_event_ledger.event_id.
  • tenant_id references platform.tenant.tenant_id.
  • FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id)
  • CHECK: CHECK (jsonb_typeof(normalized_payload) = 'object'::text AND jsonb_typeof(redacted_customer) = 'object'::text)
  • PRIMARY KEY: PRIMARY KEY (feedback_id)
  • CHECK: CHECK (status = ANY (ARRAY['open'::text, 'routed'::text, 'repairing'::text, 'resolved'::text, 'closed'::text, 'superseded'::text]))
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE UNIQUE INDEX incept_customer_feedback_evidence_uidx ON incept.incept_customer_feedback USING btree (evidence_id) WHERE (evidence_id IS NOT NULL)
  • CREATE INDEX incept_customer_feedback_loop_idx ON incept.incept_customer_feedback USING btree (loop_id, received_at DESC)
  • CREATE UNIQUE INDEX incept_customer_feedback_pkey ON incept.incept_customer_feedback USING btree (feedback_id)
  • CREATE INDEX incept_customer_feedback_status_idx ON incept.incept_customer_feedback USING btree (status, received_at DESC)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_customer_feedback where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
feedback_id Primary key text Required Default: none Primary identifier for one normalized customer, operator, or GitHub feedback item linked into the Incept evidence stream. Required text column. PRIMARY KEY: PRIMARY KEY (feedback_id). No enum Primary key for incept.incept_customer_feedback; projected by incept_customer_feedback_status_v; nullable=false. feedback-GH-148 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Foreign key uuid Required Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_customer_feedback rows reference one incept.incept_event_ledger.event_id; nullable=false. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_customer_feedback rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
evidence_id Field text Nullable Default: none Soft reference to the source evidence item that the feedback was normalized from, such as a customer audit note, issue comment, or generated report finding. Nullable text column. No enum Soft reference to source evidence recorded in ledger payloads or external systems; many feedback rows may share one evidence_id; nullable=true. evidence-platform3-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Field text Required Default: 'open'::text Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Required text column. Default: 'open'::text. CHECK: CHECK (status = ANY (ARRAY['open'::text, 'routed'::text, 'repairing'::text, 'resolved'::text, 'closed'::text, 'superseded'::text])). Allowed values: open means unresolved customer or issue evidence; routed means assigned to a repair or owner path; repairing means active correction work is underway; resolved means the underlying issue has a accepted fix; closed means no further action is currently expected; superseded means a newer row replaces this one. No enum No object relationship; this field is scalar evidence interpreted at the object grain. running null; outside allowed values: open means unresolved customer or issue evidence; routed means assigned to a repair or owner path; repairing means active correction work is underway; resolved means the underlying issue has a accepted fix; closed means no further action is currently expected; superseded means a newer row replaces this one. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_type Field text Required Default: none Type of source evidence, such as GitHub issue, customer audit, operator note, or generated report. Required text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. github_issue null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
severity Field text Nullable Default: none Severity label assigned to customer feedback or issue evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. blocking not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
expected_blocking Field boolean Nullable Default: none Boolean indicating whether the feedback is expected to block promotion or release. Nullable boolean column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_id Field text Nullable Default: none Generated or evaluated artifact identifier from the producer workflow. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. artifact-platform-dd-index-html not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
github_issue_key Field text Nullable Default: none Stable GitHub issue key used to connect feedback/status views to the external issue tracker. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. GH-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
received_at Field timestamptz Required Default: none Time the customer feedback or issue evidence was received by the governed Incept pipeline. Required timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
normalized_payload Field jsonb Required Default: '{}'::jsonb Redacted normalized JSON payload for feedback or customer evidence after source-specific parsing. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(normalized_payload) = 'object'::text AND jsonb_typeof(redacted_customer) = 'object'::text). CHECK: CHECK (jsonb_typeof(normalized_payload) = 'object'::text AND jsonb_typeof(redacted_customer) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
redacted_customer Field jsonb Required Default: '{}'::jsonb Redacted customer identity/context object. It must not contain direct PII or credentials. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(normalized_payload) = 'object'::text AND jsonb_typeof(redacted_customer) = 'object'::text). CHECK: CHECK (jsonb_typeof(normalized_payload) = 'object'::text AND jsonb_typeof(redacted_customer) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_repair_attempts Repair Attempts

Typed index for repair attempts created by loop events. Promotion acceptance remains a separate decision row linked to the attempt.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(repair_attempt_id)

Kind

table

Fields

22 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • event_id references incept.incept_event_ledger.event_id.
  • loop_run_id references incept.incept_loop_runs.loop_run_id.
  • tenant_id references platform.tenant.tenant_id.
  • FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id)
  • CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text)
  • FOREIGN KEY: FOREIGN KEY (loop_run_id) REFERENCES incept.incept_loop_runs(loop_run_id)
  • PRIMARY KEY: PRIMARY KEY (repair_attempt_id)
  • CHECK: CHECK (status = ANY (ARRAY['running'::text, 'succeeded'::text, 'failed'::text, 'rejected'::text, 'promoted'::text, 'superseded'::text]))
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE INDEX incept_repair_attempts_event_idx ON incept.incept_repair_attempts USING btree (event_id)
  • CREATE INDEX incept_repair_attempts_loop_idx ON incept.incept_repair_attempts USING btree (loop_id, started_at DESC)
  • CREATE UNIQUE INDEX incept_repair_attempts_loop_run_attempt_uidx ON incept.incept_repair_attempts USING btree (loop_run_id, loop_id, attempt_index) WHERE ((loop_run_id IS NOT NULL) AND (loop_id IS NOT NULL) AND (attempt_index IS NOT NULL))
  • CREATE UNIQUE INDEX incept_repair_attempts_pkey ON incept.incept_repair_attempts USING btree (repair_attempt_id)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_repair_attempts where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
repair_attempt_id Primary key text Required Default: none Primary identifier for one repair attempt spawned from feedback, quality evidence, or loop failure. Required text column. PRIMARY KEY: PRIMARY KEY (repair_attempt_id). No enum Primary key for incept.incept_repair_attempts; referenced by promotion decisions and progress projections; nullable=false. repair-platform3-148-a3 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Foreign key uuid Required Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_repair_attempts rows reference one incept.incept_event_ledger.event_id; nullable=false. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_repair_attempts rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Foreign key text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. FOREIGN KEY: FOREIGN KEY (loop_run_id) REFERENCES incept.incept_loop_runs(loop_run_id). No enum Many incept_repair_attempts rows reference one incept.incept_loop_runs.loop_run_id; nullable=true. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
attempt_index Field integer(32) Nullable Default: none Ordinal repair-attempt number within a run, loop, or skill repair sequence. Nullable integer(32) column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
generator Field text Nullable Default: none Generator, model, or agent process that produced a repair candidate. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. codex-exec not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Field text Required Default: 'running'::text Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Required text column. Default: 'running'::text. CHECK: CHECK (status = ANY (ARRAY['running'::text, 'succeeded'::text, 'failed'::text, 'rejected'::text, 'promoted'::text, 'superseded'::text])). Allowed values: running means actively executing; succeeded means completed successfully; failed means completed with an error; rejected means the candidate did not meet the bar; promoted means accepted into the next version path; superseded means a newer row replaces this one. No enum No object relationship; this field is scalar evidence interpreted at the object grain. running null; outside allowed values: running means actively executing; succeeded means completed successfully; failed means completed with an error; rejected means the candidate did not meet the bar; promoted means accepted into the next version path; superseded means a newer row replaces this one. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_version_id Field text Nullable Default: none Version identifier for the repaired candidate artifact, prompt, skill, or generated content proposed by this attempt. Nullable text column. No enum Soft reference to an Incept candidate version recorded in the attempt result_payload, artifact pointers, or canonical Content/QTI materialization; many repair attempts may reference one candidate version; nullable=true. candidate-version-platform-dd-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_eval_run_id Field text Nullable Default: none Evaluation-run identifier for the judge, verifier, or model-grid run that assessed this repair candidate. Nullable text column. No enum Soft reference to an evaluation run recorded in ledger payloads or model-grid evidence; many repair attempts may reference one candidate evaluation run; nullable=true. eval-run-platform-dd-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_path Field text Nullable Default: none Path evidence for incept_repair_attempts. It is diagnostic unless a canonical Platform3 artifact or Content/QTI row also references it. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
started_at Field timestamptz Nullable Default: none Time the run or repair attempt started. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
completed_at Field timestamptz Nullable Default: none Time the run or repair attempt reached a terminal state. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
baseline_score Field numeric Nullable Default: none Score value used by incept_repair_attempts; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_score Field numeric Nullable Default: none Score value used by incept_repair_attempts; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
ai_oversight Field jsonb Required Default: '{}'::jsonb JSON evidence of AI oversight, reviewer reasoning, or automated promotion review. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
feedback_summary Field jsonb Required Default: '{}'::jsonb Redacted structured summary of feedback that drove a repair attempt. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
result_payload Field jsonb Required Default: '{}'::jsonb Typed result payload for repair, promotion, or deployment evidence. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(feedback_summary) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_promotion_decisions Promotion Decisions

AI-oversight repair and promotion decisions. This records the decision index; the event ledger preserves the canonical payload.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(promotion_decision_id)

Kind

table

Fields

23 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • event_id references incept.incept_event_ledger.event_id.
  • loop_run_id references incept.incept_loop_runs.loop_run_id.
  • repair_attempt_id references incept.incept_repair_attempts.repair_attempt_id.
  • tenant_id references platform.tenant.tenant_id.
  • FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id)
  • CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text)
  • FOREIGN KEY: FOREIGN KEY (loop_run_id) REFERENCES incept.incept_loop_runs(loop_run_id)
  • PRIMARY KEY: PRIMARY KEY (promotion_decision_id)
  • FOREIGN KEY: FOREIGN KEY (repair_attempt_id) REFERENCES incept.incept_repair_attempts(repair_attempt_id)
  • CHECK: CHECK (decision_status = ANY (ARRAY['accepted'::text, 'rejected'::text, 'deferred'::text, 'landed'::text, 'landing_failed'::text, 'superseded'::text]))
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE INDEX incept_promotion_decisions_candidate_idx ON incept.incept_promotion_decisions USING btree (candidate_version_id)
  • CREATE INDEX incept_promotion_decisions_event_idx ON incept.incept_promotion_decisions USING btree (event_id)
  • CREATE INDEX incept_promotion_decisions_loop_idx ON incept.incept_promotion_decisions USING btree (loop_id, decided_at DESC)
  • CREATE UNIQUE INDEX incept_promotion_decisions_pkey ON incept.incept_promotion_decisions USING btree (promotion_decision_id)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_promotion_decisions where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
promotion_decision_id Primary key text Required Default: none Primary identifier for one AI-oversight promotion decision comparing a candidate version with the prior baseline. Required text column. PRIMARY KEY: PRIMARY KEY (promotion_decision_id). No enum Primary key for incept.incept_promotion_decisions; projected by incept_promotion_timeline_v; nullable=false. promotion-platform3-148-a3 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Foreign key uuid Required Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_promotion_decisions rows reference one incept.incept_event_ledger.event_id; nullable=false. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_promotion_decisions rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repair_attempt_id Foreign key text Nullable Default: none Repair attempt whose candidate was evaluated for promotion by this decision row. Nullable text column. FOREIGN KEY: FOREIGN KEY (repair_attempt_id) REFERENCES incept.incept_repair_attempts(repair_attempt_id). No enum Many incept_promotion_decisions rows reference one incept.incept_repair_attempts.repair_attempt_id; nullable=true. repair-platform3-148-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Foreign key text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. FOREIGN KEY: FOREIGN KEY (loop_run_id) REFERENCES incept.incept_loop_runs(loop_run_id). No enum Many incept_promotion_decisions rows reference one incept.incept_loop_runs.loop_run_id; nullable=true. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
baseline_version_id Field text Nullable Default: none Version identifier for the prior accepted artifact, skill, or generated content used as the promotion baseline. Nullable text column. No enum Soft reference to an Incept baseline version recorded in promotion evidence, artifact pointers, or canonical Content/QTI materialization; many promotion decisions may compare against one baseline version; nullable=true. baseline-version-platform-dd-a2 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_version_id Field text Nullable Default: none Version identifier for the candidate artifact, skill, or generated content being considered for promotion. Nullable text column. No enum Soft reference to an Incept candidate version recorded in promotion evidence, artifact pointers, or canonical Content/QTI materialization; many promotion decisions may evaluate one candidate version; nullable=true. candidate-version-platform-dd-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_eval_run_id Field text Nullable Default: none Evaluation-run identifier whose results support accepting, rejecting, deferring, or landing the candidate. Nullable text column. No enum Soft reference to an evaluation run recorded in ledger payloads or model-grid evidence; many promotion decisions may use one candidate evaluation run; nullable=true. eval-run-platform-dd-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
previous_best_score Field numeric Nullable Default: none Score value used by incept_promotion_decisions; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_score Field numeric Nullable Default: none Score value used by incept_promotion_decisions; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
accepted Field boolean Required Default: false Boolean promotion decision result: true means the candidate was accepted by policy or oversight. Required boolean column. Default: false. CHECK: CHECK (decision_status = ANY (ARRAY['accepted'::text, 'rejected'::text, 'deferred'::text, 'landed'::text, 'landing_failed'::text, 'superseded'::text])). Allowed values: accepted means selected by promotion policy; rejected means the candidate did not meet the bar; deferred means intentionally postponed with reason; landed means merged or deployed; landing_failed means merge/deploy failed after acceptance; superseded means a newer row replaces this one. No enum No object relationship; this field is scalar evidence interpreted at the object grain. true null; outside allowed values: accepted means selected by promotion policy; rejected means the candidate did not meet the bar; deferred means intentionally postponed with reason; landed means merged or deployed; landing_failed means merge/deploy failed after acceptance; superseded means a newer row replaces this one. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
decision_status Field text Required Default: none Status value projected by incept_promotion_decisions; allowed values and lifecycle behavior are inherited from the backing table or view definition. Required text column. CHECK: CHECK (decision_status = ANY (ARRAY['accepted'::text, 'rejected'::text, 'deferred'::text, 'landed'::text, 'landing_failed'::text, 'superseded'::text])). Allowed values: accepted means selected by promotion policy; rejected means the candidate did not meet the bar; deferred means intentionally postponed with reason; landed means merged or deployed; landing_failed means merge/deploy failed after acceptance; superseded means a newer row replaces this one. No enum No object relationship; this field is scalar evidence interpreted at the object grain. running null; outside allowed values: accepted means selected by promotion policy; rejected means the candidate did not meet the bar; deferred means intentionally postponed with reason; landed means merged or deployed; landing_failed means merge/deploy failed after acceptance; superseded means a newer row replaces this one. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
decided_at Field timestamptz Required Default: none Time a promotion or repair decision was made. Required timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_subject Field text Required Default: none Pseudonymous subject for the actor; do not store credentials, JWTs, or direct customer PII here. Required text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. agent:codex:data-dictionary-doer null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
ai_oversight Field jsonb Required Default: '{}'::jsonb JSON evidence of AI oversight, reviewer reasoning, or automated promotion review. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
decision_reason Field text Nullable Default: none Redacted reason for a promotion decision, suitable for audit and customer-facing status reports. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. candidate met the published quality bar and materialized Content/QTI rows not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployment_id Field text Nullable Default: none Deployment or landing attempt associated with an accepted promotion decision. Nullable text column. No enum Soft reference to incept.incept_deployments.deployment_id; many promotion decisions may point at one deployment when a landing batch covers several decisions; nullable=true. deploy-platform3-preview-20260625 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
result_payload Field jsonb Required Default: '{}'::jsonb Typed result payload for repair, promotion, or deployment evidence. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). CHECK: CHECK (jsonb_typeof(ai_oversight) = 'object'::text AND jsonb_typeof(result_payload) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_deployments Deployments

Deployment and landing attempts linked to promotion, repair, and release events.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(deployment_id)

Kind

table

Fields

16 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • event_id references incept.incept_event_ledger.event_id.
  • tenant_id references platform.tenant.tenant_id.
  • FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id)
  • CHECK: CHECK (jsonb_typeof(metadata) = 'object'::text)
  • PRIMARY KEY: PRIMARY KEY (deployment_id)
  • CHECK: CHECK (status = ANY (ARRAY['queued'::text, 'running'::text, 'succeeded'::text, 'failed'::text, 'cancelled'::text, 'rolled_back'::text]))
  • FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id)
  • CREATE INDEX incept_deployments_commit_idx ON incept.incept_deployments USING btree (commit_sha, deployed_at DESC)
  • CREATE INDEX incept_deployments_event_idx ON incept.incept_deployments USING btree (event_id)
  • CREATE UNIQUE INDEX incept_deployments_pkey ON incept.incept_deployments USING btree (deployment_id)
  • Typed index table for a specific Incept evidence class. The linked incept_event_ledger row is canonical if this typed index and the event payload disagree.
  • Rows are tenant-scoped Platform3 producer facts and must be read through a governed API/view path with normal auth and audit.
Example query
select * from incept.incept_deployments where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
deployment_id Primary key text Required Default: none Primary identifier for one deployment, landing, rollback, or release attempt linked to promotion and repair evidence. Required text column. PRIMARY KEY: PRIMARY KEY (deployment_id). No enum Primary key for incept.incept_deployments; soft-referenced by promotion decisions and promotion timeline projections; nullable=false. deploy-platform3-preview-20260625 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Foreign key uuid Required Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Required uuid column. FOREIGN KEY: FOREIGN KEY (event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_deployments rows reference one incept.incept_event_ledger.event_id; nullable=false. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b null; does not resolve to the canonical ledger event when a foreign key is required Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Foreign key uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (tenant_id) REFERENCES platform.tenant(tenant_id). No enum Many incept_deployments rows reference one platform.tenant.tenant_id; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
environment Field text Required Default: none Deployment environment for a deployment row, such as preview, staging, production, or rollback target. Required text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. preview null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Field text Required Default: none Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Required text column. CHECK: CHECK (status = ANY (ARRAY['queued'::text, 'running'::text, 'succeeded'::text, 'failed'::text, 'cancelled'::text, 'rolled_back'::text])). Allowed values: queued means accepted but not started; running means actively executing; succeeded means completed successfully; failed means completed with an error; cancelled means intentionally stopped before completion; rolled_back means a deployment or promotion was reverted. No enum No object relationship; this field is scalar evidence interpreted at the object grain. running null; outside allowed values: queued means accepted but not started; running means actively executing; succeeded means completed successfully; failed means completed with an error; cancelled means intentionally stopped before completion; rolled_back means a deployment or promotion was reverted. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployed_at Field timestamptz Nullable Default: none Time deployment evidence says the candidate was deployed or rolled back. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repo_url Field text Nullable Default: none Repository URL associated with the event or deployment evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
branch_name Field text Nullable Default: none Git branch associated with the event or deployment evidence. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. platform3-148-incept-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
commit_sha Field text Nullable Default: none Git commit SHA tied to the event, repair, promotion, or deployment. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
pull_request_url Field text Nullable Default: none Pull request URL linked to a repair, promotion, or deployment event. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployment_url Field text Nullable Default: none URL evidence for incept_deployments. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_subject Field text Nullable Default: none Pseudonymous subject for the actor; do not store credentials, JWTs, or direct customer PII here. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. agent:codex:data-dictionary-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
metadata Field jsonb Required Default: '{}'::jsonb Redacted operational metadata. Do not store secrets, raw PII, JWTs, IP addresses, or user agents. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(metadata) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Field timestamptz Required Default: now() Timestamp when this row was inserted into the governed Incept schema. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed table

incept.incept_projection_checkpoints Projection Checkpoints

Materialization checkpoints for ledger-backed projections. The first supported projection is data/generation-loop-progress-report.json.

Lifecycle

Tenant-scoped producer fact or typed index row. Ledger facts are append-only; typed index rows preserve queryable evidence while the event ledger remains canonical on disagreement.

Primary key / grain

(projection_name, projection_version, checkpoint_key)

Kind

table

Fields

12 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • last_event_id references incept.incept_event_ledger.event_id.
  • CHECK: CHECK (jsonb_typeof(summary) = 'object'::text AND jsonb_typeof(watermark) = 'object'::text)
  • FOREIGN KEY: FOREIGN KEY (last_event_id) REFERENCES incept.incept_event_ledger(event_id)
  • PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key)
  • CHECK: CHECK (status = ANY (ARRAY['current'::text, 'stale'::text, 'failed'::text, 'backfilling'::text]))
  • CREATE INDEX incept_projection_checkpoints_materialized_idx ON incept.incept_projection_checkpoints USING btree (materialized_at DESC)
  • CREATE UNIQUE INDEX incept_projection_checkpoints_pkey ON incept.incept_projection_checkpoints USING btree (projection_name, projection_version, checkpoint_key)
  • Checkpoint rows record materialized projection progress. They do not replace the ledger; they prove which event watermark produced a report or view input.
  • Progress projections must be reproducible from ledger rows plus checkpoint rows.
Example query
select * from incept.incept_projection_checkpoints where tenant_id = $1 order by created_at desc limit 50;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
projection_name Primary key text Required Default: none Name of the materialized projection tracked by a checkpoint. Required text column. PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). No enum No object relationship; this field is scalar evidence interpreted at the object grain. generation-loop-progress-report null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
projection_version Primary key integer(32) Required Default: none Version of the projection contract used to materialize checkpointed output. Required integer(32) column. PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). No enum No object relationship; this field is scalar evidence interpreted at the object grain. 3 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
checkpoint_key Primary key text Required Default: 'default'::text Key identifying the checkpoint instance within a projection/version. Required text column. Default: 'default'::text. PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). PRIMARY KEY: PRIMARY KEY (projection_name, projection_version, checkpoint_key). No enum Free or soft identifier with no enforced foreign key in this catalog snapshot; scope and target are stated by the field meaning and object purpose. generation-loop-progress-report:2026-06-25 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
last_event_id Foreign key uuid Nullable Default: none Last canonical ledger event included in this projection checkpoint watermark. Nullable uuid column. FOREIGN KEY: FOREIGN KEY (last_event_id) REFERENCES incept.incept_event_ledger(event_id). No enum Many incept_projection_checkpoints rows may reference one incept.incept_event_ledger.event_id as their last included event; nullable=true. 0df95d01-829f-4d0e-8ed7-a8916dd2c9d4 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
last_event_recorded_at Field timestamptz Nullable Default: none Recorded timestamp of the last ledger event included in a projection checkpoint. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
last_event_occurred_at Field timestamptz Nullable Default: none Occurred timestamp of the last ledger event included in a projection checkpoint. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_event_count Field bigint(64) Required Default: 0 Number of source ledger events included in a projection checkpoint. Required bigint(64) column. Default: 0. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 1 null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
materialized_at Field timestamptz Required Default: now() Time a projection checkpoint was materialized. Required timestamptz column. Default: now(). Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. No enum No object relationship; this field is scalar evidence interpreted at the object grain. 2026-06-25T22:18:23Z null Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
output_path Field text Nullable Default: none Path evidence for incept_projection_checkpoints. It is diagnostic unless a canonical Platform3 artifact or Content/QTI row also references it. Nullable text column. No enum No object relationship; this field is scalar evidence interpreted at the object grain. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Field text Required Default: 'current'::text Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Required text column. Default: 'current'::text. CHECK: CHECK (status = ANY (ARRAY['current'::text, 'stale'::text, 'failed'::text, 'backfilling'::text])). Allowed values: current means projection is up to date at its watermark; stale means projection lags the ledger; failed means completed with an error; backfilling means projection is rebuilding historical rows. No enum No object relationship; this field is scalar evidence interpreted at the object grain. running null; outside allowed values: current means projection is up to date at its watermark; stale means projection lags the ledger; failed means completed with an error; backfilling means projection is rebuilding historical rows. Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
summary Field jsonb Required Default: '{}'::jsonb Redacted summary object used for reports and checkpoint evidence. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(summary) = 'object'::text AND jsonb_typeof(watermark) = 'object'::text). CHECK: CHECK (jsonb_typeof(summary) = 'object'::text AND jsonb_typeof(watermark) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
watermark Field jsonb Required Default: '{}'::jsonb Projection watermark describing which ledger facts were included. Required jsonb column. Default: '{}'::jsonb. CHECK: CHECK (jsonb_typeof(summary) = 'object'::text AND jsonb_typeof(watermark) = 'object'::text). CHECK: CHECK (jsonb_typeof(summary) = 'object'::text AND jsonb_typeof(watermark) = 'object'::text). Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. No enum No object relationship; this field is scalar evidence interpreted at the object grain. {"source":"incept","redacted":true} null; contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed view

incept.incept_regeneration_event_timeline_v Regeneration Event Timeline view

Flat event timeline for regeneration, evaluation, repair, promotion, deployment, and supervisor report reconstruction.

Lifecycle

Read-only projection over governed Incept rows. It is rebuilt from backing ledger/index facts; consumers must not persist a private copy as product truth.

Primary key / grain

Read-only projection grain; see projection rule and view definition.

Kind

view

Fields

35 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • Read-only projection over the governed Incept tables; relationships are inherited from the view definition.
  • Read-only view; constraints are inherited from source tables.
  • No physical index; query plans use the underlying source tables.
  • Read-only Platform3 projection: consumers may read this shape through the governed API/view path, but may not write to it.
  • The view definition below is the projection rule. Raw-DB readers must apply the same tenant/auth/audit guardrails as the API path before returning rows.
  • If a projected value disagrees with its source ledger row, the ledger row and linked typed index tables are the backing facts to reconcile.
Example query and view definition
select * from incept.incept_regeneration_event_timeline_v where tenant_id = $1 order by recorded_at desc limit 50;
 SELECT e.event_id,
    e.tenant_id,
    e.event_type,
    e.event_schema_version,
    e.idempotency_key,
    e.operation_id,
    e.request_id,
    e.trace_id,
    e.correlation_id,
    e.loop_run_id,
    lr.event_config_id,
    lr.trigger_name,
    COALESCE(e.loop_id, NULLIF(array_to_string(lr.loop_ids, ','::text), ''::text)) AS loop_scope,
    e.loop_id,
    e.skill_id,
    e.content_type,
    e.content_subtype,
    e.quality_bar_id,
    e.quality_bar_version,
    e.actor_type,
    e.actor_subject,
    e.actor_agent_id,
    e.actor_agent_model,
    e.repo_url,
    e.branch_name,
    e.base_branch,
    e.commit_sha,
    e.worktree_path,
    e.source_system,
    e.source_url,
    e.source_path,
    e.occurred_at,
    e.recorded_at,
    e.payload,
    e.redacted_metadata
   FROM incept.incept_event_ledger e
     LEFT JOIN incept.incept_loop_runs lr ON lr.loop_run_id = e.loop_run_id;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
event_id Projected field uuid Nullable Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Projected field uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_type Projected field text Nullable Default: none Governed event label that names what happened in the generation loop. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. incept.producer_surface.registered not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_schema_version Projected field integer(32) Nullable Default: none Version of the payload contract used by this event. Nullable integer(32) column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
idempotency_key Projected field text Nullable Default: none Deterministic writer key that prevents duplicate canonical events for the same producer operation. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. incept-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
operation_id Projected field text Nullable Default: none Stable operation name used for audit, idempotency, and support correlation. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. incept.producer_surface.register not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
request_id Projected field text Nullable Default: none Request-instance identifier returned to callers and used in support/debug correlation. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. req_20260625_148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
trace_id Projected field text Nullable Default: none End-to-end trace identifier shared with logs, Problems, and audit rows. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. trace_20260625_148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
correlation_id Projected field text Nullable Default: none Cross-event correlation key for related generation, repair, promotion, and deployment facts. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. corr-platform3-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Projected field text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_config_id Projected field text Nullable Default: none Projected run-configuration id from incept_loop_runs, used to group timeline rows by the schedule, prompt set, or operator profile that launched them. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_loop_runs.event_config_id; soft reference to an Incept runner configuration outside this catalog snapshot; nullable=true. event-config-platform3-nightly not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
trigger_name Projected field text Nullable Default: none Named trigger that started the loop run, such as daemon schedule, manual operator run, issue triage, or backfill. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. manual_repair not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_scope Projected field text Nullable Default: none Projected run scope used by timeline views to distinguish single-loop events from global, daemon, or backfill events. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Projected field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Projected field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_type Projected field text Nullable Default: none Generated artifact type, such as lesson, question, script, or report component. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_subtype Projected field text Nullable Default: none More specific generated artifact subtype used for quality grids and model comparisons. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. mastery_gate_question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_id Projected field text Nullable Default: none Quality bar identifier applied to the event, evidence row, or projection. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. qb-platform-dd-field-coverage not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_version Projected field text Nullable Default: none Version of the quality bar definition used for scoring or gating. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_type Projected field text Nullable Default: none Kind of actor that emitted or approved the fact, such as agent, human, system, or daemon. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. agent not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_subject Projected field text Nullable Default: none Pseudonymous subject for the actor; do not store credentials, JWTs, or direct customer PII here. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. agent:codex:data-dictionary-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_agent_id Projected field text Nullable Default: none Agent identifier when the actor is an AI or automated process. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. agent-codex-data-dictionary-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_agent_model Projected field text Nullable Default: none Model name or version for the AI agent that produced or judged the event. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. gpt-5-codex-2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repo_url Projected field text Nullable Default: none Repository URL associated with the event or deployment evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
branch_name Projected field text Nullable Default: none Git branch associated with the event or deployment evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-148-incept-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
base_branch Projected field text Nullable Default: none Base branch used for comparison, PR, or landing evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. main not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
commit_sha Projected field text Nullable Default: none Git commit SHA tied to the event, repair, promotion, or deployment. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
worktree_path Projected field text Nullable Default: none Local or agent worktree path recorded as evidence; it is diagnostic and not a durable product URL. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_system Projected field text Nullable Default: none System that produced the evidence, such as GitHub, Workflowy, agent runner, deployment provider, or local backfill. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. github not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Projected field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Projected field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
occurred_at Projected field timestamptz Nullable Default: none Time the underlying event happened. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
recorded_at Projected field timestamptz Nullable Default: none Time Platform3 recorded the event. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
payload Projected field jsonb Nullable Default: none Typed event payload. The event schema version defines required keys; direct credentials, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
redacted_metadata Projected field jsonb Nullable Default: none Small redacted operational metadata such as counts, hashes, timings, source paths, or summary labels. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed view

incept.incept_progress_projection_input_v Progress Projection Input view

Normalized input for rebuilding the generation-loop progress projection from ledger facts.

Lifecycle

Read-only projection over governed Incept rows. It is rebuilt from backing ledger/index facts; consumers must not persist a private copy as product truth.

Primary key / grain

Read-only projection grain; see projection rule and view definition.

Kind

view

Fields

22 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • Read-only projection over the governed Incept tables; relationships are inherited from the view definition.
  • Read-only view; constraints are inherited from source tables.
  • No physical index; query plans use the underlying source tables.
  • Read-only Platform3 projection: consumers may read this shape through the governed API/view path, but may not write to it.
  • The view definition below is the base projection rule. The Platform API joins it to incept.incept_event_ledger for tenant scope, contract/projection filters, and the redacted payload details needed by customer progress consumers.
  • The Platform API exposes trafficClass from the ledger payload using incept_traffic_class values: customer, goal-run, or self-test. Missing legacy payload values default to customer; new owner-directed materialization runs must write goal-run, and loop self-tests must write self-test.
  • For contractId=incept-customer-progress-v1 and projectionName=generation-loop-progress-report, the Platform API must expose enough event and payload details to compute current rows, titles, blocking reasons, capability numerator/denominator, accuracy numerator/denominator, held-out numerator/denominator, and score fields without direct SUPABASE_DB_URL access.
  • For contractId=incept-customer-generation-ledger-v1, the same Platform API must expose redacted scope and repair evidence: subject, grade level, content type/subtype, dimension vector, status, failure reason, feedback/feedback summary, failed check ids, reviewer confidence, accuracy numerator/denominator, and score fields; inline API reads of this raw repair-evidence contract must be filtered and bounded before payload details are extracted.
  • Headline Accuracy for customer progress pages counts only trafficClass=customer rows; goal-run and self-test rows remain available through the same API as drilldown lanes.
  • If a projected value disagrees with its source ledger row, the ledger row and linked typed index tables are the backing facts to reconcile.
Example query and view definition
select * from incept.incept_progress_projection_input_v where tenant_id = $1 order by recorded_at desc limit 50;
 SELECT e.event_id,
    e.loop_run_id,
    e.loop_id,
    e.skill_id,
    e.content_type,
    e.content_subtype,
    e.quality_bar_id,
    e.quality_bar_version,
    e.event_type,
    e.occurred_at,
    e.recorded_at,
    e.payload ->> 'status'::text AS event_status,
    e.payload ->> 'projectionStatus'::text AS projection_status,
        CASE
            WHEN (e.payload ->> 'currentScore'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (e.payload ->> 'currentScore'::text)::numeric
            ELSE NULL::numeric
        END AS current_score,
        CASE
            WHEN (e.payload ->> 'targetScore'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (e.payload ->> 'targetScore'::text)::numeric
            ELSE NULL::numeric
        END AS target_score,
        CASE
            WHEN lower(e.payload ->> 'customerAvailable'::text) = ANY (ARRAY['true'::text, 'false'::text]) THEN (e.payload ->> 'customerAvailable'::text)::boolean
            ELSE NULL::boolean
        END AS customer_available,
        CASE
            WHEN lower(e.payload ->> 'qualityCleared'::text) = ANY (ARRAY['true'::text, 'false'::text]) THEN (e.payload ->> 'qualityCleared'::text)::boolean
            ELSE NULL::boolean
        END AS quality_cleared,
    pd.accepted AS promotion_accepted,
    pd.candidate_version_id AS promoted_version_id,
    pd.candidate_score AS promoted_score,
    ra.repair_attempt_id,
    ra.status AS repair_status
   FROM incept.incept_event_ledger e
     LEFT JOIN incept.incept_promotion_decisions pd ON pd.event_id = e.event_id
     LEFT JOIN incept.incept_repair_attempts ra ON ra.event_id = e.event_id
  WHERE e.event_type = ANY (ARRAY['loop.run.started'::text, 'loop.run.completed'::text, 'evaluation.completed'::text, 'quality_bar.evaluated'::text, 'quality_target.missed'::text, 'quality_target.cleared'::text, 'repair.attempt.started'::text, 'repair.attempt.completed'::text, 'promotion.decision.recorded'::text, 'deployment.completed'::text]);

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
event_id Projected field uuid Nullable Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Projected field text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Projected field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Projected field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_type Projected field text Nullable Default: none Generated artifact type, such as lesson, question, script, or report component. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_subtype Projected field text Nullable Default: none More specific generated artifact subtype used for quality grids and model comparisons. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. mastery_gate_question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_id Projected field text Nullable Default: none Quality bar identifier applied to the event, evidence row, or projection. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. qb-platform-dd-field-coverage not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_version Projected field text Nullable Default: none Version of the quality bar definition used for scoring or gating. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_type Projected field text Nullable Default: none Governed event label that names what happened in the generation loop. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. incept.producer_surface.registered not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
occurred_at Projected field timestamptz Nullable Default: none Time the underlying event happened. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
recorded_at Projected field timestamptz Nullable Default: none Time Platform3 recorded the event. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_status Projected field text Nullable Default: none Status value projected by incept_progress_projection_input_v; allowed values and lifecycle behavior are inherited from the backing table or view definition. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
projection_status Projected field text Nullable Default: none Status value projected by incept_progress_projection_input_v; allowed values and lifecycle behavior are inherited from the backing table or view definition. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
current_score Projected field numeric Nullable Default: none Score value used by incept_progress_projection_input_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
target_score Projected field numeric Nullable Default: none Score value used by incept_progress_projection_input_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
customer_available Projected field boolean Nullable Default: none Boolean projection flag indicating whether generated output is available to the customer-facing path. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_cleared Projected field boolean Nullable Default: none Boolean projection flag indicating whether the quality bar cleared for the row or content slice. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
promotion_accepted Projected field boolean Nullable Default: none Boolean projection flag indicating whether a promotion decision accepted the candidate. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
promoted_version_id Projected field text Nullable Default: none Projected version id that was accepted or made customer-available for progress reporting. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only soft reference to the promoted candidate version from promotion/result payload evidence; nullable=true. candidate-version-platform-dd-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
promoted_score Projected field numeric Nullable Default: none Score value used by incept_progress_projection_input_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repair_attempt_id Projected field text Nullable Default: none Projected repair attempt contributing the current progress status for the loop, skill, content type, or quality bar grain. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_repair_attempts.repair_attempt_id where repair evidence is present; many projection rows may reference one repair attempt; nullable=true. repair-platform3-148-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repair_status Projected field text Nullable Default: none Status value projected by incept_progress_projection_input_v; allowed values and lifecycle behavior are inherited from the backing table or view definition. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed view

incept.incept_quality_grid_fact_v Quality Grid Fact view

Quality grid fact view by skill, content type, subtype, subject, grade, and quality bar.

Lifecycle

Read-only projection over governed Incept rows. It is rebuilt from backing ledger/index facts; consumers must not persist a private copy as product truth.

Primary key / grain

Read-only projection grain; see projection rule and view definition.

Kind

view

Fields

26 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • Read-only projection over the governed Incept tables; relationships are inherited from the view definition.
  • Read-only view; constraints are inherited from source tables.
  • No physical index; query plans use the underlying source tables.
  • Read-only Platform3 projection: consumers may read this shape through the governed API/view path, but may not write to it.
  • The view definition below is the projection rule. Raw-DB readers must apply the same tenant/auth/audit guardrails as the API path before returning rows.
  • If a projected value disagrees with its source ledger row, the ledger row and linked typed index tables are the backing facts to reconcile.
Example query and view definition
select * from incept.incept_quality_grid_fact_v where tenant_id = $1 order by recorded_at desc limit 50;
 SELECT event_id,
    loop_run_id,
    loop_id,
    skill_id,
    content_type,
    content_subtype,
    quality_bar_id,
    quality_bar_version,
    COALESCE(payload ->> 'subject'::text, payload #>> '{dimensionVector,subject}'::text[]) AS subject,
    COALESCE(payload ->> 'gradeLevel'::text, payload #>> '{dimensionVector,gradeLevel}'::text[]) AS grade_level,
    COALESCE(payload ->> 'inputRangeId'::text, payload #>> '{inputRange,id}'::text[]) AS input_range_id,
        CASE
            WHEN (payload ->> 'strictQualityScore'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (payload ->> 'strictQualityScore'::text)::numeric
            ELSE NULL::numeric
        END AS strict_quality_score,
        CASE
            WHEN (payload ->> 'progressScore'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (payload ->> 'progressScore'::text)::numeric
            ELSE NULL::numeric
        END AS progress_score,
        CASE
            WHEN (payload ->> 'targetScore'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (payload ->> 'targetScore'::text)::numeric
            ELSE NULL::numeric
        END AS target_score,
        CASE
            WHEN (payload ->> 'targetPassRate'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (payload ->> 'targetPassRate'::text)::numeric
            ELSE NULL::numeric
        END AS target_pass_rate,
        CASE
            WHEN (payload ->> 'passRate'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (payload ->> 'passRate'::text)::numeric
            ELSE NULL::numeric
        END AS pass_rate,
        CASE
            WHEN lower(payload ->> 'qualityCleared'::text) = ANY (ARRAY['true'::text, 'false'::text]) THEN (payload ->> 'qualityCleared'::text)::boolean
            ELSE NULL::boolean
        END AS quality_cleared,
        CASE
            WHEN lower(payload ->> 'customerAvailable'::text) = ANY (ARRAY['true'::text, 'false'::text]) THEN (payload ->> 'customerAvailable'::text)::boolean
            ELSE NULL::boolean
        END AS customer_available,
        CASE
            WHEN lower(payload ->> 'quarantined'::text) = ANY (ARRAY['true'::text, 'false'::text]) THEN (payload ->> 'quarantined'::text)::boolean
            ELSE NULL::boolean
        END AS quarantined,
    payload ->> 'availabilityStatus'::text AS availability_status,
    payload ->> 'acceptableReason'::text AS acceptable_reason,
    occurred_at,
    recorded_at,
    source_path,
    source_url,
    payload
   FROM incept.incept_event_ledger e
  WHERE event_type = ANY (ARRAY['evaluation.completed'::text, 'quality_bar.evaluated'::text, 'quality_target.missed'::text, 'quality_target.cleared'::text, 'customer_audit.evaluated'::text, 'runtime_matrix.evaluated'::text, 'canonical_visual_grid.evaluated'::text]);

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
event_id Projected field uuid Nullable Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Projected field text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Projected field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Projected field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_type Projected field text Nullable Default: none Generated artifact type, such as lesson, question, script, or report component. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
content_subtype Projected field text Nullable Default: none More specific generated artifact subtype used for quality grids and model comparisons. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. mastery_gate_question not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_id Projected field text Nullable Default: none Quality bar identifier applied to the event, evidence row, or projection. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. qb-platform-dd-field-coverage not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_version Projected field text Nullable Default: none Version of the quality bar definition used for scoring or gating. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
subject Projected field text Nullable Default: none Subject dimension used by quality-grid facts. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. math not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
grade_level Projected field text Nullable Default: none Grade-level dimension used by quality-grid facts. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
input_range_id Projected field text Nullable Default: none Identifier for the input range, cohort, or fixture slice used when calculating this quality-grid fact. Nullable text column. Projected read-only field; do not write directly to this view. No enum Free identifier scoped by grid dimensions and ledger event; no Platform3 table is the target; nullable=true. range-platform-dd-incept-fields not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
strict_quality_score Projected field numeric Nullable Default: none Score value used by incept_quality_grid_fact_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
progress_score Projected field numeric Nullable Default: none Score value used by incept_quality_grid_fact_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
target_score Projected field numeric Nullable Default: none Score value used by incept_quality_grid_fact_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
target_pass_rate Projected field numeric Nullable Default: none Target pass rate required by the quality bar or progress projection. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 0.95 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
pass_rate Projected field numeric Nullable Default: none Observed pass rate for the quality-grid fact. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 0.97 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_cleared Projected field boolean Nullable Default: none Boolean projection flag indicating whether the quality bar cleared for the row or content slice. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
customer_available Projected field boolean Nullable Default: none Boolean projection flag indicating whether generated output is available to the customer-facing path. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quarantined Projected field boolean Nullable Default: none Boolean flag indicating generated output is withheld from customer availability. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
availability_status Projected field text Nullable Default: none Status value projected by incept_quality_grid_fact_v; allowed values and lifecycle behavior are inherited from the backing table or view definition. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
acceptable_reason Projected field text Nullable Default: none Redacted reason explaining why a quality/progress state is acceptable or not acceptable. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. quality bar passed with two independent reviewers not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
occurred_at Projected field timestamptz Nullable Default: none Time the underlying event happened. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
recorded_at Projected field timestamptz Nullable Default: none Time Platform3 recorded the event. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Projected field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Projected field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
payload Projected field jsonb Nullable Default: none Typed event payload. The event schema version defines required keys; direct credentials, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed view

incept.incept_model_grid_latest_v Model Grid Latest view

Latest model-grid evidence per grid/task/subtype/provider/model for side-by-side comparison reports.

Lifecycle

Read-only projection over governed Incept rows. It is rebuilt from backing ledger/index facts; consumers must not persist a private copy as product truth.

Primary key / grain

Read-only projection grain; see projection rule and view definition.

Kind

view

Fields

22 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • Read-only projection over the governed Incept tables; relationships are inherited from the view definition.
  • Read-only view; constraints are inherited from source tables.
  • No physical index; query plans use the underlying source tables.
  • Read-only Platform3 projection: consumers may read this shape through the governed API/view path, but may not write to it.
  • The view definition below is the projection rule. Raw-DB readers must apply the same tenant/auth/audit guardrails as the API path before returning rows.
  • If a projected value disagrees with its source ledger row, the ledger row and linked typed index tables are the backing facts to reconcile.
Example query and view definition
select * from incept.incept_model_grid_latest_v where tenant_id = $1 order by recorded_at desc limit 50;
 SELECT model_grid_evidence_id,
    event_id,
    tenant_id,
    run_id,
    grid_id,
    task_id,
    subtype_id,
    provider,
    model_name,
    evaluator_id,
    quality_bar_id,
    quality_bar_version,
    score,
    passed,
    latency_ms,
    cost_usd,
    artifact_pointer_id,
    source_path,
    source_url,
    result,
    created_at,
    recency_rank
   FROM ( SELECT m.model_grid_evidence_id,
            m.event_id,
            m.tenant_id,
            m.run_id,
            m.grid_id,
            m.task_id,
            m.subtype_id,
            m.provider,
            m.model_name,
            m.evaluator_id,
            m.quality_bar_id,
            m.quality_bar_version,
            m.score,
            m.passed,
            m.latency_ms,
            m.cost_usd,
            m.artifact_pointer_id,
            m.source_path,
            m.source_url,
            m.result,
            m.created_at,
            row_number() OVER (PARTITION BY (COALESCE(m.grid_id, ''::text)), (COALESCE(m.task_id, ''::text)), (COALESCE(m.subtype_id, ''::text)), (COALESCE(m.provider, ''::text)), (COALESCE(m.model_name, ''::text)) ORDER BY m.created_at DESC, m.model_grid_evidence_id DESC) AS recency_rank
           FROM incept.incept_model_grid_evidence m) ranked
  WHERE recency_rank = 1;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
model_grid_evidence_id Projected field text Nullable Default: none Projected latest model-grid evidence row id for this grid, task, subtype, provider, and model grain. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_model_grid_evidence.model_grid_evidence_id; one latest row per grid/task/subtype/provider/model after recency ranking; nullable=true. mg-ev-platform3-dd-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Projected field uuid Nullable Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
tenant_id Projected field uuid Nullable Default: none Platform tenant that owns this Incept fact and scopes API/view readback. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 does not match the authenticated Platform3 tenant scope Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
run_id Projected field text Nullable Default: none Projected model-grid execution run id for the latest evidence row at this comparison grain. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_model_grid_evidence.run_id; soft reference to model-grid run evidence; nullable=true. model-grid-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
grid_id Projected field text Nullable Default: none Projected model-grid definition id for the latest evidence row. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_model_grid_evidence.grid_id; soft reference to a grid definition in ledger/source evidence; nullable=true. platform3-data-dictionary-grid not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
task_id Projected field text Nullable Default: none Projected model-grid task id for the latest evidence row. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_model_grid_evidence.task_id; soft reference to a task definition in ledger/source evidence; nullable=true. describe-incept-reference-fields not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
subtype_id Projected field text Nullable Default: none Projected subtype slice for the latest model-grid evidence row. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_model_grid_evidence.subtype_id; soft reference to a subtype slice in grid evidence; nullable=true. reference-field-docs not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
provider Projected field text Nullable Default: none AI provider or execution provider that produced model-grid evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. openai not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
model_name Projected field text Nullable Default: none Model identifier used for a generation or evaluation run. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. gpt-5-codex not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
evaluator_id Projected field text Nullable Default: none Identifier for the evaluator, grader, or judge configuration that produced model-grid evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. rubric-judge-platform-dd not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_id Projected field text Nullable Default: none Quality bar identifier applied to the event, evidence row, or projection. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. qb-platform-dd-field-coverage not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
quality_bar_version Projected field text Nullable Default: none Version of the quality bar definition used for scoring or gating. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
score Projected field numeric Nullable Default: none Numeric score produced by an evaluator or quality gate. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
passed Projected field boolean Nullable Default: none Boolean result of a quality, model-grid, layer-health, or projection check. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
latency_ms Projected field integer(32) Nullable Default: none Measured latency in milliseconds for a model-grid task or evaluation. Nullable integer(32) column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
cost_usd Projected field numeric Nullable Default: none Estimated task cost in US dollars for model-grid comparison. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_pointer_id Projected field uuid Nullable Default: none Projected artifact pointer id for the latest model-grid output or judge evidence. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_model_grid_evidence.artifact_pointer_id; many latest rows may reference one incept_event_artifacts row; nullable=true. 0d4ce2f4-1c42-4f3c-9f0d-03fb7f5271d3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Projected field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Projected field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
result Projected field jsonb Nullable Default: none Typed evaluation result payload for model-grid or quality evidence. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
created_at Projected field timestamptz Nullable Default: none Timestamp when this row was inserted into the governed Incept schema. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
recency_rank Projected field bigint(64) Nullable Default: none Rank within the latest-model-grid view; rank 1 is the most recent evidence for that grid/task/subtype/provider/model grain. Nullable bigint(64) column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed view

incept.incept_customer_feedback_status_v Customer Feedback Status view

Customer audit and customer feedback status view with GitHub issue links.

Lifecycle

Read-only projection over governed Incept rows. It is rebuilt from backing ledger/index facts; consumers must not persist a private copy as product truth.

Primary key / grain

Read-only projection grain; see projection rule and view definition.

Kind

view

Fields

20 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • Read-only projection over the governed Incept tables; relationships are inherited from the view definition.
  • Read-only view; constraints are inherited from source tables.
  • No physical index; query plans use the underlying source tables.
  • Read-only Platform3 projection: consumers may read this shape through the governed API/view path, but may not write to it.
  • The view definition below is the projection rule. Raw-DB readers must apply the same tenant/auth/audit guardrails as the API path before returning rows.
  • If a projected value disagrees with its source ledger row, the ledger row and linked typed index tables are the backing facts to reconcile.
Example query and view definition
select * from incept.incept_customer_feedback_status_v where tenant_id = $1 order by recorded_at desc limit 50;
 SELECT cf.feedback_id,
    cf.evidence_id,
    cf.status,
    cf.source_type,
    cf.severity,
    cf.expected_blocking,
    cf.skill_id,
    cf.loop_id,
    cf.artifact_id,
    cf.github_issue_key,
    eil.external_system,
    eil.repo,
    eil.issue_number,
    eil.url AS issue_url,
    cf.received_at,
    cf.source_path,
    cf.source_url,
    cf.normalized_payload,
    cf.redacted_customer,
    cf.event_id
   FROM incept.incept_customer_feedback cf
     LEFT JOIN incept.incept_external_issue_links eil ON eil.external_issue_key = cf.github_issue_key;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
feedback_id Projected field text Nullable Default: none Projected feedback row id used to join customer-feedback status back to normalized source evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_customer_feedback.feedback_id; one status row per feedback item after issue-link joins; nullable=true. feedback-GH-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
evidence_id Projected field text Nullable Default: none Projected source evidence id for the feedback item. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_customer_feedback.evidence_id; soft reference to source evidence; nullable=true. evidence-platform3-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Projected field text Nullable Default: none Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_type Projected field text Nullable Default: none Type of source evidence, such as GitHub issue, customer audit, operator note, or generated report. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. github_issue not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
severity Projected field text Nullable Default: none Severity label assigned to customer feedback or issue evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. blocking not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
expected_blocking Projected field boolean Nullable Default: none Boolean indicating whether the feedback is expected to block promotion or release. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Projected field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Projected field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
artifact_id Projected field text Nullable Default: none Generated or evaluated artifact identifier from the producer workflow. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. artifact-platform-dd-index-html not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
github_issue_key Projected field text Nullable Default: none Stable GitHub issue key used to connect feedback/status views to the external issue tracker. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. GH-148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
external_system Projected field text Nullable Default: none External tracker or system linked to the Incept evidence, such as GitHub. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. github not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
repo Projected field text Nullable Default: none Repository owner/name associated with an external issue or source evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. andymontgomery-byte/platform3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
issue_number Projected field integer(32) Nullable Default: none Numeric issue identifier in the external tracker. Nullable integer(32) column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 148 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
issue_url Projected field text Nullable Default: none URL evidence for incept_customer_feedback_status_v. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
received_at Projected field timestamptz Nullable Default: none Time the customer feedback or issue evidence was received by the governed Incept pipeline. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Projected field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Projected field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
normalized_payload Projected field jsonb Nullable Default: none Redacted normalized JSON payload for feedback or customer evidence after source-specific parsing. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
redacted_customer Projected field jsonb Nullable Default: none Redacted customer identity/context object. It must not contain direct PII or credentials. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Projected field uuid Nullable Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed view

incept.incept_layer_health_v Layer Health view

Layer health and five-layer supervisor status facts for owner/manager reporting.

Lifecycle

Read-only projection over governed Incept rows. It is rebuilt from backing ledger/index facts; consumers must not persist a private copy as product truth.

Primary key / grain

Read-only projection grain; see projection rule and view definition.

Kind

view

Fields

16 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • Read-only projection over the governed Incept tables; relationships are inherited from the view definition.
  • Read-only view; constraints are inherited from source tables.
  • No physical index; query plans use the underlying source tables.
  • Read-only Platform3 projection: consumers may read this shape through the governed API/view path, but may not write to it.
  • The view definition below is the projection rule. Raw-DB readers must apply the same tenant/auth/audit guardrails as the API path before returning rows.
  • If a projected value disagrees with its source ledger row, the ledger row and linked typed index tables are the backing facts to reconcile.
Example query and view definition
select * from incept.incept_layer_health_v where tenant_id = $1 order by recorded_at desc limit 50;
 SELECT event_id,
    loop_run_id,
    event_type,
    COALESCE(payload ->> 'layerId'::text, payload ->> 'ownerLayer'::text) AS layer_id,
    COALESCE(payload ->> 'ownerId'::text, payload ->> 'primaryOwner'::text) AS owner_id,
    COALESCE(payload ->> 'managerId'::text, payload ->> 'factoryManager'::text) AS manager_id,
    payload ->> 'status'::text AS status,
        CASE
            WHEN lower(payload ->> 'passed'::text) = ANY (ARRAY['true'::text, 'false'::text]) THEN (payload ->> 'passed'::text)::boolean
            ELSE NULL::boolean
        END AS passed,
        CASE
            WHEN (payload ->> 'score'::text) ~ '^-?[0-9]+(\.[0-9]+)?$'::text THEN (payload ->> 'score'::text)::numeric
            ELSE NULL::numeric
        END AS score,
    payload -> 'checks'::text AS checks,
    payload -> 'failures'::text AS failures,
    occurred_at,
    recorded_at,
    source_path,
    source_url,
    payload
   FROM incept.incept_event_ledger e
  WHERE event_type = ANY (ARRAY['layer.health.checked'::text, 'five_layer.supervisor.completed'::text, 'factory.repair_intake.completed'::text, 'issue.routing.completed'::text]);

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
event_id Projected field uuid Nullable Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Projected field text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_type Projected field text Nullable Default: none Governed event label that names what happened in the generation loop. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. incept.producer_surface.registered not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
layer_id Projected field text Nullable Default: none Identifier for the supervised layer, product area, or platform surface whose health is being reported. Nullable text column. Projected read-only field; do not write directly to this view. No enum Free identifier scoped by the layer-health event and report policy; no Platform3 table is the target; nullable=true. platform-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
owner_id Projected field text Nullable Default: none Pseudonymous owner identifier for the layer health row. Nullable text column. Projected read-only field; do not write directly to this view. No enum Free pseudonymous identifier from the layer-health payload; no People & Orgs person row is implied; nullable=true. owner:platform-architecture not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
manager_id Projected field text Nullable Default: none Pseudonymous manager or reviewer identifier for the layer health row. Nullable text column. Projected read-only field; do not write directly to this view. No enum Free pseudonymous identifier from the layer-health payload; no People & Orgs person row is implied; nullable=true. manager:platform-loop not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
status Projected field text Nullable Default: none Lifecycle state for this Incept table. Allowed values are constrained by the table-specific CHECK constraint. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
passed Projected field boolean Nullable Default: none Boolean result of a quality, model-grid, layer-health, or projection check. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
score Projected field numeric Nullable Default: none Numeric score produced by an evaluator or quality gate. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
checks Projected field jsonb Nullable Default: none Structured check results used by layer-health projections. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
failures Projected field jsonb Nullable Default: none Structured failure list used by layer-health projections. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
occurred_at Projected field timestamptz Nullable Default: none Time the underlying event happened. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
recorded_at Projected field timestamptz Nullable Default: none Time Platform3 recorded the event. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Projected field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Projected field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
payload Projected field jsonb Nullable Default: none Typed event payload. The event schema version defines required keys; direct credentials, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Incept governed view

incept.incept_promotion_timeline_v Promotion Timeline view

Promotion, deployment, and release decision timeline for skill/version reporting.

Lifecycle

Read-only projection over governed Incept rows. It is rebuilt from backing ledger/index facts; consumers must not persist a private copy as product truth.

Primary key / grain

Read-only projection grain; see projection rule and view definition.

Kind

view

Fields

27 documented fields from the catalog snapshot.

RelationshipsConstraintsIndexesProjection rules
  • Read-only projection over the governed Incept tables; relationships are inherited from the view definition.
  • Read-only view; constraints are inherited from source tables.
  • No physical index; query plans use the underlying source tables.
  • Read-only Platform3 projection: consumers may read this shape through the governed API/view path, but may not write to it.
  • The view definition below is the projection rule. Raw-DB readers must apply the same tenant/auth/audit guardrails as the API path before returning rows.
  • If a projected value disagrees with its source ledger row, the ledger row and linked typed index tables are the backing facts to reconcile.
Example query and view definition
select * from incept.incept_promotion_timeline_v where tenant_id = $1 order by recorded_at desc limit 50;
 SELECT pd.promotion_decision_id,
    pd.event_id,
    pd.loop_run_id,
    pd.loop_id,
    pd.skill_id,
    pd.baseline_version_id,
    pd.candidate_version_id,
    pd.candidate_eval_run_id,
    pd.previous_best_score,
    pd.candidate_score,
    pd.accepted,
    pd.decision_status,
    pd.decided_at,
    pd.actor_subject,
    pd.decision_reason,
    pd.ai_oversight,
    pd.deployment_id,
    d.environment AS deployment_environment,
    d.status AS deployment_status,
    d.deployed_at,
    d.deployment_url,
    e.branch_name,
    e.commit_sha,
    e.pull_request_url,
    pd.source_path,
    pd.source_url,
    pd.result_payload
   FROM incept.incept_promotion_decisions pd
     JOIN incept.incept_event_ledger e ON e.event_id = pd.event_id
     LEFT JOIN incept.incept_deployments d ON d.deployment_id = pd.deployment_id;

Fields

Field Type Meaning Constraints Values and relationship Example and invalid Provenance and edge cases
promotion_decision_id Projected field text Nullable Default: none Projected promotion decision id for this promotion/deployment timeline row. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projection of incept_promotion_decisions.promotion_decision_id; one timeline row per promotion decision plus deployment join; nullable=true. promotion-platform3-148-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
event_id Projected field uuid Nullable Default: none Canonical Incept event identifier. In typed tables it links the index row back to the ledger event; in views it identifies the projected ledger fact. Nullable uuid column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2ddf4a76-c2fb-4c27-bc2e-bf04ddfdf36b not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_run_id Projected field text Nullable Default: none Run envelope identifier that groups ledger events emitted by one daemon, global, backfill, or per-loop execution. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop-run-2026-06-25-001 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
loop_id Projected field text Nullable Default: none Identifier for the generation loop, skill, or content track being evaluated or repaired. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-data-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
skill_id Projected field text Nullable Default: none Skill identifier affected by the generation/evaluation/repair event. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
baseline_version_id Projected field text Nullable Default: none Projected baseline version id used in the promotion comparison. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only soft reference to the baseline version recorded in promotion evidence; nullable=true. baseline-version-platform-dd-a2 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_version_id Projected field text Nullable Default: none Projected candidate version id evaluated by the promotion decision. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only soft reference to the candidate version recorded in promotion evidence; nullable=true. candidate-version-platform-dd-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_eval_run_id Projected field text Nullable Default: none Projected evaluation-run id supporting the promotion decision. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only soft reference to the evaluation run recorded in promotion evidence; nullable=true. eval-run-platform-dd-a3 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
previous_best_score Projected field numeric Nullable Default: none Score value used by incept_promotion_timeline_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
candidate_score Projected field numeric Nullable Default: none Score value used by incept_promotion_timeline_v; units and target semantics come from the linked quality bar or evaluation payload. Nullable numeric column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 1 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
accepted Projected field boolean Nullable Default: none Boolean promotion decision result: true means the candidate was accepted by policy or oversight. Nullable boolean column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. true not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
decision_status Projected field text Nullable Default: none Status value projected by incept_promotion_timeline_v; allowed values and lifecycle behavior are inherited from the backing table or view definition. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
decided_at Projected field timestamptz Nullable Default: none Time a promotion or repair decision was made. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
actor_subject Projected field text Nullable Default: none Pseudonymous subject for the actor; do not store credentials, JWTs, or direct customer PII here. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. agent:codex:data-dictionary-doer not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
decision_reason Projected field text Nullable Default: none Redacted reason for a promotion decision, suitable for audit and customer-facing status reports. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. candidate met the published quality bar and materialized Content/QTI rows not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
ai_oversight Projected field jsonb Nullable Default: none JSON evidence of AI oversight, reviewer reasoning, or automated promotion review. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployment_id Projected field text Nullable Default: none Projected deployment id joined into the promotion timeline. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only soft reference to incept_deployments.deployment_id; nullable=true. deploy-platform3-preview-20260625 not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployment_environment Projected field text Nullable Default: none Projected deployment environment joined into the promotion timeline view. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. production not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployment_status Projected field text Nullable Default: none Status value projected by incept_promotion_timeline_v; allowed values and lifecycle behavior are inherited from the backing table or view definition. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. running not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployed_at Projected field timestamptz Nullable Default: none Time deployment evidence says the candidate was deployed or rolled back. Nullable timestamptz column. Timestamp values are stored as PostgreSQL timestamptz and interpreted in UTC. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. 2026-06-25T22:18:23Z not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
deployment_url Projected field text Nullable Default: none URL evidence for incept_promotion_timeline_v. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
branch_name Projected field text Nullable Default: none Git branch associated with the event or deployment evidence. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. platform3-148-incept-dictionary not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
commit_sha Projected field text Nullable Default: none Git commit SHA tied to the event, repair, promotion, or deployment. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
pull_request_url Projected field text Nullable Default: none Pull request URL linked to a repair, promotion, or deployment event. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_path Projected field text Nullable Default: none Repository or storage path for source evidence. It is not a substitute for canonical Content/QTI materialization. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. loop/context/incept-platform3-surface-decision.md not aligned to the object purpose, projection rule, or PITD-032 producer-surface boundary Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
source_url Projected field text Nullable Default: none External URL for source evidence. It must not contain credentials or secret-bearing query strings. Nullable text column. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. https://github.com/andymontgomery-byte/platform3/issues/148 contains credential-bearing query strings Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.
result_payload Projected field jsonb Nullable Default: none Typed result payload for repair, promotion, or deployment evidence. Nullable jsonb column. Must be a JSON value whose business meaning is stated by the object purpose; secrets, JWTs, raw customer PII, IP addresses, and user agents are not allowed. Projected read-only field; do not write directly to this view. No enum Read-only projected relationship; follow the view definition to the backing ledger/index rows. {"source":"incept","redacted":true} contains secrets, JWTs, raw customer PII, IP addresses, user agents, or non-object JSON when a CHECK requires object shape Incept producer surface PITD-032 requires data-dictionary coverage for every listed Incept table/view/field/projection rule. Edge: PITD-032 makes direct database reads deprecated bootstrap only. Product consumers read this through Platform3 API/view paths; student-facing generated artifacts still need canonical Content/QTI materialization or explicit reconciliation errors.

Two first-class paths -- raw-DB answer must equal the API answer

Guardrails: Rules The Raw-DB Path Must Apply To Match The API

An agent may answer a question by calling the platform 1EdTech API or by querying these platform.* tables directly through this dictionary, and it must get the same answer either way. The API applies the tenant filters, authorization preconditions, scope tuples, and read grains below on every request; a naive select * from platform.<table> silently returns wrong-but-plausible rows unless it reproduces each rule. These guardrails are additive documentation only -- they change no field, table, or allowed value above; they document how the existing columns must be queried so the API-only path and the raw-DB path converge on one answer.

1. Tenant scope -- always filter tenant_id from the JWT

Rule the API enforces. Every platform read is scoped to the caller's tenant. The API resolves tenant_id from the authenticated JWT tenantId (or tenant_id) claim and enforces it through assertTenantScope before any row is returned; a tenantId value supplied in the URL or query string is matched against the claim, never trusted on its own. GET /platform/tenants/{id} returns 404/scope-mismatch unless the path tenant equals the principal tenant (or the caller is a service/support/reviewer principal).

Why the API enforces it. tenant_id is the platform isolation boundary. platform.idempotency_key and platform.audit_log are shared across every tenant and module, so an unscoped read mixes tenants. The repository hard-codes `where tenant_id = $1` on getTenant, listAuditLogs, and findIdempotencyKey for exactly this reason.

Raw-DB path must do. Add `where tenant_id = $tenant` to EVERY query against platform.tenant, platform.idempotency_key, and platform.audit_log, and to every JOIN's ON clause (e.g. `on a.tenant_id = k.tenant_id` when joining audit_log to idempotency_key). Resolve $tenant from the same identity the API uses (the JWT tenantId claim); never take it from a request-supplied parameter without checking it against that claim.

PITD-003: Shared Tenant Model · PITD-005: Authentication, Authorization, And Tenant Scope

2. Authorization precondition -- gate by role/scope before returning rows

Rule the API enforces. Reading these rows through the API is not just tenant-scoped; it is role/scope-gated. Audit-log reads require one of service, support, auditor, demo, reviewer (or scope platform:audit:read / platform:*). Idempotency-key inspection requires writer, support, service, demo, reviewer (or platform:idempotency:read / platform:*). Tenant creation requires service, writer, demo, reviewer (or platform:tenant:create / platform:*); creating directly in active requires the exact platform-operator tenant principal, service role, and platform:tenant:create or platform:* scope, while every other create authority remains provisioning-only. A caller without the authority gets a typed 403, not data.

Why the API enforces it. platform.audit_log and platform.idempotency_key carry privileged operational history. The API never exposes them to a tenant-scoped principal that lacks the audit/idempotency authority. A raw SELECT bypasses authorization entirely, so the same tenant's rows become readable by a principal the API would have rejected -- a wrong-but-plausible 'the API would have shown me this' answer.

Raw-DB path must do. Before returning any platform.audit_log or platform.idempotency_key row from the raw path, apply the same role/scope precondition the API checks: confirm the acting principal holds an audit-read (for audit_log) or idempotency-read (for idempotency_key) role or scope. If it does not, return the typed 403 the API would have returned -- do not return rows just because they are in the caller's tenant.

PITD-005: Authentication, Authorization, And Tenant Scope · PITD-009: Cross-Module Audit Log

3. Idempotency scope -- apply the owning route profile

Rule the API enforces. The default idempotency record is identified by (tenant_id, module, surface, method, route_template, operation_id, idempotency_key). An explicit Platform-owned route profile may be stricter: CASE 1EdTech resolves on (tenant_id, module=case, surface=1edtech, idempotency_key), with method/route/operation/resource/body/If-Match differences becoming hash conflicts under that row. No profile ever keys on idempotency_key without tenant and module/surface.

Why the API enforces it. The same client-chosen Idempotency-Key legitimately recurs across tenants and modules, while CASE deliberately forbids reusing it across CASE operations in one tenant. A generic key-only query leaks tenants; a generic seven-column CASE query misses the partial-unique winner and can imply a second mutation is allowed.

Raw-DB path must do. First pin tenant_id, module, and surface. Use the seven-column tuple for the shared default. For module=case and surface=1edtech, query `where tenant_id=$t and module='case' and surface='1edtech' and idempotency_key=$key`, then compare canonical_request_hash and the retained method/route/operation identity. Never query idempotency_key without tenant/module/surface and never ignore a documented partial unique profile.

PITD-007: Idempotency And Optimistic Concurrency · PITD-002: Module Schemas And Shared Platform Schema

4. Module / surface scope -- pin the right partition of the shared table

Rule the API enforces. platform.idempotency_key and platform.audit_log are single physical tables shared by every documented writer module (platform, incept, qti, oneroster, caliper, case, nweamap, ed_fi, people_and_orgs, curriculum, content, events, results, analytics) and every surface (platform, 1edtech, alpha), partitioned only by the module and surface columns. An API endpoint only ever reads the module/surface it serves; it never returns another module's rows.

Why the API enforces it. Reading platform.audit_log or platform.idempotency_key without pinning module (and usually surface) returns every module's operational rows at once -- QTI rows mixed with OneRoster rows mixed with platform rows -- which no endpoint ever returns. Counting 'platform writes' over an unfiltered audit_log silently includes every other module.

Raw-DB path must do. When answering a per-module/per-surface question, add `and module = '<module>'` (and `and surface = '<surface>'` where the endpoint is surface-specific) to the query. Do not union modules or surfaces unless you are deliberately answering a cross-module question; the API never does so implicitly.

PITD-002: Module Schemas And Shared Platform Schema · PITD-009: Cross-Module Audit Log

5. Tenant lifecycle status -- a row in platform.tenant is not always live

Rule the API enforces. platform.tenant.status moves through provisioning -> active -> suspended -> archived. Create defaults to provisioning; the existing idempotent create may start active only when authentication and operational setup are complete and the caller is the exact platform-operator tenant principal with Platform service role plus platform:tenant:create or platform:* scope. A tenant row existing is not the same as the tenant being live: provisioning has not finished onboarding, suspended is access-revoked, and archived is retired. The status column is the authoritative lifecycle signal.

Why the API enforces it. A raw `select * from platform.tenant` (or a join that assumes every tenant_id is a usable tenant) treats suspended and archived tenants as active, inflating 'active tenant' counts and routing work to tenants the platform considers not live. status is a read-time filter, not a row deletion -- archived rows are retained for history and audit.

Raw-DB path must do. For the 'live/active tenants' answer add `and status = 'active'`. To ask 'still onboarding' use status = 'provisioning'; for access-revoked use 'suspended'; for retired use 'archived'. Never infer liveness from row existence alone, and never silently include non-active tenants in a 'current tenants' count.

PITD-003: Shared Tenant Model · PITD-005: Authentication, Authorization, And Tenant Scope

6. Demo-tenant split -- demo_* tenants do not live in Postgres

Rule the API enforces. Tenant ids beginning with demo_ are stateless, signed, in-memory demo tenants served by the demo repository, not by platform.* in Postgres. Real tenants are UUIDs; the repository routes demo_* reads/writes away from the database and rejects any non-UUID tenant id against Postgres as not-found (assertPostgresTenantId).

Why the API enforces it. A raw Postgres query for a demo_* tenant returns zero rows even though the API answers successfully from the demo repository -- a false 'tenant/audit/idempotency does not exist' answer. Conversely, treating a UUID demo placeholder as a real Postgres row is equally wrong.

Raw-DB path must do. Detect demo_* tenant ids before querying Postgres: if `$tenant like 'demo_%'`, the answer comes from the stateless demo path, not from platform.* tables -- do not conclude 'not found' from an empty Postgres result. Only run the platform.* SQL above for UUID-shaped real tenant ids.

PITD-003: Shared Tenant Model · PITD-005: Authentication, Authorization, And Tenant Scope

7. Audit-log read grain -- newest-first, bounded page size

Rule the API enforces. The audit-log list endpoint returns rows for one tenant ordered by occurred_at descending, with a page size that defaults to 20 and is clamped to the range 1..100. The API never returns an unbounded or arbitrarily ordered audit stream.

Why the API enforces it. A raw `select * from platform.audit_log where tenant_id = $t` with no ORDER BY and no LIMIT returns rows in physical/undefined order and without the cap, so a consumer comparing 'the latest N audit events' against the API gets a different set and a different order.

Raw-DB path must do. Match the API shape: `... where tenant_id = $t [and module=$m] order by occurred_at desc limit greatest(1, least($limit, 100))` with $limit defaulting to 20. Apply the same descending occurred_at ordering and 1..100 clamp the API applies.

PITD-009: Cross-Module Audit Log · PITD-010: Observability, Metrics, And SLOs

8. Redaction grain -- treat metadata columns as already PII-free, do not re-expand

Rule the API enforces. platform.tenant.metadata and platform.audit_log.redacted_metadata hold only safe counts, hashes, and summaries by contract -- no direct learner/parent PII, credentials, raw tokens, IP addresses, or user agents. actor_subject is a pseudonymous principal id, not a person's name. The API relies on this and never re-hydrates PII into a response.

Why the API enforces it. A raw reader that joins audit_log.resource_id or actor_subject back out to a module's PII tables (or that mines metadata expecting personal data) produces a record the API would never emit, leaking PII through the raw-DB path and diverging from the API answer.

Raw-DB path must do. Read metadata / redacted_metadata as already-redacted summaries; do not join them or resource_id/actor_subject back to learner/parent PII to 'enrich' a result. The API's answer contains only the redacted shape -- the raw path must return the same redacted shape, not a re-expanded one.

PITD-008: Student Data Privacy And PII Handling · PITD-009: Cross-Module Audit Log

Allowed Values

Every enum-like field points to a named allowed-value set. Each value explains what it means, when to use it, and when it is invalid.

tenant_status

Lifecycle state for platform.tenant rows. Modules must reject new customer writes unless the tenant is active.

Source ITD
ValueMeaningUse whenInvalid when
provisioning The tenant row exists, but required setup such as auth, domains, or integrations is not complete. Create this before the tenant can ingest content, launch learner activity, or receive production traffic. Used for a tenant that is already accepting module writes.
active Normal customer state. Tenant-scoped reads and writes may proceed when the JWT tenant claim and role checks pass. The tenant is fully configured and in good standing. Used while required onboarding, suspension, or archival conditions are unresolved.
suspended The tenant is known but temporarily blocked from ordinary customer writes. Billing, security, contract, or incident response requires stopping writes without deleting history. Used to hide a tenant that should be permanently archived or deleted through a documented retention flow.
archived The tenant is retained for history and audit, but new module writes are rejected except explicit maintenance or export flows. A customer relationship ended or a workspace was retired and records must remain queryable for retention. Used as a soft substitute for learner-runtime deletion, which belongs to module-specific learner data flows.

module_key

Canonical module identifier stored in shared platform records. These values cover every documented shared-Supabase writer namespace allowed to create platform.idempotency_key and platform.audit_log rows. This is stable identity only; it does not mean a module surface is currently approved. A future writer becomes legal only when a later Platform data-dictionary and migration attempt adds its module_key value deliberately; raw free-form module strings are never accepted.

Source ITD
ValueMeaningUse whenInvalid when
platform Shared platform substrate, documentation, auth, idempotency, audit, and cross-module operations. The operation belongs to the platform surface itself, shared middleware, release tooling, or a cross-module administrative API. Used for a module-owned resource mutation that should remain attributed to its owning writer namespace.
incept Incept producer-surface namespace for governed generation, evaluation, model-grid, source, quality, repair, promotion, deployment, and issue-link provenance. The operation writes, projects, audits, or reads the governed Incept ledger/projection objects listed under PITD-032 and needs shared audit/idempotency attribution. Used as a consumer-facing Content, Results, Events, or Analytics substitute, or used to justify direct SUPABASE_DB_URL reads from an Incept app.
qti Question and Test Interoperability module namespace for assessment content, runtime, conformance, package import/export, and Alpha assessment facade operations. The operation touches QTI-owned records and the calling surface is allowed by the current release state derived from loop/qti/state.json. Used as a release-status signal, or used for roster, telemetry, standards, MAP, SIS, Alpha learning-surface, or platform-only administrative operations.
oneroster OneRoster module namespace for roster, enrollment, class, school, user, course, and academic-session contracts. The operation touches OneRoster-owned roster data, import/export work, conformance evidence, or the OneRoster integration app. Used for QTI assessment resources, Caliper event telemetry, CASE standards data, NWEAMap rows, Ed-Fi records, Alpha facade rows, or platform-only tenant administration.
caliper Caliper Analytics module namespace for event telemetry and metric-profile contracts. The operation touches Caliper event ingest, metric-profile validation, event-store reads, or the Caliper integration app. Used for QTI assessment content, OneRoster roster resources, CASE standards data, NWEAMap rows, Ed-Fi records, Alpha facade rows, or platform-only tenant administration.
case CASE module namespace for CFDocument, CFItem, CFAssociation, CFPackage, and Alignment contracts. The operation touches CASE standards data, package import/export, graph reads, external-ID alignment, or the CASE integration app. Used for QTI assessment content, OneRoster roster resources, Caliper telemetry, NWEAMap rows, Ed-Fi records, Alpha facade rows, or platform-only tenant administration.
nweamap NWEAMap sibling module namespace for MAP Growth export ingest, deduped test-of-record views, goal-strand rows, and NWEA account-scoped results. The operation imports NWEA CDF data, reconciles retakes, exposes NWEAMap 1EdTech rows, or writes audit/idempotency records for MAP-specific platform behavior. Used for Alpha Results rollups, generic assessment content, SIS administrative records, or non-MAP analytics.
ed_fi Ed-Fi sibling module namespace for SIS-style administrative records such as attendance, guardians, program participation, transcripts, discipline, demographics, staff, and descriptors. The operation imports, validates, reads, or reconciles Ed-Fi-shaped school records and needs shared audit/idempotency attribution. Used for OneRoster identity truth, TimeBack learning facts, MAP results, or Alpha plain-language facade rows.
people_and_orgs Alpha People & Orgs namespace for plain-language students, parents, guides, staff, schools, districts, levels, and effective-dated memberships over the shared roster base. The operation serves or writes the Alpha People & Orgs facade, source-shaped migration normalization, or school-language roster membership views. Used for raw OneRoster 1EdTech endpoints, SIS-only Ed-Fi records, learning results, or curriculum/content operations.
curriculum Alpha Curriculum namespace for knowledge components, tracks, courses, course components, gates, remediation sequencing, policies, and learning-engine placement/routing state that is the same for every student. The operation authors, imports, routes, gates, remediates, or reconciles Curriculum-owned rows and needs shared audit/idempotency attribution. Used for student-specific Results mastery state, flat Content assets, Caliper Events, or OneRoster roster facts.
content Alpha Content namespace for student-touchable assets: questions, stimuli, tests, test specs, test banks, articles, videos, audio, images, interactives, media assets, external links, scripts, and reusable banks. The operation creates, imports, catalogs, renders, or reconciles Content-owned rows and needs retry/audit attribution. Used for Curriculum sequencing, Results attempts/scores, Analytics rollups, or Events telemetry.
events Alpha Events namespace for timestamped student interactions and Caliper-derived moments before they become settled results or rollups. The operation ingests, validates, reads, or reconciles learner interaction events and needs shared audit/idempotency attribution. Used for durable scores/mastery, derived Analytics measures, Content assets, or Curriculum structure.
results Alpha Results namespace for durable student outcomes: test scores, gate passes, mastery state, working grade, report-card facts, XP awards, and Results-owned derived overlays. The operation writes, imports, reconciles, or reads settled Results facts and needs shared audit/idempotency attribution. Used for the original interaction event, raw Content, Curriculum policy, or Analytics window rollups.
analytics Alpha Analytics namespace for typed derived facts and per-window rollups such as active/inactive/waste seconds, mastery deltas, XP totals, growth measures, and reporting views. The operation computes, materializes, refreshes, or reads Analytics-owned rollups and needs shared audit/idempotency attribution. Used for system-of-record Events, settled Results, source Content, or roster/Curriculum facts.

incept_traffic_class

Traffic class for Incept producer events. Headline customer Accuracy counts only customer traffic; owner-directed goal work and loop self-tests stay visible in drilldown lanes without moving the customer headline metric.

Source ITD
ValueMeaningUse whenInvalid when
customer Customer-shaped generation or evaluation traffic that should count in the public headline Accuracy numerator and denominator. A user/customer-facing request, production progress projection, or legacy row without an explicit trafficClass is being reported as customer availability or quality. Used for owner-directed course/materialization runs, backfills, repair probes, CI checks, or loop self-tests.
goal-run Owner-directed work to materialize a stated goal, backfill a course, execute a repair, or advance a known bottleneck. The run exists because the owner or factory selected a tactical goal, including bulk course/content materialization and repair execution. Used for ordinary customer traffic or for automated self-tests whose purpose is only to verify the loop machinery.
self-test Loop, CI, reviewer, smoke, or synthetic traffic whose purpose is to verify machinery rather than satisfy a customer request or owner goal. The event comes from a test harness, reviewer check, synthetic fixture, or smoke probe. Used for real customer traffic or for owner-directed goal execution that should be tracked in the goal-run lane.

module_release_status

Current release state exposed by the platform module registry and customer docs. It is derived from loop state, not from module_key values in platform.idempotency_key or platform.audit_log.

Source ITD
ValueMeaningUse whenInvalid when
approved The named module surface has passed the loop through its required release gate and may be advertised to cold integrators. Every required deliverable for that surface is currently approved in loop/<module>/state.json. Any required deliverable for that surface is doing, reviewing, changes_requested, rolled_back, or not_started.
under_reconciliation A previously published or linked surface is withdrawn while it is rebuilt against newer platform truth. The loop has rolled back that surface or restarted an upstream deliverable to reconcile a platform contract, but the module namespace remains valid for existing audit/idempotency rows. Used for a brand-new surface that was never published, or used to imply the public API is ready for new cold integrators.
in_progress The surface is being built and has not yet reached the customer-facing release gate. A current deliverable is doing, reviewing, or changes_requested and there is no previously approved public surface being withdrawn. Used after a rollback has invalidated previously advertised docs or API behavior.
rolled_back A surface deliverable has been explicitly invalidated and must not be treated as public release truth. loop/<module>/state.json marks the relevant deliverable or a required downstream deliverable as rolled_back. Used as a customer-facing substitute for under_reconciliation when the registry still lists the module surface.
not_started The module surface has no current approved or in-flight release surface. The surface entries are not_started in loop/<module>/state.json. Used for a surface with approved artifacts or an active current deliverable.

surface_code

Which public or internal surface produced the shared record.

Source ITD
ValueMeaningUse whenInvalid when
platform The platform substrate surface. The route, audit row, idempotency scope, or dictionary entry is cross-module rather than standard-specific. Used to mask whether a QTI expert or Alpha customer endpoint produced a module action.
incept The producer-writer identity for governed Incept ledger and projection rows. A Platform3-native Incept write/readback path records generation-loop provenance under PITD-032. Treated as a third consumer API surface or as permission to bypass Platform3 auth, tenant scope, audit, and data-dictionary rules.
1edtech Expert standards surface that follows a 1EdTech specification exactly except documented gap fills. The operation is on an expert API or documentation surface for a 1EdTech standard. Used for Alpha facade calls that rename, restrict, cut, or extend standard language.
alpha Plain-language customer and app-builder surface over the same persistence model. The operation comes from an Alpha API or documentation surface. Used for expert-only conformance mutation, standards package internals, or release tooling.

mutation_http_method

HTTP methods eligible for shared idempotency tracking.

Source ITD
ValueMeaningUse whenInvalid when
POST Create, import, upload, command, or async job operation where a network retry might duplicate work. The route creates work or resources and the customer site documents Idempotency-Key. Used for a read-only GET.
PUT Full replacement mutation that may be retried by a client. The route is documented as retryable and uses If-Match or another validator if it can overwrite user work. Used without a request hash and concurrency rule.
PATCH Partial update mutation that may be retried by a client. The route is documented as retryable and a duplicate patch must not apply twice. Used for non-repeatable patch semantics that the customer site has not made idempotent.
DELETE Delete or redaction command where retrying should not produce a second distinct deletion event. The route documents retry behavior and audit requirements. Used for implicit retention cleanup that is not customer-visible or not keyed by Idempotency-Key.

idempotency_status

Replay lifecycle for platform.idempotency_key rows.

Source ITD
ValueMeaningUse whenInvalid when
in_progress The first request claimed the key and the operation has not reached a final replayable outcome. The handler starts work and stores a lock before performing the mutation. Retained after locked_until has passed without stale-lock-reclaim, completion, or failure handling.
completed The operation reached a successful replayable outcome. Same key plus same request hash returns the stored response. The mutation committed and response_status/response_body or resource pointers are safe to replay. Used when the committed resource is unknown or the stored response contains secrets or learner PII.
failed_permanent The original request reached a final caller-fixable error such as validation, authorization, conflict, or precondition failure. Replaying the same invalid request should return the same safe Problem response instead of re-running side effects. Used for transient 5xx failures that should be retried after the lock expires.
failed_transient The first attempt failed without a replayable response, but rerunning the same request is safe. A dependency or server failure happened before platform-owned side effects, all platform-owned side effects rolled back with the claim transaction, or the operation is internally idempotent under the same request_hash; after locked_until, the same request may reclaim the row under stale_lock_reclaimed. Used after a database mutation might have committed without a response.
commit_uncertain The worker cannot prove whether platform-owned side effects committed, and no safe replay body exists. Only when the handler cannot immediately prove rollback, reconstruct a completed response, or produce a failed_permanent Problem. The row is non-reclaimable; retries return idempotency_commit_uncertain until module-specific reconciliation resolves the outcome. Used for a failure known to have happened before side effects, or for an operation that is internally idempotent and safe to rerun under failed_transient.
expired The key is retained only for audit or conflict explanation after its replay window has ended. expires_at has passed and the platform cleanup policy marks the row no longer replayable. Used to avoid returning a known conflict inside the documented replay window.

audit_action

Kind of customer-visible or high-risk action captured by platform.audit_log.

Source ITD
ValueMeaningUse whenInvalid when
create A resource was created synchronously. The operation inserts a module or platform row that customers can later read. Used for import jobs that should be action=import.
update An existing resource was changed. A mutable customer or administrative field changes. Used for append-only learner submission creation.
delete A reusable resource or tenant-scoped object was deleted or archived. The operation removes or retires content, settings, or a non-runtime record. Used for learner-runtime deletion, which must be runtime_delete.
import A package, roster, event batch, or standards bundle was accepted for ingest. The operation takes external source material and projects it into module tables. Used for manual object creation that has no source package or batch.
export A customer or service-role actor generated an exportable data view. The operation produces a file, report, or export job with customer data. Used for ordinary API reads.
read_privileged A read occurred through service-role, support, release, or other privileged authority. The read would not be available to an ordinary tenant-scoped caller. Used for normal customer GETs that are already covered by access logs.
runtime_delete Learner runtime data was deleted or redacted under a student-data lifecycle rule. A student, parent, school, or retention process removes learner-specific state. Used for reusable content deletion.
conformance_change A release or expert path changed conformance evidence. A conformance run starts, finishes, fails, or changes trust-relevant assertions. Used for read-only Alpha trust status views.
trust_change Public trust status changed as a result of evidence, rollback, or release gating. A customer-visible trust summary moves between trusted, degraded, failed, or unknown states. Used for ordinary audit actions that do not change public trust.
authz_denied An authenticated caller was denied by tenant, role, scope, service-role, or operation authorization. The request had an authenticated subject but failed authorization. Used for missing or invalid authentication; those are security logs, not tenant audit rows.
maintenance A named platform or service-role maintenance operation touched durable state. Backfills, compatibility migrations, cleanup, or incident response make controlled changes. Used as a generic label when a more specific action exists.

audit_outcome

Final result of the audited action.

Source ITD
ValueMeaningUse whenInvalid when
accepted The platform accepted work for asynchronous processing and returned a trackable resource. The HTTP status is usually 202 and later completion is represented by another row or resource state. Used after the work has already succeeded or failed.
succeeded The action completed successfully. The HTTP status is 2xx and the intended state transition committed. Used when only validation passed but async work is still pending.
failed_validation The action was rejected because caller-supplied data was malformed or semantically invalid. The HTTP status is usually 400 or 422-style validation mapped to 400 by platform docs. Used for authorization or conflict failures.
failed_authorization The authenticated caller lacked tenant, role, scope, service-role, or operation authority. The HTTP status is 403. Used for missing Bearer token, which should not create a tenant audit row.
failed_conflict The action conflicted with idempotency, uniqueness, state version, lifecycle, or resource state. The HTTP status is 409, 412, or 428. Used for not-found conditions.
failed_not_found The resource was absent or not visible inside the authenticated tenant scope. The HTTP status is 404 and the action was high-risk enough to audit. Used to leak existence of resources outside the tenant.
failed_server The action failed because of unexpected platform, dependency, runner, or storage behavior. The HTTP status is 5xx or equivalent background-job failure. Used for caller-fixable validation problems.

producer_credential_scope

Exhaustive vocabulary of scopes a producer-credential grant envelope may enumerate and a self-minted producer credential may carry. Everything outside this list — wildcards, credential-admin scopes, token-issue scopes — is never grantable; widening the vocabulary is a deliberate dictionary + migration change.

Source ITD
ValueMeaningUse whenInvalid when
author:content Create and edit draft Content items, versions, media, references, and KC tags in the producer's own tenant. The producer authors test_spec/test_bank/article/video graphs or imports QTI packages before publication. Used to publish; authoring authority deliberately does not include the publication step.
publish:content Invoke governed Content publication (recipe-content-publication) on the producer's own tenant; Content's kind-owned QC remains the release gate. The producer moves authored drafts to published+trusted exact versions through POST .../items/{contentId}/publish. Treated as a QC bypass, used cross-tenant, or granted to end-user (student/teacher/demo) principals.
read:content Read Content catalog, item, version, trust, and release-eligibility state in the producer's own tenant. The producer verifies authored or published state by readback. Used as a substitute for module-specific read authority outside Content.

Data Dictionary Conventions For Every Module

These conventions are platform-level requirements. Future module dictionaries must follow them unless a later Platform architecture and data dictionary attempt changes the rule.

Entry Completeness

Rule. Every table section must include purpose, lifecycle, source/provenance, ITD links, primary key, relationships, constraints, invalid examples, example row, query snippets, and indexes. Every field row must include type, required/nullability, default, key role, meaning, constraints, allowed values, relationship/cardinality, example, invalidWhen, edge cases, and provenance.

Why it exists. A staff engineer must be able to write a migration and a query without reading source code.

Architecture source

Provenance Labels

Rule. Use one explicit source label per entry: Platform shared, 1EdTech pass-through, Module gap fill, Alpha cut, Alpha restriction, Alpha rename, or Alpha extension. Divergences must link to the ITD that authorizes them.

Why it exists. Future modules need to know whether a value came from a standard, a platform gap fill, or an Alpha-facing change.

Architecture source

Allowed Values

Rule. Every enum-like field links to a named allowed-value set. Each value needs behavior, useWhen, and invalidWhen text. A bare list of codes is not enough.

Why it exists. Allowed values are where invalid database state hides; behavior per value makes lifecycle bugs visible.

Architecture source

Invalid-Value Identification

Rule. Fields that store IDs, references, enums, JSON, learner data, request hashes, Problem details, logs, or redacted metadata must name invalid examples directly.

Why it exists. The brainlift requires a dictionary that makes invalid or misaligned database values easy to identify.

Architecture source

Relationships And Cardinality

Rule. Relationship text must name the related table/object, cardinality, and nullability. Example: Many platform.audit_log rows may reference one platform.idempotency_key row; the reference is nullable.

Why it exists. Engineers writing joins need more than a column name that ends in _id.

Architecture source

Anchors And Canonical Paths

Rule. Table anchors use table-platform-tenant. Field anchors use field-platform-tenant-tenant-id. Never change an anchor after approval unless a rollback or redirect plan is documented.

Why it exists. Architecture, customer sites, implementation tests, and future module docs need stable deep links.

Architecture source

Dictionary-Derived DDL

Rule. Migrations must preserve dictionary table names, field names, SQL types, required/nullability, defaults, unique scopes, foreign keys, check constraints, indexes, and SQL comments. Implementation tests must fail when a published table, field, enum, or critical index is missing.

Why it exists. The database is shared product truth; implementation cannot quietly diverge from the approved dictionary.

Architecture source

Module Release State

Rule. Treat module_key as stable identity only. Any customer-facing module registry, module picker, or docs sentence that says whether a surface is approved must derive status from loop/<module>/state.json and use module_release_status.

Why it exists. A cold integrator must not be routed to a surface the loop has withdrawn for platform-contract reconciliation.

Architecture source

Privacy And Redaction

Rule. No shared platform.* field may store Bearer tokens, auth headers, Cognito access/ID/refresh tokens, IP addresses, user agents, raw package bytes, student names, parent names, emails, phone numbers, SIS IDs, or other direct learner/parent PII. The single PITD-005 identity exception is platform.end_user_identity_binding.subject: it stores the exact opaque Cognito sub needed for deterministic operator binding and revocation; audit subjects and issued JWT subjects remain hashed/pseudonymous.

Why it exists. QTI's approved privacy pattern is now platform-wide student-data policy.

Architecture source

Student Login Token Exchange

Rule. For every explicitly allowlisted active tenant, Platform3 owns the first-party Cognito Hosted UI code+PKCE login and opaque session. PLATFORM_TIMEBACK_TENANT_ROUTES_JSON is a strict array compiled to a map from canonical tenant UUID to exactly one redirect/post-login/logout tuple; all three URIs share one HTTPS origin and the callback contains that UUID. Duplicate, malformed, mismatched, or unlisted entries fail closed before storage. Host and Origin validate the selected tuple; neither chooses it. Each app uses a same-origin reverse proxy for only its exact auth paths, keeping the opaque cookie host-only and SameSite without an app-held secret or cross-site cookie. The legacy single redirect/post-login/logout variables retain their exact behavior only when this allowlist is absent. After the legacy operator invite returns a subject, an operator Bearer request binds exact issuer + subject + canonical Platform tenant UUID + People & Orgs person_id; there is no email auto-binding. The cookie is 30-minute idle/2-hour absolute and authorizes only session-token/logout. The auth route, binding, session, and audit stay on canonical platform.tenant.tenant_id. Every session-token request re-reads People & Orgs, loads that tenant row, then mints a 600-second HS256 Bearer JWT with its existing unique tenant_key in both tenantId and tenant_id and no aud because People & Orgs and Results already route and store by tenant key. A consumer that cannot safely hold that HS256 key POSTs the opaque JWT as Bearer to /platform/tenants/{canonicalTenantUuid}/token-context. The verifier requires both raw tenant aliases to be present and exactly equal the active row's tenant_key; rejects workspace aliases; validates raw unique nonempty roles/scopes before normalization; requires scalar role to equal roles[0], the exact people_orgs:read plus results:read scope set, integer exp-iat of exactly 600 seconds, exact person-scope union, and relationship-role provenance; and rejects unknown, container-grant, or extra privilege claims. It returns only the published no-store end-user response without echoing the token. The published matrix distinguishes invalid authentication (401), canonical-route validation (400), tenant/workspace mismatch (403 tenant_scope_mismatch), end-user contract or inactive-tenant denial (403 forbidden), unknown tenant (404), and wrong method (405). This bounded handoff adds no universal repository adapter, additional claim, second mapping authority, key distributor, or second identity service. Cognito tokens are discarded, no refresh vault exists, and all customer APIs remain Bearer-only.

Why it exists. Cognito owns credential verification, People & Orgs owns current identity/relationships, Platform owns each canonical-tenant binding/session/revocation path, and the strict route allowlist lets multiple first-party apps share one deployment without creating a Host authority, cross-site cookie, or second data mapping.

Architecture source

Student End-User JWT Claims

Rule. TimeBack end-user JWTs include only personId, studentId, agentOf, personIds, authProvider, and the exact Results compatibility aliases studentIds, guardianOf, and guideOf. Compatibility aliases repeat only the same authorized student ids; personIds never contains a parent or guide actor and does not add scope. The bridge does not emit placeIds, schoolIds, or classIds because People & Orgs interprets those as container-wide grants. Claims are re-derived on every token mint from a real, enabled, non-deleted, lifecycle-current person and active dated memberships. Guardian/parent agentOf and guardianOf come only from inverse OneRoster family_or_agent_person_ids on eligible students. Guide student scope requires the guide's current named class membership and matching current guide-to-student rows. If those relationships resolve to no eligible student, token minting fails closed. Claims are opaque ids, never names, emails, phone numbers, passwords, access tokens, or SIS identifiers. Audit rows store claim keys, counts, and hashes only.

Why it exists. The API and raw-DB/audit paths must agree on what identity was authorized without copying learner PII into shared platform.* fields or forcing modules to parse app-specific token shapes.

Architecture source

Student Administrator Role Modifier

Rule. administrator is the only canonical privileged end-user role literal. Platform emits it only after the same current tenant-scoped People & Orgs person has both an active student membership and an active administrator place membership. student remains role and roles[0]. Administrator-only, class-only administrator membership, admin aliases, case variants, raw Cognito groups, stale or wrong-person rows, and container claims fail closed. The modifier adds no person, place, school, class, guardian, guide, or agent scope. A consumer must first verify exact current course enrollment from its server-owned roster before administrator may change that enrolled learner's sequencing.

Why it exists. Ilma's AP and Reading launch need one interoperable role literal without turning a place membership, identity-provider group, or consumer configuration into broad authorization.

Architecture source

Producer Self-Service Credential Provisioning

Rule. A producer obtains scoped, tenant-bound, auditable credentials (author:content, publish:content, read:content) through an authenticated API, never a ticket. Onboarding is the single operator act: an operator-authorized Bearer request (operator role or platform:credential:grant scope; a producer credential is refused) creates one active platform.producer_credential_grant per tenant + producer, enumerating exactly the grantable scope subset, the service role class, a 60..3600-second max TTL, and a bounded hourly issuance rate. After that, POST /platform/tenants/{canonicalTenantUuid}/producer-credentials is fully self-service: an already-tenant-authenticated principal whose exact subject the envelope binds mints or rotates short-lived credentials for ITS OWN tenant only — the tenant binding is enforced server-side against the tenant claim with no service-role bypass, and requested scopes/roles/TTL must sit inside the envelope or the request fails closed with an authz_denied audit row. Issued credentials are ordinary platform HS256 JWTs signed by the existing platform-jwt machinery (no new crypto) carrying the tenant's unique tenant_key in both tenantId and tenant_id — the same key-claim rule as the student login token exchange, and for the public demo tenant that key is demo — plus credential_id and grant_id provenance claims that token-exchange callers cannot forge. Every issuance inserts an append-only platform.producer_credential ledger row storing only the JWT's SHA-256 fingerprint and writes a platform.audit_log row joined by credential_id; the raw token appears only in the no-store mint response and is never persisted, logged, or audited. Revocation works and is fail-closed: revoking a credential (self-revoke by its own subject, or an operator) or its grant (operator; cascades to all outstanding credentials) immediately blocks minting and rotation at the platform routes, and offline verifiers converge within the bounded remaining TTL, which max_ttl_seconds caps at one hour. Exceeding the envelope's issuance rate returns the documented 429 rate_limited Problem. Consumer modules keep their existing verification unchanged: Content's recipe-content-publication publish:content requirement is satisfied by a credential minted here, and the recipe's 'requests credential provisioning through Platform tenant onboarding' sentence now resolves to this API instead of a human.

Why it exists. Owner ruling 2026-08-10 (#2794): producers must create, publish, and attach content entirely through authenticated APIs; #2727 showed the human provisioning step blocking a customer mid-ingest. The grant envelope keeps self-service from becoming self-escalation.

Architecture source

QTI Reconciliation

QTI was approved before the Platform module existed, so this section names the exact places where platform-wide truth supersedes, extends, or operationalizes the QTI predecessor pattern. QTI release status is not hard-coded here: the module-release-state table above derives it from loop/qti/state.json, and the current generated status for qti/1edtech is approved.

qti.tenant -> platform.tenant

Decision. The shared tenant row is platform.tenant. QTI's existing qti.tenant table is the predecessor pattern, not the future cross-module tenant authority.

Implementation requirement. The platform implementation deliverable must migrate qti.tenant rows or provide a compatibility view before future modules rely on platform.tenant for QTI joins.

Rollback signal. If QTI docs or implementation continue to claim qti.tenant is the platform-wide tenant truth after the bridge exists, rollback to the earliest QTI artifact that makes that claim.

qti.content_package.idempotency_key -> platform.idempotency_key

Decision. The shared retry ledger is platform.idempotency_key. QTI package rows may keep a package-specific copy or later link to the ledger, but replay/conflict semantics are platform-owned.

Implementation requirement. Shared middleware must populate platform.idempotency_key for QTI retryable operations and keep any qti.content_package copy consistent.

Rollback signal. If QTI continues to implement replay/conflict behavior only in qti.content_package without the platform ledger, rollback to QTI implementation or customer website as appropriate.

QTI lacks a shared audit table -> platform.audit_log

Decision. High-risk QTI operations become audit emitters once the platform shared library exists.

Implementation requirement. QTI import, authoring save, delivery runtime deletion, service-role maintenance, conformance mutation, trust change, and authorization denial paths must write platform.audit_log rows.

Rollback signal. If a future QTI customer website promises auditability that the implementation does not emit, rollback to QTI implementation or customer website.

QTI hardcoded demo/reviewer aliases and unnamed artifact-version lists -> platform.tenant plus tenant-owned qti.artifact_collection manifests

Decision. Every service principal binds to one platform.tenant row. Content and CASE credentials carry that row's tenant_key because those APIs route by key; QTI credentials carry the same row's tenant_id UUID because QTI storage and routes are UUID-owned. The public human alias demo resolves platform.tenant.tenant_key=demo; an explicit historical UUID can remain a compatibility target but cannot capture the alias or strand new package data outside the shared demo tenant. Those are identifiers for one tenant, not permission to remap a consumer tenant. A named QTI collection is immutable, belongs to exactly one tenant, lists ordered exact artifact versions, and publishes Content aliases that preserve QTI native identity (content_id=artifact_id and content_version_id=artifact_version_id). The governed timeback-alphatest-legacy-forms-v1 collection is valid only with exactly 17 unique form versions.

Implementation requirement. Provision separate least-privilege Content, CASE, and QTI JWTs for the same platform.tenant; resolve tenant keys through platform.tenant before any legacy fallback; enforce operation scopes and exact QTI UUID route-token equality; remove reviewer-to-demo compatibility access; import complete source packages through the Content QTI seam into the target tenant; then publish and read back the immutable 17-member target collection. Never persist credentials in a collection or audit row.

Rollback signal. If a service token can cross to demo, a collection member belongs to another tenant, a Content alias changes native QTI identity, or the named legacy collection has other than 17 exact members, rollback to the QTI/Content implementation that introduced the divergence.

QTI assessment-item-ref href/identifier without native member identity or governed learning projection -> qti.artifact.imported_version_id plus alpha.content_kc_tag plus alpha.standard_kc_map

Decision. An ordered QTI package ref resolves within its owning package to the immutable version created at import, never mutable latest_version_id or a global identifier search. Content remains the sole owner of item-to-KC attribution and Curriculum remains the sole owner of KC-to-CASE-standard mapping. QTI delivery JSON may read-project those same-tenant governed GUIDs beside the native member identity; it does not store or infer learning facts.

Implementation requirement. Persist imported_version_id for every package artifact; enrich a matching qti-assessment-item-ref with artifactId, artifactVersionId, sorted knowledgeComponentGuids, and sorted caseStandardGuids by exact same-package href+identifier. Missing tags remain empty so adaptive consumers fail closed. Write missing mappings only through Content POST /kc-tags with provenance, confidence, a dry-run diff, and read-back.

Rollback signal. If an old package changes member identity after authoring, a member resolves outside its package or tenant, QTI stores a duplicate KC/standard fact, or a projection is inferred from XML/title/identifier search, rollback to the QTI implementation or Content mapping input that introduced the divergence.

qti/1edtech release status -> module_release_status derived from loop/qti/state.json

Decision. module_key=qti remains the stable namespace for QTI-owned records, and qti/1edtech release status is a loop-derived surface status rather than prose copied into downstream docs. At this generation, loop/qti/state.json lists every required QTI 1EdTech deliverable as approved, so qti/1edtech is approved.

Implementation requirement. The Platform customer website and /platform/modules implementation must expose per-surface release status from loop-derived module_release_status. For the current QTI 1EdTech state they must mark qti/1edtech approved and may cite the approved architecture, data_dictionary, customer_website, implementation, surface_qc, integration, and skill_pack artifacts. If an older rolled-back Platform API deployment still returns qti/1edtech as under_reconciliation, treat that as a downstream implementation artifact that failed to inherit this dictionary, not as source authority.

Rollback signal. If Platform docs or API responses disagree with loop/qti/state.json about qti/1edtech release status, rollback to Platform data_dictionary for status semantics or to the downstream Platform artifact that failed to inherit them.

Sources Read And Adapted

The site is generated from source data in this artifact directory, approved Platform and QTI architecture truth, and local loop-state evidence for current release status. Vendored QTI material is read-only context for why QTI stays module-owned.

AP One Platform Capability Contract

local decision

loop/context/ap-one-platform-capabilities-decision.md

Issue #1128 QTI structured-response, Results item-calibration, hosted producer-quality verdict, and Events/Analytics lab plus fluency semantics.

Incept Postgres Catalog Snapshot

local Supabase catalog probe

loop/platform/artifacts/1edtech/data_dictionary/source/incept-schema-catalog.json

Actual table/view columns, constraints, indexes, comments, and view definitions for the Incept producer-surface dictionary coverage.

CASE 1EdTech Durable Idempotency Ownership

local decision

loop/context/case-idempotency-claim-decision.md

Issue #1454 CASE tenant/key claim scope, atomic mutation-and-receipt transaction, stale-owner fencing, commit-uncertain policy, and local-ledger migration boundary.

RFC 8785 JSON Canonicalization Scheme

https://www.rfc-editor.org/rfc/rfc8785

fetched live from RFC Editor

Named canonical JSON profile for request_hash so idempotency conflict checks are reproducible across middleware implementations.