Skip to content

Bind cached licences to OS credentials and harden offline rollback - #1248

Merged
enaboapps merged 2 commits into
mainfrom
fix/1246-bound-licence-cache
Oct 31, 2026
Merged

enaboapps merged 2 commits into
mainfrom
fix/1246-bound-licence-cache

Conversation

@enaboapps

@enaboapps enaboapps commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

A copied licence file currently supplies its own expected installation identity, and clock checkpoints do not authenticate or mirror their paid-time watermark. Cached paid access now waits for the real OS installation credential and initial mirror reconciliation, then requires a domain-separated installation-key seal over the whole local record. Unsealed v1/v2 caches retain trial history and the purchase key for online recovery without granting cached paid access.

Minute checkpoints advance authenticated revisions and both stores; same-lease reconciliation keeps the greatest paid-time marker, while a fresh signed server reply can recover from an incorrect forward clock jump. Running expiry and daily renewal scheduling also use monotonic elapsed time. Terminal statuses are mirrored before reporting a completed save; blocked OS writes have a bounded command wait and cannot restore stale state in memory.

Closes #1246; tracks #1217 on v1.4.0. The licence guide explains cold-start credential verification and recovery. docs/licensing-cache.md states the limits: full OS-store/clock rollback and simultaneous failure of all persistence cannot be solved by an offline client.

Validation: prediction models, lint, 323 UI + 23 Node tests, app/docs builds, Rust fmt/clippy, 880 Rust unit + 9 configuration tests passed (4 existing ignored). New regressions cover file-only transplant, tampering, cold locked-store restart/healing, monotonic expiry, authenticated watermark merge, legacy migration and revocation recovery after file-write failure. Tests use fixture keys, fake stores/transports and no native input.

Native installed-app/hardware validation remains pending. No production secrets or deployments changed. Release stays HELD; no merge, version bump, tag, RC or release.

Initial independent review found a startup checkpoint race. Fixed by retaining the original sealed record until identity and mirror reconciliation complete, with locked-startup checkpoint/file-write regressions against empty and stale terminal mirrors. Fresh independent review of 73e2b4d found no actionable issues; the reviewer inspected identity binding, cache seals, clock/reconciliation and terminal persistence. Native acceptance remains pending.

@vercel

vercel Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
site Ready Ready Preview Oct 31, 2026 5:38pm UTC

Request Review

@enaboapps
enaboapps marked this pull request as ready for review October 31, 2026 17:42
@enaboapps
enaboapps merged commit a3b9744 into main Oct 31, 2026
10 checks passed
@enaboapps
enaboapps deleted the fix/1246-bound-licence-cache branch October 31, 2026 18:16

This branch was successfully deployed

1 active deployment
Preview — 73e2b4dc Deployed Oct 31, 2026 by vercel[bot]
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.

Bind cached licences to the OS installation and harden offline rollback handling

1 participant