The atom system

Measured 2026-08-10 against pearlstar_gitea/offline-main. Every number here was counted this session, not carried from a prior document.

correction  The handoff this page replaces (ATOM_SYSTEM_ANALYSIS_HANDOFF_20260809.md) states that atoms/{persona}/{topic}/{TYPE}/ does not exist and that all atoms live in teacher_banks/. Both halves are wrong. The path exists, holds 246 persona×topic cells, and today's render trace resolves atoms/corporate_managers/anxiety/HOOK/CANONICAL.txt:28. Its atom counts (STORY 480, "3,558 total") match neither bank measured here.

Two banks, counted separately

There are two parallel atom banks. They are not alternatives to each other and must never be added into one total.

Slot typePersona bankTeacher bank
STORY4,184281
HOOK5,339207
REFLECTION5,936258
EXERCISE2,579270
SCENE4,417197
INTEGRATION4,883197
PIVOT2,079216
COMPRESSION3,434236
TAKEAWAY2,069236
THREAD2,027236
PERMISSION2,045222
TEACHER_DOCTRINE9391
base-layout total65,8502,653

Persona counts are ## headers in atoms/{persona}/{topic}/{TYPE}/CANONICAL.txt — 3,762 files, 246 cells, en-US base layout only. Teacher counts are .yaml files under teacher_banks/{teacher}/approved_atoms/{TYPE}/ — 15 teachers. Spot-checked: corporate_managers/anxiety/STORY holds 20, consistent with the aggregate.

Why earlier counts disagreed so wildly. The atoms/ tree has four layouts at overlapping depths — base, anchored/, engine-keyed, and locale copies. 18,629 of the 23,853 CANONICAL.txt files are locale translations. A naïve recursive count returns ~173,000 and means nothing. Any atom count must state its scope or it is not a number.

Which bank is used

Persona bank is the default path. Teacher bank wins the enrichment_select waterfall only when teacher_id is set. A book rendered without --teacher never touches teacher_banks/.

Verified on a render executed today — corporate_managers × anxiety × overwhelm, no teacher flag — whose human_atom_trace.txt resolves every slot to atoms/…/CANONICAL.txt.

The other supplies

SystemCountLocation / status
Five-layer practices311practice_library/inbox/*_PRODUCTION_READY.json — teacher-agnostic, LIVE
Practice items (store)272practice_library/store/practice_items.jsonl — eligible for every cell
Story arc banks10 cellsstory_atoms/{persona}/anchored/{topic}/{engine}/ — was 9; corporate_managers × anxiety added 2026-08-10
External stories6 topicsaccent_banks/external_stories/ — seeded; consumer status unresolved
Surface taxonomy11 typesconfig/atoms/surface_taxonomy.yaml — status: warn_only_measurement, not enforced

What changed on 2026-08-10

Open, with evidence

Sources: docs/agent_prompt_packs/20260810_atom_system_fix/, docs/BOOK_PIPELINE_FULL_AUDIT_2026-08-10.md, docs/handoffs/ATOM_SYSTEM_ANALYSIS_HANDOFF_20260809.md (superseded on counts).