#337 read the registration kind of held accounts that lack one, but only from inside the start-up relay read. A start restored from state.json skips that read ("the view was restored; the relay is read only if the stream skips"), so in production the kind was never read, and accounts like sanidine-hummingbird still serve registeredKind: null.
The read now runs at the start of the ledger filler (fill::run), which every start spawns, restored or cold. Before its first pass it reads the registration of each held account the view has without a kind, once and one at a time, fill::PACE (250 ms) apart, as its ledger reads are. It sets the kind without touching dormancy and announces it. The relay read no longer does this, and docs/state.md says so. The test from #337 now drives a restored start the way the binary does, with the stream resuming and the filler beside it. It checks that the kinds are set and announced with no relay or repository read, each registration read once, and the accounts still dormant. It fails on main.
DEPLOY check: shortly after the restart, /view shows registeredKind for ephemera and foundry (host), and for sanidine-hummingbird (agent) once it is drawn. The index logs "read registrations for the kind a held account lacked" with set greater than zero.
🤖 Generated with Claude Code