offplan · online
Session · conv-35

Session CONV-35

Donesessionconv-35

Resume Prompt

Sub-plan 2 RATIFIED CONV-35 — Phase 1.2 sub-plan (plans/onboarding-trial-mode.md) flipped к ratified + workstream onboarding-trial-implementation P0 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.md P1 — 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:

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-closedratified 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

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

  1. Push 5+1 commits к origin/main (Sub-plan 2 ratification + this handoff commit) — Roma's CONV-30 stretch already rebased successfully.
  2. 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).
  3. ADR 0014 (MCP wrapper auth) dedicated /plan session — Phase 1.5.6 AI Floor Plan tags implementation gate. Stage 1.5 fallback OK если не успеет.
  4. Sub-plan 3 (plans/legal-multi-party-framework.md P1) — 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).
  5. Sub-plan 4 (plans/buyer-profile-and-presentation.md P1) — anchors ADR 0012 + Phase 1.11.1-8.
  6. 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.
  7. Roman pricing input — populate pricing-config.ts numbers (parked indefinitely Stage 1; Plan & Billing renders «Pricing TBD — contact us» fallback Stage 1).
  8. 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

Context for next session