{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://altheia.local/schemas/altheia_sector_pack_1.1.schema.json",
  "title": "ALTHEIA Sector Pack 1.1",
  "description": "Contrato Core 2.5.1 para semántica, linaje, medición, evidencia y aplicabilidad de 45 dimensiones sectoriales.",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "pack_version", "status", "sector", "dimension_registry_reference", "dimension_policy", "profile_specification", "dimensions", "relationship_taxonomy", "archetype_taxonomy", "simulation_adapters", "provenance", "quality_gate"],
  "properties": {
    "schema_version": {"const": "altheia_sector_pack_1.1"},
    "pack_version": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"},
    "status": {"enum": ["draft", "review", "approved", "deprecated"]},
    "sector": {"$ref": "#/$defs/sector"},
    "dimension_registry_reference": {
      "type": "object",
      "additionalProperties": false,
      "required": ["schema_version", "registry_version", "mapping_policy"],
      "properties": {
        "schema_version": {"const": "altheia_dimension_registry_1.0"},
        "registry_version": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"},
        "mapping_policy": {"const": "canonical_id_first_slot_compatible"}
      }
    },
    "dimension_policy": {
      "type": "object",
      "additionalProperties": false,
      "required": ["slot_count", "scale", "identity_key", "slot_policy", "minimum_core_dimensions", "sector_dimension_gap_required"],
      "properties": {
        "slot_count": {"const": 45},
        "scale": {"$ref": "#/$defs/scale"},
        "identity_key": {"const": "canonical_dimension_id"},
        "slot_policy": {"type": "string", "minLength": 5},
        "minimum_core_dimensions": {"type": "integer", "minimum": 0, "maximum": 45},
        "sector_dimension_gap_required": {"const": true}
      }
    },
    "profile_specification": {
      "type": "object",
      "required": ["core_contract", "identity_fields", "sector_fields", "lifecycle", "offer_catalog", "channel_catalog"],
      "properties": {
        "core_contract": {"enum": ["altheia_profile_core_2.4", "altheia_profile_core_2.5"]},
        "identity_fields": {"type": "array", "items": {"$ref": "#/$defs/field"}},
        "sector_fields": {"type": "array", "items": {"$ref": "#/$defs/field"}},
        "lifecycle": {"type": "array", "minItems": 2, "items": {"type": "string"}, "uniqueItems": true},
        "offer_catalog": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
        "channel_catalog": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
        "decision_contexts": {"type": "array", "items": {"type": "string"}, "uniqueItems": true}
      }
    },
    "dimensions": {"type": "array", "minItems": 45, "maxItems": 45, "items": {"$ref": "#/$defs/dimension"}},
    "relationship_taxonomy": {"$ref": "#/$defs/relationship"},
    "archetype_taxonomy": {"$ref": "#/$defs/archetypeTaxonomy"},
    "simulation_adapters": {"$ref": "#/$defs/adapters"},
    "provenance": {"$ref": "#/$defs/provenance"},
    "quality_gate": {"$ref": "#/$defs/qualityGate"}
  },
  "$defs": {
    "scale": {
      "type": "object",
      "additionalProperties": false,
      "required": ["min", "max"],
      "properties": {"min": {"const": 1}, "max": {"const": 10}}
    },
    "sector": {
      "type": "object",
      "additionalProperties": false,
      "required": ["sector_id", "name", "description", "markets", "languages", "business_models"],
      "properties": {
        "sector_id": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
        "name": {"type": "string", "minLength": 2},
        "description": {"type": "string", "minLength": 20},
        "markets": {"type": "array", "minItems": 1, "items": {"type": "string"}, "uniqueItems": true},
        "languages": {"type": "array", "minItems": 1, "items": {"type": "string"}, "uniqueItems": true},
        "business_models": {"type": "array", "minItems": 1, "items": {"enum": ["B2C", "B2B", "B2B2C", "C2C", "public", "mixed"]}, "uniqueItems": true},
        "regulated": {"type": "boolean"},
        "regulatory_context": {"type": "array", "items": {"type": "string"}}
      }
    },
    "field": {
      "type": "object",
      "required": ["key", "label", "type", "required", "research_purpose"],
      "properties": {
        "key": {"type": "string", "pattern": "^[a-z][a-z0-9_]*$"},
        "label": {"type": "string"},
        "type": {"enum": ["string", "number", "boolean", "date", "enum", "array", "object"]},
        "required": {"type": "boolean"},
        "research_purpose": {"type": "string"},
        "allowed_values": {"type": "array", "items": {"type": ["string", "number", "boolean"]}}
      }
    },
    "measurementInput": {
      "type": "object",
      "additionalProperties": false,
      "required": ["field_path", "role", "direction"],
      "properties": {
        "field_path": {"type": "string", "pattern": "^/"},
        "role": {"enum": ["primary", "supporting", "control"]},
        "direction": {"enum": ["positive", "negative", "mapped", "documented_in_rule"]},
        "weight": {"type": "number", "minimum": 0, "maximum": 1},
        "mapping": {"type": "object"}
      }
    },
    "measurementModel": {
      "type": "object",
      "additionalProperties": false,
      "required": ["method", "rules_version", "inputs", "missing_policy", "minimum_evidence_items", "output_scale"],
      "properties": {
        "method": {"enum": ["weighted_rules", "rule_table", "derived_formula", "legacy_rule_reference", "manual_research"]},
        "rules_version": {"type": "string", "minLength": 3},
        "rule_id": {"type": "string"},
        "inputs": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/measurementInput"}},
        "missing_policy": {"enum": ["block", "reduce_confidence", "use_declared_fallback", "manual_review"]},
        "minimum_evidence_items": {"type": "integer", "minimum": 1},
        "output_scale": {"$ref": "#/$defs/scale"}
      }
    },
    "evidenceSignal": {
      "type": "object",
      "additionalProperties": false,
      "required": ["signal", "source_type", "field_paths"],
      "properties": {
        "signal": {"type": "string", "minLength": 3},
        "source_type": {"enum": ["observed", "declared", "derived", "human_research"]},
        "field_paths": {"type": "array", "minItems": 1, "items": {"type": "string", "pattern": "^/"}}
      }
    },
    "evidenceModel": {
      "type": "object",
      "additionalProperties": false,
      "required": ["signals", "minimum_signals", "conflict_policy"],
      "properties": {
        "signals": {"type": "array", "minItems": 2, "items": {"$ref": "#/$defs/evidenceSignal"}},
        "minimum_signals": {"type": "integer", "minimum": 1},
        "conflict_policy": {"enum": ["retain_conflict_and_reduce_confidence", "block", "manual_review"]}
      }
    },
    "questionApplicability": {
      "type": "object",
      "additionalProperties": false,
      "required": ["research_intents", "keywords", "question_types", "lifecycle_stages", "related_dimensions", "exclusions"],
      "properties": {
        "research_intents": {"type": "array", "minItems": 1, "items": {"type": "string"}, "uniqueItems": true},
        "keywords": {"type": "array", "minItems": 2, "items": {"type": "string"}, "uniqueItems": true},
        "question_types": {"type": "array", "minItems": 1, "items": {"type": "string"}, "uniqueItems": true},
        "lifecycle_stages": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
        "related_dimensions": {"type": "array", "items": {"type": "string", "pattern": "^D(?:0[1-9]|[1-3][0-9]|4[0-5])$"}, "uniqueItems": true},
        "exclusions": {"type": "array", "items": {"type": "string"}}
      }
    },
    "comparability": {
      "type": "object",
      "additionalProperties": false,
      "required": ["level", "direction_preserved", "notes"],
      "properties": {
        "level": {"enum": ["cross_sector", "conditional", "sector_only"]},
        "direction_preserved": {"type": "boolean"},
        "notes": {"type": "string", "minLength": 10}
      }
    },
    "dimension": {
      "type": "object",
      "additionalProperties": false,
      "required": ["slot", "semantic_id", "canonical_dimension_id", "label", "scope", "definition", "low_anchor", "high_anchor", "evidence_signals", "measurement_model", "evidence_model", "question_applicability", "comparability"],
      "properties": {
        "slot": {"type": "string", "pattern": "^D(?:0[1-9]|[1-3][0-9]|4[0-5])$"},
        "semantic_id": {"type": "string", "pattern": "^[a-z][a-z0-9_]*$"},
        "canonical_dimension_id": {"type": ["string", "null"], "pattern": "^[a-z][a-z0-9_]*$"},
        "label": {"type": "string", "minLength": 2},
        "scope": {"enum": ["core", "adapted", "sector"]},
        "adaptation_rationale": {"type": "string", "minLength": 20},
        "sector_rationale": {"type": "string", "minLength": 20},
        "definition": {"type": "string", "minLength": 15},
        "low_anchor": {"type": "string", "minLength": 3},
        "high_anchor": {"type": "string", "minLength": 3},
        "evidence_signals": {"type": "array", "minItems": 2, "items": {"type": "string"}},
        "legacy_semantic_id": {"type": "string"},
        "measurement_model": {"$ref": "#/$defs/measurementModel"},
        "evidence_model": {"$ref": "#/$defs/evidenceModel"},
        "question_applicability": {"$ref": "#/$defs/questionApplicability"},
        "comparability": {"$ref": "#/$defs/comparability"}
      },
      "allOf": [
        {"if": {"properties": {"scope": {"const": "adapted"}}}, "then": {"required": ["adaptation_rationale"]}},
        {"if": {"properties": {"scope": {"const": "sector"}}}, "then": {"required": ["sector_rationale"], "properties": {"canonical_dimension_id": {"type": "null"}}}},
        {"if": {"properties": {"scope": {"enum": ["core", "adapted"]}}}, "then": {"properties": {"canonical_dimension_id": {"type": "string"}}}}
      ]
    },
    "relationship": {
      "type": "object",
      "required": ["statuses", "roles", "relationship_types", "competitor_rule"],
      "properties": {
        "statuses": {"type": "array", "minItems": 2, "items": {"type": "string"}, "uniqueItems": true},
        "roles": {"type": "array", "minItems": 1, "items": {"type": "string"}, "uniqueItems": true},
        "relationship_types": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
        "competitor_rule": {"type": "string", "minLength": 10},
        "legacy_aliases": {"type": "object", "additionalProperties": {"type": "string"}}
      }
    },
    "archetype": {
      "type": "object",
      "required": ["archetype_id", "name", "scope", "eligibility", "evidence_requirements"],
      "properties": {
        "archetype_id": {"type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"},
        "name": {"type": "string"},
        "scope": {"enum": ["general", "sector"]},
        "eligibility": {"type": "array", "items": {"type": "string"}},
        "evidence_requirements": {"type": "array", "minItems": 1, "items": {"type": "string"}},
        "exclusions": {"type": "array", "items": {"type": "string"}}
      }
    },
    "archetypeTaxonomy": {
      "type": "object",
      "required": ["strategy", "archetypes"],
      "properties": {
        "strategy": {"enum": ["general", "sector", "hybrid"]},
        "archetypes": {"type": "array", "minItems": 4, "items": {"$ref": "#/$defs/archetype"}}
      }
    },
    "adapter": {
      "type": "object",
      "required": ["impact", "requirements"],
      "properties": {
        "impact": {"enum": ["none", "configuration", "mapping", "logic", "not_assessed"]},
        "requirements": {"type": "array", "items": {"type": "string"}}
      }
    },
    "adapters": {
      "type": "object",
      "required": ["profile_generator", "archetyping", "master_farm", "research_modules"],
      "properties": {
        "profile_generator": {"$ref": "#/$defs/adapter"},
        "archetyping": {"$ref": "#/$defs/adapter"},
        "master_farm": {"$ref": "#/$defs/adapter"},
        "research_modules": {"type": "object", "additionalProperties": {"$ref": "#/$defs/adapter"}}
      }
    },
    "source": {
      "type": "object",
      "required": ["title", "source_type", "retrieved_at"],
      "properties": {
        "title": {"type": "string"},
        "url": {"type": "string", "format": "uri"},
        "source_type": {"enum": ["official", "regulator", "industry", "academic", "client", "expert", "other"]},
        "retrieved_at": {"type": "string", "format": "date"}
      }
    },
    "provenance": {
      "type": "object",
      "required": ["created_at", "method", "sources", "assumptions"],
      "properties": {
        "created_at": {"type": "string", "format": "date-time"},
        "method": {"type": "string"},
        "sources": {"type": "array", "items": {"$ref": "#/$defs/source"}},
        "assumptions": {"type": "array", "items": {"type": "string"}}
      }
    },
    "check": {
      "type": "object",
      "required": ["check_id", "status", "detail"],
      "properties": {
        "check_id": {"type": "string"},
        "status": {"enum": ["pending", "passed", "failed", "warning"]},
        "detail": {"type": "string"}
      }
    },
    "qualityGate": {
      "type": "object",
      "required": ["status", "checks"],
      "properties": {
        "status": {"enum": ["pending", "passed", "failed"]},
        "checks": {"type": "array", "items": {"$ref": "#/$defs/check"}}
      }
    }
  }
}
