Ping both zones with the seam findings, hold the contract minor behind ratification, define shipping-config, and correct row 16 arithmetic and a wrong migration in the review prompt
This commit is contained in:
parent
6b5f0a5105
commit
f68ead69a9
4 changed files with 55 additions and 4 deletions
File diff suppressed because one or more lines are too long
|
|
@ -10,6 +10,7 @@
|
|||
- **Ф0–Ф3** — фазы: Ф0 скелет · Ф1 инфраструктура · Ф2 качество (судья/гейты) · Ф2.5 пилот · Ф3 продукт (веб-фронт, ридер-IDE).
|
||||
- **S0–S7 / P0–P8** — нумерация кодовых сессий зон: S-этапы фронта (S0–S4 приняты, S4 — путь «файл→прогресс», D39.135; зона ЗАМОРОЖЕНА, и лендинг P7 её НЕ разморозил — D39.147: P7 её не размораживает, S5 не выдаётся, разморозка отдельным словом владельца) · P-этапы платформы (P0 бутстрап D39.100 … P6 потребительская половина шва D39.132 · **P7 читающая поверхность — ПРИНЯТ С ФИКС-ЛИСТОМ и ЗАЛЕНДЕН 20.08, D39.153** · **P8-FIX — фикс-лист P7 плюс блокер свипа, ПРИНЯТ и ЗАЛЕНДЕН 22.08, D39.154**; читающий пак P8-REVIEW выдан и ждёт запуска); не путать с фазами Ф0–Ф3.
|
||||
- **Зонный журнал / зонный бэклог** — `frontend/docs/frontend-PROGRESS.md` · `platform/docs/platform-PROGRESS.md` и BACKLOG зоны: прогресс/пинги фронта и платформы живут ТОЛЬКО там (D39.100); их строки единый бэклог не принимает (D39.84).
|
||||
- **Шиппинг-конфиг** — конфиг пайплайна, по которому идёт БОЕВОЙ прогон, в отличие от тестового и от ран-локального. ⚠ Нормативного определения у термина ДО 23.08 не было, и это уже стоило путаницы: клейм «гейт голоса не включён ни в одном шиппинг-конфиге» верен про шаблоны репозитория (`backend/configs/`), но конфиг РЕАЛЬНОГО прогона живёт РЯДОМ С КНИГОЙ, вне git, и там гейт был включён. Читать так: «шиппинг-конфиг» = шаблон в `backend/configs/`; конфиг конкретного прогона — «ран-локальный», и утверждения о нём проверяются в каталоге книги, а не грепом по репозиторию.
|
||||
- **Полигон** — eval-зона платных/бесплатных экспериментов (`eval/`; отчёты — `docs/experiments/`, статус эксп-а — его баннер/D-лог).
|
||||
|
||||
## Решения и документы
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
|
||||
Приор: здесь дефект стоит денег. ⚠ **Уточнение базовой линии:** «не смотрел никто» — про СИСТЕМНЫЙ разбор оси; точечно её трогали, и в регистре есть строки со ссылками на `credits.go` и на прежние денежные линзы. Смотри их как известное, не переоткрывай. ⚠ **Два денежных дефекта, которые прежняя редакция этого промта звала «найденными, но не заведёнными», ЗАВЕДЕНЫ И ЗАКРЫТЫ паком P8-FIX 22.08** (испр. при лендинге): изоляция `inReadTx` — `PD-333`, оговорка `book_id <> $2` в `CreditHeldBy` — `PD-334`; у обоих пины, и оба пина проверены посадкой мутации. **Не переоткрывай их — ищи их КЛАСС**, и вот он сформулирован: «оговорка в комментарии или в SQL, которую ни один тест не исполняет». Тот же пак закрыл этот класс ещё в двух местах и оставил его открытым в третьем (`PD-372`: пин стоит на функции `truncateReason`, а ни один из четырёх её вызовов не проверен) — это живой образец того, что ты ищешь. Предмет: резерв → расчёт → возврат холда · потолки (книжный и дневной) · арифметика микро-долларов и округления · `spend_baseline`/`SpendBound` · кэп расхода холдом · путь «расход провайдера случился, а строка в леджер не легла» · `adjust` и доля в `/usage`.
|
||||
|
||||
Отправные точки: `internal/pgstore/credits.go`, `internal/money/`, `internal/runs/reconcile.go` (`settle`, `restart`), миграции `00007_credits.sql`, `00019`.
|
||||
Отправные точки: `internal/pgstore/credits.go`, `internal/money/`, `internal/runs/reconcile.go` (`settle`, `restart`), миграции `00007_credits.sql`, `00010_spend_baseline.sql`, `00011_ceiling_argument.sql`. ⚠ Испр. оркестратором №19 23.08: прежняя редакция звала здесь `00019`, но это `00019_read_model_debt.sql` — долг read-модели, к деньгам отношения не имеет; ось 1 по ней ушла бы не туда.
|
||||
|
||||
**Норма, обязательная к исполнению (канон приёмок).** ⚠ Обязателен САМ ЗАМЕР, а не оформление уже найденного: сессия, ничего не нашедшая, чисел не производит — и норма «каждое число двумя путями» не связала бы ничего. Поэтому минимум: сведи на стенде баланс аккаунта, сумму леджера и открытые холды двумя путями ДО всякого поиска — расхождение здесь и есть первая находка. Дальше каждое число — из СЫРОГО леджера **двумя независимыми путями** (чтение кода/SQL и прямой `SELECT` по стенду). Пути обязаны сойтись или расхождение называется числом. ⚠ И вторая половина той же нормы, без которой первая обманывает: **леджер = НИЖНЯЯ граница**. Сходимость двух путей доказывает согласованность, а НЕ полноту: вызов, за который провайдер списал, а строка не легла, сойдётся в обоих путях одинаково неверно. Для оси, у которой этот путь прямо в предмете, ищи его отдельно.
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,32 @@
|
|||
|
||||
## Текущее состояние
|
||||
|
||||
**⛔ ПИНГ ОРКЕСТРАТОРА №19 — 23.08, ЗОНЕ ПЛАТФОРМЫ. Три находки, все сверены моими командами; рукой в код не лезу.**
|
||||
|
||||
1. **Пере-нарезка книги сносит ВСЕ решения юнитов и пересчитывает прогресс из пустоты.**
|
||||
`internal/pgstore/readmodel.go:127-137`=`a re-cut drops the resolutions of the previous cut` —
|
||||
это не догадка, там собственный комментарий кода. Строку в ваш регистр я не заводил: решать вам,
|
||||
намеренная это семантика пере-разреза или дефект, и что делать со счётчиками, которые после
|
||||
этого показывают ноль сделанного на книге, где работа была.
|
||||
|
||||
2. **⛔ БЛОКЕР ЖИВОГО ПРОГОНА: движок на SaaS не получает провайдерских ключей** — строка **211**
|
||||
единого бэклога, тело там. Ваша половина: путь к файлу ключей едет из конфига платформы в
|
||||
аргументы движка, а дев-супервизор переводится на тот же механизм. Сейчас пути РАЗНЫЕ —
|
||||
`internal/ingest/supervisor.go:35-36,65-67`=`Provider keys reach the engine through it` наследует
|
||||
окружение платформы, а прод-спавн ставит юниту ровно один элемент
|
||||
(`internal/runs/spawn.go:168`=`Env: engineEnv(engineStreamID(`). Поэтому стенд зелёный, а прод
|
||||
голодает, и ни один тест упасть не мог. Пока два пути кормят движок по-разному, следующий такой
|
||||
блокер снова пройдёт всю батарею.
|
||||
|
||||
3. **Дубль движковой конвенции у вас.** `internal/runner/artifacts.go:65-95`=`neither project_db nor book_id`
|
||||
сам вычисляет путь БД книги, повторяя `backend/internal/config/book.go:163-167`=`b.ProjectDB = filepath.Join(dir, b.BookID+".db")`;
|
||||
смена дефолта в движке тихо уведёт ваше чтение банка на несуществующий путь. Строка **213**.
|
||||
Фикс аддитивный и без ломки: движок отдаёт путь артефакта, вы выкидываете свой `projectDB()`.
|
||||
⚠ Пере-именование банк-экспорта в фикс-имя — ЛОМАЮЩЕЕ, ему место в окне строки 161, не здесь.
|
||||
|
||||
*(Промт `P8-REVIEW` жив и ждёт слова владельца; два дефекта в нём я нашёл и починю ДО выдачи —
|
||||
одна из названных «денежных» миграций денежной не является, и счёт чужого дерева в шапке протух.)*
|
||||
|
||||
- **P8-FIX ПРИНЯТ И ЗАЛЕНДЕН оркестратором №18 (22.08).** Тело приёмки — ратифицированная нота
|
||||
**D39.154** (`docs/architecture/05-decisions-log.md`), здесь не пересказывается. Зоне важно ровно
|
||||
следующее, и этого в ноте нет:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue