docs(governance): prepare branch protection and PR review evidence

This commit is contained in:
igor04091968
2026-06-23 23:00:16 +03:00
parent 54129d82b6
commit 7e6c067adf
12 changed files with 511 additions and 16 deletions
+15 -1
View File
@@ -17,13 +17,27 @@
# Operational scripts and automation. # Operational scripts and automation.
/scripts/ @igor04091968 /scripts/ @igor04091968
# Product documentation, demo material and screenshots.
/docs/ @igor04091968
/docs/demo/ @igor04091968
/docs/screenshots/ @igor04091968
/docs/assets/screenshots/ @igor04091968
# Registry-readiness evidence and policy documents. # Registry-readiness evidence and policy documents.
/docs/registry/ @igor04091968 /docs/registry/ @igor04091968
# GitHub public mirror validation metadata. # GitHub public mirror validation metadata and governance controls.
/.github/workflows/ @igor04091968 /.github/workflows/ @igor04091968
/.github/workflows/ci.yml @igor04091968
/.github/workflows/security.yml @igor04091968
/.github/workflows/coverage.yml @igor04091968
/.github/pull_request_template.md @igor04091968 /.github/pull_request_template.md @igor04091968
/.github/ISSUE_TEMPLATE/ @igor04091968 /.github/ISSUE_TEMPLATE/ @igor04091968
/.github/CODEOWNERS @igor04091968
/docs/BRANCH_PROTECTION_POLICY_RU.md @igor04091968
/docs/BRANCH_PROTECTION_EVIDENCE_RU.md @igor04091968
/docs/PR_REVIEW_WORKFLOW_RU.md @igor04091968
/docs/PR_REVIEW_EVIDENCE_RU.md @igor04091968
# Ansible deployment automation. # Ansible deployment automation.
/ansible/ @igor04091968 /ansible/ @igor04091968
+8
View File
@@ -18,6 +18,14 @@ stand or unavailable tool.
## Review Checklist ## Review Checklist
- [ ] Linked issue is provided, or the PR explains why no issue is applicable.
- [ ] Runtime/API/UI impact is stated.
- [ ] Registry claims are checked and remain conservative.
- [ ] Secrets, PII, employee logs and customer identifiers are absent.
- [ ] Tests/checks executed are listed, or skipped checks have reasons.
- [ ] Evidence docs are updated when the change affects governance, registry
readiness or release evidence.
- [ ] GitHub Actions are public validation only, not registry release evidence.
- [ ] I checked that this PR does not publish secrets, tokens, passwords, - [ ] I checked that this PR does not publish secrets, tokens, passwords,
private keys, recovery codes or live credentials. private keys, recovery codes or live credentials.
- [ ] I checked that this PR does not publish personal data, real employee data, - [ ] I checked that this PR does not publish personal data, real employee data,
+6
View File
@@ -283,6 +283,12 @@ collectors.
[docs/public-issues/public-issues-manifest.json](docs/public-issues/public-issues-manifest.json). [docs/public-issues/public-issues-manifest.json](docs/public-issues/public-issues-manifest.json).
- Advisory branch protection policy: - Advisory branch protection policy:
[docs/BRANCH_PROTECTION_POLICY_RU.md](docs/BRANCH_PROTECTION_POLICY_RU.md). [docs/BRANCH_PROTECTION_POLICY_RU.md](docs/BRANCH_PROTECTION_POLICY_RU.md).
- Branch protection evidence template:
[docs/BRANCH_PROTECTION_EVIDENCE_RU.md](docs/BRANCH_PROTECTION_EVIDENCE_RU.md).
- PR-based review workflow:
[docs/PR_REVIEW_WORKFLOW_RU.md](docs/PR_REVIEW_WORKFLOW_RU.md).
- PR review evidence template:
[docs/PR_REVIEW_EVIDENCE_RU.md](docs/PR_REVIEW_EVIDENCE_RU.md).
- CODEOWNERS and PR template are maintained for review routing and public - CODEOWNERS and PR template are maintained for review routing and public
change-control visibility. change-control visibility.
- Visible external code review is still pending until public reviewed PRs exist. - Visible external code review is still pending until public reviewed PRs exist.
+100
View File
@@ -0,0 +1,100 @@
# AWatch-rus: branch protection evidence
Дата: 2026-06-23
branch_protection_status: "pending_manual_verification"
GitHub issue: https://github.com/igor04091968/AWatch-rus/issues/49
Этот документ является evidence template для ручной проверки GitHub branch
protection на публичном зеркале. Он не утверждает, что branch protection уже
настроена или подтверждена.
## Target
- Repository: `igor04091968/AWatch-rus`.
- Platform role: GitHub public mirror validation only.
- Protected branch: `main`.
- Policy source: `docs/BRANCH_PROTECTION_POLICY_RU.md`.
- Evidence owner: maintainer.
## Settings To Verify
Maintainer должен вручную проверить, что для `main` configured rule включает:
- require pull request before merging;
- require approvals: `1`;
- dismiss stale approvals when new commits are pushed;
- require review from CODEOWNERS, if available on the current GitHub plan;
- require status checks to pass before merging;
- require branches to be up to date before merging, if compatible with current
maintainer workflow;
- restrict force pushes;
- restrict deletions;
- administrator bypass decision documented, preferably disabled for stricter
mode.
## Required Checks
Expected required checks are based on current workflow/job names:
- `CI / Rust checks`
- `CI / Docs and registry checks`
- `CI / Smoke checks`
- `Coverage / Coverage baseline`
- `Security / Cargo audit`
- `Security / Cargo deny`
- `Security / Secret pattern check`
- `Security / Dependency review`
If GitHub displays a different context name, record the exact displayed name and
update `docs/BRANCH_PROTECTION_POLICY_RU.md` before marking verification done.
## Manual Verification Procedure
1. Open repository settings for `igor04091968/AWatch-rus`.
2. Open branch protection or repository rules for branch `main`.
3. Compare enabled settings against this document and
`docs/BRANCH_PROTECTION_POLICY_RU.md`.
4. Verify required status-check names exactly as GitHub displays them.
5. Capture screenshot evidence without private account data or tokens.
6. Record evidence fields below.
7. Only after verification, update `branch_protection_status` from
`"pending_manual_verification"` to `"verified"` in a follow-up change.
## Evidence Record
- Screenshot filename placeholder:
`docs/evidence/github-branch-protection-main-YYYY-MM-DD.png`
- Date: `YYYY-MM-DD`
- Maintainer: `maintainer`
- Repository: `igor04091968/AWatch-rus`
- Protected branch: `main`
- Required checks verified: `pending`
- Admin bypass decision: `pending`
- Force-push restriction verified: `pending`
- Deletion restriction verified: `pending`
- Notes: `pending`
## Not Registry Release Evidence
GitHub branch protection evidence is governance/process evidence for the public
mirror. It is not registry release evidence and does not replace release
artifacts, checksums, build logs or release evidence from the Russian
build-runner.
## Russian Contour Note
Primary registry-readiness contour remains Russian Gitea plus the planned
Russian build-runner. GitHub remains public mirror validation only.
## Guardrails
- Do not record secrets, tokens, private URLs or account recovery details.
- Do not include private employee/customer data in screenshots.
- Do not claim branch protection is verified until maintainer evidence exists.
- Do not claim completed registry submission.
- Do not claim certification.
- Do not claim SIEM/DLP replacement.
- Do not claim ML/LLM-based detection.
- Do not claim automatic remediation.
+36 -1
View File
@@ -1,6 +1,6 @@
# AWatch-rus: advisory branch protection policy # AWatch-rus: advisory branch protection policy
Дата: 2026-06-22 Дата: 2026-06-23
Статус: recommended policy. Этот документ описывает целевую настройку GitHub Статус: recommended policy. Этот документ описывает целевую настройку GitHub
branch protection для публичного зеркала. Он не утверждает, что branch branch protection для публичного зеркала. Он не утверждает, что branch
@@ -32,6 +32,41 @@ contour остается Russian Gitea plus Russian build-runner release evidenc
- Require linear history if compatible with the maintainer workflow. - Require linear history if compatible with the maintainer workflow.
- Administrator bypass should be emergency-only and documented after the fact. - Administrator bypass should be emergency-only and documented after the fact.
## Recommended GitHub Branch Protection Settings
Recommended settings for `main` on the GitHub public mirror:
- Require pull request before merging.
- Required approvals: `1`.
- Dismiss stale approvals when new commits are pushed.
- Require review from CODEOWNERS if available on the current GitHub plan.
- Require status checks to pass before merging.
- Require branches to be up to date before merging if this does not block the
current maintainer workflow.
- Restrict force pushes.
- Restrict deletions.
- Allow administrators bypass: documented decision only; stricter mode should
keep bypass disabled unless repository recovery requires it.
Recommended required checks, using current workflow/job names:
- `CI / Rust checks`
- `CI / Docs and registry checks`
- `CI / Smoke checks`
- `Coverage / Coverage baseline`
- `Security / Cargo audit`
- `Security / Cargo deny`
- `Security / Secret pattern check`
- `Security / Dependency review`
Before verification, maintainer must compare these names with the exact check
names displayed by GitHub. If GitHub displays different names, update this
document and `docs/BRANCH_PROTECTION_EVIDENCE_RU.md` before recording evidence.
Current evidence status is tracked in
`docs/BRANCH_PROTECTION_EVIDENCE_RU.md` and remains
`pending_manual_verification` until maintainer evidence is recorded.
## Review expectations ## Review expectations
- CODEOWNERS routes changes to the current maintainer. - CODEOWNERS routes changes to the current maintainer.
+21
View File
@@ -47,6 +47,15 @@ backup, registry-readiness документации, плана российск
`docs/REVIEW_CHECKLIST_RU.md`. `docs/REVIEW_CHECKLIST_RU.md`.
- Advisory branch protection policy: - Advisory branch protection policy:
`docs/BRANCH_PROTECTION_POLICY_RU.md`. `docs/BRANCH_PROTECTION_POLICY_RU.md`.
- PR-based workflow documentation: ready
(`docs/PR_REVIEW_WORKFLOW_RU.md`).
- PR review evidence package: ready
(`docs/PR_REVIEW_EVIDENCE_RU.md`).
- Branch protection evidence package: ready
(`docs/BRANCH_PROTECTION_EVIDENCE_RU.md`).
- Branch protection actual enablement:
`pending_manual_verification`.
- First reviewed PR evidence: pending.
## Что готово ## Что готово
@@ -81,6 +90,12 @@ backup, registry-readiness документации, плана российск
- PR review process documented in PR template and review checklist. - PR review process documented in PR template and review checklist.
- Branch protection policy documented as advisory: - Branch protection policy documented as advisory:
`docs/BRANCH_PROTECTION_POLICY_RU.md`. `docs/BRANCH_PROTECTION_POLICY_RU.md`.
- Branch protection evidence template prepared:
`docs/BRANCH_PROTECTION_EVIDENCE_RU.md`.
- PR-based review workflow documented:
`docs/PR_REVIEW_WORKFLOW_RU.md`.
- PR review evidence template prepared:
`docs/PR_REVIEW_EVIDENCE_RU.md`.
- Зафиксирован residual risk register: - Зафиксирован residual risk register:
`docs/RESIDUAL_RISKS_RU.md`. `docs/RESIDUAL_RISKS_RU.md`.
- Подготовлен план публичных issues для ручного заведения: - Подготовлен план публичных issues для ручного заведения:
@@ -104,6 +119,9 @@ backup, registry-readiness документации, плана российск
- Visible external code review is still pending. - Visible external code review is still pending.
- Branch protection enablement is not claimed until repository settings are - Branch protection enablement is not claimed until repository settings are
verified. verified.
- Branch protection actual enablement remains `pending_manual_verification`.
- First reviewed PR evidence remains pending until a reviewed public PR is
merged and evidence is recorded.
- Community adoption remains low until external contributors, public reviews - Community adoption remains low until external contributors, public reviews
and sustained third-party activity appear. and sustained third-party activity appear.
@@ -135,8 +153,11 @@ backup, registry-readiness документации, плана российск
- `docs/registry/RELEASE_ARTIFACTS_STORAGE_RU.md` - `docs/registry/RELEASE_ARTIFACTS_STORAGE_RU.md`
- `docs/QUALITY_STATUS_RU.md` - `docs/QUALITY_STATUS_RU.md`
- `docs/REVIEW_CHECKLIST_RU.md` - `docs/REVIEW_CHECKLIST_RU.md`
- `docs/PR_REVIEW_WORKFLOW_RU.md`
- `docs/PR_REVIEW_EVIDENCE_RU.md`
- `docs/RESIDUAL_RISKS_RU.md` - `docs/RESIDUAL_RISKS_RU.md`
- `docs/PUBLIC_ISSUES_PLAN_RU.md` - `docs/PUBLIC_ISSUES_PLAN_RU.md`
- `docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md` - `docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`
- `docs/public-issues/public-issues-manifest.json` - `docs/public-issues/public-issues-manifest.json`
- `docs/BRANCH_PROTECTION_POLICY_RU.md` - `docs/BRANCH_PROTECTION_POLICY_RU.md`
- `docs/BRANCH_PROTECTION_EVIDENCE_RU.md`
+74
View File
@@ -0,0 +1,74 @@
# AWatch-rus: PR review evidence
Дата: 2026-06-23
pr_review_evidence_status: "pending_until_first_reviewed_pr_is_merged"
GitHub issue: https://github.com/igor04091968/AWatch-rus/issues/48
Этот документ фиксирует, что будет считаться evidence для PR-based review
workflow. Он не утверждает, что external peer review уже выполнен.
## Evidence Criteria
Первый evidence-backed reviewed PR должен содержать:
- PR URL;
- linked issue URL;
- completed pull request template;
- passed checks;
- reviewer approval;
- merge commit;
- no bypass, or documented bypass with reason and follow-up checks.
## Evidence Record
- PR URL: `pending`
- Linked issue URL: `pending`
- Reviewer: `pending`
- Reviewer type: `pending`
- Approval URL or screenshot filename: `pending`
- Passed checks: `pending`
- Merge commit: `pending`
- Bypass used: `pending`
- Date: `YYYY-MM-DD`
- Maintainer note: `pending`
## Reviewer Interpretation
Review by the same maintainer improves change discipline but does not prove
external peer review. External peer review must not be marked completed unless a
reviewed public PR includes a reviewer who is not the submitting maintainer and
the review is visible.
## Current Status
- PR workflow documentation: ready.
- PR template: ready.
- CODEOWNERS routing: ready.
- First reviewed PR evidence: pending.
- External peer review completed: not claimed.
## Not Registry Release Evidence
PR review evidence is governance/process evidence for public development
visibility. It is not registry release evidence and does not replace artifacts,
checksums, logs or release evidence from the Russian build-runner.
## Russian Contour Note
Primary registry-readiness contour remains Russian Gitea plus the planned
Russian build-runner. GitHub remains public mirror validation only.
## Guardrails
- Do not publish secrets, private URLs, private account data or customer
identifiers.
- Do not claim completed external peer review until the evidence record is
filled from a real reviewed PR.
- Do not claim branch protection verification from PR evidence alone.
- Do not claim completed registry submission.
- Do not claim certification.
- Do not claim SIEM/DLP replacement.
- Do not claim ML/LLM-based detection.
- Do not claim automatic remediation.
+106
View File
@@ -0,0 +1,106 @@
# AWatch-rus: PR-based review workflow
Дата: 2026-06-23
Статус: workflow documentation ready; first reviewed PR evidence remains
pending.
GitHub issue: https://github.com/igor04091968/AWatch-rus/issues/48
Этот документ описывает целевой PR-based workflow для публичного GitHub mirror.
Он не утверждает, что external peer review уже выполнен.
## Scope
- Repository: `igor04091968/AWatch-rus`.
- Branch: `main`.
- GitHub role: public mirror validation only.
- Primary registry contour: Russian Gitea plus planned Russian build-runner.
## Workflow
1. Significant changes should be made on a branch and submitted through a pull
request.
2. Each PR should link the relevant GitHub issue or state why no issue is
applicable.
3. The PR template must be completed before merge.
4. CODEOWNERS should route review to the responsible maintainer or reviewer.
5. CI, Coverage and Security checks should pass before merge.
6. Any bypass must be documented in the PR or follow-up evidence note.
## Docs-Only Changes
Docs-only governance changes may use a reduced local check set when no product
code changes:
- `python3 scripts/public_secret_pattern_check.py`
- `bash scripts/prepare_public_issues.sh`
- `bash -n scripts/registry_readiness_check.sh`
- `bash scripts/registry_readiness_check.sh`
- `git diff --check`
If shell scripts change, run `bash -n` for each changed shell script.
## Runtime/Product Changes
Runtime, API, UI or product-code changes require a broader validation plan.
Expected checks include:
- `cargo fmt --all --check`
- `cargo test --workspace`
- `cargo clippy --workspace --all-targets -- -D warnings`
- `cargo build --workspace`
- relevant smoke tests for deployment, pilot validation or browser behavior;
- rollback notes when operational behavior changes.
## Security-Sensitive Changes
Security-sensitive changes require:
- public secret-pattern scan;
- review against `SECURITY.md`;
- no secrets, tokens, private keys, recovery codes or customer identifiers;
- no exploit detail in public text before security triage.
## Registry Documentation Changes
Registry docs must preserve conservative claims:
- GitHub Actions is public mirror validation only.
- Registry release evidence requires Russian Gitea and the planned Russian
build-runner.
- Do not claim completed registry submission.
- Do not claim FSTEC/FSB certification.
- Do not claim SIEM/DLP replacement.
- Do not claim ML/LLM-based detection.
- Do not claim automatic remediation.
- Do not claim branch protection verification until maintainer evidence exists.
- Do not claim external peer review completion until reviewed PR evidence
exists.
## Required Check Names
Current workflow/job names used for branch protection planning:
- `CI / Rust checks`
- `CI / Docs and registry checks`
- `CI / Smoke checks`
- `Coverage / Coverage baseline`
- `Security / Cargo audit`
- `Security / Cargo deny`
- `Security / Secret pattern check`
- `Security / Dependency review`
These names should be rechecked against GitHub UI before branch protection is
marked verified.
## Evidence
Evidence for the first reviewed PR is tracked in
`docs/PR_REVIEW_EVIDENCE_RU.md`.
## Not Registry Release Evidence
PR review workflow evidence improves public process visibility. It is not
registry release evidence and does not replace release evidence generated on the
Russian build-runner.
+18 -7
View File
@@ -50,21 +50,26 @@ visibility, release evidence contour and legal package. Они требуют д
## 2. Нет внешнего visible peer review / публично видимого peer review ## 2. Нет внешнего visible peer review / публично видимого peer review
- Текущий статус: риск открыт; PR template and issue templates exist, but - Текущий статус: риск открыт; PR template, CODEOWNERS, public governance
public peer review history is still limited and external review is pending. issues and PR workflow docs exist, but first reviewed PR evidence and branch
protection verification are still pending.
- Влияние: внешним аудиторам сложнее оценить review discipline and change - Влияние: внешним аудиторам сложнее оценить review discipline and change
control maturity. control maturity.
- Почему не блокирует pilot/readiness stage: current changes are protected by - Почему не блокирует pilot/readiness stage: current changes are protected by
reproducible checks, public workflows and documented conservative positioning. reproducible checks, public workflows and documented conservative positioning.
- Как риск будет снижаться: review checklist, CODEOWNERS routing, first public - Как риск будет снижаться: review checklist, CODEOWNERS routing, public issue
PR reviews, explicit release branch review policy and advisory branch #48, `docs/PR_REVIEW_WORKFLOW_RU.md`, first public reviewed PR evidence,
protection. explicit release branch review policy and verified branch protection evidence.
- Уже снижающие evidence/documents/CI: `.github/pull_request_template.md`, - Уже снижающие evidence/documents/CI: `.github/pull_request_template.md`,
`.github/CODEOWNERS`, `.github/ISSUE_TEMPLATE/`, `.github/CODEOWNERS`, `.github/ISSUE_TEMPLATE/`,
`docs/REVIEW_CHECKLIST_RU.md`, `docs/BRANCH_PROTECTION_POLICY_RU.md`, `docs/REVIEW_CHECKLIST_RU.md`, `docs/BRANCH_PROTECTION_POLICY_RU.md`,
`docs/BRANCH_PROTECTION_EVIDENCE_RU.md`,
`docs/PR_REVIEW_WORKFLOW_RU.md`, `docs/PR_REVIEW_EVIDENCE_RU.md`,
`CONTRIBUTING.md`, `SECURITY.md`, public CI, public security workflow. `CONTRIBUTING.md`, `SECURITY.md`, public CI, public security workflow.
- Следующий action: завести публичную задачу - Residual risk: remains open until branch protection is verified and first
`[governance] Enable PR-based review workflow`. reviewed PR evidence exists.
- Следующий action: выполнить maintainer verification for branch protection and
record first reviewed PR evidence without overstating external peer review.
## 3. Низкая публичная активность issue tracker ## 3. Низкая публичная активность issue tracker
@@ -180,6 +185,12 @@ visibility, release evidence contour and legal package. Они требуют д
- PR review checklist exists in `docs/REVIEW_CHECKLIST_RU.md`. - PR review checklist exists in `docs/REVIEW_CHECKLIST_RU.md`.
- Advisory branch protection policy exists in - Advisory branch protection policy exists in
`docs/BRANCH_PROTECTION_POLICY_RU.md`. `docs/BRANCH_PROTECTION_POLICY_RU.md`.
- Branch protection evidence template exists in
`docs/BRANCH_PROTECTION_EVIDENCE_RU.md` with
`pending_manual_verification` status.
- PR-based workflow documentation exists in `docs/PR_REVIEW_WORKFLOW_RU.md`.
- PR review evidence template exists in `docs/PR_REVIEW_EVIDENCE_RU.md`;
first reviewed PR evidence remains pending.
- Public PR template includes security, registry-claim, runtime/API/UI, - Public PR template includes security, registry-claim, runtime/API/UI,
smoke-test, rollback and evidence checklist items. smoke-test, rollback and evidence checklist items.
- Visible external code review remains pending until public reviewed PRs exist. - Visible external code review remains pending until public reviewed PRs exist.
@@ -112,7 +112,8 @@
"status": "created", "status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/48", "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/48",
"created_at": "2026-06-23T19:43:08Z", "created_at": "2026-06-23T19:43:08Z",
"created_by": "maintainer" "created_by": "maintainer",
"next_evidence_doc": "docs/PR_REVIEW_EVIDENCE_RU.md"
}, },
{ {
"id": "012", "id": "012",
@@ -122,7 +123,8 @@
"status": "created", "status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/49", "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/49",
"created_at": "2026-06-23T19:43:10Z", "created_at": "2026-06-23T19:43:10Z",
"created_by": "maintainer" "created_by": "maintainer",
"next_evidence_doc": "docs/BRANCH_PROTECTION_EVIDENCE_RU.md"
} }
] ]
} }
@@ -1,5 +1,45 @@
# Registry readiness changelog # Registry readiness changelog
## 2026-06-23 branch protection and PR review evidence package
Added:
- `docs/BRANCH_PROTECTION_EVIDENCE_RU.md` with
`pending_manual_verification` status for GitHub branch protection evidence.
- `docs/PR_REVIEW_WORKFLOW_RU.md` with PR-based review workflow rules.
- `docs/PR_REVIEW_EVIDENCE_RU.md` with evidence criteria for the first reviewed
public PR.
- Public issues manifest links issue #48 to PR review evidence and issue #49 to
branch protection evidence.
Changed:
- `docs/BRANCH_PROTECTION_POLICY_RU.md` now lists recommended settings and real
current GitHub Actions check names.
- `.github/pull_request_template.md` includes compact governance/evidence
checklist items.
- `.github/CODEOWNERS` has clearer zones for workflows/security/governance,
registry docs, scripts, Rust workspace, demo/screenshots/docs.
- Project status and residual risks now distinguish prepared governance
evidence from pending verification.
Runtime impact:
- No runtime/product code changes.
- No API changes.
- No UI changes.
- No business logic changes.
Guardrails:
- Branch protection verification remains pending until maintainer records
repository settings evidence.
- External peer review is not claimed completed until real reviewed PR evidence
exists.
- GitHub remains public mirror validation only.
- Russian Gitea plus planned Russian build-runner remains the primary registry
contour.
## 2026-06-23 public roadmap issues created and linked ## 2026-06-23 public roadmap issues created and linked
Changed: Changed:
+83 -5
View File
@@ -59,6 +59,9 @@ required_files=(
"docs/RESIDUAL_RISKS_RU.md" "docs/RESIDUAL_RISKS_RU.md"
"docs/PUBLIC_ISSUES_PLAN_RU.md" "docs/PUBLIC_ISSUES_PLAN_RU.md"
"docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md" "docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md"
"docs/PR_REVIEW_WORKFLOW_RU.md"
"docs/PR_REVIEW_EVIDENCE_RU.md"
"docs/BRANCH_PROTECTION_EVIDENCE_RU.md"
"docs/public-issues/public-issues-manifest.json" "docs/public-issues/public-issues-manifest.json"
"docs/public-issues/001-registry-gitea-restore-test.md" "docs/public-issues/001-registry-gitea-restore-test.md"
"docs/public-issues/002-registry-russian-build-runner.md" "docs/public-issues/002-registry-russian-build-runner.md"
@@ -236,6 +239,8 @@ if [[ -s "$PUBLIC_ISSUES_MANIFEST" ]]; then
) )
) )
) )
and ([.issues[] | select(.id == "011" and .github_issue_url == "https://github.com/igor04091968/AWatch-rus/issues/48" and .status == "created" and .next_evidence_doc == "docs/PR_REVIEW_EVIDENCE_RU.md")] | length == 1)
and ([.issues[] | select(.id == "012" and .github_issue_url == "https://github.com/igor04091968/AWatch-rus/issues/49" and .status == "created" and .next_evidence_doc == "docs/BRANCH_PROTECTION_EVIDENCE_RU.md")] | length == 1)
' "$PUBLIC_ISSUES_MANIFEST" >/dev/null || fail "public_issues_manifest_required_fields" ' "$PUBLIC_ISSUES_MANIFEST" >/dev/null || fail "public_issues_manifest_required_fields"
elif command -v python3 >/dev/null 2>&1; then elif command -v python3 >/dev/null 2>&1; then
python3 - "$PUBLIC_ISSUES_MANIFEST" <<'PY' || fail "public_issues_manifest_required_fields" python3 - "$PUBLIC_ISSUES_MANIFEST" <<'PY' || fail "public_issues_manifest_required_fields"
@@ -282,6 +287,23 @@ for issue in issues:
raise SystemExit("created issue created_by mismatch") raise SystemExit("created issue created_by mismatch")
else: else:
raise SystemExit("issue status mismatch") raise SystemExit("issue status mismatch")
issue_by_id = {issue.get("id"): issue for issue in issues}
issue_011 = issue_by_id.get("011") or {}
if issue_011.get("status") != "created":
raise SystemExit("issue 011 status mismatch")
if issue_011.get("github_issue_url") != "https://github.com/igor04091968/AWatch-rus/issues/48":
raise SystemExit("issue 011 URL mismatch")
if issue_011.get("next_evidence_doc") != "docs/PR_REVIEW_EVIDENCE_RU.md":
raise SystemExit("issue 011 next_evidence_doc mismatch")
issue_012 = issue_by_id.get("012") or {}
if issue_012.get("status") != "created":
raise SystemExit("issue 012 status mismatch")
if issue_012.get("github_issue_url") != "https://github.com/igor04091968/AWatch-rus/issues/49":
raise SystemExit("issue 012 URL mismatch")
if issue_012.get("next_evidence_doc") != "docs/BRANCH_PROTECTION_EVIDENCE_RU.md":
raise SystemExit("issue 012 next_evidence_doc mismatch")
PY PY
else else
fail "json_validator_missing:jq_or_python3_required" fail "json_validator_missing:jq_or_python3_required"
@@ -316,6 +338,10 @@ require_grep "PUBLIC_ISSUES_PLAN_RU\\.md" "docs/PROJECT_STATUS_RU.md" "project_s
require_grep "docs/public-issues" "docs/PROJECT_STATUS_RU.md" "project_status_public_issue_templates" require_grep "docs/public-issues" "docs/PROJECT_STATUS_RU.md" "project_status_public_issue_templates"
require_grep "PUBLIC_ISSUES_CREATION_RUNBOOK_RU\\.md" "docs/PROJECT_STATUS_RU.md" "project_status_public_issue_runbook" require_grep "PUBLIC_ISSUES_CREATION_RUNBOOK_RU\\.md" "docs/PROJECT_STATUS_RU.md" "project_status_public_issue_runbook"
require_grep "Public issues:[[:space:]]*created and linked in manifest|Созданы 12 публичных" "docs/PROJECT_STATUS_RU.md" "project_status_issue_creation_created_urls" require_grep "Public issues:[[:space:]]*created and linked in manifest|Созданы 12 публичных" "docs/PROJECT_STATUS_RU.md" "project_status_issue_creation_created_urls"
require_grep "PR-based workflow documentation:[[:space:]]*ready" "docs/PROJECT_STATUS_RU.md" "project_status_pr_workflow_ready"
require_grep "Branch protection evidence package:[[:space:]]*ready" "docs/PROJECT_STATUS_RU.md" "project_status_branch_evidence_ready"
require_grep "pending_manual_verification" "docs/PROJECT_STATUS_RU.md" "project_status_branch_pending_manual"
require_grep "First reviewed PR evidence:[[:space:]]*pending|First reviewed PR evidence remains pending" "docs/PROJECT_STATUS_RU.md" "project_status_first_reviewed_pr_pending"
require_grep "GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU\\.md|Restore outline|Post-restore checks" "docs/registry/GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU.md" "backup_restore_runbook" require_grep "GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU\\.md|Restore outline|Post-restore checks" "docs/registry/GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU.md" "backup_restore_runbook"
require_grep "awatch-gitea-backup\\.timer" "docs/registry/GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU.md" "backup_timer" require_grep "awatch-gitea-backup\\.timer" "docs/registry/GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU.md" "backup_timer"
require_grep "sha256|SHA256" "docs/registry/GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU.md" "backup_sha256" require_grep "sha256|SHA256" "docs/registry/GITEA_BACKUP_AND_RESTORE_RUNBOOK_RU.md" "backup_sha256"
@@ -347,6 +373,9 @@ require_grep "public roadmap issues created and linked" "docs/registry/REGISTRY_
require_grep "docs/public-issues" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_dir" require_grep "docs/public-issues" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_dir"
require_grep "runtime/product code changes" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_no_runtime" require_grep "runtime/product code changes" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_no_runtime"
require_grep "GitHub remains public mirror validation only" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_github_role" require_grep "GitHub remains public mirror validation only" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_github_role"
require_grep "branch protection and PR review evidence package" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_branch_pr_evidence_package"
require_grep "No runtime/product code changes" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_branch_pr_no_runtime"
require_grep "External peer review is not claimed completed" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_external_review_not_completed"
require_grep "Restore test is not claimed as completed" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_restore_not_completed" require_grep "Restore test is not claimed as completed" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_restore_not_completed"
require_grep "Russian build-runner is not claimed as ready" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_build_runner_not_ready" require_grep "Russian build-runner is not claimed as ready" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_build_runner_not_ready"
require_grep "First release evidence build is not claimed as completed" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_release_evidence_not_completed" require_grep "First release evidence build is not claimed as completed" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_release_evidence_not_completed"
@@ -358,14 +387,27 @@ require_grep "public-issues/public-issues-manifest\\.json" "README.md" "readme_p
require_grep "Engineering governance and residual risks" "README.md" "readme_engineering_governance_section" require_grep "Engineering governance and residual risks" "README.md" "readme_engineering_governance_section"
require_grep "REVIEW_CHECKLIST_RU\\.md" "README.md" "readme_review_checklist_link" require_grep "REVIEW_CHECKLIST_RU\\.md" "README.md" "readme_review_checklist_link"
require_grep "BRANCH_PROTECTION_POLICY_RU\\.md" "README.md" "readme_branch_protection_policy_link" require_grep "BRANCH_PROTECTION_POLICY_RU\\.md" "README.md" "readme_branch_protection_policy_link"
require_grep "BRANCH_PROTECTION_EVIDENCE_RU\\.md" "README.md" "readme_branch_protection_evidence_link"
require_grep "PR_REVIEW_WORKFLOW_RU\\.md" "README.md" "readme_pr_review_workflow_link"
require_grep "PR_REVIEW_EVIDENCE_RU\\.md" "README.md" "readme_pr_review_evidence_link"
require_grep "CODEOWNERS" "README.md" "readme_codeowners" require_grep "CODEOWNERS" "README.md" "readme_codeowners"
require_grep "\\* @igor04091968" ".github/CODEOWNERS" "codeowners_default_owner" require_grep "\\* @igor04091968" ".github/CODEOWNERS" "codeowners_default_owner"
require_grep "/adk-rust/" ".github/CODEOWNERS" "codeowners_rust_workspace" require_grep "/adk-rust/" ".github/CODEOWNERS" "codeowners_rust_workspace"
require_grep "/scripts/" ".github/CODEOWNERS" "codeowners_scripts" require_grep "/scripts/" ".github/CODEOWNERS" "codeowners_scripts"
require_grep "/docs/demo/" ".github/CODEOWNERS" "codeowners_demo_docs"
require_grep "/docs/screenshots/" ".github/CODEOWNERS" "codeowners_screenshots"
require_grep "/docs/registry/" ".github/CODEOWNERS" "codeowners_registry_docs" require_grep "/docs/registry/" ".github/CODEOWNERS" "codeowners_registry_docs"
require_grep "/\\.github/workflows/" ".github/CODEOWNERS" "codeowners_workflows" require_grep "/\\.github/workflows/" ".github/CODEOWNERS" "codeowners_workflows"
require_grep "/\\.github/workflows/security\\.yml" ".github/CODEOWNERS" "codeowners_security_workflow"
require_grep "PR_REVIEW_WORKFLOW_RU\\.md" ".github/CODEOWNERS" "codeowners_pr_review_docs"
require_grep "BRANCH_PROTECTION_EVIDENCE_RU\\.md" ".github/CODEOWNERS" "codeowners_branch_evidence"
require_grep "/ansible/" ".github/CODEOWNERS" "codeowners_ansible" require_grep "/ansible/" ".github/CODEOWNERS" "codeowners_ansible"
require_grep "SECURITY\\.md" ".github/CODEOWNERS" "codeowners_security_docs" require_grep "SECURITY\\.md" ".github/CODEOWNERS" "codeowners_security_docs"
require_grep "Linked issue" ".github/pull_request_template.md" "pr_template_linked_issue"
require_grep "Runtime/API/UI impact" ".github/pull_request_template.md" "pr_template_runtime_api_ui"
require_grep "Registry claims" ".github/pull_request_template.md" "pr_template_registry_claims"
require_grep "Secrets, PII" ".github/pull_request_template.md" "pr_template_secrets_pii"
require_grep "GitHub Actions.*not registry release evidence" ".github/pull_request_template.md" "pr_template_github_not_registry_evidence"
require_grep "не публиковать секреты|No secrets" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_secrets" require_grep "не публиковать секреты|No secrets" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_secrets"
require_grep "персональных данных|personal data" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_pii" require_grep "персональных данных|personal data" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_pii"
require_grep "реальных IP|hostname|customer infrastructure identifiers" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_customer_infra" require_grep "реальных IP|hostname|customer infrastructure identifiers" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_customer_infra"
@@ -375,7 +417,19 @@ require_grep "Do not claim FSTEC/FSB certification" "docs/REVIEW_CHECKLIST_RU.md
require_grep "Do not claim SIEM/DLP replacement" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_siem_dlp" require_grep "Do not claim SIEM/DLP replacement" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_no_siem_dlp"
require_grep "restore_tested=false|restore_tested.*false" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_restore_false" require_grep "restore_tested=false|restore_tested.*false" "docs/REVIEW_CHECKLIST_RU.md" "review_checklist_restore_false"
require_grep "Require pull request before merge" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_require_pr" require_grep "Require pull request before merge" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_require_pr"
require_grep "Recommended GitHub Branch Protection Settings" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_recommended_settings"
require_grep 'Required approvals:[[:space:]]*`1`' "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_one_approval"
require_grep "Dismiss stale approvals" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_dismiss_stale"
require_grep "CODEOWNERS" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_codeowners_review"
require_grep "Require status checks" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_status_checks" require_grep "Require status checks" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_status_checks"
require_grep "CI / Rust checks" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_ci_rust_checks"
require_grep "CI / Docs and registry checks" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_ci_docs_registry_checks"
require_grep "CI / Smoke checks" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_ci_smoke_checks"
require_grep "Coverage / Coverage baseline" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_coverage_baseline_check"
require_grep "Security / Cargo audit" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_security_cargo_audit"
require_grep "Security / Cargo deny" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_security_cargo_deny"
require_grep "Security / Secret pattern check" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_secret_pattern_check"
require_grep "Security / Dependency review" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_dependency_review"
require_grep 'Require `CI` workflow' "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_ci" require_grep 'Require `CI` workflow' "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_ci"
require_grep 'Require `Security` workflow' "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_security" require_grep 'Require `Security` workflow' "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_security"
require_grep 'Require `Coverage` workflow' "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_coverage" require_grep 'Require `Coverage` workflow' "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_coverage"
@@ -385,6 +439,24 @@ require_grep "Require conversation resolution" "docs/BRANCH_PROTECTION_POLICY_RU
require_grep "Require linear history" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_linear_history" require_grep "Require linear history" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_linear_history"
require_grep "emergency-only" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_admin_bypass" require_grep "emergency-only" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_admin_bypass"
require_grep "recommended policy|advisory branch protection policy" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_advisory_not_enabled" require_grep "recommended policy|advisory branch protection policy" "docs/BRANCH_PROTECTION_POLICY_RU.md" "branch_policy_advisory_not_enabled"
require_grep "branch_protection_status:[[:space:]]*\"pending_manual_verification\"" "docs/BRANCH_PROTECTION_EVIDENCE_RU.md" "branch_evidence_pending_manual"
require_grep "https://github\\.com/igor04091968/AWatch-rus/issues/49" "docs/BRANCH_PROTECTION_EVIDENCE_RU.md" "branch_evidence_issue_49"
require_grep "Not Registry Release Evidence|Not registry release evidence" "docs/BRANCH_PROTECTION_EVIDENCE_RU.md" "branch_evidence_not_registry"
require_grep "Russian Contour Note" "docs/BRANCH_PROTECTION_EVIDENCE_RU.md" "branch_evidence_russian_contour"
require_grep "CI / Rust checks" "docs/BRANCH_PROTECTION_EVIDENCE_RU.md" "branch_evidence_required_checks"
require_grep "workflow documentation ready" "docs/PR_REVIEW_WORKFLOW_RU.md" "pr_workflow_ready"
require_grep "https://github\\.com/igor04091968/AWatch-rus/issues/48" "docs/PR_REVIEW_WORKFLOW_RU.md" "pr_workflow_issue_48"
require_grep "PR template must be completed" "docs/PR_REVIEW_WORKFLOW_RU.md" "pr_workflow_template_required"
require_grep "CODEOWNERS" "docs/PR_REVIEW_WORKFLOW_RU.md" "pr_workflow_codeowners"
require_grep "CI, Coverage and Security checks" "docs/PR_REVIEW_WORKFLOW_RU.md" "pr_workflow_checks"
require_grep "public secret-pattern scan" "docs/PR_REVIEW_WORKFLOW_RU.md" "pr_workflow_secret_scan"
require_grep "GitHub Actions is public mirror validation only" "docs/PR_REVIEW_WORKFLOW_RU.md" "pr_workflow_github_public_only"
require_grep "pr_review_evidence_status:[[:space:]]*\"pending_until_first_reviewed_pr_is_merged\"" "docs/PR_REVIEW_EVIDENCE_RU.md" "pr_evidence_pending_first_reviewed_pr"
require_grep "reviewer approval" "docs/PR_REVIEW_EVIDENCE_RU.md" "pr_evidence_reviewer_approval"
require_grep "External peer review completed:[[:space:]]*not claimed" "docs/PR_REVIEW_EVIDENCE_RU.md" "pr_evidence_external_not_claimed"
require_grep "Not Registry Release Evidence|Not registry release evidence" "docs/PR_REVIEW_EVIDENCE_RU.md" "pr_evidence_not_registry"
require_grep "\"next_evidence_doc\"[[:space:]]*:[[:space:]]*\"docs/PR_REVIEW_EVIDENCE_RU\\.md\"" "docs/public-issues/public-issues-manifest.json" "manifest_issue_48_next_evidence_doc"
require_grep "\"next_evidence_doc\"[[:space:]]*:[[:space:]]*\"docs/BRANCH_PROTECTION_EVIDENCE_RU\\.md\"" "docs/public-issues/public-issues-manifest.json" "manifest_issue_49_next_evidence_doc"
require_grep "Один основной разработчик" "docs/RESIDUAL_RISKS_RU.md" "risk_single_developer" require_grep "Один основной разработчик" "docs/RESIDUAL_RISKS_RU.md" "risk_single_developer"
require_grep "Нет внешнего visible peer review" "docs/RESIDUAL_RISKS_RU.md" "risk_peer_review" require_grep "Нет внешнего visible peer review" "docs/RESIDUAL_RISKS_RU.md" "risk_peer_review"
require_grep "Низкая публичная активность issue tracker" "docs/RESIDUAL_RISKS_RU.md" "risk_issue_tracker_activity" require_grep "Низкая публичная активность issue tracker" "docs/RESIDUAL_RISKS_RU.md" "risk_issue_tracker_activity"
@@ -437,6 +509,9 @@ scan_files=(
"$ROOT/docs/RESIDUAL_RISKS_RU.md" "$ROOT/docs/RESIDUAL_RISKS_RU.md"
"$ROOT/docs/PUBLIC_ISSUES_PLAN_RU.md" "$ROOT/docs/PUBLIC_ISSUES_PLAN_RU.md"
"$ROOT/docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md" "$ROOT/docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md"
"$ROOT/docs/PR_REVIEW_WORKFLOW_RU.md"
"$ROOT/docs/PR_REVIEW_EVIDENCE_RU.md"
"$ROOT/docs/BRANCH_PROTECTION_EVIDENCE_RU.md"
"$ROOT/docs/public-issues"/*.md "$ROOT/docs/public-issues"/*.md
"$ROOT/docs/public-issues"/*.json "$ROOT/docs/public-issues"/*.json
"$ROOT/docs/BRANCH_PROTECTION_POLICY_RU.md" "$ROOT/docs/BRANCH_PROTECTION_POLICY_RU.md"
@@ -463,6 +538,9 @@ claim_scan_files=(
"$ROOT/docs/RESIDUAL_RISKS_RU.md" "$ROOT/docs/RESIDUAL_RISKS_RU.md"
"$ROOT/docs/PUBLIC_ISSUES_PLAN_RU.md" "$ROOT/docs/PUBLIC_ISSUES_PLAN_RU.md"
"$ROOT/docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md" "$ROOT/docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md"
"$ROOT/docs/PR_REVIEW_WORKFLOW_RU.md"
"$ROOT/docs/PR_REVIEW_EVIDENCE_RU.md"
"$ROOT/docs/BRANCH_PROTECTION_EVIDENCE_RU.md"
"$ROOT/docs/public-issues"/*.md "$ROOT/docs/public-issues"/*.md
"$ROOT/docs/public-issues"/*.json "$ROOT/docs/public-issues"/*.json
"$ROOT/docs/BRANCH_PROTECTION_POLICY_RU.md" "$ROOT/docs/BRANCH_PROTECTION_POLICY_RU.md"
@@ -500,7 +578,7 @@ fi
rm -f /tmp/registry_forbidden_replacement.$$ rm -f /tmp/registry_forbidden_replacement.$$
if grep -RInEi "(ML/LLM-based detection|LLM-based detection|ML-based detection|automatic remediation)" "${claim_scan_files[@]}" \ if grep -RInEi "(ML/LLM-based detection|LLM-based detection|ML-based detection|automatic remediation)" "${claim_scan_files[@]}" \
| grep -Eiv "(forbidden|not_made|not_claimed|no claim|не заявляет|не фиксируется|не используется|does not claim)" \ | grep -Eiv "(forbidden|not_made|not_claimed|no claim|do not claim|не заявляет|не фиксируется|не используется|does not claim)" \
>/tmp/registry_forbidden_ai_auto.$$ 2>/dev/null; then >/tmp/registry_forbidden_ai_auto.$$ 2>/dev/null; then
fail "forbidden_claim_ai_or_automatic_remediation:$(cat /tmp/registry_forbidden_ai_auto.$$)" fail "forbidden_claim_ai_or_automatic_remediation:$(cat /tmp/registry_forbidden_ai_auto.$$)"
fi fi
@@ -520,15 +598,15 @@ if grep -RInEi "(completed Russian software registry submission|registry submiss
fi fi
rm -f /tmp/registry_forbidden_registry_submission_done.$$ rm -f /tmp/registry_forbidden_registry_submission_done.$$
if grep -RInEi "(branch protection).{0,120}(enabled|включ(е|ё)н|настроен|active)" "$ROOT/README.md" "$ROOT/docs/PROJECT_STATUS_RU.md" "$ROOT/docs/BRANCH_PROTECTION_POLICY_RU.md" "$REGISTRY_DIR"/*.md \ if grep -RInEi "(branch protection).{0,120}(enabled|включ(е|ё)н|настроен|active)" "$ROOT/README.md" "$ROOT/docs/PROJECT_STATUS_RU.md" "$ROOT/docs/BRANCH_PROTECTION_POLICY_RU.md" "$ROOT/docs/BRANCH_PROTECTION_EVIDENCE_RU.md" "$ROOT/docs/PR_REVIEW_WORKFLOW_RU.md" "$ROOT/docs/PR_REVIEW_EVIDENCE_RU.md" "$REGISTRY_DIR"/*.md \
| grep -Eiv "(not |не |не утверждает|not claimed|advisory|until repository settings|если применимо|recommended)" \ | grep -Eiv "(not |не |не утверждает|not claimed|advisory|until repository settings|если применимо|recommended|pending_manual_verification|until maintainer evidence|until.*evidence|to verify)" \
>/tmp/registry_forbidden_branch_protection_enabled.$$ 2>/dev/null; then >/tmp/registry_forbidden_branch_protection_enabled.$$ 2>/dev/null; then
fail "forbidden_claim_branch_protection_enabled:$(cat /tmp/registry_forbidden_branch_protection_enabled.$$)" fail "forbidden_claim_branch_protection_enabled:$(cat /tmp/registry_forbidden_branch_protection_enabled.$$)"
fi fi
rm -f /tmp/registry_forbidden_branch_protection_enabled.$$ rm -f /tmp/registry_forbidden_branch_protection_enabled.$$
if grep -RInEi "(external|visible|peer).{0,80}(review).{0,120}(active|performed|completed|done|выполняется|проведен|провед(е|ё)н|активен)" "$ROOT/README.md" "$ROOT/docs/PROJECT_STATUS_RU.md" "$ROOT/docs/RESIDUAL_RISKS_RU.md" "$REGISTRY_DIR"/*.md \ if grep -RInEi "(external|visible|peer).{0,80}(review).{0,120}(active|performed|completed|done|выполняется|проведен|провед(е|ё)н|активен)" "$ROOT/README.md" "$ROOT/docs/PROJECT_STATUS_RU.md" "$ROOT/docs/RESIDUAL_RISKS_RU.md" "$ROOT/docs/PR_REVIEW_WORKFLOW_RU.md" "$ROOT/docs/PR_REVIEW_EVIDENCE_RU.md" "$REGISTRY_DIR"/*.md \
| grep -Eiv "(not |не |pending|still pending|не утверждает|not claimed|until public reviewed PRs)" \ | grep -Eiv "(not |не |pending|still pending|не утверждает|not claimed|until public reviewed PRs|until reviewed PR evidence|unless a reviewed public PR|is not claimed)" \
>/tmp/registry_forbidden_external_review_active.$$ 2>/dev/null; then >/tmp/registry_forbidden_external_review_active.$$ 2>/dev/null; then
fail "forbidden_claim_external_review_active:$(cat /tmp/registry_forbidden_external_review_active.$$)" fail "forbidden_claim_external_review_active:$(cat /tmp/registry_forbidden_external_review_active.$$)"
fi fi