ADR 0105: Shared whole-parent readiness and single-issuer publication
Context
Shared producer participation is not the same thing as Shared parent coverage or
consumer visibility. A producer mask such as 0001 can describe one PE that
writes a complete Shared parent, while a later consumer may use a different
mask. The previous model conflated fixed-quarter initialization with readiness.
Decision
B.IOS without B.ASSEMBLE is legal only for one participating issuer PE. That
issuer writes and publishes the complete logical Shared parent; PE_MASK never
creates implicit quarters or offsets. A multi-PE producer must use B.ASSEMBLE
with explicit per-PE offsets, non-overlap checks, complete coverage, and an
atomic LAST publication.
Shared generation state records producer participation/metadata, logical
coverage, parent-level whole_parent_ready, and consumer-visible published
separately. Readiness is hardware-maintained. A pending or incomplete
assembled generation does not replace the prior published generation and is
not readable by a Shared consumer. Every Shared consumer waits/no-ops before
payload access until both whole_parent_ready and published are true.
No READY instruction or READY encoding field is added.
Consequences
- A producer mask is independent of a consumer mask.
- A one-PE full writer can publish a 32 KiB or larger Shared parent without requiring all four PE bits.
- Undefined Shared words are not a legal pending-source path for TSTORE, TMOV, or Shared-input TMATMUL.
Verification
Focused AVS points cover single-PE whole-parent publication, sparse producer
masks, atomic assembled LAST, incomplete-generation waiting, and preservation
of the prior published generation.