Roll an n-sided die
QA says 'roll 6'; v1 ships /dado and /d<N> - alias table already covers both
/dice/dado/d20- v1 scenarios
- 3
- Ported
- 8
- Green
- 9
- Failing
- —
QA says 'roll 6'; v1 ships /dado and /d<N> - alias table already covers both
Miscellaneous.py:160-183What it does
Behaviour that must not change
The full behaviour contract lives in docs/contracts/fun_dice.md.
How to verify it
Random cause of death
unblocked by cb_worker.bucket_export + cb.py legacy-catalog, which turned v1's GCS Death/ prefix into a small package-data catalog (cb_core.legacy_assets) over content-addressed bytes in cb_core.storage - fun_meme's split, not fun_complaint's vendoring, since 21.5MB is past what belongs in the wheel. gif-vs-photo dispatch reads the catalog's source_path (v1's original filename), not the storage key's own extension, on purpose - see death.py. D-DE-1 (dropped skull-emoji prefix for a target with no username) preserved verbatim; D-DE-3 (v1's ValueError on an empty bucket listing) fixed - legacy_assets.choose() returns None and the handler answers nothing, the only state a real deployment can still be in before legacy-catalog has run. See docs/contracts/fun_death.md
Firecracker sequence
fun · M2