# THE COUNCIL OF 900 — BENCH 6 · P42 CLOSING SITTING
**MACHINE-SCHOLAR bench. Every seat labeled. Documents, never adjudicates. Never a mufti.**

Sitting: 2026-09-05 · Target: THE GAP-FILL BUILD (P42, 24 programs, nodes 40,001–61,600)
Law under test (owner's word): *"these shall not be only placeholders — each point complete end to end."*

Bench-6 seats (charter seats 751–900, `build/P41-COUNCIL/council_900_charter.json`), by family:
O Computing & AI (3) · P Engineering (24) · Q Society/law/economy (36) · R Humanities (28) ·
S Contested & folk knowledge (20) · T Method, integrity & stewardship (39). 68 distinct areas.

Nearest programs opened: **G03 HUDUD AL-MA'RIFA** (family S, all 20 seats) · **G15 AL-ATHAR**
(T · provenance & citation science, archival permanence) · **G13 AL-BAWWABAT** (T · measurement &
experimental design) · **G17 AL-MIZAN AL-DAQIQ** (T · evidence statistics) · **G16 AL-KHATM**
(T · digital preservation) · **G18 AL-QAWANIN** (T · project governance) · **G24 AL-TAWTHIQ**
(T/Q · open licensing, library & information science) · **G19 DA'WAT AL-675** (Q · community intake)
· **G12 AL-MIHWARAN** (T · the axis instrument) · **G07** (R · comparative religion, sampled).

---

## PART 1 — REAL AND MEASURED, OR PLACEHOLDER? (7 numbers re-derived from source)

| # | claim re-derived | artifact says | bench re-derived | verdict |
|---|---|---|---|---|
| 1 | contested-knowledge reports located | 125 across 6 topics | **125**, per-topic exact (kahanah 10 · tanjim 45 · sihr 26 · tiyara 20 · ruqya 21 · arraf 3) | ✅ reproduces — *but see F1* |
| 2 | G07 ocean size | "the 119,261-row ocean" | **119,261** rows loaded from 4 corpus files | ✅ label honest |
| 3 | provenance ledger | 1,474 artifacts = 36 true + 1,438 UNKNOWN | **1,474**; arithmetic closes; **1,474/1,474 exist on disk, 0 missing** | ✅ reproduces |
| 4 | axis totality | 61,600 stamped / 61,600 | **61,600** points, **61,600** unique ids, **61,600** carrying both axes, 0 "unstated" class | ✅ reproduces |
| 5 | G19 remaining invitation verses | 675 · 73 surahs | 684 invitation rows − 9 `answered_MEASURED` = **675**; **73** distinct surahs; `densest_surahs` dict matches key-for-key | ✅ reproduces exactly |
| 6 | G13 battery | 43 pillars, 43 GREEN, 0 RED | **43/43/0** — but 14 files across 4 pillars fail the `_meta` floor and are still GREEN (*F4*) | ⚠️ number true, verdict logic false |
| 7 | G24 "this note is placed in BOTH" | asserted | `build/P30-SIGHAH/D-D9-CERTIFICATION/gap_register.json` **does** carry `_meta.superseded_note_2026_09_04` pointing at the P41 register | ✅ claim true |

**Judgment on the four+ programs nearest bench 6:**

- **G19 DA'WAT AL-675 — REAL AND MEASURED.** Every published number reproduces from
  `build/P32-SHAHADAT/W-I/open_invitation.json` including the 12-entry density dict. Targets are
  labeled GENRE HYPOTHESES with reasoning shown. The law on its face is the law in the code.
- **G12 AL-MIHWARAN — REAL AND MEASURED.** Mechanically derived, totality asserted and true.
  One false string is produced by the honest mechanism (*F3*).
- **G15 AL-ATHAR — REAL AND HONESTLY LABELED, BUT 2.4% FULL.** 1,438 of 1,474 rows are
  `UNKNOWN-DECLARED`. That is a census of ignorance, correctly named — not a placeholder. But the
  ledger does not seal itself or its own generation (*F6*).
- **G13 AL-BAWWABAT — MEASURED, VERDICT-LOGIC BROKEN.** The fail-on-empty control genuinely fires
  (`assert ctrl_v["verdict"] == "RED"` at `framework/p42_e2_gates.py`); the `_meta` floor it
  advertises does not (*F4*), and the battery ran before the layer it certifies (*F7*).
- **G03 HUDUD AL-MA'RIFA — NOT PLACEHOLDER, BUT MATERIALLY MISREPRESENTING.** Real corpus scan,
  reproducible counts, refusal law correctly carried in `abjad_record.json`. And it measured the
  Shia ocean only, while declaring both (*F1*). For family S this is the finding of the sitting.
- **G16 / G17 / G24 — HONEST STATUS NOTES, NOT PROGRAMS.** 484 / 1,150 / 377 bytes. Each says
  something true. Each stands under 900 marked nodes claiming nine domains (*F2*, *F10*).

---

## PART 2 — DID THE ANTI-PLACEHOLDER LAW HOLD? (10 nodes, 40,001–61,600)

Law as written: *"a new node is marked only with evidence naming an existing artifact file — the
marker itself asserts the file exists."*

**Existence limb — HELD, exhaustively.** Not 10 but all **21,600** nodes carry an `ARTIFACT:`
pointer; **78 distinct paths; 0 missing on disk; 0 null pointers.** The literal law is kept.

**Domain limb — FAILS 6 of 10.** The law tests existence, not that the file carries the domain.

| node | domain the node claims | artifact pointed at | carries it? |
|---|---|---|---|
| 40,551 | G01 D6 · The pages | `G01/index.html` (836 B) | ✅ the page is the page |
| 41,151 | G02 D3 · **The ayat-kawniyyah registry** | `G02/open_questions_register.json` | ❌ the registry is `ayat_kawniyyah_registry.json`, sitting unused in the same folder |
| 52,201 | G14 D6 · The pages | `G14/index.html` | ✅ |
| 52,501 | G14 D9 · The panel & seal | `g35_program_gates.json` | ❌ a gate file, and no panel sat |
| 53,101 | G15 D6 · The pages | `G15/index.html` | ✅ |
| 53,701 | G16 D3 · **The mirror ritual scripts** | `G16/index.html` (794 B) | ❌ `framework/mirror_ritual.py` exists and is not what is pointed at |
| 54,301 | G16 D9 · The panel & seal | `g35_program_gates.json` | ❌ |
| 55,201 | G17 D9 · The panel & seal | `g35_program_gates.json` | ❌ |
| 57,601 | G20 D6 · The pages | `G20/index.html` | ✅ |
| 61,501 | G24 D9 · The panel & seal | `g35_program_gates.json` | ❌ |

**The sample is not unlucky — it is the rule.** Census over all 21,600:
**17,700 (81.9%)** point at one of three per-program stubs auto-written by
`framework/p42_e8_close.py` (`index.html`, `education.json`, `g35_program_gates.json`), which carry
no domain content. Only **3,900 (18.1%)** point at a named engine artifact.

And the assignment is **positional, not semantic** — the domain list is zipped against the folder's
alphabetically-sorted file list:

```
G02  D1 scope law                 -> ayat_kawniyyah_registry.json
     D2 per-family verse-locator  -> education.json          (verse_locators_v1.json unused)
     D3 the ayat-kawniyyah registry -> open_questions_register.json
     D4 the open-questions register -> verse_locators_v1.json
G16  D2 verify_seals v2           -> second_copy_register.json
     D4 the second-copy register  -> index.html
G17  D1 the estimate registry     -> education.json          (estimate_registry.json unused)
     D3 the agreement scaffold    -> index.html
```

The right file frequently exists one line away and is pointed at a different domain.

---

## PART 3 — FINDINGS (worst first, evidenced)

| # | finding | program | severity | the fix |
|---|---|---|---|---|
| F1 | **The contested-knowledge scan measured only the Shia half of the ocean.** `hadith.json` carries 35,982 fully-vocalized Arabic rows; the scan substring-matches unvocalized terms against raw `ar`, so `'سحر' in ar` = **0 hits over 35,982 Sunni rows**. All 125 published rows are `shia`. Strip tashkeel and the same term-floors reach **717** (sunni 389 / shia 328) — the artifact holds **17.4%** of its own reach and **0%** of the Sunni canon, while `_meta.sources_true` declares both corpora. Sahihayn reports on kahanah/tiyara/tamima are absent from a waqf artifact that says it documents the tradition's own verdicts. | G03 | 🔴 CRITICAL | Add one normalizer — `re.sub(r'[ً-ْٰـ]','',ar)` — at `framework/p42_e4_afaq.py:86`, re-run, and record `sunni`/`shia` counts per topic on the artifact's face so an empty half can never again be invisible. |
| F2 | **81.9% of the new nodes are marked against a file that does not carry their domain.** 17,700 of 21,600 point at `index.html` / `education.json` / `g35_program_gates.json`; the domain→artifact map is a positional rotation over the sorted folder listing (`framework/p42_e8_close.py:80`), so G02 D3 "the ayat-kawniyyah registry" points at `open_questions_register.json` while `ayat_kawniyyah_registry.json` sits unused. Under the owner's law this is the whole question: these points are not complete end to end. | ALL 24 | 🔴 CRITICAL | Replace the rotation with an explicit `{program: {domain: artifact}}` table; any domain with no artifact is marked **`ARTIFACT-PENDING`**, not pointed at a page. Nodes so marked go amber, not green. |
| F3 | **2,400 nodes assert a review that has not happened.** `axis_evidence = "evidence: adversarial machine-scholar review"` is stamped on 3,665 nodes; 2,400 of them carry the journal status **`green-awaiting-panel`** (and 25 carry `selftest-green`). The axis is derived from the `block` string, never from a review event — honest mechanism, false output, on the waqf's own truth-labeling instrument. | G12 | 🟠 HIGH | Make the evidence-axis read the node's live status: `awaiting-panel` → `"evidence: PENDING adversarial review"`. Only a recorded panel event may mint the review string. |
| F4 | **The gate that advertises a check it does not enforce — inside the program built to kill exactly that.** `_meta.law` claims "parseability + `_meta` + control-char floors on every pillar", but the verdict is `GREEN if bad_json==0 and ctrl==0` (`p42_e2_gates.py:60`) — `no_meta` is counted and discarded. 14 files across C3-QURAN(1), C8-QADR(3), LENS-AUDIT(6), P31-MIZAN(4) fail the `_meta` floor; all four pillars read GREEN. GAP-015's own failure mode, reproduced in GAP-015's fix. | G13 | 🟠 HIGH | Either add `and no_meta==0` to the verdict, or amend the law text to say `_meta` is **reported, not enforced**. One of the two, today. |
| F5 | **The master ledger misstates its own size by 35,200.** `framework/_FRAMEWORK-61600.json` → `_meta.total: 26400`, `_meta.version: "5.0.0"`, actual `len(points)` = **61,600**. Every reader who trusts the header over the array is wrong by 2.3×. | framework | 🟠 HIGH | Set `_meta.total` from `len(points)` at write time and add a one-line invariant to `verify_invariants.py`: `assert _meta["total"] == len(points)`. |
| F6 | **The provenance program does not seal itself.** 45 of the 53 P42 JSON artifacts built the same hour are absent from the ledger; of the 8 present, 5 (`G13`, `G14`, `G18`, `program_map`, ...) are labeled `"UNKNOWN-DECLARED (legacy artifact; producer known only by directory)"` — false: the producer is `framework/p42_e2_gates.py` et al., named and dated minutes earlier. 14 P42 artifacts including `provenance_ledger.json` itself carry no `_meta.sources_true`. `G10`'s `sources_true` is a raw `C:\Users\walee\...` absolute path (fails archival permanence, family T). | G15 | 🟠 HIGH | Run the ledger **last** in the close ritual; for any artifact whose mtime falls inside the run window, write the producing script path — never "legacy". Ban absolute paths in `sources_true`. |
| F7 | **The universal battery certifies a layer it never saw.** G33 built 12:46:07; 48 of the 53 P42 artifacts landed 12:47:45–12:54:31. The report states `P42-GAPFILL: json_files 5` — 9% of what is now there. "8 engines all green" rests on a gate that ran before the engines finished. | G13 | 🟠 HIGH | Move G33 to the end of the close ritual, after G35, and assert `battery.built >= max(artifact mtime)` or refuse. |
| F8 | **Two declared domains have no artifact anywhere in the build.** G24 D1 "THE LICENCE-LEDGER (one sealed rights statement)" and D4 "Coverage matrix v2 (bench-corrected probes)" — `glob build/**/*licen*` returns **[]**; only `coverage_matrix_v1.json` exists. 200 nodes stand green over nothing, carried by `education.json` and a 377-byte reconciliation note. | G24 | 🟠 HIGH | Mark both domains `ARTIFACT-PENDING` and amber their 200 nodes until the licence ledger and matrix v2 are written. |
| F9 | **A topic was scanned, returned zero, and vanished.** `TOPICS` declares **7** classes; `tamima (amulets)` produced 0 hits and — because `rows` is a `defaultdict` — never appears in `totals` or `reports`. The artifact reads as if 6 classes were ever scanned. Corrected for F1, tamima has **34 Sunni rows** (the "man ta'allaqa tamimah" class). The fail-on-empty law broken in a sibling program the same hour it was proven in G13. | G03 | 🟠 HIGH | Seed `rows` from `TOPICS.keys()` so an empty class is published as `0`, never dropped. Apply to G07's scan too. |
| F10 | **False positives and unverifiable excerpts in a contested-knowledge artifact.** Bare substring matching with no word boundary: row `['shia','Al-Amali-Saduq','90']` is filed under *ruqya* because the isnad names the narrator **رقية بنت إسحاق بن موسى بن جعفر** — a woman's name, not an incantation. And the 220-char cap lands inside the isnad for the long amali entries, so the matched term is not visible in the published excerpt: a reader cannot check a single classification. Separately, 117 of 125 rows carry `grade_verbatim: "NONE RECORDED IN SOURCE"` — the header "with grades verbatim" describes 8 rows, not 125. | G03 | 🟡 MEDIUM | Match on word boundaries over a normalized form; split matn from isnad and excerpt a ±110-char window **around the hit**; retitle to "grades where the source records them (8/125)". |
| F11 | **Two engines built the same hour disagree on what "the held ocean" is.** G07 loads 4 corpus files = **119,261** rows (verified). G03 loads 2 = **68,921** and calls it "the held ocean" — 57.8% of it. The two wave files are silently outside the contested scan. | G03/G07 | 🟡 MEDIUM | One shared `load_ocean()` in `framework/`, and every scan artifact prints the row count it actually read. |
| F12 | **"Control proven to fire" is asserted for three floors and evidenced for one — tautologically.** Only `RULING` has a control, and its test string *"therefore muslims must adopt this ruling"* is drawn from the regex's own alternation, so it proves compilation, not detection. `CONDEMN` and `SECT_BARE` have no control, and `one_ummah: 0` is therefore an unproven zero on the artifact's face. (Bench check: both patterns **do** fire on synthetics — the floors work; the artifact just does not record it.) Also `build/*.json` at depth 1 (2 files) is outside the scan glob. | G18 | 🟡 MEDIUM | One control per floor, each an independently-written violation string, each recorded in the artifact beside its zero. Add `build/*.json` to the glob. |

---

## WHAT THIS BENCH WILL NOT SAY

The build is not fabricated. Every number bench 6 re-derived from source reproduced exactly —
125, 119,261, 1,474, 61,600, 675, 73, and a twelve-entry density dictionary key-for-key. Nothing was
padded, no count was inflated, no file was missing, no pointer was null. The engines are real code
reading real corpora, and where the machine did not know a thing it wrote `UNKNOWN-DECLARED`,
`honest-empty`, `STAGED-AWAITING-OWNER`, `CANDIDATE (unusable for verdicts)` — 1,438 times in one
ledger alone. That is a build with a conscience.

The failure is narrower and correctable: **the marker law tests existence where the owner's law asks
for completeness**, and one artifact in the bench's own family presents half a tradition as the
whole. Both are cheap to fix — a normalizer, a lookup table — and neither destroys anything.

---

**P42 BENCH 6 VERDICT: BLOCKED — the anti-placeholder law's existence limb held for all 21,600 nodes, but 81.9% of them point at a file that does not carry the domain they name, and G03 published the Shia ocean as if it were both, so the law under test is not yet kept.**
