ammo-reload ยท diff

git:20260912.78b4003 to git:20260913.0472540

14 added, 13 removed. Audit A to A.

---
name: ammo-reload
- description: Magazines, reserve, reload move. Ask infinite vs mag-and-reserve vs one-shot-chamber. Reload is a move on the action-feel graph. Interact and reload are different keys.
+ description: Use when weapons need magazine/chamber/reserve ammunition, shot consumption and reload transfer with atomic resource updates, interruption/cancel policy and semantic input actions.
---
# Ammo and reload
- Ask the column:
+ ## Compatible modes
- | Column | What empties |
- |---|---|
- | infinite | no count |
- | mag-and-reserve | mag + pack |
- | one-shot-chamber | each shot is a commit |
+ `infinite` | `mag-and-reserve` | `one-shot-chamber`
+ ## Resource contract
+
+ Publish weapon/ammo resource IDs, magazine/chamber capacity, reserve ownership, fire consume boundary, reload transfer policy, cancel/interruption state and a stable **reload transaction** ID for each committed transfer.
+
## Rules
- 1. Reload has start / active / cancel. Firing during reload only if the graph says so.
- 2. Empty mag does not eat the next interact. See input-design.
- 3. Reserve is inventory. A shop refill uses shop-price, not a silent debug grant.
- 4. ADS and hip share the same ammo pool unless the column splits them.
- 5. Juice muzzle flash is not a spent round. Count changes on the logic frame of the shot.
+ 1. Fire/reload are semantic actions routed through `input-design`; do not require reload and interact to use universally different physical keys.
+ 2. A shot consumes ammo once at the authoritative fire/shot-commit event. Muzzle flash/audio/animation never spends ammunition.
+ 3. Reload magazine/reserve movement is **atomic** at the published commit boundary (or explicit staged transfers when the design uses them). Cancellation cannot invent or destroy rounds.
+ 4. Repeated/resimulated reload callbacks use the same reload transaction identity and remain idempotent.
+ 5. Firing/ADS/hip/cancel behavior during reload is project action-graph data; shared/split ammo pools are declared rather than assumed.
+ 6. Inventory/shop/economy replenishment uses their own transaction owners and stable ammo resource ID.
## Accept
- Player can say how many shots remain without a wiki. Cancelled reload does not invent a full mag.
+ Reconcile magazine/chamber/reserve across fire, exact-empty, partial reload, cancel before/after commit, duplicate callback, weapon swap and insufficient reserve. Total ammo changes only through named consumption/grant transactions.