Apply the refuter's four blockers to the seam pack prompt: backlog rows are ids not file lines, the zone pings are fenced out, paid calls are zero, and both platform knowledges close
This commit is contained in:
parent
691d9ce79a
commit
a1ce42200c
1 changed files with 47 additions and 12 deletions
|
|
@ -29,17 +29,21 @@
|
|||
## 2. Зона записи и git
|
||||
|
||||
Пишешь ТОЛЬКО в `backend/`. Читать можешь всё; `platform/`, `frontend/`, `eval/`, `docs/` — чужие зоны,
|
||||
правки в них запрещены. **Ты не коммитишь** — дерево готовишь и передаёшь на лендинг оркестратору
|
||||
правки в них запрещены. **Единственное исключение:** пинги и итог сессии — в `docs/PROGRESS.md`, секция
|
||||
«Бэкенд» (своего журнала у зоны нет). Больше в `docs/` не пишешь ничего. **Ты не коммитишь** — дерево готовишь и передаёшь на лендинг оркестратору
|
||||
(канон git-норм — `CLAUDE.md`). `git add -A`, `git add .`, `git commit -a` запрещены в любом случае.
|
||||
В дереве живёт незакоммиченная работа параллельных сессий — не трогай её и не «прибирай».
|
||||
⚠ Пинги и итоги — в `docs/PROGRESS.md`, секция «Бэкенд» (у зоны бэкенда своего журнала нет).
|
||||
|
||||
## 3. Карта чтения (пять позиций, больше не нужно)
|
||||
|
||||
1. **`docs/architecture/17-seam-inbound-law.md`** — ратифицированный закон входной двери. Это твой
|
||||
контракт: семь пунктов, каждый с прецедентом. Читать ЦЕЛИКОМ и до кода.
|
||||
2. **`docs/architecture/05-decisions-log.md`, нота D39.156** — почему закон такой и что он закрыл.
|
||||
3. **`docs/PROGRESS.md`, строки 199, 211, 212, 213** — предметные хвосты твоего пака.
|
||||
3. **`docs/PROGRESS.md` — строки БЭКЛОГА 199, 211, 212, 213** (предметные хвосты пака).
|
||||
⚠ **Это ID строк ТАБЛИЦЫ, а не номера строк файла.** Брать грепом `^| 199 |`, `^| 211 |` и так далее.
|
||||
Буквальный `sed -n '199p'` даст совсем другой текст — правдоподобный, но чужой, и заказ ты прочитаешь неверно.
|
||||
⚠ В теле строки 199 лежат ТРИ мины формата, которые обязана знать сессия, пишущая писателя этих файлов:
|
||||
явный `status: approved` · терм без `dst` · кап реверс-секции. Прочитать до кода.
|
||||
4. **`docs/experiments/00-provider-quirks.md`** — обязательное пре-чтение перед любым касанием
|
||||
вызовов провайдеров (тебя касается через `--keys-file`).
|
||||
5. **`docs/architecture/12-go-style-notes.md`** — норматив общности: Go-логика НЕ ветвится по паре
|
||||
|
|
@ -48,11 +52,19 @@
|
|||
**Код первичен.** Все `file:line` ниже — отправные точки, а не истина: открывай и проверяй сам.
|
||||
Всю документацию этого проекта писали нейросети, она ошибается, и уже ошибалась в этих самых местах.
|
||||
|
||||
## 3а. Что в секции «Бэкенд» — НЕ твой заказ (пропуск подписывается пропуском)
|
||||
|
||||
В `docs/PROGRESS.md`, секции «Бэкенд», висят два пинга твоей зоне. **Ни один из них в этот пак не входит:**
|
||||
пинг про потерю инъекции банка на эскалации в Gemini (строки 208/210, родня 193) и пинг про разошедшиеся
|
||||
с деревом `backend/README.md` и `components.puml`. Не трогай их и не «допиливай попутно» — это скоуп-крип,
|
||||
и ответ полигону по Gemini даст отдельный промт. Если по ходу работы увидишь, что твой пак ломает или
|
||||
чинит что-то из них, — пинг, а не тихая правка.
|
||||
|
||||
## 4. Состав пака и разметка свободы
|
||||
|
||||
### 4.1 Конвенционные дефолты двух путей — ДЕЛАЙ РОВНО ТАК
|
||||
|
||||
Пустые `mined_delta` / `mined_rejects` движок доставляет сам, по конвенции каталога книги. Механизм
|
||||
Пустые КЛЮЧИ КОНФИГА `mined_delta` / `mined_rejects` движок доставляет сам, по конвенции каталога книги (речь о незаполненном ключе, а не о создании пустых файлов). **Имена дефолтных файлов решаешь сам** — важно, что конвенция одна и живёт в движке. Механизм
|
||||
уже существует для базы проекта — повторить его:
|
||||
`backend/internal/config/book.go:163-167`=`b.ProjectDB = filepath.Join(dir, b.BookID+".db")`.
|
||||
Прецедент опционального конвенционного YAML-входа тоже есть:
|
||||
|
|
@ -64,7 +76,7 @@
|
|||
|
||||
### 4.2 Глагол приёма правок банка — РЕШИ САМ форму, ДЕЛАЙ РОВНО ТАК семантику
|
||||
|
||||
Новый $0-глагол `tmctl`. Прецедент глаголов без прогона есть (`migrate`, `backup`, `seed-lint`).
|
||||
Новый $0-глагол В `tmctl`. Прецедент глаголов без прогона есть (`migrate`, `backup`, `seed-lint`).
|
||||
|
||||
**Имя, разбиение на подкоманды, схему входа и формат ответа решаешь ты** и аргументируешь в отчёте.
|
||||
Ориентир: вход — решения в словаре уже публикуемой движком поверхности (стабильные id банк-экспорта
|
||||
|
|
@ -81,10 +93,12 @@
|
|||
- **Два решения по одному терму в одном вызове — отказ всего вызова как ill-formed.**
|
||||
- **Конфликт с подписанной строкой сида — отказ С ИМЕНЕМ**, молча принять нельзя: это заминирует
|
||||
следующий прогон.
|
||||
- **Проекция ДО мутации.** Мутирующий глагол сначала говорит, что произойдёт и почём.
|
||||
- **Проекция ДО мутации, получаемая БЕЗ мутации.** Закон говорит «почём до ПОДТВЕРЖДЕНИЯ», прецеденты —
|
||||
смета с порогом согласия и `--dry-run`. Формулировку «напечатал и тем же вызовом записал» считать
|
||||
НЕисполнением. Форму (режим, флаг, отдельная подкоманда) **решаешь сам и аргументируешь**.
|
||||
- **Занятый лок — отказ РОВНО классом 12**, не 10. Полоса различает их не косметически: 10 значит
|
||||
«деплой сломан, чинит человек, книги ждут», 12 значит «ничего не произошло, подожди и повтори»
|
||||
(`platform/internal/ingest/exit.go:58`=`ExitProjectLocked = 12` — читать, не править, чужая зона).
|
||||
(в твоей зоне тот же класс уже назван: `backend/cmd/tmctl/main.go:68`=`another tmctl owns this project right now`; платформенная сторона — `platform/internal/ingest/exit.go:58`=`ExitProjectLocked = 12`, читать, не править).
|
||||
- **Арбитр гонок — тот же flock проекта**, что держит прогон:
|
||||
`backend/internal/store/store.go:55`=`EXCLUSIVE flock on`. Брать неблокирующе.
|
||||
⚠ Это не перестраховка: движок пере-читает сид ПОСРЕДИ прогона, запись в живой прогон въехала бы
|
||||
|
|
@ -122,18 +136,30 @@
|
|||
|
||||
### 4.5 Путь артефакта и версия в `status --json` — РЕШИ САМ форму
|
||||
|
||||
Платформа сегодня вынуждена сама вычислять путь базы книги, дублируя движковую конвенцию (строка 213).
|
||||
Отдай ей путь — аддитивным полем, форму выбираешь ты. Тем же касанием закрой асимметрию: банк-экспорт
|
||||
Платформа сегодня знает о твоей стороне ДВЕ вещи, и закрыть надо ОБЕ (строка 213): она сама вычисляет путь
|
||||
базы книги, дублируя движковую конвенцию, И знает суффикс твоего артефакта
|
||||
(`platform/internal/runner/artifacts.go:37`=`os.Open(db + ".bank.json")` — читать, не править, чужая зона).
|
||||
Отдай ей ПУТЬ БАНК-ЭКСПОРТА (и путь базы, если сочтёшь нужным) аддитивным полем — форму выбираешь ты.
|
||||
⚠ Пере-именование банк-экспорта в фикс-имя — ЛОМАЮЩЕЕ, его окно — строка 161, сюда не тащить. Тем же касанием закрой асимметрию: банк-экспорт
|
||||
и манифест версию документа несут
|
||||
(`backend/internal/pipeline/bankexport.go:33`=`const bankExportVersion = "tm-bank-v1"`),
|
||||
а `status --json` — нет.
|
||||
|
||||
## 4.6 Деньги: платных вызовов в паке НОЛЬ — ДЕЛАЙ РОВНО ТАК
|
||||
|
||||
Санкции на платные вызовы у пака нет и не запрашивается. Глагол банка $0 по построению. `--keys-file`
|
||||
доказывается юнит-тестами и пробой с ФЕЙКОВЫМИ ключами (проверяется, что путь резолвится, файл читается,
|
||||
порядок цепочки соблюдён), а не живым `translate`. **Рантайм-вердикт по платному пути остаётся PLAUSIBLE —
|
||||
это ожидаемый исход, а не дефект отчёта**; так и напиши. Упёрся в место, где без денег не доказать, —
|
||||
пинг с названной суммой, не трата.
|
||||
|
||||
## 5. Мандат самопроверки ИСПОЛНЕНИЕМ
|
||||
|
||||
Не «перечитал» — **исполнил**. Минимум:
|
||||
|
||||
- **Батарея целиком** после каждой содержательной правки: `go build ./...`, `go vet ./...`,
|
||||
`go test ./... -count=1`. Красный тест не «подгоняется»: править или удалять тест, голден или гейт
|
||||
- **Батарея целиком, ИЗ КАТАЛОГА `backend/`** после каждой содержательной правки: `go build ./...`,
|
||||
`go vet ./...`, `go test ./... -count=1`. ⚠ `go.mod` в корне репозитория НЕТ — модули раздельные, из корня
|
||||
батарея не соберётся. Платформенную батарею не гоняешь вовсе: платформу ты не правишь. Красный тест не «подгоняется»: править или удалять тест, голден или гейт
|
||||
ради зелени — НЕДОПУСТИМО; несогласие с тестом — пинг оркестратору, а не правка.
|
||||
- **Собственные адверсариальные посадки ВНЕ твоего списка.** Посади мутации в новый код и убедись,
|
||||
что батарея краснеет: дефолт срабатывает на НЕпустом ключе · частичная запись при отказе одной
|
||||
|
|
@ -147,6 +173,13 @@
|
|||
- **Артефакт-находки обязателен:** `~/tm-handoff/backend-seam-pack/findings.md` — что посадил, что
|
||||
краснело, что выжило. Абсолютный путь, не скрэтчпад.
|
||||
|
||||
### 5.1 Обязательное для кодового пака
|
||||
|
||||
- **Последний абзац отчёта — это план или обещание? Значит сделай его СЕЙЧАС**, а не оставляй следующей сессии.
|
||||
- **Дифф `^func Test` — исполнением, а не по памяти:** покажи командой, какие тесты добавлены и какие тронуты.
|
||||
- **Интервальная самоверификация субагентом** против ЯВНЫХ критериев — пак с новым глаголом заведомо длинный,
|
||||
и к его середине собственный фрейминг перестаёт быть виден изнутри.
|
||||
|
||||
## 6. Оси ревью (три, по характеру работы)
|
||||
|
||||
1. **Швовая** — у шва инвентарь ВСЕХ каналов другой стороны делается чтением ЧУЖОГО кода, не по
|
||||
|
|
@ -154,9 +187,11 @@
|
|||
2. **Общность** — заработает ли на паре, которой в репо нет, без правки Go.
|
||||
3. **Деньги** — глагол обязан быть $0. Докажи это ледджером, а не рассуждением.
|
||||
|
||||
Ты вправе ЗАМЕНИТЬ любую из осей своей, если аргументируешь, чем твоя лучше ловит дефекты этой работы.
|
||||
|
||||
## 7. Записка-план
|
||||
|
||||
До кода — короткая записка: что делаешь, в каком порядке, какие развилки видишь. Комплектность
|
||||
До кода — короткая записка `~/tm-handoff/backend-seam-pack/plan.md`: что делаешь, в каком порядке, какие развилки видишь. Комплектность
|
||||
против §4 сверяется МЕХАНИЧЕСКИ (таблицей или грепом), а не глазами.
|
||||
|
||||
## 8. Заявление = команда
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue