From d2c20dbd1869f73a510f3a144c369efc299132ba Mon Sep 17 00:00:00 2001 From: heaven Date: Thu, 6 Aug 2026 04:04:20 +0300 Subject: [PATCH] Close orchestrator fourteen: D39.107 handoff, platform rework acceptance explicitly assigned to fifteen, GPT refinements folded into research 25, map and counter bumped --- docs/ORCHESTRATOR_SESSION_PROMPT.md | 2 +- docs/README.md | 2 +- docs/architecture/05-decisions-log.md | 8 ++++++++ docs/research/25-seam-cold-review.md | 18 ++++++++++++++---- 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/docs/ORCHESTRATOR_SESSION_PROMPT.md b/docs/ORCHESTRATOR_SESSION_PROMPT.md index df9aa7d2..08f195f7 100644 --- a/docs/ORCHESTRATOR_SESSION_PROMPT.md +++ b/docs/ORCHESTRATOR_SESSION_PROMPT.md @@ -1,6 +1,6 @@ # Промт: роль ОРКЕСТРАТОР TextMachine (канонический счётчик №N — в первой строке ниже) -> **Счётчик ролей — канонический ОДИН:** «оркестратор №N» (сейчас №14 — хендофф 04.08.2026, №13 закрыт после D39.105; состояние передачи — D39.105 + PROGRESS CURRENT-STATE; первая задача №14 — приёмка P0 платформы, перешла от №13). +> **Счётчик ролей — канонический ОДИН:** «оркестратор №N» (сейчас №15 — хендофф 06.08.2026, №14 закрыт после D39.107; состояние передачи — D39.107 (⚠ PROGRESS CURRENT-STATE НЕ обновлён: файл занят живым полигоном — обновить при его лендинге); очередь №15 — D39.107 п.3). **Позиция и первые задачи хендоффа №8→№9 (26.07) — ИСТОРИЧНЫ И ИСПОЛНЕНЫ** (малая пачка 14а+14б → D39.54 · пак-19 → D39.55/56 · холодный мини-прогон → D39.58 · пак-21 «чекеры» → растворён D39.62, исполнен пакетом D39.78) — здесь не пересказываются (историзировано D39.80: файл нёс протухшую очередь как второй носитель состояния). **ЕДИНЫЙ БЭКЛОГ = секция «Бэклог» в PROGRESS.md — единственный трекер.** Текущее состояние и очередь — ТОЛЬКО PROGRESS CURRENT-STATE; онбординг стандартный (CLAUDE.md → README → CURRENT-STATE → голова D-лога). diff --git a/docs/README.md b/docs/README.md index 1b6846a0..5774f33b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,7 +13,7 @@ - [09-target-architecture.md](architecture/09-target-architecture.md) — целевая 7-слойная архитектура (статус стройки — шапка-таблица; §3 — карта находок H/L) · [10-prompt-architecture.md](architecture/10-prompt-architecture.md) — промпт-слой · [12-go-style-notes.md](architecture/12-go-style-notes.md) — норматив общности §0 · [13-tech-debt-anchors.md](architecture/13-tech-debt-anchors.md) — якоря техдолга (справочник к бэклогу, НЕ трекер) · [14-api-contract/](architecture/14-api-contract/) — **контракт API v0 фронт↔платформа (D39.99)**: нормативная спека OpenAPI 3.1 (типы фронта генерятся из неё) + компаньон-README (провенанс ✓/◆/○, К-вопросы; зонная копия `frontend/docs/api-contract/` — байт-зеркало, сверять при лендинге). - Исторические, читать через ⚠-баннеры: [01-decisions.md](architecture/01-decisions.md) (Р1–Р10) · [02-mvp-plan.md](architecture/02-mvp-plan.md) · [03-implementation-notes.md](architecture/03-implementation-notes.md) · [04-unhappy-paths.md](architecture/04-unhappy-paths.md) · [06-memory-risk-registry.md](architecture/06-memory-risk-registry.md). - `experiments/` — эмпирика полигона: [00-provider-quirks.md](experiments/00-provider-quirks.md) — **читать перед любым вызовом провайдера**; [08-cost-model-v2.md](experiments/08-cost-model-v2.md) — денежная модель; [09-pilot-protocol.md](experiments/09-pilot-protocol.md) — пилот Ф2.5; остальные 01–16 — отчёты закрытых экспериментов (судьба — в баннерах/D-логе). -- `research/` — фактура ресёрчей 01–24; у принятых — ревью-шапки, часть тел под ⚠ superseded: **читай баннер прежде содержимого**. Ключевые для навигации: 15 голос · 16 ридер-IDE · 17 внешняя критика · 18 рычаги качества · 19 нарезка · 20 банк-майнинг · 21 обзор транспорта · 22 доменные харнессы · 23 шов движок↔платформа (читать перед любым кодом стыка) · 24 арбитраж банка (ПРИНЯТ D39.102: консилиум закрыт классом, вход фикс-пака банка — §G). +- `research/` — фактура ресёрчей 01–25; у принятых — ревью-шапки, часть тел под ⚠ superseded: **читай баннер прежде содержимого**. Ключевые для навигации: 15 голос · 16 ридер-IDE · 17 внешняя критика · 18 рычаги качества · 19 нарезка · 20 банк-майнинг · 21 обзор транспорта · 22 доменные харнессы · 23 шов движок↔платформа (транспорт superseded D39.106) · 25 холодное ревью шва — форма D39.106, отвергнутые альтернативы, требования к эмиттеру (читать перед любым кодом стыка) · 24 арбитраж банка (ПРИНЯТ D39.102: консилиум закрыт классом, вход фикс-пака банка — §G). - [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + **ЕДИНЫЙ БЭКЛОГ** (единственный трекер) + живой хвост хроники. НЕ источник решений. - Активные хендофф-промты сессий (состав обновляется при каждом лендинге — норма D39.80): [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) (роль/нормы; состояния не дублирует) · [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md) (полигон, отложен) · **платформа: [../platform/docs/PLATFORM_SESSION_PROMPT.md](../platform/docs/PLATFORM_SESSION_PROMPT.md) (P0 ИСПОЛНЕН 04.08 — ждёт приёмки №14 (в №13 не исполнена, D39.105); дерево `platform/*` не залендено, не трогать)** · фронт: `frontend/docs/S3_SESSION_PROMPT.md` (замок ОТКРЫТ — контракт ратифицирован D39.99; первый шаг — правки спеки по D39.100). Зонные журналы фронта/платформы — `frontend-PROGRESS.md` / `platform-PROGRESS.md` в их зонах (решение владельца 04.08: прогресс зон только там). **Бэкенд: [BACKEND_BANK_CLUSTER_FIXPACK_SESSION_PROMPT.md](BACKEND_BANK_CLUSTER_FIXPACK_SESSION_PROMPT.md)** (фикс-пак банка, строка 128+129; санкция D39.103) · **Полигон: [POLYGON_EDITOR_WIRE_PROBE_SESSION_PROMPT.md](POLYGON_EDITOR_WIRE_PROBE_SESSION_PROMPT.md)** (редактор под доктриной закона D39.104 ≤$0.30 + фронтир-пасс ≤$0.50, «go» дан). Очередь и состояние — только CURRENT-STATE. - Зоны фронта (чужие, читать при касании стыка; каждая ведёт СВОЙ зонный бэклог — единый бэклог их строк не принимает, D39.84): [../frontend/](../frontend/) — веб-интерфейс: промт фронт-сессий S0–S7 + [STACK_DECISIONS.md](../frontend/docs/STACK_DECISIONS.md) (пины версий точными числами и ловушки, сверены с вебом 02.08) + [BACKLOG.md](../frontend/docs/BACKLOG.md) · [../platform/](../platform/) — SaaS control plane: README + [BACKLOG.md](../platform/BACKLOG.md) (П-1..П-5) + `docs/` (промт P0 · зонный журнал `platform-PROGRESS.md`). diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 51527ceb..e251f934 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1515,3 +1515,11 @@ API-529-долг закрыт: 8-осевой refute-by-default воркфлоу **2. Форма (заменяет ТРАНСПОРТ D39.85 §1; остальное D39.85 в силе):** движок = транзиентный systemd-юнит на прогон (`Restart=no`, SIGTERM); события = `events.jsonl` каталога книги как проекция коммитов SQLite движка (outbox, та же транзакция, что чекпойнт); платформа тейлит, курсор `(engine_run_id, seq)` коммитится с эффектом в одной Postgres-транзакции; `status --json` — ремонт по остановленному прогону. Формат NDJSON/hello/seq, деньги (холд+потолок = защита, события = свежесть, D39.84/D39.100) и запрет на живой SQLite — без изменений. **3. Обязательные механизмы при постройке — research/25 §«Обязательные механизмы» (реконсилятор на каждый выход юнита + перезапуск после ребута · intent/`uncertain` + ночная сверка с провайдером · пиннинг версии бинаря на прогон · гейт потолка пер-вызов). Следствия: PD-59 superseded; пайп-путь `supervisor.go` P1 = дев-режим; ответ PD-13 переезжает на cgroup юнита прогона. Строка 103 и денежные строки единого бэклога — при освобождении PROGRESS.md; задачи зонам — промтами.** + +## D39.107 — ЗАКРЫТИЕ СЕССИИ №14 И ПЕРЕДАЧА №15: P0 принят и заленден, по P1 выдан пул доработок (приёмка доработанного дерева — №15), D39.106 ратифицирован пятью верификациями (06.08). ✅ + +**1. Итог №14:** приёмка P0 платформы — ПРИНЯТ, заленден `eeeef89`+`954c034` (регистр PD-1..19) · направление платформы ратифицировано (`PLATFORM_DIRECTION.md`, `99c9cb0`) · решения владельца по кредитам записаны (`87be7b9`, `6469479`) · по P1 проведена адверсариальная проверка (43 посадки, 31 поймана; сверка с RFC 9700 · ASVS 5.0 L2 · OIDC Core) — она дала ПУЛ ДОРАБОТОК (регистр до PD-59), сессия платформы взяла его в работу, и **дерево зоны с тех пор сильно изменилось (≈40 файлов, новая миграция 00008) — эта доработка НЕ принята и НЕ залендена: полная приёмка изменённого дерева = №15** · **D39.106 ратифицирован** (шов: журнал в каталоге книги + systemd-юнит-на-прогон, платформа не родитель) после пяти верификаций — 4 чистых панели + кросс-чек GPT; фактура и требования к постройке — `research/25` · промт S3 актуализирован и готов к запуску (`6ac26f3`). + +**2. Дельта норм (уроки №14, оплачены):** проверки ВНУТРИ репозитория ≠ приёмка решения — решения зон сверять с действующим первоисточником нормы (RFC/ASVS/спека) с номером раздела; слабая аргументация ≠ неверная позиция — сильные прецеденты искать САМОМУ до вердикта; свой контраргумент проверять чужими руками; допущения в ПОСТАНОВКЕ — такой же объект проверки, как ответ; изоляция панелей = запрет ФАЙЛОВЫХ тулов + аудит постфактум по journal.jsonl (сеть не запрещать — заземляет); адвокатская постановка покупает риторику за счёт строгости. Также в memory `acceptance-antipatterns`. + +**3. Очередь №15 (PROGRESS CURRENT-STATE не обновлён — занят живым полигоном; обновить при его лендинге):** (1) **приёмка доработанного дерева платформы** после передачи: ВСЕ изменённые файлы, по `ENGINEERING_STANDARDS` §3, со СВОИМИ посадками (готовый тест PD-52 — в журнале зоны; батарею гонять с живым PG — рецепт стенда без root в `platform/docs/STACK_DECISIONS.md`), лендить pathspec-формой · (2) по освобождении PROGRESS.md: строка 103 = эмиттер журнала по `research/25` §эмиттер + 4 денежные строки (реконсилятор · uncertain-эскроу · сверка с провайдером · пер-вызовный гейт) + пиннинг версии; пересчёт очереди скриптом · (3) по команде владельца: промты бэкенду (эмиттер) и платформе (реконсилятор/тейлер/юниты; пайп-`supervisor.go` → дев-режим) — носители: D39.106 + research/25 включая пометки (GPT) · (4) приёмки полигона: экспы 18/19/20 живые · (5) незакоммиченное Приложение А (`14-api-contract/README.md`) — слово владельца · (6) запуск S3 — промт готов · (7) вахта deepseek-v4-pro (триггер прошёл) · (8) мини-проба флора (строка 44) одобрена, промт не выдан. **Грабли:** сессии зон ЖИВЫ, пока владелец не сказал обратного — платформа и полигон работают прямо сейчас; git только pathspec-формой. diff --git a/docs/research/25-seam-cold-review.md b/docs/research/25-seam-cold-review.md index 96523387..26ff6de6 100644 --- a/docs/research/25-seam-cold-review.md +++ b/docs/research/25-seam-cold-review.md @@ -3,7 +3,9 @@ > **Что это.** Независимая верификация шва и топологии: задача в переодетом домене отдана четырём > чистым панелям (~18 агентов, Opus и Fable, без доступа к репозиторию; изоляция проверена > поагентно по журналам). Финальная тройка: атака на готовое решение + два абстрактных дизайна, -> которым явно разрешили REST/gRPC/брокер. Воркфлоу: `wf_6adb39d7-870` · `wf_2b45042d-115` · +> которым явно разрешили REST/gRPC/брокер. Пятое плечо — кросс-чек третьим семейством (GPT, +> через владельца): слепой дизайн сошёлся по форме и списку отвергнутого, атака — build with +> named changes без альтернативы; его уточнения помечены (GPT) ниже. Воркфлоу: `wf_6adb39d7-870` · `wf_2b45042d-115` · > `wf_4ac43daf-ec5` · `wf_b7eae996-b9c` (первый прогон `wf_b2b954de-e83` загрязнён чтением > репозитория и отброшен; правило: файловые инструменты панелям запрещать явно, проверять > постфактум). @@ -54,7 +56,11 @@ SSE, не WebSocket · `status` как ремонт, не поллинг. **Деньги:** - write-ahead intent + состояние **`uncertain`** для окна «платный вызов прошёл, коммит не успел»: - смещение к списанию, запись по оценке, флаг человеку; молчаливой бесплатной работы не бывает; + деньги остаются НЕРЕШЁННЫМИ в эскроу — intent доказывает намерение, не факт; spend не постится + без свидетельства провайдера; флаг человеку (GPT); молчаливой бесплатной работы не бывает; +- холд НЕ освобождается по выходу юнита — сигнал обгоняет финальные денежные события: состояние + `closing`, эскроу держится до терминального seq журнала (GPT); расход сверх холда записывать + полной суммой, превышение — явной строкой убытка платформы, не примечанием (GPT, уточняет PD-27); - **ночная сверка с данными провайдера** — приоритетнее споров об округлении: в движок суммы входят float64 по ручной таблице цен с ненулевым якорем незнакомого слага (`backend/internal/ledger/pricing.go:27-52`), систематика процентная; @@ -65,8 +71,12 @@ SSE, не WebSocket · `status` как ремонт, не поллинг. **Эмиттер журнала (строка 103):** - `events` (fsync, seq, деньги) ≠ `status` (atomic rename, косметика, не для биллинга); -- на старте движок ftruncate'ит хвост до последнего целого `\n` и дописывает с last-seq+1 — - побайтовая идентичность переэмиссии не требуется; +- **формат — развилка строки 103 (GPT):** одиночный JSONL с ftruncate-ремонтом имеет гонку живого + читателя и слеп к битой записи с валидным `\n`; альтернативы — пофайловые события + (`events/.json`, temp+rename) либо CRC-фрейминг; побайтовая идентичность не требуется; +- материализатор принимает только `seq == last+1` под блокировкой строки прогона; тот же seq с + другим payload = карантин прогона, не тихий no-op (перекрытие инстансов при деплое) (GPT); +- `status --json` берёт тот же flock — проверка «остановлен» не есть взаимоисключение (GPT); - **пиннинг прогона к версионированному пути бинаря**; резюм другой версией — только по явному флагу (движок выкатывается чаще, чем идёт прогон); - сброс буфера на всех путях выхода (`os.Exit` пропускает defer — теряются финальные события);