| .. | ||
| axis1-money | ||
| axis2-auth | ||
| axis3-queue | ||
| axis4-metrics | ||
| agent-mutations.md | ||
| battery-final.log | ||
| mutations-full.log | ||
| mutations-round2.log | ||
| mutations.log | ||
| pd23-result.txt | ||
| pd23-retention-probe.sh | ||
| plant.py | ||
| README.md | ||
| reconcile-after-settle.txt | ||
| reconcile-two-ways.sh | ||
| reconcile-with-open-hold.txt | ||
| run-full-mutations.sh | ||
| run-mutations.sh | ||
| run-round2.sh | ||
| sse-origin-probe.txt | ||
| sse-outlives-revocation.txt | ||
Артефакты пака P8-REVIEW (24.08.2026)
Скрипты и снимки, которыми воспроизводятся находки пака (PD-375…PD-395 и ⚠-дописки к
существующим строкам). Лежат в репозитории намеренно: строка регистра, чьё «воспроизведение»
существует только текстом, воспроизведением не является.
Стенд, на котором всё снято
Postgres 18.4 без root (~/.local/pgsql, сокет /tmp, порт 55433) · движок tmctl и шаблон книги
собраны по рецепту ../STACK_DECISIONS.md, раздел «Стенд разработчика» · дев-демон координатора на
127.0.0.1:8099, метрики 127.0.0.1:9464 · по своей копии дерева, своей базе и своей паре портов
на каждого из восьми субагентов.
Базовая линия батареи на дереве репозитория, ТРИ гейта выполнены (DSN · пара
TM_PLATFORM_TEST_ENGINE_BIN+_BOOK_TEMPLATE · достижимый пользовательский менеджер systemd):
18 пакетов, EXIT=0, скипов 0, линтер 0 issues — battery-final.log.
⚠ Два правила, без которых мутации читаются неверно
- Копия
platform/, вынутая из репозитория, даёт ДВА возможных красных, не связанных с кодом:gates.TestTheAnnouncedContractVersionIsTheOneTheCanonRatified(гейт читает канон по пути ВЫШЕ модуля — постоянный, заведён строкойPD-395) иrunner.TestARunIsBoundedByItsOwnCgroup(грабли стенда: опустевшийcgroup.subtree_controlуtm.slice, лечится строкой из рецепта). Поэтому мутация судится по ДЕЛЬТЕ против чистой базовой линии ТОЙ ЖЕ копии, а не по «батарея красная» и не по exit-коду. - Вердикт выносится по ТОПИЧНОСТИ упавшего теста, а не по цвету. У пака это стоило одной
ошибки: мутация
ClearSessionпокраснела наTestAClaimThatLostARaceToAReleaseIsRetriedAndNotAnError— известном флейкеPD-369, к куке отношения не имеющем. Ложное «пойман» ТИХО теряет находку о недостающем пине.
Как пере-снять мутации координатора
export P8_REPO=<репо>/platform
export P8_COPY=~/tm-p8-review/mine/platform
mkdir -p ~/tm-p8-review/mine && cp -a "$P8_REPO" "$P8_COPY"
export TM_PLATFORM_TEST_DSN='postgres://postgres@/<своя база>?host=/tmp&port=55433&sslmode=disable'
export TM_PLATFORM_TEST_ENGINE_BIN=~/tmstand-work/tmctl
export TM_PLATFORM_TEST_BOOK_TEMPLATE=~/tmstand-work/book-template.yaml
python3 plant.py M8 plant && (cd "$P8_COPY" && go test ./... -count=1); python3 plant.py M8 revert
P8_OUT=. ./run-round2.sh # девять посадок разом, с чистой базовой линией и судом по дельте
plant.py знает M1–M16 поимённо, репозиторий не трогает никогда (откат — копирование из P8_REPO).
Что где лежит
Корень — работа координатора пака
| Файл | Что доказывает |
|---|---|
battery-final.log |
сдаваемый прогон батареи: 18 пакетов, EXIT=0, скипов 0, линтер 0 issues |
reconcile-two-ways.sh |
сводит баланс, сумму леджера и открытые холды ДВУМЯ независимыми путями — тем, что отвечает платформа, и прямым SQL по сырому леджеру |
reconcile-with-open-hold.txt |
обязательная норма промта: сведение на НЕТРИВИАЛЬНОМ состоянии — 8 строк леджера и ОТКРЫТЫЙ холд $0.06 в момент замера, оба пути сошлись |
reconcile-after-settle.txt |
то же сведение после закрытия холда |
plant.py · run-mutations.sh · run-full-mutations.sh · run-round2.sh |
харнесс посадок и три прогона |
mutations.log · mutations-full.log · mutations-round2.log |
их результаты; в третьем — чистая базовая линия копии и суд по дельте |
agent-mutations.md |
таблицы 42 посадок восьми субагентов (⚠ сырые логи их прогонов НЕ сохранены) |
pd23-retention-probe.sh · pd23-result.txt |
ретенция журнала входов РАБОТАЕТ: строка возрастом 200 суток исчезла на ближайшем тике, демон напечатал "login sweep" events=1 |
sse-origin-probe.txt |
SSE-хендшейк с ЧУЖИМ Origin и амбиентной кукой отвечает 200 и стримит (PD-6) |
sse-outlives-revocation.txt |
отозванная сессия получает кадр данных через 9 секунд после revoke (PD-379) |
axis1-money/ — деньги и леджер
Готовые пины к PD-376 (a1_spendbound_test.go.txt, независимый r1_spendbound_test.go.txt) ·
воспроизведение PD-375 (a1-mut5-ceiling-bound.sh, r1_ceiling_bound_test.go.txt,
a1-full-battery-under-MUT5.log) · PD-377 (a1-ceiling-column-doc.sql) · PD-378
(a1-usage-overflow.sh, сам откатывает грант; порог — r1_usage_threshold_test.go.txt) ·
проба констрейнтов денежных таблиц (constraint-probe.sh + .out).
axis2-auth/ — вход, сессии, CSRF
sse-outlives-revocation.sh и sse-outlives-absolute-ceiling.sh плюс независимые рефутерские
refute-* — четыре независимых воспроизведения PD-379 · mutations-axis2.sh (шесть посадок,
несёт гард «refusing to mutate the live repository») · csrf-matrix.sh и session-clocks-probe.sh
— матрица CSRF по маршрутам и поведение обоих потолков на границах.
axis3-queue/ — очередь и джобы
Пробы на РЕАЛЬНЫХ функциях с реальным Postgres: probe_settlement_surface_test.go.txt (PD-384),
probe_sweep_serialisation_test.go.txt (PD-386, 40 тактов против 9),
probe_drain_budget_pair_test.go.txt (PD-388) · live-stalled-settlement.sh (PD-385, состояние
выращено штатными путями) · mutations.sh и mutations-refuter.sh · рефутерские пины
refute_*_test.go.txt.
axis4-metrics/ — метрики
Механизм оси целиком: 01-metrics-rest.txt (покой) → 03-full-before-outage.txt →
отказ вызван → 04-full-during-outage.txt → 06-diff-before-vs-during-outage.txt (дифф, на котором
ось и закрывается) · 20-abandon-keeps-the-hold.sh и r3-abandon-hold.sh (PD-391) ·
30-stale-gauges.sh и r1-boot-with-blind-telemetry.sh (PD-390) · r6-read-replica-zeroes.sh
(вторая половина PD-390) · 50-gauges-without-a-handle.sh и r5-hold-without-a-handle.sh
(PD-392) · 40-exposition-check.sh (PD-393) · 60-mutations.sh (PD-389).
Переносимость
Скрипты параметризованы переменными окружения (P8_COPY, P8_REPO, P8_OUT, P8_ENV, CTL,
ROOT, PLATFORM, BASE) — стендовых путей этой сессии в исполняемом коде не осталось, остались
только примеры в комментариях. bash -n чист на всех скриптах каталога. Файлы с расширением
.go.txt — готовые пины и пробы; они НАМЕРЕННО не .go, иначе go vet ./... и gofmt -l в зоне
падают на конфликте пакетов внутри docs/.