docs(events): what the integration kit's fifth chapter settled (Phase 15)

§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
This commit is contained in:
2026-09-08 18:11:39 -05:00
parent c7c526a50b
commit 5d48e7f256
2 changed files with 51 additions and 1 deletions

View File

@@ -1796,6 +1796,16 @@ confirming it, and under-declaring `cost`.
**Like Teams Phase 11, this cannot merge until the cutover exists** — the kit is pinned to a `main`
sha, and the contract it teaches is not on `main` until then.
> **Built** as `Integration-kit#10` + `docs#226`, red on `checkCoreApi` by design. **It is three
> chapters, not one, and the template gains code.** The book taught a read-only data path end to end
> and never told anyone to build a command path, so chapters 3 and 4 gain one section each (§2a; *"A
> command that changes the world runs at most once"*), both skippable until you want chapter 5. The
> template ships one budget, one option source, one lease and one ledgering action plus
> `server/sidecarClient.js` — named for the filename `noGameConnection.test.js` already anticipated,
> with a real timeout, a real key passthrough and a simulated transport in one replaceable function.
> Running those through core's REAL registry and dispatcher at `edge` is what found the two defects
> §F now records; the prose found neither.
---
### Phase 16 — Acceptance walk and cutover