Skip to content

Commit 6bf4f05

Browse files
committed
docs(echo): record refined design decisions + revise §12 widening/echo
- Echo source is inference-only (no @echo annotation); lossy numeric widening (Float→Int) carries EchoNeutral. Revises spec §12's "widening independent of echo" — widening may raise the echo dimension but never the value type. - Echo value type (Echo<T>) deferred; AST/Type to be designed so it can be added without rework. - Confirms Safe-only reversal and independent-Lean (no Agda bridge) decisions. https://claude.ai/code/session_01EJLZKDtcF1RGdKx6TcUTQG
1 parent daade4a commit 6bf4f05

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

ALIGNMENT-AFFINESCRIPT.adoc

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,19 @@ truthing discipline, because a mechanized proof cannot lie.
117117

118118
==== Design decisions (2026-06-02)
119119

120-
. *Echo is effect-only* — a static dimension alongside `Purity`, not a value
121-
type (spec §12). A first-class `Echo<T>` value type is reserved for a later
122-
phase.
120+
. *Echo is effect-only (value type later)* — a static dimension alongside
121+
`Purity`, not a value type (spec §12). A first-class `Echo<T>` value type is
122+
deferred; the AST/`Type` are to be designed so it can be added *without
123+
rework*.
123124
. *Safe-only reversal* — reverse blocks accept only `EchoSafe`; `Neutral` and
124125
`Breaking` are rejected (see §9 implementation note).
125-
. *Echo source = infer + `@echo(...)` override* — inferred from operation shape,
126-
with an optional annotation mirroring `@pure`/`@total`. Lossy numeric widening
127-
(e.g. `Float→Int`) is to carry `Neutral` echo.
128-
. *Agda↔Lean proof bridge deferred* — `JtvEcho.lean` re-mechanizes the model
129-
independently for now; `echo-types` remains the Agda source of truth.
126+
. *Echo source = inference only (no annotation)* — echo is inferred from
127+
operation shape; there is no `@echo` annotation. *Lossy numeric widening*
128+
(e.g. `Float→Int`) carries `EchoNeutral`, which revises spec §12's "widening
129+
independent of echo" (the value type is still unaffected — echo is a separate
130+
dimension). [Phase-2 implementation: wire echo through `infer_data_expr`.]
131+
. *Agda↔Lean proof bridge: independent* — `JtvEcho.lean` re-mechanizes the
132+
model; `echo-types` remains the sibling Agda source of truth, cited not linked.
130133

131134
=== Phase 2 — Echo Types in the checker (commenced here)
132135

spec/jtv_v2_type_system_corrected.adoc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ Future:
170170
- Data totality holds
171171
- Safe fragment termination holds
172172
- Halting boundary is syntactic
173-
- Echo does not affect value typing
174-
- Widening may be lossy and is independent of echo
173+
- Echo does not affect value typing (Echo is a separate effect dimension)
174+
- Lossy widening (e.g. Float→Int) raises echo to EchoNeutral; lossless widening
175+
stays EchoSafe. (Revises the earlier "widening independent of echo": widening
176+
may raise the echo dimension, though it still never changes the value type.)
175177

0 commit comments

Comments
 (0)