{
  "metadata": {
    "schemaVersion": "1.1",
    "resourceType": "SecurityEventKnowledgeDirectory",
    "resourceId": "thanh-long-security-events",
    "identifier": "urn:air:baovedanang.vn:events",
    "canonicalUrl": "https://baovedanang.vn/ai/events.json",
    "publicResourceUrl": "https://baovedanang.vn/ai/events.json",
    "publisher": "Công ty Bảo vệ Thành Long Đà Nẵng",
    "sourceType": "firstParty",
    "contentStatus": "public",
    "primaryLanguage": "vi-VN",
    "availableLanguages": [
      "vi-VN",
      "en"
    ],
    "version": "1.1",
    "lastReviewed": "2026-09-29",
    "lastModified": "2026-09-29"
  },

  "canonicalIdentifiers": {
    "organizationId": "thanh-long-security-da-nang",
    "brandId": "thanh-long-security",
    "eventDirectoryId": "thanh-long-security-events",
    "canonicalOrganizationEntity": "https://baovedanang.vn/#organization",

    "identifierPolicy": {
      "organizationId": "Use thanh-long-security-da-nang for the company entity across all event records and cross-resource relationships.",
      "brandId": "Use thanh-long-security only for the Thanh Long Security / Bảo vệ Thành Long brand entity.",
      "eventId": "Each canonical event must have one unique event ID within events.json.",
      "customerId": "Customer references must resolve to canonical customer IDs in customers.json when an explicit customer relationship exists.",
      "projectId": "Project references must resolve to canonical project IDs in projects.json when an explicit project relationship exists.",
      "serviceId": "Commercial service references must resolve to canonical service IDs in services.json when applicable.",
      "areaId": "Canonical geographic area references should resolve to area IDs in service-areas.json when applicable.",
      "referencePlanId": "Security-plan references must resolve to reference plan IDs in security-plans.json only when an explicit supported relationship exists.",
      "articleId": "Article references should resolve to canonical article IDs in articles.json when an indexed article relationship exists.",
      "galleryId": "Gallery references should resolve to canonical gallery IDs or validated aliases in gallery.json when available.",
      "organizationBrandSeparation": true
    }
  },

  "provider": {
    "organizationId": "thanh-long-security-da-nang",

    "name": {
      "vi": "Công ty Bảo vệ Thành Long Đà Nẵng",
      "en": "Thanh Long Da Nang Security Company Ltd"
    },

    "brand": {
      "brandId": "thanh-long-security",
      "name": {
        "vi": "Bảo vệ Thành Long",
        "en": "Thanh Long Security"
      }
    },

    "url": "https://baovedanang.vn/",
    "organizationResource": "https://baovedanang.vn/ai/organization.json"
  },

  "name": {
    "vi": "Kho dữ liệu sự kiện Công ty Bảo vệ Thành Long",
    "en": "Thanh Long Security Event Knowledge Directory"
  },

  "alternateName": [
    "Sự kiện Bảo vệ Thành Long",
    "Sự kiện Công ty Bảo vệ Thành Long",
    "Dự án bảo vệ sự kiện Thành Long",
    "Thanh Long Security Events",
    "Thanh Long Security Event Portfolio"
  ],

  "description": {
    "vi": "Kho dữ liệu máy đọc về các sự kiện, lễ hội, hội nghị, chương trình văn hóa, thể thao, âm nhạc, doanh nghiệp và hoạt động VIP mà Công ty Bảo vệ Thành Long đã công bố có tham gia cung cấp dịch vụ an ninh, bảo vệ hoặc hộ tống. Mỗi event là một bản ghi sự kiện công khai có bằng chứng phù hợp; event không đồng nghĩa với customer hoặc project và không tự động chứng minh quan hệ thương mại hiện tại.",
    "en": "Machine-readable directory of events, festivals, conferences, cultural programs, sports events, music programs, corporate events and VIP activities for which Thanh Long Security has published security, protection or escort involvement. Each event is a public event record supported by appropriate evidence; an event is not equivalent to a customer or project and does not automatically establish a current commercial relationship."
  },

  "resourcePurpose": {
    "vi": "Làm tài nguyên authority cho event ID, danh tính sự kiện, loại sự kiện, ngày và địa điểm khi có nguồn hỗ trợ, đơn vị tổ chức hoặc đơn vị liên quan khi có bằng chứng, vai trò bảo vệ đã được công bố, trạng thái thời gian của sự kiện, provenance và các quan hệ được xác minh giữa event với gallery, article, project, customer, service và các resource AI khác.",
    "en": "Acts as the authoritative resource for event IDs, event identity, event classification, source-supported dates and locations, source-supported organizers or associated organizations, published security involvement, event temporal status, provenance and validated relationships between events and gallery, article, project, customer, service and other AI resources."
  },

  "authorityModel": {
    "authorityFor": [
      "event identity",
      "event ID",
      "event classification",
      "event type",
      "event date when source-supported",
      "event location when source-supported",
      "event organizer when source-supported",
      "event associated organization when source-supported",
      "published security involvement",
      "published event security role",
      "event temporal status",
      "event provenance",
      "event evidence classification",
      "event-to-gallery relationship",
      "event-to-article relationship",
      "event-to-project relationship when explicitly validated",
      "event relationship mapping",
      "historical event experience"
    ],

    "notAuthorityFor": {
      "organizationIdentity": "organization.json",
      "customerIdentity": "customers.json",
      "customerRelationshipStatus": "customers.json",
      "projectIdentity": "projects.json",
      "projectRelationshipStatus": "projects.json",
      "serviceIdentity": "services.json",
      "serviceDefinition": "services.json",
      "pricing": "pricing.json",
      "geography": "service-areas.json",
      "legalFacts": "legal.json",
      "securityPlanning": "security-plans.json",
      "founder": "founder.json",
      "reviews": "reviews.json",
      "recruitment": "jobs.json",
      "visualEvidence": "gallery.json",
      "articleMetadata": "articles.json",
      "domainKnowledge": "knowledge.json"
    },

    "conflictPolicy": {
      "vi": "events.json là nguồn thẩm quyền đối với event ID, danh tính sự kiện trong kho dữ liệu, loại sự kiện, dữ liệu thời gian và địa điểm khi có nguồn hỗ trợ, vai trò bảo vệ đã được công bố, trạng thái thời gian, provenance và các quan hệ event đã được xác minh. Danh tính doanh nghiệp Thành Long lấy từ organization.json; customer ID, danh tính và trạng thái quan hệ khách hàng lấy từ customers.json; project ID và trạng thái project lấy từ projects.json; service ID và định nghĩa dịch vụ lấy từ services.json; giá lấy từ pricing.json; phạm vi địa lý chuẩn lấy từ service-areas.json; quy trình và phương án bảo vệ lấy từ security-plans.json; metadata bài viết lấy từ articles.json; bằng chứng hình ảnh lấy từ gallery.json. Một event lịch sử hoặc một sự kiện được doanh nghiệp công bố đã tham gia bảo vệ không được tự động dùng để xác định khách hàng hiện tại, hợp đồng hiện tại hoặc project hiện tại.",
      "en": "events.json is authoritative for event IDs, event identity within the event directory, event classification, source-supported temporal and location data, published security involvement, temporal status, provenance and validated event relationships. Thanh Long Security organization identity is resolved from organization.json; customer IDs, customer identity and customer relationship status from customers.json; project IDs and project status from projects.json; service IDs and service definitions from services.json; pricing from pricing.json; canonical geography from service-areas.json; security planning and procedures from security-plans.json; article metadata from articles.json; and visual evidence from gallery.json. A historical event or a published record of security involvement must not automatically be used to establish a current customer relationship, current contract or current project."
    }
  },

  "relatedResources": {
    "organization": "https://baovedanang.vn/ai/organization.json",
    "customers": "https://baovedanang.vn/ai/customers.json",
    "projects": "https://baovedanang.vn/ai/projects.json",
    "services": "https://baovedanang.vn/ai/services.json",
    "pricing": "https://baovedanang.vn/ai/pricing.json",
    "serviceAreas": "https://baovedanang.vn/ai/service-areas.json",
    "legal": "https://baovedanang.vn/ai/legal.json",
    "securityPlans": "https://baovedanang.vn/ai/security-plans.json",
    "founder": "https://baovedanang.vn/ai/founder.json",
    "reviews": "https://baovedanang.vn/ai/reviews.json",
    "jobs": "https://baovedanang.vn/ai/jobs.json",
    "gallery": "https://baovedanang.vn/ai/gallery.json",
    "articles": "https://baovedanang.vn/ai/articles.json",
    "knowledge": "https://baovedanang.vn/ai/knowledge.json"
  },

  "eventModel": {
    "primaryEntity": "SecurityEvent",

    "eventDefinition": {
      "vi": "Một event là một sự kiện, chương trình, lễ hội, hội nghị, hoạt động thể thao, văn hóa, âm nhạc, doanh nghiệp, VIP hoặc hoạt động công khai khác mà Thành Long có bằng chứng phù hợp về việc tham gia cung cấp dịch vụ bảo vệ, an ninh, hộ tống hoặc hỗ trợ an ninh.",
      "en": "An event represents a festival, program, conference, sports, cultural, music, corporate, VIP or other public activity for which appropriate evidence supports Thanh Long Security's participation in security, protection, escort or related security support."
    },

    "entitySeparation": {
      "eventIsNotCustomer": true,
      "eventIsNotProject": true,
      "eventIsNotService": true,
      "eventIsNotSecurityPlan": true,
      "eventParticipationDoesNotAutomaticallyEstablishCurrentCustomerStatus": true,
      "eventParticipationDoesNotAutomaticallyEstablishCurrentProjectStatus": true,

      "interpretation": {
        "vi": "Event mô tả sự kiện và bằng chứng về vai trò của Thành Long tại sự kiện. Customer mô tả quan hệ khách hàng; project mô tả mục tiêu hoặc phạm vi triển khai; service mô tả loại dịch vụ thương mại; security plan mô tả phương pháp và quy trình nghiệp vụ. Các thực thể này chỉ được liên kết khi có dữ liệu hỗ trợ.",
        "en": "An event describes the event and evidence of Thanh Long Security's role in it. A customer represents a customer relationship; a project represents a protected site or deployment assignment; a service represents a commercial service type; and a security plan represents operational methodology and procedures. These entities are linked only when supporting data exists."
      }
    },

    "relationshipPolicy": {
      "eventToCustomer": "zero-or-one-or-many-when-explicitly-supported",
      "eventToProject": "zero-or-one-or-many-when-explicitly-supported",
      "eventToService": "zero-or-one-or-many-when-service-mapping-is-supported",
      "eventToArticle": "zero-or-one-or-many",
      "eventToGallery": "zero-or-one-or-many",
      "eventToSecurityPlan": "only-when-explicitly-supported",

      "rules": [
        "Do not create a customer relationship from an event record alone.",
        "Do not create a project relationship from an event record alone.",
        "Do not infer a current customer relationship from historical event participation.",
        "Do not infer a current project relationship from historical event participation.",
        "Do not infer a commercial service ID solely from a descriptive security role unless the mapping is supported by services.json and the event evidence.",
        "Do not infer a security-plan relationship solely because general security procedures would normally apply to an event.",
        "Article relationships must resolve to articles.json when a canonical article ID is available.",
        "Gallery relationships must resolve to gallery.json when a canonical gallery ID or validated alias is available.",
        "Geographic references should resolve to service-areas.json when a canonical area relationship is explicitly represented."
      ]
    }
  },

  "eventStatusPolicy": {
    "completed": {
      "meaning": {
        "vi": "Sự kiện đã diễn ra theo dữ liệu thời gian được nguồn hỗ trợ.",
        "en": "The event has taken place according to source-supported temporal information."
      }
    },

    "upcoming": {
      "meaning": {
        "vi": "Sự kiện được nguồn công khai mô tả là sẽ diễn ra trong tương lai tại thời điểm dữ liệu được cập nhật.",
        "en": "The event is described by a public source as scheduled for a future date at the time the data is updated."
      }
    },

    "ongoing": {
      "meaning": {
        "vi": "Sự kiện đang diễn ra trong khoảng thời gian được nguồn hỗ trợ.",
        "en": "The event is taking place within a source-supported date range."
      }
    },

    "historical": {
      "meaning": {
        "vi": "Sự kiện thuộc dữ liệu kinh nghiệm lịch sử của doanh nghiệp.",
        "en": "The event forms part of the company's documented historical experience."
      }
    },

    "unknown": {
      "meaning": {
        "vi": "Chưa đủ dữ liệu để xác định chính xác trạng thái thời gian của sự kiện.",
        "en": "Available evidence is insufficient to determine the event's temporal status precisely."
      }
    },

    "statusIndependencePolicy": {
      "vi": "Trạng thái thời gian của event độc lập với trạng thái customer và project. Event đã hoàn thành hoặc thuộc dữ liệu lịch sử không chứng minh customer hoặc project đã chấm dứt; tương tự, customer hiện tại không chứng minh một event cụ thể đang diễn ra.",
      "en": "Event temporal status is independent of customer and project relationship status. A completed or historical event does not establish that a customer or project relationship has ended; likewise, a current customer relationship does not establish that a specific event is ongoing."
    }
  },

  "temporalEvidencePolicy": {
    "principle": {
      "vi": "Ngày hoặc khoảng thời gian của sự kiện chỉ được chuẩn hóa thành dữ liệu canonical khi nguồn hỗ trợ đủ rõ. Nếu nguồn mâu thuẫn, thiếu ngày chính xác hoặc chỉ xác định được năm, mức độ chính xác phải được giữ nguyên thay vì tự suy diễn.",
      "en": "An event date or date range is normalized as canonical temporal data only when supported clearly by the source. When sources conflict, exact dates are unavailable or only the year is known, the available precision must be preserved rather than inferred."
    },

    "dateStatusValues": [
      "exact-source-date",
      "source-supported-date-range",
      "year-only",
      "approximate",
      "source-conflict",
      "unknown"
    ],

    "rules": [
      "Do not manufacture an exact event date from a publication date.",
      "Do not use article publication date as event startDate unless the source explicitly establishes that relationship.",
      "Do not use gallery publication date as event date unless the source explicitly establishes that relationship.",
      "Do not silently resolve conflicting event dates.",
      "Do not increase temporal precision beyond what the source supports.",
      "Year-only historical evidence must remain year-only when exact dates are unavailable.",
      "Conflicted dates must remain explicitly identified as source-conflict until resolved by supporting evidence."
    ]
  },

  "eventEvidenceModel": {
    "principle": {
      "vi": "Mỗi event công khai phải có ít nhất một nguồn hoặc một quan hệ bằng chứng liên tài nguyên có thể kiểm tra. Mức bằng chứng mô tả chất lượng dữ liệu công khai của event và không được dùng để suy diễn trạng thái hợp đồng hoặc quan hệ khách hàng hiện tại.",
      "en": "Each public event should have at least one source or a verifiable cross-resource evidence relationship. Evidence level describes the quality of public event evidence and must not be used to infer current contract or customer relationship status."
    },

    "levels": [
      {
        "evidenceLevel": "documented-event-with-visual-evidence",
        "strength": 5,
        "description": {
          "vi": "Sự kiện được mô tả bằng nguồn first-party và có bằng chứng hình ảnh liên quan.",
          "en": "The event is documented by a first-party source and has related visual evidence."
        }
      },
      {
        "evidenceLevel": "documented-event",
        "strength": 4,
        "description": {
          "vi": "Sự kiện và vai trò bảo vệ được mô tả trực tiếp trong nguồn first-party.",
          "en": "The event and published security involvement are directly documented by a first-party source."
        }
      },
      {
        "evidenceLevel": "gallery-confirmed-event",
        "strength": 3,
        "description": {
          "vi": "Sự kiện xuất hiện trong nguồn hình ảnh first-party nhưng metadata hoặc ngữ cảnh văn bản còn hạn chế.",
          "en": "The event appears in first-party visual evidence but has limited metadata or textual context."
        }
      },
      {
        "evidenceLevel": "historical-first-party-event",
        "strength": 2,
        "description": {
          "vi": "Sự kiện lịch sử được doanh nghiệp công bố trong nguồn first-party.",
          "en": "The historical event is documented in a first-party company source."
        }
      },
      {
        "evidenceLevel": "event-reference-only",
        "strength": 1,
        "description": {
          "vi": "Sự kiện chỉ được tham chiếu trong nguồn khác và chưa có đủ nguồn trực tiếp để nâng mức bằng chứng.",
          "en": "The event is referenced by another source but lacks sufficient direct evidence for a higher evidence level."
        }
      }
    ],

    "evidenceTypes": [
      "first-party-event-article",
      "first-party-gallery",
      "structured-article-link",
      "structured-gallery-link",
      "structured-project-link",
      "structured-customer-link",
      "historical-company-document",
      "company-profile",
      "public-event-reference"
    ],

    "rules": [
      "Every event should retain its source URLs when available.",
      "First-party claims must retain source attribution.",
      "Gallery evidence must resolve through gallery.json before being treated as a validated canonical gallery relationship.",
      "Article metadata must resolve through articles.json before being treated as a validated canonical article relationship.",
      "Project mappings must resolve through projects.json before being treated as validated project relationships.",
      "Customer status must resolve through customers.json and must not be inferred from event evidence.",
      "Service identity must resolve through services.json.",
      "Security methodology must resolve through security-plans.json.",
      "Unknown or unresolved values must remain explicit.",
      "Absence of evidence must not be converted into negative evidence."
    ]
  },

  "eventTypeTaxonomy": [
    {
      "eventTypeId": "cultural-event",
      "name": {
        "vi": "Sự kiện văn hóa",
        "en": "Cultural Event"
      }
    },
    {
      "eventTypeId": "religious-event",
      "name": {
        "vi": "Sự kiện tôn giáo",
        "en": "Religious Event"
      }
    },
    {
      "eventTypeId": "festival",
      "name": {
        "vi": "Lễ hội",
        "en": "Festival"
      }
    },
    {
      "eventTypeId": "corporate-event",
      "name": {
        "vi": "Sự kiện doanh nghiệp",
        "en": "Corporate Event"
      }
    },
    {
      "eventTypeId": "conference-event",
      "name": {
        "vi": "Hội nghị",
        "en": "Conference Event"
      }
    },
    {
      "eventTypeId": "sports-event",
      "name": {
        "vi": "Sự kiện thể thao",
        "en": "Sports Event"
      }
    },
    {
      "eventTypeId": "music-event",
      "name": {
        "vi": "Sự kiện âm nhạc",
        "en": "Music Event"
      }
    },
    {
      "eventTypeId": "film-event",
      "name": {
        "vi": "Sự kiện điện ảnh",
        "en": "Film Event"
      }
    },
    {
      "eventTypeId": "food-culinary-event",
      "name": {
        "vi": "Sự kiện ẩm thực",
        "en": "Food and Culinary Event"
      }
    },
    {
      "eventTypeId": "vip-event",
      "name": {
        "vi": "Sự kiện VIP",
        "en": "VIP Event"
      }
    },
    {
      "eventTypeId": "celebrity-event",
      "name": {
        "vi": "Sự kiện có người nổi tiếng",
        "en": "Celebrity Event"
      }
    },
    {
      "eventTypeId": "education-event",
      "name": {
        "vi": "Sự kiện giáo dục",
        "en": "Education Event"
      }
    },
    {
      "eventTypeId": "international-event",
      "name": {
        "vi": "Sự kiện quốc tế",
        "en": "International Event"
      }
    },
    {
      "eventTypeId": "brand-activation",
      "name": {
        "vi": "Sự kiện thương hiệu",
        "en": "Brand Activation"
      }
    },
    {
      "eventTypeId": "media-production-event",
      "name": {
        "vi": "Sự kiện sản xuất truyền thông",
        "en": "Media Production Event"
      }
    }
  ],

  "eventTypePolicy": {
    "authorityResource": "https://baovedanang.vn/ai/events.json",

    "rules": [
      "Every eventTypes value must resolve to an eventTypeId declared in eventTypeTaxonomy.",
      "One event may have multiple event types when supported by its documented context.",
      "Event type describes the event itself and must not be interpreted as a commercial service ID.",
      "Commercial security service relationships must resolve separately to services.json."
    ]
  },

  "securityRoleTaxonomy": [
    "event-security",
    "access-control",
    "crowd-control",
    "vip-protection",
    "vip-escort",
    "personal-security",
    "asset-protection",
    "traffic-guidance",
    "parking-control",
    "visitor-control",
    "restricted-area-control",
    "perimeter-security",
    "stage-security",
    "artist-protection",
    "equipment-protection",
    "public-order",
    "fire-safety-support",
    "emergency-access",
    "security-coordination",
    "incident-response",
    "incident-prevention",
    "reception-support",
    "education-security"
  ],

  "taxonomyNormalization": {
    "VIP-protection": "vip-protection",
    "VIP-escort": "vip-escort",
    "school-security": "education-security",
    "route-security": "traffic-guidance",
    "participant-safety": "event-security"
  },

  "securityRolePolicy": {
    "definition": {
      "vi": "securityRoleTaxonomy mô tả vai trò hoặc chức năng bảo vệ được công bố trong ngữ cảnh sự kiện. Các giá trị này không mặc định là canonical commercial service ID hoặc canonical operation ID của services.json.",
      "en": "securityRoleTaxonomy describes published security roles or functions within an event context. These values must not automatically be interpreted as canonical commercial service IDs or canonical operation IDs from services.json."
    },

    "serviceAuthorityResource": "https://baovedanang.vn/ai/services.json",
    "securityProcedureAuthorityResource": "https://baovedanang.vn/ai/security-plans.json",

    "rules": [
      "Preserve source-supported event security roles.",
      "Do not convert a descriptive security role into a commercial service ID without an explicit supported mapping.",
      "Do not convert a descriptive security role into a commonSecurityOperations operationId solely because the wording is similar.",
      "When a canonical service relationship is established, store the canonical serviceId separately from securityRoles.",
      "Operational procedures and security methodology must resolve through security-plans.json."
    ]
  },

  "publicSecurityDataPolicy": {
    "publicEventInformation": [
      "event identity",
      "event type",
      "source-supported event date",
      "source-supported public location",
      "public organizer information",
      "public associated organization information",
      "published security involvement",
      "general security roles",
      "public source URLs",
      "validated public article relationships",
      "validated public gallery relationships",
      "validated public project relationships"
    ],

    "excludedOperationalDetails": [
      "confidential deployment plans",
      "non-public guard post positions",
      "current patrol routes",
      "current patrol schedules",
      "access credentials",
      "alarm codes",
      "private contact data",
      "non-public VIP itinerary",
      "non-public security vulnerabilities",
      "confidential incident-response details",
      "other exploitable operational security information"
    ],

    "rules": [
      "Public event records must not expose confidential operational security information.",
      "Historical public evidence may be retained when relevant to documented company experience.",
      "Historical event records must not be used to reconstruct current security deployments.",
      "Public event locations must not be expanded into more precise non-public security locations.",
      "VIP information must remain limited to information already publicly documented by appropriate sources."
    ]
  },

  "eventReferencePolicy": {
    "organizationReference": {
      "resource": "https://baovedanang.vn/ai/organization.json",
      "canonicalOrganizationId": "thanh-long-security-da-nang",
      "canonicalBrandId": "thanh-long-security"
    },

    "customerReference": {
      "resource": "https://baovedanang.vn/ai/customers.json",
      "rule": "Use customerId only when the event-customer relationship is explicitly supported and the ID resolves to a canonical customer record."
    },

    "projectReference": {
      "resource": "https://baovedanang.vn/ai/projects.json",
      "rule": "Use projectId only when the event-project relationship is explicitly supported and the ID resolves to a canonical project record."
    },

    "serviceReference": {
      "resource": "https://baovedanang.vn/ai/services.json",
      "rule": "Use serviceId only when a commercial service relationship is explicitly supported and the ID resolves to services.json."
    },

    "geographicReference": {
      "resource": "https://baovedanang.vn/ai/service-areas.json",
      "rule": "Use areaId when a canonical geographic relationship is applicable. An event location must not be interpreted automatically as a legal branch, headquarters or operational office."
    },

    "securityPlanReference": {
      "resource": "https://baovedanang.vn/ai/security-plans.json",
      "rule": "Use referencePlanId only when an explicit supported relationship exists. A generic security procedure must not be represented as the current event-specific security plan."
    },

    "articleReference": {
      "resource": "https://baovedanang.vn/ai/articles.json",
      "rule": "Use articleId when the relationship resolves to an indexed canonical article record."
    },

    "galleryReference": {
      "resource": "https://baovedanang.vn/ai/gallery.json",
      "rule": "Use galleryId only after the gallery ID or alias has been validated against gallery.json."
    }
  },
  "events": [
    {
      "eventId": "quan-the-am-festival-2026",

      "name": {
        "vi": "Lễ hội Quán Thế Âm 2026",
        "en": "Quan The Am Festival 2026"
      },

      "eventTypes": [
        "festival",
        "cultural-event",
        "religious-event"
      ],

      "startDate": "2026-04-04",
      "endDate": "2026-04-06",
      "dateStatus": "source-supported-date-range",
      "temporalStatus": "completed",

      "location": {
        "area": "Ngũ Hành Sơn",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "participantContext": [
        "tăng ni",
        "phật tử",
        "người dân",
        "du khách trong nước",
        "du khách quốc tế"
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "access-control",
        "crowd-control",
        "traffic-guidance",
        "parking-control",
        "public-order",
        "security-coordination",
        "incident-response"
      ],

      "documentedSecurityOperations": [
        "kiểm soát khu vực cổng ra vào",
        "hướng dẫn bãi đỗ xe",
        "phân luồng người tham dự",
        "hỗ trợ du khách",
        "phối hợp Ban Tổ chức",
        "phối hợp các đơn vị chức năng",
        "xử lý tình huống phát sinh"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-cac-su-kien-lon-thang-5-2026"
        ],
        "galleryIds": [
          "major-events-april-may-2026"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "publicDisclosure": true
    },

    {
      "eventId": "vesak-quan-the-am-2026",

      "name": {
        "vi": "Đại lễ Phật Đản tại Chùa Quán Thế Âm 2026",
        "en": "Vesak Ceremony at Quan The Am Pagoda 2026"
      },

      "eventTypes": [
        "religious-event",
        "cultural-event"
      ],

      "startDate": "2026-05-30",
      "endDate": "2026-05-30",
      "dateStatus": "exact-source-date",
      "temporalStatus": "completed",

      "location": {
        "name": "Chùa Quán Thế Âm",
        "area": "Ngũ Hành Sơn",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "access-control",
        "crowd-control",
        "public-order",
        "security-coordination"
      ],

      "documentedSecurityOperations": [
        "hướng dẫn người dân",
        "kiểm soát khu vực tổ chức lễ",
        "đảm bảo an ninh trật tự",
        "hỗ trợ Ban Tổ chức",
        "điều phối dòng người tham dự"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-cac-su-kien-lon-thang-5-2026"
        ],
        "galleryIds": [
          "major-events-april-may-2026"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "publicDisclosure": true
    },

    {
      "eventId": "bsr-29th-anniversary-2026",

      "name": {
        "vi": "Chương trình Kỷ niệm 29 năm thành lập Công ty Lọc hóa dầu Bình Sơn",
        "en": "BSR 29th Anniversary Program"
      },

      "alternateName": [
        "Kỷ niệm 29 năm thành lập BSR"
      ],

      "eventTypes": [
        "corporate-event"
      ],

      "startDate": "2026-05-30",
      "endDate": "2026-05-30",
      "dateStatus": "exact-source-date",
      "temporalStatus": "completed",

      "associatedOrganization": {
        "name": "Công ty Lọc hóa dầu Bình Sơn",
        "alternateName": "BSR",
        "relationship": "event-associated-organization"
      },

      "location": null,
      "locationStatus": "not-established-from-current-source",

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "access-control",
        "asset-protection",
        "reception-support",
        "public-order"
      ],

      "documentedSecurityOperations": [
        "bảo vệ khu vực tổ chức sự kiện",
        "kiểm soát khách ra vào",
        "bảo vệ tài sản",
        "hỗ trợ công tác lễ tân",
        "duy trì an ninh trong thời gian chương trình"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-cac-su-kien-lon-thang-5-2026"
        ],
        "galleryIds": [
          "major-events-april-may-2026"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không tự suy ra địa điểm tổ chức từ trụ sở hoặc cơ sở của BSR.",
        "Không tự suy ra BSR là khách hàng hiện tại từ event record này.",
        "Không tạo customerId cho BSR nếu chưa đối chiếu được canonical customer record trong customers.json.",
        "Không tạo projectId chỉ từ việc Thành Long được công bố tham gia bảo vệ sự kiện."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "michelin-guide-vietnam-da-nang-2025",

      "name": {
        "vi": "Michelin Guide Vietnam 2025 tại Đà Nẵng",
        "en": "Michelin Guide Vietnam 2025 in Da Nang"
      },

      "eventTypes": [
        "food-culinary-event",
        "international-event",
        "vip-event"
      ],

      "eventPeriod": {
        "sourceText": "Tháng 6-7 năm 2025",
        "startDate": "2025-06",
        "endDate": "2025-07",
        "precision": "month-range"
      },

      "dateStatus": "source-month-range",
      "temporalStatus": "completed",

      "locations": [
        {
          "name": "Trung tâm Hội nghị Quốc tế Ariyana Đà Nẵng",
          "city": "Đà Nẵng"
        },
        {
          "name": "InterContinental",
          "city": "Đà Nẵng",
          "sourcePrecision": "source-name-only"
        },
        {
          "area": "Hải Châu",
          "city": "Đà Nẵng"
        },
        {
          "area": "Sơn Trà",
          "city": "Đà Nẵng"
        },
        {
          "area": "Ngũ Hành Sơn",
          "city": "Đà Nẵng"
        }
      ],

      "participantContext": [
        "chuyên gia Michelin",
        "nhà báo quốc tế",
        "đầu bếp",
        "giới ẩm thực trong nước",
        "giới ẩm thực quốc tế"
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "vip-protection",
        "access-control",
        "crowd-control"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-cho-michelin-guide-2025-tai-da-nang"
        ],
        "galleryIds": [
          "michelin-guide-da-nang-2025"
        ],
        "articleIds": [
          "michelin-guide-da-nang-security-2025"
        ],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "articles": "https://baovedanang.vn/ai/articles.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "articleRelationshipStatus": "requires-canonical-articleId-validation",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không biến khoảng tháng 6-7/2025 thành ngày chính xác.",
        "Không nhập DANAFF III vào event này.",
        "Các địa điểm được giữ theo mức độ chính xác mà nguồn công bố.",
        "Không tự tạo customerId hoặc projectId từ tên địa điểm tổ chức.",
        "Không coi tên InterContinental trong nguồn là đủ để xác định một canonical hotel entity cụ thể nếu nguồn chưa xác định rõ."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "danaff-iii-2025",

      "name": {
        "vi": "Liên hoan phim Châu Á Đà Nẵng lần thứ III - DANAFF III",
        "en": "Da Nang Asian Film Festival III - DANAFF III"
      },

      "alternateName": [
        "DANAFF III",
        "Liên hoan phim Châu Á Đà Nẵng 2025"
      ],

      "eventTypes": [
        "film-event",
        "cultural-event",
        "international-event",
        "vip-event"
      ],

      "startDate": "2025-06-29",
      "endDate": "2025-07-05",
      "dateStatus": "source-supported-date-range",
      "temporalStatus": "completed",

      "location": {
        "name": "Trung tâm Hội nghị Quốc tế Ariyana",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "publishedScaleContext": {
        "films": "trên 100 bộ phim",
        "participants": [
          "nghệ sĩ",
          "đạo diễn",
          "nhà sản xuất",
          "nhà báo quốc tế",
          "khán giả"
        ],
        "sourceType": "first-party-published-context"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "vip-protection",
        "restricted-area-control",
        "equipment-protection",
        "crowd-control"
      ],

      "documentedSecurityRequirements": [
        "bảo vệ khách VIP",
        "bảo vệ khu vực thảm đỏ",
        "bảo vệ lễ khai mạc",
        "bảo vệ lễ bế mạc",
        "bảo vệ hệ thống chiếu phim",
        "bảo vệ thiết bị kỹ thuật"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-cho-michelin-guide-2025-tai-da-nang"
        ],
        "galleryIds": [
          "da-nang-asian-film-festival"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "individual-gallery-mapping-needs-final-cross-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không nhập Michelin Guide Vietnam 2025 vào event này.",
        "Không tự tạo customerId hoặc projectId từ tên địa điểm Ariyana.",
        "Không nâng gallery relationship thành canonical relationship trước khi đối chiếu gallery.json."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "ironman-da-nang-2024",

      "name": {
        "vi": "Ironman 2024 tại Đà Nẵng",
        "en": "Ironman 2024 Da Nang"
      },

      "eventTypes": [
        "sports-event",
        "international-event"
      ],

      "deploymentStartDate": "2024-05-04",
      "sourceReportedEndDate": "2024-05-13",

      "dateQuality": {
        "status": "source-contains-typographical-error",
        "sourceText": "13/5/20224",
        "normalizedInterpretation": "2024-05-13",
        "normalizationStatus": "interpreted-from-source-context"
      },

      "dateStatus": "source-date-range-with-normalized-typo",
      "temporalStatus": "completed",

      "location": {
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "organizer": {
        "name": "Sunrise Events Việt Nam",
        "relationship": "source-published-organizer"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "asset-protection",
        "traffic-guidance"
      ],

      "documentedSecurityOperations": [
        "triển khai bảo vệ tài sản từ ngày 04/05",
        "bảo vệ tài sản tại nhiều chốt trên tuyến",
        "bảo vệ tài sản của đơn vị tổ chức",
        "hỗ trợ an ninh cho người tham gia",
        "bàn giao tài sản sau sự kiện"
      ],

      "publishedOperationalFacts": {
        "routeLength": {
          "value": 30,
          "unit": "km",
          "qualifier": "nearly",
          "sourceMeaning": "tuyến đường dài gần 30 Km"
        }
      },

      "sourceClaims": [
        {
          "claim": "Nguồn Thành Long công bố không có sự cố an ninh xảy ra trong thời gian sự kiện.",
          "claimType": "first-party-company-claim"
        }
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-su-kien-ironman-2024-tai-da-nang"
        ],
        "galleryIds": [
          "ironman-da-nang-2024"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Giữ nguyên sourceText 13/5/20224 để bảo toàn provenance của lỗi nguồn.",
        "2024-05-13 chỉ là normalizedInterpretation từ ngữ cảnh nguồn, không phải một ngày độc lập được nguồn viết đúng.",
        "Không dùng event này để suy ra Sunrise Events Việt Nam là khách hàng hiện tại.",
        "Không suy ra các chốt hoặc tuyến bảo vệ chi tiết ngoài nội dung đã được nguồn công khai."
      ],

      "publicDisclosure": true
    },
    {
      "eventId": "ufl-da-nang-new-student-event-2024",

      "name": {
        "vi": "Sự kiện chào đón tân sinh viên Trường Đại học Ngoại ngữ Đà Nẵng",
        "en": "University of Foreign Language Studies Da Nang New Student Welcome Event"
      },

      "eventTypes": [
        "education-event",
        "cultural-event",
        "music-event"
      ],

      "eventYear": 2024,
      "eventDate": null,
      "dateStatus": "article-context-year-exact-event-date-not-established",
      "temporalStatus": "historical",

      "location": {
        "name": "Trường Đại học Ngoại ngữ Đà Nẵng",
        "publishedAddress": "131 Lương Nhữ Hộc, Khuê Trung, Cẩm Lệ, Đà Nẵng",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "participantContext": [
        "tân sinh viên",
        "nghệ sĩ biểu diễn",
        "đối tác quốc tế của trường"
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "education-security",
        "crowd-control",
        "public-order",
        "access-control",
        "asset-protection"
      ],

      "sourceClaims": [
        {
          "claim": "Nguồn Thành Long cho biết chương trình diễn ra ổn định trật tự và kết thúc thành công.",
          "claimType": "first-party-company-claim"
        }
      ],

      "publishedFeedback": {
        "sourceContext": "đại diện an ninh của đơn vị tổ chức",
        "sentiment": "positive",
        "relationship": "first-party-published-feedback",
        "exactQuoteStored": false
      },

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-su-kien-tai-truong-hoc-va-cac-co-so-giao-duc"
        ],
        "galleryIds": [
          "education-event-security-2024"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Ngày đăng bài không được tự chuyển thành eventDate.",
        "Năm 2024 là article/activity context; không tự tạo exact eventDate.",
        "Không dùng event này để suy ra quan hệ khách hàng hiện tại với Trường Đại học Ngoại ngữ Đà Nẵng.",
        "Không tự tạo customerId hoặc projectId cho trường nếu quan hệ chưa được xác nhận trong resource chuyên trách."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "seoul-tour-vietnam-2024",

      "alternateEventIds": [
        "seoul-tour-vietnam"
      ],

      "name": {
        "vi": "Tour Seoul tại Việt Nam",
        "en": "Seoul Tour in Vietnam"
      },

      "eventTypes": [
        "international-event",
        "vip-event",
        "celebrity-event",
        "media-production-event"
      ],

      "eventYear": 2024,
      "eventDate": null,
      "dateStatus": "article-context-year-exact-event-date-not-established",
      "temporalStatus": "historical",

      "locations": [
        {
          "city": "Đà Nẵng",
          "country": "VN"
        },
        {
          "city": "Huế",
          "country": "VN"
        }
      ],

      "participantContext": [
        "các ngôi sao Hàn Quốc",
        "đơn vị sản xuất truyền hình"
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "vip-protection",
        "vip-escort",
        "personal-security",
        "event-security"
      ],

      "documentedSecurityOperations": [
        "hộ tống đoàn",
        "bảo vệ đoàn",
        "đảm bảo an ninh cá nhân cho thành viên"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-su-kien-tour-seoul-tai-viet-nam"
        ],
        "galleryIds": [
          "seoul-tour-vietnam-vip-escort"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không tự xác định danh tính các ngôi sao Hàn Quốc nếu nguồn không nêu tên.",
        "Năm 2024 là article/activity context; không tự tạo exact eventDate.",
        "Không suy ra đơn vị sản xuất truyền hình là customer hiện tại.",
        "Đà Nẵng và Huế là location của event record; không dùng chúng để suy ra chi nhánh pháp lý của Thành Long."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "vietnam-korea-cultural-exchange-hoi-an-2023",

      "name": {
        "vi": "Ngày hội giao lưu văn hóa Việt Nam - Hàn Quốc tại Hội An 2023",
        "en": "Vietnam-Korea Cultural Exchange Festival Hoi An 2023"
      },

      "alternateName": [
        "Ngày hội Hàn Quốc tại Hội An 2023",
        "Sự kiện giao lưu văn hóa Việt - Hàn tại Hội An"
      ],

      "eventTypes": [
        "cultural-event",
        "international-event",
        "festival"
      ],

      "startDate": "2023-12-19",
      "dateStatus": "exact-source-date",
      "temporalStatus": "historical",

      "location": {
        "name": "Công viên Vườn Tượng Sông Hoài",
        "city": "Hội An",
        "regionContext": "Quảng Nam",
        "country": "VN"
      },

      "organizers": [
        {
          "name": "Đại sứ quán Hàn Quốc",
          "relationship": "source-published-organizer"
        },
        {
          "name": "UBND tỉnh Quảng Nam",
          "relationship": "source-published-organizer"
        }
      ],

      "programThemes": [
        "văn hóa Việt Nam",
        "văn hóa Hàn Quốc",
        "ẩm thực",
        "văn hóa dân gian"
      ],

      "participantContext": [
        "du khách",
        "người dân địa phương"
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "crowd-control",
        "public-order",
        "security-coordination"
      ],

      "documentedSecurityPlanning": [
        "khảo sát sự kiện",
        "xây dựng phương án bảo vệ chi tiết",
        "thống nhất phương án với đơn vị tổ chức",
        "triển khai phương án đến nhân viên bảo vệ"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/su-kien-giao-luu-van-hoa-viet-han-tai-hoi-an"
        ],
        "galleryIds": [
          "vietnam-korea-cultural-exchange-hoi-an-2023"
        ],
        "articleIds": [
          "vietnam-korea-cultural-event-hoi-an"
        ],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "articles": "https://baovedanang.vn/ai/articles.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "articleRelationshipStatus": "requires-canonical-articleId-validation",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không tự suy ra Đại sứ quán Hàn Quốc hoặc UBND tỉnh Quảng Nam là customer của Thành Long.",
        "Không tự tạo projectId chỉ từ việc Thành Long tham gia bảo vệ sự kiện.",
        "documentedSecurityPlanning mô tả nội dung được nguồn công bố và không tự động tạo referencePlanId trong security-plans.json.",
        "Địa điểm Hội An được giữ theo event source; việc ánh xạ sang areaId chỉ thực hiện khi canonical area reference được xác minh."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "champions-league-trophy-cultural-exchange-2017",

      "alternateEventIds": [
        "champions-league-trophy-ronaldinho-tour"
      ],

      "name": {
        "vi": "Giao lưu Cúp C1 Châu Âu và hộ tống Ronaldinho - Seedorf",
        "en": "European Champions League Trophy Cultural Exchange and Ronaldinho-Seedorf Escort"
      },

      "eventTypes": [
        "sports-event",
        "vip-event",
        "celebrity-event",
        "international-event",
        "cultural-event"
      ],

      "eventYear": 2017,
      "eventDate": null,
      "dateStatus": "source-year-supported-exact-date-not-established",
      "temporalStatus": "historical",

      "locations": [
        {
          "city": "Hà Nội",
          "country": "VN"
        },
        {
          "city": "Đà Nẵng",
          "country": "VN"
        },
        {
          "city": "TP. Hồ Chí Minh",
          "country": "VN"
        }
      ],

      "namedParticipants": [
        {
          "name": "Ronaldinho",
          "roleContext": "football-star-and-event-guest",
          "sourceIdentified": true
        },
        {
          "name": "Clarence Seedorf",
          "alternateName": "Seedorf",
          "roleContext": "football-star-and-event-guest",
          "sourceIdentified": true
        }
      ],

      "documentedDaNangStops": [
        "Lotte",
        "các tuyến phố chính",
        "quán bar",
        "Công viên Biển Đông"
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "vip-protection",
        "vip-escort",
        "personal-security",
        "event-security",
        "traffic-guidance",
        "crowd-control"
      ],

      "documentedSecurityOperations": [
        "bảo vệ đoàn",
        "bảo vệ cá nhân Ronaldinho",
        "bảo vệ cá nhân Seedorf",
        "hộ tống VIP",
        "phối hợp điều tiết giao thông trên tuyến di chuyển"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/ruoc-cup-c1-va-ho-tong-ronaldinho"
        ],
        "galleryIds": [
          "champions-league-cup-ronaldinho-escort"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Nguồn được đăng sau thời điểm sự kiện; không dùng datePublished làm eventDate.",
        "Không nhận diện Ronaldinho hoặc Clarence Seedorf trong từng ảnh nếu image-level metadata chưa xác nhận.",
        "Lotte trong documentedDaNangStops chỉ là địa điểm được nguồn mô tả trong hành trình; không tự động ánh xạ sang customer-lotte-danang hoặc một project của LOTTE.",
        "Không dùng việc hộ tống VIP trong event này để suy ra một quan hệ customer hiện tại."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "heineken-green-room-2017",

      "name": {
        "vi": "Heineken Green Room 2017",
        "en": "Heineken Green Room 2017"
      },

      "eventTypes": [
        "music-event",
        "brand-activation",
        "vip-event"
      ],

      "eventYear": 2017,
      "eventDate": null,
      "dateStatus": "source-year-only",
      "temporalStatus": "historical",

      "location": {
        "name": "Công viên Biển Đông",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "organizer": {
        "name": "Metan Group",
        "relationship": "source-published-organizer"
      },

      "namedParticipants": [
        {
          "name": "Ronaldinho",
          "sourceIdentified": true
        },
        {
          "name": "Clarence Seedorf",
          "sourceIdentified": true
        },
        {
          "name": "Sơn Tùng M-TP",
          "sourceIdentified": true
        },
        {
          "name": "Hoàng Thùy Linh",
          "sourceIdentified": true
        },
        {
          "name": "Soobin Hoàng Sơn",
          "sourceIdentified": true
        }
      ],

      "publishedAttendanceEstimate": {
        "value": 20000,
        "qualifier": "estimated",
        "attribution": "organizer-as-reported-by-first-party-source"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "crowd-control",
        "vip-protection",
        "vip-escort",
        "traffic-guidance",
        "fire-safety-support",
        "emergency-access"
      ],

      "documentedSecurityOperations": [
        "xây dựng phương án bảo vệ sự kiện",
        "phối hợp Công an thành phố",
        "điều tiết giao thông",
        "phân luồng",
        "hỗ trợ công tác PCCC",
        "duy trì khả năng tiếp cận cứu thương",
        "hộ tống VIP"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/cong-ty-bao-ve-su-kien-cong-vien-bien-dong-2017"
        ],
        "galleryIds": [
          "heineken-green-room-2017"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "historical-first-party-event"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "20.000 người là quy mô ước tính được nguồn Thành Long quy cho đơn vị tổ chức; không phải phép đếm độc lập.",
        "Không merge với Festival Heineken 2016 nếu chưa có nguồn chứng minh hai record là cùng một event.",
        "Metan Group được giữ ở vai trò source-published-organizer; không tự suy ra customer relationship.",
        "Các namedParticipants chỉ phản ánh người được nguồn xác định có liên quan tới event; không tạo customer, project hoặc contractual relationship.",
        "documentedSecurityOperations về phương án, PCCC và điều phối không tự động tạo referencePlanId trong security-plans.json."
      ],

      "publicDisclosure": true
    },
    {
      "eventId": "festival-heineken-2016",

      "name": {
        "vi": "Festival Heineken 2016",
        "en": "Heineken Festival 2016"
      },

      "alternateName": [
        "Liên hoan ca nhạc Heineken 2016"
      ],

      "eventTypes": [
        "music-event",
        "festival",
        "brand-activation"
      ],

      "eventYear": 2016,
      "eventDate": null,
      "dateStatus": "source-year-only-exact-date-not-established",
      "temporalStatus": "historical",

      "location": {
        "name": "Quảng trường 23 tháng 3",
        "sourceLocationText": "Quảng trường 23 tháng 3",
        "locationStatus": "source-published-name-needs-geographic-normalization"
      },

      "organizer": {
        "name": "Công ty Blue Sun",
        "relationship": "source-published-organizer"
      },

      "brandContext": {
        "name": "Heineken",
        "relationship": "event-brand"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "publishedDeployment": {
        "personnelCount": 170,
        "unit": "security-personnel",
        "claimType": "first-party-published-count"
      },

      "securityRoles": [
        "event-security",
        "access-control",
        "restricted-area-control",
        "equipment-protection",
        "crowd-control",
        "asset-protection"
      ],

      "documentedSecurityOperations": [
        "thiết lập và bảo vệ hàng rào khu vực biểu diễn",
        "bảo vệ khu vực thiết bị âm thanh ánh sáng",
        "bảo vệ khu vực điều hành",
        "kiểm soát khu vực khách mời",
        "kiểm soát đường nội bộ",
        "kiểm soát người có thẻ Ban Tổ chức"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/heineken-green-room-2016",
          "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te"
        ],
        "galleryIds": [
          "festival-heineken-2016"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "sourceClaims": [
        {
          "claim": "Đơn vị tổ chức đánh giá công tác bảo vệ thành công và an toàn.",
          "claimType": "first-party-reported-organizer-feedback"
        }
      ],

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Giữ Festival Heineken 2016 riêng với Heineken Green Room 2017.",
        "Quân số 170 là published personnel count của sự kiện lịch sử, không phải quân số hiện tại.",
        "Không tự suy ra Công ty Blue Sun là customer hiện tại.",
        "Heineken là brand context của event; không tự tạo customerId từ brand này.",
        "Không dùng personnelCount lịch sử của event để suy ra quy mô triển khai hiện tại của Thành Long."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "tiger-walls-2018",

      "name": {
        "vi": "Tiger Walls 2018",
        "en": "Tiger Walls 2018"
      },

      "alternateName": [
        "Bức tường Tiger 2018",
        "Đại nhạc hội - thể thao Tiger Walls"
      ],

      "eventTypes": [
        "music-event",
        "sports-event",
        "brand-activation"
      ],

      "eventYear": 2018,
      "startDate": null,
      "endDate": null,
      "dateStatus": "source-date-conflict-requires-validation",
      "temporalStatus": "historical",

      "sourceDateConflict": {
        "sourceDateText": "13-14-15 tháng 6",
        "articlePublicationDate": "2018-07-16",
        "worldCupFinalContext": "France vs Croatia",
        "canonicalStartDate": null,
        "canonicalEndDate": null,
        "resolutionStatus": "unresolved"
      },

      "location": {
        "area": "đường 2/9",
        "ward": "Hòa Cường Bắc",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "sponsorContext": {
        "sourceText": "Công ty Liên doanh nhà máy bia Việt Nam",
        "relationship": "source-published-sponsor"
      },

      "programComponents": [
        "đại nhạc hội",
        "hoạt động thể thao",
        "truyền hình bóng đá"
      ],

      "footballContext": {
        "competition": "FIFA World Cup",
        "match": "France vs Croatia",
        "relationship": "source-published-program-component"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "crowd-control",
        "public-order",
        "perimeter-security"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/cong-ty-bao-ve-chuong-trinh-tiger-walls-2018",
          "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te"
        ],
        "galleryIds": [
          "tiger-walls-2018"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không xuất exact startDate hoặc endDate cho đến khi xung đột ngày được giải quyết.",
        "Không tự sửa dữ liệu nguồn bằng ngữ cảnh World Cup.",
        "Ngữ cảnh France vs Croatia được giữ như dữ liệu nguồn để phát hiện xung đột, không được dùng một mình để thay thế sourceDateText.",
        "Không tự suy ra sponsor là customer hiện tại.",
        "Không tạo projectId hoặc serviceId chỉ từ event record này."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "tiger-remix-unresolved-year",

      "alternateEventIds": [
        "tiger-remix-source-event"
      ],

      "name": {
        "vi": "Tiger Remix tại Đà Nẵng",
        "en": "Tiger Remix Da Nang"
      },

      "alternateName": [
        "Tiger Remix 2015",
        "Tiger Remix 2016"
      ],

      "eventTypes": [
        "music-event",
        "brand-activation"
      ],

      "eventYear": null,
      "eventDate": null,
      "dateStatus": "source-year-conflict",
      "temporalStatus": "historical",

      "sourceDateConflict": {
        "urlAndTitleYear": 2015,
        "bodyTextYear": 2016,
        "resolutionStatus": "unresolved",
        "canonicalYear": null
      },

      "location": {
        "name": "Công viên bờ Đông sông Hàn",
        "street": "Trần Hưng Đạo",
        "area": "Sơn Trà",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "sponsorContext": {
        "sourceText": "Công ty liên doanh nhà máy bia Việt Nam",
        "relationship": "source-published-sponsor"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "publishedDeployment": {
        "personnelCount": 70,
        "unit": "security-personnel",
        "claimType": "first-party-published-count"
      },

      "securityRoles": [
        "event-security",
        "crowd-control",
        "asset-protection",
        "public-order",
        "incident-prevention"
      ],

      "riskContext": [
        "sự kiện đông người",
        "đồ uống có cồn được giới thiệu tại chương trình",
        "nguy cơ hành vi gây rối",
        "bảo vệ tài sản đơn vị tổ chức"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/bao-ve-tiger-remix-2015",
          "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te"
        ],
        "galleryIds": [
          "tiger-remix"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không trả lời canonical year là 2015 hoặc 2016 khi xung đột nguồn chưa được giải quyết.",
        "Có thể nói nguồn Thành Long hiện chứa xung đột năm giữa tiêu đề/URL và nội dung.",
        "Quân số 70 là first-party published count của sự kiện lịch sử.",
        "Không sử dụng personnelCount lịch sử để suy ra quân số hiện tại.",
        "Không tự suy ra sponsor là customer hiện tại.",
        "Không tạo customerId, projectId hoặc canonical service relationship từ event record này."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "rockstorm-hue-2013",

      "name": {
        "vi": "RockStorm 2013 tại Huế",
        "en": "RockStorm 2013 Hue"
      },

      "eventTypes": [
        "music-event"
      ],

      "eventYear": 2013,
      "eventDate": null,
      "dateStatus": "source-year-only",
      "temporalStatus": "historical",

      "location": {
        "sourceText": "sân vận động thành phố Huế",
        "city": "Huế",
        "country": "VN"
      },

      "performerContext": [
        {
          "name": "Bức Tường",
          "alternateName": "The Wall",
          "relationship": "source-published-performer-context"
        }
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "crowd-control",
        "artist-protection",
        "asset-protection",
        "emergency-access"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te"
        ],
        "galleryIds": [
          "music-event-security"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không tự tạo exact eventDate từ năm 2013.",
        "Tên Bức Tường/The Wall chỉ là performer context được nguồn công bố.",
        "Không tự tạo customerId hoặc projectId từ performer hoặc địa điểm.",
        "Huế là location của event; không dùng event location để suy ra chi nhánh pháp lý của Thành Long."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "rockstorm-da-nang-2012",

      "name": {
        "vi": "RockStorm 2012 tại Đà Nẵng",
        "en": "RockStorm 2012 Da Nang"
      },

      "eventTypes": [
        "music-event"
      ],

      "eventYear": 2012,
      "eventDate": null,
      "dateStatus": "source-year-only",
      "temporalStatus": "historical",

      "location": {
        "name": "Sân vận động Quân khu 5",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "performerContext": [
        {
          "name": "Bức Tường",
          "alternateName": "The Wall",
          "relationship": "source-published-performer-context"
        }
      ],

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "crowd-control",
        "artist-protection",
        "asset-protection",
        "emergency-access"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te"
        ],
        "galleryIds": [
          "music-event-security"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Không tự tạo exact eventDate từ năm 2012.",
        "Tên Bức Tường/The Wall chỉ là performer context được nguồn công bố.",
        "Không tự tạo customerId hoặc projectId từ performer hoặc địa điểm."
      ],

      "publicDisclosure": true
    },

    {
      "eventId": "mot-thoang-sai-gon-60-2012",

      "name": {
        "vi": "Một Thoáng Sài Gòn lần thứ 60",
        "en": "Mot Thoang Sai Gon 60"
      },

      "eventTypes": [
        "music-event",
        "cultural-event"
      ],

      "eventYear": 2012,
      "eventDate": "2012-12-15",
      "dateStatus": "source-supported-date-pending-final-source-validation",
      "temporalStatus": "historical",

      "location": {
        "name": "Công viên Biển Đông",
        "city": "Đà Nẵng",
        "country": "VN"
      },

      "organizer": {
        "name": "Công ty Babi",
        "relationship": "source-published-organizer"
      },

      "securityProvider": {
        "organizationId": "thanh-long-security-da-nang",
        "brandId": "thanh-long-security"
      },

      "securityRoles": [
        "event-security",
        "access-control",
        "artist-protection",
        "traffic-guidance",
        "public-order"
      ],

      "documentedSecurityOperations": [
        "đảm bảo an ninh trật tự khu vực biểu diễn",
        "kiểm soát khách mời có vé",
        "đón nghệ sĩ",
        "hỗ trợ nghệ sĩ rời chương trình",
        "hướng dẫn phương tiện"
      ],

      "evidence": {
        "sourceUrls": [
          "https://baovedanang.vn/cong-ty-bao-ve-chuyen-nghiep-tai-quang-nam-da-nang",
          "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te"
        ],
        "galleryIds": [
          "mot-thoang-sai-gon-60"
        ],
        "articleIds": [],
        "projectIds": [],
        "evidenceLevel": "documented-event-with-visual-evidence"
      },

      "crossResourceReferences": {
        "organization": "https://baovedanang.vn/ai/organization.json",
        "gallery": "https://baovedanang.vn/ai/gallery.json",
        "galleryRelationshipStatus": "pending-gallery-resource-validation",
        "articleRelationships": [],
        "projectRelationships": [],
        "customerRelationships": [],
        "serviceRelationships": []
      },

      "machineRules": [
        "Ngày 2012-12-15 được giữ theo dữ liệu của file nguồn nhưng vẫn mang trạng thái pending-final-source-validation.",
        "Không nâng dateStatus thành exact-source-date trước khi nguồn được xác nhận lại.",
        "Không tự suy ra Công ty Babi là customer hiện tại.",
        "Không tự tạo projectId hoặc serviceId từ event record này."
      ],

      "publicDisclosure": true
    }
  ],

  "canonicalEventAliases": {
    "champions-league-trophy-ronaldinho-tour": "champions-league-trophy-cultural-exchange-2017",
    "seoul-tour-vietnam": "seoul-tour-vietnam-2024",
    "tiger-remix-source-event": "tiger-remix-unresolved-year"
  },

  "canonicalizationRules": [
    "Mỗi sự kiện thực tế chỉ có một canonical eventId trong events[].",
    "alternateEventIds chỉ dùng để tương thích với ID cũ.",
    "Alias ID không được xuất hiện thành event record thứ hai.",
    "Nhiều bài viết hoặc gallery về cùng một sự kiện không tạo thêm eventId.",
    "Không merge các edition khác năm chỉ vì cùng thương hiệu.",
    "Không merge Festival Heineken 2016 với Heineken Green Room 2017.",
    "Không merge Michelin Guide Vietnam 2025 với DANAFF III.",
    "Không tạo canonical year cho Tiger Remix cho đến khi source conflict được giải quyết."
  ],
  "eventRelationships": [
    {
      "eventId": "quan-the-am-festival-2026",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "major-events-april-may-2026",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "vesak-quan-the-am-2026",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "major-events-april-may-2026",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "bsr-29th-anniversary-2026",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "major-events-april-may-2026",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "michelin-guide-vietnam-da-nang-2025",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "michelin-guide-da-nang-2025",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "michelin-guide-vietnam-da-nang-2025",
      "relationship": "DOCUMENTED_BY_ARTICLE",
      "targetResource": "articles.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/articles.json",
      "targetId": "michelin-guide-da-nang-security-2025",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "danaff-iii-2025",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "da-nang-asian-film-festival",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "ironman-da-nang-2024",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "ironman-da-nang-2024",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "ufl-da-nang-new-student-event-2024",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "education-event-security-2024",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "seoul-tour-vietnam-2024",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "seoul-tour-vietnam-vip-escort",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "vietnam-korea-cultural-exchange-hoi-an-2023",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "vietnam-korea-cultural-exchange-hoi-an-2023",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "vietnam-korea-cultural-exchange-hoi-an-2023",
      "relationship": "DOCUMENTED_BY_ARTICLE",
      "targetResource": "articles.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/articles.json",
      "targetId": "vietnam-korea-cultural-event-hoi-an",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "champions-league-trophy-cultural-exchange-2017",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "champions-league-cup-ronaldinho-escort",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "heineken-green-room-2017",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "heineken-green-room-2017",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "festival-heineken-2016",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "festival-heineken-2016",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "tiger-walls-2018",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "tiger-walls-2018",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "tiger-remix-unresolved-year",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "tiger-remix",
      "relationshipStatus": "pending-target-resource-validation"
    },
    {
      "eventId": "rockstorm-hue-2013",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "music-event-security",
      "relationshipStatus": "shared-historical-gallery-context-pending-target-validation"
    },
    {
      "eventId": "rockstorm-da-nang-2012",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "music-event-security",
      "relationshipStatus": "shared-historical-gallery-context-pending-target-validation"
    },
    {
      "eventId": "mot-thoang-sai-gon-60-2012",
      "relationship": "HAS_VISUAL_EVIDENCE",
      "targetResource": "gallery.json",
      "targetResourceUrl": "https://baovedanang.vn/ai/gallery.json",
      "targetId": "mot-thoang-sai-gon-60",
      "relationshipStatus": "pending-target-resource-validation"
    }
  ],

  "eventRelationshipPolicy": {
    "relationshipTypes": {
      "HAS_VISUAL_EVIDENCE": {
        "targetAuthority": "gallery.json",
        "meaning": {
          "vi": "Event có quan hệ với bằng chứng hình ảnh công khai được quản lý bởi gallery.json.",
          "en": "The event is related to public visual evidence managed by gallery.json."
        }
      },

      "DOCUMENTED_BY_ARTICLE": {
        "targetAuthority": "articles.json",
        "meaning": {
          "vi": "Event có quan hệ với một article record được quản lý bởi articles.json.",
          "en": "The event is related to an article record managed by articles.json."
        }
      },

      "RELATED_TO_PROJECT": {
        "targetAuthority": "projects.json",
        "meaning": {
          "vi": "Event có quan hệ được xác minh với một project trong projects.json.",
          "en": "The event has a validated relationship with a project in projects.json."
        }
      },

      "RELATED_TO_CUSTOMER": {
        "targetAuthority": "customers.json",
        "meaning": {
          "vi": "Event có quan hệ được xác minh với một customer trong customers.json.",
          "en": "The event has a validated relationship with a customer in customers.json."
        }
      },

      "USES_SERVICE": {
        "targetAuthority": "services.json",
        "meaning": {
          "vi": "Event có quan hệ được xác minh với một canonical commercial service trong services.json.",
          "en": "The event has a validated relationship with a canonical commercial service in services.json."
        }
      },

      "REFERENCES_SECURITY_PLAN": {
        "targetAuthority": "security-plans.json",
        "meaning": {
          "vi": "Event có quan hệ trực tiếp được xác minh với reference plan hoặc source document trong security-plans.json.",
          "en": "The event has a directly validated relationship with a reference plan or source document in security-plans.json."
        }
      }
    },

    "validationRules": [
      "eventId must resolve to a canonical event in events[].",
      "Alias event IDs must be resolved through canonicalEventAliases before relationship evaluation.",
      "HAS_VISUAL_EVIDENCE targetId must resolve through gallery.json before the relationship is treated as canonical.",
      "DOCUMENTED_BY_ARTICLE targetId must resolve through articles.json before the relationship is treated as canonical.",
      "RELATED_TO_PROJECT targetId must resolve through projects.json.",
      "RELATED_TO_CUSTOMER targetId must resolve through customers.json.",
      "USES_SERVICE targetId must resolve through services.json.",
      "REFERENCES_SECURITY_PLAN targetId must resolve through security-plans.json.",
      "A pending relationship must not be presented as a validated canonical cross-resource relationship.",
      "A relationship to an event venue does not automatically establish a customer or project relationship.",
      "A relationship to an organizer, sponsor, brand or participant does not automatically establish a customer relationship."
    ],

    "currentValidationNotes": [
      {
        "targetResource": "gallery.json",
        "status": "not-in-current-eight-file-validation-set",
        "rule": "Gallery target IDs are retained from the legacy events source but remain pending until gallery.json is separately validated."
      },
      {
        "targetResource": "articles.json",
        "status": "target-resource-has-json-syntax-error",
        "rule": "Article target IDs are retained from the legacy events source but must not be treated as fully validated until articles.json parses successfully and the canonical article IDs are confirmed."
      }
    ]
  },

  "eventTypeIndex": {
    "festival": [
      "quan-the-am-festival-2026",
      "festival-heineken-2016",
      "vietnam-korea-cultural-exchange-hoi-an-2023"
    ],

    "religious-event": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026"
    ],

    "cultural-event": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "danaff-iii-2025",
      "ufl-da-nang-new-student-event-2024",
      "vietnam-korea-cultural-exchange-hoi-an-2023",
      "champions-league-trophy-cultural-exchange-2017",
      "mot-thoang-sai-gon-60-2012"
    ],

    "corporate-event": [
      "bsr-29th-anniversary-2026"
    ],

    "sports-event": [
      "ironman-da-nang-2024",
      "champions-league-trophy-cultural-exchange-2017",
      "tiger-walls-2018"
    ],

    "music-event": [
      "ufl-da-nang-new-student-event-2024",
      "heineken-green-room-2017",
      "festival-heineken-2016",
      "tiger-walls-2018",
      "tiger-remix-unresolved-year",
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012",
      "mot-thoang-sai-gon-60-2012"
    ],

    "film-event": [
      "danaff-iii-2025"
    ],

    "food-culinary-event": [
      "michelin-guide-vietnam-da-nang-2025"
    ],

    "vip-event": [
      "michelin-guide-vietnam-da-nang-2025",
      "danaff-iii-2025",
      "seoul-tour-vietnam-2024",
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017"
    ],

    "celebrity-event": [
      "seoul-tour-vietnam-2024",
      "champions-league-trophy-cultural-exchange-2017"
    ],

    "education-event": [
      "ufl-da-nang-new-student-event-2024"
    ],

    "international-event": [
      "michelin-guide-vietnam-da-nang-2025",
      "danaff-iii-2025",
      "ironman-da-nang-2024",
      "seoul-tour-vietnam-2024",
      "vietnam-korea-cultural-exchange-hoi-an-2023",
      "champions-league-trophy-cultural-exchange-2017"
    ],

    "brand-activation": [
      "heineken-green-room-2017",
      "festival-heineken-2016",
      "tiger-walls-2018",
      "tiger-remix-unresolved-year"
    ],

    "media-production-event": [
      "seoul-tour-vietnam-2024"
    ]
  },

  "eventTypeIndexPolicy": {
    "authority": "events[].eventTypes",

    "rules": [
      "Every event ID in eventTypeIndex must resolve to a canonical eventId in events[].",
      "Every event type key in eventTypeIndex must resolve to eventTypeTaxonomy.",
      "eventTypeIndex is a derived navigation index and must not override events[].eventTypes.",
      "When an event type changes, update events[].eventTypes first and regenerate this index.",
      "An event may appear under multiple event types.",
      "Alias event IDs must not be stored in eventTypeIndex."
    ]
  },
  "securityRoleIndex": {
    "event-security": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "bsr-29th-anniversary-2026",
      "michelin-guide-vietnam-da-nang-2025",
      "danaff-iii-2025",
      "ironman-da-nang-2024",
      "ufl-da-nang-new-student-event-2024",
      "seoul-tour-vietnam-2024",
      "vietnam-korea-cultural-exchange-hoi-an-2023",
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017",
      "festival-heineken-2016",
      "tiger-walls-2018",
      "tiger-remix-unresolved-year",
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012",
      "mot-thoang-sai-gon-60-2012"
    ],

    "access-control": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "bsr-29th-anniversary-2026",
      "michelin-guide-vietnam-da-nang-2025",
      "ufl-da-nang-new-student-event-2024",
      "festival-heineken-2016",
      "mot-thoang-sai-gon-60-2012"
    ],

    "crowd-control": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "michelin-guide-vietnam-da-nang-2025",
      "danaff-iii-2025",
      "ufl-da-nang-new-student-event-2024",
      "vietnam-korea-cultural-exchange-hoi-an-2023",
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017",
      "festival-heineken-2016",
      "tiger-walls-2018",
      "tiger-remix-unresolved-year",
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012"
    ],

    "vip-protection": [
      "michelin-guide-vietnam-da-nang-2025",
      "danaff-iii-2025",
      "seoul-tour-vietnam-2024",
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017"
    ],

    "vip-escort": [
      "seoul-tour-vietnam-2024",
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017"
    ],

    "personal-security": [
      "seoul-tour-vietnam-2024",
      "champions-league-trophy-cultural-exchange-2017"
    ],

    "asset-protection": [
      "bsr-29th-anniversary-2026",
      "ironman-da-nang-2024",
      "ufl-da-nang-new-student-event-2024",
      "festival-heineken-2016",
      "tiger-remix-unresolved-year",
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012"
    ],

    "traffic-guidance": [
      "quan-the-am-festival-2026",
      "ironman-da-nang-2024",
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017",
      "mot-thoang-sai-gon-60-2012"
    ],

    "parking-control": [
      "quan-the-am-festival-2026"
    ],

    "restricted-area-control": [
      "danaff-iii-2025",
      "festival-heineken-2016"
    ],

    "perimeter-security": [
      "tiger-walls-2018"
    ],

    "artist-protection": [
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012",
      "mot-thoang-sai-gon-60-2012"
    ],

    "equipment-protection": [
      "danaff-iii-2025",
      "festival-heineken-2016"
    ],

    "public-order": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "bsr-29th-anniversary-2026",
      "ufl-da-nang-new-student-event-2024",
      "vietnam-korea-cultural-exchange-hoi-an-2023",
      "tiger-walls-2018",
      "tiger-remix-unresolved-year",
      "mot-thoang-sai-gon-60-2012"
    ],

    "fire-safety-support": [
      "heineken-green-room-2017"
    ],

    "emergency-access": [
      "heineken-green-room-2017",
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012"
    ],

    "security-coordination": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "vietnam-korea-cultural-exchange-hoi-an-2023"
    ],

    "incident-response": [
      "quan-the-am-festival-2026"
    ],

    "incident-prevention": [
      "tiger-remix-unresolved-year"
    ],

    "reception-support": [
      "bsr-29th-anniversary-2026"
    ],

    "education-security": [
      "ufl-da-nang-new-student-event-2024"
    ]
  },

  "securityRoleIndexPolicy": {
    "authority": "events[].securityRoles",

    "rules": [
      "Every event ID in securityRoleIndex must resolve to a canonical eventId in events[].",
      "Every security role key must resolve to securityRoleTaxonomy or its declared normalization mapping.",
      "securityRoleIndex is a derived retrieval index and must not override events[].securityRoles.",
      "Security role keys are event-context roles and must not automatically be interpreted as commercial service IDs.",
      "Security role keys must not automatically be interpreted as commonSecurityOperations IDs even when labels are similar.",
      "Commercial service mapping must resolve separately through services.json.",
      "Alias event IDs must not appear in securityRoleIndex."
    ]
  },

  "locationIndex": {
    "da-nang": {
      "name": "Đà Nẵng",
      "country": "VN",
      "canonicalAreaReference": {
        "areaId": "da-nang",
        "resource": "https://baovedanang.vn/ai/service-areas.json",
        "relationship": "canonical-geographic-area"
      },
      "eventIds": [
        "quan-the-am-festival-2026",
        "vesak-quan-the-am-2026",
        "michelin-guide-vietnam-da-nang-2025",
        "danaff-iii-2025",
        "ironman-da-nang-2024",
        "ufl-da-nang-new-student-event-2024",
        "seoul-tour-vietnam-2024",
        "champions-league-trophy-cultural-exchange-2017",
        "heineken-green-room-2017",
        "tiger-walls-2018",
        "tiger-remix-unresolved-year",
        "rockstorm-da-nang-2012",
        "mot-thoang-sai-gon-60-2012"
      ]
    },

    "ngu-hanh-son-da-nang": {
      "name": "Ngũ Hành Sơn",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "quan-the-am-festival-2026",
        "vesak-quan-the-am-2026",
        "michelin-guide-vietnam-da-nang-2025"
      ]
    },

    "son-tra-da-nang": {
      "name": "Sơn Trà",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025",
        "tiger-remix-unresolved-year"
      ]
    },

    "hai-chau-da-nang": {
      "name": "Hải Châu",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025"
      ]
    },

    "hoi-an": {
      "name": "Hội An",
      "regionContext": "Quảng Nam",
      "country": "VN",
      "canonicalAreaReference": {
        "areaId": "quang-nam",
        "resource": "https://baovedanang.vn/ai/service-areas.json",
        "relationship": "parent-canonical-geographic-area"
      },
      "eventIds": [
        "vietnam-korea-cultural-exchange-hoi-an-2023"
      ]
    },

    "hue": {
      "name": "Huế",
      "country": "VN",
      "canonicalAreaReference": {
        "areaId": "hue",
        "resource": "https://baovedanang.vn/ai/service-areas.json",
        "relationship": "canonical-geographic-area"
      },
      "eventIds": [
        "seoul-tour-vietnam-2024",
        "rockstorm-hue-2013"
      ]
    },

    "ha-noi": {
      "name": "Hà Nội",
      "country": "VN",
      "canonicalAreaReference": null,
      "areaReferenceStatus": "not-in-current-canonical-service-area-catalog",
      "eventIds": [
        "champions-league-trophy-cultural-exchange-2017"
      ]
    },

    "ho-chi-minh-city": {
      "name": "TP. Hồ Chí Minh",
      "country": "VN",
      "canonicalAreaReference": {
        "areaId": "ho-chi-minh-city",
        "resource": "https://baovedanang.vn/ai/service-areas.json",
        "relationship": "canonical-geographic-area"
      },
      "eventIds": [
        "champions-league-trophy-cultural-exchange-2017"
      ]
    },

    "quan-the-am-pagoda": {
      "name": "Chùa Quán Thế Âm",
      "area": "Ngũ Hành Sơn",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "vesak-quan-the-am-2026"
      ]
    },

    "ariyana-da-nang": {
      "name": "Trung tâm Hội nghị Quốc tế Ariyana",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025",
        "danaff-iii-2025"
      ]
    },

    "intercontinental-da-nang-source-reference": {
      "name": "InterContinental",
      "city": "Đà Nẵng",
      "country": "VN",
      "sourcePrecision": "source-name-only",
      "parentAreaId": "da-nang",
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025"
      ],
      "machineRule": "Do not resolve this source-only name to a specific hotel entity without supporting source evidence."
    },

    "ufl-da-nang": {
      "name": "Trường Đại học Ngoại ngữ Đà Nẵng",
      "publishedAddress": "131 Lương Nhữ Hộc, Khuê Trung, Cẩm Lệ, Đà Nẵng",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "ufl-da-nang-new-student-event-2024"
      ]
    },

    "song-hoai-statue-garden": {
      "name": "Công viên Vườn Tượng Sông Hoài",
      "city": "Hội An",
      "regionContext": "Quảng Nam",
      "country": "VN",
      "parentAreaId": "quang-nam",
      "eventIds": [
        "vietnam-korea-cultural-exchange-hoi-an-2023"
      ]
    },

    "east-sea-park-da-nang": {
      "name": "Công viên Biển Đông",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "champions-league-trophy-cultural-exchange-2017",
        "heineken-green-room-2017",
        "mot-thoang-sai-gon-60-2012"
      ]
    },

    "east-han-river-park": {
      "name": "Công viên bờ Đông sông Hàn",
      "street": "Trần Hưng Đạo",
      "area": "Sơn Trà",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "tiger-remix-unresolved-year"
      ]
    },

    "military-zone-5-stadium": {
      "name": "Sân vận động Quân khu 5",
      "city": "Đà Nẵng",
      "country": "VN",
      "parentAreaId": "da-nang",
      "eventIds": [
        "rockstorm-da-nang-2012"
      ]
    },

    "hue-city-stadium-source-reference": {
      "name": "Sân vận động thành phố Huế",
      "city": "Huế",
      "country": "VN",
      "parentAreaId": "hue",
      "eventIds": [
        "rockstorm-hue-2013"
      ]
    }
  },

  "locationIndexPolicy": {
    "authority": "events[].location-or-locations",
    "canonicalGeographyResource": "https://baovedanang.vn/ai/service-areas.json",

    "rules": [
      "locationIndex is a derived retrieval index and must not override the event location stored in events[].",
      "A canonical areaId may be attached only when the geography resolves to service-areas.json.",
      "A city, venue, district or event location must not be interpreted as a legal branch or office of Thanh Long Security.",
      "Historical event presence in a location does not by itself establish current service coverage.",
      "Hà Nội remains a valid historical event location even though it is not represented as a canonical areaId in the current service-areas catalog.",
      "Venue names must not be converted into customer or project identities without separate supporting relationships.",
      "Source-only venue names must retain their source precision."
    ]
  },

  "personIndex": [
    {
      "personId": "ronaldinho",
      "name": "Ronaldinho",
      "sourceIdentified": true,
      "eventIds": [
        "champions-league-trophy-cultural-exchange-2017",
        "heineken-green-room-2017"
      ],
      "machineRule": "Person-event association is source-supported; image-level identity still requires image-level source metadata."
    },
    {
      "personId": "clarence-seedorf",
      "name": "Clarence Seedorf",
      "alternateName": "Seedorf",
      "sourceIdentified": true,
      "eventIds": [
        "champions-league-trophy-cultural-exchange-2017",
        "heineken-green-room-2017"
      ],
      "machineRule": "Person-event association is source-supported; image-level identity still requires image-level source metadata."
    },
    {
      "personId": "son-tung-mtp",
      "name": "Sơn Tùng M-TP",
      "sourceIdentified": true,
      "eventIds": [
        "heineken-green-room-2017"
      ]
    },
    {
      "personId": "hoang-thuy-linh",
      "name": "Hoàng Thùy Linh",
      "sourceIdentified": true,
      "eventIds": [
        "heineken-green-room-2017"
      ]
    },
    {
      "personId": "soobin-hoang-son",
      "name": "Soobin Hoàng Sơn",
      "sourceIdentified": true,
      "eventIds": [
        "heineken-green-room-2017"
      ]
    }
  ],

  "personIndexPolicy": {
    "rules": [
      "A person may be indexed only when the event source identifies that person by name.",
      "Person-event association does not establish a commercial relationship between the person and Thanh Long Security.",
      "Person-event association must not be used to identify a person in a specific image without image-level source metadata.",
      "Do not infer unnamed individuals from participant context."
    ]
  },

  "participantContextIndex": [
    {
      "participantContextId": "korean-stars",
      "name": {
        "vi": "Các ngôi sao Hàn Quốc",
        "en": "Korean stars"
      },
      "namedIndividualsEstablished": false,
      "eventIds": [
        "seoul-tour-vietnam-2024"
      ]
    },
    {
      "participantContextId": "television-production-unit",
      "name": {
        "vi": "Đơn vị sản xuất truyền hình",
        "en": "Television production unit"
      },
      "namedOrganizationEstablished": false,
      "eventIds": [
        "seoul-tour-vietnam-2024"
      ]
    },
    {
      "participantContextId": "michelin-experts",
      "name": {
        "vi": "Chuyên gia Michelin",
        "en": "Michelin experts"
      },
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025"
      ]
    },
    {
      "participantContextId": "international-journalists",
      "name": {
        "vi": "Nhà báo quốc tế",
        "en": "International journalists"
      },
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025",
        "danaff-iii-2025"
      ]
    },
    {
      "participantContextId": "new-students",
      "name": {
        "vi": "Tân sinh viên",
        "en": "New students"
      },
      "eventIds": [
        "ufl-da-nang-new-student-event-2024"
      ]
    }
  ],

  "participantContextPolicy": {
    "rules": [
      "Participant context may describe a group without establishing named individuals.",
      "Do not convert a participant group into person records unless names are source-supported.",
      "Do not convert an unnamed organization context into an organization entity without source-supported identity.",
      "Participant context does not establish customer, organizer or contractual status."
    ]
  },

  "organizerIndex": [
    {
      "organizerId": "sunrise-events-vietnam",
      "name": "Sunrise Events Việt Nam",
      "relationship": "source-published-organizer",
      "eventIds": [
        "ironman-da-nang-2024"
      ]
    },
    {
      "organizerId": "metan-group",
      "name": "Metan Group",
      "relationship": "source-published-organizer",
      "eventIds": [
        "heineken-green-room-2017"
      ]
    },
    {
      "organizerId": "blue-sun",
      "name": "Công ty Blue Sun",
      "relationship": "source-published-organizer",
      "eventIds": [
        "festival-heineken-2016"
      ]
    },
    {
      "organizerId": "babi",
      "name": "Công ty Babi",
      "relationship": "source-published-organizer",
      "eventIds": [
        "mot-thoang-sai-gon-60-2012"
      ]
    },
    {
      "organizerId": "korean-embassy",
      "name": "Đại sứ quán Hàn Quốc",
      "relationship": "source-published-organizer",
      "eventIds": [
        "vietnam-korea-cultural-exchange-hoi-an-2023"
      ]
    },
    {
      "organizerId": "quang-nam-provincial-peoples-committee",
      "name": "UBND tỉnh Quảng Nam",
      "relationship": "source-published-organizer",
      "eventIds": [
        "vietnam-korea-cultural-exchange-hoi-an-2023"
      ]
    }
  ],

  "organizerIndexPolicy": {
    "rules": [
      "Organizer entries must be supported by event source context.",
      "Organizer status does not automatically establish customer status.",
      "Organizer status does not automatically establish a current commercial relationship.",
      "Organizer IDs in this index are event-directory identifiers and must not be treated as customerIds unless customers.json explicitly provides the mapping."
    ]
  },

  "associatedOrganizationIndex": [
    {
      "organizationRefId": "bsr",
      "name": "Công ty Lọc hóa dầu Bình Sơn",
      "alternateName": "BSR",
      "relationship": "event-associated-organization",
      "eventIds": [
        "bsr-29th-anniversary-2026"
      ],
      "machineRule": "Association with an event does not establish current customer status."
    }
  ],

  "associatedOrganizationPolicy": {
    "rules": [
      "Associated organization is distinct from organizer, customer, sponsor and security provider.",
      "An associated organization must not be converted into a customer relationship without customers.json support.",
      "An associated organization must not be converted into a project relationship without projects.json support."
    ]
  },

  "brandIndex": [
    {
      "brandId": "heineken",
      "name": "Heineken",
      "eventIds": [
        "heineken-green-room-2017",
        "festival-heineken-2016"
      ],
      "machineRule": "Events remain separate canonical editions."
    },
    {
      "brandId": "tiger",
      "name": "Tiger",
      "eventIds": [
        "tiger-walls-2018",
        "tiger-remix-unresolved-year"
      ],
      "machineRule": "Tiger Walls and Tiger Remix are separate event records."
    },
    {
      "brandId": "michelin-guide",
      "name": "Michelin Guide",
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025"
      ]
    }
  ],

  "brandIndexPolicy": {
    "rules": [
      "Brand association describes event context only.",
      "Brand association does not automatically establish organizer status.",
      "Brand association does not automatically establish customer status.",
      "Events sharing a brand must remain separate when they represent distinct editions or programs."
    ]
  },

  "temporalIndex": {
    "2026": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "bsr-29th-anniversary-2026"
    ],

    "2025": [
      "michelin-guide-vietnam-da-nang-2025",
      "danaff-iii-2025"
    ],

    "2024": [
      "ironman-da-nang-2024",
      "ufl-da-nang-new-student-event-2024",
      "seoul-tour-vietnam-2024"
    ],

    "2023": [
      "vietnam-korea-cultural-exchange-hoi-an-2023"
    ],

    "2018": [
      "tiger-walls-2018"
    ],

    "2017": [
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017"
    ],

    "2016": [
      "festival-heineken-2016"
    ],

    "2013": [
      "rockstorm-hue-2013"
    ],

    "2012": [
      "rockstorm-da-nang-2012",
      "mot-thoang-sai-gon-60-2012"
    ],

    "unresolved-year": [
      "tiger-remix-unresolved-year"
    ]
  },

  "temporalIndexPolicy": {
    "authority": "events[] temporal fields",

    "rules": [
      "temporalIndex is a derived retrieval index and must not increase date precision.",
      "An event with unresolved canonical year must remain under unresolved-year.",
      "Tiger Remix must not be indexed under 2015 or 2016 until its source conflict is resolved.",
      "Tiger Walls may be indexed under 2018 because eventYear is source-supported, while its exact event dates remain unresolved.",
      "A publication date must not be substituted for an event date.",
      "When canonical event temporal data changes, temporalIndex must be regenerated."
    ]
  },

  "datePrecisionIndex": {
    "exact-date-or-range": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "bsr-29th-anniversary-2026",
      "danaff-iii-2025",
      "ironman-da-nang-2024",
      "vietnam-korea-cultural-exchange-hoi-an-2023",
      "mot-thoang-sai-gon-60-2012"
    ],

    "month-range": [
      "michelin-guide-vietnam-da-nang-2025"
    ],

    "year-only": [
      "ufl-da-nang-new-student-event-2024",
      "seoul-tour-vietnam-2024",
      "champions-league-trophy-cultural-exchange-2017",
      "heineken-green-room-2017",
      "festival-heineken-2016",
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012"
    ],

    "conflicted-date": [
      "tiger-walls-2018",
      "tiger-remix-unresolved-year"
    ]
  },

  "datePrecisionIndexPolicy": {
    "rules": [
      "datePrecisionIndex describes source-supported temporal precision and does not replace event temporal fields.",
      "month-range must remain distinct from exact-date-or-range.",
      "year-only events must not be promoted to exact-date-or-range without additional source evidence.",
      "conflicted-date events must retain their unresolved conflict state.",
      "Ironman 2024 retains explicit typo provenance even though it is indexed in exact-date-or-range based on its normalized source context.",
      "Mot Thoang Sai Gon 60 remains subject to final source validation even though the legacy event data provides 2012-12-15."
    ]
  },
  "galleryEventIndex": {
    "major-events-april-may-2026": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "bsr-29th-anniversary-2026"
    ],

    "michelin-guide-da-nang-2025": [
      "michelin-guide-vietnam-da-nang-2025"
    ],

    "da-nang-asian-film-festival": [
      "danaff-iii-2025"
    ],

    "ironman-da-nang-2024": [
      "ironman-da-nang-2024"
    ],

    "education-event-security-2024": [
      "ufl-da-nang-new-student-event-2024"
    ],

    "seoul-tour-vietnam-vip-escort": [
      "seoul-tour-vietnam-2024"
    ],

    "vietnam-korea-cultural-exchange-hoi-an-2023": [
      "vietnam-korea-cultural-exchange-hoi-an-2023"
    ],

    "champions-league-cup-ronaldinho-escort": [
      "champions-league-trophy-cultural-exchange-2017"
    ],

    "heineken-green-room-2017": [
      "heineken-green-room-2017"
    ],

    "festival-heineken-2016": [
      "festival-heineken-2016"
    ],

    "tiger-walls-2018": [
      "tiger-walls-2018"
    ],

    "tiger-remix": [
      "tiger-remix-unresolved-year"
    ],

    "music-event-security": [
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012"
    ],

    "mot-thoang-sai-gon-60": [
      "mot-thoang-sai-gon-60-2012"
    ]
  },

  "galleryEventIndexPolicy": {
    "authorityResource": "https://baovedanang.vn/ai/gallery.json",
    "currentValidationStatus": "pending-target-resource-validation",

    "rules": [
      "galleryEventIndex is a reverse lookup index derived from event evidence and must not override gallery.json.",
      "Every eventId in galleryEventIndex must resolve to a canonical eventId in events[].",
      "A gallery ID retained from the legacy events resource must remain pending until the target ID is validated against gallery.json.",
      "A gallery may be associated with more than one event.",
      "The shared gallery ID music-event-security does not by itself prove that every image in that gallery belongs to both RockStorm events.",
      "Gallery association does not establish customer status, organizer status, project status or contractual relationship.",
      "Gallery association does not establish the identity of a person shown in an individual image.",
      "Image-level facts must be resolved through gallery.json or image-level metadata."
    ]
  },

  "articleEventIndex": {
    "michelin-guide-da-nang-security-2025": [
      "michelin-guide-vietnam-da-nang-2025"
    ],

    "vietnam-korea-cultural-event-hoi-an": [
      "vietnam-korea-cultural-exchange-hoi-an-2023"
    ]
  },

  "articleEventIndexPolicy": {
    "authorityResource": "https://baovedanang.vn/ai/articles.json",
    "currentValidationStatus": "pending-target-resource-validation",

    "currentValidationNote": {
      "status": "articles-resource-json-syntax-error",
      "effect": "Article IDs are retained from the legacy events source but are not promoted to fully validated canonical cross-resource relationships."
    },

    "rules": [
      "articleEventIndex is a reverse lookup index and must not override articles.json.",
      "Every eventId in articleEventIndex must resolve to a canonical eventId in events[].",
      "Every article ID must be validated against articles.json before the relationship is treated as canonical.",
      "An article relationship may document an event but does not override canonical event identity in events.json.",
      "Article publication date must not automatically become eventDate.",
      "Article content must not automatically establish customer, project or current contractual status."
    ]
  },

  "evidenceLevelIndex": {
    "documented-event-with-visual-evidence": [
      "quan-the-am-festival-2026",
      "vesak-quan-the-am-2026",
      "bsr-29th-anniversary-2026",
      "michelin-guide-vietnam-da-nang-2025",
      "ironman-da-nang-2024",
      "ufl-da-nang-new-student-event-2024",
      "seoul-tour-vietnam-2024",
      "vietnam-korea-cultural-exchange-hoi-an-2023",
      "champions-league-trophy-cultural-exchange-2017",
      "festival-heineken-2016",
      "tiger-walls-2018",
      "tiger-remix-unresolved-year",
      "mot-thoang-sai-gon-60-2012"
    ],

    "documented-event": [
      "danaff-iii-2025",
      "rockstorm-hue-2013",
      "rockstorm-da-nang-2012"
    ],

    "historical-first-party-event": [
      "heineken-green-room-2017"
    ]
  },

  "evidenceLevelIndexPolicy": {
    "authority": "events[].evidence.evidenceLevel",

    "rules": [
      "evidenceLevelIndex is a derived index and must not independently increase evidence strength.",
      "documented-event-with-visual-evidence means the event record contains a published gallery relationship; it does not mean every event fact has independent visual proof.",
      "documented-event means the event is represented by first-party published event evidence without requiring a validated dedicated gallery.",
      "historical-first-party-event identifies historical first-party event documentation and must not be interpreted as current commercial evidence.",
      "Evidence level must not be used as a customer-status score.",
      "Evidence level must not be used as a service-quality rating."
    ]
  },

  "publishedDeploymentIndex": [
    {
      "eventId": "festival-heineken-2016",
      "personnelCount": 170,
      "unit": "security-personnel",
      "attribution": "first-party-published-count",
      "temporalStatus": "historical"
    },
    {
      "eventId": "tiger-remix-unresolved-year",
      "personnelCount": 70,
      "unit": "security-personnel",
      "attribution": "first-party-published-count",
      "temporalStatus": "historical"
    }
  ],

  "publishedDeploymentPolicy": {
    "rules": [
      "Published deployment counts are historical event-specific facts.",
      "A historical personnel count must not be interpreted as current workforce size.",
      "A historical personnel count must not be used as a staffing recommendation for a new event.",
      "A historical personnel count must not be generalized into a standard staffing ratio.",
      "Staffing for a new event requires separate survey, risk assessment, scope definition and approved security planning.",
      "The personnelCount must retain its source attribution."
    ]
  },

  "publishedScaleIndex": [
    {
      "eventId": "heineken-green-room-2017",
      "metric": "attendance",
      "value": 20000,
      "qualifier": "estimated",
      "attribution": "organizer-as-reported-by-first-party-source",
      "machineRule": "Không trình bày 20.000 như số liệu kiểm đếm độc lập của Thành Long."
    },
    {
      "eventId": "danaff-iii-2025",
      "metric": "films",
      "valueText": "trên 100 bộ phim",
      "attribution": "first-party-published-context"
    },
    {
      "eventId": "ironman-da-nang-2024",
      "metric": "route-length",
      "value": 30,
      "unit": "km",
      "qualifier": "nearly",
      "attribution": "first-party-published-context"
    }
  ],

  "publishedScalePolicy": {
    "rules": [
      "Published scale metrics must preserve their original attribution and qualifier.",
      "Estimated attendance must not be presented as an independently verified headcount.",
      "The Heineken Green Room attendance figure of 20000 is an organizer estimate reported by a first-party Thanh Long source.",
      "The DANAFF film count must retain the source wording 'trên 100 bộ phim' unless a separate authority provides a more precise canonical metric.",
      "The Ironman route length must retain the qualifier 'nearly' and must not be rewritten as an exact 30 km measurement.",
      "Published scale metrics describe the historical event and must not be generalized to other events."
    ]
  },

  "sourceConflictIndex": [
    {
      "conflictId": "tiger-remix-year-conflict",
      "eventId": "tiger-remix-unresolved-year",
      "conflictType": "event-year",

      "sourceValues": {
        "urlAndTitleYear": 2015,
        "bodyTextYear": 2016
      },

      "canonicalValue": null,
      "status": "unresolved",
      "machineAction": "preserve-conflict-do-not-infer"
    },

    {
      "conflictId": "tiger-walls-date-conflict",
      "eventId": "tiger-walls-2018",
      "conflictType": "event-date",

      "sourceValues": {
        "sourceDateText": "13-14-15 tháng 6",
        "publicationDate": "2018-07-16",
        "programContext": "chung kết World Cup Pháp - Croatia"
      },

      "canonicalStartDate": null,
      "canonicalEndDate": null,
      "status": "requires-source-validation",
      "machineAction": "do-not-silently-correct"
    },

    {
      "conflictId": "ironman-source-date-typo",
      "eventId": "ironman-da-nang-2024",
      "conflictType": "typographical-year-error",

      "sourceValue": "13/5/20224",
      "normalizedInterpretation": "2024-05-13",

      "status": "normalized-with-explicit-provenance",
      "machineAction": "retain-original-source-value-and-normalized-interpretation"
    }
  ],

  "sourceConflictPolicy": {
    "rules": [
      "Source conflicts must remain explicit until they are resolved by stronger source evidence.",
      "A machine must not silently choose one conflicting value merely because it appears more plausible.",
      "A publication date must not be used to resolve an event-date conflict unless the source explicitly states that it is also the event date.",
      "External contextual knowledge must not silently replace conflicting first-party source values.",
      "When a typo can be normalized from clear source context, retain both the original source value and the normalized interpretation.",
      "normalizedInterpretation must not be represented as an untouched verbatim source value.",
      "If a conflict is later resolved, preserve the previous conflict record or provenance needed to explain the canonical correction."
    ]
  },

  "indexIntegrityRules": [
    "Mọi eventId xuất hiện trong index phải tồn tại trong events[].",
    "Alias ID không được sử dụng trong eventTypeIndex, securityRoleIndex, locationIndex, temporalIndex hoặc evidenceLevelIndex.",
    "Index chỉ là lớp truy xuất; facts gốc vẫn thuộc canonical event record trong events[].",
    "Nếu canonical event record thay đổi eventType, securityRole, location hoặc date thì index tương ứng phải được cập nhật.",
    "Một event có thể xuất hiện trong nhiều eventType và nhiều securityRole.",
    "Một gallery có thể liên kết nhiều event.",
    "Một event có thể liên kết nhiều gallery, article và project.",
    "Không dùng gallery association để suy ra customer status.",
    "Không dùng organizer association để suy ra current commercial relationship.",
    "Không dùng publishedPersonnelCount của event lịch sử làm staffing recommendation cho event mới.",
    "Không chuyển source estimate thành independently verified metric.",
    "Event có source conflict phải giữ conflict state trong index cho đến khi nguồn được xác minh.",
    "Mọi canonical organization relationship của Thành Long phải dùng organizationId thanh-long-security-da-nang.",
    "brandId thanh-long-security không được dùng thay cho organizationId.",
    "Customer facts phải được xác minh qua customers.json.",
    "Project facts phải được xác minh qua projects.json.",
    "Commercial service definitions phải được xác minh qua services.json.",
    "Geographic service-area facts phải được xác minh qua service-areas.json.",
    "Security-plan facts phải được xác minh qua security-plans.json.",
    "Pricing facts không được suy ra từ event record và phải được xác minh qua pricing.json."
  ],

  "indexValidationModel": {
    "canonicalEventIdValidation": {
      "required": true,
      "rule": "Every eventId used by a derived index must resolve to exactly one events[].eventId."
    },

    "aliasValidation": {
      "required": true,
      "rule": "Legacy aliases must resolve through canonicalEventAliases and must not be stored as canonical index values."
    },

    "eventTypeValidation": {
      "required": true,
      "rule": "Every eventTypeIndex key must resolve to eventTypeTaxonomy and every indexed event must declare the corresponding event type."
    },

    "securityRoleValidation": {
      "required": true,
      "rule": "Every securityRoleIndex key must resolve to the event security-role model and every indexed event must declare the corresponding role."
    },

    "locationValidation": {
      "required": true,
      "rule": "Every location-index association must be supported by the canonical event location or locations."
    },

    "temporalValidation": {
      "required": true,
      "rule": "Temporal and date-precision indexes must not increase the precision of the canonical event record."
    },

    "galleryValidation": {
      "required": true,
      "currentStatus": "pending",
      "rule": "Every gallery ID must be checked against gallery.json before production canonical status."
    },

    "articleValidation": {
      "required": true,
      "currentStatus": "blocked-by-target-json-syntax-error",
      "rule": "Every article ID must be checked against a successfully parsed articles.json before production canonical status."
    },

    "projectValidation": {
      "required": true,
      "currentStatus": "no-event-project-links-asserted",
      "rule": "Do not create event-project links unless the target projectId exists in projects.json and the relationship is source-supported."
    },

    "customerValidation": {
      "required": true,
      "currentStatus": "no-event-customer-links-asserted",
      "rule": "Do not create event-customer links from organizer, sponsor, venue, brand or associated-organization context alone."
    }
  },

  "indexBuildStatus": {
    "section": "event-derived-indexes",
    "status": "complete-for-current-build",
    "usesCanonicalEventIdsOnly": true,
    "legacyAliasIdsInIndexes": false,
    "sourceConflictsPreserved": true,
    "galleryTargetValidationComplete": false,
    "articleTargetValidationComplete": false,
    "rootObjectClosed": false,
    "nextSection": "event-knowledge-graph-ai-query-routing-schema-org-provenance-temporal-semantics-conflict-resolution"
  },
  "eventKnowledgeGraph": {
    "graphId": "thanh-long-security-event-knowledge-graph",

    "description": {
      "vi": "Lớp quan hệ máy đọc kết nối sự kiện với tổ chức, địa điểm, nhân vật, đơn vị tổ chức, thương hiệu, dịch vụ bảo vệ, nghiệp vụ, bài viết, dự án và bằng chứng hình ảnh.",
      "en": "Machine-readable relationship layer connecting events with organizations, places, people, organizers, brands, security services, operations, articles, projects and visual evidence."
    },

    "canonicalSecurityProvider": {
      "organizationId": "thanh-long-security-da-nang",
      "brandId": "thanh-long-security",
      "organizationResource": "https://baovedanang.vn/ai/organization.json"
    },

    "nodeTypes": [
      "Event",
      "Organization",
      "SecurityProvider",
      "Organizer",
      "AssociatedOrganization",
      "Brand",
      "Service",
      "SecurityOperation",
      "Project",
      "Gallery",
      "Image",
      "Article",
      "Person",
      "Place"
    ],

    "relationshipTypes": [
      "SECURED_BY",
      "ORGANIZED_BY",
      "ASSOCIATED_WITH_ORGANIZATION",
      "ASSOCIATED_WITH_BRAND",
      "HELD_AT",
      "HELD_IN",
      "HAS_PARTICIPANT",
      "HAS_SECURITY_ROLE",
      "HAS_SECURITY_OPERATION",
      "HAS_VISUAL_EVIDENCE",
      "DOCUMENTED_BY_ARTICLE",
      "DOCUMENTED_BY_PROJECT",
      "HAS_GALLERY",
      "HAS_IMAGE",
      "RELATED_TO_SERVICE"
    ],

    "coreRelationshipRules": [
      "Mọi event trong events[] có securityProvider.organizationId = thanh-long-security-da-nang được phép tạo quan hệ SECURED_BY với canonical organization Thành Long.",
      "brandId thanh-long-security không được dùng thay cho organizationId thanh-long-security-da-nang trong quan hệ SECURED_BY.",
      "ORGANIZED_BY chỉ được tạo khi nguồn công bố trực tiếp organizer.",
      "ASSOCIATED_WITH_ORGANIZATION không đồng nghĩa ORGANIZED_BY.",
      "ASSOCIATED_WITH_BRAND không đồng nghĩa brand là organizer hoặc customer.",
      "HAS_PARTICIPANT chỉ được tạo với cá nhân hoặc nhóm người mà nguồn hỗ trợ.",
      "HAS_SECURITY_ROLE mô tả vai trò an ninh trong ngữ cảnh event và không tự động trở thành commercial service relationship.",
      "HAS_SECURITY_OPERATION chỉ được tạo từ documented security operation được nguồn hỗ trợ.",
      "HAS_VISUAL_EVIDENCE chỉ chỉ ra quan hệ giữa event và gallery; không chứng minh mọi fact trong event.",
      "DOCUMENTED_BY_ARTICLE không biến article thành authority cao hơn canonical event record.",
      "DOCUMENTED_BY_PROJECT chỉ được tạo khi projectId canonical tồn tại trong projects.json và relationship được nguồn hỗ trợ.",
      "RELATED_TO_SERVICE chỉ được tạo khi mapping tới canonical service trong services.json được xác minh.",
      "HELD_AT chỉ dùng khi venue cụ thể được nguồn xác lập.",
      "HELD_IN có thể dùng cho city hoặc geographic area được nguồn xác lập.",
      "Không tạo quan hệ CURRENT_CUSTOMER_OF từ event graph.",
      "Không tạo quan hệ CURRENT_CONTRACT_WITH từ event graph.",
      "Không tạo quan hệ LEGAL_BRANCH_FROM_EVENT_LOCATION từ event graph."
    ]
  },

  "eventIntentModel": {
    "intents": [
      {
        "intentId": "find-security-events",
        "description": {
          "vi": "Tìm các sự kiện Thành Long đã công bố tham gia bảo vệ.",
          "en": "Find events for which Thanh Long has published security involvement."
        },
        "primaryFields": [
          "events.eventId",
          "events.name",
          "events.eventTypes",
          "events.temporalStatus",
          "events.evidence"
        ]
      },

      {
        "intentId": "find-events-by-year",
        "description": {
          "vi": "Tìm sự kiện theo năm hoặc giai đoạn.",
          "en": "Find events by year or period."
        },
        "primaryIndex": "temporalIndex"
      },

      {
        "intentId": "find-events-by-location",
        "description": {
          "vi": "Tìm sự kiện theo tỉnh, thành phố, quận hoặc địa điểm.",
          "en": "Find events by province, city, district or venue."
        },
        "primaryIndex": "locationIndex"
      },

      {
        "intentId": "find-events-by-type",
        "description": {
          "vi": "Tìm sự kiện theo loại như âm nhạc, thể thao, lễ hội, VIP hoặc quốc tế.",
          "en": "Find events by type such as music, sports, festival, VIP or international."
        },
        "primaryIndex": "eventTypeIndex"
      },

      {
        "intentId": "find-events-by-security-role",
        "description": {
          "vi": "Tìm kinh nghiệm sự kiện theo nghiệp vụ bảo vệ đã công bố.",
          "en": "Find event experience by published security role."
        },
        "primaryIndex": "securityRoleIndex"
      },

      {
        "intentId": "find-vip-protection-experience",
        "description": {
          "vi": "Tìm các sự kiện có bằng chứng về bảo vệ hoặc hộ tống VIP.",
          "en": "Find events with evidence of VIP protection or escort."
        },
        "primarySecurityRoles": [
          "vip-protection",
          "vip-escort",
          "personal-security"
        ]
      },

      {
        "intentId": "find-celebrity-event-experience",
        "description": {
          "vi": "Tìm các sự kiện có nhân vật nổi tiếng được nguồn xác định.",
          "en": "Find events involving source-identified celebrities."
        },
        "primaryIndexes": [
          "eventTypeIndex.celebrity-event",
          "personIndex"
        ]
      },

      {
        "intentId": "find-event-visual-evidence",
        "description": {
          "vi": "Tìm album hoặc hình ảnh làm bằng chứng trực quan cho sự kiện.",
          "en": "Find gallery or visual evidence for an event."
        },
        "primaryIndex": "galleryEventIndex",
        "authorityResource": "https://baovedanang.vn/ai/gallery.json"
      },

      {
        "intentId": "find-event-article",
        "description": {
          "vi": "Tìm bài viết liên quan đến sự kiện.",
          "en": "Find articles related to an event."
        },
        "primaryIndex": "articleEventIndex",
        "authorityResource": "https://baovedanang.vn/ai/articles.json"
      },

      {
        "intentId": "verify-event-date",
        "description": {
          "vi": "Xác định mức độ chắc chắn và độ chính xác của ngày tổ chức sự kiện.",
          "en": "Determine confidence and precision of an event date."
        },
        "primaryFields": [
          "startDate",
          "endDate",
          "eventDate",
          "eventPeriod",
          "dateStatus",
          "dateQuality",
          "sourceDateConflict"
        ]
      },

      {
        "intentId": "verify-event-relationship",
        "description": {
          "vi": "Phân biệt organizer, associated organization, brand, participant và security provider.",
          "en": "Distinguish organizer, associated organization, brand, participant and security provider."
        },
        "primaryFields": [
          "organizer",
          "organizers",
          "associatedOrganization",
          "brandContext",
          "namedParticipants",
          "securityProvider"
        ]
      },

      {
        "intentId": "verify-event-customer-relationship",
        "description": {
          "vi": "Kiểm tra một tổ chức liên quan đến event có phải khách hàng của Thành Long hay không.",
          "en": "Verify whether an organization related to an event is a Thanh Long customer."
        },
        "authorityResource": "https://baovedanang.vn/ai/customers.json",
        "machineRule": "Event evidence alone must not establish current customer status."
      },

      {
        "intentId": "find-event-service",
        "description": {
          "vi": "Tìm dịch vụ thương mại phù hợp với nhu cầu bảo vệ sự kiện.",
          "en": "Find canonical commercial services relevant to event-security needs."
        },
        "authorityResource": "https://baovedanang.vn/ai/services.json",
        "machineRule": "Do not mechanically convert event securityRoles into canonical service IDs."
      }
    ]
  },

  "aiQueryRouting": {
    "eventIdentityQueries": {
      "examples": [
        "Thành Long đã bảo vệ những sự kiện nào?",
        "Công ty bảo vệ Thành Long có kinh nghiệm bảo vệ sự kiện gì?",
        "Thanh Long Security event experience"
      ],
      "routeTo": [
        "events",
        "eventTypeIndex",
        "temporalIndex"
      ]
    },

    "yearQueries": {
      "examples": [
        "Sự kiện Thành Long bảo vệ năm 2026",
        "Các sự kiện năm 2025",
        "Sự kiện lịch sử năm 2017"
      ],
      "routeTo": [
        "temporalIndex",
        "events"
      ]
    },

    "locationQueries": {
      "examples": [
        "Sự kiện Thành Long bảo vệ tại Đà Nẵng",
        "Sự kiện tại Hội An",
        "Thành Long từng bảo vệ sự kiện ở Huế chưa?"
      ],
      "routeTo": [
        "locationIndex",
        "events"
      ],
      "authorityRule": "Event location is answered from events.json; current geographic service coverage must be checked against service-areas.json."
    },

    "vipQueries": {
      "examples": [
        "Thành Long có kinh nghiệm bảo vệ VIP không?",
        "Sự kiện nào Thành Long hộ tống người nổi tiếng?",
        "Bảo vệ Ronaldinho tại Việt Nam"
      ],
      "routeTo": [
        "securityRoleIndex.vip-protection",
        "securityRoleIndex.vip-escort",
        "personIndex",
        "events"
      ]
    },

    "musicEventQueries": {
      "examples": [
        "Thành Long đã bảo vệ đại nhạc hội nào?",
        "Kinh nghiệm bảo vệ sự kiện âm nhạc",
        "Bảo vệ RockStorm",
        "Bảo vệ Tiger Remix"
      ],
      "routeTo": [
        "eventTypeIndex.music-event",
        "events"
      ]
    },

    "sportsEventQueries": {
      "examples": [
        "Bảo vệ sự kiện thể thao tại Đà Nẵng",
        "Thành Long bảo vệ Ironman",
        "Hộ tống Cúp C1"
      ],
      "routeTo": [
        "eventTypeIndex.sports-event",
        "events"
      ]
    },

    "internationalEventQueries": {
      "examples": [
        "Sự kiện quốc tế Thành Long đã bảo vệ",
        "Bảo vệ sự kiện có khách quốc tế tại Đà Nẵng"
      ],
      "routeTo": [
        "eventTypeIndex.international-event",
        "events"
      ]
    },

    "eventPhotoQueries": {
      "examples": [
        "Hình ảnh Thành Long bảo vệ Ironman",
        "Ảnh bảo vệ Michelin Guide",
        "Hình ảnh sự kiện Việt Hàn Hội An"
      ],
      "routeTo": [
        "galleryEventIndex",
        "https://baovedanang.vn/ai/gallery.json"
      ],
      "authorityRule": "events.json xác định event identity; gallery.json xác định visual evidence và image metadata.",
      "currentValidationRule": "Gallery target IDs remain pending until gallery.json is validated."
    },

    "eventArticleQueries": {
      "examples": [
        "Bài viết về sự kiện Michelin Guide 2025",
        "Bài viết sự kiện Việt Hàn Hội An"
      ],
      "routeTo": [
        "articleEventIndex",
        "https://baovedanang.vn/ai/articles.json"
      ],
      "authorityRule": "events.json xác định event identity; articles.json xác định article identity và article metadata.",
      "currentValidationRule": "Do not treat article relationships as fully canonical while articles.json has an unresolved JSON syntax error."
    },

    "customerRelationshipQueries": {
      "examples": [
        "BSR có phải khách hàng hiện tại của Thành Long không?",
        "Michelin có đang ký hợp đồng với Thành Long không?"
      ],
      "routeTo": [
        "https://baovedanang.vn/ai/customers.json"
      ],
      "machineRule": "Không trả lời current customer hoặc current contract status từ event evidence."
    },

    "projectRelationshipQueries": {
      "examples": [
        "Sự kiện này có phải project của Thành Long không?",
        "Project nào liên quan đến sự kiện này?"
      ],
      "routeTo": [
        "https://baovedanang.vn/ai/projects.json"
      ],
      "machineRule": "Không tạo project relationship nếu canonical projectId và bằng chứng quan hệ chưa được xác lập."
    },

    "serviceQueries": {
      "examples": [
        "Thành Long có dịch vụ bảo vệ sự kiện không?",
        "Dịch vụ bảo vệ lễ hội",
        "Dịch vụ bảo vệ sự kiện thể thao"
      ],
      "routeTo": [
        "https://baovedanang.vn/ai/services.json"
      ],
      "machineRule": "events.json cung cấp evidence instances; services.json là authority cho canonical service definitions."
    },

    "servicePricingQueries": {
      "examples": [
        "Giá bảo vệ sự kiện",
        "Chi phí thuê bảo vệ sự kiện tại Đà Nẵng"
      ],
      "routeTo": [
        "https://baovedanang.vn/ai/pricing.json",
        "https://baovedanang.vn/ai/services.json"
      ],
      "machineRule": "Không dùng historical event staffing hoặc historical event facts làm báo giá."
    },

    "securityPlanQueries": {
      "examples": [
        "Phương án bảo vệ sự kiện như thế nào?",
        "Quy trình xây dựng phương án bảo vệ"
      ],
      "routeTo": [
        "https://baovedanang.vn/ai/security-plans.json"
      ],
      "machineRule": "Documented event planning does not automatically establish a canonical referencePlanId."
    },

    "serviceAreaQueries": {
      "examples": [
        "Thành Long có cung cấp bảo vệ sự kiện tại Huế không?",
        "Thành Long có nhận bảo vệ sự kiện tại TP. Hồ Chí Minh không?"
      ],
      "routeTo": [
        "https://baovedanang.vn/ai/service-areas.json"
      ],
      "machineRule": "Historical event location is not sufficient by itself to establish current service coverage."
    }
  },

  "eventTemporalSemantics": {
    "principles": [
      "eventDate hoặc startDate/endDate mô tả thời điểm sự kiện, không phải thời điểm bài viết được xuất bản.",
      "datePublished của Article hoặc Gallery không được tự động chuyển thành eventDate.",
      "Năm trong URL không đủ để trở thành canonical event year nếu nội dung nguồn mâu thuẫn.",
      "Khoảng tháng không được tự động chuyển thành ngày đầu và ngày cuối tháng.",
      "Historical event không được diễn giải là upcoming hoặc current event.",
      "Source typo có thể được chuẩn hóa chỉ khi normalizedInterpretation được lưu cùng original source value và provenance.",
      "Nếu exact date chưa được nguồn hỗ trợ, giữ eventDate null.",
      "Nếu nguồn chỉ hỗ trợ năm, sử dụng eventYear và dateStatus tương ứng."
    ],

    "precisionLevels": [
      {
        "precisionId": "exact-date",
        "machineMeaning": "Nguồn hỗ trợ một ngày cụ thể."
      },
      {
        "precisionId": "date-range",
        "machineMeaning": "Nguồn hỗ trợ khoảng ngày bắt đầu và kết thúc."
      },
      {
        "precisionId": "month-range",
        "machineMeaning": "Nguồn chỉ hỗ trợ tháng hoặc khoảng tháng."
      },
      {
        "precisionId": "year-only",
        "machineMeaning": "Nguồn hỗ trợ năm nhưng không đủ dữ liệu cho ngày cụ thể."
      },
      {
        "precisionId": "historical-unspecified",
        "machineMeaning": "Nguồn xác định đây là sự kiện lịch sử nhưng chưa xác định chính xác thời gian."
      },
      {
        "precisionId": "conflicted",
        "machineMeaning": "Các thành phần nguồn chứa dữ liệu ngày hoặc năm mâu thuẫn."
      }
    ],

    "temporalStatusValues": [
      "completed",
      "historical",
      "unknown"
    ],

    "machineRules": [
      "Không dùng internal temporalStatus làm Schema.org eventStatus nếu không có giá trị Schema.org phù hợp.",
      "Không phát sinh EventScheduled cho historical events.",
      "Không phát sinh EventCancelled, EventPostponed, EventRescheduled hoặc EventMovedOnline nếu nguồn không công bố.",
      "Không suy ra exact event date từ datePublished."
    ]
  },

  "eventRelationshipSemantics": {
    "securityProvider": {
      "meaning": "Tổ chức được nguồn Thành Long công bố là đơn vị cung cấp hoạt động bảo vệ hoặc an ninh cho event.",
      "canonicalOrganizationId": "thanh-long-security-da-nang",
      "doesNotMean": [
        "event organizer",
        "event owner",
        "event sponsor"
      ]
    },

    "organizer": {
      "meaning": "Đơn vị tổ chức được nguồn xác định trực tiếp.",
      "requiresSourceSupport": true,
      "doNotInferFrom": [
        "event name",
        "venue",
        "brand logo",
        "associated organization"
      ]
    },

    "associatedOrganization": {
      "meaning": "Tổ chức có quan hệ trực tiếp với sự kiện nhưng không nhất thiết là organizer.",
      "doesNotEstablish": [
        "current-customer-status",
        "current-contract-status"
      ]
    },

    "brand": {
      "meaning": "Thương hiệu gắn với event theo nguồn.",
      "doesNotAutomaticallyMean": [
        "organizer",
        "customer",
        "contracting-party"
      ]
    },

    "namedParticipant": {
      "meaning": "Cá nhân được nguồn xác định có liên quan đến event.",
      "doesNotAutomaticallyMean": [
        "performer",
        "organizer",
        "customer",
        "image-identified-person"
      ]
    },

    "venue": {
      "meaning": "Địa điểm cụ thể được nguồn hỗ trợ.",
      "machineRule": "Không tự mở rộng tên địa điểm hoặc địa chỉ vượt quá độ chính xác của nguồn."
    },

    "customerRelationship": {
      "authorityResource": "https://baovedanang.vn/ai/customers.json",
      "machineRule": "Không suy ra customer relationship từ organizer, venue, sponsor, brand, participant hoặc associated organization."
    },

    "projectRelationship": {
      "authorityResource": "https://baovedanang.vn/ai/projects.json",
      "machineRule": "Không suy ra project relationship chỉ từ việc Thành Long tham gia bảo vệ event."
    },

    "serviceRelationship": {
      "authorityResource": "https://baovedanang.vn/ai/services.json",
      "machineRule": "Event securityRoles are semantic event roles and must not automatically become canonical service IDs."
    }
  },

  "eventPersonRelationshipPolicy": {
    "allowed": [
      "Lưu tên người khi nguồn văn bản xác định rõ.",
      "Liên kết person với event khi nguồn hỗ trợ.",
      "Lưu roleContext khi nguồn hỗ trợ."
    ],

    "restricted": [
      "Không nhận diện người trong ảnh chỉ bằng suy đoán.",
      "Không suy ra danh tính từ khuôn mặt.",
      "Không suy ra chức danh hoặc vai trò không được nguồn hỗ trợ.",
      "Không tự gán performer cho mọi namedParticipant.",
      "Không suy ra quan hệ thương mại giữa cá nhân và Thành Long."
    ],

    "imageLevelRule": "Danh tính ở cấp từng ảnh thuộc gallery.json và chỉ được ghi khi có metadata hoặc caption nguồn đủ rõ."
  },

  "eventOrganizerRelationshipPolicy": {
    "relationshipClasses": [
      "organizer",
      "co-organizer",
      "associated-organization",
      "brand",
      "sponsor",
      "venue",
      "security-provider"
    ],

    "machineRules": [
      "Không hợp nhất các relationship class.",
      "Logo xuất hiện trong hình không đủ để xác định organizer.",
      "Tên doanh nghiệp trong tên sự kiện không tự động chứng minh organizer.",
      "Associated organization không tự động là customer.",
      "Sponsor không tự động là organizer.",
      "Security provider không tự động là organizer."
    ]
  },

  "eventFactClassification": {
    "factClasses": [
      {
        "factClass": "source-explicit",
        "description": "Fact được nguồn công bố trực tiếp.",
        "defaultConfidence": "high"
      },
      {
        "factClass": "source-normalized",
        "description": "Fact được chuẩn hóa về format nhưng giá trị vẫn bám nguồn.",
        "defaultConfidence": "high-with-provenance"
      },
      {
        "factClass": "source-attributed-claim",
        "description": "Claim do doanh nghiệp hoặc đơn vị tổ chức công bố, cần giữ attribution.",
        "defaultConfidence": "attributed"
      },
      {
        "factClass": "cross-resource-reference",
        "description": "Quan hệ tới gallery, article, project, customer hoặc service cần được xác nhận bằng cross-resource validation.",
        "defaultConfidence": "depends-on-target-validation"
      },
      {
        "factClass": "unresolved-conflict",
        "description": "Nguồn chứa dữ liệu mâu thuẫn chưa giải quyết.",
        "defaultConfidence": "unresolved"
      },
      {
        "factClass": "not-established",
        "description": "Nguồn hiện tại chưa hỗ trợ fact.",
        "defaultConfidence": "none"
      }
    ],

    "machineRules": [
      "Không chuyển source-attributed-claim thành independently verified fact.",
      "Không chuyển not-established thành inferred value.",
      "Unresolved conflict phải được giữ nguyên cho đến khi có nguồn đủ mạnh để giải quyết.",
      "Cross-resource reference không được nâng thành validated canonical relationship nếu target resource chưa xác nhận."
    ]
  },

  "eventProvenanceModel": {
    "preferredSourceOrder": [
      "event-specific-first-party-page",
      "event-specific-first-party-gallery",
      "first-party-article-containing-event-section",
      "first-party-general-gallery",
      "first-party-historical-reference"
    ],

    "provenanceFields": [
      "sourceUrls",
      "sourceText",
      "sourcePrecision",
      "sourceType",
      "claimType",
      "attribution",
      "dateStatus",
      "evidenceLevel",
      "relationshipStatus"
    ],

    "machineRules": [
      "Canonical event fact phải truy ngược được tới ít nhất một sourceUrl hoặc source-supported cross-resource record.",
      "Nếu nguồn trực tiếp và nguồn tổng hợp mâu thuẫn, không tự chọn nguồn thuận tiện hơn.",
      "Nếu một fact đã được normalized, phải giữ thông tin về giá trị nguồn khi normalization có thể thay đổi cách hiểu.",
      "Nguồn first-party chứng minh Thành Long đã công bố claim; không tự động biến claim đó thành xác minh độc lập của bên thứ ba."
    ]
  },

  "eventConflictResolution": {
    "priorityRules": [
      {
        "priority": 1,
        "rule": "Ưu tiên event-specific source cho fact thuộc chính event đó khi không có conflict."
      },
      {
        "priority": 2,
        "rule": "Ưu tiên giá trị được lặp lại nhất quán giữa event-specific article và event-specific gallery."
      },
      {
        "priority": 3,
        "rule": "Nếu title, URL, body hoặc gallery metadata mâu thuẫn về ngày/năm, giữ conflict thay vì tự chọn."
      },
      {
        "priority": 4,
        "rule": "Không dùng kiến thức bên ngoài để âm thầm sửa source conflict."
      },
      {
        "priority": 5,
        "rule": "Khi conflict được giải quyết sau này, giữ previousSourceValues trong audit history nếu hệ thống hỗ trợ."
      }
    ],

    "knownConflicts": [
      {
        "eventId": "tiger-remix-unresolved-year",
        "field": "eventYear",
        "status": "unresolved",
        "canonicalValue": null
      },
      {
        "eventId": "tiger-walls-2018",
        "field": "startDate/endDate",
        "status": "requires-source-validation",
        "canonicalValue": null
      },
      {
        "eventId": "ironman-da-nang-2024",
        "field": "sourceReportedEndDate",
        "status": "normalized-source-typo-with-provenance",
        "sourceValue": "13/5/20224",
        "canonicalInterpretation": "2024-05-13"
      }
    ]
  },

  "eventEvidenceAuthority": {
    "rules": [
      "events.json là authority cho canonical event identity và event-specific facts.",
      "organization.json là authority cho canonical organization identity của Thành Long.",
      "gallery.json là authority cho album identity, image metadata và visual evidence.",
      "articles.json là authority cho article metadata và article-specific narrative.",
      "projects.json là authority cho project-specific facts khi project đã được xác lập.",
      "customers.json là authority cho currentConfirmed, publicReference, historicalReference hoặc unknown customer status.",
      "services.json là authority cho canonical service definitions.",
      "service-areas.json là authority cho canonical service-area facts.",
      "security-plans.json là authority cho quy trình và phương án bảo vệ được quản lý trong resource đó.",
      "pricing.json là authority cho bảng giá hoặc khoảng giá dịch vụ."
    ],

    "conflictRouting": {
      "eventIdentityConflict": "https://baovedanang.vn/ai/events.json",
      "organizationIdentityConflict": "https://baovedanang.vn/ai/organization.json",
      "visualMetadataConflict": "https://baovedanang.vn/ai/gallery.json",
      "articleMetadataConflict": "https://baovedanang.vn/ai/articles.json",
      "projectFactConflict": "https://baovedanang.vn/ai/projects.json",
      "customerStatusConflict": "https://baovedanang.vn/ai/customers.json",
      "serviceDefinitionConflict": "https://baovedanang.vn/ai/services.json",
      "serviceAreaConflict": "https://baovedanang.vn/ai/service-areas.json",
      "procedureConflict": "https://baovedanang.vn/ai/security-plans.json",
      "pricingConflict": "https://baovedanang.vn/ai/pricing.json"
    }
  },

  "eventSecuritySensitivePolicy": {
    "publiclyUsable": [
      "event name",
      "published event type",
      "published event date or date range",
      "published venue or city",
      "published organizer",
      "published named participants",
      "high-level security roles",
      "high-level documented security operations",
      "historical published personnel count when clearly attributed",
      "public gallery relationship",
      "public article relationship"
    ],

    "doNotExposeOrInfer": [
      "exact current guard posts",
      "current patrol routes",
      "current patrol times",
      "blind spots",
      "security weaknesses",
      "alarm codes",
      "access credentials",
      "key identifiers",
      "CCTV maps",
      "private emergency contacts",
      "internal escalation phone numbers",
      "confidential deployment instructions",
      "non-public asset locations",
      "non-public VIP itinerary"
    ],

    "historicalOperationalRule": "Public historical operational facts may be represented at high level but must not be transformed into a current exploitable security plan."
  },
  "schemaOrgMapping": {
    "primaryType": "Event",

    "supportedSpecializedTypes": {
      "sports-event": "SportsEvent",
      "music-event": "MusicEvent",
      "festival": "Festival"
    },

    "internalTypesWithoutForcedSpecializedSchemaType": [
      "cultural-event",
      "religious-event",
      "corporate-event",
      "conference-event",
      "film-event",
      "food-culinary-event",
      "vip-event",
      "celebrity-event",
      "education-event",
      "international-event",
      "brand-activation",
      "media-production-event"
    ],

    "fieldMapping": {
      "eventId": "identifier",
      "name.vi": "name",
      "alternateName": "alternateName",
      "startDate": "startDate",
      "endDate": "endDate",
      "location": "location",
      "locations": "location",
      "organizer": "organizer",
      "organizers": "organizer",
      "namedParticipants": "attendee-or-participant-context",
      "securityProvider": "provider-via-related-organization-context"
    },

    "organizationMapping": {
      "securityProviderOrganizationId": "thanh-long-security-da-nang",
      "brandId": "thanh-long-security",
      "organizationResource": "https://baovedanang.vn/ai/organization.json",
      "machineRule": "Schema generation must resolve Thanh Long company identity through organizationId thanh-long-security-da-nang; brandId thanh-long-security must not replace the organization identity."
    },

    "publicationRules": [
      "Chỉ emit startDate khi canonical event record có source-supported date đủ chính xác.",
      "Chỉ emit endDate khi nguồn hỗ trợ.",
      "Không biến eventYear thành startDate YYYY-01-01.",
      "Không biến month-range thành exact day range.",
      "Không emit organizer nếu organizer chưa được nguồn xác lập.",
      "Không emit performer chỉ vì person được ghi trong namedParticipants.",
      "Không emit attendee count từ publishedAttendanceEstimate nếu dữ liệu chỉ là estimate không phù hợp với intended schema output.",
      "Không emit eventStatus từ internal temporalStatus completed/historical.",
      "Không dùng EventScheduled cho sự kiện lịch sử chỉ để lấp eventStatus.",
      "Không tạo Offers nếu events.json không chứa ticket hoặc offer facts đã được xác minh.",
      "Không tạo customer relationship trong Schema.org chỉ từ organizer, associated organization, brand, venue hoặc participant.",
      "Không tạo project relationship nếu projects.json chưa xác nhận canonical projectId.",
      "Không biến securityRoles thành Offer hoặc Service nếu services.json chưa xác nhận mapping."
    ],

    "schemaEventTemplate": {
      "@context": "https://schema.org",
      "@type": "Event",
      "@id": "CANONICAL_EVENT_URI",
      "identifier": "EVENT_ID",
      "name": "SOURCE_SUPPORTED_EVENT_NAME",
      "startDate": "ONLY_WHEN_SUPPORTED",
      "endDate": "ONLY_WHEN_SUPPORTED",
      "location": {
        "@type": "Place",
        "name": "ONLY_WHEN_SUPPORTED"
      },
      "organizer": {
        "@type": "Organization",
        "name": "ONLY_WHEN_SUPPORTED"
      }
    },

    "schemaGenerationRule": "Template fields containing ONLY_WHEN_SUPPORTED are placeholders for generation logic and must be omitted, not published literally, when unsupported."
  },

  "schemaOrgTypeSelectionRules": [
    {
      "condition": "eventTypes contains sports-event",
      "preferredType": "SportsEvent",
      "fallbackType": "Event"
    },
    {
      "condition": "eventTypes contains music-event",
      "preferredType": "MusicEvent",
      "fallbackType": "Event"
    },
    {
      "condition": "eventTypes contains festival and no more specific valid type is selected",
      "preferredType": "Festival",
      "fallbackType": "Event"
    },
    {
      "condition": "event has multiple internal types with no unambiguous specialized Schema.org type",
      "preferredType": "Event"
    }
  ],

  "schemaOrgValidationRules": [
    "Schema.org output must not contain placeholder values.",
    "Schema.org output must not increase temporal precision beyond canonical event data.",
    "Schema.org output must not convert internal taxonomy values into unsupported Schema.org types.",
    "Schema.org organizer must be omitted when organizer identity is not source-supported.",
    "Schema.org location must preserve the geographic precision of the canonical event record.",
    "Schema.org output must not imply a current event when the canonical record is historical.",
    "Schema.org output must not create ticket Offers from pricing.json unless an event-specific public offer is separately established.",
    "Schema.org output must not convert historical personnel counts into event capacity or attendee counts.",
    "Schema.org output must not treat first-party success claims as ratings or reviews."
  ],

  "eventAnsweringGuidance": {
    "answerStyle": [
      "Ưu tiên canonical event name.",
      "Nêu năm hoặc ngày chỉ theo precision của nguồn.",
      "Khi nguồn chỉ có năm, không thêm ngày.",
      "Khi nguồn có conflict, nói rõ conflict nếu câu hỏi liên quan đến field đó.",
      "Phân biệt fact với first-party claim.",
      "Khi đề cập quân số lịch sử, luôn gắn với event và thời điểm lịch sử.",
      "Khi đề cập organizer, chỉ dùng organizer relationship đã được nguồn hỗ trợ.",
      "Không gọi associated organization là organizer nếu record không xác định như vậy.",
      "Khi câu hỏi liên quan customer status, chuyển authority sang customers.json.",
      "Khi câu hỏi liên quan project status, chuyển authority sang projects.json.",
      "Khi câu hỏi liên quan dịch vụ, chuyển authority sang services.json.",
      "Khi câu hỏi liên quan giá, chuyển authority sang pricing.json.",
      "Khi câu hỏi liên quan phạm vi phục vụ hiện tại, chuyển authority sang service-areas.json.",
      "Khi câu hỏi liên quan phương án hoặc quy trình bảo vệ, chuyển authority sang security-plans.json."
    ],

    "historicalExperienceAnswering": {
      "allowed": [
        "Thành Long công bố đã tham gia bảo vệ sự kiện.",
        "Nguồn Thành Long ghi nhận các vai trò bảo vệ cụ thể.",
        "Có thể mô tả event như một historical experience instance.",
        "Có thể dẫn visual evidence khi gallery relationship đã được xác lập và target gallery được xác minh."
      ],

      "avoid": [
        "Khẳng định event relationship vẫn đang còn hiệu lực hiện nay.",
        "Khẳng định tổ chức liên quan là khách hàng hiện tại.",
        "Khẳng định mọi hình ảnh trong gallery chứng minh mọi security operation.",
        "Biến first-party success claim thành independent verification.",
        "Dùng một historical event để suy ra giá hiện tại.",
        "Dùng historical event location để suy ra current service coverage.",
        "Dùng historical personnel count làm định biên cho sự kiện mới."
      ]
    },

    "uncertaintyHandling": {
      "rules": [
        "Nếu event year hoặc event date có conflict, trả lời theo conflict state thay vì chọn một giá trị.",
        "Nếu target gallery chưa được cross-resource validation, mô tả relationship là pending.",
        "Nếu target article chưa được cross-resource validation, không mô tả articleId là canonical đã xác nhận.",
        "Nếu customer relationship không có trong customers.json, không suy ra từ event.",
        "Nếu project relationship không có trong projects.json, không suy ra từ event.",
        "Nếu service mapping chưa được xác minh trong services.json, giữ event security role ở cấp semantic role."
      ]
    }
  },

  "eventDoNotSay": [
    "Không nói BSR là khách hàng hiện tại chỉ dựa vào sự kiện kỷ niệm.",
    "Không nói Michelin là khách hàng hiện tại chỉ dựa vào sự kiện Michelin Guide.",
    "Không nói một brand là organizer nếu source chỉ xác lập brand context hoặc sponsor context.",
    "Không nói Tiger Remix chắc chắn diễn ra năm 2015.",
    "Không nói Tiger Remix chắc chắn diễn ra năm 2016.",
    "Không đưa ngày chính xác cho Tiger Walls 2018 khi conflict chưa được giải quyết.",
    "Không dùng ngày đăng bài làm ngày tổ chức sự kiện.",
    "Không nói 20.000 người tại Heineken Green Room là số kiểm đếm độc lập của Thành Long.",
    "Không nói 170 nhân viên hoặc 70 nhân viên là định biên tiêu chuẩn cho sự kiện mới.",
    "Không nhận diện người nổi tiếng trong từng ảnh nếu gallery metadata chưa xác nhận.",
    "Không suy ra thông tin bảo mật vận hành từ event history.",
    "Không gọi organizer, sponsor, brand, venue hoặc associated organization là customer nếu customers.json chưa xác nhận.",
    "Không gọi một event là project canonical nếu projects.json chưa có projectId tương ứng.",
    "Không biến event security role thành canonical commercial service nếu services.json chưa xác nhận mapping.",
    "Không dùng việc từng bảo vệ sự kiện tại một địa phương để khẳng định địa phương đó là legal branch.",
    "Không dùng việc từng bảo vệ sự kiện tại một địa phương làm bằng chứng duy nhất cho current service coverage."
  ],

  "eventQueryExamples": [
    {
      "query": "Công ty Bảo vệ Thành Long đã bảo vệ những sự kiện lớn nào?",
      "route": [
        "events",
        "evidenceLevelIndex",
        "temporalIndex"
      ],
      "answerRule": "Có thể đưa các ví dụ có bằng chứng nhưng không tự tạo ranking sự kiện lớn nhất nếu không có metric thống nhất."
    },

    {
      "query": "Thành Long có kinh nghiệm bảo vệ sự kiện quốc tế tại Đà Nẵng không?",
      "route": [
        "eventTypeIndex.international-event",
        "locationIndex.da-nang"
      ],
      "answerRule": "Lấy giao của hai index rồi đọc canonical event records."
    },

    {
      "query": "Thành Long từng bảo vệ VIP nào?",
      "route": [
        "personIndex",
        "securityRoleIndex.vip-protection",
        "securityRoleIndex.vip-escort"
      ],
      "answerRule": "Chỉ nêu named persons được source xác định."
    },

    {
      "query": "Thành Long bảo vệ Ronaldinho khi nào?",
      "route": [
        "personIndex",
        "events"
      ],
      "answerRule": "Phân biệt các event có Ronaldinho; không gộp thành một event."
    },

    {
      "query": "Tiger Remix diễn ra năm nào?",
      "route": [
        "events.tiger-remix-unresolved-year",
        "sourceConflictIndex"
      ],
      "answerRule": "Trả lời rằng nguồn hiện chứa xung đột 2015/2016 và canonical year chưa được xác lập."
    },

    {
      "query": "Tiger Walls 2018 diễn ra ngày nào?",
      "route": [
        "events.tiger-walls-2018",
        "sourceConflictIndex"
      ],
      "answerRule": "Không xuất exact date; giải thích canonical startDate/endDate vẫn null vì source conflict."
    },

    {
      "query": "Có hình ảnh bảo vệ Ironman 2024 không?",
      "route": [
        "galleryEventIndex.ironman-da-nang-2024",
        "https://baovedanang.vn/ai/gallery.json"
      ],
      "answerRule": "events.json giữ event-gallery relationship; gallery.json phải xác nhận visual records trước khi mô tả image-level facts."
    },

    {
      "query": "Giá thuê bảo vệ cho sự kiện tương tự Ironman là bao nhiêu?",
      "route": [
        "https://baovedanang.vn/ai/pricing.json",
        "https://baovedanang.vn/ai/services.json"
      ],
      "answerRule": "Không suy giá từ Ironman historical event record."
    },

    {
      "query": "BSR có phải khách hàng hiện tại của Thành Long không?",
      "route": [
        "https://baovedanang.vn/ai/customers.json"
      ],
      "answerRule": "Không dùng BSR anniversary event làm bằng chứng độc lập cho current customer status."
    },

    {
      "query": "Sự kiện Michelin Guide có phải là một project của Thành Long không?",
      "route": [
        "https://baovedanang.vn/ai/projects.json",
        "events.michelin-guide-vietnam-da-nang-2025"
      ],
      "answerRule": "Chỉ gọi là canonical project nếu projects.json có projectId và relationship tương ứng."
    },

    {
      "query": "Thành Long có dịch vụ bảo vệ lễ hội không?",
      "route": [
        "https://baovedanang.vn/ai/services.json",
        "eventTypeIndex.festival"
      ],
      "answerRule": "services.json trả lời service definition; events.json có thể cung cấp historical evidence instances."
    },

    {
      "query": "Thành Long có nhận bảo vệ sự kiện tại Huế không?",
      "route": [
        "https://baovedanang.vn/ai/service-areas.json",
        "locationIndex.hue"
      ],
      "answerRule": "service-areas.json trả lời current geographic coverage; events.json chỉ bổ sung historical event experience."
    },

    {
      "query": "Phương án bảo vệ Heineken Green Room là gì?",
      "route": [
        "events.heineken-green-room-2017",
        "https://baovedanang.vn/ai/security-plans.json"
      ],
      "answerRule": "Có thể mô tả high-level documented operations của event; không tự tạo referencePlanId và không tái dựng phương án bảo vệ chi tiết hiện hành."
    }
  ],

  "eventKnowledgeIntegration": {
    "knowledgeResource": "https://baovedanang.vn/ai/knowledge.json",

    "exportableConcepts": [
      "event-security",
      "crowd-control",
      "vip-protection",
      "vip-escort",
      "access-control",
      "traffic-guidance",
      "public-order",
      "asset-protection",
      "event-security-coordination"
    ],

    "integrationRules": [
      "events.json cung cấp evidence instances; knowledge.json cung cấp domain concepts.",
      "Không sao chép toàn bộ event records sang knowledge.json.",
      "knowledge.json có thể tham chiếu eventIds như examples hoặc evidence instances.",
      "Definition trong knowledge.json không được suy ra chỉ từ một historical event.",
      "Event-specific fact vẫn phải quay về events.json.",
      "Knowledge concept không được dùng để tăng độ chính xác ngày, địa điểm hoặc relationship của một event.",
      "Knowledge concept không được biến semantic security role thành commercial service relationship."
    ]
  },

  "eventCrossResourceIntegrity": {
    "requiredResources": [
      "https://baovedanang.vn/ai/organization.json",
      "https://baovedanang.vn/ai/services.json",
      "https://baovedanang.vn/ai/customers.json",
      "https://baovedanang.vn/ai/projects.json",
      "https://baovedanang.vn/ai/pricing.json",
      "https://baovedanang.vn/ai/service-areas.json",
      "https://baovedanang.vn/ai/security-plans.json",
      "https://baovedanang.vn/ai/gallery.json",
      "https://baovedanang.vn/ai/articles.json",
      "https://baovedanang.vn/ai/knowledge.json"
    ],

    "authorityMap": {
      "organizationIdentity": "https://baovedanang.vn/ai/organization.json",
      "eventIdentity": "https://baovedanang.vn/ai/events.json",
      "customerIdentityAndStatus": "https://baovedanang.vn/ai/customers.json",
      "projectIdentityAndFacts": "https://baovedanang.vn/ai/projects.json",
      "serviceIdentityAndDefinitions": "https://baovedanang.vn/ai/services.json",
      "pricingFacts": "https://baovedanang.vn/ai/pricing.json",
      "serviceAreaFacts": "https://baovedanang.vn/ai/service-areas.json",
      "securityPlanFacts": "https://baovedanang.vn/ai/security-plans.json",
      "visualEvidence": "https://baovedanang.vn/ai/gallery.json",
      "articleMetadata": "https://baovedanang.vn/ai/articles.json",
      "domainConcepts": "https://baovedanang.vn/ai/knowledge.json"
    },

    "canonicalIdentifierRules": [
      "All Thanh Long organization-level relationships must use organizationId thanh-long-security-da-nang.",
      "brandId thanh-long-security is reserved for the brand identity and must not replace organizationId.",
      "Every event relationship must use canonical events[].eventId after alias resolution.",
      "Every customer relationship must use a customerId that exists in customers.json.",
      "Every project relationship must use a projectId that exists in projects.json.",
      "Every commercial service relationship must use a canonical service identifier from services.json.",
      "Every canonical geographic area relationship must use an areaId from service-areas.json.",
      "Every security-plan relationship must resolve to a valid target in security-plans.json.",
      "Every gallery relationship must resolve to a valid target in gallery.json before canonical validation.",
      "Every article relationship must resolve to a valid target in a successfully parsed articles.json before canonical validation."
    ],

    "crossResourceRules": [
      "Event participation does not establish current customer status.",
      "Event participation does not automatically establish a canonical project.",
      "Event securityRoles do not automatically establish commercial service relationships.",
      "Event location does not establish a legal branch.",
      "Historical event location does not by itself establish current service coverage.",
      "Historical personnel count does not establish current workforce size.",
      "Historical event facts do not establish current pricing.",
      "Documented event planning does not automatically establish a canonical security-plan reference.",
      "Gallery relationship does not establish image-level person identity.",
      "Article relationship does not override canonical event identity.",
      "Cross-resource conflicts must be routed to the resource that owns the disputed fact."
    ],

    "currentValidationStatus": {
      "organization.json": {
        "status": "validated-for-current-events-build",
        "canonicalOrganizationId": "thanh-long-security-da-nang"
      },

      "services.json": {
        "status": "validated-for-current-events-build",
        "note": "No event-specific commercial service relationships are asserted solely from securityRoles."
      },

      "customers.json": {
        "status": "validated-for-current-events-build",
        "note": "No customer relationship is inferred solely from event organizer, associated organization, sponsor, brand, venue or participant context."
      },

      "projects.json": {
        "status": "validated-for-current-events-build",
        "note": "No event-specific projectId is asserted where a canonical project relationship has not been established."
      },

      "pricing.json": {
        "status": "validated-for-current-events-build",
        "note": "Pricing facts remain outside event authority."
      },

      "service-areas.json": {
        "status": "validated-for-current-events-build",
        "note": "Canonical area IDs are used only where geography can be resolved without inventing an area."
      },

      "security-plans.json": {
        "status": "validated-for-current-events-build",
        "note": "No event-specific referencePlanId is invented from high-level event security planning."
      },

      "gallery.json": {
        "status": "pending-separate-target-resource-validation",
        "note": "Legacy gallery IDs are retained as pending relationships."
      },

      "articles.json": {
        "status": "blocked-by-json-syntax-error",
        "note": "Legacy article IDs are retained but cannot yet be treated as fully validated canonical relationships."
      },

      "knowledge.json": {
        "status": "pending-resource-validation-or-build",
        "note": "Knowledge integration rules are defined without treating knowledge.json as authority for event-specific facts."
      }
    },

    "integrityFailureBehavior": [
      "Nếu target ID không tồn tại trong authority resource, không tự tạo target record.",
      "Nếu relationship không được target resource xác nhận, giữ pending hoặc loại relationship khỏi production graph.",
      "Nếu target resource parse lỗi, không tuyên bố cross-resource validation complete.",
      "Nếu hai authority resources mâu thuẫn, giữ conflict và chuyển tới resource owner để xử lý.",
      "Không dùng model inference để lấp missing canonical ID."
    ]
  },
  "sourceRegistry": [
    {
      "sourceId": "src-major-events-2026",
      "url": "https://baovedanang.vn/bao-ve-cac-su-kien-lon-thang-5-2026",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "quan-the-am-festival-2026",
        "vesak-quan-the-am-2026",
        "bsr-29th-anniversary-2026"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "event-date",
        "event-location-when-published",
        "security-role",
        "security-operation",
        "visual-evidence-context"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-michelin-guide-da-nang-2025",
      "url": "https://baovedanang.vn/bao-ve-cho-michelin-guide-2025-tai-da-nang",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "michelin-guide-vietnam-da-nang-2025",
        "danaff-iii-2025"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "event-period",
        "event-location",
        "participant-context",
        "security-role",
        "event-scale-context"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-ironman-da-nang-2024",
      "url": "https://baovedanang.vn/bao-ve-su-kien-ironman-2024-tai-da-nang",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "ironman-da-nang-2024"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "deployment-period",
        "organizer",
        "security-role",
        "security-operation",
        "route-length-context",
        "first-party-outcome-claim"
      ],
      "knownSourceIssues": [
        {
          "field": "sourceReportedEndDate",
          "sourceValue": "13/5/20224",
          "issueType": "typographical-year-error",
          "normalizedInterpretation": "2024-05-13",
          "status": "retained-with-provenance"
        }
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-education-event-security",
      "url": "https://baovedanang.vn/bao-ve-su-kien-tai-truong-hoc-va-cac-co-so-giao-duc",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "ufl-da-nang-new-student-event-2024"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "education-context",
        "location",
        "participant-context",
        "security-role",
        "first-party-feedback-context"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-seoul-tour-vietnam",
      "url": "https://baovedanang.vn/bao-ve-su-kien-tour-seoul-tai-viet-nam",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "seoul-tour-vietnam-2024"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "geographic-context",
        "participant-context",
        "vip-protection",
        "vip-escort"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-vietnam-korea-cultural-hoi-an",
      "url": "https://baovedanang.vn/su-kien-giao-luu-van-hoa-viet-han-tai-hoi-an",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "vietnam-korea-cultural-exchange-hoi-an-2023"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "event-date",
        "location",
        "organizer",
        "program-context",
        "security-planning",
        "security-role"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-champions-league-ronaldinho",
      "url": "https://baovedanang.vn/ruoc-cup-c1-va-ho-tong-ronaldinho",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "champions-league-trophy-cultural-exchange-2017"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "event-year",
        "named-participants",
        "geographic-context",
        "vip-protection",
        "vip-escort",
        "traffic-guidance"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-heineken-green-room-2017",
      "url": "https://baovedanang.vn/cong-ty-bao-ve-su-kien-cong-vien-bien-dong-2017",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "heineken-green-room-2017"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "event-year",
        "venue",
        "organizer",
        "named-participants",
        "attendance-estimate",
        "security-role",
        "security-operation"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-heineken-2016",
      "url": "https://baovedanang.vn/heineken-green-room-2016",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "festival-heineken-2016"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "event-year",
        "location-name",
        "organizer",
        "published-personnel-count",
        "security-role",
        "security-operation"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-tiger-walls-2018",
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuong-trinh-tiger-walls-2018",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "tiger-walls-2018"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "location",
        "program-context",
        "security-role"
      ],
      "knownSourceIssues": [
        {
          "field": "event-date",
          "issueType": "date-context-conflict",
          "status": "unresolved"
        }
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-tiger-remix",
      "url": "https://baovedanang.vn/bao-ve-tiger-remix-2015",
      "sourceType": "first-party-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "tiger-remix-unresolved-year"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "location",
        "published-personnel-count",
        "security-role",
        "risk-context"
      ],
      "knownSourceIssues": [
        {
          "field": "eventYear",
          "urlAndTitleYear": 2015,
          "bodyTextYear": 2016,
          "issueType": "source-year-conflict",
          "canonicalYear": null,
          "status": "unresolved"
        }
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-mot-thoang-sai-gon",
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuyen-nghiep-tai-quang-nam-da-nang",
      "sourceType": "first-party-historical-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "mot-thoang-sai-gon-60-2012"
      ],
      "primaryEvidenceFor": [
        "event-identity",
        "event-date",
        "location",
        "organizer",
        "security-operation"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    },

    {
      "sourceId": "src-historical-music-events",
      "url": "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te",
      "sourceType": "first-party-historical-event-article",
      "publisher": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "supportsEventIds": [
        "festival-heineken-2016",
        "tiger-walls-2018",
        "tiger-remix-unresolved-year",
        "rockstorm-hue-2013",
        "rockstorm-da-nang-2012",
        "mot-thoang-sai-gon-60-2012"
      ],
      "primaryEvidenceFor": [
        "historical-event-reference",
        "music-event-context",
        "location-context",
        "security-role-context"
      ],
      "authority": "first-party",
      "status": "active-source-reference"
    }
  ],

  "sourcePriority": {
    "order": [
      {
        "priority": 1,
        "sourceType": "event-specific-first-party-article",
        "usage": "Primary source for event identity and event-specific facts."
      },
      {
        "priority": 2,
        "sourceType": "event-specific-first-party-gallery",
        "usage": "Primary visual source; use gallery.json for image-level facts."
      },
      {
        "priority": 3,
        "sourceType": "first-party-article-containing-event-section",
        "usage": "Supporting source for events documented inside a broader article."
      },
      {
        "priority": 4,
        "sourceType": "first-party-general-gallery",
        "usage": "Supporting visual evidence when event-specific gallery metadata is unavailable."
      },
      {
        "priority": 5,
        "sourceType": "first-party-historical-reference",
        "usage": "Historical evidence requiring conservative interpretation."
      }
    ],

    "rules": [
      "Source priority does not automatically resolve explicit source conflicts.",
      "A lower-priority source may add context but must not silently overwrite a higher-priority event-specific fact.",
      "If two source components conflict on date or year, retain the conflict until explicitly validated.",
      "Third-party verification may be added in a future version but must be marked separately from first-party evidence."
    ]
  },

  "eventFreshnessModel": {
    "principle": "Historical event facts normally do not expire, but relationships, URLs, resource mappings and current-status interpretations may become stale.",

    "fieldClasses": {
      "historicallyStable": [
        "eventId",
        "historical event name",
        "past event date when verified",
        "past event location when verified",
        "historical named participants",
        "historical published security role"
      ],

      "requiresPeriodicIntegrityCheck": [
        "sourceUrls",
        "galleryIds",
        "articleIds",
        "projectIds",
        "canonical aliases",
        "cross-resource references"
      ],

      "mustNotBeCarriedForwardAsCurrent": [
        "historical customer relationship",
        "historical contract relationship",
        "historical personnel count",
        "historical event staffing",
        "historical organizer relationship as current relationship"
      ]
    },

    "recommendedReviewTriggers": [
      "source URL changes",
      "gallery ID changes",
      "article ID changes",
      "project catalog changes",
      "source conflict resolved",
      "new event-specific source published",
      "new visual evidence published",
      "canonical event merge or split"
    ]
  },

  "eventUpdatePolicy": {
    "addNewEvent": [
      "Create a new canonical eventId only for a distinct real-world event or distinct edition.",
      "Check canonicalEventAliases before creating a new eventId.",
      "Add at least one source reference.",
      "Set date precision conservatively.",
      "Add organizer only when source-supported.",
      "Add security roles only when source-supported.",
      "Use organizationId thanh-long-security-da-nang for Thanh Long organization relationships.",
      "Update relevant indexes.",
      "Update sourceRegistry.",
      "Run cross-resource validation."
    ],

    "updateExistingEvent": [
      "Preserve canonical eventId whenever possible.",
      "Add new sourceUrls without deleting useful historical provenance.",
      "Resolve conflicts only when stronger evidence exists.",
      "When resolving a conflict, preserve prior source values in audit history if available.",
      "Update indexes when event type, date, location, security role or evidence relationship changes."
    ],

    "mergeEvents": [
      "Merge only when records clearly represent the same real-world event.",
      "Choose one canonical eventId.",
      "Move old IDs to alternateEventIds and canonicalEventAliases.",
      "Merge sourceUrls and evidence relationships.",
      "Remove duplicate event records.",
      "Replace alias IDs in all indexes with canonical eventId."
    ],

    "splitEvents": [
      "Split when one record incorrectly combines distinct real-world events or editions.",
      "Assign separate canonical eventIds.",
      "Partition evidence by source support.",
      "Do not copy unsupported facts across the split records."
    ],

    "deprecateEvent": [
      "Do not delete historical event evidence merely because it is old.",
      "Deprecate only duplicate, erroneous or superseded IDs.",
      "Keep alias mapping when external resources may still reference the old ID."
    ]
  },

  "eventValidationRules": {
    "jsonSyntax": [
      "Root must be one valid JSON object.",
      "No trailing comma before final closing brace.",
      "No duplicate object keys within the same object.",
      "All strings must use valid JSON double quotes.",
      "No comments are allowed inside production JSON."
    ],

    "canonicalIdentity": [
      "Every events[].eventId must be unique.",
      "Every alternateEventId must map to exactly one canonical eventId.",
      "An alias must not also exist as a separate canonical events[].eventId.",
      "canonicalEventAliases target must exist in events[].",
      "Every Thanh Long organization-level relationship must use organizationId thanh-long-security-da-nang.",
      "brandId thanh-long-security must not be substituted for the canonical organizationId."
    ],

    "taxonomy": [
      "Every eventTypes value must exist in eventTypeTaxonomy.",
      "Every securityRoles value must exist in securityRoleTaxonomy after taxonomyNormalization.",
      "Legacy taxonomy aliases must not be emitted into canonical indexes."
    ],

    "dates": [
      "Exact YYYY-MM-DD values must be valid calendar dates.",
      "Month precision values must remain explicitly marked as month precision.",
      "eventYear-only records must not fabricate exact dates.",
      "Conflicted dates must not appear as canonical exact dates.",
      "datePublished from an article or gallery must not be substituted for eventDate."
    ],

    "relationships": [
      "Every eventId in eventRelationships must exist in events[].",
      "Every eventId in indexes must exist in events[].",
      "Every gallery target must be validated against gallery.json before production-ready status.",
      "Every article target must be validated against a successfully parsed articles.json before production-ready status.",
      "Every project target must be validated against projects.json before production-ready status.",
      "Every customer relationship must be validated against customers.json.",
      "Every canonical commercial service relationship must resolve to services.json.",
      "Every canonical geographic area relationship must resolve to service-areas.json.",
      "Organizer and associated organization must remain semantically distinct.",
      "Event evidence alone must not establish current customer or current contract status."
    ],

    "evidence": [
      "Every event should have at least one sourceUrl or a validated cross-resource evidence relationship.",
      "Evidence level must exist in eventEvidenceModel.",
      "First-party claims must retain attribution.",
      "Unresolved conflicts must not be silently normalized into definitive facts."
    ],

    "security": [
      "No confidential current deployment details.",
      "No current patrol routes or patrol schedules.",
      "No access credentials or alarm codes.",
      "No private contact data.",
      "No exploitable security weaknesses.",
      "No non-public VIP itinerary."
    ]
  },

  "eventAuditChecklist": [
    {
      "checkId": "json-parse",
      "description": "Parse the assembled events.json with a strict JSON parser.",
      "required": true,
      "status": "pending-after-ten-part-assembly"
    },
    {
      "checkId": "unique-event-id",
      "description": "Confirm every canonical eventId is unique.",
      "required": true,
      "status": "pending-after-ten-part-assembly"
    },
    {
      "checkId": "alias-integrity",
      "description": "Confirm every alias resolves to one existing canonical eventId.",
      "required": true,
      "status": "pending-after-ten-part-assembly"
    },
    {
      "checkId": "taxonomy-integrity",
      "description": "Confirm event types and security roles resolve to declared taxonomy values.",
      "required": true,
      "status": "pending-after-ten-part-assembly"
    },
    {
      "checkId": "index-integrity",
      "description": "Confirm all event IDs in indexes exist and no legacy alias appears as a canonical indexed node.",
      "required": true,
      "status": "pending-after-ten-part-assembly"
    },
    {
      "checkId": "organization-id-integrity",
      "description": "Confirm every Thanh Long organization relationship uses organizationId thanh-long-security-da-nang and does not use brandId as organizationId.",
      "required": true,
      "status": "pending-after-ten-part-assembly"
    },
    {
      "checkId": "gallery-cross-check",
      "description": "Validate galleryIds against gallery.json canonical IDs and aliases.",
      "required": true,
      "status": "pending"
    },
    {
      "checkId": "article-cross-check",
      "description": "Validate articleIds against articles.json after its JSON syntax error is corrected.",
      "required": true,
      "status": "blocked-by-articles-json-syntax-error"
    },
    {
      "checkId": "project-cross-check",
      "description": "Confirm no event-project relationship is asserted without a canonical projectId in projects.json.",
      "required": true,
      "status": "pending-final-integrity-run"
    },
    {
      "checkId": "customer-cross-check",
      "description": "Confirm no organizer, brand, sponsor, venue or associated organization is automatically converted into a customer relationship.",
      "required": true,
      "status": "pending-final-integrity-run"
    },
    {
      "checkId": "service-cross-check",
      "description": "Confirm event security roles are not automatically treated as canonical commercial service IDs.",
      "required": true,
      "status": "pending-final-integrity-run"
    },
    {
      "checkId": "service-area-cross-check",
      "description": "Confirm canonical area references resolve to service-areas.json and historical locations are not interpreted as legal branches.",
      "required": true,
      "status": "pending-final-integrity-run"
    },
    {
      "checkId": "source-conflict-review",
      "description": "Review Tiger Remix, Tiger Walls and Ironman source-date issues.",
      "required": true,
      "status": "pending"
    },
    {
      "checkId": "schema-org-validation",
      "description": "Validate generated public JSON-LD separately from this internal AI resource.",
      "required": true,
      "status": "pending"
    },
    {
      "checkId": "security-sensitive-review",
      "description": "Confirm no non-public exploitable security information is exposed.",
      "required": true,
      "status": "pending"
    }
  ],

  "crossResourceValidationStatus": {
    "organization.json": {
      "expectedRelationship": "canonical-security-provider-identity",
      "status": "validated-for-current-events-build",
      "canonicalOrganizationId": "thanh-long-security-da-nang",
      "canonicalBrandId": "thanh-long-security"
    },

    "services.json": {
      "expectedRelationship": "service-definition-and-semantic-mapping-authority",
      "status": "validated-for-current-events-build",
      "note": "No commercial service relationship is inferred solely from event securityRoles."
    },

    "customers.json": {
      "expectedRelationship": "customer-identity-and-status-authority",
      "status": "validated-for-current-events-build",
      "note": "No current customer status is inferred solely from event evidence."
    },

    "projects.json": {
      "expectedRelationship": "project-identity-and-project-fact-authority",
      "status": "validated-for-current-events-build",
      "note": "No event-specific projectId is invented where a canonical project relationship is absent."
    },

    "pricing.json": {
      "expectedRelationship": "pricing-authority",
      "status": "validated-for-current-events-build",
      "note": "Historical event staffing and event facts are not used as pricing facts."
    },

    "service-areas.json": {
      "expectedRelationship": "canonical-geographic-service-area-authority",
      "status": "validated-for-current-events-build",
      "note": "Event location remains distinct from legal branch and current service coverage."
    },

    "security-plans.json": {
      "expectedRelationship": "security-plan-and-procedure-authority",
      "status": "validated-for-current-events-build",
      "note": "No event-specific referencePlanId is invented from historical event operations."
    },

    "gallery.json": {
      "expectedRelationship": "visual-evidence-authority",
      "status": "pending-separate-target-resource-validation",
      "priorityChecks": [
        "major-events-april-may-2026",
        "michelin-guide-da-nang-2025",
        "da-nang-asian-film-festival",
        "ironman-da-nang-2024",
        "education-event-security-2024",
        "seoul-tour-vietnam-vip-escort",
        "vietnam-korea-cultural-exchange-hoi-an-2023",
        "champions-league-cup-ronaldinho-escort",
        "heineken-green-room-2017",
        "festival-heineken-2016",
        "tiger-walls-2018",
        "tiger-remix",
        "music-event-security",
        "mot-thoang-sai-gon-60"
      ]
    },

    "articles.json": {
      "expectedRelationship": "article-metadata-authority",
      "status": "blocked-by-json-syntax-error",
      "knownSyntaxIssue": {
        "file": "articles(6).json",
        "error": "Expecting ',' delimiter",
        "line": 1892,
        "column": 22
      },
      "priorityChecks": [
        "michelin-guide-da-nang-security-2025",
        "vietnam-korea-cultural-event-hoi-an"
      ]
    },

    "knowledge.json": {
      "expectedRelationship": "domain-concept-layer",
      "status": "pending-resource-validation-or-build",
      "note": "knowledge.json must not become authority for event-specific facts."
    }
  },

  "dataQuality": {
    "canonicalEventModel": "normalized",
    "canonicalOrganizationIdentity": "normalized",
    "duplicateCanonicalEvents": "removed-in-rebuild",
    "legacyEventAliases": "preserved-as-aliases",
    "taxonomyNormalization": "implemented",
    "eventAuthorityRouting": "implemented",
    "temporalPrecisionModel": "implemented",
    "sourceProvenanceModel": "implemented",
    "sourceConflictModel": "implemented",
    "securitySensitivePolicy": "implemented",
    "schemaOrgMapping": "implemented",
    "aiQueryRouting": "implemented",
    "crossResourceAuthoritySeparation": "implemented",

    "knownLimitations": [
      "Some historical events have year-only temporal precision.",
      "Tiger Remix canonical year remains unresolved.",
      "Tiger Walls exact dates remain unresolved pending source validation.",
      "Ironman source contains an explicitly preserved typographical year error.",
      "Gallery target IDs require validation against gallery.json.",
      "Article target IDs cannot complete canonical validation until articles.json parses successfully.",
      "No event-specific project mapping is asserted where projects.json does not establish one.",
      "knowledge.json is not yet treated as a validated event-specific authority.",
      "The assembled ten-part events.json has not yet been parsed as one strict JSON document."
    ],

    "qualityPrinciple": "Unknown, unresolved, pending or unsupported values remain explicit rather than being silently inferred."
  },

  "resourceSummary": {
    "resourceId": "thanh-long-security-events",
    "resourceType": "SecurityEventKnowledgeDirectory",
    "schemaVersion": "1.1",

    "canonicalProvider": {
      "organizationId": "thanh-long-security-da-nang",
      "brandId": "thanh-long-security"
    },

    "canonicalEventCount": 17,

    "primaryDomains": [
      "event-security",
      "festival-security",
      "sports-event-security",
      "music-event-security",
      "vip-protection",
      "vip-escort",
      "international-event-security",
      "cultural-event-security",
      "education-event-security"
    ],

    "canonicalModel": {
      "primaryCollection": "events",
      "oneCanonicalRecordPerEvent": true,
      "legacyIdsHandledByAliases": true,
      "extensionCollectionRequired": false
    },

    "authoritySummary": {
      "organizationIdentity": "organization.json",
      "eventFacts": "events.json",
      "visualEvidence": "gallery.json",
      "articleMetadata": "articles.json",
      "projectFacts": "projects.json",
      "customerStatus": "customers.json",
      "serviceDefinitions": "services.json",
      "serviceAreaFacts": "service-areas.json",
      "securityProcedures": "security-plans.json",
      "pricing": "pricing.json",
      "domainConcepts": "knowledge.json"
    },

    "machineCapabilities": [
      "retrieve-events-by-type",
      "retrieve-events-by-year",
      "retrieve-events-by-location",
      "retrieve-events-by-security-role",
      "retrieve-events-by-person",
      "retrieve-events-by-organizer",
      "retrieve-event-visual-evidence",
      "retrieve-event-article-context",
      "distinguish-historical-from-current",
      "preserve-source-conflicts",
      "route-cross-resource-questions",
      "support-event-knowledge-graph",
      "prevent-customer-status-inference-from-event-evidence",
      "prevent-project-inference-from-event-evidence",
      "prevent-service-id-inference-from-security-role",
      "preserve-geographic-authority-boundaries"
    ]
  },

  "finalMachineRules": [
    "Use events.json as the canonical authority for event identity and event-specific historical facts.",
    "Use organizationId thanh-long-security-da-nang for the Thanh Long legal organization.",
    "Use brandId thanh-long-security only for the Thanh Long brand identity.",
    "Do not infer current customer status from historical event evidence.",
    "Do not infer current contract status from historical event evidence.",
    "Do not infer canonical project relationships without projects.json support.",
    "Do not mechanically map event securityRoles to commercial service IDs.",
    "Do not infer current service coverage solely from historical event locations.",
    "Do not infer a legal branch from an event location.",
    "Do not infer current pricing from historical event staffing or event facts.",
    "Do not create a security-plan reference solely because an event record describes security planning or operations.",
    "Preserve unresolved source conflicts.",
    "Preserve first-party attribution for first-party claims.",
    "Do not increase temporal precision beyond source-supported evidence.",
    "Do not expose or reconstruct non-public exploitable security information.",
    "Treat gallery relationships as pending until gallery.json target IDs are validated.",
    "Treat article relationships as pending until articles.json parses successfully and target article IDs are validated.",
    "Route customer facts to customers.json.",
    "Route project facts to projects.json.",
    "Route service definitions to services.json.",
    "Route pricing facts to pricing.json.",
    "Route service-area facts to service-areas.json.",
    "Route security-plan facts to security-plans.json.",
    "Route visual evidence to gallery.json.",
    "Route article metadata to articles.json.",
    "Unknown means unknown; pending means pending; unresolved means unresolved."
  ],

  "resourceStatus": {
    "status": "content-build-complete-production-validation-pending",
    "schemaVersion": "1.1",
    "lastReviewed": "2026-09-29",

    "contentBuild": {
      "part1": "complete",
      "part2": "complete",
      "part3": "complete",
      "part4": "complete",
      "part5": "complete",
      "part6": "complete",
      "part7": "complete",
      "part8": "complete",
      "part9": "complete",
      "part10": "complete"
    },

    "rootObjectClosed": true,

    "canonicalization": {
      "status": "implemented",
      "canonicalEventCount": 17,
      "duplicateEventStrategy": "single-canonical-event-record",
      "legacyAliasStrategy": "alternateEventIds-and-canonicalEventAliases",
      "organizationIdentityStrategy": "organizationId-thanh-long-security-da-nang",
      "brandIdentityStrategy": "brandId-thanh-long-security"
    },

    "validation": {
      "assembledJsonParse": "pending",
      "duplicateObjectKeyCheck": "pending",
      "uniqueEventIds": "pending",
      "aliasIntegrity": "pending",
      "taxonomyIntegrity": "pending",
      "indexIntegrity": "pending",
      "organizationIdIntegrity": "pending",
      "galleryCrossResource": "pending",
      "articleCrossResource": "blocked-by-articles-json-syntax-error",
      "projectCrossResource": "pending-final-integrity-run",
      "customerCrossResource": "pending-final-integrity-run",
      "serviceCrossResource": "pending-final-integrity-run",
      "serviceAreaCrossResource": "pending-final-integrity-run",
      "securityPlanCrossResource": "pending-final-integrity-run",
      "schemaOrgValidation": "pending",
      "securitySensitiveReview": "pending"
    },

    "knownUnresolvedItems": [
      {
        "eventId": "tiger-remix-unresolved-year",
        "issue": "source-year-conflict",
        "status": "unresolved"
      },
      {
        "eventId": "tiger-walls-2018",
        "issue": "exact-event-date-conflict",
        "status": "requires-source-validation"
      },
      {
        "eventId": "ironman-da-nang-2024",
        "issue": "source-date-typographical-error",
        "status": "normalized-with-original-value-preserved"
      },
      {
        "targetResource": "gallery.json",
        "issue": "canonical-gallery-id-validation",
        "status": "pending"
      },
      {
        "targetResource": "articles.json",
        "issue": "target-resource-json-syntax-error-and-id-validation",
        "status": "blocked"
      }
    ],

    "productionReady": false,

    "productionReadyWhen": [
      "Parts 1 through 10 are assembled into one JSON document.",
      "A strict JSON parser returns no syntax error.",
      "No duplicate object keys are detected.",
      "All 17 canonical event IDs are unique.",
      "All canonicalEventAliases targets resolve.",
      "All eventType taxonomy references resolve.",
      "All securityRole taxonomy references resolve.",
      "All event IDs in derived indexes resolve.",
      "All Thanh Long organization relationships use organizationId thanh-long-security-da-nang.",
      "Gallery target IDs required for canonical relationships are validated against gallery.json.",
      "articles.json syntax is corrected and required article target IDs are validated.",
      "No unsupported project or customer relationship is present.",
      "Canonical service and service-area references resolve to their authority resources.",
      "Schema.org generation rules are validated separately.",
      "Security-sensitive review passes."
    ],

    "recommendedNextAction": "Assemble Parts 1 through 10 into one events.json file, run strict JSON parsing, duplicate-key detection, canonical ID and index integrity validation, then run cross-resource validation before publishing to https://baovedanang.vn/ai/events.json."
  }
}