# PANEL REVIEW — P17 D1: THE CONSENSUS METHOD AND THE FATIHA SET

**Window:** OP27 (Opus, quality seat)  
**Date:** 2026-09-02  
**Mission file:** 10-WAQF/fleet/missions/OP27.txt  
**Corpus:** 10-WAQF/build/P17-TAFSIR/D1/ — 7 consensus JSON files, SOURCES.md, build scripts, selftest  
**Shard verified against:** 00-CORPUS/tafsir_shards/1.json  

---

## VERDICT

> ### 🔴 FIX-FIRST
>
> **Blocking finding:** HX2 (consensus_1_2.json) has a systematic deduplication failure in
> the CLUSTER pass. Three clusters carry inflated `n` values — editions counted per-claim
> rather than per-edition. No threshold verdict changes (all three remain
> `consensus-documented`), but `n` is a documentary fact and must be accurate before
> any output citing 1:2 cluster counts is published.
>
> **Fix scope:** 1:2 only. Rebuild consensus_1_2.json with the deduplication guard from
> OP22's build_consensus_1_5.py (`if edition_id not in cluster_editions[cid]`). All
> other ayat (1:1, 1:3, 1:4, 1:5, 1:6, 1:7) are SEAL.

---

## SEAT 1 — MUFASSIR (LEAD): SHARD VERIFICATION

**Task:** Sample-verify 5 required elements — does each cited edition actually assert the
claim in the shard text?

### Shard structure confirmed

```
1:1 → 26 editions (Sunni only)
1:2 → 27 editions (Sunni only; hilalikhan_en present)
1:3 → 25 editions (Sunni only; Shia + usmani_ur absent)
1:4 → 26 editions (Sunni only)
1:5 → 26 editions in shard (Sunni); 5 Shia from separate tafsir_shia_aligned.json
1:6 → 26 editions (Sunni only; hilalikhan_en present)
1:7 → 28 editions (Sunni only; tazkirul_en + tazkir_ur added)
```

### 5 verification targets

| # | Ayah | Edition | Cluster | Shard chars | Finding |
|---|------|---------|---------|-------------|---------|
| V1 | 1:1 | tabari | basmala-formula | 35,507 | ✅ VERIFIED |
| V2 | 1:2 | razi | hamd-definition | 55,842 | ✅ VERIFIED |
| V3 | 1:4 | tabari | yawm-al-din-recompense | 21,508 | ✅ VERIFIED |
| V4 | 1:5 | baghawi | CL-09-division-hadith | 28,669 | ✅ VERIFIED |
| V5 | 1:7 | tabari | CL-01-an'amta-four-categories | 38,542 | ✅ VERIFIED |

**V1 detail — 1:1 / tabari / basmala-formula:**
Shard text contains "بسم الله" 10 times. The text reads: *"له 'بسم الله'، وأنه أراد بقِيلِه 'بسم الله'، أقوم باسم الله، وأقعد باسم الله"* — tabari's full discussion of the basmala formula as an act-naming invocation is present. The claimed formula discussion is directly attested.

**V2 detail — 1:2 / razi / hamd-definition:**
Shard is 55,842 chars of fully-vocalized Arabic (harakat throughout). The text opens explicitly: *"في تَفْسِيرِ قَوْلِهِ تَعالى: ﴿الحَمْدُ لِلَّهِ﴾ وفِيهِ وُجُوهٌ: الأوَّلُ: هاهُنا ألْفاظٌ ثَلاثَةٌ: الحَمْدُ والمَدْحُ والشُّكْرُ"* — Commentary on ﴾الحَمْدُ لِلَّهِ﴿ leading immediately into the distinction between hamd, madh, and shukr. Claim is directly attested. Note: razi's shard uses full tashkeel, so bare-keyword search requires diacritics — reader tools must account for this.

**V3 detail — 1:4 / tabari / yawm-al-din-recompense:**
"الدين" appears 25 times. The text reads explicitly: *"أن لله المُلْك يوم الدين خالصًا دون جميع خلقه"* — the sovereignty on the Day of Recompense belongs to Allah ﷻ alone, exclusively, apart from all His creation. The n=26 universal attestation is consistent with this being the ayah's most foundational claim. Directly attested.

**V4 detail — 1:5 / baghawi / CL-09-division-hadith:**
"مسلم" appears 4 times. The text includes: *"وهو عند مسلم في الصلاة برقم (٣٩٩)"* — an explicit citation to Sahih Muslim, the Salah chapter, hadith number 399 — the division-hadith. The claim that baghawi attests this hadith is directly confirmed. The honesty note that baghawi's entry begins with surah introduction is also confirmed (the basmala section precedes the division-hadith citation).

**V5 detail — 1:7 / tabari / CL-01-an'amta-four-categories:**
"النبيين" appears 1 time. The text reads: *"طَريقَ من أنعمتَ عليهم بطاعتك وعبادتك من الملائكة والنبيين والصديقين والشهداء والصالحين، الذين أطاعوك وعبَدُوك"* — the four categories (angels, prophets, siddiqin, martyrs, righteous) are named explicitly as the referents of "those upon whom You bestowed favor." Directly attested. Note: the cluster label correctly omits angels (the dominant scholarly reading identifies the four human categories from Q4:69), and tabari's version includes them — this is a one-edition detail correctly not inflating the cluster label.

**Mufassir seat conclusion:** 5/5 verified ✅. The cited editions do assert the claimed content in the shard texts. The corpus is grounded in real shard data.

---

## SEAT 2 — USULI: THRESHOLD AND POSTURE REVIEW

### 2.1 Threshold soundness (≥3 editions for consensus-documented)

All 56 required elements across 7 ayat have n ≥ 3 in the gated output. After deduplication
correction (see §2.3), the affected clusters remain above threshold:

| Ayah | Required elements | Min n | Max n | Threshold |
|------|-------------------|-------|-------|-----------|
| 1:1 | 7 | 3 | 18 | 3 ✅ |
| 1:2 | 7 | 4* | 15* | 3 ✅ (see §2.3) |
| 1:3 | 7 | 3 | 19 | 3 ✅ |
| 1:4 | 7 | 3 | 26 | 3 ✅ |
| 1:5 | 10 | 4 | 27 | 3 ✅ |
| 1:6 | 8 | 3 | 20 | 3 ✅ |
| 1:7 | 8 | 3 | 16 | 3 ✅ |

*After deduplication: 1:2 CL-01 corrected n=3, CL-02 corrected n=14, CL-05 corrected n=4 — all still ≥ 3.

The GATE pass is mechanically correct: every cluster in `required_elements` has n ≥ THRESHOLD
and every cluster in `clusters` but not in `required_elements` has n < THRESHOLD. Sub-threshold
clusters are labeled `SINGLE-SOURCE` and excluded from the required record.

### 2.2 Unclustered-differences posture

The no-adjudication principle holds throughout:

- **1:3 basmala-verse debate**: Tabari's minority position (basmala is NOT a verse of al-Fatihah)
  is documented as a SINGLE-SOURCE cluster. It is not suppressed, not adjudicated, not promoted.
  The engine records that one edition holds this position. ✅

- **1:4 malik/maalik qiraah**: Both readings documented under CL-02 (n=9, consensus-documented)
  as an observed debate among the tradition. No resolution issued. ✅

- **1:7 razi alternative maghdhub reading**: Razi's broader interpretation (maghdhub = all
  who err in deeds/belief, not only Jews) is documented alongside the majority position.
  The honesty note explicitly records this. No adjudication. ✅

- **1:5 CL-04-refutes-qadariyya (SINGLE-SOURCE, n=2)**: Two editions attest — tabari (Sunni)
  and nurthaq (Imam Ja'far tradition, Shia). Below threshold of 3, correctly labeled
  SINGLE-SOURCE. The two-tradition character is noted in honesty_notes. The engine applies
  threshold consistently regardless of tradition boundary. This is principled — the threshold
  is edition-count, not importance-count. ✅

### 2.3 Deduplication failure in HX2 — BLOCKING FINDING

**Finding:** consensus_1_2.json contains inflated n values in 3 clusters due to a missing
deduplication guard in HX2's CLUSTER pass.

| Cluster | Reported n | Unique editions | Duplicate entry |
|---------|-----------|-----------------|----------------|
| CL-01-hamd-definition | 5 | 3 | razi ×3 |
| CL-02-hamd-exclusive-allah | 15 | 14 | zilal_ur ×2 |
| CL-05-hadith-servant-praised | 5 | 4 | qurtubi ×2 |

**Root cause:** HX2 iterates per-claim rather than per-edition when building
`cluster_editions`. If an edition contributes 3 claims to the same cluster, it appears
3 times in `attesting_editions`. The OP22 build script (build_consensus_1_5.py) has the
correct guard:

```python
if edition_id not in cluster_editions[cid]:   # <-- deduplication
    cluster_editions[cid].append(edition_id)
```

HX2 did not implement this guard. The 1:5 builder's own selftest (test_consensus_1_5.py)
enforces the `editions_read` membership check but not within-cluster deduplication —
meaning the test suite did not catch this failure mode in HX2.

**Impact on verdicts:** None — after deduplication CL-01 n=3 (meets threshold), CL-02
n=14 (meets threshold), CL-05 n=4 (meets threshold). No cluster changes status.

**Impact on the record:** Significant. The `n` field is a documentary fact cited in the
consensus record. Reporting n=5 when 3 unique editions attest is a false count that would
propagate to any publication output. This must be corrected before 1:2 data is published.

**Fix:** Rebuild consensus_1_2.json using the OP22 deduplication pattern. No other changes
to the 1:2 data are required.

### 2.4 Corpus gap: Shia coverage

Only 1:5 has Shia edition coverage (5 editions from tafsir_shia_aligned.json). All other
ayat have zero Shia attestation, confirmed by the `editions_in_shard.shia: []` field.

This is a corpus limitation, not a methodology gap. The no-adjudication posture means
Shia coverage is additive. All 7 honesty_notes explicitly document the absence. The engine
handles Shia editions via separate architecture (tafsir_shia_aligned.json) consistently
with the SOURCES.md design. ✅

### 2.5 Abbreviated shard entries

Three editions have materially limited shard text:

- **ibnkathir_ar (1:1)**: `اختُصِرَ كلام المؤلف` — corpus abbreviation documented.
- **ibnkathir_en (1:4)**: 143 chars (header only). Single claim extracted correctly.
- **hilalikhan_en (1:6)**: Brief cross-reference only. Assigned to CL-07 as SINGLE-SOURCE.

All three are transparently documented in honesty_notes. The engine does not inflate these
entries. ✅

### 2.6 Parallel-text editions (1:7)

tazkirul_en and tazkir_ur are parallel English/Urdu texts (Wahiduddin Khan). Both are
counted as separate editions per the shard schema and per SOURCES.md. This is a structural
feature of the corpus, consistently applied. If parallel-text double-counting is a concern
for documentary purposes, it should be addressed at the SOURCES.md level, not by this
engine. Noted but not a blocking finding. ✅

---

## SEAT 3 — ADAB: RAW-PATTERN SWEEP

### 3.1 Automated sweep result

The adab_violations field is `[]` in all 7 JSON files. The OP22 build script runs
`exalt()` (auto-exaltation) and `sweep()` (violation detection) via
`10-WAQF/framework/adab_scan.py`. This is confirmed for 1:5 by reading the build script
directly.

### 3.2 Spot-check of claim texts (non-OP22 builders)

Manual spot-check of claim texts in the 5 verified editions:

| Instance | Check | Result |
|----------|-------|--------|
| "Allah ﷻ" in all 7 files | exaltation present | ✅ |
| "Abu Hurayrah رضي الله عنه" in 1:2 baghawi honesty note | companion radiyallahu confirmed | ✅ |
| "Sahih Muslim (via Abu Hurayrah رضي الله عنه)" in 1:5 ibnkathir_ar claim | companion radiyallahu confirmed | ✅ |
| "Ibn Abbas رضي الله عنه" in 1:5 ibnkathir_ur claim | companion radiyallahu confirmed | ✅ |
| "Muhammad ﷺ" in 1:5 cluster label CL-09 | sallallahu 'alayhi wa sallam present | ✅ |
| "Messenger ﷺ" in 1:5 CL-14-ibadah-conditions | sallallahu 'alayhi wa sallam present | ✅ |
| "Imam Ja'far عليه السلام" — check 1:5 nurthaq claim | claim text uses "Imam Ja'far tradition" (no 'alayhi as-salam in claim text) | ⚠️ NOTE |

**Note on Imam Ja'far in 1:5 honesty_notes:** The honesty_notes entry reads
`"nurthaq Imam Ja'far tradition"` — Imam Ja'far al-Sadiq عليه السلام is named without
his salutation in the meta note. This is in `_meta.honesty_notes`, not in a `claim_text`
field. The adab_scan sweeps the full JSON object; if the scanner matches "Imam Ja'far"
without عليه السلام as a violation, it would have flagged it. The violations field is [].
This is either (a) the scanner does not pattern-match for Imam names (focused on Allah ﷻ
and Prophet ﷺ patterns), or (b) the scanner does not sweep honesty_notes strings. The
mission ADAB LAW applies to "every string you output" — this string does not appear in OP27's
output, so it is not OP27's violation. However, future builds should include the 'alayhi
as-salam salutation when naming Imam Ja'far in any field. Logged as a non-blocking note.

### 3.3 Arabic verbatim compliance

All 7 JSON files carry an `arabic_verbatim_source` note (or equivalent in `_meta`) citing
`00-CORPUS/quran.json key <ayah> field uthmani ✅ VERIFIED`. The VERBATIM LAW requires all
Arabic text to be copied programmatically, never retyped. The build script for 1:5
confirms this: `ARABIC_VERBATIM = ayah_row["uthmani"]` — sourced from quran.json, not
typed. The selftest `C2` check confirms `arabic_verbatim == quran.json` value. ✅

### 3.4 Adab seat conclusion

Automated sweep: clean. Spot-check: clean. One non-blocking note on Imam Ja'far salutation
in honesty_notes metadata. No adab violations in OP27's output.

---

## FINDINGS SUMMARY

| # | Seat | Finding | Ayah | Severity | Status |
|---|------|---------|------|----------|--------|
| F1 | Usuli | HX2 CLUSTER pass lacks deduplication; 3 clusters have inflated n values (CL-01 n=5→3, CL-02 n=15→14, CL-05 n=5→4) | 1:2 | **BLOCKING** | FIX-FIRST |
| F2 | Mufassir | razi 1:2 shard uses full tashkeel (vocalized Arabic); bare-keyword search tools will silently miss content | 1:2 | Note | Non-blocking |
| F3 | Usuli | CL-04-refutes-qadariyya (1:5): n=2, two-tradition attestation below threshold — correctly SINGLE-SOURCE, but editorial significance noted | 1:5 | Note | Non-blocking |
| F4 | Usuli | tazkirul_en / tazkir_ur (1:7): parallel texts counted as 2 editions — SOURCES.md decision, not an engine error | 1:7 | Note | Non-blocking |
| F5 | Adab | Imam Ja'far named in 1:5 honesty_notes without عليه السلام salutation | 1:5 | Note | Non-blocking |
| F6 | Usuli | Selftest (test_consensus_1_5.py) does not check within-cluster deduplication — allowed HX2's F1 to pass undetected | Cross | Structural | Fix recommended |

---

## FIX SPECIFICATION

### FIX-FIRST F1: Rebuild consensus_1_2.json with deduplication guard

**File to fix:** 10-WAQF/build/P17-TAFSIR/D1/consensus_1_2.json (via its build script)

**Change required in HX2 build script (or equivalent):**

```python
# BEFORE (broken — counts claims, not unique editions):
cluster_editions[cid].append(edition_id)

# AFTER (correct — deduplicates editions per cluster):
if edition_id not in cluster_editions[cid]:
    cluster_editions[cid].append(edition_id)
```

**Expected post-fix values:**

| Cluster | Current n | Correct n | Status after fix |
|---------|-----------|-----------|-----------------|
| CL-01-hamd-definition | 5 | 3 | consensus-documented (unchanged) |
| CL-02-hamd-exclusive-allah | 15 | 14 | consensus-documented (unchanged) |
| CL-05-hadith-servant-praised | 5 | 4 | consensus-documented (unchanged) |

**All other clusters in 1:2:** unaffected.  
**All other ayat (1:1, 1:3, 1:4, 1:5, 1:6, 1:7):** unaffected — SEAL.

### Fix recommended F6: Add within-cluster deduplication check to selftest

The selftest should assert that for every cluster, `len(attesting_editions) == len(set(attesting_editions))`. This would have caught F1 before the wave closed.

---

## CORPUS STRENGTHS NOTED

The following represent the consensus engine working as intended and should be preserved
in all future builds:

1. **4-pass pipeline discipline**: The extract → cluster → gate sequence is clean and
   auditable. The build script is human-readable evidence of the method.

2. **Threshold consistency**: ≥3 applied uniformly — no exceptions for "important" claims
   below threshold, no suppression of minority positions above threshold.

3. **Honesty notes quality**: All 7 ayat carry substantive honesty_notes documenting
   corpus limitations (abbreviated entries, Shia gaps, parallel texts). This is
   intellectual integrity built into the corpus architecture.

4. **No-adjudication enforcement**: Debates preserved as parallel positions across all
   examined cases (basmala-verse, malik/maalik, razi alternative maghdhub reading). The
   engine records what the tradition said; it does not rule on who is right.

5. **Adab automation**: The `adab_scan.sweep() / exalt()` pipeline catches and auto-corrects
   exaltation gaps at build time. The violations field being [] is a build-time guarantee,
   not a post-hoc assertion.

6. **Prove-fail mode**: The build script's `--prove-fail` flag and the corresponding
   selftest check (C7 in test_consensus_1_5.py) demonstrate that the threshold gate
   actually fires when editions are removed. This is methodological proof-of-life.

---

## POST-FIX READINESS

After F1 is applied (consensus_1_2.json rebuilt with deduplication guard) and confirmed
by re-running the equivalent of test_consensus_1_5.py for 1:2:

**All 7 ayat → SEAL**  
**56 required elements → documentary grade**  
**P17 D1 → ready for integration**

---

*Panel complete. OP27 signing off.*  
*Window: OP27 | Seat: Opus quality | Date: 2026-09-02*

---

## INTEGRATOR ADJUDICATION — 2 Sep 2026, window Fable (integrator seat)
The 1:2 deduplication defect APPLIED: every cluster's n recomputed as the
count of DISTINCT attesting editions (the panel's diagnosis exact — counts
were per-claim inflated); verdicts unchanged, post-check zero drift. The
other six ayat accepted as SEAL per the Mufassir's shard verification.
**The consensus method + the Fatiha set: SEALED.**
