fed-prims: Phase I — handoff (RESOLVED blocker + primitive->BIF mapping)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 2m50s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 2m50s
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -131,4 +131,18 @@ _Newest first._
|
|||||||
|
|
||||||
## Blockers
|
## Blockers
|
||||||
|
|
||||||
- _(none yet)_
|
- **RESOLVED (2026-05-18) — SX runtime now exposes the platform
|
||||||
|
primitives Phase 8 BIFs need.** Delivered by `loops/fed-prims`
|
||||||
|
(see `plans/fed-sx-host-primitives.md` Handoff). Pure-OCaml,
|
||||||
|
WASM-safe except `http-listen` (native only). Wire Phase 8 BIFs:
|
||||||
|
- `crypto:hash/2` → `crypto-sha256` / `crypto-sha512` /
|
||||||
|
`crypto-sha3-256` (each `(bytes) -> hex-string`).
|
||||||
|
- `cid:from_bytes/1` → `cid-from-bytes` `(codec mh-bytes)`;
|
||||||
|
`cid:to_string/1` / canonical CID → `cid-from-sx` `(value)`;
|
||||||
|
dag-cbor via `cbor-encode` / `cbor-decode`.
|
||||||
|
- signature verify → `ed25519-verify` `(pk msg sig)` and
|
||||||
|
`rsa-sha256-verify` `(spki msg sig)` — both total (→ false).
|
||||||
|
- `file:list_dir/1` → `file-list-dir` `(path) -> (list string)`.
|
||||||
|
- fed-sx transport → `http-listen` `(port handler)` (native only).
|
||||||
|
Still deferred (leave blocked): `httpc` (HTTP client, v2) and
|
||||||
|
`sqlite-*` (v2 indexes) — not provided by fed-prims.
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ check** → tests → commit → tick box → Progress-log line → push.
|
|||||||
- **Acceptance:** curl test script green; WASM build untouched (prim not in lib).
|
- **Acceptance:** curl test script green; WASM build untouched (prim not in lib).
|
||||||
Satisfies fed-sx Step 8 transport.
|
Satisfies fed-sx Step 8 transport.
|
||||||
|
|
||||||
### Phase I — handoff
|
### Phase I — handoff ✅ DONE
|
||||||
- Flip the `plans/erlang-on-sx.md` Blockers entry "SX runtime lacks platform
|
- Flip the `plans/erlang-on-sx.md` Blockers entry "SX runtime lacks platform
|
||||||
primitives …" to **RESOLVED**, listing the exact SX primitive names so the
|
primitives …" to **RESOLVED**, listing the exact SX primitive names so the
|
||||||
Erlang loop can one-line-wire its blocked Phase 8 BIFs (`crypto:hash/2`,
|
Erlang loop can one-line-wire its blocked Phase 8 BIFs (`crypto:hash/2`,
|
||||||
@@ -201,10 +201,38 @@ printf '(epoch 1)\n(crypto-sha256 "abc")\n' | \
|
|||||||
| `file-list-dir` | `file:list_dir/1` |
|
| `file-list-dir` | `file:list_dir/1` |
|
||||||
| `http-listen` | fed-sx kernel `http:listen/2` (Milestone 1 Step 8) |
|
| `http-listen` | fed-sx kernel `http:listen/2` (Milestone 1 Step 8) |
|
||||||
|
|
||||||
|
**Status: DELIVERED (Phases A–H, 2026-05-18).** All primitives are
|
||||||
|
registered and reachable from SX (`(eval "(crypto-sha256 \"abc\")")`
|
||||||
|
via the epoch protocol). Signatures the Erlang loop can one-line-wire:
|
||||||
|
|
||||||
|
- `(crypto-sha256 bytes) -> hex-string` — also `crypto-sha512`,
|
||||||
|
`crypto-sha3-256`. lib (`Sx_sha2`/`Sx_sha3`), WASM-safe.
|
||||||
|
- `(cbor-encode value) -> bytes` / `(cbor-decode bytes) -> value` —
|
||||||
|
deterministic dag-cbor, lib (`Sx_cbor`), WASM-safe.
|
||||||
|
- `(cid-from-bytes codec mh-bytes) -> cid-string` /
|
||||||
|
`(cid-from-sx value) -> cid-string` — lib (`Sx_cid`), WASM-safe.
|
||||||
|
- `(ed25519-verify pk msg sig) -> bool` /
|
||||||
|
`(rsa-sha256-verify spki msg sig) -> bool` — total (bad input →
|
||||||
|
false), lib (`Sx_ed25519`/`Sx_rsa`), WASM-safe.
|
||||||
|
- `(file-list-dir path) -> (list string)` — sorted, lib, WASM-stubbed.
|
||||||
|
- `(http-listen port handler) -> never` — **NATIVE ONLY**
|
||||||
|
(`bin/sx_server.ml`); absent from the WASM kernel by design.
|
||||||
|
|
||||||
|
Still **deferred** (not Milestone 1, not provided here): `httpc-request`
|
||||||
|
(HTTP client / federation v2), `sqlite-*` (v2 indexes). The Erlang loop
|
||||||
|
should leave `httpc`/`sqlite` BIFs blocked with that note.
|
||||||
|
|
||||||
## Progress log
|
## Progress log
|
||||||
|
|
||||||
_Newest first._
|
_Newest first._
|
||||||
|
|
||||||
|
- 2026-05-18 — Phase I: handoff. `erlang-on-sx.md` Blockers gained one
|
||||||
|
RESOLVED entry (no "SX runtime lacks…" entry pre-existed; it read
|
||||||
|
"_(none yet)_") mapping every delivered primitive → its Phase 8 BIF,
|
||||||
|
with httpc/sqlite explicitly left deferred. Handoff section here
|
||||||
|
filled with signatures + native/WASM notes. Doc-only (no lib/erlang/
|
||||||
|
edits); Erlang 530/530 unchanged. **fed-sx Milestone 1 Steps 1-3 + 8
|
||||||
|
prerequisites all green — plan complete (Phases A–I done).**
|
||||||
- 2026-05-18 — Phase H: `http-listen` primitive in `bin/sx_server.ml`
|
- 2026-05-18 — Phase H: `http-listen` primitive in `bin/sx_server.ml`
|
||||||
(NATIVE ONLY — Unix sockets + Thread per connection, Mutex around
|
(NATIVE ONLY — Unix sockets + Thread per connection, Mutex around
|
||||||
the shared-runtime handler call; HTTP/1.1, Connection: close;
|
the shared-runtime handler call; HTTP/1.1, Connection: close;
|
||||||
|
|||||||
Reference in New Issue
Block a user