The minimum item
Eight fields. Without them the assembler cannot place, rank, expire or trace the item, so it is refused at admission (R-2). Emit them on every item, every time, even when the value seems obvious.
Policy fields and slot defaults
Six more fields describe how an item may be handled. A producer that knows better than the slot default should set them. When it does not, the assembler fills them from the slot's defaults and the trace says so (R-3). These are the defaults the reference assembler ships with.
Producer kinds
Four kinds cover almost everything. Each has one slot it normally feeds, one authority ceiling it may not exceed, and one rule that is most often broken.
One item per passage, each with its rerank score and source version. The retriever owns rewrite, retrieve, rerank; the assembler owns deduplicate, filter, packetize, budget, attribute. An empty result set is a valid, recorded outcome; do not pad it.
Every entry carries expires (the TTL), source (the turn it was derived from), lineage: summarised | generated, a revocation reference when the user has contradicted it, and trust: unverified. Expired or revoked entries are not emitted at all; the store filters, not the assembler.
A state producer reads the database or the workflow engine and emits one item per fact, typed, with as_of set to the read time. It never derives a value from conversation. Claims the user made about themselves go to memory, not state.
Tool specs become governance.capabilities items with authority: capability. Tool results and resources become evidence.tool_results or evidence.knowledge with authority: observation or reference_only, an as_of, and untrusted by default. A resource that contains imperatives is still evidence.
Who owns which stage
Admission failures
Every refusal lands in the trace as excluded[] { item_id, reason }. These are the reasons a producer will see, and what they mean.
Item linter
Paste one candidate item as JSON. The linter runs the admission checks a conformant assembler runs, cites the rule for each refusal, fills policy fields from slot defaults, and shows the trace line that would result. Nothing leaves your browser.
Trace validator
Paste a trace your assembler emitted. The validator checks the fields required by R-21, notes the recommended fields from R-22, and reports which requirements the trace evidences.