Skip to content

Commit 1abea80

Browse files
author
TNFR AI Agent
committed
feat: seal reception temporal semantics
1 parent 1a80eff commit 1abea80

32 files changed

Lines changed: 3157 additions & 299 deletions

‎.github/agents/my-agent.md‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ transformation remains open under research line S10.
458458
| # | Operator (glyph) | Physics / effect | Grammar role | Contract |
459459
|---|------------------|------------------|--------------|----------|
460460
| 1 | **Emission** (AL) | Sources EPI from vacuum at pre-existing basal νf; leaves νf unchanged | Generator (U1a) | Sources new form without writing capacity, pressure or phase |
461-
| 2 | **Reception** (EN) | Integrates incoming resonance | — | Must not reduce C(t) |
461+
| 2 | **Reception** (EN) | Integrates incoming resonance | — | Leaves stored ΔNFR and dEPI unchanged, hence immediate operator-local C(t) unchanged |
462462
| 3 | **Coherence** (IL) | Negative feedback; reduces \|ΔNFR\|, raises C(t) | Stabilizer (U2) | Must not reduce C(t) (outside dissonance test) |
463463
| 4 | **Dissonance** (OZ) | Controlled instability; raises \|ΔNFR\| | Destabilizer (U2), bifurcation trigger (U4a), closure (U1b) | Must increase \|ΔNFR\| |
464464
| 5 | **Coupling** (UM) | Phase synchronization link `φᵢ → φⱼ` | Requires phase check (U3) | Valid only if `\|wrap(φᵢ − φⱼ)\| ≤ Δφ_max` |
@@ -634,6 +634,22 @@ one intact stage per committed event and binds ordered ZHIR observations to the
634634
ordered target support. An adjacent flow abstention remains observable but
635635
cannot enter a represented schedule product.
636636

637+
Every accepted two-phase EN stage also seals one ordered
638+
`ReceptionStageObservation` per target. One owner-bound pre-EN snapshot supplies
639+
target/neighbor EPI, semantic kinds, optional source detection and metrics; the
640+
observation verifies final EPI, kind and tracked sources after all graph-mutating
641+
stage checks and before warning publication. Disabled tracking preserves opaque
642+
legacy source metadata without claiming its contents. Event execution binds
643+
these observations to ordered
644+
targets. Their `auxiliary_stability_certified` field is hard false: this is one
645+
finite provenance record, while counter/log cocycles and trajectory invariance
646+
remain open.
647+
On directed support, `source -> receiver` defines the incoming EN orientation:
648+
the numeric snapshot reads predecessors and source discovery follows the same
649+
path direction. Source discovery is optional telemetry: it neither selects nor
650+
gates the direct-neighbour numeric blend and may include more distant ancestors.
651+
The affine Reception certificate remains undirected-only.
652+
637653
With `include_stage_certificates=True`, interval capture is implied and every
638654
accepted event returns an `ExecutedGlyphStage`. The event runtime binds the
639655
executor-owned pointwise certificate for AL/SHA/VAL/NUL/ZHIR/NAV or all-target

‎AGENTS.md‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ transformation remains open under research line S10.
458458
| # | Operator (glyph) | Physics / effect | Grammar role | Contract |
459459
|---|------------------|------------------|--------------|----------|
460460
| 1 | **Emission** (AL) | Sources EPI from vacuum at pre-existing basal νf; leaves νf unchanged | Generator (U1a) | Sources new form without writing capacity, pressure or phase |
461-
| 2 | **Reception** (EN) | Integrates incoming resonance | — | Must not reduce C(t) |
461+
| 2 | **Reception** (EN) | Integrates incoming resonance | — | Leaves stored ΔNFR and dEPI unchanged, hence immediate operator-local C(t) unchanged |
462462
| 3 | **Coherence** (IL) | Negative feedback; reduces \|ΔNFR\|, raises C(t) | Stabilizer (U2) | Must not reduce C(t) (outside dissonance test) |
463463
| 4 | **Dissonance** (OZ) | Controlled instability; raises \|ΔNFR\| | Destabilizer (U2), bifurcation trigger (U4a), closure (U1b) | Must increase \|ΔNFR\| |
464464
| 5 | **Coupling** (UM) | Phase synchronization link `φᵢ → φⱼ` | Requires phase check (U3) | Valid only if `\|wrap(φᵢ − φⱼ)\| ≤ Δφ_max` |
@@ -634,6 +634,22 @@ one intact stage per committed event and binds ordered ZHIR observations to the
634634
ordered target support. An adjacent flow abstention remains observable but
635635
cannot enter a represented schedule product.
636636

637+
Every accepted two-phase EN stage also seals one ordered
638+
`ReceptionStageObservation` per target. One owner-bound pre-EN snapshot supplies
639+
target/neighbor EPI, semantic kinds, optional source detection and metrics; the
640+
observation verifies final EPI, kind and tracked sources after all graph-mutating
641+
stage checks and before warning publication. Disabled tracking preserves opaque
642+
legacy source metadata without claiming its contents. Event execution binds
643+
these observations to ordered
644+
targets. Their `auxiliary_stability_certified` field is hard false: this is one
645+
finite provenance record, while counter/log cocycles and trajectory invariance
646+
remain open.
647+
On directed support, `source -> receiver` defines the incoming EN orientation:
648+
the numeric snapshot reads predecessors and source discovery follows the same
649+
path direction. Source discovery is optional telemetry: it neither selects nor
650+
gates the direct-neighbour numeric blend and may include more distant ancestors.
651+
The affine Reception certificate remains undirected-only.
652+
637653
With `include_stage_certificates=True`, interval capture is implied and every
638654
accepted event returns an `ExecutedGlyphStage`. The event runtime binds the
639655
executor-owned pointwise certificate for AL/SHA/VAL/NUL/ZHIR/NAV or all-target

‎CHANGELOG.md‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,40 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Fixed — 2026-09-11 Reception temporal evidence
8+
9+
- Centralized graph-backed Reception reads in one owner-bound, value-sealed
10+
pre-EN snapshot. Direct operator execution, low-level graph dispatch and the
11+
all-target Jacobi stage now use the same target, neighbour, kind and optional
12+
source inputs, and reject a stale or cross-graph prepared snapshot before any
13+
structural write.
14+
- Added one sealed `ReceptionStageObservation` per accepted two-phase target.
15+
It records pre/post EPI and kind plus the exact pre-EN neighbour/source read;
16+
tracked source metadata is checked again after metrics, monitors, any
17+
requested pressure refresh and schedule recording, before final warning
18+
publication. Late EPI,
19+
kind or tracked-source mutation rejects the stage and rolls back graph-owned
20+
state without leaking that warning. Disabled source tracking preserves opaque
21+
legacy metadata without claiming its contents.
22+
- Carried Reception observations through `NetworkStageResult`,
23+
`ExecutedGlyphStage` and the enclosing event-execution seal. This is finite
24+
provenance evidence, not a proof of auxiliary-state stability.
25+
- Made Reception metrics state their read boundaries explicitly, separated
26+
stored-metadata presence from the pre-EN source snapshot, and changed the
27+
coarse effectiveness predicate to `abs(DeltaNFR) < 0.1`, sharing that policy
28+
constant with Coherence. Corrected the low-level EN doctest to the canonical
29+
half-mix result `0.45`.
30+
- Aligned the public strict precondition with the canonical validator and made
31+
empty-source advice a single non-gating warning. Standalone metrics now reuse
32+
the same empty-neighbour and missing-EPI policy as execution.
33+
- Defined directed Reception input as incoming `source -> receiver` arcs across
34+
graph dispatch, object dispatch, domain preflight, metrics and optional source
35+
telemetry. Source discovery remains diagnostic and does not select or gate the
36+
direct neighbours used by the numeric blend.
37+
- Corrected EN's postcondition boundary: the jump leaves stored `DeltaNFR` and
38+
`dEPI` unchanged, so operator-local `C(t)` is immediately unchanged. Pressure
39+
refresh is a later observation and may change coherence.
40+
741
### Added — 2026-09-11 Binary64 REMESH boundary and P2 causal binding
842

943
- Centralized the production delayed-REMESH scalar evaluation in

‎README.md‎

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,15 @@ Silence, Expansion, Contraction, Mutation and Transition; Coupling's
118118
overlapping phase/topology proposal; Dissonance's overlapping pressure
119119
proposal; Self-organization's child-support and hierarchy merge; and
120120
Recursivity's deduplicated network advisory.
121+
Reception additionally materializes one owner-bound, value-sealed pre-EN read
122+
per target. The same record supplies its target and neighbour EPI values,
123+
semantic kinds, optional source detection and metrics; all graph-backed direct
124+
entry points reuse the same kernel and reject stale or cross-graph prepared
125+
state before writing.
126+
For directed support, `source -> receiver` defines an incoming EN input, so the
127+
numeric blend reads predecessors and source detection uses the same causality.
128+
That detection is optional telemetry; it does not select or gate the direct
129+
neighbours integrated by EN.
121130
Coherence contracts each target's pressure magnitude and locks its phase from
122131
that shared snapshot;
123132
its canonical stage/global and radius-local structural `C(t)` fields are
@@ -364,8 +373,15 @@ one sealed `MutationStageDecisionObservation` per target, including its complete
364373
threshold certificate, phase/regime decision, acceleration/bifurcation read-out
365374
and U4 context. `NetworkStageResult` retains these observations even when no EPI
366375
certificate was requested; opt-in event-stage evidence carries them forward.
376+
Every accepted two-phase EN stage likewise preserves one sealed
377+
`ReceptionStageObservation` per target. It binds pre/post EPI and kind to one
378+
pre-EN neighbour/source snapshot and verifies the final kind and tracked source
379+
record after all graph-mutating stage checks and before warning publication.
380+
Its hard-false auxiliary-stability
381+
claim keeps this finite provenance separate from a trajectory invariant.
367382
Each `ExecutedGlyphStage` is value-sealed across its event, endpoints,
368-
certificate, adjacent-flow records and Mutation observations. The execution
383+
certificate, adjacent-flow records, Mutation observations and Reception
384+
observations. The execution
369385
result requires one intact stage per committed event in the same order, so
370386
construction or replacement cannot promote a represented-gain claim.
371387

‎docs/API_CONTRACTS.md‎

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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`
311311
records remain unsealed. Event execution carries these observations into the
312312
corresponding 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

320350
Setting `include_stage_certificates=True` is also opt-in and implies flow
321351
capture. `glyph_stage_evidence` then contains one `ExecutedGlyphStage` for every

‎src/tnfr/config/physics_derivation.py‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ def derive_start_operators_from_physics() -> frozenset[str]:
347347
348348
**Why Others Cannot Start:**
349349
350-
- **reception**: Needs external source + existing EPI to anchor
350+
- **reception**: Blends existing EPI fields and has no generative term
351351
- **coherence**: Stabilizes existing form, cannot create from null
352352
- **dissonance**: Perturbs existing structure, needs EPI > 0
353353
- **coupling**: Links existing nodes, requires both nodes active
@@ -495,8 +495,9 @@ def increases_structural_pressure(operator: str) -> bool:
495495
**Why others are NOT destabilizers:**
496496
- TRANSITION (NAV): a *controlled* trajectory between attractors — it is a
497497
generator/closure, not an assigned U2 destabilizer.
498-
- RECEPTION (EN): integrates incoming resonance (contract: must not reduce
499-
C(t)) — neutral, not positive feedback.
498+
- RECEPTION (EN): integrates the neighbour EPI field while leaving stored
499+
pressure and change rate fixed at the immediate jump boundary — neutral,
500+
not positive feedback.
500501
- CONTRACTION (NUL): reduces νf while densifying ΔNFR by the reciprocal
501502
factor; the registry treats it as a simplifier rather than U2 debt.
502503
"""

‎src/tnfr/config/thresholds.py‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@
5959
# EN (Reception) Thresholds
6060
# -------------------------
6161

62-
# Maximum EPI for reception - EN requires nodes with receptive capacity
63-
# According to TNFR.pdf §2.2.1, reception integrates external coherence
64-
# into local structure. If EPI is saturated, node cannot receive more coherence.
62+
# Selected stored-EPI upper admission bound for Reception. This policy ceiling
63+
# is not a theorem about receptive capacity; the runtime compares the signed
64+
# stored coordinate and otherwise blends the current neighbour EPI field.
6565
EPI_SATURATION_MAX: float = 0.9
6666

67-
# Maximum DNFR for stable reception - EN requires low dissonance
68-
# Excessive reorganization pressure prevents effective integration
69-
# of external coherence. Consider IL (Coherence) first to stabilize.
67+
# Selected signed-pressure upper admission bound for Reception. It is not an
68+
# absolute-pressure stability threshold and does not certify post-refresh C(t).
69+
# EN itself leaves this stored pressure unchanged.
7070
DNFR_RECEPTION_MAX: float = 0.15
7171

7272
# -------------------------

0 commit comments

Comments
 (0)