439 lines
13 KiB
JSON
439 lines
13 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://thinkloom.app/schemas/provenance/1.0/harp-export-manifest.schema.json",
|
|
"title": "HARP export manifest",
|
|
"description": "Immutable manifest binding the HARP, contribution map, exact deposit, verification report, archive artifacts, sanitization rules, omissions, and hashes. Its digest identity excludes manifest_sha256.",
|
|
"type": "object",
|
|
"properties": {
|
|
"schema_version": {
|
|
"const": "1.0"
|
|
},
|
|
"manifest_id": {
|
|
"type": "string",
|
|
"pattern": "^manifest_[0-9A-HJKMNP-TV-Z]{26}$"
|
|
},
|
|
"project_id": {
|
|
"type": "string",
|
|
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
|
},
|
|
"harp_id": {
|
|
"type": "string",
|
|
"pattern": "^harp_[0-9A-HJKMNP-TV-Z]{26}$"
|
|
},
|
|
"harp_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"deposit_id": {
|
|
"type": "string",
|
|
"pattern": "^deposit_[0-9A-HJKMNP-TV-Z]{26}$"
|
|
},
|
|
"deposit_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"contribution_map_id": {
|
|
"type": "string",
|
|
"pattern": "^map_[0-9A-HJKMNP-TV-Z]{26}$"
|
|
},
|
|
"contribution_map_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"cpl_chain_head": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"report_metadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deposit_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"manuscript_revision_id": {
|
|
"type": "string",
|
|
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
|
},
|
|
"manuscript_revision_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"cpl_chain_head": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"cpl_event_sequence": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"harp_schema_version": {
|
|
"type": "string",
|
|
"pattern": "^\\d+\\.\\d+$"
|
|
},
|
|
"harp_generator_version": {
|
|
"type": "string",
|
|
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
},
|
|
"application_version": {
|
|
"type": "string",
|
|
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
},
|
|
"policy_profile_id": {
|
|
"type": "string",
|
|
"pattern": "^policyprofile_[0-9A-HJKMNP-TV-Z]{26}$"
|
|
},
|
|
"policy_profile_version": {
|
|
"type": "string",
|
|
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
},
|
|
"policy_profile_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"policy_retrieval_date": {
|
|
"type": "string",
|
|
"format": "date"
|
|
},
|
|
"sanitization_profile": {
|
|
"enum": [
|
|
"full_private",
|
|
"sanitized"
|
|
]
|
|
},
|
|
"legal_scope_statement": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"required": [
|
|
"deposit_sha256",
|
|
"manuscript_revision_id",
|
|
"manuscript_revision_sha256",
|
|
"cpl_chain_head",
|
|
"cpl_event_sequence",
|
|
"harp_schema_version",
|
|
"harp_generator_version",
|
|
"application_version",
|
|
"policy_profile_id",
|
|
"policy_profile_version",
|
|
"policy_profile_sha256",
|
|
"policy_retrieval_date",
|
|
"sanitization_profile",
|
|
"legal_scope_statement"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"verification_report_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"sanitization_profile": {
|
|
"enum": [
|
|
"full_private",
|
|
"sanitized"
|
|
]
|
|
},
|
|
"sanitization_rules_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"omissions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"category": {
|
|
"enum": [
|
|
"private_conversation",
|
|
"rejected_output",
|
|
"rejected_model_output",
|
|
"credential",
|
|
"credential_authorization_material",
|
|
"personal_identifier",
|
|
"internal_path",
|
|
"provider_metadata",
|
|
"provider_metadata_not_required",
|
|
"protected_source_body",
|
|
"other"
|
|
]
|
|
},
|
|
"action": {
|
|
"enum": [
|
|
"exclude",
|
|
"redact",
|
|
"summarize"
|
|
]
|
|
},
|
|
"count": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"disclosure_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
}
|
|
},
|
|
"required": [
|
|
"category",
|
|
"action",
|
|
"count",
|
|
"disclosure_sha256"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"files": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"enum": [
|
|
"human_readable_harp",
|
|
"machine_readable_harp",
|
|
"contribution_map",
|
|
"deposit_copy",
|
|
"verification_report",
|
|
"supporting_archive"
|
|
]
|
|
},
|
|
"path": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$"
|
|
},
|
|
"sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
},
|
|
"size": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"privacy_classification": {
|
|
"enum": [
|
|
"registration",
|
|
"deposit",
|
|
"sanitized_evidence",
|
|
"private"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"role",
|
|
"path",
|
|
"sha256",
|
|
"size",
|
|
"privacy_classification"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"minItems": 6,
|
|
"uniqueItems": true,
|
|
"allOf": [
|
|
{
|
|
"contains": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"const": "human_readable_harp"
|
|
}
|
|
},
|
|
"required": [
|
|
"role"
|
|
]
|
|
},
|
|
"minContains": 1,
|
|
"maxContains": 1
|
|
},
|
|
{
|
|
"contains": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"const": "machine_readable_harp"
|
|
}
|
|
},
|
|
"required": [
|
|
"role"
|
|
]
|
|
},
|
|
"minContains": 1,
|
|
"maxContains": 1
|
|
},
|
|
{
|
|
"contains": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"const": "contribution_map"
|
|
}
|
|
},
|
|
"required": [
|
|
"role"
|
|
]
|
|
},
|
|
"minContains": 1,
|
|
"maxContains": 1
|
|
},
|
|
{
|
|
"contains": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"const": "deposit_copy"
|
|
}
|
|
},
|
|
"required": [
|
|
"role"
|
|
]
|
|
},
|
|
"minContains": 1,
|
|
"maxContains": 1
|
|
},
|
|
{
|
|
"contains": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"const": "verification_report"
|
|
}
|
|
},
|
|
"required": [
|
|
"role"
|
|
]
|
|
},
|
|
"minContains": 1,
|
|
"maxContains": 1
|
|
},
|
|
{
|
|
"contains": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"const": "supporting_archive"
|
|
}
|
|
},
|
|
"required": [
|
|
"role"
|
|
]
|
|
},
|
|
"minContains": 1,
|
|
"maxContains": 1
|
|
}
|
|
]
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
|
},
|
|
"manifest_sha256": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[a-f0-9]{64}$"
|
|
}
|
|
},
|
|
"required": [
|
|
"schema_version",
|
|
"manifest_id",
|
|
"project_id",
|
|
"harp_id",
|
|
"harp_sha256",
|
|
"deposit_id",
|
|
"deposit_sha256",
|
|
"contribution_map_id",
|
|
"contribution_map_sha256",
|
|
"cpl_chain_head",
|
|
"report_metadata",
|
|
"verification_report_sha256",
|
|
"sanitization_profile",
|
|
"sanitization_rules_sha256",
|
|
"omissions",
|
|
"files",
|
|
"created_at",
|
|
"manifest_sha256"
|
|
],
|
|
"additionalProperties": false,
|
|
"examples": [
|
|
{
|
|
"schema_version": "1.0",
|
|
"manifest_id": "manifest_01J00000000000000000000003",
|
|
"project_id": "project_01J00000000000000000000001",
|
|
"harp_id": "harp_01J00000000000000000000002",
|
|
"harp_sha256": "sha256:20e3ba5bb0c6c25c8d047e0e8b82a17044193e0b8ce521612d48cc85fed5feb9",
|
|
"deposit_id": "deposit_01J00000000000000000000000",
|
|
"deposit_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
|
"contribution_map_id": "map_01J0000000000000000000000Z",
|
|
"contribution_map_sha256": "sha256:28562ec310a4eda35436bf01ec534d0639939365af453e3c922c492ee0ebff00",
|
|
"cpl_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
"report_metadata": {
|
|
"deposit_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
|
"manuscript_revision_id": "revision_01J0000000000000000000000B",
|
|
"manuscript_revision_sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
"cpl_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
"cpl_event_sequence": 42,
|
|
"harp_schema_version": "1.0",
|
|
"harp_generator_version": "1.0.0",
|
|
"application_version": "0.5.11",
|
|
"policy_profile_id": "policyprofile_01J00000000000000000000004",
|
|
"policy_profile_version": "1.0.0",
|
|
"policy_profile_sha256": "sha256:77bfc640282012169a92feb92b9539ca6826b798659cb3f7d07beb864e53abba",
|
|
"policy_retrieval_date": "2026-07-19",
|
|
"sanitization_profile": "full_private",
|
|
"legal_scope_statement": "Copyrightability and registration scope remain determinations of the U.S. Copyright Office."
|
|
},
|
|
"verification_report_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
"sanitization_profile": "full_private",
|
|
"sanitization_rules_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
"omissions": [],
|
|
"files": [
|
|
{
|
|
"role": "human_readable_harp",
|
|
"path": "reports/harp/harp.pdf",
|
|
"sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
"size": 2048,
|
|
"privacy_classification": "registration"
|
|
},
|
|
{
|
|
"role": "machine_readable_harp",
|
|
"path": "reports/harp/harp.json",
|
|
"sha256": "sha256:20e3ba5bb0c6c25c8d047e0e8b82a17044193e0b8ce521612d48cc85fed5feb9",
|
|
"size": 4096,
|
|
"privacy_classification": "registration"
|
|
},
|
|
{
|
|
"role": "contribution_map",
|
|
"path": "reports/harp/contribution-map.json",
|
|
"sha256": "sha256:28562ec310a4eda35436bf01ec534d0639939365af453e3c922c492ee0ebff00",
|
|
"size": 3072,
|
|
"privacy_classification": "registration"
|
|
},
|
|
{
|
|
"role": "deposit_copy",
|
|
"path": "deposits/registration-manuscript.pdf",
|
|
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
|
"size": 4096,
|
|
"privacy_classification": "deposit"
|
|
},
|
|
{
|
|
"role": "verification_report",
|
|
"path": "reports/harp/verification.json",
|
|
"sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
"size": 1024,
|
|
"privacy_classification": "registration"
|
|
},
|
|
{
|
|
"role": "supporting_archive",
|
|
"path": "reports/harp/supporting-archive.zip",
|
|
"sha256": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
"size": 8192,
|
|
"privacy_classification": "private"
|
|
}
|
|
],
|
|
"created_at": "2026-07-17T18:43:11.456Z",
|
|
"manifest_sha256": "sha256:50be7f8f16d6f83dc58ec26670499403ccc2f7f7655e28cd8e1bf7485d768324"
|
|
}
|
|
]
|
|
}
|