Summary
Resumed v4.4 review document read-through with Sergey (paused at end of Foundational §1). Two architectural simplifications applied: (1) Foundational §7 Reservations removed entirely — Partner manages reservation process in own external CRM, our admin offers only manual unit status flips (available ↔ reserved ↔ sold). No system-managed timers, no reservation_request entity, no force-release UI. (2) Stock allocation S·1 reshaped from «Shared default» to Closed pool default + per-project Open mode toggle (Variant 3 — secure by default; guest organisations see 0 units until explicit assignment). Plus VV/offplan.online entity boundary cleanup in §1 glossary, Buyer-row typo fix, Slack-style workspace switcher confirmed. All §8 Edge cases renumbered to §7. Phase callouts (1.3, 1.4, 1.7, 1.10, 1.11) and changelog updated to match. Sergey will continue read-through from §2 next session.
Changes
docs/plan/launch-plan-v3-full.html— major edits across multiple Foundational sections + 5 phase callouts:- §1 Entity glossary: VV reference removed from intro line 587 (replaced with generic «одна студия»); Buyer-row rewrite (typo «quartirы» → «юниты», «не имеет login'а» → «нет собственного login'а», «навсегда» → точная семантика про DB attribution)
- §4.4 Stock allocation: rewritten with Closed pool default (3-row table) + Open mode opt-in (delta paragraph); permissions matrix
Force-release reservationsrow removed; cascade text updated («never auto-revert в Internal pool») - §5 Visibility: cross-ref note added re §4.4 Stock allocation mode (in Public Visibility settings paragraph)
- §7 Reservations: deleted entirely (~20 lines); §8 Edge cases renumbered to §7 («Foundational · 7 / 7»)
- §6 Buyer flow + §5 viewer states: «Request reservation» → «Связаться со мной» (lead-trigger only) in 4 places
- Hero pill list: 8 → 7 sub-sections (one pill removed, Edge cases renumbered)
- Suspension flow (§3): «Active reservations frozen» → «Unit статусы не трогаем»
- Phase 1.3 callout 1.3.4: Closed/Open mode terminology
- Phase 1.4 callout: removed 1.4.Z (Force-release reservations) and 1.4.BB (Stale reservations overview); 1.4.CC renamed to «Stock allocation conflict reconciliation»; 1.4.Y wording updated (suspension)
- Phase 1.7 callout: added 1.7.EE Stock allocation mode toggle
- Phase 1.10 callout 1.10.EE: rewritten as «Status change UI» (manual flips, no system locks); 1.10.BB / 1.10.CC wording updates
- Phase 1.11 callout: 1.11.AA / 1.11.BB wording (request reservation → Связаться со мной)
- Open Questions Q6: removed C4.3 reservation lock reference
- §8→§7 cross-refs: updated in Phase 1.3.10, Phase 1.9.BB, Open Questions intro paragraph
docs/plan/launch-plan-changelog.html— v4.4 entry updated:- 8 → 7 subsections with explicit «Reservations & status flow удалена» note
- Phase 1.4 list (removed Force-release / Stale reservations refs)
- Phase 1.10 list («Reservation status flow UI» → «Manual status change UI»)
- Phase 1.7 list (+ Stock allocation mode toggle)
Decisions
Reservations system removed from Stage 1. Partner manages reservation process in their own external CRM. Our admin offers only manual unit status flips (available ↔ reserved ↔ sold) per permission matrix. No system-managed timers, no T+7 ping cadence, no reservation_request entity, no force-release with reason field. Rationale: scope reduction; the reservation process has too much off-platform variance (booking deposits, escrow rules, agency contracts) to model generically Stage 1. Buyer cannot self-reserve anything — cleaner consistency with Partner-managed model. Rejected: keep current sec 7 reservation infrastructure (over-engineered for Stage 1 reality where Partners already use external CRMs).
Stock allocation S·1 — Closed pool default (Variant 3) + per-project Open mode opt-in. Replaces previous «Shared default» semantics. New default «Internal pool» (units not assigned to anyone) visible only to internal team, NOT to guest organisations — guest orgs see 0 until explicit assignment. Open mode = per-project toggle reverting to «all see all» for broker-style multi-agency competition projects. Rejected: keeping Shared default (causes accidental data leak when external Agent invited; counter-intuitive for off-plan deals where developer/studio explicitly hands specific units to specific agencies). Rejected: per-Partner toggle (less flexible than per-project — different projects often have different commercial models).
VV/offplan.online entity boundary clarified in glossary. Removed VV reference from §1 intro paragraph (line 587) — was creating subtle confusion between platform (offplan.online) and example Partner (Volume Vision). VV remains as Partner example in real-world examples below where it's explicitly tagged. Variant B chosen over (A) explicit hero one-liner («VV = our launch customer Partner») and (C) leave as-is.
Workspace switcher = Slack-style, single workspace at a time. Confirmed Stage 1 model: Иван logs into one Partner workspace at a time, switches via header dropdown. No unified personal dashboard / cross-workspace search. Default workspace at login = subdomain whence user came; if N memberships and central login = «Choose workspace» page. Cross-workspace personal aggregation = Stage 2 if requested. «+ Create new workspace» в switcher dropdown'е = shortcut к paid Partner signup'у.
Next Steps
- Continue v4.4 review document read-through from Foundational §2 (Регистрация и онбординг) — Sergey paused at end of §1
- Capture further Sergey corrections in batch mode (similar pattern to today — read, accumulate observations, then several edits applied together)
- After Sergey finishes review → sync preview repo (
offplan-online/previewNOT synced yet) + send to Roman - After Roman approves → ratify Phase 1.3: fill
plans/permission-and-tenancy-model.md, create ADR 0009 (tenancy/permission), ADR 0010 (stock allocation S·1 — now with Closed/Open modes), update ADR 0005 (Google + email/password) - Post-ratification → send Ilya tech-estimate spec with 7 unknowns from Open Questions
- Update memory
plan_permission_tenancy_state.md— Block C2 (S·1 closed as Shared default) and Block C4 (reservations) now mismatch real plan - Rotate Perplexity API key (carryover from CONV-17, security hygiene)
Open Questions
- Will Roman accept Closed pool default? (he previously approved Shared default semantics — surface this change explicitly)
- Bulk operations UX in Closed mode — насколько critical иметь «assign all to Agency X» одним кликом? Closed mode усиливает важность этой UX
- Cyprus vs Abu Dhabi entity — memory says Cyprus decided but Open Questions still parks it; reconcile before ratification
- 7 tech questions for Ilya (wildcard SSL, multi-tenant DB, token storage, email provider, Super Admin Panel reuse, real-time sync, VV API audit) — pending after ratification
- Pricing tier specifics — separate
/plan onboarding-trial-mode+ ADR 0008 - Perplexity API key rotation (security hygiene from CONV-17)
Context for next session
- Sergey остановился на конце §1 «Кто есть кто». Последняя видимая на скрине строка — Buyer row, который мы починили (typo + ambiguity). Завтра продолжает с §2 (Регистрация и онбординг).
- v4.4 review document теперь содержит architectural changes (Closed pool default + Reservations removal) которые diverge от interview memory
plan_permission_tenancy_state.md. Block C2 закрыт как «Shared default», Block C4 закрыт с system reservation logic'ой. Memory нужно обновить ПЕРЕД отправкой Roman'у — ИЛИ принять Foundational §4.4 как ground truth и treat memory как outdated reference. - Preview repo
offplan-online/previewНЕ синхронизирован с сегодняшними изменениями. Перед отправкой Roman'у:cp os/docs/plan/launch-plan-v3-full.html preview/plan/ && cp os/docs/plan/launch-plan-changelog.html preview/plan/+ commit + push в preview repo. - Phase 1.3 callout 1.3.4 теперь mentions «Closed pool default + per-project Open mode toggle» — это спецификация для Ильи которая отличается от того что было до today. Если ADR 0010 уже думали писать — учесть Closed/Open dichotomy.
- Sergey предпочитает batch-режим работы с правками: он читает, накапливает наблюдения, потом сразу несколько изменений вместе apply'им. Не пытайся apply'ить one-by-one in real-time — он запутается. Это validated pattern из today.
- Notion MCP query API (data_source query) возвращает invalid_request_url errors сегодня — Sessions row create через POST работает, но workstream relation skipped (workstream lookup failed). Learnings DB queries в /resume тоже failed. Может быть transient или сломалась MCP server config.
- Buyer-row fix (line 599) был последним применённым перед /handoff — после длительной паузы где Sergey попросил отложить. Урок: explicitly track deferred edits в conversation context, не полагаться на «потом вернёмся».
- «+ Create new workspace» в switcher dropdown'е — Sergey approved попробовать как shortcut к paid Partner signup'у. UX detail для Phase 1.2.