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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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 bytest/license_gate_test.dart. The backend exposes/v1/maps,/v1/live/start,/v1/agent/completionsand/v1/notices/hashes, and no commerce endpoint at all.The header already carries a "Buy a License" button, but it is
kDebugModeonly and itsonPressedjust 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.