Skip to content

Commit 6bf586e

Browse files
committed
docs(echo-types): mark operation names reserved; scope Error-Lang penalty
Prevent the doc from overstating BetLang's commitment (no code change): - Canonical operation names (echo/echo_input/echo_output/echo_to_residue/ residue_strictly_loses/sample_echo/bet_echo) are explicitly RESERVED cross-repo conceptual anchors, not committed BetLang operational semantics — none implemented or typed until the runtime/proof story is settled. - Clarify that BetLang's unary `Echo T` does NOT imply the dependent `Echo f y` fibre or a checked `A -> B` relation; `echo_input`/ `echo_output` are documentation vocabulary, not semantics. - Scope the stability penalty to Error-Lang: "In Error-Lang, echo_to_residue carries a stability penalty. In BetLang, no such runtime effect is implemented yet" — BetLang must not inherit Error-Lang's stability accounting before it has the corresponding effect/cost layer. https://claude.ai/code/session_01NGKc4681nuptfQADqreAfc
1 parent 2889640 commit 6bf586e

1 file changed

Lines changed: 19 additions & 6 deletions

File tree

docs/echo-types.adoc

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,12 @@ sample_echo : Dist T -> Echo T // retains that residue (DEFERRED)
8585

8686
== Deferred (next passes)
8787

88-
=== Canonical operation names (deferred)
88+
=== Canonical operation names (RESERVED / deferred)
8989

90-
When the echo operations land, their *canonical* names mirror
90+
These names are **reserved cross-repo conceptual anchors, not committed
91+
BetLang operational semantics.** None of them is implemented or typed in
92+
BetLang yet, and none will be until the runtime/proof story is settled.
93+
When the echo operations do land, their *canonical* names mirror
9194
`EchoTypes.jl` for cross-repo conceptual consistency (shorter aliases may
9295
be added later, but the canonical names preserve the mapping):
9396

@@ -103,15 +106,25 @@ be added later, but the canonical names preserve the mapping):
103106
|===
104107

105108
The probabilistic bridge adds `sample_echo : Dist T -> Echo T` (and
106-
`bet_echo`), retaining the draw/branch residue that `sample`/`bet` discard.
109+
`bet_echo`), retaining the draw/branch residue that `sample`/`bet` discard
110+
— also reserved/deferred.
111+
112+
NOTE: BetLang uses the *unary* `Echo T`. The names `echo_input` /
113+
`echo_output` are conceptual anchors borrowed from the upstream fibre
114+
vocabulary; they do **not** imply that BetLang has the dependent
115+
`Echo f y` fibre or any checked `A -> B` relation. BetLang commits only to
116+
`Echo T` being a distinct unary former; the `input`/`output` framing is
117+
documentation, not operational semantics.
107118

108119
=== Runtime representation strategy (deferred)
109120

110121
* Start with a **single-witness core**, not a whole-fibre representation.
111122
Whole-fibre runtime requires first-class functions and must wait.
112-
* Erasing an `Echo` down to its residue (`echo_to_residue`) should incur a
113-
**stability penalty in Error-Lang** (the Landauer/Bennett-style cost of
114-
discarding retained lineage) — not a silent, free coercion.
123+
* In Error-Lang, `echo_to_residue` carries a stability penalty (the
124+
Landauer/Bennett-style cost of discarding retained lineage). **In
125+
BetLang, no such runtime effect is implemented yet** — BetLang must not
126+
inherit Error-Lang's stability accounting before it has the
127+
corresponding effect/cost layer.
115128
* Add a runtime residue payload only when an operation requires it; until
116129
then `Echo T` / `EchoR T` stay ghost/erased (codegen represents them as
117130
`T`) while the checker keeps them distinct.

0 commit comments

Comments
 (0)