Skip to content

Complete the Permit installation loop and local trial; release 0.3.0 - #32

Merged
turinglambdaai merged 6 commits into
mainfrom
leg/mac-permit-loop
Oct 22, 2026
Merged

turinglambdaai merged 6 commits into
mainfrom
leg/mac-permit-loop

Conversation

@turinglambdaai

Copy link
Copy Markdown
Owner

Closes #31 (single-writer declaration). Salvages the still-valid gaps from the stale parallel migration #27 against the current commerce edition model.

What lands

Permit installation loop (new)

  • Stable per-install identity: ins_ + 32 hex, generated on first use, persisted at ~/.gptp-studio/installation-id.
  • Credential verification passes the installation id to permit, so installation_id-bound credentials verify on the matching install and fail closed everywhere else (entitlement-validate also threads the id into edition-entitled?, which re-runs the base policy).
  • GateInfo RPC gains a typed installation_id field; the License page shows it selectable/copyable with vendor guidance, replacing the stale license.lic placeholder.

Local trial on permit primitives (behavior change)

  • The 14-day trial is now permit local-trial state (fixed window + last_seen high-water, clock-rollback detection) instead of a plaintext date.
  • Legacy trial-started state migrates on first read: active keeps its remaining window, expired stays expired, Trial cannot restart a consumed window; corrupt state reads as absent.

Fixes

  • deb/rpm runtime dependencies: libgtk-4-1 (>= 4.10) + libsecret-1-0 instead of the removed libgtk-3 + libwebkit2gtk-4.1 set (the GTK4 host's real link surface since 0.1.0).
  • ACCEPTANCE.md rewritten for the Rivet/GTK4 product (old WebKitGTK stack, page names, glaze-era commands, 22.04 gate) with new license/update acceptance points; roadmap marks the signed update channel delivered; vendor guide documents installation-bound issuance.
  • CI: cancel superseded runs on the same ref (main never cancelled).

Release 0.3.0

  • Version single source aligned (rivet.rktd 0.3.0 / build 3, info.rkt, app/state.rkt) and CHANGELOG ## 0.3.0 heading; scripts/check-release-version.sh v0.3.0 passes.
  • linux/GeneratedBackend.hpp regenerated with the current rivet main generator (adds the _within timeout surface plus the new field).

Validation

  • raco test tests/*.rkt: 631 tests, the only failure is the known platform: "linux" wire assertion on macOS (this branch's CI is the Linux referee).
  • Gate suite: 74 checks covering installation binding (accept / foreign-install / fail-closed / gate-level activation), trial lifecycle, legacy migration (active + expired), corrupt state, and the existing updates-window set.
  • Host build + full Linux product gate run in CI; the release workflow (deb install + doctor smoke, signed feed build + verify) runs at the v0.3.0 tag.

Every install now holds a stable installation id (ins_ + 32 hex,
persisted beside the gate state) that rides along with credential
verification, so credentials bound to installation_id finally verify on
the matching install and fail closed everywhere else. The id is typed
into the GateInfo RPC and shown copyable on the License page.

The 14-day trial moves to permit local-trial state (fixed window +
last_seen high-water mark, clock-rollback detection); legacy
trial-started date state migrates on first read — an active window
keeps its remaining time, an expired one stays expired, and Trial
cannot restart a consumed window.
The deb still depended on libgtk-3 + libwebkit2gtk-4.1 — the stack the
0.1.0 Rivet migration removed — while the GTK4 host links gtk4, gio,
ncurses, zlib and libsecret. Depends is now libgtk-4-1 (>= 4.10) +
libsecret-1-0 (plus the engine tools); the rpm spec moves gtk3/
webkit2gtk4.1 to gtk4/libsecret the same way.
…duct

ACCEPTANCE.md still described the WebKitGTK stack (gtk3/webkit deps,
the old page names, glaze-era entry commands, a 22.04 gate). It now
matches the Rivet/GTK4 product, adds license and update-window
acceptance points, and points at rivet-acceptance.rktd as the
executable gate. The vendor guide documents installation-bound
issuance; the roadmap marks the signed update channel as delivered.
…ield

The 0.3.0 contract change is intentional: GateInfo carries the
installation identity as a typed field, so the compatibility baseline
moves with it.
@turinglambdaai
turinglambdaai merged commit 26de88f into main Oct 22, 2026
2 checks passed
@turinglambdaai
turinglambdaai deleted the leg/mac-permit-loop branch October 22, 2026 16:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Complete the Permit installation loop, local trial, and packaging fixes for 0.3.0

1 participant