# Exception review queue — Ho Hum (read-only view)

Human-in-the-loop desk for Better World. **Agents draft; Ho Hum decides.**
This page is a **read-only** snapshot of open items. Live data: `data/review/queue.json` · API: `GET /v1/review/queue` (default `?status=open`; use `?status=all` for history).

| Field | Value |
|-------|-------|
| Generated | `2026-10-01` |
| **Open** | **2** |
| Approved (history) | 3 |
| Schema | `schema/exception_review.schema.json` |
| Ops | [`docs/exception-review-ops.md`](../../docs/exception-review-ops.md) |
| Red lines | [`docs/red-lines-and-exceptions.md`](../../docs/red-lines-and-exceptions.md) |

## How Ho Hum resolves (offline — no write API)

1. List open items: `python3 scripts/list_review_queue.py` or `curl -s 'http://127.0.0.1:8787/v1/review/queue'`.
2. Open the cited `source` (org JSON, claims index, trust flags).
3. Decide **approved** or **rejected**.
4. **Edit `data/review/queue.json` by hand** — set `status`, fill `reviewer_notes`.
5. If data must change, edit the cited `data/orgs/*.json` **with citations only**, then run `python3 scripts/lint_data.py` and `python3 scripts/lint_honesty.py`.

There is **no** `POST /v1/review/...` approve endpoint and **must not** be one without auth. Agents must **never auto-clear trust flags** to close a ticket.

## Open items

### 1. `exc_20261001_actra_donate` — **high** / open

| | |
|---|---|
| **org_id** | `org_actra` |
| **claim_id** | `—` |
| **requested_by** | lint |
| **created_at** | 2026-10-01 |
| **source** | `data/orgs/org_actra.json#trust` |

**Reason**

org_actra now has website + donate_url on file, but trust.website_reachable=unchecked, donate_url_status=none, http_checks=[], and flags still include WEBSITE_NOT_ON_FILE / HTTP_CHECK_PENDING / WEBSITE_UNVERIFIED. Human HTTP verification (or intentional mark) still needed before recommending a giving path. Do not invent CE.

**Recommended human action**

HTTP-verify (or intentionally mark) org_actra website + donate_url; update trust.website_reachable, donate_url_status, http_checks[]; clear WEBSITE_NOT_ON_FILE / HTTP_CHECK_PENDING / WEBSITE_UNVERIFIED only with evidence. Then set this queue item status=approved|rejected with reviewer_notes. Do not invent CE or URLs. Offline edit: data/orgs/org_actra.json + data/review/queue.json.

### 2. `exc_20261001_actra_claim_shallow` — **medium** / open

| | |
|---|---|
| **org_id** | `org_actra` |
| **claim_id** | `eval_org_actra__0` |
| **requested_by** | agent |
| **created_at** | 2026-10-01 |
| **source** | `data/claims_index.json#eval_org_actra__0` |

**Reason**

Contested presentation risk: claim eval_org_actra__0 (WELLBYs per $1,000 = 37, unit WELLBY_per_1000_USD, period HLI honourable) is verified=true from HLI's honourable-mention list but confidence=low and org summary calls it a shallow prediction. Human should confirm UI/API never presents this as HLI Top Charity CE, and that honourable_mention tier stays visible.

**Recommended human action**

Confirm recommend/compare and org pages never present claim eval_org_actra__0 (HLI honourable / low-confidence WELLBY) as Top Charity CE; keep honourable_mention / shallow labeling visible. If presentation is already honest, approve with notes; else reject any elevation and fix copy. Do not invent CE. Offline edit: data/review/queue.json (+ org/claim docs if needed).

## Recently approved (context)

Not actionable — listed so agents do not re-open without new evidence.

- `exc_20261001_path_ein` (`org_path`) — Resolved by enrichment_pass 2026-10-01: PATH EIN 91-1157127 from official finances page; matched EO BMF → irs_status=exempt_501c3_eo_bmf. See data/qa/enrichment…
- `exc_20261001_living_goods_ein` (`org_living_goods`) — Resolved by enrichment_pass 2026-10-01: Living Goods EIN 20-5010527 from official donate page; matched EO BMF → irs_status=exempt_501c3_eo_bmf. See data/qa/enri…
- `exc_20261001_gw_tcf_irs_claimed` (`org_givewell_top_charities_fund`) — Resolved by enrichment_pass 2026-10-01: GiveWell funds (Top Charities / All Grants / Unrestricted) use Clear Fund EIN 20-8625442; matched EO BMF → irs_status=ex…

## Agent rules

- **Never auto-clear trust flags** (`WEBSITE_*`, `HTTP_CHECK_PENDING`, `EIN_UNKNOWN`, `IRS_TEOS_LOOKUP_PENDING`, etc.) to make a recommendation look clean.
- Never invent CE, EINs, donate URLs, or IRS statuses while “helping” clear the queue.
- Leave status `open` until Ho Hum edits the JSON.
- Surface open exceptions when recommending the same `org_id`.

CLI: `python3 scripts/list_review_queue.py` · Demo panel: `/demo/` section “Exception review”.
