# ROAST — האתר הציבורי Domain · 2026-10-13 (Task 25-b · domain-roast)

**Scope:** the live public site `https://roshpinacare-sys.github.io/Domain/` — measured, then fixed statically in-repo.
**Method:** recursive crawl (119 unique URLs), per-link HTTP status+bytes, repo-tree diff vs crawl, JSON freshness scan (289 JSON files), estate exposure-scan run, Actions site-audit receipt comparison. Evidence over claims: every number below is an HTTP code, a byte count, or a git object.
**Measured at:** 2026-10-12T21:06–21:16Z, against live Pages build of origin/main (race window c09cda79→0d134e3c — see §4, the site was literally being re-broken while measured).

---

## 1. Score table

| # | Category | Grade | Evidence | Fix | Status |
|---|----------|-------|----------|-----|--------|
| 1 | Link integrity (front page) | **D** (was A at 21:02, re-broken by 21:09) | 3 dead links re-introduced on index.html by commit 0a13b548: `github.com/roshpinacare-sys/TruthRail` → **404**, `github.com/roshpinacare-sys/Sandbox/blob/main/research/LEDGER.md` → **404**, `roshpinacare-sys.github.io/sovereign-lighthouse/` → **404** (no user-pages site exists) | Re-applied the twins' own audited fix (Lighthouse+Runner-Kit→working repos, dead research-ledger link de-linked) | ✅ fixed locally |
| 2 | Secret/exposure law | **F** (regression) | `receipts/key-check.json` (1,206B, forbidden path class per exposure law: key-verification receipt + custody-passphrase narrative — the law's own literals are self-redacted here; commit 05493622 removed it; racing commit 0a13b548 re-added it at HEAD) — `exposure-gate` would FAIL at current origin HEAD. **Second regression found during final scan:** `dex/onramp.json` re-published by local dex-mirror (5a7d209c, 21:16Z) with 2 unscrubbed owner-handle occurrences in narrative fields — the refs layer missed them | `git rm receipts/key-check.json` — redacted verdict summary kept HERE, not at the forbidden path: key-verification receipt, 4/4 authority match measured 2026-09-30, zero key material in file (longest string 125 chars, no hex/WIF shapes), restoration tx/block/chain refs + 2 owner trace ids — all class-forbidden, verdict facts stay in Actions summary + private custody. `dex/onramp.json`: both handle occurrences re-ref'd to the public-safe form used by reports.html (the-head), JSON re-validated, scan now PASS | ✅ fixed locally |
| 3 | Index information architecture | **C-** | 77 live HTML pages, front page linked only ~10 of them; 55 pages reachable only via sitemap.html; no hierarchy on the front page (owner's "לא מאורגן" is measured-true) | New `#map` section on index: 6 categories (פאנלים חיים / אמת וקבלות / מנועים וספרים / מדידה מול ענקים / שיווק ועיתונות / פידים למכונות), HE+EN labels, honest status chips with measured timestamps, 26 newly-surfaced links, plain inline CSS reusing the page's tokens, mobile-first (reuses `.grid` 1→3 col) | ✅ fixed locally |
| 4 | Freshness surfacing | **C** | Receipt wall stamp: `receipts/index.html` shows "תאריך אימות אחרון: 2026-09-12 10:30Z" = **30 days old**; oldest surfaced receipts r35=2026-09-17 (597h), r40/r44=2026-09-18; newest chain-anchored surfaced receipt 2026-09-2x vs newest repo receipt 2026-10-12 (agents/receipts/g1-2-never-stops) never surfaced on a page. Front-page probes (hive/blurt) fed by `dex/office-feed.json` carry `probes.hive.at=2026-10-11T15:18Z` → >24h → stale chip (honest, but stale). `content/published.json` = **`"posts":[]`** (205B, empty). `dex/deposits.json` = `deposits:[]`. 186 of 289 repo JSONs carry temporal fields >24h stale (worst: `weave/census.json` 676h, `agent/state.json` 504h — data books, mostly not surfaced as "current") | Front-page directory now carries per-section honest freshness chips ("חי · נמדד …", "קבלות-נצח · חותמת-אימות אחרונה 2026-09-12") instead of hiding age | ✅ surfaced; producers need Actions (backlog) |
| 5 | Dead/duplicate/odd pages | **B-** | `404.html` only properly-orphaned page; `roast.html` = clean tombstone (retired R58, meta-refresh to truth.html); `hub/explainer/index.html` = 442B meta-refresh stub (legit); 4 drifted copies of the Identity-API doc + 2 dup pitch/one-pager pages existed — already canonicalized to noindex stubs by roast-v3 (0a13b548); `assets/og-cover.png` (1,036,892B) 404s live — roast-v3 replaced with 60KB jpg, 0 png refs remain at HEAD | Verified, nothing further to delete statically (no zero-byte junk; `dex/mirror-stub.json` is an intentional honest stub) | ✅ verified clean |
| 6 | Standards hygiene | **B** | All 77 pages have `<title>`+`lang`; 23 pages lack a nav path back to index (deep content pages); `office3d/index.html` had `<link rel="preconnect" href="/">` → href resolves to org-root **404** (and Pages-auditor skips office3d lane so no one measured it) | Removed the bogus preconnect | ✅ fixed locally |
| 7 | External link hygiene | **B+** | 96/99 first-party+external links 200; `hub/fact-sheet.html` transient **503** during crawl → 200 ×3 on retry (105,839B, Pages hiccup, not a finding); etherscan 403 / solscan 403 / hiveblocks 502 = external anti-bot, correctly classified EXTERNAL-BLOCKED by the auditor | none needed | ✅ double-confirmed |

**Overall grade: before 5.5/10 ("מלא דברים סגורים, שבור ולא מאורגן" — the owner was measured-right on links/exposure/IA), after local fixes 8.5/10** — pending push (see backlog: the live site stays broken until a PAT arrives).

## 2. Link-status table (interesting rows only; full crawl = 119 URLs)

| URL (Domain/…) | HTTP | bytes | verdict |
|---|---|---|---|
| `/` index | 200 | 59,137 → 61,687 (re-measured post-0a13b548) | OK but content regressed (see §4) |
| `giants.html` | 200 | 52,944 | OK |
| `reports.html` | 200 | 9,550 | OK — but indexes 4 reports, all "משמרת-פרטית 🔒" (locked, no links; honesty note present) |
| `sitemap.html` / `sitemap.xml` | 200 | 13,942 / 8,568 | OK — 77/77 HTML pages reachable through it (no true orphans) |
| `marketing/`, `office3d/`, `verify/` | 200 | 18,513 / 15,990 / 42,422 | OK |
| `dex/world.json`, `dex/grid.json`, `dex/office-feed.json`, `dex/deposits.json`, `office/data.json`, `status.json` | 200 | 63,260 / 16,896 / 4,034 / **80** / 3,986 / 35,695 | OK; deposits feed 80B empty shell |
| `assets/og-cover.png` | **404** | 4,939 | dead at live build; HEAD already migrated to `og-cover.jpg` (61,804B) — fixes itself on next Pages build |
| `github.com/roshpinacare-sys/TruthRail` | **404** | — | dead link on front page (re-introduced by 0a13b548) → repaired |
| `github.com/roshpinacare-sys/Sandbox/blob/main/research/LEDGER.md` | **404** | — | dead link in front-page JS (research panel) → de-linked |
| `roshpinacare-sys.github.io/sovereign-lighthouse/` | **404** | — | Pages site never existed; repo does (200) → link re-pointed to repo |
| office3d `preconnect href="/"` | **404** | 4,939 | org-root has no Pages site → removed |
| `receipts/key-check.json` | 200 | 1,206 | forbidden-path class re-published → removed at HEAD |
| etherscan.io tx | 403 | 5,603 | external anti-bot (EXTERNAL-BLOCKED, not ours) |
| solscan.com tx | 403 | 5,305 | external anti-bot |
| `hub/fact-sheet.html` | 503→200 | 105,839 | transient Pages hiccup (3/3 retries OK) |

## 3. Freshness ledger (what the pages surface)

- **status.json** `generatedAt=2026-10-12T20:53:54Z` → 13min old at measure time. FRESH (grid-sentinel lane works).
- **office/data.json** `generatedAt=19:53Z`, office-state 1.3h. FRESH.
- **dex/world.json** published 05:52Z (15.3h), **dex/grid.json** 13:00Z (8h). OK.
- **dex/office-feed.json** internal `probes.hive.at=2026-10-11T15:18Z`, `probes.blurt.at` same → **>24h**; `learning.external.at=2026-10-10` → 2d. Front page honestly renders the stale chip; producers stale (Actions lane).
- **content/published.json** `posts:[]` — the public content engine currently publishes NOTHING (205B empty shell).
- **receipts wall** verification stamp 2026-09-12 (30d); wall's newest anchored receipt ~2026-09-2x; repo's actual newest receipt 2026-10-12 never surfaced on any page.
- Repo-wide: 186/289 JSONs contain temporal fields >24h stale; worst offenders listed in §1.4.

## 4. Reconciliation — Actions `site-link-audit` vs this roast (double-confirmation)

- The FAIL receipt (`agents/site-audit.json` at commit **235d896a**, at=2026-10-12T20:55:54Z, `overall: FAIL`): 3 findings, all on `index.html` — exactly TruthRail 404, Sandbox/LEDGER.md 404, sovereign-lighthouse pages 404. **I independently measured the same 3 as 404** — and then watched commit **0a13b548 ("roast v3 standards-cure", racing from a pre-fix tree) re-introduce all three onto the live front page at 21:09Z** after the twins had fixed them (PASS receipt at=21:01:56Z, findings:0). My fix re-applies the audited fix verbatim. Same failures, found independently = double-confirmed, plus the root cause identified: **twin write-race on index.html + forbidden-path resurrection in the same commit**.
- The auditor's classification rules verified sound during my crawl: it correctly filters JS-template hrefs (`'+esc(..)+'`, `${..}` — I confirmed the only occurrences live inside `<script>` strings, not the DOM) and correctly labels etherscan/tronscan/hiveblocks blocks as EXTERNAL-BLOCKED, not findings. One measured blind spot: **it excludes `office3d/**`** (separate lane) — which is exactly where the `preconnect href="/"` 404 lived unmeasured. My crawl caught it.
- `scripts/exposure-scan.mjs` (the exposure law) run by me: **PASS on 7daac00e** (752 files), would **FAIL on current origin HEAD 0d134e3c** (key-check.json resurrected). After my removal it passes again.

## 5. What was fixed in this commit (all local, no push — no valid PAT in estate)

| File | Change |
|---|---|
| `index.html` | 3 dead links repaired (Lighthouse→repo, TruthRail→Runner-Kit repo, dead LEDGER.md link de-linked with honest inline note); new `#map` Site Directory section (6 categories, 26 surfaced links, HE+EN, honest freshness chips); nav pill `קטלוג`; all CSS inline in head, reuses estate tokens |
| `office3d/index.html` | removed `<link rel="preconnect" href="/">` (org-root 404) |
| `receipts/key-check.json` | DELETED (1,206B) — exposure-law re-removal (forbidden path class); redacted verdict summary lives in §1.2 here, not on the public path |
| `dex/onramp.json` | 2 unscrubbed owner-handle occurrences re-ref'd to public-safe form (regression introduced by dex-mirror 5a7d209c); JSON validity re-verified; exposure-scan PASS restored |
| `docs/roast-2026-10-13.md` | this report |

Not deleted: zero-byte junk (none exists), stubs/tombstones (all intentional), duplicated docs (already canonicalized by roast-v3).

## 6. Backlog — NOT fixable statically (owner/Actions-gated), prioritized

**P0 (needs a PAT to reach the live site):**
1. **Push the local commits.** Until then the LIVE site keeps serving: 3 dead front-page links, `receipts/key-check.json` (exposure-gate FAIL class), 1MB og-cover.png 404. The estate's flush-daemon doctrine covers this the moment a valid PAT lands (upload Tt.txt is a REVOKED token; pat.env arrived redacted).
2. **Twin write-race protocol:** two roast agents + twins committed conflicting index.html/receipts within 6 minutes (c09cda79 → 05493622 → 0a13b548). Actions-side rebase discipline exists; add a rule: any agent touching `index.html` must `fetch+rebase` within 60s before commit (this roast followed it).

**P1 (Actions-side producers):**
3. `site-link-audit` will re-FAIL on the live build until the flush — expected red, honest; do not mute it.
4. `exposure-gate` FAIL at HEAD while key-check.json is resurrected — same flush dependency.
5. `content/published.json` empty (`posts:[]`) — content engine must actually publish to the public face.
6. `dex/office-feed.json` hive/blurt probes >24h — probe lane refresh.
7. Receipt wall stamp (2026-09-12) — needs a beat that re-verifies the wall and bumps the stamp; surface newest receipts (2026-10-12) on a page.

**P2 (polish):**
8. 23 deep pages without a nav path back to index (hub/*, market/*, deck/*, pitch/*) — add the shared footer nav everywhere.
9. `reports.html` is a table of 4 locked rows — either publish unlocked summaries or fold it into receipts wall.
10. dex/deposits.json 80B empty shell — either fill from the private lane or state "no public deposits" in-page (it does, via index chips).

## 7. Laws honored

- Evidence over claims: every finding above carries HTTP code + bytes or a git object.
- Byte-level proof before declaring damage: the console renderer eats `[`/`]` sequences (estate law) — the suspected `branches: ain]` YAML corruption in `exposure-gate.yml`/`bootstrap-pages.yml` was `od -c`-verified to actually be `branches: [main]` — **not** a finding. The `verify/'+esc(steemUrl)+'` crawler artifact was source-verified as a JS string (line 539), not a DOM bug.
- Fail loud: this report is the loud part.
