Issue the small track-A pack-1.5 backend prompt: read-only tmctl export surface, owner-decided CJK gloss whitelist, runnable example, adversarial-debt reserve slot
This commit is contained in:
parent
8ba0f720e8
commit
11589d3935
1 changed files with 60 additions and 0 deletions
60
docs/BACKEND_TRACKA_PACK15_SESSION_PROMPT.md
Normal file
60
docs/BACKEND_TRACKA_PACK15_SESSION_PROMPT.md
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
# Промт: сессия-БЭКЕНД — Трек A, пак-1.5 (экспорт-поверхность + глосс-whitelist + пример), 2026-07-16
|
||||||
|
|
||||||
|
> Малый хирургический пак ПОСЛЕ приёмки пака-1 (D39.2, `d3f6b34`). Три задачи — все НЕ гейтятся
|
||||||
|
> эмпирикой exp15 и закрывают открытые вопросы D39.2 с решениями владельца от 16.07. Крупные слои
|
||||||
|
> (чанкер B1, кнобы когезии, дифф-apply) **НЕ строить** — они гейтятся результатами exp15 (research/19 §D).
|
||||||
|
> Смысл окна: все снапшот-сдвиги этого пака ложатся В ТОТ ЖЕ единый `--resnapshot`, который и так
|
||||||
|
> предстоит (D38.5+пак-1) — сейчас они бесплатны, после resnapshot стоили бы вторую переоплату книги.
|
||||||
|
|
||||||
|
## Зона/дисциплина (как в паке-1)
|
||||||
|
`backend/` только; не коммитить; `.env` не читать; мандат самопроверки ИСПОЛНЕНИЕМ (build/vet/gofmt/
|
||||||
|
test -race, каждый фикс запинен firing+non-firing тестом, ДО/ПОСЛЕ на сконструированном входе);
|
||||||
|
golden = инвариант №8 — re-capture только с обоснованием «что и почему сдвинулось» (ратифицировано
|
||||||
|
D39.2-open + решения владельца 16.07); git status перед работой — в дереве возможны параллельные сессии.
|
||||||
|
|
||||||
|
## Онбординг
|
||||||
|
`CLAUDE.md` → D-лог **D39.2** (что залендено паком-1 + открытые вопросы) → `09-target-architecture.md`
|
||||||
|
§2 (слой 6) → свой же код пака-1 (sanitizer.go exportNormalize/detectCJKLeak/stripCosmetic,
|
||||||
|
chunkrun.go FinalText, cmd/tmctl).
|
||||||
|
|
||||||
|
## T1 — Read-only экспорт-поверхность для полигона (закрывает D39.2-open №1; НУЖНО ДО пере-прогона)
|
||||||
|
**Проблема:** exportNormalize живёт на бэкенд-поверхностях (translate stdout / report), а полигонная
|
||||||
|
экстракция (`records.json`/exp12_extract-класс) читает СЫРЫЕ чекпоинты из store → полигон и
|
||||||
|
читатель-сэмплы увидят НЕнормализованный текст. Решение оркестратора: НЕ Python-зеркало нормализации
|
||||||
|
(анти-паттерн зеркального дрейфа), а **бэкенд-поверхность**.
|
||||||
|
**Сделать:** read-only команда `tmctl export` (проекция класса `status`/`report`: OpenReadOnly, $0,
|
||||||
|
без снапшот-влияния): для каждого чанка книги эмитит финальный экспорт-текст РОВНО по прод-семантике
|
||||||
|
(`chunk_status.final_hash` → checkpoint.response_text → [для `sanitizer_stripped` — это уже
|
||||||
|
стрипнутый derived-чекпоинт] → `exportNormalize`) + метаданные (chapter/chunk/disposition/flag/
|
||||||
|
snapshot_id) в стабильном JSON (+опц. plaintext). Флагнутые-непоправимые — пустой текст + причина
|
||||||
|
(как FinalText-семантика). Это и есть отложенный `tmctl export` из D15.2-этап-Б в минимальной форме —
|
||||||
|
НЕ строй annotations/override-часть, только чтение. Тест: export == translate-FinalText байт-в-байт
|
||||||
|
на golden-фикстуре (fresh и resume).
|
||||||
|
|
||||||
|
## T2 — CJK-глосс-whitelist (решение владельца 16.07: глоссы СОХРАНЯТЬ)
|
||||||
|
**Сейчас:** `stripCosmetic` стрипает намеренный глосс «Кулак Ло Ханя (羅漢拳)» и пустит скобку;
|
||||||
|
`detectCJKLeak` флагует такой Han-ран. **Сделать:** узкий whitelist — **сбалансированный Han-ран
|
||||||
|
целиком внутри скобок, непосредственно после кириллического/латинского слова-головы** (паттерн
|
||||||
|
«терм (漢字)») — НЕ утечка: `detectCJKLeak` не флагует, `stripCosmetic`/`exportNormalize` сохраняют
|
||||||
|
байты глосса (вкл. НЕ-фолд его полноширинных символов, если они часть глосса). Голый Han вне этого
|
||||||
|
паттерна — по-прежнему утечка (прод-класс cjk_leak цел). Краевые: вложенные скобки, глосс с пробелами/
|
||||||
|
пиньинем, глосс в начале строки без головы (→ утечка), два глосса подряд. `sanitizerVersion` v5→v6 +
|
||||||
|
golden re-capture (обоснование: решение владельца). Тесты: глосс сохранён (strip и normalize),
|
||||||
|
standalone-Han флагуется, пустая скобка больше не рождается.
|
||||||
|
|
||||||
|
## T3 — `example/book.yaml`: вернуть runnable
|
||||||
|
После pair-сеама ja-пример fail-loud'ится через zh-ru-keyed pipeline-c1 (сеам работает как задуман).
|
||||||
|
**Сделать:** переоформить пример на **zh→ru** (реальный прод-контент пары уже есть) — пример снова
|
||||||
|
проходит end-to-end; рядом закомментированный ja-блок с пояснением «fail-loud до появления ja-ru
|
||||||
|
пакета» (демонстрация сеама, не заглушка). ja-ru пакет НЕ сочинять (контент пары = данные под
|
||||||
|
реальную книгу, инвариант общности §0.1).
|
||||||
|
|
||||||
|
## T4 — РЕЗЕРВ: фикс-лист отложенного адверсариала D39.2
|
||||||
|
Оркестратор догоняет отложенный мульти-агентный адверсариал пака-1 (падал на API-529). Если к старту
|
||||||
|
твоей сессии в этом файле/в D-логе появился раздел «фикс-лист D39.2-долга» — исполни его пункты
|
||||||
|
(приоритет над T1–T3 при CRITICAL/HIGH). Если раздела нет — T4 пуст, работай T1–T3.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
Отчёт в ответе (не в PROGRESS): per-T — file:line, ДО/ПОСЛЕ, какие снапшот-версии/golden сдвинулись и
|
||||||
|
почему, результаты build/vet/gofmt/test -race, само-ревью исполнением. Открытые вопросы — списком.
|
||||||
|
Не коммитить — лендит оркестратор.
|
||||||
Loading…
Add table
Reference in a new issue