Give the nine bare anchors in both prompts their expectation tokens, so the executor sessions can verify content and not just line numbers

This commit is contained in:
heaven 2026-09-02 23:18:11 +03:00
parent 7f19ee48b1
commit 09a7d12130
2 changed files with 9 additions and 9 deletions

View file

@ -50,9 +50,9 @@
⚠ **Пункт 4 — это правка ТЕКСТА в двух живых местах, и оба надо снять, иначе ФЧ-5 придётся
переоткрывать** (класс «текст обещает больше числа» — ровно тот, ради которого заведён фикс-лист):
- `backend/internal/pipeline/status.go:217` — «…so status can never quote a different number than the
- `backend/internal/pipeline/status.go:217`=`can never quote a different number` — «…so status can never quote a different number than the
one translate enforces» (`grep -n 'can never quote a different number' backend/internal/pipeline/status.go``217`);
- `backend/internal/pipeline/reprice.go:24` — шапка файла: «NOT projected (like the content axis in
- `backend/internal/pipeline/reprice.go:24`=`NOT projected (like the content axis` — шапка файла: «NOT projected (like the content axis in
rebill.go): **ROUTING**. A row is priced by the model that ANSWERED, not by the one its stage resolves
to now» (`grep -n 'NOT projected (like the content axis' backend/internal/pipeline/reprice.go``24`).
Это заявление становится ЛОЖНЫМ ровно в тот момент, когда ты исполнишь пункт 1.
@ -148,7 +148,7 @@
ни денежные pipeline-тесты (`grep -n 'func (s \*Store) CheckpointUsageForBook' backend/internal/store/ledger.go`
`367`, сам фильтр — `371`). Единственная защита от того, чтобы деньги ЧУЖОЙ книги вошли в число
согласия. **Воспроизведено оркестратором ЛИЧНО.** Существующий тест
(`internal/store/ledger_test.go:10` `TestCheckpointUsageForBookReturnsInsertionOrder`) пинит только
(`internal/store/ledger_test.go:10`=`func TestCheckpointUsageForBookReturnsInsertionOrder`) пинит только
порядок вставки.
2. **Ключ ячейки можно лишить `chunk_idx`** — обход начнёт съедать деньги соседнего чанка (во всех
фикстурах глава = один чанк, поэтому никто не краснеет).

View file

@ -113,7 +113,7 @@ cd platform && grep -n 'Pricing' internal/runs/reconcile.go
Вызывающих у `reopen` двое: свиповый `restart` (`:1224`, вызов `:1244`, `fromALiveRun`) и контрактный
`Resume` (`:1481`, вызов `:1548`, `fromAFinishedRun`). Смена `TM_PLATFORM_USD_PER_CHAPTER`
(`internal/config/config.go:485`) между покупкой и продолжением молча пере-оценивает уже оплаченный
(`internal/config/config.go:485`=`TM_PLATFORM_USD_PER_CHAPTER`) между покупкой и продолжением молча пере-оценивает уже оплаченный
прогон в обе стороны; при удвоении ставки на тонком счёте он становится невозобновляемым. Носитель —
`PD-168` (стоит `minor`, вес занижен; замер ряда: холд `5.500000` вместо `2.500000`).
@ -161,11 +161,11 @@ cd platform && grep -n 'ceiling_micro_usd' internal/pgstore/migrations/*.sql
`internal/ingest/tail.go`, функция `apply` (`:145`). Четыре отказа стоят выше ветки, решающей
принадлежность: `:150` декод payload · `:153` `checkVersion` · `:156` пустой `EngineRunID` · `:162`
`Seq != 1`. Ошибка любого из них терминальна для проекции: `quarantines()`
(`internal/runs/reconcile.go:770-781`) пропускает только `context.Canceled/DeadlineExceeded` и
(`internal/runs/reconcile.go:770-781`=`func quarantines(err error) bool`) пропускает только `context.Canceled/DeadlineExceeded` и
`pgstore.IsTransient`, всё прочее едет в `Store.Quarantine`. Снятия карантина в дереве НЕТ
(`grep -rniE 'unquarantine|clearquarantine|quarantine_reason *= *null|dequarantine'` по `.go`/`.sql`
— пусто при живом положительном контроле `internal/pgstore/runs.go:1470 func (s *Store) Quarantine`),
операторской ручки нет, а гейдж `tm_platform_quarantined_attempts` (`internal/metrics/metrics.go:80`)
— пусто при живом положительном контроле `internal/pgstore/runs.go:1470`=`func (s *Store) Quarantine`),
операторской ручки нет, а гейдж `tm_platform_quarantined_attempts` (`internal/metrics/metrics.go:80`=`Name: "quarantined_attempts"`)
это видит и молчит о том, что делать.
⚠ **ПОСЫЛКА, КОТОРУЮ НАДО ЗНАТЬ ТОЧНО — иначе живая проба будет искать несуществующее.**
@ -180,7 +180,7 @@ cd platform && go test ./internal/ingest/ -count=1 -run TestAnotherAttemptsStrea
Карантинит **чужая ИЛИ БИТАЯ** hello-строка, и условий ровно четыре — они же перечислены в `PD-214`
(«ручной `tmctl` оператора в каталоге книги, старый мажор, баг чужой сборки»):
другой **МАЖОР** потока (`checkVersion` сравнивает ТОЛЬКО мажор, `internal/ingest/events.go:196-208`;
другой **МАЖОР** потока (`checkVersion` сравнивает ТОЛЬКО мажор, `internal/ingest/events.go:196-208`=`func checkVersion(got string) error`;
у платформы `StreamVersion = "1.1"`, у движка `"1.2"`обе стороны на мажоре 1, поэтому сегодня
проходит) · пустой `engine_run_id` · `seq != 1` · нераспарсиваемый payload.
⚠ Формулировка `PD-426` («попасть можно по чужому ЗАКОННОМУ handshake'у») — переупрощение, ряд
@ -192,7 +192,7 @@ cd platform && go test ./internal/ingest/ -count=1 -run TestAnotherAttemptsStrea
Что это значит по букве, чтобы ты не внёс дефект буквальным исполнением:
- ⚠ **Отказ по ДЕКОДУ (`:150`) остаётся ВЫШЕ и не двигается.** `EngineRunID` живёт ВНУТРИ payload
`Hello` (`internal/ingest/events.go:82-92`), в `Envelope` (`:71-79`) его нет — значит без успешного
`Hello` (`internal/ingest/events.go:82-92`=`EngineRunID string`), в `Envelope` (`:71-79`) его нет — значит без успешного
декода принадлежность просто НЕИЗВЕСТНА. Переставляемы только три отказа, не четыре.
- Понижаются **только** `checkVersion`, пустой `EngineRunID` и `Seq != 1` — **и ТОЛЬКО в ветке, где
`want` уже известен** (`want != ""`): там принадлежность решается сравнением `h.EngineRunID == want`,