docs: add RC evidence pack
This commit is contained in:
@@ -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: `<LOCAL_VALIDATION_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.
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user