Commerce: nothing reads an entitlement, kLicensed is just kDebugMode #53

Open
opened 2026-09-05 15:10:12 +00:00 by ImBenji · 0 comments
Owner

There is no payment or entitlement code anywhere in the project.

kLicensed = kDebugMode (lib/constants.dart:18) is the entire licensing system - a debug build is treated as licensed and a release build is not. It gates exactly one thing, the canvas size ceiling (kMaxCanvasCells, kFreeCanvasMaxCells), covered by test/license_gate_test.dart. The backend exposes /v1/maps, /v1/live/start, /v1/agent/completions and /v1/notices/hashes, and no commerce endpoint at all.

The header already carries a "Buy a License" button, but it is kDebugMode only and its onPressed just prints - deliberately, per the comment there: a button that cannot take anyone's money is worse than no button.

STRATEGY.md section 5 is a fully worked pricing model (usage rights rather than features, attribution as the paid removal, per-seat above the personal tier). None of it has anything behind it in code. Filing so the gap between the strategy document and the repo is visible on the board rather than only in prose.

Scope is at least: an entitlement the client can check, somewhere durable to keep it, a purchase flow, and offline behaviour when the check cannot run. Related: the watermark toggle issue, which is the first thing an entitlement would actually gate.

Found during the roadmap audit on 2026-09-05.

There is no payment or entitlement code anywhere in the project. `kLicensed = kDebugMode` (`lib/constants.dart:18`) is the entire licensing system - a debug build is treated as licensed and a release build is not. It gates exactly one thing, the canvas size ceiling (`kMaxCanvasCells`, `kFreeCanvasMaxCells`), covered by `test/license_gate_test.dart`. The backend exposes `/v1/maps`, `/v1/live/start`, `/v1/agent/completions` and `/v1/notices/hashes`, and no commerce endpoint at all. The header already carries a "Buy a License" button, but it is `kDebugMode` only and its `onPressed` just prints - deliberately, per the comment there: a button that cannot take anyone's money is worse than no button. STRATEGY.md section 5 is a fully worked pricing model (usage rights rather than features, attribution as the paid removal, per-seat above the personal tier). None of it has anything behind it in code. Filing so the gap between the strategy document and the repo is visible on the board rather than only in prose. Scope is at least: an entitlement the client can check, somewhere durable to keep it, a purchase flow, and offline behaviour when the check cannot run. Related: the watermark toggle issue, which is the first thing an entitlement would actually gate. Found during the roadmap audit on 2026-09-05.
ImBenji added this to the Arcs & Angles project 2026-09-05 15:10:12 +00:00
ImBenji added the enhancement label 2026-09-05 15:13:49 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: IMBENJI.NET/Metro-Map-Maker#53