This artifact's `params.candidates` array is written mechanically by
`librarian(action="legibility_scan")`. Do NOT hand-synthesize it. On refresh,
the render_template projects the open/closed backlog table from params; the
Dzo's per-key verdict prose lives below the table and is human/Dzo-owned.