Skip to content

Commit 8017d3e

Browse files
committed
proposals: add verified EchoEncodingFaithfulness soundness module (echo-types)
Stage a machine-checked Agda module certifying the "the integer IS the X" co-processor integerization pattern used by the idaptik ReScript -> AffineScript migration: lossless half (injective encoder => unique fibres), lossy half (collision => no section), and the clamp-to-sentinel hazard as a checked instance. Typechecks under --safe --without-K with agda 2.6.3 + stdlib 2.3, zero postulates / funext. Staged under proposals/ (target: hyperpolymath/echo-types) for review; not yet applied to echo-types. https://claude.ai/code/session_01WoKhFQePiRsAj7aqnxbG8s
1 parent 8d854cb commit 8017d3e

3 files changed

Lines changed: 746 additions & 0 deletions

File tree

proposals/README.adoc

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// SPDX-License-Identifier: MPL-2.0
2+
// SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
= AffineScript co-development proposals (cross-repo, staged for review)
4+
:toc: macro
5+
6+
toc::[]
7+
8+
== What this directory is
9+
10+
This tree holds **cross-repo proposals produced during AffineScript
11+
co-development that target a repo *other than* affinescript**. They are
12+
staged here — as real, diff-able files — because the working agreement
13+
for this session is *writes go to the affinescript repo only*; everything
14+
destined for idaptik, echo-types, standards, etc. is parked here for human
15+
review before it is applied to its home repo.
16+
17+
Each subdirectory is a self-contained proposal with its own `README.adoc`
18+
explaining what it is, where it belongs, how it was verified, and how to
19+
land it.
20+
21+
== Index
22+
23+
[cols="1,2,1,2",options="header"]
24+
|===
25+
| Subtree | Target repo | Status | What
26+
27+
| `echo-types/`
28+
| `hyperpolymath/echo-types`
29+
| *Verified*
30+
| `EchoEncodingFaithfulness.agda` — a machine-checked Agda module
31+
certifying the soundness of the "the integer IS the X" co-processor
32+
integerization pattern (lossless = injective; lossy = collision /
33+
clamp-to-sentinel). Typechecks under `--safe --without-K`, zero
34+
postulates.
35+
36+
| `idaptik/`
37+
| `hyperpolymath/idaptik`
38+
| _pending_
39+
| The kernel migration(s) (ReScript -> AffineScript) as a reviewable
40+
case-study / patch, with their differential-parity harnesses.
41+
42+
| `standards/`
43+
| `hyperpolymath/standards`
44+
| _pending_
45+
| Estate-standards implications: the co-processor integerization +
46+
differential-parity convention, the String host-boundary ABI, the
47+
github-only-network install recipe, the `--deno-esm` / TS-0
48+
exemption-table delta.
49+
50+
| `toolchain/`
51+
| `hyperpolymath/affinescript` (compiler/roadmap) + estate
52+
| _pending_
53+
| Compiler/toolchain implications harvested from dogfooding: the
54+
variable-string-backend gap, `--deno-esm` to retire the TS harnesses,
55+
compiler-emitted Echo boundary obligations, release-cadence coupling.
56+
|===
57+
58+
== Why staged-not-applied
59+
60+
Three reasons, all from the session's working agreement:
61+
62+
. *Review gate.* The owner wants to review anything touching repos other
63+
than affinescript before it lands.
64+
. *Honest provenance.* A staged proposal records exactly how it was
65+
produced and verified, so the receiving repo's maintainer can re-run
66+
the checks rather than trust a claim.
67+
. *No silent cross-repo drift.* Estate policy (see the standards repo's
68+
license + no-automated-edits guardrails) is firmly against bulk
69+
cross-repo sweeps; per-repo human acceptance is the rule.

0 commit comments

Comments
 (0)