bcd1e6f1

By: Michael Lynch <git@mtlynch.io>

Tighten FileID type and rename OriginalExt to StoredExt

- FileID is now a struct validated against lowercase UUID format on
  construction; NewFileID returns (FileID, error)
- Rename OriginalExt to StoredExt and return error on unknown media type
  to reflect that the extension is post-conversion, not the upload original
- Replace magic numbers 850/250/150 with named display-width constants
- Wire thumbnail width constants into the browse template sizes attribute

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Suite timing

Time to Start Worker time Duration Time to finish
Config 0s 1s 1s 1s
Eval 1s 41s 41s 43s
Build 3s 3m24s 1m04s 1m07s
Test - - - -
Deploy - - - -
Suite 0s 4m07s 1m07s 1m07s

Timeline

0s10s20s30s40s50s1m