---
title: "The Book of Doug — Where We Are"
description: "The Book is live, in production, and full. Doctrine registry on the capcom pair, a deterministic judge watching CLI turns, prayers with Angels that find lawful paths, an Audience flow with REVEAL/DISPENSE/REAFFIRM, a…"
created: 2026-09-20
updated: 2026-09-21
authors: ThinkingCap R&D
topics: [CapCom]
status: published
canonical: https://console.thinkingcap.com/rd/CapCom/Tooling/book-of-doug-WHERE-WE-ARE
date: 2026-09-20
---

# The Book of Doug — Where We Are
**Handoff state · 2026-09-19 · for a fresh start tomorrow**

---

## The one-paragraph version

The Book is **live, in production, and full**. Doctrine registry on the capcom
pair, a deterministic judge watching CLI turns, prayers with Angels that find
lawful paths, an Audience flow with REVEAL/DISPENSE/REAFFIRM, a **pause** on
prayer (proposed law DOUG-0158), and a corpus pipeline that just ingested
Douglas's entire memory file into **566 new PROPOSED entries**. The loom
(Designer persona) has run the deny → pray → pause → answered loop twice,
live, with Douglas watching the second.

**Registry: 607 entries — 23 ACTIVE · 583 PROPOSED · 1 REJECTED.**

---

## What's live (all of it, today)

| Piece | Where | State |
|---|---|---|
| The Book page | capcom → Development → The Book | 4 tabs: Book / Audience / Angels / Rulings. Read-only for all; rulings Doug-only. (Latest fixes ride the next roll: tab-index `de22aba`, TDZ `4a58e56`) |
| The island | `tc-svc-book` @ `16750e3`, both pair nodes, port 3100 | doctrine, judge ledger, prayers/angels, /check, prayer-status, Audience email |
| The judge hook | `~/agent-ops/bin/book-judge.py` | DENY/ASK/WARN + `--check` consult + `--pray --wait` brake. Live in both settings.json |
| MCP surface | capcom-mcp `BookProvider` | 7 `book_*` tools, flat-listed (`23d6225`); direct looms get them via the one exception to the strip (`e461fa4`) |
| The pause | hook `--pray --wait` (live) + `/prayer-status` door + Audience email on AWAITING_AUDIENCE (island `16750e3`) | proven in drills #1/#2 |
| Corpus pipeline | `tc-svc-book/scripts/ingest.py` | subprocess-isolated, disk-persistent, dedupe batched |

## The receipts so far

- **PRAYER-0001** (loom, DOUG-0018) → Angel found git+dev-deploy; the marker
  was deployed (`51a6d78`). Closable as satisfied from the page.
- **PRAYER-0002 / PRAYER-0003** (pause drills) → both Angels answered with
  lawful paths; the pause held on camera.
- **Drills exposed and fixed:** prayer default status (migration 279), tool
  guide gap, tool-surface flicker (fail-soft hold-last-known-good `7effde3`).
- **Corpus pass:** 63/63 chunks, 599 candidates, **566 PROPOSED** (set D,
  paraphrase-marked per §16), 37 duplicates skipped, **13 contradictions
  flagged**, 0 errors. The run died 4× to this box's segfaulting CPython
  before subprocess isolation + disk persistence made crashes boring.

---

## Open items — in the order they matter

### 1. Ruling at scale (THE design question waiting on Douglas)
583 PROPOSED can't be ruled one-by-one. Suggested shape: eyes on the **13
contradictions** first (real seams — the pattern DOUG-0142 established),
spot-check the rest, and a **bulk-ruling affordance on the page** (approve a
filtered set with one recorded ruling per batch; every entry individually
smitable after). Douglas decides the shape; build is next.

### 2. Small closes, one click each
- **DOUG-0018** (tapestry-live) — the only pre-corpus PROPOSED; judge already enforces it.
- **DOUG-0158** (the pause) — Douglas's own words as source passage.
- **PRAYER-0001** — mark satisfied (its lawful path was deployed).
- **~20 corpus files** (chunks 41/45, double-SIGSEGV) — rerun for full coverage:
  `INGEST_CHUNK=10 python3 scripts/ingest.py --paraphrase <those files>`.

### 3. The build map after that
- **8b** — `BOOK: COMPLIANT` on service cards, services linking to governing laws.
- **DOUG-0014 reconciliation** — 13 GitHub-CI surfaces + patterns repo to local;
  the judge's WARN ledger is the evidence trail; exceptions file empties → DENY ratchet.
- **Plan-level law coverage** — richer `action_type: plan` intent envelopes for
  /check (HA pair, one-engine-per-queue are REVIEW today).

---

## Where everything lives

- **Island repo:** `tc-svc-book` (srv bare `/srv/git/tc-svc-book.git`).
  Domain: `server/{index,angel,check,seed,monitor,notify,db,settings}.ts`,
  `scripts/ingest.py`.
- **capcom:** page `apps/web/src/pages/BookPage.tsx`, proxy `apps/api/server/routes/book.ts`,
  migrations 272–279 in `apps/api/db/migrations/`.
- **Judge:** `~/agent-ops/bin/book-judge.py` (+ exceptions file, saith cache).
- **MCP:** `~/capcom-mcp/src/providers/bookProvider.ts` (env in `~/capcom-mcp/.env`).
- **Keys (600, gitignored):** `~/agent-ops/.book-service-key`,
  `~/agent-ops/.book-ingress-key` — both already in `/etc/capcom/patch.env`
  on both pair nodes + capcom-mcp's `.env`.
- **Docs in this share:** `book-of-doug-implementation-runbook.md` (the charter,
  also Chapter 0 on the page), `book-of-doug-whitepaper.md` (public),
  `book-of-doug-progress-and-roadmap.md`, `book-503-fix-runbook.md` (env/NSG/
  container specifics), `book-doctrine-proposals-001.yaml` (the original 24).
- **Transcript:** `~/.claude/sessions/2026-09-17-book-of-doug-page.txt` —
  the whole saga, blow by blow.
- **Memory:** `~/.claude-kimi/projects/-home-thinkingcap/memory/book-of-doug-project.md`.

## Resume checklist for tomorrow

1. `curl -s -H "x-book-service-key: $(cat ~/agent-ops/.book-service-key)" http://20.104.63.213:3100/state | python3 -c "import json,sys; d=json.load(sys.stdin); print(len(d['doctrine']))"` → expect 607.
2. Decide the bulk-ruling shape → build it (§1).
3. The three one-clicks (§2).
4. Then 8b or the DOUG-0014 reconciliation.

*So saith the receipts.*
