diff --git a/docs/RC_EVIDENCE_PACK_PILOT_V1_RU.md b/docs/RC_EVIDENCE_PACK_PILOT_V1_RU.md new file mode 100644 index 0000000..671e8c2 --- /dev/null +++ b/docs/RC_EVIDENCE_PACK_PILOT_V1_RU.md @@ -0,0 +1,111 @@ +# RC Evidence Pack: Pilot v1 + +Документ фиксирует доказательства финальной проверки release candidate процесса для ветки `hardening/pilot-v1-defects-cleanup`. + +## Идентификаторы проверки + +- Branch/ref: `origin/hardening/pilot-v1-defects-cleanup` +- Commit: `a8c0482e760cc17b53182999355f65c17457d7f2` +- Commit short: `a8c0482` +- Дата проверки: `2026-06-12` +- Clean worktree: `/AWatch-rus-rc-validation-a8c0482` +- RC name: `v1.0.2-rc-validation` +- RC output: `dist/release-candidate/v1.0.2-rc-validation/` +- `CARGO_TARGET_DIR`: `$HOME/.cache/aw-rus-hardening-target` + +Абсолютный путь локального операторского home-каталога намеренно не фиксируется в tracked-документации. Это не влияет на воспроизводимость: команда использует стандартный `$HOME`. + +## Команды проверки + +Preflight без вынесенного target dir: + +```bash +bash scripts/build_release_candidate.sh --preflight +``` + +Preflight с вынесенным cargo target dir: + +```bash +CARGO_TARGET_DIR=$HOME/.cache/aw-rus-hardening-target \ + bash scripts/build_release_candidate.sh --preflight +``` + +Полная RC-сборка: + +```bash +CARGO_TARGET_DIR=$HOME/.cache/aw-rus-hardening-target \ + bash scripts/build_release_candidate.sh v1.0.2-rc-validation +``` + +Команда полной сборки без имени RC проверена отдельно и корректно завершается с `exit=2`, потому что первый аргумент обязателен. + +## Созданные RC artifacts + +В каталоге `dist/release-candidate/v1.0.2-rc-validation/` созданы: + +- `FILES.txt` +- `SHA256SUMS.txt` +- `SHA256SUMS-v0.2.txt` +- `git-commit.txt` +- `RELEASE_ASSETS_MANIFEST-v0.2.json` +- `sbom/cargo-metadata-v0.2.json` +- `sbom/cargo-tree-v0.2.txt` +- `sbom/cyclonedx-rust-v0.2.json` +- `sbom/python-inputs-v0.2.txt` +- `sbom/spdx-rust-v0.2.json` + +`git-commit.txt` содержит `a8c0482e760cc17b53182999355f65c17457d7f2`. + +## Artifact verification + +Подтверждено: + +- `sha256sum -c SHA256SUMS.txt`: OK +- `sha256sum -c SHA256SUMS-v0.2.txt`: OK +- JSON parse для `RELEASE_ASSETS_MANIFEST-v0.2.json`: OK +- JSON parse для `sbom/cargo-metadata-v0.2.json`: OK +- JSON parse для `sbom/cyclonedx-rust-v0.2.json`: OK +- JSON parse для `sbom/spdx-rust-v0.2.json`: OK +- `FILES.txt` соответствует фактическому набору checksum-covered файлов: OK + +Повторный запуск с тем же `RC_NAME` блокируется сообщением `release candidate output already exists`; существующий `SHA256SUMS.txt` не изменяется. + +## Dirty-tree guard + +Clean-tree requirement сохранен и проверен двумя сценариями: + +- non-ignored untracked file блокирует настоящую RC-сборку; +- tracked modification блокирует настоящую RC-сборку. + +В обоих случаях скрипт завершается до создания RC-каталога. Ignored files намеренно не блокируют сборку, иначе `dist/` ломал бы повторные проверки и локальную валидацию артефактов. + +## dist/ и git + +Подтверждено: + +- `git ls-files dist` возвращает `0` tracked files; +- `git status --ignored dist` показывает `!! dist/`; +- `dist/` не добавляется в git и остается локальным output-каталогом. + +## Обязательные проверки + +В clean validation worktree выполнены: + +- `bash -n scripts/build_release_candidate.sh`: OK +- `bash scripts/build_release_candidate.sh --preflight`: OK +- `CARGO_TARGET_DIR=$HOME/.cache/aw-rus-hardening-target bash scripts/build_release_candidate.sh --preflight`: OK +- `git diff --check`: OK +- `bash scripts/check_private_config_guard.sh`: OK +- `node scripts/check_portal_contract_sync.mjs`: OK +- `bash scripts/quality-gate.sh`: OK + +Внутри полной RC-сборки также прошли: + +- `cargo fmt --manifest-path adk-rust/Cargo.toml --all -- --check` +- `cargo test --manifest-path adk-rust/Cargo.toml --workspace` +- `cargo clippy --manifest-path adk-rust/Cargo.toml --workspace --all-targets -- -D warnings` +- `cargo build --manifest-path adk-rust/Cargo.toml --workspace --release` + +## Вывод + +Release candidate процесс подтвержден как воспроизводимый в чистом рабочем дереве. Clean-tree requirement сохранен. Сборка не требует ослабления защитных проверок. Ветка готова к review и merge в main. diff --git a/docs/RELEASE_CANDIDATE_RUNBOOK_RU.md b/docs/RELEASE_CANDIDATE_RUNBOOK_RU.md index a8c1c81..c4ce29d 100644 --- a/docs/RELEASE_CANDIDATE_RUNBOOK_RU.md +++ b/docs/RELEASE_CANDIDATE_RUNBOOK_RU.md @@ -4,6 +4,10 @@ Release Candidate не равен юридической готовности к подаче в реестр и не заменяет финальную процедуру релиза. +## Evidence pack + +Финальная проверка RC-процесса для ветки `hardening/pilot-v1-defects-cleanup` зафиксирована в `docs/RC_EVIDENCE_PACK_PILOT_V1_RU.md`. + ## Запуск Команда выполняется из корня репозитория: @@ -33,7 +37,7 @@ Preflight проверяет наличие команд `git`, `cargo`, `bash`, Рекомендуемый запуск для такого контура: ```bash -CARGO_TARGET_DIR=/home/igor/.cache/aw-rus-hardening-target bash scripts/build_release_candidate.sh v1.0.2-rc1 +CARGO_TARGET_DIR=$HOME/.cache/aw-rus-hardening-target bash scripts/build_release_candidate.sh v1.0.2-rc1 ``` Это не обход проверок. Все `cargo fmt`, `cargo test`, `cargo clippy`, `cargo build`, `quality-gate`, private-config guard, OpenAPI contract guard и SBOM generation продолжают выполняться. Меняется только место, куда cargo складывает build artifacts.