server-monitor-manager/agents/hermes/inbox/from-smm-deliverables/Старые задачи/smm-hermes-task-b3r-deliver-2026-08-07.md
Ochenstarik 23eb3f5233 chore(agents): разбор рабочих папок с диска на 2026-08-18
Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в
домашней папке, перенесены в agents/. Разложено по агентам там, где имя
файла позволяло определить автора; остальное — в _salvage-2026-08-18/
и разбирается вручную.

Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных
рабочих копий: она существовала только на диске.

Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не
попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 14:19:54 +07:00

49 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# B-3R: довести до PR и зелёного Linux CI
## Состояние
Рабочая копия `C:\Users\Ochenstarik\projects\server-monitor-manager-task3-b3`, ветка `hermes/task3-b3-fact-reconciliation`, база `b11c277`. Изменения **не закоммичены**: 23 отслеживаемых файла, +1735/145, плюс новый файл `src/ServerMonitorManager.Control/ControlJsonContext.cs`.
Ветки на GitHub нет, PR нет, CI не запускался ни разу.
## Что проверено как сделанное
Сверял по коду рабочей копии, а не по отчёту:
| Пункт | Состояние |
|---|---|
| R1, пакетная верификация | `FinalizeBatchAsync` и единственный `finalRules = await applier.ListRulesAsync(…)` — реализовано |
| R2, класс `Deferred` | присутствует, инвариант классификации с диагностикой в `LinkService.cs:836` |
| R4, source-generated audit | `LinkOrphanAuditDetails` + `ControlJsonContext.Default.LinkOrphanAuditDetails`, новый `ControlJsonContext.cs` |
| R5, integration test | `link-list` в fake helper, 10 вхождений |
| R6, fail-open default | `ListRulesAsync` — обычный член интерфейса, тела по умолчанию нет |
| Мусор в статусе `nodes.tsv` | `node_status_pattern`: невалидный формат → 78, валидный не-`active` → 80 |
Содержательная часть закрыта. Осталась доставка.
## Что доделать
**1. Проверить бюджет привилегированных вызовов.** В `ConvergeAsync` остались вызовы `VerifyExactFactualCountAsync` на строках 487, 496, 505, 514 — помимо пакетной верификации через `FinalizeBatchAsync`. Убедиться, что проход без расхождений выполняет ровно один `link-list`, а проход с `k` мутациями — ровно два. Если пер-мутационные вызовы остались в пути полного прохода, бюджет нарушен и требование R1 не выполнено. Если они относятся к другим путям (`CreateAsync`, `DisableAsync`, TTL) — это допустимо, но должно быть явно сказано в отчёте.
**2. Прогнать Control suite на Linux.** Это отдельное требование, а не формальность: integration-тест помечен `OperatingSystem.IsLinux()` и на Windows молча пропускается. Именно так дефект H2 и дожил до ревью в прошлый раз.
**3. Прогнать orphan-путь на опубликованном `linux-x64 PublishTrimmed` артефакте** и приложить содержимое audit-записи. Reflection-сериализация заменена на source-generated, но проверка на trimmed-сборке — единственное доказательство, что путь исполняется.
**4. Семь обязательных тестов** из задания `smm-hermes-task-b3r-2026-08-06.md`, раздел «Тесты, без которых задание не принимается». Проверить наличие каждого поимённо.
**5. Коммит, push, PR.** Ветка `hermes/task3-b3-fact-reconciliation`. Дождаться завершения CI **до** того, как писать в описании PR о проверках.
## Критерий приёмки
- PR создан, CI зелёный — впервые для этой ветки;
- Control suite прогнан на Linux, результат приложен;
- бюджет вызовов `link-list` подтверждён числом, а не утверждением;
- семь обязательных тестов присутствуют и проходят;
- отчёт раздельно перечисляет: что локально, что в CI со ссылками, что не запускалось;
- независимый review получил полный текст `smm-hermes-task-b3r-2026-08-06.md` и `B3R_SPEC.md`.
## Отдельно
Физическая приёмка на трёх серверах готовится параллельно — runbook `smm-acceptance-runbook-2026-08-07.md`. Она не входит в это задание, но именно merge B-3R делает её осмысленной: до него реконсиляция от фактического состояния не в `main`.
Статус после merge — `merged / verified, physical acceptance pending`.