You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(policy): split-roles language policy (AffineScript general / Ephapax linear core) + stale-status fixes (#95)
## What
Reconciles the two language threads colliding in the estate —
**AffineScript** (the ReScript-replacement app-code migration) vs
**Ephapax** (svalinn's D3, from the Ochránce thread) — as
**complementary roles, not competitors**, and aligns three stale status
docs with verified ground truth.
Maintainer decision on record (this session): **split roles** —
- **AffineScript** = primary *general* application language (gateway /
UI / app code; typed-wasm; replaces ReScript).
- **Ephapax** = *linear security core* (exactly-once tokens, revocation
ledgers, secret/handle lifecycle, container-lifecycle invariants,
zero-copy IPC).
## Changes
- **Language policy** —
`container-stack/{svalinn,cerro-torre,vordr}/.claude/CLAUDE.md`: rewrote
the migration note to state both roles; added an **Ephapax** row to each
ALLOWED-languages table.
- **`stapeln.toml`** — svalinn component description + `language` note
now reflect the in-flight ReScript → AffineScript (general) + Ephapax
(linear core) migration (**11/33 modules ported**).
- **`ECOSYSTEM-STATUS.md`** — marked the 2026-01-25 snapshot stale;
`selur/ephapax/bridge.eph` + `types.eph` are **implemented** (~300 LOC)
— the "NOT EXISTS" line is obsolete.
- **`docs/READINESS.adoc`** — Idris2 proofs are **real** (33 `.idr`, no
`believe_me`/`postulate`/`sorry`), not "stubs only".
## Verification (ground-truth language inventory)
Best-fit per area is **correct** for: backend (Elixir), ffi/zig (Zig),
src/abi (Idris2), cerro-torre (Ada/SPARK, 67 files), vordr
(Rust+Ada+Idris2 polyglot), selur (Rust + Ephapax IPC). svalinn is
mid-migration (right direction).
## Open best-fit calls (NOT in this PR — flagged for decision)
1. **`rokur`** — a *secrets-management gate* written entirely in plain
Deno/JS (7 files, untyped). Secrets are the canonical linear resource
(exactly-once / must-zeroize); candidate to move to **Ephapax (handle
lifecycle) + Rust host**, or at least Rust.
2. **svalinn `auth/*` + `bridge/SelurBridge`** — the migration so far
ported auth types to `.affine`; under split-roles the *linear* security
invariants (JWT/JTI exactly-once, revocation, the selur bridge) are a
better fit for **Ephapax** than AffineScript. Refinement to PR #46, not
a reversal.
## Relationship to PR #46
PR #46 (the AffineScript svalinn migration) continues unchanged; this PR
aligns the policy/docs with it and adds the Ephapax security-core lane
alongside.
https://claude.ai/code/session_01EsxEhRW4rDbxMo2c9xaa7Z
---
_Generated by [Claude
Code](https://claude.ai/code/session_01EsxEhRW4rDbxMo2c9xaa7Z)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments