{
  "schema_version": "1.1.0",
  "resource_release_version": "1.1.0",
  "accepted_review_versions": [
    "1.0.0",
    "1.1.0"
  ],
  "display_timezone": "America/Phoenix",
  "canonical_format": "JSON",
  "import_limit_bytes": 8388608,
  "field_text_limit_characters": 100000,
  "notes": [
    "Each required key must be present, even when its value is blank or null. Old 1.0.0 records keep their shape. Version 1.1.0 adds optional fields for sources, unfinished decisions, and old decision IDs. Missing source fields are not inserted into old saved versions.",
    "A valid file can still be on Hold or unfinished. Draft addresses and dates stay plain text until they pass evidence checks. Times recorded by the system still need to pass strict checks.",
    "The size limit counts the exact UTF-8 JSON file, including spaces, the final newline, and saved versions. Saving and opening use the same limit.",
    "Opening a 1.0.0 file keeps its decisions and saved versions unchanged. The tool checks readiness again. An old approval that fails the repaired rules is shown as history, not current approval.",
    "An unfinished decision reason is saved in pending_decision, outside evidence snapshots. It does not approve publication.",
    "CSV includes readable fields and full records in payload_json. Its formula protection does not change the original JSON.",
    "The workbook needs manual version records. It cannot be imported as JSON."
  ],
  "fields": [
    {
      "entity": "review",
      "field": "review_id",
      "type": "string",
      "description": "The review’s stable ID. Linked records must use the same ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "current_revision_id",
      "type": "string",
      "description": "The current version’s ID. A decision names the exact saved version it covers.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "parent_revision_id_or_null",
      "type": [
        "string",
        "null"
      ],
      "description": "The previous saved version, or null for the first one. The chain cannot loop.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "created_at",
      "type": "string",
      "description": "When the app created this record, with a timezone offset. The time comes from the device clock.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "changed_by",
      "type": "string",
      "description": "Who the record says made the change. The name is not independently verified.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "change_summary",
      "type": "string",
      "description": "What changed in this version.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "content_type",
      "type": "string",
      "description": "The kind of writing: job listing, company entry, or business news.",
      "required_key": true,
      "allowed_values": [
        "job_listing",
        "company_directory",
        "business_news"
      ]
    },
    {
      "entity": "review",
      "field": "title",
      "type": "string",
      "description": "A title people can recognize for the review or source.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "original_draft_text",
      "type": "string",
      "description": "The full original draft, kept for comparison.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "proposed_publication_text",
      "type": "string",
      "description": "The full draft you plan to publish. An edit clears its claim-list check and current approval.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "intended_use",
      "type": "string",
      "description": "What you will publish, where, and which reader choice it may affect.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "intended_timeframe",
      "type": "string",
      "description": "The date or period the draft needs to describe.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "timeframe_scope",
      "type": "string",
      "description": "Whether the draft describes now, the past, or facts not tied to a date.",
      "required_key": true,
      "allowed_values": [
        "current",
        "historical",
        "not_time_sensitive"
      ]
    },
    {
      "entity": "review",
      "field": "audience",
      "type": "string",
      "description": "Who may rely on the draft and its claims.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "evidence_mode",
      "type": "string",
      "description": "Keeps your own review, made-up practice, and real-source examples separate.",
      "required_key": true,
      "allowed_values": [
        "user_review",
        "fictional_practice",
        "observed_public_example"
      ]
    },
    {
      "entity": "review",
      "field": "reviewer_name",
      "type": "string",
      "description": "The reviewer’s name or work ID, entered by the reviewer.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "reviewer_type",
      "type": "string",
      "description": "Human, agent, or a described mix. Approval needs a human reviewer.",
      "required_key": true,
      "allowed_values": [
        "human",
        "agent",
        "mixed_described_review"
      ]
    },
    {
      "entity": "review",
      "field": "review_pass_type",
      "type": "string",
      "description": "Your own check, another pass by you, a second person, or another explained method.",
      "required_key": true,
      "allowed_values": [
        "self_review",
        "separate_self_review_pass",
        "second_reviewer",
        "other_described_review"
      ]
    },
    {
      "entity": "review",
      "field": "first_reviewer_name",
      "type": "string",
      "description": "The first reviewer’s name when a different person does a second review.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "review_method_notes",
      "type": "string",
      "description": "What each person or agent did. Explain mixed or other review methods.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "reviewed_at",
      "type": [
        "string",
        "null"
      ],
      "description": "When the final draft and claim list were checked. Null means missing or no longer current.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "material_claims_accounted_for",
      "type": "boolean",
      "description": "The reviewer says they listed all claims that could change a reader’s choice. The tool cannot prove the list is complete.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "current_readiness",
      "type": "string",
      "description": "The workflow state, checked again on import. It is not a truth or compliance score.",
      "required_key": true,
      "allowed_values": [
        "work_in_progress",
        "hold",
        "ready_for_human_approval",
        "approved_by_reviewer",
        "withdraw_or_reject"
      ]
    },
    {
      "entity": "review",
      "field": "source_ids",
      "type": "array",
      "description": "IDs of linked sources. Claims need real, usable evidence.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "claim_ids",
      "type": "array",
      "description": "IDs of claims that belong to this review.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "issue_ids",
      "type": "array",
      "description": "IDs of issues that belong to this review.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "decision_ids",
      "type": "array",
      "description": "IDs of recorded decisions. Saved versions omit this list so history does not contain itself.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "limitations",
      "type": "string",
      "description": "Limits and unknowns that readers need to see.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "affected_readers",
      "type": "string",
      "description": "People who could be affected by an important error.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "review_due",
      "type": "string",
      "description": "An optional date to check again. You may save an unfinished date. The tool does not schedule the check.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "review_trigger",
      "type": "string",
      "description": "An event that means you should check again. The tool does not schedule it.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "correction_contact",
      "type": "string",
      "description": "Your correction contact route. This field sends no message.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "external_publication_notes",
      "type": "string",
      "description": "A publication event the reviewer says happened elsewhere. It cannot override Hold.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "review",
      "field": "last_change_at",
      "type": "string",
      "description": "When the current version last changed.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "source_id",
      "type": "string",
      "description": "The source record’s stable ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "title",
      "type": "string",
      "description": "A title people can recognize for the review or source.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "publisher",
      "type": "string",
      "description": "The person or group responsible for the source.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "supplied_url",
      "type": "string",
      "description": "The address you were given. You can save unfinished text. Only safe http or https addresses with no sign-in details become links or usable web evidence.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "resolved_url_when_checked",
      "type": [
        "string",
        "null"
      ],
      "description": "The final address you say you checked. The tool does not fetch it. Unfinished text can be saved but cannot pass a web-source check.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "evidence_medium",
      "type": "string",
      "description": "A web source or a non-web record, such as a document, interview, or email. A missing field in an old file means web. The old saved version is not rewritten.",
      "required_key": false,
      "allowed_values": [
        "web",
        "non_web"
      ]
    },
    {
      "entity": "source",
      "field": "record_reference",
      "type": "string",
      "description": "A useful name for non-web evidence, such as a document name, interview note, or email subject and date. Do not invent an address. Missing in an old file means empty.",
      "required_key": false,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "source_type",
      "type": "string",
      "description": "The kind of source, such as an employer’s job page or an original announcement.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "publication_date",
      "type": [
        "string",
        "null"
      ],
      "description": "The source’s calendar date, or null if unknown. An unfinished date can be saved. A known date must be valid before it counts as evidence. Never borrow the check date.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "publication_date_status",
      "type": "string",
      "description": "Known or unknown. It must match publication_date.",
      "required_key": true,
      "allowed_values": [
        "known",
        "unknown"
      ]
    },
    {
      "entity": "source",
      "field": "retrieved_at",
      "type": [
        "string",
        "null"
      ],
      "description": "When the reviewer says they opened the source. In practice, this is an exercise action.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "checked_at",
      "type": [
        "string",
        "null"
      ],
      "description": "When the evidence check was recorded. It does not mean the tool opened the source.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "checked_by",
      "type": "string",
      "description": "Who the record says checked the source.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "locator",
      "type": "string",
      "description": "Where to find the evidence: heading, section, page, passage, or table.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "evidence_summary",
      "type": "string",
      "description": "A useful account of the relevant evidence you read.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "evidence_kind",
      "type": "string",
      "description": "A source opened for this review, or a usable saved source copy with a date.",
      "required_key": true,
      "allowed_values": [
        "live_source",
        "dated_preserved_evidence"
      ]
    },
    {
      "entity": "source",
      "field": "preserved_evidence_reference",
      "type": [
        "string",
        "null"
      ],
      "description": "The saved evidence record’s ID. An ID without that record is not evidence.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "preserved_evidence",
      "type": "object_or_null",
      "description": "The actual saved evidence, with a date, scope, and limits, or null.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "access_status",
      "type": "string",
      "description": "Whether the reviewer could open the source, could not open it, or has not checked.",
      "required_key": true,
      "allowed_values": [
        "checked_accessible",
        "unavailable_at_check",
        "not_checked"
      ]
    },
    {
      "entity": "source",
      "field": "source_origin_group",
      "type": "string",
      "description": "A shared ID for pages that repeat the same original evidence. Copies are not independent sources.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "limitations",
      "type": "string",
      "description": "Limits and unknowns that readers need to see.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "source",
      "field": "allowed_excerpt",
      "type": "string",
      "description": "An optional short quote you have a right to keep. Made-up practice can include its full source text.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "claim_id",
      "type": "string",
      "description": "A stable ID for one claim to check.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "review_id",
      "type": "string",
      "description": "The review’s stable ID. Linked records must use the same ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "original_text",
      "type": "string",
      "description": "The original claim, kept after a correction or removal.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "current_text",
      "type": "string",
      "description": "The exact words being judged. They must appear in the final draft unless the claim is removed.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "claim_type",
      "type": "string",
      "description": "The kind of claim. Some kinds usually affect a reader’s choice.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "source_ids",
      "type": "array",
      "description": "IDs of linked sources. Claims need real, usable evidence.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "evidence_locator",
      "type": "string",
      "description": "The exact passage that matters for this claim.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "source_support",
      "type": "string",
      "description": "Whether the evidence backs all, part, or none of the words, disagrees with them, or has not been checked.",
      "required_key": true,
      "allowed_values": [
        "supported",
        "partly_supported",
        "unsupported",
        "conflicting",
        "unreviewed"
      ]
    },
    {
      "entity": "claim",
      "field": "source_suitability",
      "type": "string",
      "description": "Whether this is the right source to prove this claim.",
      "required_key": true,
      "allowed_values": [
        "appropriate_for_claim",
        "limited_for_claim",
        "unresolved"
      ]
    },
    {
      "entity": "claim",
      "field": "timeframe_fit",
      "type": "string",
      "description": "Whether the evidence fits the intended date or period and use.",
      "required_key": true,
      "allowed_values": [
        "fits_stated_timeframe",
        "stale_for_stated_timeframe",
        "unknown",
        "not_time_sensitive"
      ]
    },
    {
      "entity": "claim",
      "field": "materiality",
      "type": "string",
      "description": "Material means it could change a reader’s choice. Minor means little effect. Unsure follows Material rules.",
      "required_key": true,
      "allowed_values": [
        "material",
        "minor",
        "unsure"
      ]
    },
    {
      "entity": "claim",
      "field": "materiality_reason",
      "type": "string",
      "description": "Why you chose Minor for a claim that normally matters or was marked Material before.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "rationale",
      "type": "string",
      "description": "Why you made this judgment or decision, including evidence and limits.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "resolution_action",
      "type": "string",
      "description": "Keep, correct, narrow, remove, or leave unresolved. Choosing an action is not a completed recheck.",
      "required_key": true,
      "allowed_values": [
        "unchanged_and_supported",
        "corrected",
        "removed",
        "qualified",
        "unresolved"
      ]
    },
    {
      "entity": "claim",
      "field": "original_issue_ids",
      "type": "array",
      "description": "Links to the original problems, kept after a fix.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "rechecked_at",
      "type": [
        "string",
        "null"
      ],
      "description": "When the final words or removal were checked. Relevant edits clear this check.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "rechecked_by",
      "type": "string",
      "description": "Who did that check.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "removal_confirmed",
      "type": "boolean",
      "description": "The reviewer says the removed words are absent from the final draft.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "claim",
      "field": "minor_disclosure",
      "type": "string",
      "description": "The minor limit that remains, and why it does not block the intended use.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "issue_id",
      "type": "string",
      "description": "The issue or correction’s stable ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "review_id",
      "type": "string",
      "description": "The review’s stable ID. Linked records must use the same ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "claim_ids",
      "type": "array",
      "description": "IDs of claims that belong to this review.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "issue_type",
      "type": "string",
      "description": "The kind of problem, such as a reported error or one caught before publication.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "description",
      "type": "string",
      "description": "The actual problem that needs a fix or an explanation.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "materiality",
      "type": "string",
      "description": "Material means it could change a reader’s choice. Minor means little effect. Unsure follows Material rules.",
      "required_key": true,
      "allowed_values": [
        "material",
        "minor",
        "unsure"
      ]
    },
    {
      "entity": "issue",
      "field": "opened_at",
      "type": "string",
      "description": "When the issue was first recorded.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "owner",
      "type": "string",
      "description": "The person responsible for the next step and fix.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "proposed_action",
      "type": "string",
      "description": "What you plan to do. Keep this separate from completed work.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "status",
      "type": "string",
      "description": "Open, waiting for evidence, waiting for a new check, resolved, or a stated minor limit.",
      "required_key": true,
      "allowed_values": [
        "open",
        "awaiting_evidence",
        "awaiting_recheck",
        "resolved",
        "retained_as_disclosed_limitation"
      ]
    },
    {
      "entity": "issue",
      "field": "resolution_evidence",
      "type": "string",
      "description": "Evidence of the fix, or the reason for keeping a stated minor limit.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "resolved_at",
      "type": [
        "string",
        "null"
      ],
      "description": "When the fix was recorded. Null means unresolved or a check that is no longer current.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "recheck_record",
      "type": "string",
      "description": "Who checked the issue again and when.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "affected_content_notes",
      "type": "string",
      "description": "Other content or readers that may be affected.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "prior_publication_location",
      "type": "string",
      "description": "Where the earlier version was published, if this is a published correction.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "prior_publication_version",
      "type": "string",
      "description": "The earlier publication date or saved version ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "corrected_version",
      "type": "string",
      "description": "The corrected version actually published, if any.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "notification_decision",
      "type": "string",
      "description": "Who you plan to tell, or why no notice is needed. It does not prove that a message was sent.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "actual_action_taken",
      "type": "string",
      "description": "What was actually done. Do not record a planned message as sent.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "issue",
      "field": "automatic_claim_issue",
      "type": "boolean",
      "description": "Whether the web tool created this issue from a claim problem or correction.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "decision_id",
      "type": "string",
      "description": "The recorded decision’s stable ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "review_id",
      "type": "string",
      "description": "The review’s stable ID. Linked records must use the same ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "input_revision_id",
      "type": "string",
      "description": "The exact saved version this decision covers.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "decision_type",
      "type": "string",
      "description": "Hold, Ready for human approval, Approved by reviewer, or Withdraw/reject.",
      "required_key": true,
      "allowed_values": [
        "hold",
        "ready_for_human_approval",
        "approved_by_reviewer",
        "withdraw_or_reject"
      ]
    },
    {
      "entity": "decision",
      "field": "decided_by",
      "type": "string",
      "description": "Who made the decision. Approval needs the named human reviewer in the saved version.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "decision_context",
      "type": "string",
      "description": "A human-entered decision or a made-up demonstration. It must match the evidence mode.",
      "required_key": true,
      "allowed_values": [
        "human_entered_decision",
        "fictional_demonstration"
      ]
    },
    {
      "entity": "decision",
      "field": "decided_at",
      "type": "string",
      "description": "The decision time from the device clock, shown in Arizona time.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "rationale",
      "type": "string",
      "description": "Why you made this judgment or decision, including evidence and limits.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "unresolved_issue_ids",
      "type": "array",
      "description": "All issues still open in that version, including stated minor limits.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "decision",
      "field": "supersedes_decision_id_when_relevant",
      "type": [
        "string",
        "null"
      ],
      "description": "The earlier decision this one replaces, or null.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "revision_id",
      "type": "string",
      "description": "The stable ID for a full saved version.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "review_id",
      "type": "string",
      "description": "The review’s stable ID. Linked records must use the same ID.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "parent_revision_id_or_null",
      "type": [
        "string",
        "null"
      ],
      "description": "The previous saved version, or null for the first one. The chain cannot loop.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "created_at",
      "type": "string",
      "description": "When the app created this record, with a timezone offset. The time comes from the device clock.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "changed_by",
      "type": "string",
      "description": "Who the record says made the change. The name is not independently verified.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "change_summary",
      "type": "string",
      "description": "What changed in this version.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "review_snapshot",
      "type": "#/$defs/review_snapshot",
      "description": "The review inputs, without another copy of the decision or version history inside them.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "source_snapshots",
      "type": "array",
      "description": "Full source records for this saved version.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "claim_snapshots",
      "type": "array",
      "description": "Full claim records for this saved version.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "revision",
      "field": "issue_snapshots",
      "type": "array",
      "description": "Full issue records for this saved version.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "pending_decision",
      "field": "decision_type",
      "type": "string",
      "description": "Hold, Ready for human approval, Approved by reviewer, or Withdraw/reject.",
      "required_key": true,
      "allowed_values": [
        "hold",
        "ready_for_human_approval",
        "approved_by_reviewer",
        "withdraw_or_reject"
      ]
    },
    {
      "entity": "pending_decision",
      "field": "rationale",
      "type": "string",
      "description": "Why you made this judgment or decision, including evidence and limits.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "preserved_evidence",
      "field": "evidence_id",
      "type": "string",
      "description": "The ID linked from preserved_evidence_reference.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "preserved_evidence",
      "field": "captured_at",
      "type": "string",
      "description": "When the source copy was saved, entered by the user. Unfinished text can be saved. Usable evidence needs a valid time with a timezone offset.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "preserved_evidence",
      "field": "text",
      "type": "string",
      "description": "The actual source text kept in this copy.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "preserved_evidence",
      "field": "scope",
      "type": "string",
      "description": "What this saved copy includes.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "preserved_evidence",
      "field": "limitations",
      "type": "string",
      "description": "What this saved copy cannot prove.",
      "required_key": true,
      "allowed_values": null
    },
    {
      "entity": "envelope",
      "field": "pending_decision",
      "type": "object",
      "description": "An unfinished decision choice and reason. It stays across steps and in saved reviews. It is not a recorded decision and is outside evidence snapshots.",
      "required_key": false,
      "allowed_values": null
    },
    {
      "entity": "envelope",
      "field": "legacy_decision_ids",
      "type": "array",
      "description": "IDs of original 1.0.0 decisions. Their records and saved versions stay unchanged. The tool checks current readiness and marks old decisions that fail the repaired rules as history.",
      "required_key": false,
      "allowed_values": null
    }
  ]
}
