{
  "schema": "cognitiveliberties.private-inquiry-evidence-validator.v1",
  "id": "NAV-CL-E002",
  "release": "1.19.0",
  "route": "/protect-private-inquiry#local-validator",
  "title": "Local Evidence-Register Validator and Publication Preparation",
  "summary": "A user-initiated, browser-local structural validator for completed NAV-CL-E001 CSV or JSON files that produces bounded non-certifying derivatives without transmitting or retaining selected content.",
  "validates_register_id": "NAV-CL-E001",
  "register_schema": "cognitiveliberties.private-inquiry-evidence-register-template.v1",
  "register_release": "1.19.0",
  "audit_protocol_id": "AUDIT-CL-001",
  "accepted_formats": [
    "csv",
    "json"
  ],
  "limits": {
    "max_file_bytes": 2097152,
    "max_records": 5000,
    "max_cell_characters": 100000,
    "max_json_depth": 6,
    "max_diagnostics": 2000
  },
  "canonical_fields": [
    "record_id",
    "register_id",
    "evidence_area_id",
    "control_or_claim",
    "evidence_status",
    "evidence_tier_ids",
    "audit_domain_ids",
    "kit_ids",
    "evidence_locator",
    "public_summary_locator",
    "provenance_source",
    "provenance_custodian",
    "collected_on",
    "integrity_reference",
    "system_or_process",
    "product_or_model_version",
    "build_or_release",
    "configuration_scope",
    "deployment_region_or_context",
    "test_account_state",
    "test_date",
    "data_flow_scope",
    "retention_scope",
    "policy_or_authority_title",
    "policy_or_authority_locator",
    "approving_body_or_role",
    "approval_date",
    "effective_date",
    "authority_scope",
    "vendor_clause_scope",
    "emergency_exception_scope",
    "sunset_or_expiry",
    "data_or_inference_class",
    "deletion_rule",
    "deletion_method",
    "deletion_completed_on",
    "deletion_verification_method",
    "downstream_deletion_status",
    "deletion_receipt_or_log",
    "exceptions_or_holds",
    "finding_or_issue_id",
    "remediation_owner_role",
    "remediation_action",
    "priority_or_gate",
    "due_date",
    "retest_method",
    "retest_date",
    "challenge_or_appeal_state",
    "closure_evidence_locator",
    "residual_risk",
    "incident_trigger",
    "trigger_threshold",
    "observed_on",
    "incident_owner_role",
    "containment_action",
    "affected_evidence_area_ids",
    "notification_or_notice_duty",
    "reaudit_scope",
    "incident_record_locator",
    "last_reviewed_on",
    "next_review_date",
    "review_cadence",
    "material_change_triggers",
    "lifecycle_assumptions",
    "monitoring_owner_role",
    "supersedes_record_id",
    "superseded_by_record_id",
    "review_outcome",
    "confidentiality_basis",
    "known_unknowns",
    "unavailable_evidence",
    "critical_gate_failures",
    "limitations",
    "prepared_by_role",
    "last_updated"
  ],
  "canonical_statuses": [
    "supported",
    "partially_supported",
    "unsupported",
    "contradicted",
    "unavailable",
    "not_applicable",
    "not_reviewed"
  ],
  "evidence_area_ids": [
    "NAV-CL-E001-F01",
    "NAV-CL-E001-F02",
    "NAV-CL-E001-F03",
    "NAV-CL-E001-F04",
    "NAV-CL-E001-F05",
    "NAV-CL-E001-F06",
    "NAV-CL-E001-F07"
  ],
  "audit_evidence_class_ids": [
    "AUDIT-E01",
    "AUDIT-E02",
    "AUDIT-E03",
    "AUDIT-E04",
    "AUDIT-E05",
    "AUDIT-E06",
    "AUDIT-E07",
    "AUDIT-E08"
  ],
  "audit_domain_ids": [
    "AUDIT-CL-D01",
    "AUDIT-CL-D02",
    "AUDIT-CL-D03",
    "AUDIT-CL-D04",
    "AUDIT-CL-D05",
    "AUDIT-CL-D06",
    "AUDIT-CL-D07",
    "AUDIT-CL-D08",
    "AUDIT-CL-D09",
    "AUDIT-CL-D10",
    "AUDIT-CL-D11",
    "AUDIT-CL-D12",
    "AUDIT-CL-D13",
    "AUDIT-CL-D14",
    "AUDIT-CL-D15",
    "AUDIT-CL-D16",
    "AUDIT-CL-D17",
    "AUDIT-CL-D18"
  ],
  "critical_audit_domain_ids": [
    "AUDIT-CL-D01",
    "AUDIT-CL-D02",
    "AUDIT-CL-D05",
    "AUDIT-CL-D09",
    "AUDIT-CL-D10",
    "AUDIT-CL-D15",
    "AUDIT-CL-D16"
  ],
  "kit_ids": [
    "KIT-LIBRARIES-001",
    "KIT-EDUCATION-001",
    "KIT-JOURNALISM-001",
    "KIT-PUBLIC-INTEREST-TECH-001",
    "KIT-PUBLIC-INSTITUTIONS-001"
  ],
  "area_required_fields": {
    "NAV-CL-E001-F01": [
      "record_id",
      "control_or_claim",
      "evidence_status",
      "evidence_tier_ids",
      "evidence_locator",
      "provenance_source",
      "provenance_custodian",
      "collected_on",
      "integrity_reference",
      "known_unknowns",
      "limitations"
    ],
    "NAV-CL-E001-F02": [
      "system_or_process",
      "product_or_model_version",
      "build_or_release",
      "configuration_scope",
      "deployment_region_or_context",
      "test_account_state",
      "test_date",
      "data_flow_scope",
      "retention_scope",
      "known_unknowns",
      "limitations"
    ],
    "NAV-CL-E001-F03": [
      "policy_or_authority_title",
      "policy_or_authority_locator",
      "approving_body_or_role",
      "approval_date",
      "effective_date",
      "authority_scope",
      "vendor_clause_scope",
      "emergency_exception_scope",
      "sunset_or_expiry",
      "limitations"
    ],
    "NAV-CL-E001-F04": [
      "data_or_inference_class",
      "deletion_rule",
      "deletion_method",
      "deletion_completed_on",
      "deletion_verification_method",
      "downstream_deletion_status",
      "deletion_receipt_or_log",
      "exceptions_or_holds",
      "limitations"
    ],
    "NAV-CL-E001-F05": [
      "finding_or_issue_id",
      "remediation_owner_role",
      "remediation_action",
      "priority_or_gate",
      "due_date",
      "retest_method",
      "retest_date",
      "challenge_or_appeal_state",
      "closure_evidence_locator",
      "residual_risk",
      "limitations"
    ],
    "NAV-CL-E001-F06": [
      "incident_trigger",
      "trigger_threshold",
      "observed_on",
      "incident_owner_role",
      "containment_action",
      "affected_evidence_area_ids",
      "notification_or_notice_duty",
      "reaudit_scope",
      "incident_record_locator",
      "limitations"
    ],
    "NAV-CL-E001-F07": [
      "last_reviewed_on",
      "next_review_date",
      "review_cadence",
      "material_change_triggers",
      "lifecycle_assumptions",
      "monitoring_owner_role",
      "supersedes_record_id",
      "superseded_by_record_id",
      "review_outcome",
      "limitations"
    ]
  },
  "allowed_json_top_level_keys": [
    "schema",
    "release",
    "register_id",
    "pathway_id",
    "pathway_step_id",
    "audit_protocol_id",
    "authority_boundary",
    "privacy_boundary",
    "critical_gate_rule",
    "recording_instruction",
    "status_vocabulary",
    "evidence_areas",
    "kit_crosswalks",
    "audit_domain_crosswalks",
    "template_columns",
    "template_record",
    "records"
  ],
  "required_json_top_level_keys": [
    "schema",
    "release",
    "register_id",
    "template_columns",
    "records"
  ],
  "core_required_fields": [
    "record_id",
    "register_id",
    "evidence_area_id",
    "control_or_claim",
    "evidence_status",
    "evidence_tier_ids",
    "audit_domain_ids",
    "configuration_scope",
    "provenance_source",
    "known_unknowns",
    "unavailable_evidence",
    "critical_gate_failures",
    "limitations",
    "next_review_date",
    "last_updated"
  ],
  "date_fields": [
    "collected_on",
    "test_date",
    "approval_date",
    "effective_date",
    "sunset_or_expiry",
    "deletion_completed_on",
    "due_date",
    "retest_date",
    "observed_on",
    "last_reviewed_on",
    "next_review_date",
    "last_updated"
  ],
  "locator_fields": [
    "evidence_locator",
    "public_summary_locator",
    "policy_or_authority_locator",
    "deletion_receipt_or_log",
    "closure_evidence_locator",
    "incident_record_locator"
  ],
  "list_fields": {
    "evidence_tier_ids": "audit_evidence_class_ids",
    "audit_domain_ids": "audit_domain_ids",
    "kit_ids": "kit_ids",
    "affected_evidence_area_ids": "evidence_area_ids",
    "critical_gate_failures": "critical_audit_domain_ids"
  },
  "status_required_fields": {
    "supported": [
      "evidence_locator",
      "provenance_source",
      "collected_on",
      "integrity_reference",
      "configuration_scope",
      "limitations",
      "next_review_date"
    ],
    "partially_supported": [
      "known_unknowns",
      "limitations",
      "next_review_date"
    ],
    "unsupported": [
      "finding_or_issue_id",
      "remediation_owner_role",
      "remediation_action",
      "due_date",
      "limitations"
    ],
    "contradicted": [
      "finding_or_issue_id",
      "remediation_owner_role",
      "remediation_action",
      "due_date",
      "limitations"
    ],
    "unavailable": [
      "unavailable_evidence",
      "known_unknowns",
      "limitations",
      "next_review_date"
    ],
    "not_applicable": [
      "review_outcome",
      "limitations"
    ],
    "not_reviewed": [
      "known_unknowns",
      "next_review_date",
      "monitoring_owner_role"
    ]
  },
  "critical_blocking_statuses": [
    "unsupported",
    "contradicted",
    "unavailable",
    "not_reviewed"
  ],
  "none_tokens": [
    "none",
    "none established",
    "no critical failures established",
    "not applicable",
    "n/a"
  ],
  "prototype_like_keys": [
    "__proto__",
    "prototype",
    "constructor"
  ],
  "formula_prefixes": [
    "=",
    "+",
    "-",
    "@"
  ],
  "active_content_prefixes": [
    "javascript:",
    "data:",
    "blob:",
    "vbscript:",
    "file:"
  ],
  "privacy_risk_terms": [
    "raw query",
    "query history",
    "prompt history",
    "prompt log",
    "reading history",
    "browsing history",
    "draft history",
    "belief profile",
    "inferred belief",
    "sensitive-trait profile",
    "sensitive trait profile",
    "curiosity dossier",
    "person-level curiosity",
    "named inquiry history"
  ],
  "instruction_override_terms": [
    "ignore previous instructions",
    "ignore all instructions",
    "system prompt",
    "developer message",
    "override the validator",
    "disregard the validator",
    "execute this instruction",
    "follow these instructions instead"
  ],
  "favorable_outcome_terms": [
    "pass",
    "passed",
    "passing",
    "certified",
    "compliant",
    "safe",
    "approved",
    "secure"
  ],
  "placeholder_patterns": [
    "PLACEHOLDER-DELETE-BEFORE-USE",
    "YYYY-MM-DD",
    "[Describe one bounded control or claim]",
    "[AUDIT-E01..AUDIT-E08 as applicable]",
    "[AUDIT-CL-D## separated by |]",
    "[KIT-* separated by |]",
    "[State unresolved questions]",
    "[State requested but unavailable evidence]",
    "[List failed critical domain IDs or write none established]",
    "[State scope and limits]",
    "[Role, not unnecessary personal data]"
  ],
  "diagnostic_catalog": [
    {
      "id": "NAV-CL-E002-D001",
      "code": "FILE_TOO_LARGE",
      "severity": "error",
      "category": "structural_validity",
      "title": "Selected file exceeds the local limit",
      "explanation": "The validator stops before decoding files larger than the published byte limit to bound browser memory and denial-of-service risk.",
      "corrective_guidance": "Use a smaller CSV or JSON file, split the register into bounded review sets, and preserve the relationship between the parts."
    },
    {
      "id": "NAV-CL-E002-D002",
      "code": "UNSUPPORTED_FORMAT",
      "severity": "error",
      "category": "structural_validity",
      "title": "Input is not an accepted CSV or JSON file",
      "explanation": "The local workflow accepts only the documented NAV-CL-E001 CSV and JSON projections.",
      "corrective_guidance": "Select an uncompressed .csv or .json register generated from the current template."
    },
    {
      "id": "NAV-CL-E002-D003",
      "code": "MALFORMED_ARCHIVE",
      "severity": "error",
      "category": "structural_validity",
      "title": "Archive input is not processed",
      "explanation": "ZIP and other archive containers are intentionally not opened in the browser validator because nested members and decompression can obscure the actual input.",
      "corrective_guidance": "Extract the archive outside this page and select the single CSV or JSON register file."
    },
    {
      "id": "NAV-CL-E002-D004",
      "code": "INVALID_UTF8",
      "severity": "error",
      "category": "structural_validity",
      "title": "Input is not strict UTF-8 text",
      "explanation": "Ambiguous or replacement-character decoding can change headers, identifiers, and evidence text.",
      "corrective_guidance": "Export the register as UTF-8 without lossy character substitution and validate the new file."
    },
    {
      "id": "NAV-CL-E002-D005",
      "code": "FORBIDDEN_CONTROL_CHARACTER",
      "severity": "error",
      "category": "privacy_risk",
      "title": "Unexpected control character detected",
      "explanation": "Non-printing control characters can conceal content, alter parsers, or create inconsistent records. Normal CSV line breaks and tabs are handled separately.",
      "corrective_guidance": "Remove the control character in the stated location and re-export the file from a trusted editor."
    },
    {
      "id": "NAV-CL-E002-D006",
      "code": "UNICODE_DIRECTIONAL_CONTROL",
      "severity": "error",
      "category": "privacy_risk",
      "title": "Unicode direction-control character detected",
      "explanation": "Bidirectional and isolation controls can make displayed text differ from logical text and can conceal misleading identifiers or instructions.",
      "corrective_guidance": "Remove the directional control and use plain visible Unicode text."
    },
    {
      "id": "NAV-CL-E002-D007",
      "code": "PARSE_ERROR",
      "severity": "error",
      "category": "structural_validity",
      "title": "The file could not be parsed",
      "explanation": "The bytes do not form a complete CSV or JSON document under the validator grammar.",
      "corrective_guidance": "Correct the syntax at the reported location or export a fresh file from the official template."
    },
    {
      "id": "NAV-CL-E002-D008",
      "code": "EMPTY_RECORD_SET",
      "severity": "warning",
      "category": "evidentiary_completeness",
      "title": "No completed evidence records were found",
      "explanation": "A blank template can be structurally recognizable but cannot support an institutional claim.",
      "corrective_guidance": "Add one bounded record per material control or claim, or keep the file explicitly labeled as an unused template."
    },
    {
      "id": "NAV-CL-E002-D009",
      "code": "RECORD_LIMIT_EXCEEDED",
      "severity": "error",
      "category": "structural_validity",
      "title": "Record count exceeds the bounded limit",
      "explanation": "Very large files can degrade local review and make a single publication artifact too broad to inspect responsibly.",
      "corrective_guidance": "Split the register into documented, linked review sets within the published record limit."
    },
    {
      "id": "NAV-CL-E002-D010",
      "code": "CELL_LIMIT_EXCEEDED",
      "severity": "error",
      "category": "structural_validity",
      "title": "A field exceeds the bounded character limit",
      "explanation": "An extremely long field may conceal bulk data, a cognitive dossier, or content that is impractical to review.",
      "corrective_guidance": "Replace bulk content with a bounded summary and a controlled evidence locator."
    },
    {
      "id": "NAV-CL-E002-D011",
      "code": "CSV_COLUMN_COUNT_MISMATCH",
      "severity": "error",
      "category": "structural_validity",
      "title": "CSV row width does not match the header",
      "explanation": "Missing or extra cells shift evidence into the wrong named fields.",
      "corrective_guidance": "Repair quoting and delimiters so every row has exactly one value for every canonical header."
    },
    {
      "id": "NAV-CL-E002-D012",
      "code": "DUPLICATE_HEADER",
      "severity": "error",
      "category": "structural_validity",
      "title": "CSV contains a duplicate header",
      "explanation": "A duplicate field name makes the selected value parser-dependent and undermines deterministic review.",
      "corrective_guidance": "Keep exactly one instance of each canonical NAV-CL-E001 header."
    },
    {
      "id": "NAV-CL-E002-D013",
      "code": "CONFUSABLE_HEADER",
      "severity": "error",
      "category": "structural_validity",
      "title": "Header is visually or Unicode-confusable with another field",
      "explanation": "Normalization maps two different visible headers to the same logical token, which can hide substitution or parser disagreement.",
      "corrective_guidance": "Replace both headers with their exact canonical ASCII field names."
    },
    {
      "id": "NAV-CL-E002-D014",
      "code": "UNKNOWN_HEADER",
      "severity": "error",
      "category": "structural_validity",
      "title": "Unknown field name is present",
      "explanation": "The validator cannot assign an authoritative meaning to a field outside NAV-CL-E001.",
      "corrective_guidance": "Map the value to an existing canonical field or document a future schema change separately."
    },
    {
      "id": "NAV-CL-E002-D015",
      "code": "MISSING_HEADER",
      "severity": "error",
      "category": "structural_validity",
      "title": "Canonical field is missing",
      "explanation": "The CSV no longer carries the complete NAV-CL-E001 field contract.",
      "corrective_guidance": "Re-export from the current template and preserve every canonical header, even when a cell is blank."
    },
    {
      "id": "NAV-CL-E002-D016",
      "code": "HEADER_ORDER_CHANGED",
      "severity": "notice",
      "category": "structural_validity",
      "title": "Canonical headers are in a different order",
      "explanation": "The field set is recognizable, but the file no longer matches the deterministic template projection byte-for-byte.",
      "corrective_guidance": "No correction is required for field-based validation; restore canonical order for easier comparison and deterministic exchange."
    },
    {
      "id": "NAV-CL-E002-D017",
      "code": "JSON_TOP_LEVEL_TYPE",
      "severity": "error",
      "category": "structural_validity",
      "title": "JSON top level must be an object",
      "explanation": "NAV-CL-E001 JSON uses a named contract object containing identity, columns, and records.",
      "corrective_guidance": "Use the official JSON template object rather than a bare array or scalar."
    },
    {
      "id": "NAV-CL-E002-D018",
      "code": "JSON_UNKNOWN_TOP_LEVEL_KEY",
      "severity": "error",
      "category": "structural_validity",
      "title": "Unexpected JSON top-level key is present",
      "explanation": "An unrecognized top-level key can imitate authority metadata or alter downstream interpretation.",
      "corrective_guidance": "Remove the key or migrate it through an explicit versioned schema decision."
    },
    {
      "id": "NAV-CL-E002-D019",
      "code": "JSON_REQUIRED_TOP_LEVEL_KEY",
      "severity": "error",
      "category": "structural_validity",
      "title": "Required JSON identity key is missing",
      "explanation": "Schema, release, register identity, columns, and records are needed to interpret the file deterministically.",
      "corrective_guidance": "Restore the missing key from the current NAV-CL-E001 JSON template."
    },
    {
      "id": "NAV-CL-E002-D020",
      "code": "JSON_DEPTH_EXCEEDED",
      "severity": "error",
      "category": "structural_validity",
      "title": "JSON nesting exceeds the bounded depth",
      "explanation": "Unexpectedly deep structures can conceal content and are outside the flat evidence-record contract.",
      "corrective_guidance": "Flatten the record into canonical string fields and keep supporting material behind controlled locators."
    },
    {
      "id": "NAV-CL-E002-D021",
      "code": "PROTOTYPE_LIKE_KEY",
      "severity": "error",
      "category": "privacy_risk",
      "title": "Prototype-like object key detected",
      "explanation": "Keys such as __proto__, prototype, or constructor can cause unsafe object behavior in some runtimes even when this validator treats them as inert.",
      "corrective_guidance": "Remove the key and use only exact canonical NAV-CL-E001 fields."
    },
    {
      "id": "NAV-CL-E002-D022",
      "code": "RECORD_TYPE_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Evidence record must be a flat object",
      "explanation": "Each JSON record must map canonical field names to scalar text values.",
      "corrective_guidance": "Replace arrays or nested objects with bounded text and controlled evidence locators."
    },
    {
      "id": "NAV-CL-E002-D023",
      "code": "UNKNOWN_FIELD",
      "severity": "error",
      "category": "structural_validity",
      "title": "Unknown record field is present",
      "explanation": "The field is outside the canonical NAV-CL-E001 template and has no controlled meaning.",
      "corrective_guidance": "Use the exact canonical field name or document a versioned schema change."
    },
    {
      "id": "NAV-CL-E002-D024",
      "code": "MISSING_FIELD",
      "severity": "warning",
      "category": "evidentiary_completeness",
      "title": "Canonical record field is absent",
      "explanation": "JSON records may omit a canonical field even though the current template exposes it for review.",
      "corrective_guidance": "Add the canonical field with a bounded value or an intentionally blank string."
    },
    {
      "id": "NAV-CL-E002-D025",
      "code": "NONSCALAR_FIELD",
      "severity": "error",
      "category": "structural_validity",
      "title": "Record field contains a nested or non-text value",
      "explanation": "Nested data can bypass flat-field checks and is not part of the NAV-CL-E001 record contract.",
      "corrective_guidance": "Convert the value to bounded text or move the supporting object to a controlled evidence location."
    },
    {
      "id": "NAV-CL-E002-D026",
      "code": "SCHEMA_ID_MISMATCH",
      "severity": "error",
      "category": "structural_validity",
      "title": "Register schema identity does not match",
      "explanation": "The JSON file identifies a different or modified schema. CSV schema is recognized from its exact canonical header set.",
      "corrective_guidance": "Start from the current NAV-CL-E001 template without changing its schema identity."
    },
    {
      "id": "NAV-CL-E002-D027",
      "code": "REGISTER_RELEASE_MISMATCH",
      "severity": "error",
      "category": "structural_validity",
      "title": "Register release does not match the validator contract",
      "explanation": "The selected JSON file was produced for a different register release, so field semantics may differ.",
      "corrective_guidance": "Use the matching validator release or deliberately migrate the file to the current template."
    },
    {
      "id": "NAV-CL-E002-D028",
      "code": "REGISTER_ID_MISMATCH",
      "severity": "error",
      "category": "structural_validity",
      "title": "Register identity does not match NAV-CL-E001",
      "explanation": "The file or row claims a different register authority.",
      "corrective_guidance": "Set register_id to NAV-CL-E001 only when the record actually follows that authority."
    },
    {
      "id": "NAV-CL-E002-D029",
      "code": "PLACEHOLDER_REMAINS",
      "severity": "warning",
      "category": "evidentiary_completeness",
      "title": "Template placeholder remains in a completed record",
      "explanation": "Placeholder text does not establish an observation, limitation, owner, date, or evidence source.",
      "corrective_guidance": "Replace the placeholder with bounded evidence text, an explicit unknown, or an explicit unavailable-evidence statement."
    },
    {
      "id": "NAV-CL-E002-D030",
      "code": "RECORD_ID_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Record identifier is missing or malformed",
      "explanation": "Stable record IDs are required for challenge, supersession, and re-review.",
      "corrective_guidance": "Use a unique visible identifier beginning with an ASCII letter or digit and containing only letters, digits, dot, colon, underscore, or hyphen."
    },
    {
      "id": "NAV-CL-E002-D031",
      "code": "RECORD_ID_DUPLICATE",
      "severity": "error",
      "category": "structural_validity",
      "title": "Record identifier is duplicated",
      "explanation": "Two rows with one stable ID cannot be distinguished or superseded reliably.",
      "corrective_guidance": "Assign a unique record_id to each bounded control or claim."
    },
    {
      "id": "NAV-CL-E002-D032",
      "code": "EVIDENCE_AREA_ID_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Evidence-area identifier is unknown",
      "explanation": "The record does not resolve to one of the seven NAV-CL-E001 evidence areas.",
      "corrective_guidance": "Use exactly one current NAV-CL-E001-F01 through NAV-CL-E001-F07 identifier."
    },
    {
      "id": "NAV-CL-E002-D033",
      "code": "EVIDENCE_STATUS_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Evidence status is unknown",
      "explanation": "Only the seven NAV-CL-E001 support-status values have controlled summary rules.",
      "corrective_guidance": "Use supported, partially_supported, unsupported, contradicted, unavailable, not_applicable, or not_reviewed."
    },
    {
      "id": "NAV-CL-E002-D034",
      "code": "EVIDENCE_TIER_ID_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Evidence-class identifier is unknown",
      "explanation": "AUDIT-CL-001 defines eight evidence classes and the validator does not invent new meanings.",
      "corrective_guidance": "Use current AUDIT-E01 through AUDIT-E08 IDs separated by vertical bars."
    },
    {
      "id": "NAV-CL-E002-D035",
      "code": "AUDIT_DOMAIN_ID_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Audit-domain identifier is unknown",
      "explanation": "The record references a domain outside the current eighteen-domain AUDIT-CL-001 authority.",
      "corrective_guidance": "Use current AUDIT-CL-D01 through AUDIT-CL-D18 IDs separated by vertical bars."
    },
    {
      "id": "NAV-CL-E002-D036",
      "code": "KIT_ID_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Implementation-kit identifier is unknown",
      "explanation": "The record references a kit outside the five current implementation-kit authorities.",
      "corrective_guidance": "Use a current KIT-* identifier or leave the field blank when no kit applies."
    },
    {
      "id": "NAV-CL-E002-D037",
      "code": "AFFECTED_AREA_ID_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Affected evidence-area identifier is unknown",
      "explanation": "Incident scope must resolve to current NAV-CL-E001 evidence areas.",
      "corrective_guidance": "Use current NAV-CL-E001-F01 through NAV-CL-E001-F07 IDs separated by vertical bars."
    },
    {
      "id": "NAV-CL-E002-D038",
      "code": "DATE_SYNTAX_INVALID",
      "severity": "error",
      "category": "structural_validity",
      "title": "Date is not a real ISO calendar date",
      "explanation": "Ambiguous or impossible dates prevent deterministic review sequencing.",
      "corrective_guidance": "Use a real date in YYYY-MM-DD form or leave the field blank when the authority permits it."
    },
    {
      "id": "NAV-CL-E002-D039",
      "code": "DATE_SEQUENCE_CONFLICT",
      "severity": "warning",
      "category": "evidentiary_completeness",
      "title": "Review or remediation dates conflict",
      "explanation": "A later lifecycle event appears earlier than its predecessor, or a due/review date precedes the documented starting date.",
      "corrective_guidance": "Check the stated dates and explain any intentional historical or retrospective ordering."
    },
    {
      "id": "NAV-CL-E002-D040",
      "code": "AREA_REQUIRED_FIELD_EMPTY",
      "severity": "warning",
      "category": "evidentiary_completeness",
      "title": "Evidence-area field is empty",
      "explanation": "The selected evidence area identifies this field as part of its minimum inspectable record.",
      "corrective_guidance": "Provide bounded evidence, an explicit unknown, an unavailable-evidence explanation, or a documented not-applicable reason."
    },
    {
      "id": "NAV-CL-E002-D041",
      "code": "CORE_FIELD_EMPTY",
      "severity": "warning",
      "category": "evidentiary_completeness",
      "title": "Core evidence record field is empty",
      "explanation": "The record lacks a basic identity, claim, scope, provenance, limitation, or review element needed for human inspection.",
      "corrective_guidance": "Complete the field with bounded text or make the absence explicit."
    },
    {
      "id": "NAV-CL-E002-D042",
      "code": "STATUS_SUPPORT_GAP",
      "severity": "warning",
      "category": "evidentiary_completeness",
      "title": "Status-specific supporting field is empty",
      "explanation": "The selected support status requires an explanation or evidence trail to remain challengeable.",
      "corrective_guidance": "Complete the listed supporting field or choose a status that accurately reflects the available evidence."
    },
    {
      "id": "NAV-CL-E002-D043",
      "code": "SPREADSHEET_FORMULA_PREFIX",
      "severity": "error",
      "category": "privacy_risk",
      "title": "CSV cell begins with a spreadsheet formula prefix",
      "explanation": "Spreadsheet software may evaluate cells beginning with =, +, -, or @ after import, even though this validator never evaluates them.",
      "corrective_guidance": "Prefix the value with a visible explanatory label or store the expression as inert quoted documentation in a controlled evidence file."
    },
    {
      "id": "NAV-CL-E002-D044",
      "code": "MISLEADING_WHITESPACE",
      "severity": "warning",
      "category": "privacy_risk",
      "title": "Value contains misleading leading or trailing whitespace",
      "explanation": "Invisible edge whitespace can make identifiers and controlled values differ across parsers.",
      "corrective_guidance": "Remove unintended edge whitespace and re-export the file."
    },
    {
      "id": "NAV-CL-E002-D045",
      "code": "COGNITIVE_DOSSIER_RISK",
      "severity": "warning",
      "category": "privacy_risk",
      "title": "Text suggests prohibited inquiry or sensitive-profile content",
      "explanation": "NAV-CL-E001 is designed for system controls and bounded evidence, not raw inquiry histories or person-level inferred profiles.",
      "corrective_guidance": "Remove the sensitive content, retain only a bounded control-level description, and point to appropriately governed evidence when necessary."
    },
    {
      "id": "NAV-CL-E002-D046",
      "code": "INSTRUCTION_OVERRIDE_TEXT",
      "severity": "warning",
      "category": "privacy_risk",
      "title": "Input contains instruction-like override language",
      "explanation": "Selected file content is untrusted inert data. Instruction-like phrases may attempt to influence a reviewer or downstream automated system.",
      "corrective_guidance": "Treat the text only as evidence content, remove irrelevant instructions, and never execute or follow commands embedded in the register."
    },
    {
      "id": "NAV-CL-E002-D047",
      "code": "ACTIVE_CONTENT_SCHEME",
      "severity": "error",
      "category": "privacy_risk",
      "title": "Locator uses an active or local content scheme",
      "explanation": "Schemes such as javascript:, data:, blob:, vbscript:, or file: can embed active content or local references rather than a bounded evidence locator.",
      "corrective_guidance": "Replace the value with a non-executable controlled locator and review access separately."
    },
    {
      "id": "NAV-CL-E002-D048",
      "code": "EMBEDDED_ACTIVE_MARKUP",
      "severity": "warning",
      "category": "privacy_risk",
      "title": "Field appears to contain HTML, script, or embedded-resource markup",
      "explanation": "The validator renders every value as text and never evaluates markup, but downstream publication tools might not.",
      "corrective_guidance": "Remove executable or embedded markup and keep only a bounded plain-text description or safe locator."
    },
    {
      "id": "NAV-CL-E002-D049",
      "code": "CRITICAL_FAILURE_ID_INVALID",
      "severity": "warning",
      "category": "critical_gate_state",
      "title": "Critical-failure field contains an unknown domain ID",
      "explanation": "A critical disclosure that cannot resolve to AUDIT-CL-001 is not machine-checkable.",
      "corrective_guidance": "Use only current critical AUDIT-CL-D## IDs or an explicit none-established statement."
    },
    {
      "id": "NAV-CL-E002-D050",
      "code": "CRITICAL_FAILURE_ID_NONCRITICAL",
      "severity": "warning",
      "category": "critical_gate_state",
      "title": "Critical-failure field names a standard domain",
      "explanation": "The referenced audit domain is not classified as a critical gate by current AUDIT-CL-001.",
      "corrective_guidance": "Move the issue to the appropriate finding field while preserving any actual critical-domain failures separately."
    },
    {
      "id": "NAV-CL-E002-D051",
      "code": "CRITICAL_BLOCKER_UNDISCLOSED",
      "severity": "error",
      "category": "critical_gate_state",
      "title": "Critical blocker is not disclosed in critical_gate_failures",
      "explanation": "A record references a critical domain with a blocked or unresolved support status but does not preserve that gate state explicitly.",
      "corrective_guidance": "Add the affected critical domain ID to critical_gate_failures and prevent favorable summary language."
    },
    {
      "id": "NAV-CL-E002-D052",
      "code": "FAVORABLE_OUTCOME_WITH_CRITICAL_BLOCKER",
      "severity": "error",
      "category": "critical_gate_state",
      "title": "Favorable outcome language conflicts with a critical blocker",
      "explanation": "Passing, compliant, certified, safe, approved, or secure wording cannot coexist with a failed, contradicted, required-but-unavailable, or unreviewed critical domain.",
      "corrective_guidance": "Remove favorable outcome language, disclose the blocker, assign remediation, and require a documented retest."
    },
    {
      "id": "NAV-CL-E002-D053",
      "code": "CRITICAL_STATE_UNRESOLVED",
      "severity": "warning",
      "category": "critical_gate_state",
      "title": "Critical-domain review remains unresolved",
      "explanation": "A critical domain is not reviewed, unavailable, contradicted, unsupported, or explicitly failed.",
      "corrective_guidance": "Keep the state visible, block favorable summaries, and assign human review or remediation."
    },
    {
      "id": "NAV-CL-E002-D054",
      "code": "CONTRADICTION_PRESENT",
      "severity": "warning",
      "category": "unresolved_contradictions",
      "title": "Contradicted evidence status is present",
      "explanation": "The available evidence conflicts with the bounded claim and must not be summarized as support.",
      "corrective_guidance": "Correct or narrow the claim, preserve the contradiction, assign remediation, and document retest conditions."
    },
    {
      "id": "NAV-CL-E002-D055",
      "code": "UNAVAILABLE_EVIDENCE_PRESENT",
      "severity": "warning",
      "category": "unavailable_evidence",
      "title": "Required or relevant evidence is unavailable",
      "explanation": "Unavailable evidence is neither a pass nor a failure and must remain visible to reviewers.",
      "corrective_guidance": "State what was requested, why it is unavailable, its effect on the conclusion, and the next attempt or escalation owner."
    },
    {
      "id": "NAV-CL-E002-D056",
      "code": "SUPERSESSION_SELF_REFERENCE",
      "severity": "error",
      "category": "structural_validity",
      "title": "Record supersedes itself",
      "explanation": "A self-reference cannot establish an append-only lifecycle chain.",
      "corrective_guidance": "Use a different prior or successor record ID, or leave the field blank."
    },
    {
      "id": "NAV-CL-E002-D057",
      "code": "SUPERSESSION_TARGET_OUTSIDE_FILE",
      "severity": "notice",
      "category": "human_review",
      "title": "Supersession target is not present in this file",
      "explanation": "The link may validly reference an earlier or separate register, but local validation cannot inspect that target.",
      "corrective_guidance": "Verify the referenced record in its governed location and preserve a resolvable locator."
    },
    {
      "id": "NAV-CL-E002-D058",
      "code": "SUPERSESSION_CYCLE",
      "severity": "warning",
      "category": "human_review",
      "title": "Supersession cycle detected",
      "explanation": "Circular lifecycle links make it impossible to determine which record is current.",
      "corrective_guidance": "Break the cycle and preserve a one-directional append-only history."
    },
    {
      "id": "NAV-CL-E002-D059",
      "code": "HUMAN_REVIEW_REQUIRED",
      "severity": "notice",
      "category": "human_review",
      "title": "Human review remains required",
      "explanation": "Structural checks cannot establish evidence truth, independence, completeness, legal compliance, privacy, security, or certification.",
      "corrective_guidance": "Have an accountable reviewer inspect the evidence, authority, scope, contradictions, unavailable material, and critical gates."
    },
    {
      "id": "NAV-CL-E002-D060",
      "code": "SOURCE_HASH_UNAVAILABLE",
      "severity": "notice",
      "category": "human_review",
      "title": "Browser source hash was unavailable",
      "explanation": "The browser could not produce the SHA-256 source identity used to bind generated derivatives to the selected bytes.",
      "corrective_guidance": "Use the command-line counterpart or a browser with Web Crypto support before publishing a derivative."
    },
    {
      "id": "NAV-CL-E002-D061",
      "code": "CSV_RELEASE_STRUCTURALLY_INFERRED",
      "severity": "notice",
      "category": "structural_validity",
      "title": "CSV release is inferred from its field contract",
      "explanation": "CSV has no top-level release property; this validator recognizes the release from the exact current header set and row register identity.",
      "corrective_guidance": "Preserve the original filename and source hash, or use JSON when an embedded release identifier is required."
    },
    {
      "id": "NAV-CL-E002-D062",
      "code": "TEMPLATE_COLUMN_CONTRACT_MISMATCH",
      "severity": "error",
      "category": "structural_validity",
      "title": "JSON template_columns differs from NAV-CL-E001",
      "explanation": "The advertised column contract does not match the current register authority.",
      "corrective_guidance": "Restore the exact canonical template_columns sequence from the current JSON template."
    },
    {
      "id": "NAV-CL-E002-D063",
      "code": "CSV_EXTRA_VALUES",
      "severity": "error",
      "category": "structural_validity",
      "title": "CSV row contains values beyond the canonical header",
      "explanation": "Extra values have no field identity and may shift or conceal evidence.",
      "corrective_guidance": "Repair delimiters and quoting so the row matches the canonical header width."
    },
    {
      "id": "NAV-CL-E002-D064",
      "code": "BLANK_RECORD_ROW",
      "severity": "notice",
      "category": "evidentiary_completeness",
      "title": "Blank CSV row was ignored",
      "explanation": "A fully blank row does not create a record but may indicate an accidental export artifact.",
      "corrective_guidance": "Remove the blank row before controlled publication."
    },
    {
      "id": "NAV-CL-E002-D065",
      "code": "DIAGNOSTIC_LIMIT_REACHED",
      "severity": "warning",
      "category": "human_review",
      "title": "Diagnostic output was truncated",
      "explanation": "The file produced more issues than the bounded report can safely render and review at once.",
      "corrective_guidance": "Fix the earliest issues or split the register, then validate again."
    }
  ],
  "output_contracts": [
    {
      "id": "NAV-CL-E002-O01",
      "format": "json",
      "label": "Local validation report",
      "description": "Machine-readable structural and risk findings bound to source hash when available."
    },
    {
      "id": "NAV-CL-E002-O02",
      "format": "markdown",
      "label": "Redaction and publication checklist",
      "description": "A printable human-review checklist that does not reproduce selected evidence values."
    }
  ],
  "authority_boundary": "NAV-CL-E002 validates structure, controlled identifiers, bounded completeness indicators, privacy-risk patterns, and critical-gate disclosures. NAV-CL-E001 remains the evidence-register authority; AUDIT-CL-001 remains authoritative for questions, evidence classes, domains, and gate behavior; implementation kits remain authoritative for their bodies. This validator does not establish evidence truth, independence, completeness, legal compliance, privacy, security, provider behavior, or certification.",
  "local_processing_boundary": "The first-party script reads a selected file only after the user activates validation, performs processing in the current browser context, creates downloads only on explicit request, makes no fetch, XHR, beacon, WebSocket, form submission, cookie, localStorage, sessionStorage, IndexedDB, Cache API, service-worker, or remote-asset call, and releases application references on reset. Browser, operating-system, endpoint-security, swap, backup, extension, print, and download behavior remain outside the site proof.",
  "rendering_boundary": "All selected values are treated as inert untrusted data and are inserted into the interface only with text-node APIs. The validator never evaluates HTML, Markdown, formulas, URLs, scripts, or instructions found in the selected file.",
  "report_limitations": [
    "Structural recognition does not prove that any statement is true, independent, complete, current, legally sufficient, private, secure, or certifiable.",
    "Pattern warnings are conservative and may miss sensitive content or flag harmless text; accountable human review remains required.",
    "Local browser processing does not prove secrecy from the browser, operating system, extensions, endpoint controls, swap, backups, print systems, or downloaded derivative handling.",
    "The validator does not contact evidence locators, inspect external files, verify signatures, or test a provider or deployed system.",
    "A lack of reported critical blockers means only that the selected structure did not disclose or trigger one under these rules; it is not a pass."
  ]
}
