assets: give the bucket a register, and ignore the scratch drawer master
Two hygiene fixes the traffic audit turned up. tmp/ was never ignored, so 130+ probe scripts and QA frame dumps sat in every `git status` on both machines — ~290 MB, 2,359 of them frame JPGs from two oskiewar oven smoke runs. That noise is how the arxiv-ios-so-far paper source went uncommitted long enough for its PDF to ship without it. Ignore the drawer, negate the two subtrees that are genuinely tracked (tmp/imagegen, tmp/laklok-touch-probe.mjs), and ignore .tmp-pr*/ agent worktrees. Untracked count on neo: 205 -> 57. toolchain/assets/sync-index.mjs is the assets counterpart to papers/sync-platter.mjs. There was no asset register at all: the bytes live in s3://assets-aesthetic-computer, pop/ASSETS.md covers policy for pop media only, and answering "what have we stored and where" required credentials, a network, and knowing the bucket's name. Now git holds the register and Spaces holds the bytes. Every prefix is listed whether or not anyone has described it, because the point is that nothing is invisible; an empty note is a prompt, not a resting state. The generator refuses to write when its parse disagrees with the bucket's own Total Objects / Total Size, since a confidently wrong register is worse than none — the same failure mode as the sfo3 sync that exits 0 while stranding files.