Skip to content

Migrate gPTP Studio commercial entitlements to Permit - #27

Closed
turinglambdaai wants to merge 50 commits into
mainfrom
permit-migration
Closed

turinglambdaai wants to merge 50 commits into
mainfrom
permit-migration

Conversation

@turinglambdaai

Copy link
Copy Markdown
Owner

Goal

Use Permit as the single commercial-entitlement engine for gPTP Studio and remove the product-local RSA/OpenSSL/hardware-fingerprint licensing stack.

Product behavior

  • keep Free / Pro / 14-day local Trial
  • keep fully offline paid entitlement verification
  • keep the existing ~/.gptp-studio/license.lic installed-license location
  • preserve the current activation/deactivation RPC surface

Architecture

  • Permit Protocol v1 + Ed25519 replaces the old RSA-2048/OpenSSL verifier
  • product entitlement signing keys remain separate from updater signing keys
  • default installation identity is random and privacy-preserving, not Linux machine-id / hardware fingerprinting
  • Pro actions are checked by feature id + immutable feature publication timestamp, so features_through actually enforces maintenance-window economics
  • the local 14-day Trial uses Permit local-trial state; it is nuisance resistance, not DRM

Operations

  • add scripts/issue-license.rkt for manual permanent/subscription issuance
  • add docs/permit-operations.md for key provisioning, renewal, optional installation binding, team-seat operational handling, and offline revocation limits
  • ship a fail-closed empty trust-store placeholder in source
  • Release refuses to build an official artifact until a valid production Permit trust store is committed
  • CI/Release install a pinned Permit commit

Cleanup

  • delete support/license.rkt
  • delete the legacy RSA public key
  • remove OpenSSL as a licensing runtime dependency
  • update pricing, EULA/notices, architecture and legacy vendor docs

Validation

A product-level gate test signs a real temporary Permit entitlement, proves an explicit engine-control right does not also unlock export, then verifies local Trial behavior.

Protocol v1 itself is unchanged.

@turinglambdaai

Copy link
Copy Markdown
Owner Author

Closing as superseded: main completed its own Permit migration on a different path (whole-edition pro entitlement + the commerce-driven updates_through window, offers gptp-studio-pro-perpetual / gptp-studio-pro-team-5) while this branch carried the earlier feature-policy (features_through) model. The two designs diverged and the branch has been conflicted with main since 2026-10-16.

The gaps here that were still valid against main's model have been salvaged into #32 (merged-into-release 0.3.0):

  • installation identity: generated/persisted ins_… id, threaded into verification and edition-entitled?, exposed through the typed GateInfo RPC and a copyable License-page row
  • permit local-trial for the 14-day trial (replacing main's date-based trial state), with legacy trial-started migration
  • the stale license.lic host copy

Not salvaged, deliberately: the per-feature feature-specs/features_through gating (superseded by the commerce edition + updates-window model), license.lic as the stored credential path (main keeps entitlement.permit.json), app/version.rkt (main's scripts/check-release-version.sh already enforces the version single source), and the manual issuance script (the vendor guide's raco permit issue + commerce path is authoritative).

Thanks for the groundwork — the installation-id and local-trial designs here shaped the salvage.

@turinglambdaai
turinglambdaai deleted the permit-migration branch October 22, 2026 15:58
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.

1 participant