Add expectation tokens to the eleven anchors the pre-commit gate named in the P12 prompt

This commit is contained in:
heaven 2026-08-30 21:31:50 +03:00
parent a1aadbae92
commit e3975858cc

View file

@ -45,14 +45,14 @@ D39.165 §1) · эскроу П-18 · перф-строки `PD-412`/`PD-413`.
### 3.1 `PD-425` — обрыв клиента теряет запись о правке банка навсегда (деньги, делай РОВНО так по классу)
Дверь коррекций пишет пост-verb факт (`RecordBankMove`) на контексте ЗАПРОСА (`internal/httpapi/bank.go:149`):
Дверь коррекций пишет пост-verb факт (`RecordBankMove`) на контексте ЗАПРОСА (`internal/httpapi/bank.go:149`=`ApplyBankCorrections`):
клиент закрыл вкладку до ответа — запись не легла, `bank_moved_at` NULL навсегда, второго писателя и
свипа нет; дальше обычный прогон допускается без `--resnapshot` и умирает на снапшот-гарде движка ПОСЛЕ
взятия холда. Средство «503, пере-шли документ» недостижимо — клиента уже нет. **Класс лечения зона
назвала сама и уже дважды применила:** `WithTimeout(WithoutCancel(ctx), …)`
`platform/internal/httpapi/idempotency.go:151`=`WithoutCancel` (`settleCtx`; комментарий `:147-149` — дословно
про обрыв клиента) и `internal/books/books.go:205,215` (`writeCtx`, тело — `internal/books/parse.go:271-272`).
⚠ Тело `PD-425` в регистре несёт БИТЫЙ якорь `pgstore/idempotency.go:150` (там чтение ключа, detach нет) —
про обрыв клиента) и `internal/books/books.go:205,215`=`writeCtx` (тело — `internal/books/parse.go:271-272`=`WithoutCancel`).
⚠ Тело `PD-425` в регистре несёт БИТЫЙ якорь `pgstore/idempotency.go:150`=`Location` (там чтение ключа, detach нет) —
пере-нацель его той же правкой регистра (гигиена §3.9). Делай тем же классом; деталь (таймаут, что именно
накрывается) — реши сам и аргументируй. Пины свои: посадка «контекст отменён между verb и записью» обязана
красить дефект и зеленеть с фиксом.
@ -93,7 +93,7 @@ D39.165 §1) · эскроу П-18 · перф-строки `PD-412`/`PD-413`.
Write-гард уже закрыт (F12, `ErrNotResumable`, пин `TestAnOlderRunCannotBeResumedOverANewerOne`);
осталась read-половина: `lastRun` берёт `order by started_at desc` — живой прогон обязан иметь приоритет
над финишировавшим в карточке/полосе. ⚠ У `lastRun` ДЕСЯТЬ мест склейки на 30.08 (десятое —
`pgstore/runs.go:132`, добавлено 28.08 ПОСЛЕ счёта «девять» из PD-44; пере-сочти сам грепом паттерна
`pgstore/runs.go:132`=`lastRun`, добавлено 28.08 ПОСЛЕ счёта «девять» из PD-44; пере-сочти сам грепом паттерна
склейки, не голым словом — голое ловит комментарии) и он в ⛔-зоне sqlc — правка судится СВОИМИ тестами
по каждому месту, не «зеленью батареи».
@ -119,7 +119,7 @@ Write-гард уже закрыт (F12, `ErrNotResumable`, пин `TestAnOlderR
### 3.6 `PD-431` + `PD-432` — честность носителей (делай РОВНО так)
- `PD-431`: `Touch` (`internal/pgstore/sessions.go:49`) выбрасывает `RowsAffected` — апдейт в ноль строк
- `PD-431`: `Touch` (`internal/pgstore/sessions.go:49`=`func (s *Store) Touch`) выбрасывает `RowsAffected` — апдейт в ноль строк
неотличим от успеха, скольжение окна бездействия не проверяет ни один живой тест. **Слово
оркестратора: поведение НЕ менять** (ноль строк — законная гонка с отзывом); лечение — честность
проверки: запинить скольжение окна СКВОЗНЫМ тестом через `auth.Authenticator` с живым
@ -144,8 +144,8 @@ migrate` по каждой стендовой книге зоны → сними
**Состав снятия — по пингу №21, он ШИРЕ спавна:** (а) особый случай в спавне —
`platform/internal/runs/spawn.go:170`=`!l.BankReleased` — снять РОВНО; (б) писатель `LiftBankStop`
(`internal/runs/reconcile.go:1304`, `pgstore/runs.go:1180`) и (в) колонка `bank_released` с читателями
полосы (`pgstore/readmodel.go:393,498,961`) — реши сам, этим ли паком: снос = НОВАЯ миграция (00016 не
(`internal/runs/reconcile.go:1304`=`LiftBankStop`, `pgstore/runs.go:1180`=`bank_released`) и (в) колонка `bank_released` с читателями
полосы (`pgstore/readmodel.go:393,498,961`=`bank_released`) — реши сам, этим ли паком: снос = НОВАЯ миграция (00016 не
править) + пере-вывод сегмента полосы; (б)/(в) сцеплены — снять писателя, оставив колонку, значит
заморозить `bank_released=false` и врать полосой (ось §5); не этим паком — диспозиция строкой, как у
`PD-411`. ⚠ **Снимаемое поведение ЗАПИНЕНО:** `TestAResumedRunIsSpawnedWithoutTheSigningStop`
@ -161,7 +161,7 @@ l.VerifyBank unconditionally», т.е. ровно заказанная прав
`books/bk_WIUSGBQTIGWE4ZBY`; бинари в `bin/`, `tmctl``~/.local/bin/tmctl`); `W=~/tmstand-work` в
рецепте — шаблон. Живой `tmplatformd` — демон ЗАКРЫТОЙ сессии оркестратора №19: убей по PID (⚠ не
`pkill -f` — инцидент P11) и подними свой свежесобранный. Для живого пробоя $0-пары подними СВОЮ
заглушку на `127.0.0.1:11434` (образец — `platform/internal/runner/translate_resnapshot_live_test.go:41`;
заглушку на `127.0.0.1:11434` (образец — `platform/internal/runner/translate_resnapshot_live_test.go:41`=`Listen`;
ollama на хосте нет) и ⚠ гаси её на время `make check`: тест второго гейта при занятом порту скипается,
а требование — скипов 0.
@ -180,7 +180,7 @@ ollama на хосте нет) и ⚠ гаси её на время `make check`
Закрыть `PD-427` (комментарий уже исправлен 29.08 — акт закрытия) и `PD-203` («предложено закрыть» ещё
P8-REVIEW; проверь предикат и закрой либо оспорь) · перенести `PD-380` и `PD-44` (обе fixed) из-под
чужих заголовков «Открытые» · завести строку на НЕПОКРЫТУЮ гоночную ветку `errIdentityRace`
(`pgstore/identity.go:99-113` — ретрай при `on conflict … do nothing`, гонка двух первых логинов одной
(`pgstore/identity.go:99-113`=`race` — ретрай при `on conflict … do nothing`, гонка двух первых логинов одной
новой identity; ни один тест её не касается, все тестовые вызовы последовательные) с диспозицией:
запинить конкурентным тестом ЛИБО доказать недостижимость; ⛔ снос — только с доказательством: ветка
обслуживает ЛЕГИТИМНУЮ гонку логина, её снос = 500 на легитимном пути (класс §3.5) · `PD-422` НЕ