qti.tenant.tenant_id |
Stable platform identifier for one tenant boundary. |
uuid Required |
Not parseable as UUID, reused by another tenant, or copied into QTI XML as assessment content. |
Platform gap fill Platform isolation identifier. |
ITD-008 Tenant Boundary |
qti.tenant.tenant_key |
Human-stable lookup key for operations, logs, and local tooling. |
text Required |
Duplicated, empty in API input, used for direct learner identity, or treated as a QTI identifier. |
Platform gap fill Platform operational key. |
ITD-008 Tenant Boundary |
qti.tenant.display_name |
Operational display label for the tenant. |
text Required |
Null, blank in API input, or used in place of tenant_id for joins. |
Platform gap fill Platform console metadata. |
ITD-008 Tenant Boundary |
qti.tenant.created_at |
Timestamp when the tenant row was inserted. |
timestamptz Required, default now() |
Null, manually backdated without migration evidence, or compared as local time without timezone normalization. |
Platform gap fill Platform audit metadata. |
ITD-022 Operational DDL Discipline |
qti.content_package.package_id |
Stable identifier assigned to one package ingest record. |
uuid Required |
Not a UUID or reused across package rows. |
Platform gap fill Platform package identity. |
ITD-009 Package Resource And File Ingest |
qti.content_package.tenant_id |
Tenant that owns the package and all extracted resources. |
uuid Required |
References a missing tenant or disagrees with the tenant path in the API request. |
Platform gap fill Tenant boundary. |
ITD-008 Tenant Boundary, ITD-009 Package Resource And File Ingest |
qti.content_package.source_uri |
Original filename, URI, or content-addressable reference supplied by the ingest caller. |
text Nullable |
Used as a primary identity, contains secrets, or points outside tenant authorization. |
Platform gap fill Operational ingest evidence. |
ITD-009 Package Resource And File Ingest |
qti.content_package.idempotency_key |
Idempotency-Key from the package ingest API so retries return the same package instead of duplicating work. |
text Nullable |
Same tenant reuses the key for different package bytes, or a secret/token is stored here. |
Platform gap fill HTTP/API idempotency behavior. |
ITD-010 Idempotency And Hashes, ITD-018 API Boundary |
qti.content_package.package_hash |
Cryptographic hash of the normalized package payload used to identify repeated imports. |
text Required |
Missing, not reproducible from the normalized package, or reused for different bytes in one tenant. |
Platform gap fill Idempotent persistence and audit. |
ITD-010 Idempotency And Hashes |
qti.content_package.manifest_identifier |
IMS manifest identifier copied from imsmanifest when the package has one. |
text Nullable |
Invented when no manifest exists, changed to a platform name, or used as a database primary key. |
1EdTech pass-through IMS content package manifest identifier. |
ITD-009 Package Resource And File Ingest, ITD-007 Provenance Labels |
qti.content_package.qti_profile |
Conformance profile asserted for this import. |
text Required, default 'qti-3.0' |
Unsupported profile string, null, or used to imply the live network spec changed the accepted bundle. |
Platform gap fill Platform conformance profile label tied to the offline QTI 3.0 bundle. |
ITD-001 Offline 1EdTech Source Bundle, ITD-017 Conformance Evidence |
qti.content_package.import_status |
Current lifecycle state of package ingest. |
text Required, default 'imported' |
Outside the enum set or inconsistent with resource/artifact projection state. |
Platform gap fill Platform package import lifecycle. |
ITD-009 Package Resource And File Ingest |
qti.content_package.metadata |
Generated package-level import evidence such as manifest facts, QTI metadata summaries, counts, validation diagnostics, and vocabulary projections. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, direct learner PII, access tokens, or duplicated source XML bytes. |
Platform gap fill Generated import evidence envelope. |
ITD-009 Package Resource And File Ingest, ITD-020 Validation And Rejection Policy |
qti.content_package.imported_at |
Timestamp when the package row was inserted. |
timestamptz Required, default now() |
Null or used as the source of content version ordering instead of artifact_version.version_number. |
Platform gap fill Import audit metadata. |
ITD-022 Operational DDL Discipline |
qti.package_resource.resource_id |
Stable identifier for this manifest resource row. |
uuid Required |
Not a UUID or reused by another package_resource row. |
Platform gap fill Platform row identity. |
ITD-009 Package Resource And File Ingest |
qti.package_resource.package_id |
Owning content package. |
uuid Required |
Missing package, cross-tenant package/resource mixture, or null. |
Platform gap fill Package ownership boundary. |
ITD-009 Package Resource And File Ingest |
qti.package_resource.resource_identifier |
IMS manifest resource identifier copied from imsmanifest. |
text Required |
Duplicated within a package, rewritten to a platform UUID, or missing when the manifest resource has an identifier. |
1EdTech pass-through IMS manifest resource identifier. |
ITD-009 Package Resource And File Ingest, ITD-007 Provenance Labels |
qti.package_resource.resource_type |
IMS/QTI resource type from the package manifest. |
text Required |
Blank, invented by Alpha naming, or used to bypass validation. |
1EdTech pass-through IMS/QTI package resource type value. |
ITD-009 Package Resource And File Ingest, ITD-007 Provenance Labels |
qti.package_resource.href |
Package-relative path to the resource's primary file. |
text Nullable |
Absolute URL for a packaged file, path traversal, unnormalized slashes, or missing package_file for a required primary file. |
1EdTech pass-through IMS package resource href. |
ITD-009 Package Resource And File Ingest, ITD-020 Validation And Rejection Policy |
qti.package_resource.dependencies |
Manifest dependency references and variant resource links generated from the package manifest. |
jsonb Required, default '[]'::jsonb |
Null, non-array JSON, unresolved dependency, or cross-package dependency not represented as allowed external metadata. |
1EdTech pass-through IMS package resource dependency references. |
ITD-009 Package Resource And File Ingest, ITD-020 Validation And Rejection Policy |
qti.package_resource.metadata |
Manifest-derived metadata, file list, and resource facts generated at ingest. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, direct learner PII, auth tokens, or package bytes. |
1EdTech pass-through IMS manifest resource metadata projection when copied from manifest; generated file inventory remains gap-fill metadata. |
ITD-009 Package Resource And File Ingest, ITD-007 Provenance Labels |
qti.package_file.package_file_id |
Stable identifier for one original package file row. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform file row identity. |
ITD-009 Package Resource And File Ingest |
qti.package_file.package_id |
Owning content package. |
uuid Required |
References a missing package or mixes tenants. |
Platform gap fill Package ownership boundary. |
ITD-009 Package Resource And File Ingest |
qti.package_file.resource_id |
Manifest resource that first listed this file, when applicable. |
uuid Nullable |
References a resource from a different package or tenant. |
Platform gap fill Platform linkage from manifest resource to file preservation. |
ITD-009 Package Resource And File Ingest |
qti.package_file.package_path |
Normalized package-relative path for this file. |
text Required |
Contains ../ escape, backslash ambiguity, an absolute scheme, duplicate normalized path, or a path not present in the uploaded package. |
1EdTech pass-through IMS package-relative file path. |
ITD-009 Package Resource And File Ingest, ITD-020 Validation And Rejection Policy |
qti.package_file.media_type |
Detected or declared media type used for export, diagnostics, and content serving. |
text Required, default 'application/octet-stream' |
Null, unparseable as a media type, or trusted more than validation of the actual content. |
Platform gap fill Generated file metadata for platform serving and diagnostics. |
ITD-009 Package Resource And File Ingest |
qti.package_file.byte_length |
Original byte length of content_bytes. |
integer Required |
Negative, null, or mismatched with content_bytes. |
Platform gap fill Generated package file evidence. |
ITD-009 Package Resource And File Ingest |
qti.package_file.content_hash |
Cryptographic hash of the original file bytes. |
text Required |
Missing, digest does not match content_bytes, or algorithm is not recorded. |
Platform gap fill File-level audit and export integrity evidence. |
ITD-010 Idempotency And Hashes |
qti.package_file.content_bytes |
Original bytes exactly as accepted from the package for this path. |
bytea Required |
Null, replaced by parsed text only, mutated after ingest, or contains a file that failed package-closure validation. |
1EdTech pass-through Original package file bytes. |
ITD-009 Package Resource And File Ingest, ITD-004 XML Authority And Canonical Hashes |
qti.package_file.metadata |
Generated evidence about the file, such as manifest listing flags, validation role, and extracted diagnostics. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, auth tokens, direct learner PII, or raw file bytes duplicated as JSON. |
Platform gap fill Generated file-preservation evidence. |
ITD-009 Package Resource And File Ingest, ITD-020 Validation And Rejection Policy |
qti.package_file.created_at |
Timestamp when the file row was inserted. |
timestamptz Required, default now() |
Null or used as a proxy for QTI content versioning. |
Platform gap fill Package-file audit metadata. |
ITD-022 Operational DDL Discipline |
qti.artifact.artifact_id |
Stable platform identity for one logical artifact across versions. |
uuid Required |
Not a UUID, reused, or derived from a mutable QTI identifier. |
Platform gap fill Platform logical artifact identity. |
ITD-011 Artifact Versioning |
qti.artifact.tenant_id |
Tenant that owns this artifact. |
uuid Required |
Missing tenant or different from the owning package tenant. |
Platform gap fill Tenant ownership boundary. |
ITD-008 Tenant Boundary, ITD-011 Artifact Versioning |
qti.artifact.package_id |
Origin package for imported artifacts. |
uuid Nullable |
References a package owned by another tenant. |
Platform gap fill Package origin evidence. |
ITD-009 Package Resource And File Ingest, ITD-011 Artifact Versioning |
qti.artifact.resource_id |
Origin manifest resource for imported artifacts. |
uuid Nullable |
Resource comes from another package or tenant. |
Platform gap fill Manifest origin evidence. |
ITD-009 Package Resource And File Ingest, ITD-011 Artifact Versioning |
qti.artifact.artifact_kind |
Repository category derived from QTI root element or manifest resource type. |
text Required |
Outside enum set, inconsistent with root_element on versions, or changed for Alpha vocabulary. |
Platform gap fill Gap-fill classification derived from QTI roots. |
ITD-012 Artifact Kind Allowed Values |
qti.artifact.qti_identifier |
QTI identifier attribute copied from the root object when present. |
text Nullable |
Invented when absent, rewritten to a UUID, or assumed unique outside artifact scope. |
1EdTech pass-through QTI identifier attribute. |
ITD-004 XML Authority And Canonical Hashes, ITD-007 Provenance Labels |
qti.artifact.title |
QTI title or generated display label when present. |
text Nullable |
Used as identity, translated without retaining source XML, or contains direct learner PII. |
1EdTech pass-through QTI title or package display metadata when copied from source. |
ITD-004 XML Authority And Canonical Hashes, ITD-007 Provenance Labels |
qti.artifact.language |
xml:lang or package-default language associated with the artifact. |
text Nullable |
Not a language tag, invented without source/default evidence, or used to filter tenant access. |
1EdTech pass-through xml:lang or package default language. |
ITD-004 XML Authority And Canonical Hashes |
qti.artifact.latest_version_id |
Newest immutable artifact version for convenience reads. |
uuid Nullable |
Points to another artifact's version or treated as authoritative history instead of the artifact_version table. |
Platform gap fill Platform version lookup convenience. |
ITD-011 Artifact Versioning |
qti.artifact.created_at |
Logical artifact creation timestamp. |
timestamptz Required, default now() |
Null or used as version_number. |
Platform gap fill Artifact audit metadata. |
ITD-022 Operational DDL Discipline |
qti.artifact_version.artifact_version_id |
Stable identifier for one immutable artifact edition. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform version identity. |
ITD-011 Artifact Versioning |
qti.artifact_version.artifact_id |
Logical artifact this version belongs to. |
uuid Required |
Missing artifact or cross-tenant mismatch through artifact. |
Platform gap fill Version belongs to logical artifact identity. |
ITD-011 Artifact Versioning |
qti.artifact_version.version_number |
Forward-only per-artifact version number. |
integer Required |
Zero or negative by convention, duplicated for an artifact, skipped without migration evidence, or reused after rollback. |
Platform gap fill Immutable version sequencing. |
ITD-011 Artifact Versioning |
qti.artifact_version.source_xml |
Original XML accepted after bundled XSD/Schematron validation. |
xml Required |
Malformed XML, not valid against the bundled schema, contains direct learner runtime PII, or differs from the persisted object graph without trace. |
1EdTech pass-through Original QTI XML accepted from the 1EdTech source format. |
ITD-004 XML Authority And Canonical Hashes, ITD-020 Validation And Rejection Policy |
qti.artifact_version.canonical_xml |
Canonicalized XML used for equivalence checks and stable export. |
text Required |
Not reproducible from object_graph, hash mismatch, or changed after delivery sessions point to this version. |
1EdTech pass-through Canonical QTI XML derived from source XML under platform canonicalization rules. |
ITD-004 XML Authority And Canonical Hashes |
qti.artifact_version.xml_hash |
Hash of canonical_xml used for idempotency and semantic preservation checks. |
text Required |
Does not match canonical_xml, algorithm omitted, or duplicates a prior version for the same artifact. |
Platform gap fill Platform equivalence and idempotency evidence over QTI XML. |
ITD-004 XML Authority And Canonical Hashes, ITD-010 Idempotency And Hashes |
qti.artifact_version.root_element |
Root XML element for this version. |
text Required |
Not present in the bundled root catalog or inconsistent with source_xml. |
1EdTech pass-through QTI root element from bundled schemas. |
ITD-004 XML Authority And Canonical Hashes, ITD-002 Generated Object Model Hub |
qti.artifact_version.root_type |
Generated XSD type name for the root element. |
text Nullable |
Invented type, wrong schema namespace, or mismatch with root_element. |
1EdTech pass-through Generated XSD root type from bundled QTI schemas. |
ITD-002 Generated Object Model Hub, ITD-004 XML Authority And Canonical Hashes |
qti.artifact_version.schema_file |
Bundled schema file used as validation authority. |
text Required |
Live network schema URL, missing local schema, or schema that does not define the root. |
1EdTech pass-through Bundled QTI XSD file. |
ITD-001 Offline 1EdTech Source Bundle, ITD-020 Validation And Rejection Policy |
qti.artifact_version.object_graph |
Canonical generated object-model graph serialized as JSONB for internal persistence. |
jsonb Required |
Null, non-object JSON, loses mixed-content tail text, loses namespace identity, or becomes a public delivery contract. |
Platform gap fill Generated internal object graph for persistence; QTI defines XML, not this JSONB envelope. |
ITD-002 Generated Object Model Hub, ITD-005 Lossless Relational Projection |
qti.artifact_version.delivery_json |
Generated consumer-facing projection used by delivery applications and session snapshots. |
jsonb Nullable |
Drops response identifiers, scoring dependencies, feedback links, accessibility references, or includes source traces not intended for delivery. |
Platform gap fill Generated delivery projection; QTI defines source XML, not this public JSON view. |
ITD-006 JSON Projection Boundaries, ITD-015 Delivery Session Snapshots |
qti.artifact_version.authoring_json |
Generated authoring projection for editors that must preserve all spec-defined fields. |
jsonb Nullable |
Lossy, missing extension payloads, missing source trace needed for edits, or used for delivery without declared lossiness. |
Platform gap fill Generated authoring projection; QTI defines XML, not this editor JSON view. |
ITD-006 JSON Projection Boundaries, ITD-011 Artifact Versioning |
qti.artifact_version.spec_trace |
Generated traceability from classes, fields, and components to XSD/spec anchors. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, live-only references, or links that cannot be reproduced from the bundle. |
1EdTech pass-through Generated traceability to bundled XSD/spec sources. |
ITD-001 Offline 1EdTech Source Bundle, ITD-007 Provenance Labels |
qti.artifact_version.supersedes_version_id |
Previous version replaced by this version, when the save was an edit or replacement. |
uuid Nullable |
Points forward in time, points to another artifact without explicit migration evidence, or creates a cycle. |
Platform gap fill Platform version history link. |
ITD-011 Artifact Versioning |
qti.artifact_version.created_at |
Timestamp when this immutable version was created. |
timestamptz Required, default now() |
Null or mutated to reorder version history. |
Platform gap fill Version audit metadata. |
ITD-022 Operational DDL Discipline |
qti.artifact_version.created_by |
Principal or system actor that created the version. |
text Nullable |
Raw access token, raw JWT subject that identifies a learner, email address, or other direct learner PII. |
Platform gap fill Platform audit metadata. |
ITD-019 Security Boundary, ITD-024 Candidate And Learner Data Privacy |
qti.component.component_id |
Stable identifier for one generated object node row. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform row identity. |
ITD-005 Lossless Relational Projection |
qti.component.artifact_version_id |
Artifact version containing this component. |
uuid Required |
Missing version or cross-artifact projection. |
Platform gap fill Projection belongs to immutable version. |
ITD-005 Lossless Relational Projection, ITD-011 Artifact Versioning |
qti.component.parent_component_id |
Parent object node, preserving the XML/object hierarchy. |
uuid Nullable |
Parent is in a different artifact_version, creates a cycle, or is missing for non-root nodes. |
Platform gap fill Relational hierarchy projection. |
ITD-005 Lossless Relational Projection |
qti.component.ordinal |
Sibling order under parent_component_id. |
integer Required |
Null, negative by repository convention, duplicated among siblings without deterministic tie-break, or changed after hashing. |
Platform gap fill Relational ordering needed for round trip. |
ITD-005 Lossless Relational Projection, ITD-004 XML Authority And Canonical Hashes |
qti.component.element_name |
XML element name generated from the bundled XSD index. |
text Required |
Unknown to the generated model, mismatched with qualified_name, or rewritten to an Alpha name. |
1EdTech pass-through QTI/XML element name from bundled XSD index. |
ITD-002 Generated Object Model Hub, ITD-005 Lossless Relational Projection |
qti.component.qualified_name |
Clark-notation qualified XML name used to preserve namespace identity. |
text Nullable |
Namespace does not match namespace_uri, prefix-only value loses URI, or generated from live schema outside the bundle. |
1EdTech pass-through Qualified XML name preserving namespace identity. |
ITD-004 XML Authority And Canonical Hashes, ITD-005 Lossless Relational Projection |
qti.component.namespace_uri |
Namespace URI for this XML component, if any. |
text Nullable |
Prefix instead of URI, wrong QTI namespace, or discarded for namespaced elements. |
1EdTech pass-through Namespace URI from QTI/XML content. |
ITD-004 XML Authority And Canonical Hashes |
qti.component.type_name |
Generated XSD type name for this object node. |
text Nullable |
Invented type, type from the wrong namespace, or inconsistent with element_name. |
1EdTech pass-through Generated XSD type name. |
ITD-002 Generated Object Model Hub, ITD-005 Lossless Relational Projection |
qti.component.qti_identifier |
QTI identifier attribute on this component when present. |
text Nullable |
Invented, coerced to UUID, or assumed globally unique across artifacts. |
1EdTech pass-through QTI identifier attribute. |
ITD-004 XML Authority And Canonical Hashes, ITD-007 Provenance Labels |
qti.component.component_path |
Stable generated path from the root object to this component. |
text Required |
Not stable across rehydration, duplicated, or encodes tenant/private data. |
Platform gap fill Platform traceability and diff path. |
ITD-005 Lossless Relational Projection |
qti.component.attributes |
Raw generated attribute projection for fields not promoted to typed query tables. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, drops data-* extension attributes, or stores API auth headers. |
1EdTech pass-through Raw QTI/XML attributes not promoted to query columns. |
ITD-004 XML Authority And Canonical Hashes, ITD-005 Lossless Relational Projection |
qti.component.text_value |
Text node value for text-bearing QTI and embedded content nodes. |
text Nullable |
Dropped for mixed content, normalized in a way that changes semantics, or used to store learner responses. |
1EdTech pass-through Text node value from QTI or permitted embedded content. |
ITD-004 XML Authority And Canonical Hashes, ITD-005 Lossless Relational Projection |
qti.component.tail_value |
Tail text after this element, required for mixed-content XML round trips. |
text Nullable |
Dropped because it is inconvenient, moved into text_value incorrectly, or included in delivery_json without declared lossiness. |
1EdTech pass-through Mixed-content XML tail text needed for round trips. |
ITD-004 XML Authority And Canonical Hashes, ITD-005 Lossless Relational Projection |
qti.component.source_trace |
Generated trace to XSD and spec source for this component. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, live-only link, or not aligned with element_name/type_name. |
1EdTech pass-through Generated traceability to bundled XSD/spec sources. |
ITD-001 Offline 1EdTech Source Bundle, ITD-007 Provenance Labels |
qti.variable_declaration.variable_declaration_id |
Stable row identifier for one promoted variable declaration. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform projection row identity. |
ITD-013 Variable Declaration Projection |
qti.variable_declaration.artifact_version_id |
Artifact version that declares the variable. |
uuid Required |
Missing version or mismatch with component_id artifact_version. |
Platform gap fill Variable projection belongs to immutable content version. |
ITD-013 Variable Declaration Projection, ITD-011 Artifact Versioning |
qti.variable_declaration.component_id |
Component node that declared this variable. |
uuid Required |
Component is not in the same artifact_version or is not a variable declaration node. |
Platform gap fill Projection link back to object graph component. |
ITD-005 Lossless Relational Projection, ITD-013 Variable Declaration Projection |
qti.variable_declaration.variable_kind |
QTI variable category. |
text Required |
Outside enum set or used to invent a platform-only variable category. |
1EdTech pass-through QTI variable declaration category. |
ITD-013 Variable Declaration Projection, ITD-007 Provenance Labels |
qti.variable_declaration.identifier |
QTI variable identifier. |
text Required |
Blank, duplicated within kind/version, rewritten to UUID, or mismatched with processing operands. |
1EdTech pass-through QTI variable identifier value. |
ITD-013 Variable Declaration Projection, ITD-004 XML Authority And Canonical Hashes |
qti.variable_declaration.cardinality |
QTI cardinality for the variable value container. |
text Nullable |
Outside QTI cardinality vocabulary, inconsistent with associated interaction, or inconsistent with JSON value shape. |
1EdTech pass-through QTI cardinality value. |
ITD-013 Variable Declaration Projection, ITD-021 Runtime Execution Profile |
qti.variable_declaration.base_type |
QTI base-type for atomic values when the declaration has one. |
text Nullable |
Outside QTI base-type vocabulary, present for record in a way QTI forbids, or inconsistent with correct_response/default_value. |
1EdTech pass-through QTI base-type value. |
ITD-013 Variable Declaration Projection, ITD-021 Runtime Execution Profile |
qti.variable_declaration.default_value |
Generated object value for qti-default-value. |
jsonb Nullable |
Shape does not match cardinality/base_type, contains unvalidated extension payload, or is used as candidate response state. |
1EdTech pass-through Generated value for qti-default-value. |
ITD-013 Variable Declaration Projection, ITD-004 XML Authority And Canonical Hashes |
qti.variable_declaration.correct_response |
Generated object value for qti-correct-response. |
jsonb Nullable |
Correct response values are coerced, ordered values are stored as unordered, or value type conflicts with base_type. |
1EdTech pass-through Generated value for qti-correct-response. |
ITD-013 Variable Declaration Projection, ITD-021 Runtime Execution Profile |
qti.variable_declaration.mapping |
Generated mapping, areaMapping, matchTable, or interpolationTable detail. |
jsonb Nullable |
Drops default mapping value, loses area coordinates, changes scoring numeric precision, or omits source trace. |
1EdTech pass-through Generated QTI mapping/detail payload. |
ITD-013 Variable Declaration Projection, ITD-021 Runtime Execution Profile |
qti.variable_declaration.source_trace |
Generated trace to XSD and spec section for the variable declaration. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, or not tied to the declaring component. |
1EdTech pass-through Generated trace to XSD and spec section. |
ITD-001 Offline 1EdTech Source Bundle, ITD-007 Provenance Labels |
qti.processing_rule.processing_rule_id |
Stable row identifier for one promoted processing rule or expression node. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform projection row identity. |
ITD-014 Processing Rule Projection |
qti.processing_rule.artifact_version_id |
Artifact version containing the processing rule. |
uuid Required |
Missing version or mismatch with component_id artifact_version. |
Platform gap fill Processing projection belongs to immutable content version. |
ITD-014 Processing Rule Projection, ITD-011 Artifact Versioning |
qti.processing_rule.component_id |
Component node backing this processing rule. |
uuid Required |
Component is not in the same artifact_version or is not a processing/expression node. |
Platform gap fill Projection link back to generated component. |
ITD-005 Lossless Relational Projection, ITD-014 Processing Rule Projection |
qti.processing_rule.parent_processing_rule_id |
Parent processing rule for nested expression and rule trees. |
uuid Nullable |
Parent is in another artifact_version, creates a cycle, or changes execution semantics. |
Platform gap fill Relational processing-tree hierarchy. |
ITD-014 Processing Rule Projection |
qti.processing_rule.rule_scope |
Processing scope used for query and execution grouping. |
text Required |
Outside enum set or used to claim QTI defines this SQL row scope. |
Platform gap fill Repository classification for persisted processing rows. |
ITD-014 Processing Rule Projection |
qti.processing_rule.rule_name |
QTI processing rule or expression element/operator name. |
text Required |
Not a QTI processing/expression element, renamed for Alpha, or mismatched with component.element_name. |
1EdTech pass-through QTI processing rule or expression element name. |
ITD-014 Processing Rule Projection, ITD-021 Runtime Execution Profile |
qti.processing_rule.sequence_number |
Order within the parent processing scope. |
integer Required |
Null, order differs from object graph, or ties cause nondeterministic execution. |
Platform gap fill Execution ordering aid. |
ITD-014 Processing Rule Projection, ITD-021 Runtime Execution Profile |
qti.processing_rule.operands |
Generated operand references and literal values for execution. |
jsonb Required, default '[]'::jsonb |
Null, non-array JSON, points to undeclared variables, loses numeric precision, or contains unredacted learner identity. |
1EdTech pass-through Generated QTI operand references and literal values. |
ITD-014 Processing Rule Projection, ITD-021 Runtime Execution Profile |
qti.processing_rule.source_trace |
Generated trace to XSD and spec section for this processing rule. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, or not tied to the rule_name/component. |
1EdTech pass-through Generated trace to XSD and spec section. |
ITD-001 Offline 1EdTech Source Bundle, ITD-007 Provenance Labels |
qti.delivery_session.delivery_session_id |
Stable session identifier exposed by delivery APIs. |
uuid Required |
Not a UUID, reused, or guessable outside API authorization. |
Platform gap fill Platform delivery session identity. |
ITD-015 Delivery Session Snapshots |
qti.delivery_session.tenant_id |
Tenant boundary for the delivery session. |
uuid Required |
Does not match authenticated tenant claim or root artifact tenant. |
Platform gap fill Tenant-scoped learner runtime boundary. |
ITD-008 Tenant Boundary, ITD-015 Delivery Session Snapshots |
qti.delivery_session.candidate_ref |
Opaque tenant-scoped pseudonymous UUID string for the candidate. |
text Required |
Contains direct learner or parent PII, raw JWT subject, auth token, SIS ID, or is not tenant-scoped. |
Platform gap fill Platform learner privacy boundary. QTI_CONTEXT candidateIdentifier uses this value only when runtime context needs it. |
ITD-024 Candidate And Learner Data Privacy, ITD-019 Security Boundary |
qti.delivery_session.root_artifact_version_id |
Immutable item, test, or section version delivered in this session. |
uuid Required |
Missing version, version not owned by tenant, or changed after session start. |
Platform gap fill Session pins immutable content version. |
ITD-015 Delivery Session Snapshots, ITD-011 Artifact Versioning |
qti.delivery_session.status |
Session lifecycle state. |
text Required, default 'created' |
Outside enum set or inconsistent with attempts, submitted_at, or review workflow. |
Platform gap fill Platform delivery lifecycle. |
ITD-015 Delivery Session Snapshots |
qti.delivery_session.delivery_json_snapshot |
Snapshot of delivery_json at session start. |
jsonb Required |
Null, mismatched to root_artifact_version_id at start, mutated after attempts, or contains authoring-only trace without declared lossiness. |
Platform gap fill Generated delivery projection snapshot for historical stability. |
ITD-006 JSON Projection Boundaries, ITD-015 Delivery Session Snapshots |
qti.delivery_session.session_state |
Runtime state not modeled as QTI variables, such as navigation, item sequencing, resume information, or review flags. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, auth headers, raw PNP records, direct learner identity, or state that contradicts delivery_json_snapshot. |
Platform gap fill Platform runtime state outside QTI variable declarations. |
ITD-015 Delivery Session Snapshots, ITD-024 Candidate And Learner Data Privacy |
qti.delivery_session.created_at |
Session creation timestamp. |
timestamptz Required, default now() |
Null or later than updated_at. |
Platform gap fill Runtime audit metadata. |
ITD-022 Operational DDL Discipline |
qti.delivery_session.updated_at |
Last session state mutation timestamp. |
timestamptz Required, default now() |
Null, earlier than created_at, or stale after status/session_state update. |
Platform gap fill Runtime audit metadata. |
ITD-022 Operational DDL Discipline |
qti.attempt.attempt_id |
Stable identifier for one attempt record. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform attempt identity. |
ITD-016 Attempt State And Processing Trace |
qti.attempt.delivery_session_id |
Owning delivery session. |
uuid Required |
Missing session or tenant mismatch through session. |
Platform gap fill Attempt belongs to learner runtime session. |
ITD-015 Delivery Session Snapshots, ITD-016 Attempt State And Processing Trace |
qti.attempt.artifact_version_id |
Immutable item/test artifact version attempted. |
uuid Required |
Does not belong to the delivery session snapshot or changes after processing. |
Platform gap fill Attempt pins content version for reproducible processing. |
ITD-011 Artifact Versioning, ITD-016 Attempt State And Processing Trace |
qti.attempt.attempt_number |
Attempt count within a session and artifact version. |
integer Required |
Zero or negative by convention, duplicated, or reused after an adaptive attempt changes state. |
Platform gap fill Platform attempt sequencing. |
ITD-016 Attempt State And Processing Trace |
qti.attempt.status |
Attempt lifecycle state. |
text Required, default 'active' |
Outside enum set or inconsistent with suspended_at/submitted_at. |
Platform gap fill Platform attempt lifecycle. |
ITD-016 Attempt State And Processing Trace |
qti.attempt.response_state |
Candidate response variables at the last processing point. |
jsonb Required, default '{}'::jsonb |
Null, values inconsistent with qti.variable_declaration, unnecessary learner PII copied from outside the response, or logged without redaction. |
1EdTech pass-through QTI response variable state bound to learner runtime. |
ITD-016 Attempt State And Processing Trace, ITD-024 Candidate And Learner Data Privacy |
qti.attempt.template_state |
Template variables used for item cloning and stability. |
jsonb Required, default '{}'::jsonb |
Null, regenerated on read instead of persisted, inconsistent with template processing trace, or logged with learner identity. |
1EdTech pass-through QTI template variable state bound to session stability. |
ITD-016 Attempt State And Processing Trace, ITD-021 Runtime Execution Profile, ITD-024 Candidate And Learner Data Privacy |
qti.attempt.outcome_state |
Outcome variables after template, response, and outcome processing. |
jsonb Required, default '{}'::jsonb |
Null, cannot be reproduced by processing rules under the runtime profile, or includes unsupported outcomes without diagnostics. |
1EdTech pass-through QTI outcome variable state. |
ITD-016 Attempt State And Processing Trace, ITD-021 Runtime Execution Profile, ITD-024 Candidate And Learner Data Privacy |
qti.attempt.processing_trace |
Deterministic trace of template, response, and outcome processing operations. |
jsonb Required, default '[]'::jsonb |
Null, non-array JSON, nondeterministic, lacks failed-closed diagnostics for unsupported operators, or contains auth/PII data. |
Platform gap fill Implementation trace of QTI processing execution; QTI defines processing semantics, not this stored audit trail. |
ITD-016 Attempt State And Processing Trace, ITD-021 Runtime Execution Profile, ITD-024 Candidate And Learner Data Privacy |
qti.attempt.started_at |
Attempt start timestamp. |
timestamptz Required, default now() |
Null or after submitted_at. |
Platform gap fill Runtime audit metadata. |
ITD-022 Operational DDL Discipline |
qti.attempt.suspended_at |
Attempt suspension timestamp, if the attempt was suspended. |
timestamptz Nullable |
Set while status never suspended without lifecycle evidence, before started_at, or after submitted_at. |
Platform gap fill Runtime lifecycle audit metadata. |
ITD-016 Attempt State And Processing Trace |
qti.attempt.submitted_at |
Attempt submission timestamp, if the attempt was submitted. |
timestamptz Nullable |
Before started_at, set while status remains active without evidence, or absent for submitted/reviewed attempts. |
Platform gap fill Runtime lifecycle audit metadata. |
ITD-016 Attempt State And Processing Trace |
qti.conformance_run.conformance_run_id |
Stable identifier for one conformance run. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform evidence row identity. |
ITD-017 Conformance Evidence |
qti.conformance_run.profile |
Targeted QTI 3.0 conformance profile or optional feature set. |
text Required |
Unsupported profile, Alpha-only label, or profile not represented by assertions. |
Platform gap fill Platform conformance profile label tied to the QTI bundle. |
ITD-017 Conformance Evidence, ITD-001 Offline 1EdTech Source Bundle |
qti.conformance_run.bundle_hash |
Hash of the offline spec bundle used by the run. |
text Required |
Missing, live network URL, or not reproducible from the bundle used. |
Platform gap fill Release evidence ties to immutable local source bundle. |
ITD-001 Offline 1EdTech Source Bundle, ITD-017 Conformance Evidence |
qti.conformance_run.runner_version |
Version or identity of the conformance runner. |
text Required |
Blank, vague, or points to unpinned code. |
Platform gap fill Release evidence metadata. |
ITD-017 Conformance Evidence |
qti.conformance_run.started_at |
Run start timestamp. |
timestamptz Required, default now() |
Null or after finished_at. |
Platform gap fill Conformance audit metadata. |
ITD-022 Operational DDL Discipline |
qti.conformance_run.finished_at |
Run finish timestamp, if complete. |
timestamptz Nullable |
Before started_at, absent for completed terminal status without explanation, or set while still running. |
Platform gap fill Conformance lifecycle audit metadata. |
ITD-017 Conformance Evidence |
qti.conformance_run.status |
Run lifecycle status. |
text Required, default 'running' |
Outside enum set or inconsistent with child assertion statuses. |
Platform gap fill Release evidence lifecycle. |
ITD-017 Conformance Evidence |
qti.conformance_run.summary |
Generated coverage and pass/fail summary. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, contradicts assertion rows, or includes raw package bytes/secrets. |
Platform gap fill Generated release-gate summary. |
ITD-017 Conformance Evidence |
qti.conformance_assertion.conformance_assertion_id |
Stable identifier for one assertion result. |
uuid Required |
Not a UUID or reused. |
Platform gap fill Platform assertion row identity. |
ITD-017 Conformance Evidence |
qti.conformance_assertion.conformance_run_id |
Owning conformance run. |
uuid Required |
Missing parent run or status contradicts parent run summary. |
Platform gap fill Assertion belongs to release evidence run. |
ITD-017 Conformance Evidence |
qti.conformance_assertion.assertion_key |
Stable key generated by the conformance runner for this assertion. |
text Required |
Duplicated in a run, nondeterministic across reruns, or so vague it cannot locate the assertion. |
Platform gap fill Generated assertion identity. |
ITD-017 Conformance Evidence |
qti.conformance_assertion.artifact_ref |
Example, fixture, or artifact path covered by this assertion. |
text Nullable |
Live-only URL, missing fixture, or reference to learner-runtime data. |
1EdTech pass-through QTI example or artifact reference covered by conformance evidence. |
ITD-001 Offline 1EdTech Source Bundle, ITD-017 Conformance Evidence |
qti.conformance_assertion.spec_ref |
Spec section, schema component, or generated trace reference covered by this assertion. |
text Nullable |
Points only to live network docs, wrong schema file, or cannot be followed by a future generator. |
1EdTech pass-through 1EdTech spec, schema, or generated traceability reference. |
ITD-001 Offline 1EdTech Source Bundle, ITD-007 Provenance Labels, ITD-017 Conformance Evidence |
qti.conformance_assertion.status |
Assertion result status. |
text Required |
Outside enum set, contradicts details, or failed/error without diagnostics. |
Platform gap fill Generated assertion result lifecycle. |
ITD-017 Conformance Evidence |
qti.conformance_assertion.details |
Assertion diagnostics, canonical hashes, processing outcomes, and failure details. |
jsonb Required, default '{}'::jsonb |
Null, non-object JSON, missing diagnostics for failure, or contains auth/PII data. |
Platform gap fill Generated release-gate diagnostics; QTI defines conformance expectations, not this evidence payload. |
ITD-017 Conformance Evidence, ITD-024 Candidate And Learner Data Privacy |