Resume Prompt
Sub-plan 2 RATIFIED CONV-35 — Phase 1.2 sub-plan (
plans/onboarding-trial-mode.md) flipped кratified+ workstreamonboarding-trial-implementationP0 created.Recommended next: ADR 0011 (email sender architecture) dedicated /plan session — it's the largest hard prerequisite для Phase 1.2 launch (7 trial cascade emails T-7/T-3/T-1/T+0/T+7/T+23/T+29 per Sub-plan 2 Step 8 depend on it). Architecture choices к surface: 4 candidates уже drafted в shell
docs/decisions/0011-email-sender.md— Single-domain offplanonline.com vs Per-Org DKIM self-hosted vs Hybrid vs Resend white-label delegation. CONV-20 leaned Resend.Alternative directions if user redirects: (b) ADR 0014 MCP wrapper auth dedicated /plan — Phase 1.5.6 AI Floor Plan tags gate (c) Sub-plan 3
plans/legal-multi-party-framework.mdP1 — Abu Dhabi jurisdiction per CONV-35 user signal (d) Sub-plan 4 buyer-profile-and-presentation P1 + ADR 0012 (e) UAE-specific tax research parallel кdocs/research/stripe-billing-onboarding-stage1-2026-05-11.md(triggered on jurisdiction lock)Housekeeping:
- 5 local commits already pushed origin/main по CONV-35 close (но проверь
git statusfor.mcp.jsonout-of-scope carry-over)- 2 stale Notion Learnings deprecation carry-over CONV-31 → CONV-35 (CONV-7 5-tier model + «Invite клиента» VV legacy)
- Notion workstream relation в Sessions row — 6th попытка empty likely (carry-over investigate)
Sub-plan 2 key locks reference (for cross-ref когда работаешь над dependencies): Trial = T2 Pro 14d (B4) · 3 seats Trial (B1) · Free Guest × host-project Model B edit-content-no-publish (B2) · invoice reference field (B3) · current price + transparent reactivation modal (B5) · 3 success-moment upsell modals Stage 1 (B6) · Mailto Stage 1 Enterprise (B7) · Checkout redirect Free Guest first paid (B8) · 14 Stripe webhook events · 7-stage deletion_journal atomic cascade · Step 13 Operator playbook NEW (9 operator actions + chargeback dispute resolution) · ADR 0017 NEW Stripe Stage 1 · ADR 0013 v1.1 endpoint rename · ADR 0008 amendment (Trial T2 default + config-driven pricing).
Summary
CONV-35 ratified Sub-plan 2 (plans/onboarding-trial-mode.md) — Phase 1.2 self-serve onboarding + Trial implementation spec. Five /plan steps executed end-to-end: Step 2 Research (Perplexity Sonar Deep Research, 12 findings on Stripe API patterns + abuse mitigation + Cyprus VAT) · Step 3 Approaches (single approach + 3 ratifications: Stripe ADR 0017 formal, Trial daily caps DROPPED, Cyprus e-invoicing DROPPED on Abu Dhabi jurisdiction shift) · Step 4 Plan body (~1750 lines + 13 Implementation Steps incl. NEW Step 13 Operator playbook) · Step 4.4 Business review (5 concern agents in parallel → 76 findings, 16 Category A applied inline + 13 Category B ratified one-by-one in interview style) · Step 5 Workstream onboarding-trial-implementation (P0). Plan flipped scratch-interview-closed → ratified with all downstream artefacts в same commit-set: ADR 0017 NEW (Stripe Stage 1), ADR 0013 v1.1 (endpoint rename), ADR 0008 amended (Trial T2 default), Phase 1.2.2 HTML v4.19 amendment (Org subdomain + project path), workstream-tracker pivot. Memory updated: legal entity shift Cyprus → Abu Dhabi (user signal mid-session). 5 commits ahead of origin/main, awaiting push.
Changes
plans/onboarding-trial-mode.md— Steps 2-4.5 closures (~1750 lines body + Part 1B recommendations + Part 3 amendments + Step 13 Operator playbook NEW; status →ratified)docs/decisions/0017-payment-provider-stripe-stage1.md— NEW ADR (Stripe Stage 1 formal ratification, closeslaunch-plan-v3.md:798-815«Stripe vs Paddle TBD» open question)docs/decisions/0013-proration-policy.md— v1.1 amendment (deprecatedupcoming_invoice→create_previewper Stripe 2025-03-31 changelog)docs/decisions/0008-tier-model.md— amendment (Trial = T2 Pro default per B4 ratification + config-driven pricing note + ADR 0017 cross-ref)docs/research/stripe-billing-onboarding-stage1-2026-05-11.md— NEW (Step 2 research artefact, 241 lines, Perplexity Sonar Deep Research output covering Stripe Customer lifecycle / tier transitions / webhook events / multi-currency / abuse mitigation / Cyprus VAT)docs/research/business-review-sub-plan-2-2026-05-11.md— NEW (Step 4.4 consolidated 76 findings, 174 lines, 5 concern agents: Studios + Sales motion + Customer Success + Finance + Billing + Security)workstreams/onboarding-trial-implementation.md— NEW (Step 5 P0 workstream, 5 phases 1.2.1-1.2.5 + cross-cutting tasks + blockers list)workstreams/stage1-roman-integration.md— Sub-plan 2 closed entry + What's Next pivot к Sub-plan 3/4 + Roma scaffold kickoff + UAE tax research follow-updocs/rendered/launch-plan-stage-1.html— Phase 1.2 callout flipped ratified state (with full decision list incl Trial Pro 14d, 3 seats, 14 webhook events, Step 13 Operator playbook) + Phase 1.2.2 v4.19 URL architecture amendment (Org subdomain + project path canonical table + 11-item implementation checklist + 2 resolved open questions)~/.claude/projects/-Users-diver-code-offplan-online-os/memory/project_legal_entity_cyprus.md— rewritten (Cyprus de-prioritised, Abu Dhabi likely candidate per CONV-35 user signal; carry-over Cyprus-specific references flagged)~/.claude/projects/-Users-diver-code-offplan-online-os/memory/MEMORY.md— index entry updated к reflect jurisdiction shift
Decisions
Trial = Full Pro 14d (B4 ratification — flips Pick #1 + Step 1.2 + ADR 0008). Original Pick #1 had Trial = T1 Starter; Studios agent (Step 4.4) flagged Pick #4 incoherence («Available on Starter» modal когда user technically on Starter slug). User picked Option A: full Pro 14d Trial с 1 project + 3 seats hard caps; Stripe Subscription on price_tier_2_monthly. Rejected: Option B (Object Builder only — incompatible с B1 3 seats), Option C (Hybrid Pro minus DKIM/custom — middle ground без clear benefit). Industry pattern match (Notion/Linear/Vercel — Trial unlocks paid tier, not default). Conversion lift +5-10% per public PLG benchmarks. ADR 0008 amended inline; downstream changes к Pick #1/4/12, Step 1.2 subscription create payload, Step 11 Plan & Billing UI logic.
Drop generic Trial abuse caps; route specific risks к их natural layers (Q2 push-back). User pushed back на Day 1 of Category B ratification: «зачем abuse protection, для чего будет бот приходить?». Анализ realistic abuse surface при ~100 projects target: 3 real vectors (subdomain squatting / email reputation / AI cost arbitrage) — каждый mitigated at its natural layer (Pick #6 reserved list / ADR 0011 sub-plan / ADR 0014 sub-plan), не generic Trial daily caps. Layer #1 only stack locked в plan content (Cloudflare Turnstile + email verify + email domain age check + IP rate limit + Pick #12 1-project hard). Stage 2 escalation trigger: abuse > 10% sustained 30d → fingerprinting.
Jurisdiction shift Cyprus → Abu Dhabi (mid-session user signal). During Q3 (Cyprus e-invoicing OASIS cUBL Stage 2 deferral question), user replied «по Q3 компания будет скорее всего в Абу Даби». Material memory update — project_legal_entity_cyprus.md rewritten к reflect Abu Dhabi leading candidate; MEMORY.md index updated. Sub-plan 2 body kept jurisdiction-agnostic per memory directive — research artefact F11 Cyprus-specific reframed as «example reference; UAE companion research pending lock». ADR 0013/0017 jurisdiction-agnostic by design. Q3 dropped from ratification (no longer Cyprus-specific compliance concern).
Critical Stripe API bugs caught in business review (Finance H1+H2+H3+H5). Step 2.1 originally specified Checkout Session с mode: "subscription" для tier upgrade — Finance agent caught: Checkout Session СОЗДАЁТ новую subscription для existing Customer, не update'ит → двойной billing. Fix applied: subscriptions.update({items, proration_behavior: 'create_prorations'}) with PaymentIntent confirm via Stripe Elements inline. Same review caught: 5 missing webhooks (charge.dispute.created/closed, invoice.payment_failed, charge.refunded, credit_note.created), automatic_tax:true breaking без billing address on Customer create, subscription_schedules missing from_subscription anchor (would create duplicate subscription). All 16 Category A objective bugs applied inline за один pass.
Step 13 Operator playbook NEW (CS H3 chargeback dispute resolution + 9 operator action dependencies). Customer Success agent flagged: Sub-plan 2 generates Day-1 support load (Free Guest archive, custom domain transfer, GDPR DSR, chargeback dispute) hitting Phase 1.4.7 Operator Dashboard without specification → operators improvise → inconsistent decisions + audit gaps. NEW Step 13 consolidates 9 operator actions (action name + identity verification + reason field enum + audit event + SLA + refund authority) + 5-stage chargeback dispute resolution playbook + email collision recovery + multi-tenant DSR caveat. Phase 1.4.7 sub-plan ratification теперь имеет clear dependency list.
Next Steps
- Push 5+1 commits к origin/main (Sub-plan 2 ratification + this handoff commit) — Roma's CONV-30 stretch already rebased successfully.
- ADR 0011 (email sender architecture) dedicated /plan session — hard prerequisite Phase 1.2 launch (7 trial cascade emails depend on it; designer email copy parked behind this).
- ADR 0014 (MCP wrapper auth) dedicated /plan session — Phase 1.5.6 AI Floor Plan tags implementation gate. Stage 1.5 fallback OK если не успеет.
- Sub-plan 3 (
plans/legal-multi-party-framework.mdP1) — jurisdiction-dependent (Abu Dhabi likely now); anchors Phase 1.3 § 2.4.C + § 1.4.C + Sub-plan 2 § 1.3.C Free Guest × host-project capability amendment (B2 Model B). - Sub-plan 4 (
plans/buyer-profile-and-presentation.mdP1) — anchors ADR 0012 + Phase 1.11.1-8. - UAE-specific tax research parallel к Cyprus research artefact — triggered on legal entity lock signal; Stripe Tax UAE 2024 GA + FTA e-invoicing format + reverse-charge specifics.
- Roman pricing input — populate
pricing-config.tsnumbers (parked indefinitely Stage 1; Plan & Billing renders «Pricing TBD — contact us» fallback Stage 1). - Designer scope (Ilya) — 7 trial cascade email templates (T-7/T-3/T-1/T+0/T+7/T+23/T+29 — post-ADR 0011) + 2 Trial-period lock modals (SSO + 2nd project) + 8-12 post-Trial lock modals + 3 success-moment upsell modals (first publish / first buyer link / first 50 views) + reactivation pricing modal.
Open Questions
- ADR 0011 (email sender) full spec — Stage 1.5 emails fallback if not ready by Phase 1.2 launch
- ADR 0014 (MCP wrapper) — Phase 1.5.6 gate
- Legal entity Abu Dhabi structure: ADGM / Mainland / DMCC / IFZA / other — user signal без specific structure yet
- Roman pricing strategy: tier numbers + limits (X projects / Y team / Z buyers) — carry-over multiple sessions
- Phase 1.7.13 hosting cost projection — feeds tier pricing decision
- 2 stale Learnings deprecation (CONV-7 5-tier model + «Invite клиента» VV legacy) — carry-over CONV-31 → CONV-35
- Notion workstream relation в Sessions row — 6th попытка empty confirmed CONV-35 (carry-over CONV-26/31/32/33/34/35 all empty) — investigate dedicated session
Context for next session
- 5 commits ahead origin/main (this handoff = 6th); rebased on Roma's CONV-30 stretch successfully (Cloudflare Pages auto-deploy +
INFRASTRUCTURE_CLOUDFLARE.md+ index generator +.wranglergitignore + LOCAL-2026-05-11-1 handoff). Stash/pop pattern для.mcp.jsonduring rebase worked clean. .mcp.jsonостаётся out-of-scope uncommitted — local Playwright addition; carry-over CONV-34 + CONV-35.- Plan body теперь ~1750 lines (1303 → 1572 после Step 4.4 → 1746 после Step 4.5). Substantial. Roma + Ilya self-contained для tech estimate.
- Stripe Customer creation = DEFERRED (Research F2 + D2 lock). Free Guest tier users (Path B reverse-invite) have NO Stripe Customer record; created at trial-init only. Important для GDPR cascade simplification + Stripe namespace cleanliness.
- Webhook count 8 → 14 (Finance H2/H3/H4 + Finance M2 dispute/paused/resumed/finalized additions). Tier state machine handler dispatch significantly expanded. Raw-body capture mandatory (Security M2 fix) — body-parser middleware breaks signature verification.
- Trial = T2 Pro NOT T1 (B4 ratification — material change from Pick #1 original); Stripe Subscription Price ID
price_tier_2_monthly. ADR 0008 amended accordingly. Downstream code impact: any reference к «trial tier = T1» in Phase 1.2.1-1.2.5 implementation must use T2. - Day 0 activation checklist уже в Atelier mockup — REQUIRED UPLOADS panel built-in per Atelier canonical (CONV-21 + ADR 0015 design inputs). Sales motion agent missed this — cross-ref clarification applied к Step 12.4. Дополнительные 3 success-moment upsell modals (B6) — Stage 1 designer scope on top of checklist.
- 3 seats Trial (B1) + Free Guest × host-project Model B (B2) — together resolve studio-developer collab use case (S1+S2 scenarios from Studios review). Free Guest can edit content (units / floor plans / hero) within host-Org project но не publish / settings / analytics. Owner-only revenue moments preserved.
- Step 13 (NEW) «Operator playbook & support workflows» — 9 operator actions (
archive_un_archive/custom_domain_transfer/signup_allowlist/trial_extend_grace/slug_force_change/chargeback_unfreeze/gdpr_dsr_export/gdpr_dsr_delete/tier_manual_adjustment) + chargeback dispute resolution playbook (5-stage process) + email collision recovery (HTTP 409 + operator flag) + reason field enum (8 categories + freetext) + 3 inbox topology (support@24h /privacy@72h /abuse@24h). Phase 1.4.7 sub-plan dependency. - Memory: Cyprus → Abu Dhabi shift CONV-35. Per directive, sub-plans/ADRs остаются jurisdiction-agnostic until formal lock. UAE-specific tax research = follow-up task on lock. Don't re-ask jurisdiction lock — wait for user signal.
- Notion workstream relation pattern —
workstream(relation) field в Sessions DB came back empty 6th consecutive session (CONV-26/31/32/33/34/35). MCP serialization issue OR Notion UUID format mismatch. Worth dedicated investigation в next session.