Goal
Переработать §3 (Foundational Decisions / Подписка) в docs/rendered/launch-plan-stage-1.html чтобы закрыть три пробела зафиксированных в CONV-22 What's Next:
- 14-day trial (новая концепция, отдельная от существующего grace period)
- Ownership transfer with payment-gate (упомянут в §1 disclaimer, не раскрыт в §3)
- Tier nomenclature alignment (§2 уже использует «Tier 3 (Enterprise)», §3 — «Custom»; синхронизировать)
Это chunk 2 из 8 в Wave 2. Не пишет ADR 0008 (он остаётся placeholder). Не трогает sub-plans. Не пишет код приложения — это плановая работа в HTML-документе.
Locked Decisions (CONV-24 interview)
| # | Тема | Решение |
|---|---|---|
| Q1 | Trial scope | Path A signup → 14 дней T1 без привязки карты. Path B (guest invite) идёт сразу на Free Guest, без trial. |
| Q2 | Trial expiry | Auto-downgrade → Free Guest, projects read-only. Публичный сайт работает 30 дней, потом freeze. Симметрично с grace period отменённой подписки. |
| Q3 | Ownership transfer UI | Self-serve в Organisation Settings до first payment. После first payment — UI скрыт, message «свяжитесь с [email protected]». |
| Q4 | Tier naming | «Custom» → «Tier 3 (Enterprise)» в §3 table. Цена «По договорённости». 4 tier'а: Free Guest + T1 + T2 + T3. |
Strategic insight: trial без карты + ownership transfer pre-payment = единый sales motion студия→девелопер. Не два отдельных features. План должен это явно artifact'ить.
Approach
Surgical правки в одном файле (launch-plan-stage-1.html) + минимальный update changelog. Все изменения — в section §3 + 4 cross-link обновления в §1, §2, Phase 1.2 v4.5 callout. Никаких новых файлов.
Pattern Wave 2 Chunk 1 (CONV-22 §2 rewrite) — тот же: append <details> блоков + table edits + якорь IDs для cross-link.
Steps
A. §3 Billing rewrite (lines 769-814)
A1. Заменить existing intro (line 772):
- Сохранить «Модель 4» формулировку, но добавить sentence о tier structure: «4 уровня: Free Guest + три платных (T1, T2, T3)».
A2. Update Tier table (lines 784-792):
- Row 4: «Custom» → «Tier 3 (Enterprise)»
- Description column row 4: уже корректно, оставляем
- Цена column row 4: «По договорённости» (без изменений)
- Удалить line 793 caveat про Tier 1/2/Custom vs Starter/Studio/Agency/Enterprise — заменить на: «Конкретные цены, лимиты и возможное переименование линейки → ADR 0008 (Tier model). В рамках Stage 1 plan'а зафиксирована только структура: 4 tier'а с описанным выше назначением.»
A3. Add new subsection: «Trial period — первый месяц для Path A signup» (новый <details> блок, before existing «Что происходит при просрочке»):
- Триггер: signup через offplan.online → выбор tier'а на pricing page → 14 дней T1-доступа без привязки карты.
- Не применяется к: guest-invite signup (path B, всегда Free Guest), team-invite signup (path C, role в чужой Organisation).
- Что доступно во время trial: полный T1 функционал (создание projects, invite guest organisations, custom subdomain
{slug}.offplan.online). - Что НЕ доступно: T2/T3 фичи (custom domain, DKIM, SSO) — нужны для production-deploy студии, повод для upgrade.
- TRIAL badge в шапке админки + counter «X days left».
- Email reminders: день 7, день 12, день 14.
- При истечении без оплаты: auto-downgrade → Free Guest. Все trial-projects остаются в аккаунте, но read-only (нельзя редактировать, нельзя создавать новые). Публичный сайт работает 30 дней, потом frozen («временно недоступно, свяжитесь с {operator-email}»). Оплатил в любой момент — полный доступ возвращается мгновенно (включая re-edit existing projects).
- Cross-link:
<a href="#fd-billing-transfer">Ownership transfer</a>(см. A4) — для случая «студия трансферит на девелопера до того как сама заплатит». - Link to Phase 1.2 (v4.5 callout):
<a href="#phase-1-2">1.2 v4.5</a>— UI badge + Object Builder gating. - Abuse mitigation footnote: email verification (already required) + rate-limit per IP. Без deep fraud pipeline в Stage 1.
A4. Add new subsection: «Ownership transfer — до first payment» (новый <details> блок, after «Trial period», before «Гость → платный»). Anchor: <details id="fd-billing-transfer">:
- Когда доступно: Owner может trigger'ить self-serve transfer пока ни одного payment не прошло на Organisation. Это покрывает trial period и Free Guest state.
- Use case (главный): студия создаёт Organisation на trial, собирает контент проекта, передаёт ownership девелоперу. Девелопер регистрируется/принимает invite → ownership flips → девелопер делает first payment со своей карты → его billing с этого момента.
- Flow (4 шага):
- Owner идёт в Organisation Settings → Transfer Ownership.
- Вводит email получателя. System отправляет инвайт с одноразовым токеном (7d expiry).
- Получатель открывает email, регистрируется (если ещё нет аккаунта на этот email) или logs in, видит acceptance screen с описанием Organisation (slug, projects count, current tier = Trial / Free Guest).
- На acceptance: получатель выбирает что произойдёт со старым Owner — стать Admin или удалиться. Confirm → ownership flips, audit log entry «Ownership transferred from X to Y».
- После first payment: UI кнопки скрыт. Settings page показывает: «Ownership transfer for Organisations с активной подпиской handle'ится через [email protected] (Stage 1). Self-serve версия — Stage 2/3.»
- Edge case: если получатель отказывается / token expires — invite cancelled, ownership остаётся у текущего Owner.
- Cross-link:
<a href="#fd-entities">§1</a>(Owner role definition). - Cross-link: ADR 0009 (Tenancy) placeholder — упомянуть что transfer mechanic должен быть учтён в RBAC дизайне.
A5. Update existing «Что происходит при просрочке» subsection (lines 795-804):
- Mostly intact (это про grace period для already-paid). Один маленький fix: в первом bullet добавить уточнение что это «после first payment» — чтобы отличать от trial expiry.
A6. Update «Гость → платный» (lines 806-813):
- Сейчас уже корректно для Path B (guest → paid). Добавить one bullet: «Для path A (платный signup): аналогично, но переход с Trial → Paid не требует выбора tier'а заново — продолжаются как T1 (если не upgrade'или вручную ранее). Карта привязывается через Stripe в момент первого payment.»
B. §1 entity glossary updates
B1. Owner role definition (line 615):
- Текущий: «Client, создавший Organisation (или принявший ownership transfer).»
- Новый: «Client, создавший Organisation (или принявший ownership transfer — см. <a href="#fd-billing-transfer">§3 Ownership transfer</a>).»
B2. §1 footer disclaimer (line 633):
- Текущий ref: «self-service Organisation ownership transfer после первого payment (Stage 2/3 — Stage 1 разрешает только до payment, см. §3 Billing)»
- Уточнение: добавить anchor
<a href="#fd-billing-transfer">§3 Ownership transfer</a>чтобы линк ехал прямо к секции, не к началу §3.
C. §2 Onboarding cross-link (small)
C1. Path A row in onboarding table (lines 715-721):
- Добавить sentence в «Куда попадает» column: «На trial — 14 дней T1 без карты, потом auto-downgrade → Free Guest если не оплачено (см. <a href="#fd-billing-trial">§3 Trial period</a>).»
C2. Anchor IDs для new §3 subsections:
<details id="fd-billing-trial" open>для Trial period<details id="fd-billing-transfer">для Ownership transfer
D. Phase 1.2 v4.5 callout (line 1170-1183)
D1. Trial line update (line 1176):
- Текущий: «Trial (TRIAL - Nd badge в шапке): только Object Builder доступен. Full admin залочен пока нет активной подписки.»
- Новый: «Trial (TRIAL — N days left badge в шапке): 14 дней T1 без привязки карты. Только Object Builder доступен; Full Admin залочен. По истечении: auto-downgrade → Free Guest, projects read-only (см. <a href="#fd-billing-trial">§3 Trial period</a>).»
E. Phase 1.7 — Платёжная инфраструктура callout
E1. Audit Phase 1.7 для billing references (line 1974+):
- Phase 1.7 описывает sales-page + payment infrastructure. Если есть упоминания tier naming в виде «Starter/Studio» или «Custom» — заменить на T1/T2/T3.
- Добавить (если отсутствует) callout reference к §3 + ADR 0008 placeholder.
- Note: реальный объём правок в 1.7 определится при /build — может оказаться нужно только cross-link, может — больше.
F. Changelog entry в launch-plan-changelog.html
F1. Append v4.6 entry:
- Date: 2026-05-08
- Source: CONV-24 / Wave 2 Chunk 2
- Summary: «§3 Billing rewrite — added 14-day trial subsection, added Ownership transfer subsection (pre-payment self-serve), renamed Custom → Tier 3 (Enterprise). Cross-links updated in §1 (Owner role + footer), §2 (Path A), Phase 1.2 v4.5 callout.»
G. Workstream update
G1. workstreams/stage1-roman-integration.md:
- Mark Wave 2 Chunk 2 как done в Tasks list (если task существует, или append entry в Session Log).
- Update What's Next с Chunk 3 (§4 Access — Internal/External Sales Agent split + Actions column + View-as-Agent).
H. Preview repo sync (optional, if Sergey OKs)
H1. Sync 3 файла в offplan-online/preview repo:
docs/rendered/launch-plan-stage-1.htmldocs/rendered/launch-plan-changelog.html- (если Phase 1.7 затронут)
docs/rendered/launch-plan-stage-1.htmlуже первый — то же самое - Commit + push в preview.
Files
- Primary edit:
docs/rendered/launch-plan-stage-1.html(~150-200 lines added/modified) - Secondary edit:
docs/rendered/launch-plan-changelog.html(changelog entry, ~15 lines) - Workstream update:
workstreams/stage1-roman-integration.md - Optional sync:
~/code/offplan-online/preview/(separate git repo)
Dependencies
- Blocking nothing — Chunk 2 standalone, не зависит от других chunks.
- Blocked by nothing — все Wave 1+1.5 entity rename committed (a56033a + CONV-22 9409f1c).
- Future blocks: Chunk 3-8 (§4-§7 + phase callouts) могут начинаться после, не зависят от 2 за исключением общей navigation структуры (которая не меняется в этом chunk).
Testing
- Visual sanity check: открыть
docs/rendered/launch-plan-stage-1.htmlв браузере, проверить:- §3 структура: tier table → trial → transfer → grace period → guest→paid
- Anchor links работают:
#fd-billing-trial,#fd-billing-transfer(клик из §1 footer и §2 Path A) - Phase 1.2 v4.5 callout содержит обновлённый trial wording
- Changelog v4.6 entry виден в
launch-plan-changelog.html
- Cross-doc consistency check: grep по «Custom» в §3 → не должно быть остатков (кроме графы Description). Grep по «Tier 3» в §2 → должен совпадать с §3.
- Preview sync (если выполнили): открыть
https://offplan-online.github.io/preview/plan/launch-plan-stage-1.htmlпосле deploy, тот же visual check.
Risks
- Phase 1.7 audit может вскрыть больше работы чем ожидаем (наследие старых tier names) — buffer'ом mitigate, на /build если объём большой → split в Chunk 7 (Phase callouts).
- §1 ↔ §3 cross-link consistency — если забуду один of three анкеров (Owner role, footer disclaimer, §2 Path A), пользователь будет фрустрирован. Mitigate: финальный grep для каждого нового якоря.
- «Trial без карты» может породить abuse-вопросы у Романа при ratification — рекомендация (email verification + rate-limit) уже в плане; если Роман попросит deeper fraud check — это уйдёт в ADR 0008 / sub-plan, не блокирует Chunk 2.
- «auto-downgrade Free Guest read-only» может конфликтовать с тем что в §3 уже описано для grace period (там после блокировки edit'ы тоже выключены) — на /build проверить, что формулировки не дублируют друг друга и не противоречат.
Workstreams
- Updates
workstreams/stage1-roman-integration.md:- Mark Wave 2 Chunk 2 done в Session Log (CONV-24 entry)
- Update What's Next → Chunk 3 (§4 Access)
- No new workstream needed.
Evaluation
Done when:
- §3 содержит две новые subsections (Trial + Transfer) с правильными anchor IDs
- Tier table показывает T1/T2/T3 (no «Custom» как top-level row label)
- §1 disclaimer + Owner role + §2 Path A — все cross-link на правильные anchors
- Phase 1.2 v4.5 callout обновлён с 14-day trial detail
- Phase 1.7 проверен на legacy tier names (правки если нужно)
- Changelog v4.6 entry добавлен
- Workstream What's Next обновлён
- (optional) Preview synced + committed
- Visual sanity check — все anchors работают
Definition of NOT done (deferred to other sessions):
- ADR 0008 (Tier model) — placeholder остаётся, написание = другая сессия
- Sub-plan
plans/onboarding-trial-mode.mddeep design — отдельная /plan-сессия - Wave 2 Chunks 3-8 (§4 onwards + phase callouts + ADR placeholders)
- Stripe integration / billing implementation code — Phase 1.7 build, не plan-уровень