server-monitor-manager/agents/antigravity/inbox/from-smm-deliverables/Старые задачи/smm-antigravity-task-pr15-continue-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

5.7 KiB
Raw Blame History

PR #15: доделать, не отключая аналайзеры

Состояние

Рабочая папка C:\Users\Ochenstarik\projects\smm-antigravity, ветка antigravity/reproducible-builds, PR #15, последний запушенный коммит 5ca4832 (CI красный). В рабочей копии есть незакоммиченные правки: Directory.Build.props и четыре packages.lock.json.

Разбор трёх дефектов — в задании smm-antigravity-task-locked-restore-fix-2026-08-07.md, оно остаётся в силе.

Дефект 2 — закрыт правильно

packages.lock.json теперь содержат все три RID:

"net10.0": {},
"net10.0/linux-arm64": {},
"net10.0/linux-x64": {},
"net10.0/win-x64": {}

Это предпочтительный вариант из задания. Сохранить.

Дефект 1 — решается запрещённым способом

Незакоммиченная правка Directory.Build.props:

-    <EnableNETAnalyzers>true</EnableNETAnalyzers>
-    <AnalysisLevel>latest-recommended</AnalysisLevel>

В задании этот вариант назван недопустимым дословно: «Отключить EnableNETAnalyzers или понизить AnalysisLevel, чтобы CI позеленел: это отменяет смысл изменения». Аналайзеры — половина ценности Directory.Build.props; удалив их, PR перестаёт отличаться от простого переноса версий.

Вернуть обе строки и решить дефект 1 одним из разрешённых способов:

Предпочтительно. Разделить проверки в CI: dotnet format whitespace --verify-no-changes и dotnet format style --verify-no-changes вместо общего dotnet format. Тогда гейт проверяет форматирование, а диагностики аналайзеров остаются warning'ами в сборке и не блокируют.

Допустимо. Оставить общий dotnet format, но подавить конкретные правила в .editorconfig, перечислив каждое с причиной в отчёте. Сейчас мешают CA1848 (LoggerMessage-делегаты, десять вхождений в ControlMaintenance.cs и LinkReconciliationBackgroundService.cs) и CA1865 (TimezoneProvisioningExecutor.cs:76). Подавлять семейство целиком нельзя — только поимённо.

Дефект 3 — не сделан

--locked-mode стоит только в двух явных шагах dotnet restore. Все dotnet publish восстанавливают неявно и без него:

  • linux-control-agent.yml — строки 58, 61, 64, 67, 71, 74, 77;
  • linux-platform-matrix.yml — строки 49, 52, 55;
  • linux-release.yml — строки 82, 85, 88.

Это ровно те шаги, которые собирают артефакты, уходящие пользователям. Воспроизводимость, не покрывающая путь выпуска, не решает исходную задачу.

Добавить --locked-mode (либо -p:RestoreLockedMode=true) во все перечисленные шаги. Дефект 2 закрыт, поэтому RID-специфичная публикация больше не должна падать по NU1004 — но это надо подтвердить прогоном, а не рассуждением.

Критерий приёмки

  • EnableNETAnalyzers и AnalysisLevel=latest-recommended присутствуют в Directory.Build.props;
  • build и build-and-test зелёные;
  • --locked-mode действует во всех шагах восстановления и публикации всех пяти workflow;
  • продемонстрирована работа гарантии: правка одного lock-файла во временном коммите даёт красный прогон на RID-специфичной публикации, затем коммит откатывается — со ссылкой на красный прогон;
  • версии пакетов не изменились относительно main;
  • если правила подавлены — каждое перечислено поимённо с причиной;
  • TreatWarningsAsErrors по-прежнему не включён;
  • границы прошлого задания соблюдены: git diff --name-only main не содержит LinkService.cs, LinkPolicyApplier.cs, LinkReconciliationBackgroundService.cs, ControlStore.cs, ControlMaintenance.cs, ControlOptions.cs, appsettings.json, src/ServerMonitorManager.Provisioning.Helper/**, deploy/**, CertificateAuthority.cs, CertificateLifecycleService.cs, AgentClient.cs, содержимого файлов в tests/** кроме .csproj;
  • PR не смержен.

Отчёт

Описание PR обновляется после завершения CI. Ссылки на конкретные завершённые прогоны с их статусом. Если прогон красный — сказать прямо и держать PR черновиком.

Отдельно объяснить выбор по дефекту 1: почему выбран именно этот из двух разрешённых вариантов.