Add controller-level coverage for no-new-user reroll behavior:
AFTER_COMMANDS defers recall, BEFORE_COMBINE deterministically reapplies
stored per-floor recall, and misses fall back to legacy compute. Update
docs to describe compute/injection decoupling and recall cards as the
editable per-floor bme_recall source.
Reroll (swipe/regenerate/continue = no-new-user) now deterministically
reapplies the parent user floor's stored bme_recall block in
GENERATE_BEFORE_COMBINE_PROMPTS, bypassing the transaction gate and
runRecall entirely. AFTER_COMMANDS defers no-new-user work to
before-combine. Staleness guard recomputes when the user edited the
floor; settings gate honors plugin/recall disable. Fresh normal sends
are unaffected. Compute machinery retained as fallback.
Prior generation's recall transaction was reused for a later reroll
because findRecentGenerationRecallTransactionForChat matched by chat
alone and the peer-hook bridge forced reuse. That set shouldRun=false,
skipped runRecall, and bypassed the persisted-recall reuse gate, so
reroll silently inherited the previous fresh result. Stamp each
transaction with the active host generation id and scope recent-lookup
to the same generation, preserving intra-generation hook bridging.