Add platform row P-15 for the consumer half of the emitter seam and ping the zone journal that the engine journal is now live

This commit is contained in:
heaven 2026-08-14 17:18:01 +03:00
parent bd5c4850da
commit 2e9ac9549e
2 changed files with 2 additions and 0 deletions

View file

@ -23,4 +23,5 @@
| П-11 | **Наблюдаемость раннера.** Метрик и трейсинга в зоне нет вовсе (грепнуто: ни prometheus, ни otel, ни expvar, ни pprof), а у раннера появились величины, которые без них не видны: глубина очереди, возраст незакрытых холдов, число прогонов в карантине, отставание тейлера, длительность свипа. Сегодня всё это читается только глазами по логам и SQL. Связано с PD-115 (у зоны нет внешнего эталона ни по одной оси, кроме безопасности) — **ИСПОЛНЕНО P5 (11.08):** `prometheus/client_golang` v1.24.1 на отдельном слушателе `TM_PLATFORM_METRICS_ADDR`; глубина очереди · возраст самого старого открытого холда · карантины · отставание тейлера · книги в интейке · длительность свипа и счётчик недоведённых проходов · запросы и задержки по паттерну маршрута. Ось наблюдаемости получила внешний эталон (практики именования Prometheus + золотые сигналы, `ENGINEERING_STANDARDS` §2) — половина PD-115 | Ф3 | сессия P4, исполнено P5 |
| П-12 | **Квота интейка и ретеншен отклонённых книг.** `POST /books` даёт аутентифицированному аккаунту писать на диск оператора: один аплоад ограничен (64 МиБ), число аплоадов — ничем. Отклонённая по вине источника книга каталог теряет, отклонённая по вине деплоя — сохраняет намеренно, и не чистит их никто. Нужны лимит книг на аккаунт (сколько книг входит во фри-тир — продуктовая политика, не инженерная) и свип ретеншена. Строка регистра — PD-175 | до первого чужого пользователя | сессия P5 |
| П-13 | **Оценка размера книги в символах — у ДВИЖКА.** `character_count` контракта платформа считает потоково на приёме (байты, не являющиеся продолжением UTF-8), что точно для UTF-8 и приблизительно для GB18030/UTF-16, которые движок принимает и декодирует сам. Манифест несёт `source_bytes` и `encoding`, но не число символов. Запрос уходит строкой ЕДИНОГО бэклога через оркестратора; строка регистра — PD-177 **→ строка 171 единого заведена 14.08** | когда-нибудь | сессия P5 |
| П-15 | **Платформенная половина шва эмиттера (движковая залендена D39.131, `9cfe080`; события уже пишутся — StreamVersion 1.1):** (а) маппинг exit-кодов движка: 4 = потолок (`paused`, не `failed`), 5 = graceful stop, 1019 = полоса отказов — сегодня outcome() знает только 0/2/3 и читает `paused_reason` из stale-снапшота ДО drain (ceiling-стоп материализуется `failed`, Resume 409), а `refusedTheSource()` не смотрит на код вовсе (опечатка `book.yaml`/лок ведут к удалению загрузки — PD-196 у потребителя не закрыт); (б) фолд `unit_done` ПРИСВАИВАНИЕМ по тройке (chapter, unit, wave), не инкрементом — ратифицировано D39.131 п.2г (at-least-once; заодно самолечит потерю недодрейненного хвоста при рестарте); (в) принять `Ceiling.Scope` (book\|day — диагностика PD-157; resume дневного потолка не гонять в цикл) и outcome `ceiling\|stopped`; (г) dev-супервизор `outcomeOf` стейл (0/2/3); (д) порядок деплоя против деадлока v15 — строка 174 единого (решение ДО деплоя эмиттер-бинаря); watch: foreign-hello adoption при пре-существующем журнале в workdir | следующее касание зоны (с П-14) | приёмка D39.131 |
| П-14 | **Стройка интейка формы Б (ратификация D39.130):** при создании книги платформа рендерит стартовый `book.yaml` из деплой-шаблона (шов `books.ErrNotProvisioned` уже назван P5); требования к полям — читать `backend/internal/config/book.go` как справочник, шаблон — деплой-артефакт оператора, не код; при приходе формы В (строка 170 единого, `tmctl init`) рендер заменяется вызовом движка | следующее касание зоны | ратификация D39.130 (приёмка P5) |

View file

@ -34,6 +34,7 @@
стройка — следующим касанием зоны), форма **В** (`tmctl init`) — строка 170 единого бэклога
движку · контракт-диспозиции PD-172/173/174/180 — спек-правкой 0.2.3 задачей S4-промта ·
PD-196 → дописка строки 165 (различимость классов отказа `manifest`).
- **Пинг оркестратора, 14.08 (второй) — ЭМИТТЕР ДВИЖКА ЗАЛЕНДЕН (D39.131, `9cfe080`): `events.jsonl` начнёт появляться в каталогах книг.** Словарь = ваш `events.go` с диффом движка (принят приёмкой): `StreamVersion` **1.1** · `Ceiling.Scope: book|day` · `Finished.outcome += ceiling|stopped` · `eta_seconds` = темп ТЕКУЩЕГО прогона · `unit_done.unit` = лидерный `first_chunk_idx`. Ваша половина — **П-15** зонного бэклога (маппинг exit 4/5/1019 · `unit_done` присваиванием · scope · dev-супервизор · порядок деплоя против деадлока v15 — строка 174 единого, РЕШИТЬ ДО деплоя нового бинаря). PD-113/PD-196 в регистре остаются open до П-15 — движковая половина построена, потребительская нет.
- **Пинг оркестратора, 14.08 — гигиена зонных доков по аудит-свипу корпуса, закрыть следующим
касанием зоны (вместе с П-14):** `README.md:85` «тулчейн ≥1.26.5» → 1.26.6 c toolchain-директивой ·
`README.md:87` «River не подключена — П-3» и `STACK_DECISIONS.md:23` «River в go.mod НЕ добавлен» —