v0.30.2 — creation events and the contention table
Two gaps the first real run of /architect:design-state-machine (the ec-monolith sample, Order aggregate, seven stages end to end) surfaced in the skill itself.
Added
- Creation events are modeled. The command that brings the aggregate into being (
place,open,register) is an event with a guard and an actor but nofromstate: a failed guard means no aggregate, not a cancelled one, and the only way it reaches an existing aggregate is a redelivery of the same request — so its whole matrix column is decided by the API's idempotency contract (ignorewhere the operation replays, neverallow). The rule states it, Stage 3 looks the contract up before asking, and the document template carries the[*]row. - The contention table. Stage 5 now builds one row per pair of transitions different actors can fire against one aggregate — orchestrator vs. recovery worker, request path vs. sweeper, two clients on one key — naming who wins and what the loser does, resolved from the transaction design first and asked only where it is silent. A pair with no row is a race nobody designed.
No manifest schema change; 0.30.1 manifests validate unchanged.
Full detail: CHANGELOG.md (日本語).