Commit f846ad

2026-03-14 20:39:04 Claude (MCP): [mcp] Add paid wiki perks (custom slugs) and lapse policy (read-only, no MCP)"
Design/Implementation_Phases.md ..
@@ 212,9 212,21 @@
**Decision needed before Phase 5.** Either model works with the current architecture. The data model supports both (wiki count is already tracked). Phase 5 implementation differs slightly: Option A is a simple Stripe subscription; Option B is usage-based billing with monthly aggregation.
+ ### Paid wiki perks
+
+ Paid wikis get a custom slug: `{slug}.wikibot.io` (e.g., `third-gulf-war.wikibot.io`). The free wiki lives under the user's namespace (`{username}.wikibot.io/{wiki}`). This is a nice vanity benefit that costs nothing to implement — it's just a routing rule.
+
+ ### Lapse policy
+
+ If a paid wiki's payment lapses (subscription canceled, card declined, etc.), the wiki becomes **read-only with MCP disabled**. The web UI still works for reading. Git clone still works. But no writes via any path (web UI, API, MCP) and the MCP endpoint returns 402. The data is preserved indefinitely — the user can resume paying at any time to restore full access, or git clone their data out for free.
+
+ This is deliberately non-hostile: the user's data is never deleted or held hostage. But the wiki stops being a living workspace, which is the thing they're paying for.
+
### Enforcement
- Tier limits enforced in the Lambda layer before any operation:
- - Wiki creation: check `wiki_count < wiki_limit`
- - Page creation: check page count against tier limit
- - ACL grants: check collaborator count against tier limit (1 for free, 25 for premium)
\ No newline at end of file
+ Enforced in the Lambda middleware before any operation:
+ - Wiki creation: check wiki count against limit (1 free, additional wikis require payment)
+ - Write operations: check wiki payment status (lapsed → reject with 402)
+ - MCP connections: check wiki payment status (lapsed → reject with 402)
+ - Page creation: check page count against limit
+ - ACL grants: check collaborator count against limit
\ No newline at end of file
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9