Audit 12 F12.4: synth/pending.py and preference/pending.py were 90%+ identical — same JSON schema, same load/save/clear shape, same Section payload encoding (load tolerates the small per-domain field-set asymmetry). Move I/O to dlm._pending; each domain module shrinks to a thin typed shim that supplies (subdir, plan class, error class). Public API preserved (test imports still resolve including the private helpers); 470 tests pass. Net wins: one place to fix bugs in the I/O path; adding a third pending domain (e.g. harvest) is now a 30-line shim.
Audit 12 F12.3: 6 'except Exception' sites caught everything from KeyboardInterrupt to MemoryError to AssertionError, masking real signal. Replaced each with a deliberate type list — RuntimeError + (OSError|ValueError|...) where appropriate — and added _LOG.warning/debug at each so silenced failures are still visible. Existing tests guided which types each site genuinely needs to swallow.
B12.1's fresh-store manifest bootstrap calls is_gated(spec), which reads requires_acceptance. Six tests under test_train_watch_edges.py mocked the spec via SimpleNamespace and were missing this field.
Diff-based, fires on staged additions. Pregate already runs a similar pre-push check; this hook is the earlier guard so the rule fires before each commit instead of waiting for the push.
Audit 12 M12.3: 22+ historical sprint IDs in module docstrings and one user-visible CLI help string. Each rewritten to describe the code rather than the work-tracking artifact that birthed it.
Audit 12 M12.6: 'hf:smollm2-135m' was passed literally to HF Hub (401), inconsistent with 'dlm init --base smollm2-135m' which resolves the alias. Normalize at parse_teacher_ref's hf branch — canonical HF id wins, literal org/repo passes through unchanged.
Trainer's load_manifest call expected the file present, but a .dlm authored without 'dlm init' (LSP / VSCode flow, or hand-edited) only has the on-disk store after ensure_layout(). Drop the just_scaffolded gate so any never-init'd doc gets a fresh manifest before the load.