Skip to content

Commit f40c9e6

Browse files
committed
docs: add post-migration re-entry runbook + link from ledger
AFTER-MIGRATION.adoc is the round-trip closure for the disposed svalinn track: read the spike verdict, branch on D3 validity, reconcile (Obj.magic / issue #13 / PR #32 / CI), then resume PROOFS.adoc. The ledger's svalinn brief gains a RE-ENTRY pointer to it. https://claude.ai/code/session_011z2t8zAxfcCNLJzU7YdpBQ
1 parent bbbcc11 commit f40c9e6

2 files changed

Lines changed: 87 additions & 0 deletions

File tree

docs/AFTER-MIGRATION.adoc

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
= Ochránce — Re-entry After the svalinn → Ephapax Migration
2+
:toc: macro
3+
:sectnums:
4+
5+
// SPDX-License-Identifier: MPL-2.0
6+
// SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath)
7+
8+
This is the *round-trip closure* for the svalinn migration that was disposed from
9+
the proof campaign (`docs/PROOFS.adoc`, Decision *D3*; outbound charter at
10+
`svalinn/docs/ephapax-migration/HANDOFF.adoc`). Read it when the migration
11+
excursion *returns*, before resuming the proof program. It exists so the loop
12+
"delegate → migrate → come back" closes cleanly even after this thread is gone.
13+
14+
toc::[]
15+
16+
== The loop
17+
18+
----
19+
proof thread (here)
20+
└─ dispose svalinn migration → HANDOFF.adoc → [svalinn + ephapax session]
21+
runs the spike, then the map, then the port (its own draft PRs)
22+
←─ return here → read THIS doc → reconcile → resume PROOFS.adoc
23+
----
24+
25+
You are at the *return* step.
26+
27+
== Reachability first (so you don't hit a 404)
28+
29+
The migration's outputs live in the *svalinn* repo, not here. To do the
30+
reconciliation below you need *either* `hyperpolymath/svalinn` in this session's
31+
scope, *or* the delegated session to paste you its spike verdict. The proof
32+
campaign itself only needs `ochrance`.
33+
34+
== Step 1 — Read the spike verdict (the gate)
35+
36+
The migration was *gated* on a readiness spike (can Ephapax host an HTTP gateway
37+
today?). Its result is the capability matrix in
38+
`svalinn/docs/ephapax-migration/BLOCKER-LINEAGE.adoc`. Branch on it:
39+
40+
[cols="1,4",options="header"]
41+
|===
42+
| Verdict | What it means / what you do
43+
44+
| *GREEN* — Ephapax viable
45+
| The migration proceeded. Go to Step 2.
46+
47+
| *RED* — a MUST-have absent, *D3 invalidated*
48+
| svalinn's language decision is *reopened*. Do *not* resume svalinn proofs.
49+
Update `PROOFS.adoc` D3 with the new decision (stay ReScript + prove /
50+
AffineScript / wait on Ephapax), then treat svalinn as a fresh disposed track.
51+
|===
52+
53+
== Step 2 — Reconcile (green path)
54+
55+
Fold the migration's results back into the campaign. Checklist:
56+
57+
* [ ] `BLOCKER-LINEAGE.adoc` exists and its ring-0 critical chain was executed.
58+
* [ ] *Zero* `Obj.magic` in svalinn `src/` (the 20+ casts are gone
59+
*structurally*, not patched).
60+
* [ ] JWT/JTI revocation is true-by-construction → svalinn *issue #13* is
61+
dischargeable: verify and close it.
62+
* [ ] The *Ephapax* test suite runs *green* in CI (the pre-existing ReScript red
63+
is gone because the ReScript is gone — not because it was fixed).
64+
* [ ] svalinn *PR #32* (the AffineScript language-policy PR) was reconciled to
65+
Ephapax or closed; the `.claude/CLAUDE.md` language table was updated.
66+
* [ ] `PROOFS.adoc` updated: tick the svalinn disposed track; *promote* its
67+
post-migration specs (Appendix E of the charter) into the proof program — now
68+
the language is final, they are provable.
69+
70+
== Step 3 — Resume the proof campaign
71+
72+
Return to `docs/PROOFS.adoc` and continue at the stage you left (Stage 1 on Opus
73+
if you came straight back). The svalinn specs become a *sibling track* once
74+
Ephapax is the language; prove them via the route the spike established —
75+
Ephapax's own linear types, the Idris ABI layer (`svalinn/src/abi/*.idr`), or
76+
SPARK (`svalinn/docs/cerro-torre-integration.adoc` §6.2).
77+
78+
== Cross-references
79+
80+
* `docs/PROOFS.adoc` — the proof-campaign ledger (Decision D3, disposed tracks).
81+
* `svalinn/docs/ephapax-migration/HANDOFF.adoc` — the outbound charter.
82+
* `svalinn/docs/ephapax-migration/BLOCKER-LINEAGE.adoc` — the migration's own
83+
output (spike verdict + critical chain), produced by the delegated session.

docs/PROOFS.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ those holes until closed. Track upstream.
187187
DISCHARGES: svalinn security issue #13 (19 Critical/High panic-attack findings —
188188
`decodeJwt()` without `jwtVerify()`, `JSON.parseExn`) is addressed structurally by
189189
this migration (verified JWT + typed deserialisation), not by patching ReScript.
190+
+
191+
RE-ENTRY: the outbound charter now lives at
192+
`svalinn/docs/ephapax-migration/HANDOFF.adoc`; when this track *returns*, read
193+
`docs/AFTER-MIGRATION.adoc` (the round-trip closure) before resuming the campaign.
190194

191195
=== ochrance-framework — retire core, harvest Interface, keep docs [model: Sonnet]
192196

0 commit comments

Comments
 (0)