Files
distribution/current/CHECKPOINT-DISTRIBUTION.md
2026-06-13 06:57:38 +03:00

4.6 KiB

Checkpoint — distribution

  • Status: RUNNING
  • Plan branch: distribution-plan Base: master
  • Current: A2 (pooled distd, PLAN-HTTPZ S7b) done 2026-06-12 → 74b41f5 + c734f47: 4 handler workers, writes serialized behind one mutex, /api/apps 5.7k → 12.0k req/s; en route the vendored sqlite flipped THREADSAFE=0→1 in sx (3948813) after the pool exposed heap corruption (pinned by server_http's concurrency case + sqlite_api). A1 → 48a13c4 (std.http readiness loop + keep-alive; 6 idle preconnects 3.7ms ttfb, was 3.9s behind two). sx grew time/socket-nb/kqueue/event/thread/http (PLAN-HTTPZ; issue 0131 found+fixed). Benchmark vs httpz: sx/current/BENCH-HTTPZ.md. Next: P6.2 admin UI actions; packaging (07) still blocked on sx Linux targets
  • Updated: 2026-06-12 HEAD: 48a13c4

Progress

step status attempts merge
P1.1 merged 1 331a3e06
P2.1 merged 3 b5529583
P2.2 merged 2 a2f7ad2a
P2.3 merged 3 882dce4f
P3.1 merged 1 94e24118
P3.2 merged 1 1c4bba05
P3.3 merged 1 20d520d0
P3.4a merged 1 e56a921
P3.4b merged 1 e56a921
P3.5 merged 1 e56a921
P4.1 merged 1 734c00f
P4.2 done 1 cf39589
P4.3 done 1 d8b7a7b
P4.4 done 1 e2a5150
P4.5 done 1 0a6fa65
P4.6 done 1 aea3d62
P5.1 done 1 afec94a
P5.2 done 1 a1f13c4
P5.3 done 1 dc6908d
P6.1 done 1 eef3d5c

P4.2 onward is implemented directly in-session on distribution-plan (flow harness retired). The sN→iN sx lang migration landed as 6c19f10. P4.3 (token security, subplan 02 Slice 5) → d8b7a7b; P4.4 (bearer auth + write endpoints, 04 Slice 2 + write half of 3/4) → e2a5150; P4.5 (remote publish, 03 Slice 3) → 0a6fa65; P4.6 (install pages + iOS modes, 04 Slice 5) → aea3d62. make test is 19/19 green at HEAD. The PLAN.md CI contract works end-to-end against a running distd, and install pages honor the iOS Install Policy (artifact_only / testflight / enterprise OTA manifest). sx issue 0098 (enum literal into optional target lowers to variant 0) bit ua_platform; worked around via typed locals — the sx-side fix is still tracked as a separate followup. P5.1 → afec94a: SQLite 3.53.2 is VENDORED (vendor/sqlite/, API renamed dist_sqlite3_* so the JIT's dlsym(RTLD_DEFAULT) can never bind the OS copy) with sx bindings in src/db/sqlite.sx — SQLite is no longer blocked. The bindings then adopted honest C integer widths (3747c40, 21/21 green). P5.2 → a1f13c4: the store persists to <store>/dist.db (schema + whole-model save/load in src/repo/db.sx, BEGIN IMMEDIATE transactions, busy_timeout for CLI/distd interleaving); a pre-SQLite db.json imports once on first load (renamed db.json.imported); consumers gate on db.store_exists; every test that parsed db.json now queries dist.db through the bindings, plus new pinned tests db_import.sx and the SQLite repo_roundtrip.sx. make test is 22/22 green at HEAD. En route, sx issue 0130 (#library behind two aliased imports dropped from link/dlopen) was filed AND fixed in the sx repo (d739c5b, examples/1617 regression). P5.3 → dc6908d (02 Slice 4, closing subplan 02): Channel.retention_keep (0 = keep everything, N = keep the newest N published lineage releases) set via dist channel set; dist store cleanup prunes lineage-expired releases (never one ANY channel points at — cross-promoted releases survive), GCs unreferenced objects/ blobs, sweeps stale staging/ files, one audit event per deletion, model saved before any unlink. En route it fixed repo.publish silently resetting an existing channel's policy/rollout/retention on every publish (pinned in tests/retention_cleanup.sx, which fails on the pre-fix code). cleanup.sx carries a local opendir/readdir/closedir FFI shim — std.fs still has no directory listing (sx wishlist). P6.1 → eef3d5c (subplan 06, first slice): the read-only admin console at /admin, server-rendered from src/server/admin.sx exactly like the index/install pages (sx strings, no client framework): apps overview, app detail (channels with policy/rollout/retention, releases newest-first), release detail (validation chips, serving channels, audit timeline), tokens (lifecycle status, never secret material), audit log. Reads public per v0; writes stay on the token-gated POSTs. The root-level index.html/styles.css/ app.js mock (rejected design, flow-harness era) is SUPERSEDED by the real console — delete when convenient. make test is 24/24 green at HEAD. Remaining for Milestone 1: admin UI actions/iteration (06), Docker/UGREEN packaging (07, still blocked on sx Linux targets).