diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/6a2/STATE.a2ml index 8e904aa..a64726f 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/6a2/STATE.a2ml @@ -229,3 +229,19 @@ depends-on = ["ephapax", "idris2", "zig", "webkitgtk"] # ReScript->AffineScript IPC-binding migration split to its own PR #73 # (bindings/affinescript/src/Gossamer.affine, affinescript-check clean; # standards#252) to keep #70 focused on the Android #71 companion. +# 2026-06-02: Session close-out — all three PRs merged to main; gossamer CI made +# foundationally green: +# [#70] Android gossamer-android-services companion (squash 425fd68); +# post-merge test-android re-run green (transient setup-zig flake +# cleared). +# [#73] AffineScript IPC binding added (@gossamer/api port). +# [#74] ReScript->AffineScript CUTOVER complete: bindings/rescript/ +# retired; bindings/affinescript/ is now @gossamer/api (MPL-2.0 +# deno.json + `deno task build` -> Deno-ESM). Two pre-existing +# governance gates also fixed foundationally: LICENSE AGPL->MPL-2.0 +# (owner-confirmed; 394 files + .ipkg were already MPL-2.0) and +# .trusted-base-ignore for tests/idris2/ escape hatches. Gates now +# green: Licence-consistency, Trusted-base, Language/package, Hypatia. +# Auto-merge (squash) used; stale local branches pruned. +# FLAG (untouched, licence guardrail): standards/LICENSE + burble/LICENSE +# carry the same AGPL-vs-MPL drift — surfaced for owner, not edited. diff --git a/CHANGELOG.md b/CHANGELOG.md index 89e8b18..142733a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed +- **Frontend IPC binding migrated ReScript → AffineScript** (`@gossamer/api`, standards#252): the published package is now the AffineScript binding in `bindings/affinescript/`, type-checked with `affinescript check` and compiled to a standalone Deno-ESM module via `deno task build` (`affinescript compile --deno-esm`). ReScript is banned estate-wide; this completes gossamer's migration. +- **Repository `LICENSE` corrected to `MPL-2.0`**: the top-level licence declared `AGPL-3.0-or-later` while all 394 source files and the `.ipkg` manifest are MPL-2.0 (gossamer is a sole-owner repo). Brought into line — the governance licence-consistency gate is now green. + +### Removed +- **`bindings/rescript/` retired** (`Gossamer.res`, `rescript.json`, package manifest) — superseded by the AffineScript binding above. + ### Added - **Android — `gossamer-android-services` companion: four shim base classes + real JNI (Phase 5, #71)**: Grows the Android target from "a WebView in an Activity" into a first-class mobile shell hosting the non-UI components, on the critical path for neurophone#97 (migrating a banned-Kotlin Android app onto gossamer). Owner-signed-off subclass model (issue #71). - `src/interface/ffi/src/jni.zig` (new) — a REAL JNI binding in pure Zig: models the `JNINativeInterface`/`JNIInvokeInterface` tables (ordinal-indexed), uses the `...A`-variant calls (no C varargs across the boundary), caches the `JavaVM` for thread attach, uses global refs, and reads `float[]` sensor samples via `Get/ReleaseFloatArrayElements`. The previous bridge declared `extern fn jni_*` symbols defined nowhere, so it could never link. diff --git a/README.adoc b/README.adoc index 6ecbf47..85f77a5 100644 --- a/README.adoc +++ b/README.adoc @@ -88,9 +88,9 @@ cd gossamer && bash examples/hello/run.sh == Features -* *Async IPC* — `gossamer_channel_bind_async()` spawns callbacks on a worker thread with 256-slot inflight tracker. Responses post back to the GTK main thread via `g_idle_add`. Rust and ReScript bindings included. +* *Async IPC* — `gossamer_channel_bind_async()` spawns callbacks on a worker thread with 256-slot inflight tracker. Responses post back to the GTK main thread via `g_idle_add`. Rust and AffineScript bindings included. * *CSP enforcement* — `gossamer_set_csp()` applies Content Security Policy at runtime. CLI auto-loads CSP from `gossamer.conf.json`. -* *Streaming events* (backend→frontend push) — `gossamer_emit()` pushes named events to the frontend thread-safely. JS, Rust, and ReScript bindings for subscribing/unsubscribing. +* *Streaming events* (backend→frontend push) — `gossamer_emit()` pushes named events to the frontend thread-safely. JS, Rust, and AffineScript bindings for subscribing/unsubscribing. * *Thread-local error safety* — all 16+ exported functions clear stale errors on entry. * *Capability registry* — 256-slot registry with FIFO eviction and clear overflow diagnostics. diff --git a/ROADMAP.adoc b/ROADMAP.adoc index ca83adc..288997b 100644 --- a/ROADMAP.adoc +++ b/ROADMAP.adoc @@ -165,7 +165,7 @@ Full-featured framework ready for production use. == Integration Targets -* [ ] **IDApTIK** — Replace Tauri for desktop builds (same ReScript frontend) +* [ ] **IDApTIK** — Replace Tauri for desktop builds (same AffineScript frontend) * [ ] **PanLL** — Gossamer as native panel shell * [ ] **Burble** — Gossamer as voice client UI