Skip to content

docs: bindings + stdlib + alib roadmaps (3 satellites) - #410

Merged
hyperpolymath merged 1 commit into
mainfrom
docs/bindings-roadmap-top50
May 28, 2026
Merged

docs: bindings + stdlib + alib roadmaps (3 satellites)#410
hyperpolymath merged 1 commit into
mainfrom
docs/bindings-roadmap-top50

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Adds three satellite roadmap documents under docs/, cross-linked from the main ROADMAP.adoc:

Doc Items Tiers / Tracks
docs/bindings-roadmap.adoc 50 5 tiers — idaptik blockers → estate → web universals → backend/cloud → tooling
docs/stdlib-roadmap.adoc 50 5 tiers — runtime gaps → RSR rewires → universals → concurrency → conformance
docs/alib-roadmap.adoc 25 3 tracks — T1 conformance impl, T2 runner/CI, T3 affine-aware contributions back upstream

Main ROADMAP.adoc gets a new == Satellite roadmaps section near the top and three new See Also entries.

Why three satellites

Each surface has a different cadence and different consumers:

  • Bindings track host-runtime FFI needs (consumer-driven: idaptik / estate apps).
  • Stdlib tracks .affine files in stdlib/ (compiler-driven: type-system + interp + codegen).
  • aLib tracks conformance vs the hyperpolymath/aggregate-library methods repo + spec extensions we contribute back.

Bundling these into the main ROADMAP would crowd compiler-progress reporting; splitting into satellites lets each evolve independently with stable item numbers.

Source / context

Compiled 2026-05-28 during planning after the idaptik PR #107 (ReScript → AffineScript pilot, 9 .res → 1 .affine). That pilot surfaced ~10 concrete stdlib runtime gaps (now Tier 1 of stdlib-roadmap.adoc) and ~10 binding-package needs (now Tier 1 of bindings-roadmap.adoc).

alib-roadmap.adoc is informed by a fresh read of hyperpolymath/aggregate-library v0.1.0 (20 ops × 6 categories) — including the schema-extension opportunities AffineScript's affine + effect surface suggests (T3 items).

Out of scope this PR

  • Implementing any roadmap item.
  • Opening the umbrella tracker + per-tier child issues — separate PR(s).
  • Cross-repo PRs to hyperpolymath/aggregate-library (T3 items).
  • CAPABILITY-MATRIX.adoc row updates — that's a follow-up alongside each implementation PR.

Test plan

  • AsciiDoc renders cleanly on the docs site (Casket SSG).
  • All four link: references resolve (bindings-roadmap ↔ stdlib-roadmap ↔ alib-roadmap ↔ ROADMAP).
  • No docs/*.md files added (DOC-FORMAT rule).
  • No "Closes #N" collision (DOC-DEDUP rule).
  • Each satellite carries SPDX-License-Identifier: MPL-2.0.

🤖 Generated with Claude Code

Adds three satellite roadmap documents under `docs/` and cross-links
them from the main ROADMAP.adoc:

* `docs/bindings-roadmap.adoc` — 50 framework bindings, 5 tiers
  (idaptik blockers → estate near-term → web universals →
  backend/cloud → tooling/interop). Compiled from idaptik PR #107
  + estate-wide binding-need inventory.

* `docs/stdlib-roadmap.adoc` — 50 stdlib items, 5 tiers (idaptik
  runtime gaps → RSR rewires → universals → concurrency/async →
  conformance/introspection). Includes inventory snapshot of the
  current `stdlib/` directory.

* `docs/alib-roadmap.adoc` — 25 items, 3 tracks (T1 conformance
  implementation, T2 runner/infrastructure, T3 affine-aware
  contributions back to `hyperpolymath/aggregate-library`). Aligned
  with aLib v0.1.0 (20 ops × 6 categories).

Main ROADMAP gains a new `== Satellite roadmaps` section near the
top and three See Also entries at the bottom. Where this set
disagrees with CAPABILITY-MATRIX.adoc or ECOSYSTEM.adoc, those win.

Per-tier tracking issues and the umbrella tracker will follow as
separate PRs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) May 28, 2026 09:59
|`http-capability-gateway` shipped Zig server (PR#23); AffineScript-side server bindings would let `.affine` programs serve HTTP without Zig.

|14
|*WebSocket client + server* (raw `ws://`, separate from Phoenix)
@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 82 issues detected

Severity Count
🔴 Critical 4
🟠 High 11
🟡 Medium 67

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action actions/checkout@v6 needs attention",
    "type": "unpinned_action",
    "file": "publish-jsr.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Action denoland/setup-deno@v2 needs attention",
    "type": "unpinned_action",
    "file": "publish-jsr.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in affine-vscode-publish.yml",
    "type": "unknown",
    "file": "affine-vscode-publish.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "unknown",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in casket-pages.yml",
    "type": "unknown",
    "file": "casket-pages.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "unknown",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "unknown",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "unknown",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "unknown",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  },
  {
    "reason": "Issue in ci.yml",
    "type": "unknown",
    "file": "ci.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath
hyperpolymath merged commit e5b9394 into main May 28, 2026
23 of 26 checks passed
@hyperpolymath
hyperpolymath deleted the docs/bindings-roadmap-top50 branch May 28, 2026 10:06
hyperpolymath added a commit that referenced this pull request May 28, 2026
## Summary

Follow-up to #410. The bindings-roadmap referenced `ws://` in a table
cell describing the WebSocket binding entry. Semgrep's
`javascript.lang.security.detect-insecure-websocket` rule scans asciidoc
+ prose and flagged this on #410's CI run.

Per the estate-wide **secure-protocols-in-docs** policy established
2026-05-28, all transport schemes in authored content must default to
the encrypted variant (https, wss, sftp, ldaps, smtps, …) — Semgrep
treats the literal `ws://` token in markdown/asciidoc as if it were
code.

This PR changes the table cell from `raw \`ws://\`` → `encrypted
\`wss://\``.

## Test plan

- [ ] Semgrep OSS check goes from FAILURE → SUCCESS
- [ ] AsciiDoc still renders the table cell correctly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request May 31, 2026
…t-division codegen fix (#478) (#474)

Rebased onto `origin/main` (was 15 commits behind; clean replay, no
conflicts). Built + tested locally with an apt-bootstrapped OCaml
toolchain.

## 1 — Roadmap Tracking-section fixes (docs)
Replaced stale `(TBD — opened alongside this PR)` placeholders in the
three satellite roadmap docs (landed in #410) with the live umbrellas +
child issues:
| Doc | Umbrella | Child model | Filed |
|-----|----------|-------------|-------|
| `bindings-roadmap.adoc` | #446 | pre-filed per-tier | #450#454;
kickoff #455 |
| `stdlib-roadmap.adoc` | #412 | lazy (`stdlib #N`) | #415 |
| `alib-roadmap.adoc` | #413 | lazy (`alib #N`) | #416 |

## 2 — Zig C-ABI FFI patterns doc (bindings #19)
`docs/specs/zig-ffi-patterns.adoc` — authoring recipe, DOC-DEDUP-scoped
against SPEC §2.10 / STDLIB-EXTERN-AUDIT / codegen-environment. Row `◐ →
●`.

## 3 — Hex + Base64 encoding (stdlib #25)
`stdlib/encoding.affine`: hex
(`to_hex`/`from_hex`/`to_hex_padded`/`hex_digit`/`hex_value`) + RFC 4648
base64 (`to_base64`/`to_base64_url`/`from_base64`/`from_base64_url`),
byte-oriented via two new compiler primitives
`string_char_code_at`/`string_from_char_code`
(resolve/typecheck/interp/codegen_deno). Verified by
`tests/codegen-deno/encoding_smoke`. Row `○ → ◑`.

## 4 — Integer-division codegen fix (#478)
Type-erased Deno-ESM lowered `Int / Int` to JS float division (`255/16 →
15.9375`), breaking `math.affine`'s
`pow`/`sum_naturals`/`binomial`/`lcm`/`div_floor` and `for x in xs { x/k
}` over int arrays. Now a provably-`Int` `a/b` lowers to
`Math.trunc(a/b)`; everything else stays `/` (no float regression).
Conservative classifier covers literals, Int params, let/assign-tracked
locals, integer-closed arithmetic, JS bitwise, Int-returning calls,
**for-loop variables over `Array<Int>`, and `xs[i]` element reads**.
Regression: `tests/codegen-deno/int_div`.

## Local verification (rebased state)
| build-job step | result |
|---|---|
| `dune build bin/main.exe` | ✅ |
| `dune runtest` | ✅ |
| codegen WASM | ✅ |
| codegen Deno-ESM (incl. int_div, encoding) | ✅ |
| face-transformer | ✅ |
| check-no-extension-ts | ✅ |
| check-doc-truthing (DOC-01..09) | ✅ |
| `dune build @fmt` (formatting) | verifying (ocamlformat 0.26.2 install
blocked by proxy on non-github dep hosts; confirming OCaml edits are
clean before merge) |

Full `dune build`/`@doc` additionally need `js_of_ocaml`+`odoc` (LSP/doc
paths), present in CI.

Refs #446, #412, #413, #478.

https://claude.ai/code/session_01DbDFzJZue7mMnKudvXSK4T
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants