{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "documentType": "https://xbrl.fra.gov.eg/rules/2026/filing-rules",
    "name": {
        "en": "FRA XBRL filing rules",
        "ar": "قواعد إيداع XBRL لدى الهيئة العامة للرقابة المالية"
    },
    "version": "2026.10.1",
    "filer_manual": "https://fra2.corprise.ai/xbrl/filer-manual/manual",
    "severities": {
        "error": "The report is refused.",
        "warning": "Accepted; to be explained or corrected.",
        "info": "Information only.",
        "tiered": "Calculations 1.1 policy: error above the configured threshold, warning below.",
        "configurable": "Set by FRA configuration."
    },
    "layers": [
        {
            "id": "package",
            "title": {
                "ar": "التعامل الآمن مع الحزمة",
                "en": "Package safety"
            }
        },
        {
            "id": "xbrl",
            "title": {
                "ar": "مطابقة مواصفات XBRL",
                "en": "XBRL specification conformance"
            }
        },
        {
            "id": "calculation",
            "title": {
                "ar": "الحسابات (Calculations 1.1)",
                "en": "Calculations 1.1"
            }
        },
        {
            "id": "duplicates",
            "title": {
                "ar": "البيانات المكررة",
                "en": "Duplicate facts"
            }
        },
        {
            "id": "filing",
            "title": {
                "ar": "قواعد الإيداع لدى الهيئة",
                "en": "FRA filing rules"
            }
        },
        {
            "id": "data_quality",
            "title": {
                "ar": "جودة البيانات",
                "en": "Data quality"
            }
        },
        {
            "id": "business",
            "title": {
                "ar": "قواعد الهيئة الموضوعية",
                "en": "FRA business rules"
            }
        }
    ],
    "policies": {
        "calculations_1_1": {
            "policy": "tiered",
            "error_threshold": 0.005
        },
        "duplicates": "Inconsistent duplicates are errors; complete and consistent duplicates are accepted (XII WGN 2025-01-14).",
        "anchoring": {
            "severity": "error",
            "arcroles": [
                "http://xbrl.fra.gov.eg/arcrole/wider-narrower",
                "http://www.esma.europa.eu/xbrl/esef/arcrole/wider-narrower"
            ]
        }
    },
    "rules": [
        {
            "id": "PKG-001",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The file is not a readable ZIP archive.",
                "ar": "الملف ليس أرشيف ZIP مقروءاً."
            },
            "description": "Report packages (.xbri, .xbr, .zip) must be valid ZIP archives.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Report Packages 1.0",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "PKG-002",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Unsafe path inside the package: {path}.",
                "ar": "مسار غير آمن داخل الحزمة: {path}."
            },
            "description": "Entry names must be relative, without \"..\", drive letters, backslashes or NUL (path traversal).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XII Guidance on safe handling of report packages",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "PKG-003",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The package has {count} entries; at most {max} are accepted.",
                "ar": "الحزمة تحتوي على {count} ملفاً؛ الحد الأقصى {max}."
            },
            "description": "Entry-count limit (XBRL_PKG_MAX_ENTRIES).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_PKG_MAX_ENTRIES",
            "legacy_codes": []
        },
        {
            "id": "PKG-004",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Inflated size exceeds the limit at {path} ({bytes} bytes, limit {max}).",
                "ar": "حجم الحزمة بعد فك الضغط يتجاوز الحد المسموح عند {path} ({bytes} بايت، الحد {max})."
            },
            "description": "The ACTUAL inflated bytes are counted while reading: an entry larger than its header declares, larger than XBRL_PKG_MAX_ENTRY, or a package larger than XBRL_PKG_MAX_UNCOMPRESSED is refused.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_PKG_MAX_UNCOMPRESSED, XBRL_PKG_MAX_ENTRY",
            "legacy_codes": []
        },
        {
            "id": "PKG-005",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Entry {path} has a compression ratio of {ratio}:1 (limit {max}:1) — refused as a possible zip bomb.",
                "ar": "نسبة ضغط الملف {path} هي {ratio}:1 (الحد {max}:1) — رُفض كقنبلة ضغط محتملة."
            },
            "description": "Per-entry inflated/compressed ratio, judged on the header and again on the bytes actually inflated.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_PKG_MAX_RATIO",
            "legacy_codes": []
        },
        {
            "id": "PKG-006",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Archive inside the package: {path}. Nested archives are not accepted.",
                "ar": "أرشيف داخل الحزمة: {path}. لا تُقبل الأرشيفات المتداخلة."
            },
            "description": "Nested archives are refused by extension and by content signature (ZIP, gzip, 7z, RAR, bzip2, xz, CAB).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "PKG-007",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Symbolic link inside the package: {path}.",
                "ar": "رابط رمزي داخل الحزمة: {path}."
            },
            "description": "Entries whose Unix mode is a symbolic link are refused.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "PKG-008",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "No report was found in the package (expected reports/*.xhtml, reports/*.xbrl or reports/*.json).",
                "ar": "لا يوجد تقرير داخل الحزمة (المتوقع: reports/*.xhtml أو reports/*.xbrl أو reports/*.json)."
            },
            "description": "Report Packages 1.0 report discovery found no report.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Report Packages 1.0, section 3",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "PKG-009",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The package contains {count} reports ({names}); a filing must contain exactly one report.",
                "ar": "الحزمة تحتوي على {count} تقارير ({names})؛ يجب أن يحتوي الإيداع على تقرير واحد فقط."
            },
            "description": "Report Packages 1.0: the HTML documents of one directory form one Inline XBRL document set; any other report file is a separate report. A filing is one report — an ambiguous package is refused, never guessed.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Report Packages 1.0, section 3.4",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "PKG-010",
            "layer": "package",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "META-INF/reportPackage.json is invalid or does not match the package: {detail}.",
                "ar": "ملف META-INF/reportPackage.json غير صالح أو لا يطابق الحزمة: {detail}."
            },
            "description": "The documentType must be a Report Packages 1.0 type; an .xbri package holds an Inline XBRL report and an .xbr package a non-inline one.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Report Packages 1.0, section 3.3",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-001",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The file is not a well-formed XBRL report: {detail}.",
                "ar": "الملف ليس تقرير XBRL سليماً: {detail}."
            },
            "description": "The report must be well-formed XML/XHTML (XBRL 2.1 or Inline XBRL 1.1), xBRL-JSON or an xBRL-CSV package.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XBRL 2.1; Inline XBRL 1.1; OIM 1.0",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-002",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Fact {concept} refers to an undefined context {context}.",
                "ar": "البند {concept} يشير إلى سياق غير معرّف {context}."
            },
            "description": "Every fact must reference a context of the report (or of the document set).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XBRL 2.1, 4.6.1",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-003",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Unreadable number \"{value}\" for {concept} (format {format}).",
                "ar": "رقم غير مقروء «{value}» للبند {concept} (الصيغة {format})."
            },
            "description": "Numeric facts must be readable with their Transformation Registry format.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Inline XBRL 1.1, 4.1.3; Transformation Registry 4/5",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-004",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Undeclared prefix in fact name {concept}.",
                "ar": "بادئة غير معرّفة في اسم البند {concept}."
            },
            "description": "Fact names are QNames whose prefix must be declared.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Inline XBRL 1.1",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-005",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Broken ix:continuation chain for {concept}: {detail}.",
                "ar": "سلسلة ix:continuation غير مكتملة للبند {concept}: {detail}."
            },
            "description": "continuedAt must reference an ix:continuation in the document set, without cycles, and each continuation may be used once.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Inline XBRL 1.1, 4.1.1",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-006",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Numeric fact {concept} refers to an undefined unit {unit}.",
                "ar": "البند الرقمي {concept} يشير إلى وحدة غير معرّفة {unit}."
            },
            "description": "Every numeric fact must reference a unit of the report.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XBRL 2.1, 4.6.2",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-007",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Unsupported or invalid OIM construct: {detail}.",
                "ar": "بنية OIM غير مدعومة أو غير صالحة: {detail}."
            },
            "description": "xBRL-JSON/xBRL-CSV reports must be complete in one metadata file (no extends, no property groups).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "xBRL-CSV 1.0",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-008",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The id {id} is used by more than one element of the Inline XBRL document set.",
                "ar": "المعرّف {id} مستخدم لأكثر من عنصر في مجموعة مستندات XBRL المضمّنة."
            },
            "description": "Context, unit and continuation ids are unique across the whole document set.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Inline XBRL 1.1, 3.4",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-100",
            "layer": "xbrl",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "XBRL specification error ({arelle_code}): {detail}.",
                "ar": "خطأ في مطابقة مواصفات XBRL ({arelle_code}): {detail}."
            },
            "description": "An error reported by Arelle when the uploaded report is validated against the FRA entry point it references (XBRL 2.1, Dimensions 1.0, Inline XBRL 1.1, OIM, Report Packages). The Arelle message code is given as arelle_code.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XBRL 2.1; Dimensions 1.0; Inline XBRL 1.1; OIM 1.0",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-101",
            "layer": "xbrl",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "XBRL specification warning ({arelle_code}): {detail}.",
                "ar": "تحذير في مطابقة مواصفات XBRL ({arelle_code}): {detail}."
            },
            "description": "A warning reported by Arelle on the uploaded report.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "XBRL-102",
            "layer": "xbrl",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "The reference validator (Arelle) did not run: {detail}.",
                "ar": "لم يعمل المدقق المرجعي (Arelle): {detail}."
            },
            "description": "Arelle is not configured or did not answer. When XBRL_INTAKE_ARELLE_REQUIRED=true this is an error and the report is not accepted.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_INTAKE_ARELLE_REQUIRED",
            "legacy_codes": []
        },
        {
            "id": "CALC-001",
            "layer": "calculation",
            "severity": "tiered",
            "severity_now": "tiered",
            "message": {
                "en": "{concept} ({period}) = {value}, but its items add up to {sum} (difference {diff}; Calculations 1.1, decimals {decimals}).",
                "ar": "«{concept}» ({period}) = {value} بينما مجموع بنوده {sum} (فرق {diff}؛ Calculations 1.1، decimals {decimals})."
            },
            "description": "A total lies outside the Calculations 1.1 rounding interval of its items (round-to-nearest). FRA policy (XBRL_CALC_POLICY): tiered — an ERROR when the difference exceeds XBRL_CALC_ERROR_THRESHOLD (0.5 %) of the larger of the total and the sum, otherwise a WARNING; \"error\" or \"warning\" apply one severity to all.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Calculations 1.1 (c11r)",
            "configurable_by": "XBRL_CALC_POLICY, XBRL_CALC_ERROR_THRESHOLD",
            "legacy_codes": [
                "calc11.inconsistent"
            ]
        },
        {
            "id": "CALC-002",
            "layer": "calculation",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Assets {value} ≠ liabilities + equity {sum} at {period}.",
                "ar": "إجمالي الأصول {value} لا يساوي الالتزامات + حقوق الملكية {sum} في {period}."
            },
            "description": "The balance-sheet identity (formula assertions FRA_BS_IDENTITY / FRA_BS_IDENTITY_EL), within the rounding interval.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.identity.balanceSheet"
            ]
        },
        {
            "id": "CALC-003",
            "layer": "calculation",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "The members of {axis} for {concept} do not add up to the entity total ({period}).",
                "ar": "مجموع أعضاء {axis} للبند {concept} لا يساوي إجمالي المنشأة ({period})."
            },
            "description": "Segments and insurance classes against the figure without the axis; reconciling items must be explained (IFRS 8.28).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.segments.reconcile",
                "FRA.insuranceClasses.reconcile"
            ]
        },
        {
            "id": "DUP-001",
            "layer": "duplicates",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Inconsistent duplicate facts for {concept} ({period}{dims}): {values}.",
                "ar": "بيانات مكررة غير متسقة للبند {concept} ({period}{dims}): {values}."
            },
            "description": "Numeric duplicates (same concept, period, dimensions, unit) whose values differ once rounded to the least precise decimals. Complete and consistent duplicates are accepted.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XII WGN Duplicate facts (2025-01-14)",
            "configurable_by": null,
            "legacy_codes": [
                "FRA.duplicate.inconsistent"
            ]
        },
        {
            "id": "DUP-002",
            "layer": "duplicates",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Inconsistent duplicate text facts for {concept} ({period}{dims}, language {lang}).",
                "ar": "بيانات نصية مكررة غير متسقة للبند {concept} ({period}{dims}، اللغة {lang})."
            },
            "description": "Non-numeric duplicates (same concept, period, dimensions, language) with different values.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XII WGN Duplicate facts (2025-01-14)",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "DUP-003",
            "layer": "duplicates",
            "severity": "info",
            "severity_now": "info",
            "message": {
                "en": "{count} consistent duplicate facts for {concept} ({period}); accepted.",
                "ar": "{count} بيانات مكررة متسقة للبند {concept} ({period})؛ مقبولة."
            },
            "description": "Complete or consistent duplicates (the more precise value rounds to the less precise one) are allowed.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XII WGN Duplicate facts (2025-01-14)",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-101",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Entity identifier scheme {scheme} is not accepted; use {lei} (LEI) or {license} (FRA licence number).",
                "ar": "مخطط معرّف المنشأة {scheme} غير مقبول؛ استخدم {lei} (LEI) أو {license} (رقم ترخيص الهيئة)."
            },
            "description": "The entity identifier is an LEI (ISO 17442) or the FRA licence number.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Filer manual §3",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-102",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The entity identifier in the report ({id}) does not match the company's FRA licence number or LEI.",
                "ar": "معرّف المنشأة في التقرير ({id}) لا يطابق رقم ترخيص الشركة لدى الهيئة أو رمز LEI."
            },
            "description": "The report must be about the filing company.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-103",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The company profile has no FRA licence number or LEI, so the report's entity identifier cannot be checked. Complete the company profile (licence number or LEI) before filing XBRL.",
                "ar": "ملف الشركة لا يتضمن رقم ترخيص الهيئة ولا رمز LEI، فلا يمكن التحقق من معرّف المنشأة في التقرير. أكمل ملف الشركة (رقم الترخيص أو LEI) قبل الإيداع بصيغة XBRL."
            },
            "description": "The entity check is never skipped: without a licence number or LEI on the profile the report is refused unless the FRA recorded an override for the company.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.entity.identifier"
            ]
        },
        {
            "id": "FRA-104",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The report uses more than one entity identifier: {ids}.",
                "ar": "التقرير يستخدم أكثر من معرّف منشأة: {ids}."
            },
            "description": "Every context of a report identifies the same entity.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-105",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The report does not reference an FRA entry point (schemaRef: {refs}).",
                "ar": "التقرير لا يشير إلى نقطة دخول من تصنيف الهيئة (schemaRef: {refs})."
            },
            "description": "The schemaRef is an FRA entry point fra-{version}-{template}[-ifrs18].xsd, directly or through the filer's extension schema that imports it.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Filer manual §2",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-106",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The report references more than one FRA entry point: {refs}.",
                "ar": "التقرير يشير إلى أكثر من نقطة دخول من تصنيف الهيئة: {refs}."
            },
            "description": "One report, one template, one entry point.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-107",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The FRA taxonomy version {version} referenced by the report is not a published version.",
                "ar": "إصدار تصنيف الهيئة {version} الذي يشير إليه التقرير ليس إصداراً منشوراً."
            },
            "description": "The entry point must belong to a released (or the configured) FRA taxonomy version.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Filer manual §11",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-108",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Invalid period in context {context}: {detail}.",
                "ar": "فترة غير صالحة في السياق {context}: {detail}."
            },
            "description": "Durations start before they end; dates are valid xs:date values.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XBRL 2.1, 4.7.2",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-109",
            "layer": "filing",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "The report's latest period ends in {year}, not in the fiscal year {fiscal_year} chosen for the filing.",
                "ar": "آخر فترة في التقرير تنتهي في {year} وليس في السنة المالية {fiscal_year} المختارة للإيداع."
            },
            "description": "The current period of the report is the filing's fiscal year.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-110",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Monetary fact {concept} uses unit {unit}; monetary amounts use an ISO 4217 currency (iso4217:XXX).",
                "ar": "البند النقدي {concept} يستخدم الوحدة {unit}؛ المبالغ النقدية تستخدم عملة ISO 4217 (iso4217:XXX)."
            },
            "description": "Units: iso4217 currencies for amounts, xbrli:shares for shares, currency/shares for per-share amounts, xbrli:pure for ratios.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Filer manual §3",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-111",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Monetary facts are reported in more than one currency: {units}.",
                "ar": "البنود النقدية مقدَّمة بأكثر من عملة: {units}."
            },
            "description": "A report has one presentation currency.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-112",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Fact {concept} uses the precision attribute; use decimals only.",
                "ar": "البند {concept} يستخدم الخاصية precision؛ استخدم decimals فقط."
            },
            "description": "Numeric facts carry decimals, never precision (as in ESEF).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "Filer manual §3",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-113",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Numeric fact {concept} has no decimals attribute.",
                "ar": "البند الرقمي {concept} بدون الخاصية decimals."
            },
            "description": "Every non-nil numeric fact states its accuracy with decimals.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-114",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Extension element {concept} is not anchored to an IFRS or FRA element (wider-narrower relationship).",
                "ar": "عنصر الامتداد {concept} غير مرتبط (anchoring) بعنصر من IFRS أو تصنيف الهيئة بعلاقة wider-narrower."
            },
            "description": "ESEF-style anchoring: every extension line item is linked in the filer's definition linkbase, with a wider-narrower arc (arcrole http://xbrl.fra.gov.eg/arcrole/wider-narrower or the ESEF one), to an IFRS/FRA element. Domain members are exempt. Severity: XBRL_ANCHORING_SEVERITY.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "ESEF RTS Annex IV §9-§10",
            "configurable_by": "XBRL_ANCHORING_SEVERITY",
            "legacy_codes": []
        },
        {
            "id": "FRA-115",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Extension element {concept} ({type}) is anchored to {anchor} ({anchor_type}), whose data type is not the same or wider.",
                "ar": "عنصر الامتداد {concept} ({type}) مرتبط بالعنصر {anchor} ({anchor_type}) ونوع بياناته ليس مماثلاً ولا أعم."
            },
            "description": "The anchor must have the same data type as the extension element, or one the extension's type is derived from (the extension is the same or narrower).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_ANCHORING_SEVERITY",
            "legacy_codes": []
        },
        {
            "id": "FRA-116",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Element {concept} is not defined by IFRS, the FRA taxonomy or the filing's own extension schema.",
                "ar": "العنصر {concept} غير معرّف في IFRS ولا في تصنيف الهيئة ولا في مخطط امتداد الإيداع."
            },
            "description": "An element in an unknown namespace must be declared in the extension schema shipped in the report package.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-117",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Element {concept} is not in the IFRS {ifrs} or FRA taxonomy, or it is abstract.",
                "ar": "العنصر {concept} غير موجود في تصنيف IFRS {ifrs} أو تصنيف الهيئة، أو أنه مجرد (abstract)."
            },
            "description": "Facts use concrete elements of the referenced taxonomies.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.concept.unknown",
                "FRA.concept.abstract"
            ]
        },
        {
            "id": "FRA-118",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Mandatory report-level fact {concept} is missing.",
                "ar": "البيان الإلزامي على مستوى التقرير {concept} غير موجود."
            },
            "description": "Name of the reporting entity, presentation currency, end of reporting period and level of rounding are mandatory.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.mandatory.missing"
            ]
        },
        {
            "id": "FRA-119",
            "layer": "filing",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "Text block {concept} is not tagged as escaped XHTML (ix:nonNumeric escape=\"true\").",
                "ar": "كتلة النص {concept} غير موسومة كـ XHTML مُهرَّب (ix:nonNumeric escape=\"true\")."
            },
            "description": "Text blocks (notes and policies) keep their formatting: escape=\"true\" in Inline XBRL; a note must use an IFRS text-block element.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.notes.concept"
            ]
        },
        {
            "id": "FRA-120",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Text block {concept} is empty.",
                "ar": "كتلة النص {concept} فارغة."
            },
            "description": "A tagged note or policy must carry its text.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-121",
            "layer": "filing",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "File name {name} does not follow <entity id>-<period end>-<reference> (or does not start with the entity identifier).",
                "ar": "اسم الملف {name} لا يتبع الصيغة <معرّف المنشأة>-<نهاية الفترة>-<المرجع>."
            },
            "description": "Package and report naming convention (filer manual §3, packaging).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-122",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "No figure of the report could be bound to the template {template} for {fiscal_year}.",
                "ar": "لم يُطابَق أي رقم في التقرير مع بنود النموذج {template} للسنة {fiscal_year}."
            },
            "description": "Facts are bound to template fields by element, period and dimension members; a report with no bound figure files nothing.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.facts.none"
            ]
        },
        {
            "id": "FRA-123",
            "layer": "filing",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "{count} tagged elements have no field in the template: {concepts}.",
                "ar": "{count} عنصراً موسوماً ليس له حقل في النموذج: {concepts}."
            },
            "description": "Unmapped facts are reported, never dropped silently (XB-IN-004).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-124",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Two different values are tagged for template field {field} ({period}): {values}.",
                "ar": "قيمتان مختلفتان موسومتان لحقل النموذج {field} ({period}): {values}."
            },
            "description": "Two facts that bind to the same field and period (an element and its IFRS 18/IAS 1 counterpart, or a deprecated element and its replacement) must agree.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-125",
            "layer": "filing",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "The disclosure template could not be determined: the report references no FRA template entry point and none was chosen.",
                "ar": "لم يُحدَّد نموذج الإفصاح: التقرير لا يشير إلى نقطة دخول نموذج من تصنيف الهيئة ولم يُختر نموذج."
            },
            "description": "The template comes from the entry point the report references.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-126",
            "layer": "filing",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "Deprecated elements were read as their replacements: {list}.",
                "ar": "عناصر ملغاة قُرئت بالعناصر البديلة: {list}."
            },
            "description": "Elements deprecated by the binding taxonomy version (filer manual §11).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.concept.deprecated"
            ]
        },
        {
            "id": "FRA-127",
            "layer": "filing",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "{count} dimensional facts (segments, classes of business…) have no field in the template and were not transferred.",
                "ar": "{count} بياناً تفصيلياً بالأبعاد (قطاعات، فروع…) ليس له حقل في النموذج ولم يُنقل."
            },
            "description": "Detail with no template line is reported.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-128",
            "layer": "filing",
            "severity": "info",
            "severity_now": "info",
            "message": {
                "en": "The filing has notes but is outside the block-tagging phase-in.",
                "ar": "الإيداع يتضمن إيضاحات لكنه خارج نطاق مرحلة وسم الإيضاحات."
            },
            "description": "Block tagging phase-in (filer manual §13).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": [
                "FRA.notes.phaseIn"
            ]
        },
        {
            "id": "DQ-001",
            "layer": "data_quality",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "{concept} is reported negative ({value}); this element is not expected to be negative.",
                "ar": "«{concept}» مقدَّم بقيمة سالبة ({value}) وهو بند لا يكون سالباً عادةً — راجع الإشارة."
            },
            "description": "Sign rule after DQC_0015/DQC_0080: assets, liabilities, revenue, inventories, capital… are never negative.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "DQC_0015",
            "configurable_by": null,
            "legacy_codes": [
                "FRA.sign.negative"
            ]
        },
        {
            "id": "DQ-002",
            "layer": "data_quality",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "{concept} = {value} is {ratio} times its comparative {prior} — check the scale (thousands / units).",
                "ar": "«{concept}» = {value} يساوي {ratio} ضعف قيمة المقارنة {prior} — راجع مقياس الأرقام (بالآلاف / بالوحدات)."
            },
            "description": "Likely scale error: a figure about 1,000 times (XBRL_DQ_SCALE_FACTOR or more) its comparative or the reverse.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_DQ_SCALE_FACTOR",
            "legacy_codes": []
        },
        {
            "id": "DQ-003",
            "layer": "data_quality",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "{concept} = {value} is implausibly large (limit {max}).",
                "ar": "«{concept}» = {value} قيمة كبيرة بشكل غير معقول (الحد {max})."
            },
            "description": "Implausible magnitude for any FRA filer (XBRL_DQ_MAX_MONETARY).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_DQ_MAX_MONETARY",
            "legacy_codes": []
        },
        {
            "id": "DQ-004",
            "layer": "data_quality",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "{concept} is a {expected} element but is reported with a {actual} period.",
                "ar": "العنصر {concept} من نوع فترة {expected} لكنه مقدَّم بفترة {actual}."
            },
            "description": "Period type of the element (instant/duration) and of the context must agree.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "XBRL 2.1, 4.7",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "DQ-005",
            "layer": "data_quality",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "{concept} = {value}: a percentage above 1 (100 %) — percentages are tagged as decimal fractions (0.15 for 15 %).",
                "ar": "«{concept}» = {value}: نسبة أكبر من 1 (100٪) — تُوسَم النسب ككسور عشرية (0.15 تعني 15٪)."
            },
            "description": "DQC-style percent rule for percentItemType elements and pure ratios.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": "DQC_0039 pattern",
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "DQ-006",
            "layer": "data_quality",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "{concept} = {value} is not a multiple of 10^{scale} although decimals=\"{decimals}\".",
                "ar": "«{concept}» = {value} ليس من مضاعفات 10^{scale} رغم أن decimals=\"{decimals}\"."
            },
            "description": "A value more precise than its decimals usually means a scale or rounding error.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-001",
            "layer": "business",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Mandatory FRA concept missing: {concept}.",
                "ar": "بند الهيئة الإلزامي غير موجود: {concept}."
            },
            "description": "FRA licence number and sector classification (FRAValidationRules).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-002",
            "layer": "business",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Total assets ≠ current + non-current assets.",
                "ar": "إجمالي الأصول لا يساوي الأصول المتداولة + غير المتداولة."
            },
            "description": "Asset subtotal identity (FRAValidationRules).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-003",
            "layer": "business",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Balance sheet equation violated.",
                "ar": "معادلة الميزانية غير متحققة."
            },
            "description": "Assets = equity + liabilities (FRAValidationRules).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-004",
            "layer": "business",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Total assets cannot be negative.",
                "ar": "لا يجوز أن يكون إجمالي الأصول سالباً."
            },
            "description": "FRAValidationRules.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-005",
            "layer": "business",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Insurance solvency ratio below 100 %.",
                "ar": "نسبة الملاءة المالية للتأمين أقل من 100٪."
            },
            "description": "Insurance sector (FRAValidationRules).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-006",
            "layer": "business",
            "severity": "error",
            "severity_now": "error",
            "message": {
                "en": "Period start must be before period end.",
                "ar": "يجب أن تسبق بداية الفترة نهايتها."
            },
            "description": "FRAValidationRules.",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA-W001",
            "layer": "business",
            "severity": "warning",
            "severity_now": "warning",
            "message": {
                "en": "Carbon offsets insufficient.",
                "ar": "تعويضات الكربون غير كافية."
            },
            "description": "Carbon disclosure rule (FRAValidationRules).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": null,
            "legacy_codes": []
        },
        {
            "id": "FRA_INS_SOLVENCY",
            "layer": "business",
            "severity": "configurable",
            "severity_now": "warning",
            "message": {
                "en": "Solvency ratio {value} % is below the required minimum.",
                "ar": "نسبة الملاءة المالية {value}٪ أقل من الحد الأدنى المقرر."
            },
            "description": "Formula assertion FRA_INS_SOLVENCY (XBRL_SOLVENCY_MINIMUM, XBRL_SOLVENCY_SEVERITY).",
            "effective_from": "2026-10-10",
            "effective_to": null,
            "specification": null,
            "configurable_by": "XBRL_SOLVENCY_SEVERITY",
            "legacy_codes": []
        }
    ]
}