diff --git a/docs/BACKEND_SEAM_PACK_SESSION_PROMPT.md b/docs/BACKEND_SEAM_PACK_SESSION_PROMPT.md index 891fa54b..43a95402 100644 --- a/docs/BACKEND_SEAM_PACK_SESSION_PROMPT.md +++ b/docs/BACKEND_SEAM_PACK_SESSION_PROMPT.md @@ -144,6 +144,26 @@ (`backend/internal/pipeline/bankexport.go:33`=`const bankExportVersion = "tm-bank-v1"`), а `status --json` — нет. +### 4.7 Дефолт корпуса в тест-хелперах — ДЕЛАЙ РОВНО ТАК (строка бэклога 218, добавлено 24.08) + +Три хелпера резолвят стендовый корпус от `$HOME/books`, которого на машине больше нет: +`internal/miner/miner_parity_test.go:101-106`=`func standFile(parts ...string) string` · +`internal/checks/labelharness_test.go:58-63`=`func standLabelsDir() string` · +`internal/membank/labelharness_test.go:38`=`func memStandLabelsDir() string`. + +Правится ДЕФОЛТ, и ровно тем механизмом, который уже применён СОСЕДНЕЙ функцией в том же файле: +`internal/miner/miner_parity_test.go:56-57`=`finds the repository root by MARKER` — корень ищется по +маркеру вверх по дереву, а не считается точками и не берётся из `$HOME`. Env-переопределения +(`TM_CHECKER_LABELS_DIR`, `TM_MINER_PARITY_{CONTRAST,RECORDS,SEED}`) уже существуют и остаются +старшими — их не трогать. + +⚠ **Проверено оркестратором 24.08 и это твоя опорная точка:** с переопределениями на новый путь +корпус-батарея ЗЕЛЕНА, красен ровно `TestMinerFullBookParity` и ровно из-за отсутствующего +`eval/exp16/data/jieba_dict_general_zh.txt` (строка 123, в git не попадает по построению). Значит +критерий готовности пункта: `TM_MINER_PARITY=1 TM_CHECKER_LABELS=1 make battery-stand` БЕЗ единого +`TM_*_DIR`-переопределения даёт ту же картину — всё зелено, кроме парити на jieba. Если краснеет +что-то ещё — дефолт выведен неверно. + ## 4.6 Деньги: платных вызовов в паке НОЛЬ — ДЕЛАЙ РОВНО ТАК Санкции на платные вызовы у пака нет и не запрашивается. Глагол банка $0 по построению. `--keys-file` @@ -165,8 +185,10 @@ строки · повторный вызов пишет файл заново · глагол берёт лок блокирующе · читающий глагол требует ключи. ⚠ **Посадка обязана называть ПАКЕТ, в котором ищется пин** — не тот, где лежит правка: на этом уже горели, и ложное «мутация выжила» опаснее пропущенной, потому что выглядит как результат. -- **Живая проба глагола на реальной книге стенда** (`~/books/gu-zhenren/*`, работать в КОПИИ вне - рабочего дерева — транзиентные прогоны в чужом каталоге запрещены). Проба $0: глагол денег не тратит. +- **Живая проба глагола на реальной книге стенда** (`<репозиторий>/books/gu-zhenren/*` — ⚠ каталог книг + ПЕРЕЕХАЛ 24.08 внутрь репозитория и версионируется СВОИМ git; прежний адрес `~/books` мёртв, D39.157 п.2). + Работать в КОПИИ вне рабочего дерева — транзиентные прогоны в чужом каталоге запрещены; правки в `books/` + не делать вовсе, это не твоя зона. Проба $0: глагол денег не тратит. - **Субагенты РАЗРЕШЕНЫ явно** — на ревью своего кода, на поиск дефектов вне твоей карты, на опровержение твоих же выводов. Дефолт-запрет харнесса иначе тихо победит. - **Артефакт-находки обязателен:** `backend/docs/SEAM_PACK_FINDINGS.md` — что посадил, что краснело, что выжило. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 1627b761..635ca21c 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -155,7 +155,7 @@ | 215 | **$0-точечный репин движка работает ТОЛЬКО под `--resnapshot`, а платформа этого флага не передаёт.** Механизм пере-привязки незатронутых юнитов при сдвиге банка построен (`backend/internal/pipeline/stagerun.go:88-107`=`POINTWISE RE-EDIT`) и он и делает подпись термина доступной по цене; но с платформы он недостижим — она зовёт `translate` без флагов сверх потолка и `--verify-bank`. ⇒ на SaaS правка термина сегодня стоила бы полной пере-редактуры, а не дельты. Родня строки 199(б) (нулевой набор consent-флагов) | платформа + бэкенд | когда-нибудь (с платформенным паком шва) | отдельное решение | трассировка цепи банка 22.08, пере-проверено №19 | | 216 | **Подпись банка, halt на потолке и резюм после пополнения не проверялись против ЖИВОГО движка ни разу.** Проверки этих путей в батарее платформы стоят на фейках; единственный живой прогон движка в батарее — не по этим маршрутам. То есть три несущих сценария продукта держатся на договорённости о поведении чужой стороны, а не на замере. ⚠ Гейтится тем же, чем и живой прогон книги (строка 202): холодный прогон движка | платформа | когда-нибудь (с 202) | живой прогон по трём маршрутам | трассировка цепи банка 22.08, пере-проверено №19 | | 217 | **Скрипты полигона захардкодили АБСОЛЮТНЫЕ пути двух корней и не работают на этой машине вовсе.** `REPO = Path("/home/ubuntu/projects/textmachine")` — 104 файла ОДНОЙ дословной строкой (плюс 128 вхождений пути всего в 120 файлах); корень книг `/home/ubuntu/books/...` — 163 строки в 86 файлах. Пользователь теперь `ubuntu-26`, книги переехали в `<репозиторий>/books` ⇒ ломается и то и другое, включая ЖИВОЙ гейт фазы Д `eval/conformance.py:48`=`REPO = Path("/home/ubuntu/projects/textmachine")`. Живых носителей 30 (`eval/dovodka/*` + корневые гейты + сборщики корпусов), остальное — скрипты закрытых эксп-12–16. Форма правки — за зоной; приор оркестратора: один модуль путей, корень резолвится МАРКЕРОМ вверх по дереву (движок так и делает — `backend/internal/miner/miner_parity_test.go:56-57`=`finds the repository root by MARKER`), книги от него, обе ручки перекрываются env | полигон | скоро (блокирует любой прогон зоны) | пак путей полигона | переезд машины 24.08, №19 | -| 218 | **Три тест-хелпера движка резолвят корпус от `$HOME/books`, которого больше нет.** `internal/miner/miner_parity_test.go:101-106`=`func standFile(parts ...string) string` · `internal/checks/labelharness_test.go:58-63`=`func standLabelsDir() string` · `internal/membank/labelharness_test.go:38`=`func memStandLabelsDir() string`. Env-переопределения в коде УЖЕ есть и с ними корпус-батарея зелена (проверено №19: `TM_CHECKER_LABELS_DIR`/`TM_MINER_PARITY_{RECORDS,SEED}` на новый путь ⇒ красен только `TestMinerFullBookParity`, и только из-за отсутствующего jieba — строка 123). Чинится ДЕФОЛТ: тот же маркерный резолв, что уже применён к `repoFile` в том же файле | бэкенд | скоро (дешёвая, 3 функции) | пак стыка или попутно | переезд машины 24.08, №19 | +| 218 | **Три тест-хелпера движка резолвят корпус от `$HOME/books`, которого больше нет.** `internal/miner/miner_parity_test.go:101-106`=`func standFile(parts ...string) string` · `internal/checks/labelharness_test.go:58-63`=`func standLabelsDir() string` · `internal/membank/labelharness_test.go:38`=`func memStandLabelsDir() string`. Env-переопределения в коде УЖЕ есть и с ними корпус-батарея зелена (проверено №19: `TM_CHECKER_LABELS_DIR`/`TM_MINER_PARITY_{RECORDS,SEED}` на новый путь ⇒ красен только `TestMinerFullBookParity`, и только из-за отсутствующего jieba — строка 123). Чинится ДЕФОЛТ: тот же маркерный резолв, что уже применён к `repoFile` в том же файле | бэкенд | скоро (дешёвая, 3 функции) | ПОВЕШЕНА на движковый пак шва §4.7 (24.08) | переезд машины 24.08, №19 | | 49 | **Этапы Б+В спеки D15.2** (content-addressed resume / `guard_hash` — D39.31 сознательно не строил) ; этап В = tmctl export-контракт D29.1 (annot-v1 · цвет-мап+rollup · политика красных fail-closed) + операторский протокол-документ релиза гендер-твиста (D5.1): сам механизм УЖЕ построен — until_ch-правка → точечный re-edit со сметой и $0-пере-пином (`repin.go`/`rebill.go`, D39.42 п.5/D39.45) | бэкенд | скоро (ПОДТЯНУТА D39.81: annot-v1 = источник замечаний для фронта — критический путь подключения) | отдельное решение (annot-половина — по контракту 14, D39.99) | D39.34(4), D33 п.5, D39.81 | | 49а | **ALTER-шаги миграций v8–v14 не идемпотентны вопреки шапке `migrate.go:9-11`** (полу-применённая БД не сходится; счётчик версий скрывает) — находка критика полноты пака-19 | бэкенд | когда-нибудь | отдельное решение | D39.56, PACK19_BUILD §6.9 | | 50 | F3-остаток идемпотентности | бэкенд | когда-нибудь | отдельное решение | D39.34(4) | diff --git a/docs/README.md b/docs/README.md index d145ed65..11e42e6d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,7 +22,7 @@ | Роль | Активный промт | Статус | |---|---|---| | Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE | - | Бэкенд | [BACKEND_SEAM_PACK_SESSION_PROMPT.md](BACKEND_SEAM_PACK_SESSION_PROMPT.md) | движковая половина закона входной двери шва (D39.156); запуск по слову владельца | + | Бэкенд | [BACKEND_SEAM_PACK_SESSION_PROMPT.md](BACKEND_SEAM_PACK_SESSION_PROMPT.md) | движковая половина закона входной двери шва (D39.156) + строка 218 (дефолт корпуса), дописана 24.08; запуск по слову владельца | | Платформа | [PLATFORM_P8_REVIEW_SESSION_PROMPT.md](../platform/docs/PLATFORM_P8_REVIEW_SESSION_PROMPT.md) | read-only ревью четырёх осей; запуск по слову владельца | | Полигон | [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md) (отложенный — [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md), строка 85) | фаза Д ИДЁТ; ⚠ живой носитель курса — в `eval/dovodka/`, какой именно называет зона (⚠ [POLYGON_PHASE_D_HANDOFF.md](POLYGON_PHASE_D_HANDOFF.md) — перекрытый снимок, читать не как курс) | | Фронт | активного НЕТ | **ЗОНА ЗАМОРОЖЕНА** (D39.136 п.2 + D39.147: разморозка отдельным словом владельца, не привязана к P7); перечень первого касания — в зонном журнале |