Craig Wright Archive Study Guide & Knowledge Base
Curation note. This page is Craig-agent's operational read of the archive. Primary data lives in BASELINE.json, wisdom/insights-v3.json, blog/metadata.json, substack/metadata.json, audits/, and .beads/issues.jsonl. Stat cards below are current-actual vs BASELINE floor — a live comparison, not an authoritative source.
Jump: Dashboard Operations Audit panel

Dashboard — archive health

795
Blog posts (scraped)
910,728 words
= floor 795
525
Substack posts
2,677,438 words
= floor 525
42,162
Wisdom insights (v3 unified)
fact schema (word_count + hits, no invented tiers)
+31,392 vs floor 10,770
1,105
Tweets kept (merged, is_craig)
API-scraped + Wayback-recovered
= floor 1,105
22
Talks transcripts
118 in inventory
= floor 22
22
Court PDFs
5 cases (COPA, McCormack, Kleiman, BTC Core)
= floor 22
2
Verified books
6 candidates need research
= floor 2

BASELINE.json generated 2026-09-23T16:31Z by craig-s26. Deltas compare live source-of-truth counts against the recorded floor. Negative = red (investigate); zero/positive = green.

Operations

operations panel — locked
Click unlock to enable Run buttons. Copy-command buttons are always active.
In-process (subprocess, 30-min timeout)
Re-run blog-categorise
Recomputes blog/metadata.json topic tags from raw markdown. Fast (~30s). No network.
python3 scripts/blog-categorise.py
Re-run blog-topic-evidence
Regenerates per-post topic-evidence sidecars. Fast. No network.
python3 scripts/blog-topic-evidence.py
Re-run wisdom-v3-unify
Rebuilds wisdom/insights-v3.json from blog + substack shadow files. Local only.
python3 scripts/wisdom-v3-unify.py
Run audit-sample --target=blog-tags
Writes today's audits/inputs-YYYY-MM-DD/blog-tags-sample.json. Deterministic; local only.
python3 scripts/audit-sample.py --target blog-tags
Run audit-sample --target=wisdom-longform
Writes today's wisdom-sample.json (top decile by word_count, seeded). Local only.
python3 scripts/audit-sample.py --target wisdom-longform
Run check-baseline
Regression gate: parsed counts vs BASELINE.json minima. Non-zero exit == regression.
python3 scripts/check-baseline.py
Copy-command (heavy / network / quota — run in terminal)
Re-run substack-discover copy-command
Hits singulargrit.substack.com sitemap. Network. Copy → run in terminal.
python3 scripts/substack-discover.py
Re-run substack-scraper copy-command
Downloads full-text of every discovered post via authenticated session. Slow, network, credential-scoped. Copy-only.
python3 scripts/substack-scraper.py
Re-run substack-wisdom-extract copy-command
Re-extracts fact-schema wisdom from 525 substack raw posts (~2-5 min, 32k+ records). Copy-only.
python3 scripts/substack-wisdom-extract.py

Audit panel

Latest audit reports

Latest audit input batches (deterministic samples)

inputs-2026-09-23
wisdom-sample.json (7,869b)
inputs-2026-09-18
blog-tags-sample.json (13,296b) wisdom-sample.json (24,869b)
inputs-2026-04-24
blog-tags-sample.json (8,293b) tier1-sample.json (11,836b) topic-crossref-sample.json (3,669b) wisdom-sample.json (19,597b)

Active beads (open + in_progress)

Waiting on Adam (label: adam-blocker)

Running…