@@ -35,7 +35,7 @@ separate stage contract.
3535| Operator | Glyph | Primary channel | Scale | Direct postcondition |
3636| --- | --- | --- | --- | --- |
3737| Emission | AL | EPI | node | EPI does not decrease; frequency, pressure and phase stay unchanged |
38- | Reception | EN | EPI | node | Coherence does not decrease during coherent integration |
38+ | Reception | EN | EPI | node | Immediate operator-local C(t), pressure and change rate stay unchanged |
3939| Resonance | RA | EPI | node | EPI structural identity is preserved |
4040| Silence | SHA | structural frequency | node | Structural frequency does not increase |
4141| Expansion | VAL | structural frequency | node | Structural frequency does not decrease |
@@ -311,11 +311,41 @@ live metadata can change. Direct construction and coherent `dataclasses.replace`
311311records remain unsealed. Event execution carries these observations into the
312312corresponding opt-in ` ExecutedGlyphStage ` .
313313
314+ Every accepted two-phase EN ` NetworkStageResult ` contains one ordered, sealed
315+ ` ReceptionStageObservation ` per target. A single owner-bound pre-EN snapshot
316+ drives the target/neighbor EPI calculation, semantic-kind selection, optional
317+ source detection and EN metrics. The observation records pre/post EPI and kind,
318+ the materialized neighbour read and the tracked source record. Final EPI, kind
319+ and tracked sources are checked after monitors, metrics, any requested pressure
320+ refresh and schedule recording, before final warning publication; divergence
321+ rejects the transaction without leaking that warning. With source tracking
322+ disabled,
323+ legacy metadata is left opaque: the stage observation reports only whether its
324+ key is present, while separately collected Reception metrics also report whether
325+ the stored value has the canonical list-of-triples form. Standalone
326+ ` reception_metrics ` calls set ` source_tracking_enabled=None ` because old metadata
327+ does not identify the call that produced it. ` auxiliary_stability_certified ` is
328+ always false because this record describes one accepted finite stage rather
329+ than a trajectory invariant.
330+
331+ On directed support, an arc ` source -> receiver ` is an incoming EN input: the
332+ snapshot reads predecessors and source detection follows paths in that same
333+ direction. Detection is optional telemetry and neither selects nor gates the
334+ direct-neighbour numeric blend; its finite search can include more distant
335+ ancestors. The represented affine Reception certificate remains restricted to
336+ undirected support and therefore abstains on a directed stage.
337+
338+ Direct EN execution publishes its empty-source advisory during the pre-write
339+ read, so treating warnings as errors aborts before the direct mutation. The
340+ transactional two-phase stage defers that advisory until its result has been
341+ validated; a warning promoted to an error then rolls the entire stage back.
342+
314343` ExecutedGlyphStage ` also seals its complete event, endpoint, certificate,
315- adjacent-flow and decision payload. ` OperatorEventExecutionResult ` requires one
316- intact stage for every committed event, preserves event order, and binds ZHIR
317- observation order to ` target_nodes ` . A nested flow abstention remains recordable
318- but cannot be promoted into a flow or composition certificate.
344+ adjacent-flow, Mutation-decision and Reception-observation payload.
345+ ` OperatorEventExecutionResult ` requires one intact stage for every committed
346+ event, preserves event order, and binds both ZHIR and EN observation order to
347+ ` target_nodes ` . A nested flow abstention remains recordable but cannot be
348+ promoted into a flow or composition certificate.
319349
320350Setting ` include_stage_certificates=True ` is also opt-in and implies flow
321351capture. ` glyph_stage_evidence ` then contains one ` ExecutedGlyphStage ` for every
0 commit comments