ACE ACE Grammar Engine Arabic Construction Engine
R007 ISOLATED DIAGNOSTIC: LOADED
R006 OPTIONAL: LOADED
MOD-059 — runtime R007/R008/R009 audit

R007: probe callable DEFINED; source /home/b5jrkec8448d/reviewpe_net_public_html/ace/reverse/reverse_functions/ace_pattern_no/new_functions/ace_r007_t_diagnostics_revised_02.php:8

Included: /home/b5jrkec8448d/reviewpe_net_public_html/ace/reverse/reverse_functions/ace_pattern_no/new_functions/ace_r007_t_diagnostics_revised_02.php

R008: probe callable DEFINED; source /home/b5jrkec8448d/reviewpe_net_public_html/ace/reverse/reverse_functions/ace_pattern_no/new_functions/ace_r008_index_diagnostics.php:7

Included: /home/b5jrkec8448d/reviewpe_net_public_html/ace/reverse/reverse_functions/ace_pattern_no/new_functions/ace_r008_index_diagnostics.php
Included: /home/b5jrkec8448d/reviewpe_net_public_html/ace/reverse/reverse_functions/ace_pattern_no/new_functions/ace_r008_full_pattern_guard_revised_01.php

R009: probe callable DEFINED; source /home/b5jrkec8448d/reviewpe_net_public_html/ace/reverse/reverse_functions/ace_pattern_no/new_functions/ace_r009_root_verification.php:9

Included: /home/b5jrkec8448d/reviewpe_net_public_html/ace/reverse/reverse_functions/ace_pattern_no/new_functions/ace_r009_root_verification.php

R008 full-pattern guard: DEFINED.

R007 invocation: controller calls ace_r007_t_diagnostics per analysis group when its diagnostic branch executes.

R008 invocation: MOD-068 uses final R006/R007-compatible pairs; guard requires authoritative expected units. R009 is invoked read-only per derived analysis group (MOD-099); see token diagnostics.

ACE Morphological Analysis — R003

Analyze Qur'anic Surah or Ayah
Quranic passage analysis

Paste one ayah or an entire surah, preserving the original Arabic orthography. The analysis runs on every token in order.

Return to fixture tests

Input: ACE controller Arabic passage | 2 tokens

MOD-111 — Single-token display audit
Token #1: كَفَرَ — 1 display group(s)
Matched
Token #2: يَكْفُرُ — 2 display group(s)
Matched
Matched

← Flashcard view

Token navigation
#1كَفَرَROOT VALIDATED · Record 2252, 2257R008 candidates: 1.1.1Native R008: HYPOTHESISSuffix: َ | Pronoun: | Role: | Stem: كَفَرR009 STRUCTURAL_PASS: 1.1.1 — كفرR009 dictionary 1.1.1: VALIDATED · Record 2252, 2257كفر
Suffixَ
Preserved stemكَفَر
Form.T.Index candidates (MOD-035)1.1.1
R008 finalized index hypotheses (MOD-068; read-only)1.1.1
R009 execution status (MOD-099)STRUCTURAL_PASS
R009 structural passes by address (MOD-099)1.1.1 — STRUCTURAL_PASS — كفر
R008 diagnostic status (MOD-068)HYPOTHESIS
Morphology & segmentation (8 fields)
Root typesurface-test
VoiceUndetermined
Normalized stemكفر
Internal vowelsa · a
Length3
Analysis statusMatched
Analysis token (normalized input)كَفَرَ
Root candidates (all)كفر
Verification & records (7 fields)
Dictionary root statusVALIDATED
Matching record IDs2252, 2257
Root-associated record IDs (legacy verification)2252, 2257
Dictionary root verification explanationExtracted root found in dictionary; no full-token comparison required
Legacy token records tested (no match)0
Legacy token records not testable1
Roots after Form.T.Index (MOD-085; existing candidates)كفر
Rule diagnostics (7 fields)
Legacy R007 (reference only)Legacy R007 isolated
New R007 (isolated diagnostic)R006 Forms: 1; Voice: active-perfect; T: 1; HYPOTHESIS + MOD-043 exact vowel patterns: 1.1
R009 dictionary verification (MOD-103; exact root only)1.1.1 — كفر — VALIDATED — Record 2252, 2257
MOD-105 native R008 statusHYPOTHESIS
MOD-105 native R008 candidates1.1.1
R008 full-pattern guard (MOD-068)accepted=0; rejected=0; unverified=1 (counts reflect R008 hypotheses; authoritative expected_surface_units not supplied)
Structural patternsكفر: three radicals
Extended diagnostics: patterns, traces and source evidence
Competing nominal hypotheses (physical pattern)
1.17.5 — STRUCTURAL HYPOTHESIS
1.20.5 — STRUCTURAL HYPOTHESIS
Nominal accusative fatha; independent of perfect-active suff1. Dictionary validation not implied.
Suffix-family evidence (MOD-032)
suff1: physically detected; full Form/T pattern required
suff3: physically detected; full Form/T pattern required
suff_nouns: physically detected; full Form/T pattern required
ace_nominal_accusative: physically detected; full Form/T pattern required
NDCL / DCL Step Trace (expand)
NDCL-01Exact NDNO MATCHAlternative not matched
NDCL-02Prepend + NDNO MATCHAlternative not matched
NDCL-03ND + AppendNO MATCHAlternative not matched
NDCL-04Prepend + ND + AppendNO MATCHAlternative not matched
DCL-01Token LengthEVIDENCEToken: كَفَرَ; source length field: 3
DCL-02Suffix RemovalEVIDENCEPhysical suffix: َ; families/indices: suff1 [1]; suff3 [1, 4, 7, 13, 14]; suff_nouns [5]; ace_nominal_accusative [5]
DCL-03Length After Suffix RemovalEVIDENCEPreserved stem after suffix removal: كَفَر
DCL-04Length Without VowelsEVIDENCENormalized stem: كفر; reported structural length: 3
DCL-05Root CandidatesEVIDENCERoot candidates: كفر
DCL-06Form CandidatesEVIDENCER006 Form candidates: 1
DCL-07Form IdentifierEVIDENCER006 forms: 1; R007 voice: active-perfect
DCL-08T CategoriesEVIDENCER007 T candidates: 1
DCL-09Person / Declension IndexEVIDENCEActual prefix: (none); compatible Form.T.Index: 1.1.1; prefix-person compatibility applied by MOD-038
DCL-10Dictionary VerificationEVIDENCEDictionary ROOT status: VALIDATED; matching record IDs: 2252, 2257; no full-token validation required
كفر — Base English translation
Record 2257 · to disbelieve; reject; be ungrateful
ACE Structural Diagnostics (actual trace; unique values)
FeatureExisting / trace value
Full Tokenكَفَرَ
R-L — Raw Length (code points including marks)6
R-L — Raw Letter Count3
Suffix Removed (upstream R001/R002)َ
R-U — Preserved Stem (with marks)كَفَر
R-U — Normalized Stemكفر
R-U Length (existing controller)3
Prefix (controller fallback)NOT AVAILABLE
R006 Actual Prefix RemovedNOT AVAILABLE
R006 Actual After PrefixNOT AVAILABLE
R006 Actual Prefix ArithmeticNOT AVAILABLE
R006 Actual Form-Specific Marker RemovedNOT AVAILABLE
R006 Actual After Form RemovalNOT AVAILABLE
R006 Actual Form ArithmeticNOT AVAILABLE
R006 Form-Specific Adjustment RationaleNOT AVAILABLE
F-I — R006 Form Candidates[1]
I-V — Internal Vowels (existing output)NOT AVAILABLE
S-T — Physical Suffix Families["suff1","suff3","suff_nouns","ace_nominal_accusative"]
S-I — Physical Suffix Indices{"suff1":[1],"suff3":[1,4,7,13,14],"suff_nouns":[5],"ace_nominal_accusative":[5]}
P-R — Existing Pattern Evidence{"كفر":{"three radicals":"three radicals"}}
R007 T Candidates[1]
R008 Index (parsed from existing candidates)[1]
R008 Form.T.Index Candidates["1.1.1"]
R008 StatusHYPOTHESIS
R008 Guard Accepted[]
R008 Guard Rejected[]
R008 Guard Unverified[{"address":"1.1.1","r007_consistency":"SUPPORTED AS INDEX HYPOTHESIS","structural_guard":"UNVERIFIED: no complete pattern supplied"}]
Authoritative Full PatternNOT AVAILABLE
Authoritative Full Structural UnitsNOT AVAILABLE
Prefix / S-I Synchronization (existing verdict)NOT AVAILABLE
Read-only. R006 removal rows use only the actual trace captured by R006; no display-only stripping or morphology matching. The suffix-stripped stem is supplied upstream. The R008 index is parsed for display from existing Form.T.Index candidates, not independently recognized. Missing authoritative fields remain NOT AVAILABLE. [] is an observed empty result.
Full token analysis and diagnostic evidence (all fields)
{
    "original_analysis_group": {
        "token_no": 1,
        "token": "كَفَرَ",
        "expected": "",
        "form": "",
        "root_type": "surface-test",
        "voice": "Undetermined",
        "suffix": "َ",
        "pronoun": "",
        "pronoun_role": "",
        "analysis_token": "كَفَرَ",
        "stem": "كَفَر",
        "normalized_stem": "كفر",
        "prefix": "",
        "nominal_prefix": "",
        "nominal_core": "",
        "stem_length": 3,
        "root_candidates": [
            "كفر"
        ],
        "root_patterns": {
            "كفر": {
                "three radicals": "three radicals"
            }
        },
        "findings": {
            "suff1": [
                1
            ],
            "suff3": [
                1,
                4,
                7,
                13,
                14
            ],
            "suff_nouns": [
                5
            ],
            "ace_nominal_accusative": [
                5
            ]
        },
        "status": "Matched"
    },
    "r006": {
        "form_candidates": [
            1
        ],
        "perfect_forms": [
            1
        ],
        "evidence": {
            "1": [
                "I perfect: strong\/doubled stem with suff1"
            ]
        },
        "structural_trace": [],
        "status": "STRUCTURAL HYPOTHESIS"
    },
    "r008": {
        "form_t_index_candidates": [
            "1.1.1"
        ],
        "index_candidates": [
            1
        ],
        "status": "HYPOTHESIS",
        "comments": [],
        "details": [
            {
                "form": 1,
                "t": 1,
                "index": 1,
                "address": "1.1.1",
                "source": "perfect suffix fallback"
            }
        ]
    },
    "mod105_native_r008": {
        "status": "HYPOTHESIS",
        "candidates": [
            "1.1.1"
        ]
    },
    "mod105_controller_retained_sources": [],
    "r009": {
        "original": "كَفَرَ",
        "remaining": "كَفَر",
        "r005_root_candidate": "",
        "root_candidate": "كفر",
        "root_length": 3,
        "accepted_root_candidates": [
            "كفر"
        ],
        "accepted_root_count": 1,
        "rejected_root_candidates": [],
        "rejected_root_count": 0,
        "accepted_details": [
            {
                "address": "1.1.1",
                "form": 1,
                "t": 1,
                "index": 1,
                "expected_radicals": 3,
                "observed_radicals": 3,
                "root_candidate": "كفر",
                "source": "R009 exact full-surface template",
                "prefix": "",
                "introductory": "",
                "structural_body": "كَفَرَ",
                "pattern": "Form I active perfect, full three-radical vocalization",
                "status": "STRUCTURAL_PASS",
                "evidence": [
                    "Form I active perfect, full three-radical vocalization",
                    "No dictionary or conjugator validation"
                ]
            }
        ],
        "rejected_details": [],
        "accepted_roots_by_address": {
            "1.1.1": [
                "كفر"
            ]
        },
        "original_skeleton": "كفر",
        "stem_skeleton": "كفر",
        "addresses": [
            "1.1.1"
        ],
        "details": [
            {
                "address": "1.1.1",
                "form": 1,
                "t": 1,
                "index": 1,
                "expected_radicals": 3,
                "observed_radicals": 3,
                "root_candidate": "كفر",
                "source": "R009 exact full-surface template",
                "prefix": "",
                "introductory": "",
                "structural_body": "كَفَرَ",
                "pattern": "Form I active perfect, full three-radical vocalization",
                "status": "STRUCTURAL_PASS",
                "evidence": [
                    "Form I active perfect, full three-radical vocalization",
                    "No dictionary or conjugator validation"
                ]
            }
        ],
        "status": "STRUCTURAL_PASS",
        "comments": [
            "Accepted roots: كفر; structural verification only, not dictionary or conjugator validation.",
            "Preliminary\/incomplete candidates: 0 row(s); see rejected_details separately."
        ]
    },
    "r009_dictionary_exact_root_mod103": [
        {
            "address": "1.1.1",
            "root": "كفر",
            "status": "VALIDATED",
            "record_ids": [
                "2252",
                "2257"
            ]
        }
    ],
    "r007_text": "R006 Forms: 1; Voice: active-perfect; T: 1; HYPOTHESIS + MOD-043 exact vowel patterns: 1.1",
    "mod035_form_t_index": [
        {
            "code": "1.1.1",
            "form": 1,
            "t": 1,
            "index": 1,
            "family": "suff1",
            "source": "R006 + R007 + physical suffix"
        }
    ],
    "r007_t_candidates": [
        1
    ],
    "r007_voice": "active-perfect",
    "r007_status": "HYPOTHESIS + MOD-043 exact vowel patterns: 1.1",
    "nominal_evidence": "",
    "resolved_findings": [],
    "dictionary_root_verification": {
        "status": "VALIDATED",
        "roots": [
            "كفر"
        ],
        "records": [
            {
                "id": 2252,
                "root": "كفر"
            },
            {
                "id": 2257,
                "root": "كفر"
            }
        ],
        "reason": "Extracted root found in dictionary; no full-token comparison required"
    },
    "legacy_record_verification": {
        "status": "VALIDATED",
        "records": [
            {
                "id": "2257",
                "root": "كفر"
            }
        ],
        "root_records": [
            {
                "id": "2252",
                "root": "كفر"
            },
            {
                "id": "2257",
                "root": "كفر"
            }
        ],
        "roots": [
            "كفر"
        ],
        "reason": "",
        "tested": 0,
        "untestable": 1
    }
}
Dictionary records for candidate roots (2)
Record 2252 · root كفر
{
    "root": "كفر",
    "arabic": "كَفَّرَ",
    "root_type": "triliteral",
    "form": 2,
    "english2": "to cover; to deny; to make someone disbelieve",
    "urdu2": "کفر کرانا؛ چھپانا",
    "verbalnoun217": "تَكْفِير",
    "verbalnoun2": "",
    "verbalnoun3": "",
    "activeparticiple215": "مُكَفِّر",
    "passiveparticiple216": "مُكَفَّر",
    "activepast21": "كَفَّرَ",
    "activeimperfect22": "يُكَفِّرُ",
    "imperative213": "كَفِّرْ",
    "passiveperfect27": "كُفِّرَ",
    "passiveimperfect28": "يُكَفَّرُ",
    "activeheavyemphatic26": "لَيُكَفِّرَنَّ"
}
Record 2257 · root كفر
{
    "root": "كفر",
    "arabic": "كَفَرَ",
    "root_type": "triliteral",
    "form": 1,
    "english": "to disbelieve; reject; be ungrateful",
    "urdu": "کفر کرنا؛ انکار کرنا",
    "verbalnoun117": "كُفْر",
    "verbalnoun2": "كُفْرَان",
    "verbalnoun3": "",
    "activeparticiple115": "كَافِر",
    "passiveparticiple116": "مَكْفُور",
    "activepast11": "كَفَرَ",
    "activeimperfect12": "يَكْفُرُ",
    "imperative113": "اُكْفُرْ",
    "passiveperfect17": "كُفِرَ",
    "passiveimperfect18": "يُكْفَرُ",
    "activeheavyemphatic16": "لَيَكْفُرَنَّ"
}
#2يَكْفُرُROOT VALIDATED · Record 2252, 2257R008 candidates: 1.2.1Native R008: HYPOTHESISSuffix: ُ | Pronoun: | Role: | Stem: يَكْفُرR009 STRUCTURAL_PASS: 1.2.1 — كفرR009 dictionary 1.2.1: VALIDATED · Record 2252, 2257كفر
Suffixُ
Preserved stemيَكْفُر
Form.T.Index candidates (MOD-035)1.2.1
R008 finalized index hypotheses (MOD-068; read-only)1.2.1
R009 execution status (MOD-099)STRUCTURAL_PASS
R009 structural passes by address (MOD-099)1.2.1 — STRUCTURAL_PASS — كفر
R008 diagnostic status (MOD-068)HYPOTHESIS
Morphology & segmentation (9 fields)
Root typesurface-test
VoiceUndetermined
Normalized stemيكفر
Prefixيَ
Internal vowelssukun · u
Length4
Analysis statusMatched
Analysis token (normalized input)يَكْفُرُ
Root candidates (all)كفر
Verification & records (7 fields)
Dictionary root statusVALIDATED
Matching record IDs2252, 2257
Root-associated record IDs (legacy verification)2252, 2257
Dictionary root verification explanationExtracted root found in dictionary; no full-token comparison required
Legacy token records tested (no match)0
Legacy token records not testable1
Roots after Form.T.Index (MOD-085; existing candidates)كفر
Rule diagnostics (7 fields)
Legacy R007 (reference only)Legacy R007 isolated
New R007 (isolated diagnostic)R006 Forms: 1; Voice: active-imperfect; T: 2; HYPOTHESIS
R009 dictionary verification (MOD-103; exact root only)1.2.1 — كفر — VALIDATED — Record 2252, 2257
MOD-105 native R008 statusHYPOTHESIS
MOD-105 native R008 candidates1.2.1
R008 full-pattern guard (MOD-068)accepted=0; rejected=0; unverified=1 (counts reflect R008 hypotheses; authoritative expected_surface_units not supplied)
Structural patternsكفر: prefix + radicals
Extended diagnostics: patterns, traces and source evidence
Suffix-family evidence (MOD-032)
suff2: physically detected; full Form/T pattern required
suff_nouns: physically detected; full Form/T pattern required
NDCL / DCL Step Trace (expand)
NDCL-01Exact NDNO MATCHAlternative not matched
NDCL-02Prepend + NDNO MATCHAlternative not matched
NDCL-03ND + AppendNO MATCHAlternative not matched
NDCL-04Prepend + ND + AppendNO MATCHAlternative not matched
DCL-01Token LengthEVIDENCEToken: يَكْفُرُ; source length field: 4
DCL-02Suffix RemovalEVIDENCEPhysical suffix: ُ; families/indices: suff2 [1, 4, 7, 13, 14]; suff_nouns [4]
DCL-03Length After Suffix RemovalEVIDENCEPreserved stem after suffix removal: يَكْفُر
DCL-04Length Without VowelsEVIDENCENormalized stem: يكفر; reported structural length: 4
DCL-05Root CandidatesEVIDENCERoot candidates: كفر
DCL-06Form CandidatesEVIDENCER006 Form candidates: 1
DCL-07Form IdentifierEVIDENCER006 forms: 1; R007 voice: active-imperfect
DCL-08T CategoriesEVIDENCER007 T candidates: 2
DCL-09Person / Declension IndexEVIDENCEActual prefix: يَ; compatible Form.T.Index: 1.2.1; prefix-person compatibility applied by MOD-038
DCL-10Dictionary VerificationEVIDENCEDictionary ROOT status: VALIDATED; matching record IDs: 2252, 2257; no full-token validation required
كفر — Base English translation
Record 2257 · to disbelieve; reject; be ungrateful
ACE Structural Diagnostics (actual trace; unique values)
FeatureExisting / trace value
Full Tokenيَكْفُرُ
R-L — Raw Length (code points including marks)8
R-L — Raw Letter Count4
Suffix Removed (upstream R001/R002)ُ
R-U — Preserved Stem (with marks)يَكْفُر
R-U — Normalized Stemيكفر
R-U Length (existing controller)4
R006 Actual Prefix Removedيَ
R006 Actual After Prefixكْفُر
R006 Actual Prefix Arithmetic4 − 1 = 3 (يَ)
R006 Actual Form-Specific Marker RemovedNone
R006 Actual After Form Removalكْفُر
R006 Actual Form Arithmetic3 − 0 = 3
R006 Form-Specific Adjustment RationaleForm I imperfect: remove the matched person prefix; no Form-specific marker.
F-I — R006 Form Candidates[1]
I-V — Internal Vowels (existing output)NOT AVAILABLE
S-T — Physical Suffix Families["suff2","suff_nouns"]
S-I — Physical Suffix Indices{"suff2":[1,4,7,13,14],"suff_nouns":[4]}
P-R — Existing Pattern Evidence{"كفر":{"prefix + radicals":"prefix + radicals"}}
R007 T Candidates[2]
R008 Index (parsed from existing candidates)[1]
R008 Form.T.Index Candidates["1.2.1"]
R008 StatusHYPOTHESIS
R008 Guard Accepted[]
R008 Guard Rejected[]
R008 Guard Unverified[{"address":"1.2.1","r007_consistency":"SUPPORTED AS INDEX HYPOTHESIS","structural_guard":"UNVERIFIED: no complete pattern supplied"}]
Authoritative Full PatternNOT AVAILABLE
Authoritative Full Structural UnitsNOT AVAILABLE
Prefix / S-I Synchronization (existing verdict)NOT AVAILABLE
Read-only. R006 removal rows use only the actual trace captured by R006; no display-only stripping or morphology matching. The suffix-stripped stem is supplied upstream. The R008 index is parsed for display from existing Form.T.Index candidates, not independently recognized. Missing authoritative fields remain NOT AVAILABLE. [] is an observed empty result.
Full token analysis and diagnostic evidence (all fields)
{
    "original_analysis_group": {
        "token_no": 2,
        "token": "يَكْفُرُ",
        "expected": "",
        "form": "",
        "root_type": "surface-test",
        "voice": "Undetermined",
        "suffix": "ُ",
        "pronoun": "",
        "pronoun_role": "",
        "analysis_token": "يَكْفُرُ",
        "stem": "يَكْفُر",
        "normalized_stem": "يكفر",
        "prefix": "يَ",
        "nominal_prefix": "",
        "nominal_core": "",
        "stem_length": 4,
        "root_candidates": [
            "كفر"
        ],
        "root_patterns": {
            "كفر": {
                "prefix + radicals": "prefix + radicals"
            }
        },
        "findings": {
            "suff2": [
                1,
                4,
                7,
                13,
                14
            ],
            "suff_nouns": [
                4
            ]
        },
        "status": "Matched"
    },
    "r006": {
        "form_candidates": [
            1
        ],
        "perfect_forms": [],
        "evidence": {
            "1": [
                "I imperfect: person prefix + strong\/hollow template"
            ]
        },
        "structural_trace": {
            "1": [
                {
                    "source": "R006 primary suffix-stripped stem",
                    "matched_form": 1,
                    "matched_pattern": "I imperfect: person prefix + three-radical strong\/hollow template",
                    "stem_input": "يَكْفُر",
                    "physical_suffix_input": "ُ",
                    "full_input": "يَكْفُرُ",
                    "prefix_removed": "يَ",
                    "after_prefix": "كْفُر",
                    "form_marker_removed": "None",
                    "after_form_marker": "كْفُر",
                    "prefix_letter_count": 1,
                    "after_prefix_unit_count": 3,
                    "form_marker_letter_count": 0,
                    "remaining_letter_count": 3,
                    "form_marker_kind": "Form I imperfect: no derivational marker"
                }
            ]
        },
        "status": "STRUCTURAL HYPOTHESIS"
    },
    "r008": {
        "form_t_index_candidates": [
            "1.2.1"
        ],
        "index_candidates": [
            1
        ],
        "status": "HYPOTHESIS",
        "comments": [],
        "details": [
            {
                "form": 1,
                "t": 2,
                "index": 1,
                "address": "1.2.1",
                "source": "conservative imperfect ending fallback + imperfect person prefix ي"
            }
        ]
    },
    "mod105_native_r008": {
        "status": "HYPOTHESIS",
        "candidates": [
            "1.2.1"
        ]
    },
    "mod105_controller_retained_sources": [],
    "r009": {
        "original": "يَكْفُرُ",
        "remaining": "يَكْفُر",
        "r005_root_candidate": "",
        "root_candidate": "كفر",
        "root_length": 3,
        "accepted_root_candidates": [
            "كفر"
        ],
        "accepted_root_count": 1,
        "rejected_root_candidates": [],
        "rejected_root_count": 0,
        "accepted_details": [
            {
                "address": "1.2.1",
                "form": 1,
                "t": 2,
                "index": 1,
                "expected_radicals": 3,
                "observed_radicals": 3,
                "root_candidate": "كفر",
                "source": "R009 exact full-surface template",
                "prefix": "",
                "introductory": "",
                "structural_body": "يَكْفُرُ",
                "pattern": "Form I active imperfect, indicative 3ms",
                "status": "STRUCTURAL_PASS",
                "evidence": [
                    "Form I active imperfect, indicative 3ms",
                    "No dictionary or conjugator validation"
                ]
            }
        ],
        "rejected_details": [],
        "accepted_roots_by_address": {
            "1.2.1": [
                "كفر"
            ]
        },
        "original_skeleton": "يكفر",
        "stem_skeleton": "يكفر",
        "addresses": [
            "1.2.1"
        ],
        "details": [
            {
                "address": "1.2.1",
                "form": 1,
                "t": 2,
                "index": 1,
                "expected_radicals": 3,
                "observed_radicals": 3,
                "root_candidate": "كفر",
                "source": "R009 exact full-surface template",
                "prefix": "",
                "introductory": "",
                "structural_body": "يَكْفُرُ",
                "pattern": "Form I active imperfect, indicative 3ms",
                "status": "STRUCTURAL_PASS",
                "evidence": [
                    "Form I active imperfect, indicative 3ms",
                    "No dictionary or conjugator validation"
                ]
            }
        ],
        "status": "STRUCTURAL_PASS",
        "comments": [
            "Accepted roots: كفر; structural verification only, not dictionary or conjugator validation.",
            "Preliminary\/incomplete candidates: 0 row(s); see rejected_details separately."
        ]
    },
    "r009_dictionary_exact_root_mod103": [
        {
            "address": "1.2.1",
            "root": "كفر",
            "status": "VALIDATED",
            "record_ids": [
                "2252",
                "2257"
            ]
        }
    ],
    "r007_text": "R006 Forms: 1; Voice: active-imperfect; T: 2; HYPOTHESIS",
    "mod035_form_t_index": [
        {
            "code": "1.2.1",
            "form": 1,
            "t": 2,
            "index": 1,
            "family": "suff2",
            "source": "R006 + R007 + physical suffix"
        }
    ],
    "r007_t_candidates": [
        2
    ],
    "r007_voice": "active-imperfect",
    "r007_status": "HYPOTHESIS",
    "nominal_evidence": "",
    "resolved_findings": [],
    "dictionary_root_verification": {
        "status": "VALIDATED",
        "roots": [
            "كفر"
        ],
        "records": [
            {
                "id": 2252,
                "root": "كفر"
            },
            {
                "id": 2257,
                "root": "كفر"
            }
        ],
        "reason": "Extracted root found in dictionary; no full-token comparison required"
    },
    "legacy_record_verification": {
        "status": "VALIDATED",
        "records": [
            {
                "id": "2257",
                "root": "كفر"
            }
        ],
        "root_records": [
            {
                "id": "2252",
                "root": "كفر"
            },
            {
                "id": "2257",
                "root": "كفر"
            }
        ],
        "roots": [
            "كفر"
        ],
        "reason": "",
        "tested": 0,
        "untestable": 1
    }
}
Dictionary records for candidate roots (2)
Record 2252 · root كفر
{
    "root": "كفر",
    "arabic": "كَفَّرَ",
    "root_type": "triliteral",
    "form": 2,
    "english2": "to cover; to deny; to make someone disbelieve",
    "urdu2": "کفر کرانا؛ چھپانا",
    "verbalnoun217": "تَكْفِير",
    "verbalnoun2": "",
    "verbalnoun3": "",
    "activeparticiple215": "مُكَفِّر",
    "passiveparticiple216": "مُكَفَّر",
    "activepast21": "كَفَّرَ",
    "activeimperfect22": "يُكَفِّرُ",
    "imperative213": "كَفِّرْ",
    "passiveperfect27": "كُفِّرَ",
    "passiveimperfect28": "يُكَفَّرُ",
    "activeheavyemphatic26": "لَيُكَفِّرَنَّ"
}
Record 2257 · root كفر
{
    "root": "كفر",
    "arabic": "كَفَرَ",
    "root_type": "triliteral",
    "form": 1,
    "english": "to disbelieve; reject; be ungrateful",
    "urdu": "کفر کرنا؛ انکار کرنا",
    "verbalnoun117": "كُفْر",
    "verbalnoun2": "كُفْرَان",
    "verbalnoun3": "",
    "activeparticiple115": "كَافِر",
    "passiveparticiple116": "مَكْفُور",
    "activepast11": "كَفَرَ",
    "activeimperfect12": "يَكْفُرُ",
    "imperative113": "اُكْفُرْ",
    "passiveperfect17": "كُفِرَ",
    "passiveimperfect18": "يُكْفَرُ",
    "activeheavyemphatic16": "لَيَكْفُرَنَّ"
}

MOD-014 display consolidation: 1 equivalent R004 rows hidden; raw R004/R001-R003 candidates preserved. Different root, family/index, pronoun role, or R006/R007 results remain separate.

R010 — Dictionary Root Review Queue (MOD-033)

Read-only root lookup. Morphological Form/T/index verification is separate. No dictionary files modified.