# PANEL P40 — SEAT PX1 — OCEAN & RIJĀL

**Seat**: PX1 · MACHINE-SCHOLAR, labeled. Review only; nothing written outside this file and the done-flag.
**Laws applied**: `10-WAQF/skills/deep-audit/SKILL.md` (22 laws).
**Scope**: P34 (`build/P34-OCEAN`) · P33 (`build/P33-RIJAL`) · W-A v2 (33,868) · waves 7–8 seals.
**Method**: every headline number RE-DERIVED by an independently written probe against the sealed
sources — never by re-running the engine and reading its own print. Sampled rows were OPENED.
Probes: `scratchpad/{ocean_census,rederive_p34,p34_open,p34_quant,p33_reprobe,p33_struct,wa_rederive,wa_112b,wave7_rederive,wave8_delta}.py`.

---

## VERDICT

**The arithmetic is sound. The interpretation on top of it is not.**

Every one of the three P34 headline numbers, all five P33 entry counts, and all three W-A v2 numbers
re-derived **exactly** — to the row. The max-413 verse is real and I content-gated all 413 of its rows
against the sealed corpus. That is a genuinely strong result and it should be said plainly first.

But four claims that ride on those numbers do not survive contact with the data:

1. **`cross_tradition_echo_clusters: 2272` is false by a factor of ~757.** The true Sunnī↔Shīʿī count
   is **2**. 2,269 of the 2,272 are same-tradition clusters (Musnad Aḥmad ↔ the Six Books, and
   Istibṣār/Tahdhīb ↔ the Shīʿī base) miscounted as cross-tradition by a tag-splitting bug.
2. **The published `top_clusters` table is 40% artefact** — its #1 entry is an isnād-tail formula
   holding ten *unrelated* reports, and its #4 entry is nine rows of `"To be added"` and OpenITI
   file headers.
3. **P33's `entries` field is a paragraph count whose error direction flips between works** and is
   declared for only one of the five. Ibn Ḥibbān's *Thiqāt* is undercounted **17×**; *Majrūḥīn* is
   **over**counted 2×.
4. **"Wave 8 — reserve fully earned" rests on an acquisition that was never scanned.** I ran the
   LAW-20 delta test the build did not: Adab al-Mufrad answers **0** invitation verses.

Separately, and decisive for a *seal-gating* panel: **none of the four layers under review appears in
any seal manifest.** The newest manifest is two build-eras stale.

None of this is fabrication. The engines compute what they claim to compute; the corpus is real and
the seals verify. The failures are in **labelling and in the gates that were never run** — which is
exactly the failure class the deep-audit laws exist to catch.

---

## NUMBERED FINDINGS

### F1 — `cross_tradition_echo_clusters: 2272` is false; the true value is 2 · **BLOCKER**

**File**: `framework/p34_matn_dedup.py:53-54` → `build/P34-OCEAN/matn_dedup_layer.json` (`totals`)

```python
xcorp = sum(1 for v in clusters.values() if len({t.split("-")[0] if "-" in t else t for t, _, _ in v}) > 1 or
            ({"base-sunni", "wave3"} & {t for t, _, _ in v} and {"base-shia", "wave1"} & {t for t, _, _ in v}))
```

The four corpus tags are `base-sunni`, `base-shia`, `wave1`, `wave3`. The **first disjunct** maps
`base-sunni`→`base` and `base-shia`→`base`, but leaves `wave1`→`wave1` and `wave3`→`wave3`. So any
cluster spanning `base-sunni` and `wave3` — i.e. the Six Books and **Musnad Aḥmad, both Sunnī** —
scores as "cross-tradition". Likewise `base-shia` + `wave1` (Istibṣār/Tahdhīb, both Shīʿī).
The second disjunct is the correct test and is redundant against the first.

**Evidence** — re-derived cluster tag-sets:

| tag-set of the cluster | counted as "cross" | actually cross-tradition? |
|---|---:|---|
| `base-shia + wave1` | 1,423 | ❌ Shīʿī ↔ Shīʿī |
| `base-sunni + wave3` | 846 | ❌ Sunnī ↔ Sunnī |
| `base-shia + base-sunni` | 1 | ✅ |
| `base-sunni + wave1` | 1 | ✅ |
| `base-shia + wave1 + wave3` | 1 | ⚠️ empty-skeleton garbage (see F2) |
| **total** | **2,272** | **2 real + 1 garbage** |

```
ENGINE cross_tradition_echo_clusters = 2272
HONEST sunni<->shia clusters         = 3   (of which 1 is the F2 garbage cluster -> 2 real)
SAME-TRADITION clusters miscounted   = 2269
```

I opened both real ones and they are genuine and valuable:
* **Bukhārī 3465 ↔ al-Khiṣāl (Ṣadūq) 497** — the three-men-in-the-cave report, shared down to
  `علي بن مسهر ← عبيد الله بن عمر ← نافع ← ابن عمر`. A true cross-tradition isnād convergence.
* **Nasāʾī 631 ↔ Istibṣār 1141** — the adhān wording. A real Sunnī/Shīʿī liturgical parallel.

**Why it blocks**: this number is published in the layer, rendered to
`build/P31-MIZAN/PAGES/`, and carried in commit `f2d7d19` ("2,272 cross-tradition echoes"). Two
genuine echoes is a *finding*; 2,272 is a claim the corpus does not support. Fixing the formula to
the second disjunct alone is a one-line change.

---

### F2 — the published `top_clusters` table is 40% artefact · **BLOCKER**

**File**: `build/P34-OCEAN/matn_dedup_layer.json` (`top_clusters`)

Of the five largest clusters I opened, three are genuine and two are artefacts published as evidence.

**Cluster #4 as published (9 members) is not hadith at all.** Verbatim `ar` values:

```
base-shia|Kamil-al-Ziyarat-Qummi|564   "To be added"
base-shia|Kamil-al-Ziyarat-Qummi|565   "To be added"
base-shia|Kamil-al-Ziyarat-Qummi|714   "ArabicToAdd"
base-shia|Thawab-al-Amal-...-Saduq|121 "arabicnotfound"
wave1|Istibsar|3    ".AuthorSHORTNAMEtrans :: Shaykh Ṭūsī #META"
wave1|Istibsar|12   ".BookSHORTTITLEtrans :: al-Istibṣār #META"
wave1|Istibsar|17   ".BookGENREEng :: Ḥadīth studies, criticism (general) #META"
wave1|Istibsar|19   ".LibURI :: 0460ShaykhTusi.Istibsar #META#Header#End#"
wave3|MusnadAhmad|4040   ". . . . . . . . . . . . . . . . (1)"
```

All nine skeletonise to the empty string, so they share signature `("", 0)`. These are ingestion
placeholders and OpenITI file headers. This cluster is also the *entire* basis of the third
"cross-tradition echo" in F1.

**Cluster #1 as published (10 members) is an isnād tail, not a matn.** Its whole signature is
`ابيهريرةعنالنبيصلياللهعليهوسلممثله` — *"…Abū Hurayra, from the Prophet ﷺ, **the like of it**."*
`مثله` is the classical abbreviation meaning *the matn is given elsewhere*. The peel cut at the last
`عن` and left the tail of the isnād. The ten members are **ten different reports with ten different
chains** (Musnad Aḥmad 5769 / 7854 / 7895 / 9579 / 10181 / 10671 / 10682 / 16950, Muslim 1329 / 3293)
whose only commonality is that formula. This is deep-audit **LAW 7 (formulaic-shingle)** and
**LAW 16 (uniqueness)** — a high-document-frequency formula forging the link — presented as the
headline example of "the Bukhari-repeats truth" (engine docstring, line 7).

**The three genuine clusters, for the record** (the layer's core method does work):
* #2 (9 members) — Umm ʿAṭiyya's ghusl report, `اغسلنها ثلاثا أو خمسا…`, across Abū Dāwūd, Ibn Māja,
  Bukhārī, Mālik, Muslim, Nasāʾī ×3, Musnad Aḥmad. Correct, and the length-band held across
  matn lengths 134–214.
* #3 (9 members) — `من كذب علي متعمدا فليتبوأ مقعده من النار`, nine distinct chains. Correct.
* #5 (8 members) — `تسحروا فإن في السحور بركة`. Correct.

**Scale of the artefact load** (measured, so the fix can be sized honestly — it is small):

| artefact class | clusters | rows | share of 5,579 |
|---|---:|---:|---:|
| empty-signature (placeholders/headers) | 1 | 9 | 0.02% |
| whole "matn" is a *mithlahu/naḥwahu* tail | 26 | 69 | 0.47% |
| entire signature-matn ≤45 skeleton chars | 238 | 541 | 4.27% |

The bulk of the layer is sound. The **presentation** is what fails: the two worst artefacts in the
whole layer are the two the reader is shown.

---

### F3 — P33 `entries` is a paragraph count and its error direction flips, undeclared · **MAJOR**

**File**: `framework/p33_rijal.py:33` (`entries = t2.count("\n# ")`) → `build/P33-RIJAL/rijal_registries.json`

The counts reproduce exactly (see the green table) — the issue is what they *are*. These files are
OpenITI mARkdown: `\n# ` is the **paragraph** marker; `### $` is the **biography/entry** marker. The
engine counts paragraphs and stores the result in a field named `entries`, summed into the headline
"6,143 entries across 5 works".

**Evidence** — re-probed structural markers:

| work | published `entries` (`\n# `) | `### $` bio-entries | error |
|---|---:|---:|---|
| Ibn Ḥibbān **Thiqāt** | 973 | **16,565** | **17.0× UNDER** |
| Ṭūsī **Rijāl** | 69 | **6,429** | **93× UNDER** (declared) |
| Ibn Ḥibbān **Majrūḥīn** | 2,616 | **1,278** | **2.05× OVER** |
| Ṭūsī **Fihrist** | 1,338 | **910** | **1.47× OVER** |

That the `\n# ` heads are prose paragraphs is visible in the first three of **every** file:

```
Thiqat.txt   \n#  ->  "" / "بسم الله الرحمن الرحيم" / "صلى الله على سيدنا محمد وآله وسلم تسليما"
Rijal.txt    \n#  ->  "بسم الله الرحمن الرحيم الحمد لله رب العالمين…" / "أما بعد: فاني قد أجبت…"
Majruhin.txt \n#  ->  "بسم الله الرحمن الرحيم…" / "أما بعد: فإن أحسن ما يدخر المرء…"
```

Against the real entry heads:

```
Rijal.txt    ### $ -> "1 - أسامة بن زيد بن حارثة بن شراحيل الكلبي،"
                      "2 - أسامة بن شريك الثعلبي، نزل الكوفة."
Fihrist.txt  ### $ -> "[1] 1 - إبراهيم بن محمد بن أبي يحيى،"
Majruhin.txt ### $ -> "أبان ابن أبي عياش:" / "أبان بن عبد الله الرقاشي…"
```

The layer's `law` field declares exactly one work: *"Tusi-Rijal's paragraph-proxy UNDERCOUNTS"*.
By naming one, it implies the other three proxies are approximately right — and it never admits the
error can **invert**. Majrūḥīn and Fihrist over-count. That is a directional misdeclaration, not a
declared approximation.

Corroborating from the layer's own data: Thiqāt's census records `yarwi 'an` **13,229** and
`rawa 'anhu` **12,510** — evaluation phrases appearing ~13× more often than the 973 "entries" that
supposedly contain them. The internal contradiction was already on the page.

This is deep-audit **LAW 21 (structure-before-label)** run backwards: the markup *did* carry the
entry structure and the engine reached past it for a paragraph count.

**Consequence**: the headline "6,143 entries" is not an entry count in either direction. The
`### $` re-probe puts the true seed-corpus scale near **26,329** entries.

---

### F4 — `p34_wa_v2.py` reads and writes the same file: non-idempotent, input destroyed · **MAJOR**

**File**: `framework/p34_wa_v2.py:13` and `:28`

```python
13:  WA = json.load(io.open(os.path.join(B32, "W-A", "uncapped_links_per_verse.json"), ...))["per_verse"]
...  for r in o["registry"]: WA.setdefault(r["v"], []).append({... "origin": "wave-quote" ...})
28:  io.open(os.path.join(B32, "W-A", "uncapped_links_per_verse.json"), "w", ...).write(...)
```

The engine appends the two wave registries to its own input and overwrites it. **A second run appends
them again** — 33,868 → **37,082** rows, with every wave row duplicated, and the assert
`sum(per.values()) > 33000` would still pass.

**Current state is clean** — I checked before raising this:
`origin == "wave-quote"` rows on disk = **3,214**, exactly one pass (wave1 1,201 + wave3 2,013).
No corruption has occurred.

But the v1 input no longer exists on disk, so the layer cannot be rebuilt from source without first
re-running `p32_wa_rebuild.py`. Under **I-6** the undo button was never made, and under deep-audit
**LAW 11 (single-source)** a layer whose engine consumes its own output has no stable source. This is
a live trap, not a past failure — worth fixing before anyone re-runs the P40 sequence.

---

### F5 — `wave7_scan.json` has no producer script anywhere in the repo · **MAJOR**

**File**: `build/P34-OCEAN/wave7_scan.json`

An exhaustive scan of all 3,502 tracked files finds the strings `wave7_scan` / `IbnHibbanSira` /
`MukhtasarShamail` in exactly three places — **the output layer and two rendered HTML pages**:

```
build/P34-OCEAN/wave7_scan.json
build/P31-MIZAN/PAGES/P34-OCEAN--wave7_scan.html
build/P31-MIZAN/PAGES/index.html
```

There is no engine. `framework/adab_scan.py` is the Allāh ﷻ adab sweep, unrelated to Adab al-Mufrad.
`gen_p40.py` (151 lines) writes only `_FRAMEWORK-40000.json`.

I re-derived the layer with the E2 machinery (`audit_wave1_quotes.py`'s rules: uniqueness,
formulaic-DF cap 150, contained-formula, short-verse table):

| work | published `verses_quoted` | PX1 re-derived | delta |
|---|---:|---:|---|
| Mashāhīr | 4 | **4** | ✅ exact |
| Mukhtaṣar Shamāʾil | 16 | **16** | ✅ exact |
| Ibn Ḥibbān **Sīra** | 116 | **113** | ⚠️ −3 |

Both declared invitation answers **confirmed present** in Ibn Ḥibbān's Sīra: `45:18` ✅ and `6:106` ✅.

Two of three reproduce exactly, so the layer is substantially trustworthy. But the 3-verse divergence
on the Sīra **cannot be adjudicated**, because there is no engine to compare segmentation against.
Deep-audit **LAW 10 (chain law: exit-codes over prose)** and **LAW 11** both require the engine to
exist. A layer that cannot be re-run cannot be sealed.

---

### F6 — "wave 8 · reserve fully earned" rests on an acquisition never scanned; LAW-20 delta = 0 · **MAJOR**

**Files**: `00-CORPUS/acquired/wave7/_META.json`, `00-CORPUS/acquired/wave7/AdabMufrad.txt` (848,008 bytes)

Adab al-Mufrad is declared in the wave-7 `_META` as *"+ wave 8: Bukhari's Adab al-Mufrad"*. A
full-filesystem scan (gitignore bypassed, every file on disk) finds the string `AdabMufrad` in
exactly **three** files:

```
00-CORPUS/acquired/wave7/AdabMufrad.txt      <- itself
00-CORPUS/acquired/wave7/_META.json          <- its own seal
00-CORPUS/_openiti_metadata.tsv              <- the UPSTREAM OpenITI catalogue (acquisition source)
```

**Zero consumers.** All three are upstream or self-referential: the text, its own seal, and the
supplier's catalogue it was selected from. No scan, no layer, no register, no page, no mention in any
of the 3,502 tracked files.

Deep-audit **LAW 20** states an acquisition's worth is scored by the **gap-verses it answers**, not its
row count. That test was never run. I ran it:

```
AdabMufrad: paragraphs=1528  verses quoted=69
LAW-20 DELTA: invitation verses answered = 0   []
```

It is a real and substantial source — 69 verse-quotes — but it answers **none** of the 681 remaining
invitation verses. This is precisely the pattern LAW 20 was born from (19,255 fiqh rows → 0 of 684).
The claim "reserve fully earned by wave 8" (commits `b3287cd`, `2e5d998`) is unsupported by any
measurement, and the measurement, once taken, does not support it.

Secondary: **wave 8 has no `_META` of its own.** It rides inside `wave7/_META.json`, so there is no
independent wave-8 seal to gate.

---

### F7 — none of the four layers is in any seal manifest; newest manifest is two eras stale · **MAJOR**

**Files**: `_WAQF-SEAL.sha256`, `_WAQF-COMPLETE-SEAL.sha256`, `_WAQF-COMPLETE-SEAL-17400.sha256`

| manifest | entries | mtime | hits for P34-OCEAN / P33-RIJAL / uncapped_links_v2 |
|---|---:|---|---:|
| `_WAQF-SEAL.sha256` | 24 | Sep 1 15:55 | **0** |
| `_WAQF-COMPLETE-SEAL.sha256` | 1,621 | Sep 2 21:21 | **0** |
| `_WAQF-COMPLETE-SEAL-17400.sha256` | 1,742 | Sep 3 13:15 | **0** |

The layers under review were built **Sep 4 08:59–09:05**. The newest manifest is the *17,400-node*
seal; this is the *40,000* build. For a panel whose whole function is to gate a seal, this is the
plainest possible blocker: **there is nothing to seal against.** No 40,000-era manifest exists.

---

### F8 — `four_witness_v4` declares "9 answered"; its own number says 3 · **MEDIUM**

**File**: `framework/p34_wa_v2.py:45-46` → `build/P32-SHAHADAT/W-F/four_witness_v4.json`

Declared law: *"the invitation set SHRINKS only by measured answers — **9 answered** by waves 3-7"*.
Same file: `"invitation_remaining": 681`. The baseline in deep-audit LAW 20 is **684**.
684 − 681 = **3**.

I re-derived the remaining set independently (verses with neither a W-A row nor an E3 sirah witness):
**681 — exact match** ✅. So the number is right and the sentence beside it is wrong. Under **I-3**
this needs correcting in the file, not softening.

---

### F9 — `source_sha` on all four layers hashes an unrelated file · **MEDIUM**

**File**: `framework/sighah_index.py:24` → `SI._sha(SI.RAW)`, used by `p33_rijal.py:47`,
`p34_matn_dedup.py:57`, `p34_wa_v2.py:21`

```
SI.RAW  = 00-CORPUS/_morphology_raw.txt
sha256  = fbc8744a98b36edb2362ee63a72d77c2079e929b2128dad96b41269c6ba199bb   <- stamped on all four layers
```

That is the **Qurʾānic morphology file**. It is not a source of any of these layers. The actual sources:

```
hadith.json             f1bcc4b9378fb40a4a27b78f…
hadith_shia.json        033394ac71fd1571271197d3…
hadith_shia_wave1.json  fea073e184de7307ce5de728…
hadith_sunni_wave3.json 6c532fdadb956f68f6ec0e34…
```

The provenance gate is therefore **inert** — it would not detect a change in any real source.
P34 and wave7_scan carry a `sources_note` admitting the stamp is legacy. **P33 does not**: it carries
the wrong `source_sha` next to `"sources_sealed": "acquired/shia_wave1/_META.json + acquired/wave56/_META.json"`,
which implies a verified chain that the field does not provide.

**Mitigation, verified by this panel**: I checked the P33 sources against their real `_META` seals and
**all nine files verify on bytes and sha256** (5 rijāl + 4 wave-7). The chain is sound in fact; it is
just not sound in the field that claims it.

---

### F10 — MEASURED-FLOOR LAW violated in two of three engines · **MEDIUM**

Deep-audit **LAW 6**: floors are set *after* measuring, *to the measured truth*.

| file:line | assertion | measured | verdict |
|---|---|---:|---|
| `p33_rijal.py:58` | `assert tot > 5000` — comment: *"floor set to measured"* | 6,143 | ❌ floor is 5,000; comment is untrue |
| `p34_wa_v2.py:50` | `assert sum(per.values()) > 33000` | 33,868 | ❌ loose |
| `p34_wa_v2.py:50` | `assert len(no23) < 690` | 681 | ❌ loose |
| `p34_matn_dedup.py:72` | `assert n == 118845` | 118,845 | ✅ **exact — the correct pattern** |

The loose floors would not have caught F4's duplicate-append (37,082 > 33,000 passes).

---

### F11 — the "usable Arabic" gate is a byte-length gate · **MEDIUM**

**File**: `framework/p34_matn_dedup.py:40` — `if isinstance(ar, str) and len(ar) > 10`

`"To be added"` is 11 characters. `.LibURI :: 0460ShaykhTusi.Istibsar #META#Header#End#` is 50.
Both pass. Measured:

```
rows admitted by len(ar)>10 carrying <5 Arabic letters : 9
rows whose rasm skeleton is empty                      : 9
declared rows_without_usable_arabic                    : 416
TRUE non-Arabic rows                                   : 425
```

So `"rows_scanned_with_arabic": 118845` contains 9 rows with no Arabic, and the declared 416 is short
by 9. Small in magnitude; it is the root cause of F2's garbage cluster and F1's third "echo".
Deep-audit **LAW 3 (bare-probe)** wants the probe and the text through the same transform —
gating on `len(VN.skel(ar)) > 10` instead of `len(ar) > 10` closes it in one character.

---

### F12 — length-band splitting costs 6.1% of clusters, undeclared · **LOW**

**File**: `framework/p34_matn_dedup.py:48` — `sig = (m[:80], len(m) // 120)`

Two witnesses of the same matn whose lengths straddle a 120-char boundary (e.g. 119 vs 121) land in
different bands and never cluster. Measured:

```
distinct matn-heads split across >1 band : 491  (1,160 rows)
clusters if bands were dropped           : 5,939
clusters as published                    : 5,579   -> 6.1% undercount
```

The band is a deliberate precision/recall trade and the layer declares the signature is
`first-80 matn-skeleton + length band`. What is **not** declared is its measured cost. Under
**LAW 6** and **I-1**, a knob with a 360-cluster effect should carry its number.

---

### F13 — sanad-peel weaknesses (declared CANDIDATE, so mitigated) · **LOW**

**File**: `framework/p34_matn_dedup.py:21-30`

Answering the scope's question directly — **is the sanad-peel honest?** *Honest in intent and
declaration; crude in mechanism.* Measured behaviour over all 118,845 rows:

| behaviour | rows | share |
|---|---:|---:|
| peel never fired (`cut == 0`) | 2,080 | 1.8% |
| matn ≤30 chars → **whole text kept, sanad included** | 918 | 0.8% |
| entire signature-matn ≤45 skeleton chars | (541 rows in 238 clusters) | — |

Specific mechanisms:
* `عن` is matched as a bare 2-character substring with **no word boundary** — it is a substring of
  `عندما`, `لعن`, `معن`, `يعني`. `rfind` can cut mid-word.
* `قال` is a transmission formula *and* ordinary matn vocabulary. In cluster #3 the peel cut before
  `رسول الله` and left `رسول الله صلى الله عليه وسلم` inside the "matn" — harmless there, but it
  shows the cut point is a guess.
* The `len(b) - cut > 30` fallback silently keeps the sanad in the signature for 918 rows, which is
  the one behaviour not declared in the layer's `law` field.

**The declaration is the saving grace**: the layer states signatures are *"CANDIDATE same-matn
clusters … a strong signal the bench refines, never a riwāyah verdict"*. That is exactly right and it
is why F13 is LOW and not a blocker. The engine is honest about being a candidate generator. F2 is a
blocker only because the *published table* drops that framing and shows artefacts as findings.

---

### F14 — Ikhtiyār's numbered segmentation is the best of the five (noted for accuracy) · **LOW**

**File**: `framework/p33_rijal.py:31`

```
numbered regex hits          : 1,147  (published as `entries`)
distinct numbers found       : 1,145
number range                 : 1 … 1,151
```

Kashshī's *Ikhtiyār* carries 1,151 numbered entries. The regex finds 1,145 of them, with 2 duplicate
hits inflating the stored value to 1,147. So the published figure is a hit-count, ~0.2% high, and 6
entries are missed. `Ikhtiyar` has **zero** `### $` markers, so the engine's choice of the numbered
regex here was the correct one — this is the one work whose `segmentation_class` declaration
(`"numbered"`) is fully truthful. Recorded so the fix for F3 does not disturb it.

---

## MECHANICAL TABLE

### Re-derived: GREEN (independent probe, exact match)

| # | claim | published | PX1 re-derived | verdict |
|---|---|---:|---:|---|
| 1 | ocean total rows | 119,261 | **119,261** | ✅ VERIFIED |
| 2 | rows with usable Arabic | 118,845 | **118,845** | ✅ VERIFIED |
| 3 | rows without usable Arabic | 416 | **416** | ✅ (but see F11) |
| 4 | matn-distinct signatures | 112,335 | **112,335** | ✅ VERIFIED |
| 5 | repeat-clusters 2+ | 5,579 | **5,579** | ✅ VERIFIED |
| 6 | rows inside repeat-clusters | 12,089 | **12,089** | ✅ VERIFIED |
| 7 | `matn_clusters.json` integrity | — | 5,579 clusters / 12,089 rows / 0 members lacking a 3-part locus | ✅ nothing-dropped holds |
| 8 | P33 Ikhtiyār entries | 1,147 | **1,147** | ✅ reproduces |
| 9 | P33 Ṭūsī Rijāl entries | 69 | **69** | ✅ reproduces |
| 10 | P33 Thiqāt entries | 973 | **973** | ✅ reproduces |
| 11 | P33 Majrūḥīn entries | 2,616 | **2,616** | ✅ reproduces |
| 12 | P33 Fihrist entries | 1,338 | **1,338** | ✅ reproduces |
| 13 | P33 total | 6,143 | **6,143** | ✅ reproduces |
| 14 | P33 source seals (5 files) | `_META` sha256 | bytes + sha256 **all 5 OK** | ✅ VERIFIED |
| 15 | W-A v2 rows | 33,868 | **33,868** = 30,654 + 3,214 | ✅ VERIFIED |
| 16 | W-A v2 verses | 4,987 | **4,987** | ✅ VERIFIED |
| 17 | W-A v2 per-āyah max | 413 | **413** (112:1) | ✅ VERIFIED |
| 18 | W-A v2 per-āyah median | 5 | **5** | ✅ VERIFIED |
| 19 | **112:1 = 413 is real** | — | **410/413 verbatim**, 3 declared meaning-links, 0 duplicate ids | ✅ **CONTENT-GATED** |
| 20 | 112:1 skeleton uniqueness | — | `قلهوالله احد` — **0** other verses contain it | ✅ LAW 16 clean |
| 21 | wave-7 seals (4 files) | `_META` sha256 | bytes + sha256 **all 4 OK** | ✅ VERIFIED |
| 22 | wave7 Mashāhīr verses | 4 | **4** | ✅ VERIFIED |
| 23 | wave7 Mukhtaṣar Shamāʾil verses | 16 | **16** | ✅ VERIFIED |
| 24 | wave7 invitation answers | 45:18, 6:106 | **both present** in Ibn Ḥibbān Sīra | ✅ VERIFIED |
| 25 | invitation remaining | 681 | **681** | ✅ VERIFIED |

### Findings

| # | finding | file | severity | blocks seal |
|---|---|---|---|---|
| F1 | `cross_tradition_echo_clusters` 2,272 → true 2 | `p34_matn_dedup.py:53-54` | 🔴 BLOCKER | ✅ |
| F2 | `top_clusters` 40% artefact (garbage + isnād-tail) | `matn_dedup_layer.json` | 🔴 BLOCKER | ✅ |
| F3 | P33 `entries` = paragraphs; error direction flips, undeclared | `p33_rijal.py:33` | 🟠 MAJOR | ✅ |
| F4 | `p34_wa_v2` reads+writes same file; non-idempotent | `p34_wa_v2.py:13,28` | 🟠 MAJOR | ✅ |
| F5 | `wave7_scan.json` has no producer script | `build/P34-OCEAN/` | 🟠 MAJOR | ✅ |
| F6 | wave 8 never scanned; LAW-20 delta = 0 | `acquired/wave7/_META.json` | 🟠 MAJOR | ✅ |
| F7 | no seal manifest covers any layer under review | `_WAQF-*.sha256` | 🟠 MAJOR | ✅ |
| F8 | "9 answered" vs measured 3 | `p34_wa_v2.py:45-46` | 🟡 MEDIUM | — |
| F9 | `source_sha` hashes an unrelated file | `sighah_index.py:24` | 🟡 MEDIUM | — |
| F10 | measured-floor law violated (2 of 3 engines) | `p33_rijal.py:58`, `p34_wa_v2.py:50` | 🟡 MEDIUM | — |
| F11 | Arabic gate is a byte-length gate | `p34_matn_dedup.py:40` | 🟡 MEDIUM | — |
| F12 | length-band split costs 360 clusters, undeclared | `p34_matn_dedup.py:48` | 🟢 LOW | — |
| F13 | sanad-peel crude (declared CANDIDATE) | `p34_matn_dedup.py:21-30` | 🟢 LOW | — |
| F14 | Ikhtiyār: 1,147 hits / 1,145 distinct of 1,151 | `p33_rijal.py:31` | 🟢 LOW | — |

### Law-by-law

| law | subject | verdict |
|---|---|---|
| 1 measure-the-ocean | 119,261 / 118,845 / 416 | ✅ all three re-derived exact |
| 3 bare-probe | `len(ar)>10` Arabic gate | ❌ F11 — byte gate, not a rasm gate |
| 4 rasm skeleton | `VN.skel` NFD→Lo→map | ✅ correct, shared, no hand-listed marks |
| 6 measured-floor | engine asserts | ❌ F10 — 2 of 3 loose; P34's `== 118845` is right |
| 7 formulaic-shingle | matn signatures | ❌ F2 — `مثله` tail forges the #1 cluster; no DF pass in P34 |
| 8 ambiguity-is-data | shared signatures | ⚠️ no ambiguous class; artefacts sit in the main count |
| 10 chain law | engines → marks | ❌ F5 — a layer with no engine was marked |
| 11 single-source | one engine per layer | ❌ F4 (self-consuming) · F5 (no engine) |
| 12 content-gate sampling | opened rows | ✅ run by this panel — 413/413 on 112:1; 5 clusters + 3 echoes opened |
| 16 uniqueness | quote links | ✅ 112:1 clean · ❌ F2 in P34 clusters |
| 18 check-the-checker | my own probe | ✅ applied — my first 112:1 gate used a basmalah-included skeleton and wrong keys and reported a false 0/413; like-for-like vindicated the engine at 410/413 |
| 20 delta-invitation | wave 8 | ❌ F6 — never scored; scored here at 0 |
| 21 structure-before-label | rijāl segmentation | ❌ F3 — `### $` structure was present and bypassed |
| 22 documented-pivot | wave 5-6 Ibn Ḥibbān pivot | ✅ `wave56/_META.json` documents the Ṣaḥīḥ→rijāl pivot with its reason |

---

## GAP-HIGHLIGHT — what this panel itself did not reach (LAW 13)

The owner's standing order: *if I am missing something the audit must highlight this.* Named honestly:

1. **I did not verify the 2,272-equivalent numbers in the sibling layers.** `p31_pages.py` also
   references the P34/P33 outputs and renders them. If the same tag-splitting idiom (F1) appears in
   P37-GRAPH or P36-BENCH, it is uncaught. **That grep was not run and should be, before any fix.**
2. **W-A v2's 33,868 was re-derived from the landed `per_verse` file, not from first principles.**
   Because F4 destroyed the v1 input, I could confirm 30,654 + 3,214 = 33,868 and that exactly one
   wave-append occurred — but I could not independently rebuild the 30,654. That number inherits
   PW1's audit, which this seat did not re-open.
3. **I content-gated 112:1 (the max) exhaustively but not the median.** A 413-row verse is the easiest
   case for a quote detector. The honest stress test is a 1–2 row verse, where a single false link is
   100% error. **Not sampled.** I recommend the next seat gate 20 verses drawn from the median band.
4. **The `### $` biography-marker count in F3 is my proxy, not a parsed entry list.** It is far better
   than the paragraph count and it is the marker OpenITI defines for biographies — but I did not
   verify that all 16,565 Thiqāt markers are distinct persons rather than sub-entries. F3's *direction*
   is certain; its *magnitude* is a second proxy.
5. **P33's jarḥ/taʿdīl census is a raw `str.count` over the whole file** (`p33_rijal.py:34`) with no
   negation handling — `ليس بثقة` ("not trustworthy") increments `thiqah`. I noticed this and did not
   quantify it. Given Thiqāt reports 48 `thiqah` in a book *titled* al-Thiqāt, the census numbers are
   likely unreliable in ways F3 does not cover. **This deserves its own seat.**
6. **I reviewed no Arabic scholarship on any of the five rijāl works' true entry counts.** My
   structural claim rests on the OpenITI markup alone. A human scholar should confirm that
   Ṭūsī's *Rijāl* has ~6,400 entries and Ibn Ḥibbān's *Thiqāt* ~16,500 before F3's numbers are
   published as corrected values.
7. **Machine-scholar, labeled.** Nothing here is a riwāyah judgment. The two genuine cross-tradition
   echoes (F1) are offered as *loci for human review*, not as adjudicated shared transmissions.

---

## SEAL VERDICT

**SEAL BLOCKED BY:**

1. **F1** — `cross_tradition_echo_clusters: 2272` is false; measured truth is **2**. 2,269 same-tradition
   clusters are miscounted by `p34_matn_dedup.py:53-54`. The number is published in the layer, in the
   rendered pages, and in commit `f2d7d19`. **One-line fix; must be re-run and re-rendered.**
2. **F2** — `top_clusters` publishes an all-placeholder cluster (`"To be added"`, OpenITI headers) and
   an isnād-tail cluster of ten unrelated reports as the layer's headline evidence.
3. **F3** — P33 `entries` is a paragraph count whose error direction **inverts** between works
   (Thiqāt 17× under, Majrūḥīn 2× over) while the layer declares only one work as undercounting.
   "6,143 entries" is not an entry count.
4. **F4** — `p34_wa_v2.py` reads and overwrites `uncapped_links_per_verse.json`; a second run silently
   yields 37,082 rows and the loose assert would pass. Currently uncorrupted; must be made idempotent
   before the P40 sequence is re-run.
5. **F5** — `wave7_scan.json` has no producer script in the repository; its Ibn Ḥibbān Sīra figure
   (116) does not reproduce (113) and the divergence cannot be adjudicated without the engine.
6. **F6** — "wave 8 · reserve fully earned" is claimed on Adab al-Mufrad, which has zero consumers in
   3,502 tracked files and, on the LAW-20 delta test run by this panel, answers **0** invitation verses.
7. **F7** — no seal manifest covers any layer under review. The newest is the 17,400-era manifest
   (Sep 3 13:15); these layers were built Sep 4 09:00. **There is no 40,000-era manifest to seal against.**

**Not blocking, required before the next seal attempt**: F8 (correct "9 answered" → 3), F9 (stamp the
real source hashes; P33 first), F10 (tighten floors to measured), F11 (gate on skeleton length).

**Recorded in the build's favour**: the three P34 numbers, all five P33 counts, all three W-A v2
numbers, the invitation remainder, and every one of the nine source seals re-derived **exactly**. The
max-413 verse is real and 410 of its 413 rows are verbatim-verified against the sealed corpus, with
the other 3 honestly labelled as meaning-links. The arithmetic of this build is trustworthy. What
blocks the seal is what was written on top of it, and what was never measured at all.

---

*PANEL P40 · seat PX1 · MACHINE-SCHOLAR, labeled · human review invited, never waited.*
