qti.tenant | tenant_id, tenant_key, display_name, created_at | ITD-008 | All fields are platform isolation metadata. |
qti.content_package | package_id, tenant_id, source_uri, idempotency_key, package_hash, manifest_identifier, qti_profile, import_status, metadata, imported_at | ITD-009, ITD-010 | manifest_identifier is pass-through when present. IDs, tenant, URI, hashes, profile, status, metadata envelope, and timestamps are gap fills. |
qti.package_resource | resource_id, package_id, resource_identifier, resource_type, href, dependencies, metadata | ITD-009 | Manifest identifier, type, href, dependencies, and manifest-derived metadata are pass-through values inside a gap-fill row. Row IDs and foreign keys are gap fills. |
qti.package_file | package_file_id, package_id, resource_id, package_path, media_type, byte_length, content_hash, content_bytes, metadata, created_at | ITD-009 | Package path and content bytes preserve package source. IDs, hashes, media detection, metadata envelope, and timestamps are gap fills. |
qti.artifact | artifact_id, tenant_id, package_id, resource_id, artifact_kind, qti_identifier, title, language, latest_version_id, created_at | ITD-011, ITD-012 | qti_identifier, title, and language are pass-through when copied from QTI XML or package defaults. IDs, kind, latest pointer, and timestamps are gap fills. |
qti.artifact_version | artifact_version_id, artifact_id, version_number, source_xml, canonical_xml, xml_hash, root_element, root_type, schema_file, object_graph, delivery_json, authoring_json, spec_trace, supersedes_version_id, created_at, created_by | ITD-004, ITD-006, ITD-011 | XML, root, schema, and trace values are pass-through or generated from 1EdTech sources. Versioning, hashes, JSON projections, supersession, actor, and timestamps are gap fills. |
qti.component | component_id, artifact_version_id, parent_component_id, ordinal, element_name, qualified_name, namespace_uri, type_name, qti_identifier, component_path, attributes, text_value, tail_value, source_trace | ITD-005 | Element names, namespaces, types, QTI identifiers, attributes, text, tail, and source trace are pass-through/generated QTI values. Row identity, parent linkage, ordinal, and component path are gap fills. |
qti.variable_declaration | variable_declaration_id, artifact_version_id, component_id, variable_kind, identifier, cardinality, base_type, default_value, correct_response, mapping, source_trace | ITD-013 | Variable kind, identifier, cardinality, base type, default, correct response, mapping, and trace are QTI pass-through/generated values. Row IDs and links are gap fills. |
qti.processing_rule | processing_rule_id, artifact_version_id, component_id, parent_processing_rule_id, rule_scope, rule_name, sequence_number, operands, source_trace | ITD-014, ITD-021 | Rule names, operands, and source trace are generated QTI values. Row IDs, parent links, scope, and sequence are gap fills. |
qti.delivery_session | delivery_session_id, tenant_id, candidate_ref, root_artifact_version_id, status, delivery_json_snapshot, session_state, created_at, updated_at | ITD-015, ITD-024 | All fields are platform runtime persistence gap fills, except the snapshot contains generated delivery projection values. candidate_ref is a pseudonymous learner reference, not direct PII. |
qti.attempt | attempt_id, delivery_session_id, artifact_version_id, attempt_number, status, response_state, template_state, outcome_state, processing_trace, started_at, suspended_at, submitted_at | ITD-016, ITD-024 | Response, template, and outcome state preserve QTI variable values and learner-derived scoring state. Attempt row identity, lifecycle, trace shape, timestamps, redaction, retention, and deletion are gap fills. |
qti.conformance_run | conformance_run_id, profile, bundle_hash, runner_version, started_at, finished_at, status, summary | ITD-017 | Profile and bundle references tie to source evidence; the evidence row, status, runner version, timestamps, and summary are gap fills. |
qti.conformance_assertion | conformance_assertion_id, conformance_run_id, assertion_key, artifact_ref, spec_ref, status, details | ITD-017 | Artifact and spec references are pass-through references to examples or source specs. Assertion row identity, generated status, and diagnostics are gap fills. |