docs(governance): record public issue tracker evidence

This commit is contained in:
igor04091968
2026-06-23 22:49:13 +03:00
parent c2e0afae10
commit 54129d82b6
10 changed files with 258 additions and 93 deletions
+3 -2
View File
@@ -263,8 +263,9 @@ collectors.
[docs/RESIDUAL_RISKS_RU.md](docs/RESIDUAL_RISKS_RU.md). [docs/RESIDUAL_RISKS_RU.md](docs/RESIDUAL_RISKS_RU.md).
- Public issues plan: - Public issues plan:
[docs/PUBLIC_ISSUES_PLAN_RU.md](docs/PUBLIC_ISSUES_PLAN_RU.md). [docs/PUBLIC_ISSUES_PLAN_RU.md](docs/PUBLIC_ISSUES_PLAN_RU.md).
- Public issue templates are prepared and should be created manually or through - Public issue templates are prepared and real GitHub issue URLs are recorded
the opt-in script; this does not claim community adoption: in the manifest; this improves roadmap visibility but does not claim
community adoption:
[creation runbook](docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md), [creation runbook](docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md),
[manifest](docs/public-issues/public-issues-manifest.json). [manifest](docs/public-issues/public-issues-manifest.json).
+11 -8
View File
@@ -1,4 +1,4 @@
# AWatch-rus: статус проекта на 2026-06-22 # AWatch-rus: статус проекта на 2026-06-23
Документ фиксирует текущий baseline после настройки российского Gitea-контура, Документ фиксирует текущий baseline после настройки российского Gitea-контура,
backup, registry-readiness документации, плана российского build-runner и backup, registry-readiness документации, плана российского build-runner и
@@ -36,6 +36,11 @@ backup, registry-readiness документации, плана российск
`docs/public-issues/`. `docs/public-issues/`.
- Manifest публичных issues: - Manifest публичных issues:
`docs/public-issues/public-issues-manifest.json`. `docs/public-issues/public-issues-manifest.json`.
- Public issue package: ready.
- Public issues: created and linked in manifest.
- Public development visibility: improved through created roadmap/governance
issues.
- Community adoption remains low; no artificial adoption claim is made.
- Runbook создания публичных issues: - Runbook создания публичных issues:
`docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`. `docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`.
- Review checklist: - Review checklist:
@@ -80,10 +85,12 @@ backup, registry-readiness документации, плана российск
`docs/RESIDUAL_RISKS_RU.md`. `docs/RESIDUAL_RISKS_RU.md`.
- Подготовлен план публичных issues для ручного заведения: - Подготовлен план публичных issues для ручного заведения:
`docs/PUBLIC_ISSUES_PLAN_RU.md`. `docs/PUBLIC_ISSUES_PLAN_RU.md`.
- Подготовлен пакет issue templates со статусом `ready_to_create`: - Подготовлен пакет issue templates:
`docs/public-issues/`. `docs/public-issues/`.
- Подготовлен runbook ручного/opt-in создания issues: - Подготовлен runbook ручного/opt-in создания issues:
`docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`. `docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`.
- Созданы 12 публичных roadmap/governance GitHub issues, ссылки записаны в
`docs/public-issues/public-issues-manifest.json`.
## Planned / pending ## Planned / pending
@@ -94,15 +101,11 @@ backup, registry-readiness документации, плана российск
- Юридическое подтверждение правообладателя. - Юридическое подтверждение правообладателя.
- Финальная юридическая проверка пакета документов перед подачей. - Финальная юридическая проверка пакета документов перед подачей.
- Проверка совместимости с российскими ОС. - Проверка совместимости с российскими ОС.
- Публичные roadmap/issues из `docs/PUBLIC_ISSUES_PLAN_RU.md`: templates
готовы, создание самих GitHub issues остается manual/pending, пока URLs не
записаны в `docs/public-issues/public-issues-manifest.json`.
- GitHub issue creation remains pending until URLs are recorded in
`docs/public-issues/public-issues-manifest.json`.
- URLs remain pending in `docs/public-issues/public-issues-manifest.json`.
- 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.
- Community adoption remains low until external contributors, public reviews
and sustained third-party activity appear.
## Честные ограничения ## Честные ограничения
+16 -5
View File
@@ -2,9 +2,9 @@
Дата: 2026-06-23 Дата: 2026-06-23
Статус: issue templates готовы к созданию. Реальные GitHub issues считаются Статус: issue templates готовы; 12 публичных GitHub issues созданы, а ссылки
pending, пока ссылки не записаны в записаны в `docs/public-issues/public-issues-manifest.json`. Этот runbook
`docs/public-issues/public-issues-manifest.json`. остается процедурой для повторного, добавочного или ручного создания issues.
GitHub issues используются для public roadmap visibility. Они не являются GitHub issues используются для public roadmap visibility. Они не являются
registry release evidence. Primary registry contour остается Russian Gitea + registry release evidence. Primary registry contour остается Russian Gitea +
@@ -97,8 +97,19 @@ CONFIRM_CREATE_GITHUB_ISSUES=YES bash scripts/create_public_issues_from_manifest
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/<number>" "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/<number>"
``` ```
Status можно оставлять `ready_to_create` до отдельного решения о переводе в Для созданного issue manifest должен фиксировать:
`created`; минимальное evidence требование - наличие URL.
```json
{
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/<number>",
"created_at": "YYYY-MM-DDTHH:MM:SSZ",
"created_by": "maintainer"
}
```
Если issue не создан, `status` остается `ready_to_create`, а
`github_issue_url` остается `null`.
## Запрещенные данные ## Запрещенные данные
+56 -20
View File
@@ -1,13 +1,12 @@
# AWatch-rus: план публичных GitHub issues # AWatch-rus: план публичных GitHub issues
Дата: 2026-06-22 Дата: 2026-06-23
Статус: public governance backlog plan; issue templates are Статус: public governance backlog plan; issue templates are prepared and 12
`ready_to_create`. public GitHub issues are recorded in the manifest.
Этот документ перечисляет публичные GitHub issues, которые нужно завести Этот документ перечисляет публичные GitHub issues, созданные из подготовленных
вручную или через opt-in `gh` script. Он не утверждает, что задачи уже созданы templates. Он не утверждает, что сами задачи уже выполнены.
или выполнены.
Цель: повысить visibility development process после настройки российского Цель: повысить visibility development process после настройки российского
Gitea-контура, backup, public CI, coverage, security scanning и status freeze. Gitea-контура, backup, public CI, coverage, security scanning и status freeze.
@@ -21,24 +20,61 @@ Gitea-контура, backup, public CI, coverage, security scanning и status f
- dry-run check: `scripts/prepare_public_issues.sh`; - dry-run check: `scripts/prepare_public_issues.sh`;
- opt-in creation script: `scripts/create_public_issues_from_manifest.sh`. - opt-in creation script: `scripts/create_public_issues_from_manifest.sh`.
Реальные GitHub issue URLs остаются pending, пока они не записаны в manifest. Реальные GitHub issue URLs записаны в manifest. GitHub issues являются public
roadmap/development visibility, а не registry release evidence. GitHub остается
public mirror validation only; primary registry contour остается Russian Gitea
и planned Russian build-runner.
## Issues to create manually ## Созданные публичные issues
Создано 12 из 12 planned issues:
- `[registry] Perform Gitea backup restore test`:
https://github.com/igor04091968/AWatch-rus/issues/38
- `[registry] Prepare temporary Russian build-runner awatch-build-01`:
https://github.com/igor04091968/AWatch-rus/issues/39
- `[release] Produce first release evidence package`:
https://github.com/igor04091968/AWatch-rus/issues/40
- `[legal] Prepare rightsholder evidence package`:
https://github.com/igor04091968/AWatch-rus/issues/41
- `[qa] Define coverage threshold policy`:
https://github.com/igor04091968/AWatch-rus/issues/42
- `[security] Prepare external security/code review checklist`:
https://github.com/igor04091968/AWatch-rus/issues/43
- `[compat] Test Russian OS compatibility matrix`:
https://github.com/igor04091968/AWatch-rus/issues/44
- `[ops] Validate release artifacts storage in RF`:
https://github.com/igor04091968/AWatch-rus/issues/45
- `[docs] Refresh public demo pack and screenshots`:
https://github.com/igor04091968/AWatch-rus/issues/46
- `[pilot] Prepare Pilot Acceptance Checklist v2`:
https://github.com/igor04091968/AWatch-rus/issues/47
- `[governance] Enable PR-based review workflow`:
https://github.com/igor04091968/AWatch-rus/issues/48
- `[governance] Add branch protection policy`:
https://github.com/igor04091968/AWatch-rus/issues/49
These URLs improve public roadmap/development visibility only. They do not
prove restore completion, Russian build-runner readiness, release evidence
production, legal readiness, external peer review, branch protection enablement
or community adoption.
## Issues created from templates
| Title | Labels | Short goal | Acceptance criteria | Status | | Title | Labels | Short goal | Acceptance criteria | Status |
| --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- |
| `[registry] Perform Gitea backup restore test` | `registry`, `ops`, `evidence` | Prove restore procedure on a separate host and keep `restore_tested=false` until evidence exists. | Restore log, checksum verification, post-restore checks and rollback notes are attached or linked. | ready_to_create | | `[registry] Perform Gitea backup restore test` | `registry`, `ops`, `evidence` | Prove restore procedure on a separate host and keep `restore_tested=false` until evidence exists. | Restore log, checksum verification, post-restore checks and rollback notes are attached or linked. | created |
| `[registry] Prepare temporary Russian build-runner awatch-build-01` | `registry`, `build-runner`, `ops` | Provision temporary or permanent Russian build-runner for registry release evidence. | Host provisioning notes, toolchain list, Gitea access method and required checks plan are documented. | ready_to_create | | `[registry] Prepare temporary Russian build-runner awatch-build-01` | `registry`, `build-runner`, `ops` | Provision temporary or permanent Russian build-runner for registry release evidence. | Host provisioning notes, toolchain list, Gitea access method and required checks plan are documented. | created |
| `[release] Produce first release evidence package` | `release`, `registry`, `evidence` | Run release evidence scripts on `awatch-build-01` and collect artifacts/logs/checksums. | Release evidence manifest, logs, checksums and artifact storage path are documented. | ready_to_create | | `[release] Produce first release evidence package` | `release`, `registry`, `evidence` | Run release evidence scripts on `awatch-build-01` and collect artifacts/logs/checksums. | Release evidence manifest, logs, checksums and artifact storage path are documented. | created |
| `[legal] Prepare rightsholder evidence package` | `legal`, `registry`, `docs` | Prepare rightsholder and legal evidence for future registry submission. | Rightsholder evidence checklist, ownership notes and legal review TODOs are documented. | ready_to_create | | `[legal] Prepare rightsholder evidence package` | `legal`, `registry`, `docs` | Prepare rightsholder and legal evidence for future registry submission. | Rightsholder evidence checklist, ownership notes and legal review TODOs are documented. | created |
| `[qa] Define coverage threshold policy` | `qa`, `coverage`, `policy` | Define threshold only after stable coverage baseline review. | Coverage baseline reviewed and initial threshold policy proposed without blocking current baseline workflow. | ready_to_create | | `[qa] Define coverage threshold policy` | `qa`, `coverage`, `policy` | Define threshold only after stable coverage baseline review. | Coverage baseline reviewed and initial threshold policy proposed without blocking current baseline workflow. | created |
| `[security] Prepare external security/code review checklist` | `security`, `review`, `governance` | Establish visible peer review and external security review checklist. | Checklist references `docs/REVIEW_CHECKLIST_RU.md` and defines public review evidence expectations. | ready_to_create | | `[security] Prepare external security/code review checklist` | `security`, `review`, `governance` | Establish visible peer review and external security review checklist. | Checklist references `docs/REVIEW_CHECKLIST_RU.md` and defines public review evidence expectations. | created |
| `[compat] Test Russian OS compatibility matrix` | `compat`, `qa`, `registry` | Validate supported Russian OS matrix and document evidence. | Matrix lists target OS versions, test status and gaps without unsupported compatibility claims. | ready_to_create | | `[compat] Test Russian OS compatibility matrix` | `compat`, `qa`, `registry` | Validate supported Russian OS matrix and document evidence. | Matrix lists target OS versions, test status and gaps without unsupported compatibility claims. | created |
| `[ops] Validate release artifacts storage in RF` | `ops`, `release`, `registry` | Confirm release artifact storage location and retention in the Russian contour. | Storage path, retention, access model and checksum verification procedure are documented. | ready_to_create | | `[ops] Validate release artifacts storage in RF` | `ops`, `release`, `registry` | Confirm release artifact storage location and retention in the Russian contour. | Storage path, retention, access model and checksum verification procedure are documented. | created |
| `[docs] Refresh public demo pack and screenshots` | `docs`, `demo`, `public` | Update public demo pack, screenshots and non-sensitive demo evidence. | Demo materials contain no secrets, PII, real employee data or customer infrastructure identifiers. | ready_to_create | | `[docs] Refresh public demo pack and screenshots` | `docs`, `demo`, `public` | Update public demo pack, screenshots and non-sensitive demo evidence. | Demo materials contain no secrets, PII, real employee data or customer infrastructure identifiers. | created |
| `[pilot] Prepare Pilot Acceptance Checklist v2` | `pilot`, `qa`, `docs` | Update pilot acceptance checklist after residual risk register and public issue plan. | Checklist references residual risks, smoke checks and acceptance evidence needed for pilot stage. | ready_to_create | | `[pilot] Prepare Pilot Acceptance Checklist v2` | `pilot`, `qa`, `docs` | Update pilot acceptance checklist after residual risk register and public issue plan. | Checklist references residual risks, smoke checks and acceptance evidence needed for pilot stage. | created |
| `[governance] Enable PR-based review workflow` | `governance`, `review`, `process` | Move visible changes through pull requests where practical. | First public PR review record exists or a documented dry-run PR demonstrates the process. | ready_to_create | | `[governance] Enable PR-based review workflow` | `governance`, `review`, `process` | Move visible changes through pull requests where practical. | First public PR review record exists or a documented dry-run PR demonstrates the process. | created |
| `[governance] Add branch protection policy` | `governance`, `github`, `policy` | Configure GitHub branch protection after maintainer review of the advisory policy. | Branch protection settings are documented with screenshots or notes, or blockers are recorded. | ready_to_create | | `[governance] Add branch protection policy` | `governance`, `github`, `policy` | Configure GitHub branch protection after maintainer review of the advisory policy. | Branch protection settings are documented with screenshots or notes, or blockers are recorded. | created |
## Guardrails ## Guardrails
+13 -11
View File
@@ -1,6 +1,6 @@
# AWatch-rus: остаточные риски после public validation и российского Git-контура # AWatch-rus: остаточные риски после public validation и российского Git-контура
Дата: 2026-06-22 Дата: 2026-06-23
Статус: governance / registry-readiness residual risk register. Статус: governance / registry-readiness residual risk register.
@@ -68,23 +68,25 @@ visibility, release evidence contour and legal package. Они требуют д
## 3. Низкая публичная активность issue tracker ## 3. Низкая публичная активность issue tracker
- Текущий статус: риск открыт частично; issue templates, public roadmap and - Текущий статус: mitigation added; public roadmap/governance issues are
issue creation package exist, but real GitHub issues are still pending until created and linked in `docs/public-issues/public-issues-manifest.json`.
URLs are recorded.
- Влияние: низкая внешняя visibility development process; сложнее показать - Влияние: низкая внешняя visibility development process; сложнее показать
плановое управление backlog and governance. плановое управление backlog and governance.
- Почему не блокирует pilot/readiness stage: templates, roadmap and status docs - Почему не блокирует pilot/readiness stage: templates, roadmap and status docs
already define expected process; missing public tasks are a visibility gap, already define expected process; created public issues improve visibility,
not a runtime readiness gap. but do not prove task completion or community adoption.
- Как риск будет снижаться: manually create public issues for registry, QA, - Как риск будет снижаться: keep public issues current, link future evidence
security, compatibility, ops and pilot follow-up work using only after checks are actually performed, and use PR-based public review when
`docs/public-issues/` and `docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`. practical.
- Уже снижающие evidence/documents/CI: `ROADMAP.md`, issue templates, - Уже снижающие evidence/documents/CI: `ROADMAP.md`, issue templates,
`docs/PROJECT_STATUS_RU.md`, `docs/PUBLIC_ISSUES_PLAN_RU.md`, `docs/PROJECT_STATUS_RU.md`, `docs/PUBLIC_ISSUES_PLAN_RU.md`,
`docs/public-issues/public-issues-manifest.json`, `docs/public-issues/public-issues-manifest.json`,
`scripts/prepare_public_issues.sh`. `scripts/prepare_public_issues.sh`.
- Следующий action: создать реальные GitHub issues и записать URLs в - Residual risk: community adoption is still low until external contributors,
`docs/public-issues/public-issues-manifest.json`. public reviewed PRs and sustained third-party activity appear.
- Следующий action: keep issue URLs current in
`docs/public-issues/public-issues-manifest.json` and record real task
evidence only after completion.
## 4. Низкая community adoption ## 4. Низкая community adoption
+49 -25
View File
@@ -1,5 +1,5 @@
{ {
"status": "planned_issue_templates_ready", "status": "public_issue_urls_recorded",
"github_issue_tracker": "manual_or_gh_cli_creation_required", "github_issue_tracker": "manual_or_gh_cli_creation_required",
"github_role": "public_mirror_validation_only", "github_role": "public_mirror_validation_only",
"registry_release_evidence": "requires_russian_build_runner", "registry_release_evidence": "requires_russian_build_runner",
@@ -9,96 +9,120 @@
"title": "[registry] Perform Gitea backup restore test", "title": "[registry] Perform Gitea backup restore test",
"labels": ["registry", "ops", "evidence"], "labels": ["registry", "ops", "evidence"],
"source": "docs/public-issues/001-registry-gitea-restore-test.md", "source": "docs/public-issues/001-registry-gitea-restore-test.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/38",
"created_at": "2026-06-23T19:42:47Z",
"created_by": "maintainer"
}, },
{ {
"id": "002", "id": "002",
"title": "[registry] Prepare temporary Russian build-runner awatch-build-01", "title": "[registry] Prepare temporary Russian build-runner awatch-build-01",
"labels": ["registry", "build-runner", "ops"], "labels": ["registry", "build-runner", "ops"],
"source": "docs/public-issues/002-registry-russian-build-runner.md", "source": "docs/public-issues/002-registry-russian-build-runner.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/39",
"created_at": "2026-06-23T19:42:49Z",
"created_by": "maintainer"
}, },
{ {
"id": "003", "id": "003",
"title": "[release] Produce first release evidence package", "title": "[release] Produce first release evidence package",
"labels": ["release", "registry", "evidence"], "labels": ["release", "registry", "evidence"],
"source": "docs/public-issues/003-release-evidence-package.md", "source": "docs/public-issues/003-release-evidence-package.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/40",
"created_at": "2026-06-23T19:42:51Z",
"created_by": "maintainer"
}, },
{ {
"id": "004", "id": "004",
"title": "[legal] Prepare rightsholder evidence package", "title": "[legal] Prepare rightsholder evidence package",
"labels": ["legal", "registry", "docs"], "labels": ["legal", "registry", "docs"],
"source": "docs/public-issues/004-legal-rightsholder-package.md", "source": "docs/public-issues/004-legal-rightsholder-package.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/41",
"created_at": "2026-06-23T19:42:53Z",
"created_by": "maintainer"
}, },
{ {
"id": "005", "id": "005",
"title": "[qa] Define coverage threshold policy", "title": "[qa] Define coverage threshold policy",
"labels": ["qa", "coverage", "policy"], "labels": ["qa", "coverage", "policy"],
"source": "docs/public-issues/005-coverage-threshold-policy.md", "source": "docs/public-issues/005-coverage-threshold-policy.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/42",
"created_at": "2026-06-23T19:42:55Z",
"created_by": "maintainer"
}, },
{ {
"id": "006", "id": "006",
"title": "[security] Prepare external security/code review checklist", "title": "[security] Prepare external security/code review checklist",
"labels": ["security", "review", "governance"], "labels": ["security", "review", "governance"],
"source": "docs/public-issues/006-external-security-code-review-checklist.md", "source": "docs/public-issues/006-external-security-code-review-checklist.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/43",
"created_at": "2026-06-23T19:42:58Z",
"created_by": "maintainer"
}, },
{ {
"id": "007", "id": "007",
"title": "[compat] Test Russian OS compatibility matrix", "title": "[compat] Test Russian OS compatibility matrix",
"labels": ["compat", "qa", "registry"], "labels": ["compat", "qa", "registry"],
"source": "docs/public-issues/007-russian-os-compatibility-matrix.md", "source": "docs/public-issues/007-russian-os-compatibility-matrix.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/44",
"created_at": "2026-06-23T19:43:00Z",
"created_by": "maintainer"
}, },
{ {
"id": "008", "id": "008",
"title": "[ops] Validate release artifacts storage in RF", "title": "[ops] Validate release artifacts storage in RF",
"labels": ["ops", "release", "registry"], "labels": ["ops", "release", "registry"],
"source": "docs/public-issues/008-release-artifacts-storage-rf.md", "source": "docs/public-issues/008-release-artifacts-storage-rf.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/45",
"created_at": "2026-06-23T19:43:02Z",
"created_by": "maintainer"
}, },
{ {
"id": "009", "id": "009",
"title": "[docs] Refresh public demo pack and screenshots", "title": "[docs] Refresh public demo pack and screenshots",
"labels": ["docs", "demo", "public"], "labels": ["docs", "demo", "public"],
"source": "docs/public-issues/009-public-demo-pack-refresh.md", "source": "docs/public-issues/009-public-demo-pack-refresh.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/46",
"created_at": "2026-06-23T19:43:04Z",
"created_by": "maintainer"
}, },
{ {
"id": "010", "id": "010",
"title": "[pilot] Prepare Pilot Acceptance Checklist v2", "title": "[pilot] Prepare Pilot Acceptance Checklist v2",
"labels": ["pilot", "qa", "docs"], "labels": ["pilot", "qa", "docs"],
"source": "docs/public-issues/010-pilot-acceptance-checklist-v2.md", "source": "docs/public-issues/010-pilot-acceptance-checklist-v2.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/47",
"created_at": "2026-06-23T19:43:06Z",
"created_by": "maintainer"
}, },
{ {
"id": "011", "id": "011",
"title": "[governance] Enable PR-based review workflow", "title": "[governance] Enable PR-based review workflow",
"labels": ["governance", "review", "process"], "labels": ["governance", "review", "process"],
"source": "docs/public-issues/011-governance-pr-based-review-workflow.md", "source": "docs/public-issues/011-governance-pr-based-review-workflow.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/48",
"created_at": "2026-06-23T19:43:08Z",
"created_by": "maintainer"
}, },
{ {
"id": "012", "id": "012",
"title": "[governance] Add branch protection policy", "title": "[governance] Add branch protection policy",
"labels": ["governance", "github", "policy"], "labels": ["governance", "github", "policy"],
"source": "docs/public-issues/012-governance-branch-protection-policy.md", "source": "docs/public-issues/012-governance-branch-protection-policy.md",
"status": "ready_to_create", "status": "created",
"github_issue_url": null "github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/49",
"created_at": "2026-06-23T19:43:10Z",
"created_by": "maintainer"
} }
] ]
} }
@@ -1,5 +1,34 @@
# Registry readiness changelog # Registry readiness changelog
## 2026-06-23 public roadmap issues created and linked
Changed:
- Created 12 public roadmap/governance GitHub issues from
`docs/public-issues/`.
- Recorded issue URLs, `created_at` timestamps and `created_by=maintainer` in
`docs/public-issues/public-issues-manifest.json`.
- Updated project status, public issue plan and residual risk register to
distinguish created public issues from actual task completion evidence.
- Registry readiness checks now validate created issue URL/status consistency.
Runtime impact:
- No runtime/product code changes.
- No API changes.
- No UI changes.
- No business logic changes.
Guardrails:
- Public roadmap issues are development visibility evidence only.
- GitHub remains public mirror validation only.
- Russian Gitea plus planned Russian build-runner remains the primary registry
contour.
- Created issues do not prove restore completion, build-runner readiness,
release evidence production, external peer review, branch protection
enablement or community adoption.
## 2026-06-23 public issue creation package ## 2026-06-23 public issue creation package
Added: Added:
+15 -4
View File
@@ -31,11 +31,22 @@ fi
jq -e . "$MANIFEST" >/dev/null jq -e . "$MANIFEST" >/dev/null
jq -e ' jq -e '
.status == "planned_issue_templates_ready" (.status == "planned_issue_templates_ready" or .status == "public_issue_urls_recorded")
and .github_issue_tracker == "manual_or_gh_cli_creation_required" and .github_issue_tracker == "manual_or_gh_cli_creation_required"
and .github_role == "public_mirror_validation_only" and .github_role == "public_mirror_validation_only"
and .registry_release_evidence == "requires_russian_build_runner" and .registry_release_evidence == "requires_russian_build_runner"
and all(.issues[]; .status == "ready_to_create") and (.issues | length == 12)
and all(.issues[];
(
.status == "ready_to_create"
and .github_issue_url == null
)
or (
.status == "created"
and (.github_issue_url | type == "string")
and (.github_issue_url | test("^https://github\\.com/igor04091968/AWatch-rus/issues/[0-9]+$"))
)
)
' "$MANIFEST" >/dev/null ' "$MANIFEST" >/dev/null
gh auth status >/dev/null gh auth status >/dev/null
@@ -49,7 +60,7 @@ while IFS= read -r label; do
gh label create "$label" --color "ededed" --description "AWatch-rus public governance label" gh label create "$label" --color "ededed" --description "AWatch-rus public governance label"
printf '%s\n' "$label" >>"$existing_labels" printf '%s\n' "$label" >>"$existing_labels"
fi fi
done < <(jq -r '.issues[].labels[]' "$MANIFEST" | sort -u) done < <(jq -r '.issues[] | select(.status == "ready_to_create") | .labels[]' "$MANIFEST" | sort -u)
created=0 created=0
@@ -64,7 +75,7 @@ while IFS=$'\t' read -r title labels source; do
printf 'created_issue=%s\n' "$url" printf 'created_issue=%s\n' "$url"
created=$((created + 1)) created=$((created + 1))
done < <( done < <(
jq -r '.issues[] | [.title, (.labels | join(",")), .source] | @tsv' "$MANIFEST" jq -r '.issues[] | select(.status == "ready_to_create") | [.title, (.labels | join(",")), .source] | @tsv' "$MANIFEST"
) )
printf 'create_public_issues=ok\n' printf 'create_public_issues=ok\n'
+27 -6
View File
@@ -80,12 +80,25 @@ done
if [[ -s "$MANIFEST" ]] && command -v jq >/dev/null 2>&1; then if [[ -s "$MANIFEST" ]] && command -v jq >/dev/null 2>&1; then
jq -e . "$MANIFEST" >/dev/null || fail "invalid_json:docs/public-issues/public-issues-manifest.json" jq -e . "$MANIFEST" >/dev/null || fail "invalid_json:docs/public-issues/public-issues-manifest.json"
jq -e ' jq -e '
.status == "planned_issue_templates_ready" (.status == "planned_issue_templates_ready" or .status == "public_issue_urls_recorded")
and .github_issue_tracker == "manual_or_gh_cli_creation_required" and .github_issue_tracker == "manual_or_gh_cli_creation_required"
and .github_role == "public_mirror_validation_only" and .github_role == "public_mirror_validation_only"
and .registry_release_evidence == "requires_russian_build_runner" and .registry_release_evidence == "requires_russian_build_runner"
and (.issues | length == 12) and (.issues | length == 12)
and all(.issues[]; .status == "ready_to_create" and .github_issue_url == null) and any(.issues[]; .github_issue_url != null)
and all(.issues[];
(.source | startswith("docs/public-issues/"))
and (
(.status == "ready_to_create" and .github_issue_url == null)
or (
.status == "created"
and (.github_issue_url | type == "string")
and (.github_issue_url | test("^https://github\\.com/igor04091968/AWatch-rus/issues/[0-9]+$"))
and (.created_at | type == "string")
and .created_by == "maintainer"
)
)
)
' "$MANIFEST" >/dev/null || fail "manifest_required_fields" ' "$MANIFEST" >/dev/null || fail "manifest_required_fields"
while IFS= read -r source; do while IFS= read -r source; do
[[ -s "$ROOT/$source" ]] || fail "manifest_source_missing:$source" [[ -s "$ROOT/$source" ]] || fail "manifest_source_missing:$source"
@@ -103,18 +116,26 @@ if ((${#failures[@]} > 0)); then
fi fi
printf 'public_issues_prepare=ok\n' printf 'public_issues_prepare=ok\n'
printf 'status=ready_to_create\n' printf 'status=%s\n' "$(jq -r '.status' "$MANIFEST" 2>/dev/null || printf 'unknown')"
printf 'issue_templates=%d\n' "${#expected_files[@]}" printf 'issue_templates=%d\n' "${#expected_files[@]}"
if command -v jq >/dev/null 2>&1; then
printf 'created_issues=%s\n' "$(jq '[.issues[] | select(.status == "created")] | length' "$MANIFEST")"
printf 'ready_to_create=%s\n' "$(jq '[.issues[] | select(.status == "ready_to_create")] | length' "$MANIFEST")"
fi
printf '\n' printf '\n'
printf 'Manual gh CLI commands, after maintainer review and gh auth:\n' printf 'Manual gh CLI commands for issues still ready_to_create, after maintainer review and gh auth:\n'
for name in "${expected_files[@]}"; do for name in "${expected_files[@]}"; do
rel="docs/public-issues/$name"
if command -v jq >/dev/null 2>&1; then
status="$(jq -r --arg source "$rel" '.issues[] | select(.source == $source) | .status' "$MANIFEST")"
[[ "$status" == "ready_to_create" ]] || continue
fi
file="$ISSUES_DIR/$name" file="$ISSUES_DIR/$name"
title="$(section_value "Title" "$file")" title="$(section_value "Title" "$file")"
labels="$(labels_for_gh "$(section_value "Labels" "$file")")" labels="$(labels_for_gh "$(section_value "Labels" "$file")")"
rel="docs/public-issues/$name"
printf 'gh issue create --title %q --label %q --body-file %q\n' "$title" "$labels" "$rel" printf 'gh issue create --title %q --label %q --body-file %q\n' "$title" "$labels" "$rel"
done done
printf '\n' printf '\n'
printf 'After creating issues, update docs/public-issues/public-issues-manifest.json with github_issue_url values.\n' printf 'After creating any remaining issues, update docs/public-issues/public-issues-manifest.json with github_issue_url values.\n'
+39 -12
View File
@@ -217,15 +217,24 @@ if [[ -s "$PUBLIC_ISSUES_MANIFEST" ]]; then
if command -v jq >/dev/null 2>&1; then if command -v jq >/dev/null 2>&1; then
jq -e . "$PUBLIC_ISSUES_MANIFEST" >/dev/null || fail "invalid_json:docs/public-issues/public-issues-manifest.json" jq -e . "$PUBLIC_ISSUES_MANIFEST" >/dev/null || fail "invalid_json:docs/public-issues/public-issues-manifest.json"
jq -e ' jq -e '
.status == "planned_issue_templates_ready" (.status == "planned_issue_templates_ready" or .status == "public_issue_urls_recorded")
and .github_issue_tracker == "manual_or_gh_cli_creation_required" and .github_issue_tracker == "manual_or_gh_cli_creation_required"
and .github_role == "public_mirror_validation_only" and .github_role == "public_mirror_validation_only"
and .registry_release_evidence == "requires_russian_build_runner" and .registry_release_evidence == "requires_russian_build_runner"
and (.issues | length == 12) and (.issues | length == 12)
and any(.issues[]; .github_issue_url != null)
and all(.issues[]; and all(.issues[];
.status == "ready_to_create" (.source | startswith("docs/public-issues/"))
and .github_issue_url == null and (
and (.source | startswith("docs/public-issues/")) (.status == "ready_to_create" and .github_issue_url == null)
or (
.status == "created"
and (.github_issue_url | type == "string")
and (.github_issue_url | test("^https://github\\.com/igor04091968/AWatch-rus/issues/[0-9]+$"))
and (.created_at | type == "string")
and .created_by == "maintainer"
)
)
) )
' "$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
@@ -236,8 +245,12 @@ import sys
with open(sys.argv[1], "r", encoding="utf-8") as fh: with open(sys.argv[1], "r", encoding="utf-8") as fh:
data = json.load(fh) data = json.load(fh)
import re
if data.get("status") not in {"planned_issue_templates_ready", "public_issue_urls_recorded"}:
raise SystemExit("status mismatch")
expected = { expected = {
"status": "planned_issue_templates_ready",
"github_issue_tracker": "manual_or_gh_cli_creation_required", "github_issue_tracker": "manual_or_gh_cli_creation_required",
"github_role": "public_mirror_validation_only", "github_role": "public_mirror_validation_only",
"registry_release_evidence": "requires_russian_build_runner", "registry_release_evidence": "requires_russian_build_runner",
@@ -249,13 +262,26 @@ for key, value in expected.items():
issues = data.get("issues") issues = data.get("issues")
if not isinstance(issues, list) or len(issues) != 12: if not isinstance(issues, list) or len(issues) != 12:
raise SystemExit("issues length mismatch") raise SystemExit("issues length mismatch")
url_re = re.compile(r"^https://github\.com/igor04091968/AWatch-rus/issues/[0-9]+$")
if not any(issue.get("github_issue_url") for issue in issues):
raise SystemExit("no github_issue_url recorded")
for issue in issues: for issue in issues:
if issue.get("status") != "ready_to_create":
raise SystemExit("issue status mismatch")
if issue.get("github_issue_url") is not None:
raise SystemExit("github_issue_url must remain null until created")
if not str(issue.get("source", "")).startswith("docs/public-issues/"): if not str(issue.get("source", "")).startswith("docs/public-issues/"):
raise SystemExit("issue source mismatch") raise SystemExit("issue source mismatch")
status = issue.get("status")
url = issue.get("github_issue_url")
if status == "ready_to_create":
if url is not None:
raise SystemExit("ready_to_create issue must not have github_issue_url")
elif status == "created":
if not isinstance(url, str) or not url_re.match(url):
raise SystemExit("created issue URL mismatch")
if not isinstance(issue.get("created_at"), str):
raise SystemExit("created issue missing created_at")
if issue.get("created_by") != "maintainer":
raise SystemExit("created issue created_by mismatch")
else:
raise SystemExit("issue status mismatch")
PY PY
else else
fail "json_validator_missing:jq_or_python3_required" fail "json_validator_missing:jq_or_python3_required"
@@ -289,7 +315,7 @@ require_grep "RESIDUAL_RISKS_RU\\.md" "docs/PROJECT_STATUS_RU.md" "project_statu
require_grep "PUBLIC_ISSUES_PLAN_RU\\.md" "docs/PROJECT_STATUS_RU.md" "project_status_public_issues_plan_link" require_grep "PUBLIC_ISSUES_PLAN_RU\\.md" "docs/PROJECT_STATUS_RU.md" "project_status_public_issues_plan_link"
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 "manual/pending.*URLs.*public-issues-manifest|URLs.*public-issues-manifest" "docs/PROJECT_STATUS_RU.md" "project_status_issue_creation_pending_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 "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"
@@ -317,6 +343,7 @@ require_grep "No business logic changes" "docs/registry/REGISTRY_READINESS_CHANG
require_grep "RESIDUAL_RISKS_RU\\.md" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_residual_risks" require_grep "RESIDUAL_RISKS_RU\\.md" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_residual_risks"
require_grep "PUBLIC_ISSUES_PLAN_RU\\.md" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_plan" require_grep "PUBLIC_ISSUES_PLAN_RU\\.md" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_plan"
require_grep "public issue creation package" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issue_creation_package" require_grep "public issue creation package" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issue_creation_package"
require_grep "public roadmap issues created and linked" "docs/registry/REGISTRY_READINESS_CHANGELOG_RU.md" "changelog_public_issues_created_linked"
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"
@@ -383,10 +410,10 @@ require_grep "\\[pilot\\] Prepare Pilot Acceptance Checklist v2" "docs/PUBLIC_IS
require_grep "\\[governance\\] Enable PR-based review workflow" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issue_pr_review_workflow" require_grep "\\[governance\\] Enable PR-based review workflow" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issue_pr_review_workflow"
require_grep "\\[governance\\] Add branch protection policy" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issue_branch_protection_policy" require_grep "\\[governance\\] Add branch protection policy" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issue_branch_protection_policy"
require_grep "Acceptance criteria" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_acceptance_criteria" require_grep "Acceptance criteria" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_acceptance_criteria"
require_grep "ready_to_create" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_status_ready_to_create" require_grep "created" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_status_created"
require_grep "docs/public-issues" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_templates_dir" require_grep "docs/public-issues" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_templates_dir"
require_grep "public-issues-manifest\\.json" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_manifest_link" require_grep "public-issues-manifest\\.json" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_manifest_link"
require_grep "URLs.*pending|pending.*URLs" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_urls_pending" require_grep "https://github\\.com/igor04091968/AWatch-rus/issues/[0-9]+" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_urls_recorded"
require_grep "Do not mark restore test as completed until restore evidence exists" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_restore_guardrail" require_grep "Do not mark restore test as completed until restore evidence exists" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_restore_guardrail"
require_grep "Do not mark .*awatch-build-01.* as ready until provisioning evidence exists" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_build_runner_guardrail" require_grep "Do not mark .*awatch-build-01.* as ready until provisioning evidence exists" "docs/PUBLIC_ISSUES_PLAN_RU.md" "issues_build_runner_guardrail"
require_grep "public mirror validation only" "SECURITY.md" "security_public_mirror_validation" require_grep "public mirror validation only" "SECURITY.md" "security_public_mirror_validation"