Перейти к содержимому

CrewsForge — Журнал решений архитектурной сессии

Дата сессии: 2026-08-21 · Статус: решения подтверждены Stark’ом Формат: сводный индекс в стиле ADR. Детали — в step-документах 2–9.

#РешениеОбоснование (кратко)Документ
01Канон статусов этапа: 10 значений + CLOSED (итого 11); VERIFIED, не MODERATEDИсходы 5.5/5.6 не покрывались десятьюшаг 0, 3.9.1
02Двухуровневая машина проекта: 10 статусов + отдельная contractingStage (5)KYC_PENDING жил на двух уровнях; изоляция суб-машинышаг 0.2
03Проектный DISPUTED — производный, переходы автоматическиеТочечная заморозка 7.5; guard’ы читают Dispute, не статусшаг 0.2, 3.1.3
04Separate charges & transfers (поправка к D-3)destination charges несовместимы с моделью холдашаг 0.3, 5
05Деньги — BigInt минорные единицы; комиссия — снапшот commissionRateBps на проектD-1; тиражная сетка комиссийшаг 0.4
06Мягкий бюджет-гейт (задача администратору), не жёсткий rejectЗащита warm pipelineшаг 0.5
07Журнал переходов + доменные события через outbox — универсальный механизмL-2/L-5/S-2/X-6/Q-4 одним механизмом; атомарность публикациишаг 0.6, 3
08Карта сервисов: +billing-api, +platform-worker; team — либы в user-api (выделение после беты); admin-api → 3 рабочих местаИзоляция O-1; минимум деплойментовшаг 1
09Деньги администратора — напрямую в billing-api (бэк-офис на два бэкенда)Изоляция важнее одного base-URLшаг 1
10Трекер — внешний bounded context за контрактом: своя БД, порт+вебхук+маппинг на стороне CF; ни один инвариант CF от него не зависитПродаётся отдельно; обратимость вопроса репозиторияшаг 1 (доп.)
11PlanVersion — снапшот; Milestone материализуются при ACTIVEЮр-природа плана-приложения; F-1 прощешаг 2
12Политика удаления: RESTRICT на всей сделочной цепочке; удаление аккаунта = анонимизацияL-1; GDPR-вопрос юристушаг 2
13Settlement: CHECK через денормализацию hold_amount_minorИнвариант сумм на уровне БДшаг 2
14Party — снапшот на проект (@@unique projectId+side)C-5: юрданные фиксируются под договоршаг 2
15Механика машин: CAS-захват → guards → effects → журнал → outbox в одной транзакции; idempotentTarget для вебхуковКонкурентность и идемпотентность 7.3шаг 3
16Hold: +технический статус VOIDНеуспешный платёж ≠ REFUNDEDшаг 3.9.2
17Отмена до ACTIVE: свободно до договоров; в CONTRACTING — через администратораДыра ФТ закрыташаг 3.9.3
18Пауза при TERMINATION_REQUESTED: блок фондирования/сдач/приёмок; работа на риск команды; дедлайны замираютУточнение 5.6шаг 3.9.4
19Одна платформенная роль на пользователя; ActorSpec — единая точка прав; журнал недоступен клиентамO-1 не декоративен; L-4 радикальношаг 4
20Администратор не вводит суммы: расчёт системный по основанию, двухфазное подтверждениеУсиление A-2/X-2/D-6шаг 4.6, 5.3
21O-1 трёхслойно: границы Nx + отдельные Operator-DTO + денежный линтер в CIМеханика вместо дисциплинышаг 4.3
22Stripe: Express-аккаунты; hosted Checkout; ACH-дефолт + карты, издержки из комиссии; USD-only бетаЭкономика чеков; скорость бетышаг 5
23Строгий RELEASED = payout.paid (деньги на банке команды); transfer c source_transaction7.3 честно; инвариант «не больше холда»шаг 5.3
24Карточный chargeback = ExternalPaymentDispute (вне арбитражной модели), приоритетная задача + evidence-пакетКоллизия имён опасна; экспозиция после RELEASEDшаг 5.6
25Подписание: BoldSign (Enterprise API $30/мес, embedded, Free Sandbox); PDF генерим сами, шаблоны в репо, templateVersion+hash10x дешевле Dropbox Sign; доказательная цепочкашаг 6 (обновл.)
26Каждая сторона видит только свой договор (фаундер — B, команда — A)Следствие K-1шаг 6.4
27Доп-этапы после старта — акцепт внутри продукта (расширение K-3), без перевыпуска конвертовR-2 как штатная операция роста GMVшаг 6.5
28Q-4 = декларативный маппинг «переход → задача» + тест полноты в CI; дедуп открытых задач частичным индексомПроверяемое свойство вместо обещанияшаг 7.2
29Консьерж: тред, оператор первой линией (SLA 8ч), эскалация — третья операторская операцияЗакрыт вопрос 10.3.8шаг 7.5
30Таймеры без автосанкций; календарь платформы UTC 10–18 пн–пт; напоминания 50%/80%8.3: молчание не стоит денег автоматическишаг 7.3
31Миграция: чистый baseline — данные тестовые, старое дропается, схема создаётся сразу целевой; squash Prisma-миграций + сидыРешение Stark 2026-08-21; expand/backfill-цикл избыточен без боевых данныхшаг 8 (упрощён)
32Публичная карточка команды по слагу; состав показывается, если команда не скрыла его настройкой (флаг на Team, дефолт — показывать); полномочия canSign/canSubmit наружу не отдаютсяРешение Stark 2026-08-31: витрина команд нужна продукту, но публикация прав подписи — цель для социальной инженериишаг 4 §7 (правка), единица T4

Окно молчания фаундера — 5 раб. дней · окно позиции в споре — 5 кал. дней · окно возражений при расторжении — 5 кал. дней · конверт подписания — 14 дней · порог бюджета — $15k (мягкий) · порог LCIA — TBD · комиссия-дефолт — 1500 bps · SLA — таблица 8.2 ФТ.

  1. Separate charges & transfers: позиционирование платформы, лицензионная экспозиция (из шага 0).
  2. KYC фаундера при новой Stripe-модели (вопрос 10.3.1) — флаг в конфиге ждёт ответа.
  3. Анонимизация при удалении аккаунта: GDPR erasure vs хранение доказательств (шаг 2.12).
  4. Анти-chargeback пункт договора B: обязанность решать претензии через платформенный арбитраж (шаг 5.6).
  5. Click-through-акцепт дополнительных этапов к рамочному договору: US ESIGN / eIDAS SES; отдельно Сингапур и ОАЭ (шаг 6.5).
  6. Конструкции выплат в страны вне Stripe Connect-регионов (география команд, вкл. Украину): заключение по трём вариантам — (а) только Connect-регионы, (б) Stripe Global Payouts, (в) сторонний payout-провайдер (Payoneer/Wise) — с оценкой MTL-экспозиции каждого при нашей договорной топологии K-1 (платформа платит собственное обязательство по договору A). См. шаг 5a.
  • Точные квоты BoldSign Enterprise API при подключении (данные источников слегка расходятся).
  • DocuSign Starter: входит ли embedded (актуально только для плана Б).
  • Праздники в календаре платформы — сознательное упрощение беты.

Порядок исполнения — шаг 9 (волны F → A/B/C → G, критический путь F3→A1→A2→B2→B3→C4→G3→G4). Проектирование трекера — отдельная сессия. Спека HTTP-эндпоинтов рождается в эпиках реализации из машин и матрицы доступа.