7ffcc0be30
Codex spotted the one remaining unsigned BRIEF_VIEW_KEY write — in replaceArticle. Not a safety issue (instant-paint requires cached.sig, so an unsigned entry just won't instant-paint), but it meant the next load after a Replace fell back to "Gathering…" until a fresh /api/brief re-saved the signed version. Now every brief save includes sig: briefSig() (computed after dismissed updates), so an edited brief still instant-paints. All three save paths verified signed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>