§F's Integration Kit paragraph gains what building it produced, and §H loses an
envelope member that does not exist.
**It is three chapters, not one.** The book taught a read-only data path end to
end and never told anyone to build a command path, so a chapter 5 teaching a
module to send an idempotency key would have addressed it to a sidecar with
nowhere to put it. Chapters 3 and 4 each gain one section, both skippable.
**Two defects, both found by running the template through core's real registry
and real dispatcher rather than by writing prose:**
* **An idempotency key belongs on a command, never on a question.** A read
carrying one is answered by an at-most-once store with the FIRST read's
reply, forever — the lease applied correctly and the module could no longer
see it.
* **§H named a `detail` member on an envelope and `classify()` has never read
one.** The sentence §H was making is right and its example was wrong: a
revert of something gone is `{ ok: true }`. Corrected in place, with the
finding recorded in §F.
That second one has a consequence outside this PR: **`module-uo` took §H at its
word twice.** `uo.item.grant` answers `detail: { granted, missed, why }` and
`uo.world.save` answers `detail: { started: true }`, and neither reaches a
screen or the ledger. The grant is the one that matters — which recipients did
not receive the item is reported nowhere else. Recorded here rather than fixed;
the fix is a Module-uo change and is the org lead's call.
Pairs with Integration-kit#10, which is red on `checkCoreApi` by design and
merges in the P16 cutover with its pin move.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016wDDVXWMDz82WqE1i969r4