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).
- Public issues plan:
[docs/PUBLIC_ISSUES_PLAN_RU.md](docs/PUBLIC_ISSUES_PLAN_RU.md).
- Public issue templates are prepared and should be created manually or through
the opt-in script; this does not claim community adoption:
- Public issue templates are prepared and real GitHub issue URLs are recorded
in the manifest; this improves roadmap visibility but does not claim
community adoption:
[creation runbook](docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md),
[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-контура,
backup, registry-readiness документации, плана российского build-runner и
@@ -36,6 +36,11 @@ backup, registry-readiness документации, плана российск
`docs/public-issues/`.
- Manifest публичных issues:
`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:
`docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`.
- Review checklist:
@@ -80,10 +85,12 @@ backup, registry-readiness документации, плана российск
`docs/RESIDUAL_RISKS_RU.md`.
- Подготовлен план публичных issues для ручного заведения:
`docs/PUBLIC_ISSUES_PLAN_RU.md`.
- Подготовлен пакет issue templates со статусом `ready_to_create`:
- Подготовлен пакет issue templates:
`docs/public-issues/`.
- Подготовлен runbook ручного/opt-in создания issues:
`docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`.
- Созданы 12 публичных roadmap/governance GitHub issues, ссылки записаны в
`docs/public-issues/public-issues-manifest.json`.
## 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.
- Branch protection enablement is not claimed until repository settings are
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
Статус: issue templates готовы к созданию. Реальные GitHub issues считаются
pending, пока ссылки не записаны в
`docs/public-issues/public-issues-manifest.json`.
Статус: issue templates готовы; 12 публичных GitHub issues созданы, а ссылки
записаны в `docs/public-issues/public-issues-manifest.json`. Этот runbook
остается процедурой для повторного, добавочного или ручного создания issues.
GitHub issues используются для public roadmap visibility. Они не являются
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>"
```
Status можно оставлять `ready_to_create` до отдельного решения о переводе в
`created`; минимальное evidence требование - наличие URL.
Для созданного issue manifest должен фиксировать:
```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
Дата: 2026-06-22
Дата: 2026-06-23
Статус: public governance backlog plan; issue templates are
`ready_to_create`.
Статус: public governance backlog plan; issue templates are prepared and 12
public GitHub issues are recorded in the manifest.
Этот документ перечисляет публичные GitHub issues, которые нужно завести
вручную или через opt-in `gh` script. Он не утверждает, что задачи уже созданы
или выполнены.
Этот документ перечисляет публичные GitHub issues, созданные из подготовленных
templates. Он не утверждает, что сами задачи уже выполнены.
Цель: повысить visibility development process после настройки российского
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`;
- 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 |
| --- | --- | --- | --- | --- |
| `[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] 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 |
| `[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 |
| `[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 |
| `[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 |
| `[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 |
| `[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 |
| `[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 |
| `[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 |
| `[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 |
| `[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] 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 |
| `[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. | 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. | 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. | 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. | 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. | 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. | 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. | 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. | 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. | 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. | 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. | created |
## Guardrails
+13 -11
View File
@@ -1,6 +1,6 @@
# AWatch-rus: остаточные риски после public validation и российского Git-контура
Дата: 2026-06-22
Дата: 2026-06-23
Статус: governance / registry-readiness residual risk register.
@@ -68,23 +68,25 @@ visibility, release evidence contour and legal package. Они требуют д
## 3. Низкая публичная активность issue tracker
- Текущий статус: риск открыт частично; issue templates, public roadmap and
issue creation package exist, but real GitHub issues are still pending until
URLs are recorded.
- Текущий статус: mitigation added; public roadmap/governance issues are
created and linked in `docs/public-issues/public-issues-manifest.json`.
- Влияние: низкая внешняя visibility development process; сложнее показать
плановое управление backlog and governance.
- Почему не блокирует pilot/readiness stage: templates, roadmap and status docs
already define expected process; missing public tasks are a visibility gap,
not a runtime readiness gap.
- Как риск будет снижаться: manually create public issues for registry, QA,
security, compatibility, ops and pilot follow-up work using
`docs/public-issues/` and `docs/PUBLIC_ISSUES_CREATION_RUNBOOK_RU.md`.
already define expected process; created public issues improve visibility,
but do not prove task completion or community adoption.
- Как риск будет снижаться: keep public issues current, link future evidence
only after checks are actually performed, and use PR-based public review when
practical.
- Уже снижающие evidence/documents/CI: `ROADMAP.md`, issue templates,
`docs/PROJECT_STATUS_RU.md`, `docs/PUBLIC_ISSUES_PLAN_RU.md`,
`docs/public-issues/public-issues-manifest.json`,
`scripts/prepare_public_issues.sh`.
- Следующий action: создать реальные GitHub issues и записать URLs в
`docs/public-issues/public-issues-manifest.json`.
- Residual risk: community adoption is still low until external contributors,
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
+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_role": "public_mirror_validation_only",
"registry_release_evidence": "requires_russian_build_runner",
@@ -9,96 +9,120 @@
"title": "[registry] Perform Gitea backup restore test",
"labels": ["registry", "ops", "evidence"],
"source": "docs/public-issues/001-registry-gitea-restore-test.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/38",
"created_at": "2026-06-23T19:42:47Z",
"created_by": "maintainer"
},
{
"id": "002",
"title": "[registry] Prepare temporary Russian build-runner awatch-build-01",
"labels": ["registry", "build-runner", "ops"],
"source": "docs/public-issues/002-registry-russian-build-runner.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/39",
"created_at": "2026-06-23T19:42:49Z",
"created_by": "maintainer"
},
{
"id": "003",
"title": "[release] Produce first release evidence package",
"labels": ["release", "registry", "evidence"],
"source": "docs/public-issues/003-release-evidence-package.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/40",
"created_at": "2026-06-23T19:42:51Z",
"created_by": "maintainer"
},
{
"id": "004",
"title": "[legal] Prepare rightsholder evidence package",
"labels": ["legal", "registry", "docs"],
"source": "docs/public-issues/004-legal-rightsholder-package.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/41",
"created_at": "2026-06-23T19:42:53Z",
"created_by": "maintainer"
},
{
"id": "005",
"title": "[qa] Define coverage threshold policy",
"labels": ["qa", "coverage", "policy"],
"source": "docs/public-issues/005-coverage-threshold-policy.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/42",
"created_at": "2026-06-23T19:42:55Z",
"created_by": "maintainer"
},
{
"id": "006",
"title": "[security] Prepare external security/code review checklist",
"labels": ["security", "review", "governance"],
"source": "docs/public-issues/006-external-security-code-review-checklist.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/43",
"created_at": "2026-06-23T19:42:58Z",
"created_by": "maintainer"
},
{
"id": "007",
"title": "[compat] Test Russian OS compatibility matrix",
"labels": ["compat", "qa", "registry"],
"source": "docs/public-issues/007-russian-os-compatibility-matrix.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/44",
"created_at": "2026-06-23T19:43:00Z",
"created_by": "maintainer"
},
{
"id": "008",
"title": "[ops] Validate release artifacts storage in RF",
"labels": ["ops", "release", "registry"],
"source": "docs/public-issues/008-release-artifacts-storage-rf.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/45",
"created_at": "2026-06-23T19:43:02Z",
"created_by": "maintainer"
},
{
"id": "009",
"title": "[docs] Refresh public demo pack and screenshots",
"labels": ["docs", "demo", "public"],
"source": "docs/public-issues/009-public-demo-pack-refresh.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/46",
"created_at": "2026-06-23T19:43:04Z",
"created_by": "maintainer"
},
{
"id": "010",
"title": "[pilot] Prepare Pilot Acceptance Checklist v2",
"labels": ["pilot", "qa", "docs"],
"source": "docs/public-issues/010-pilot-acceptance-checklist-v2.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/47",
"created_at": "2026-06-23T19:43:06Z",
"created_by": "maintainer"
},
{
"id": "011",
"title": "[governance] Enable PR-based review workflow",
"labels": ["governance", "review", "process"],
"source": "docs/public-issues/011-governance-pr-based-review-workflow.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"github_issue_url": "https://github.com/igor04091968/AWatch-rus/issues/48",
"created_at": "2026-06-23T19:43:08Z",
"created_by": "maintainer"
},
{
"id": "012",
"title": "[governance] Add branch protection policy",
"labels": ["governance", "github", "policy"],
"source": "docs/public-issues/012-governance-branch-protection-policy.md",
"status": "ready_to_create",
"github_issue_url": null
"status": "created",
"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
## 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
Added:
+15 -4
View File
@@ -31,11 +31,22 @@ fi
jq -e . "$MANIFEST" >/dev/null
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_role == "public_mirror_validation_only"
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
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"
printf '%s\n' "$label" >>"$existing_labels"
fi
done < <(jq -r '.issues[].labels[]' "$MANIFEST" | sort -u)
done < <(jq -r '.issues[] | select(.status == "ready_to_create") | .labels[]' "$MANIFEST" | sort -u)
created=0
@@ -64,7 +75,7 @@ while IFS=$'\t' read -r title labels source; do
printf 'created_issue=%s\n' "$url"
created=$((created + 1))
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'
+27 -6
View File
@@ -80,12 +80,25 @@ done
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 '
.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_role == "public_mirror_validation_only"
and .registry_release_evidence == "requires_russian_build_runner"
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"
while IFS= read -r source; do
[[ -s "$ROOT/$source" ]] || fail "manifest_source_missing:$source"
@@ -103,18 +116,26 @@ if ((${#failures[@]} > 0)); then
fi
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[@]}"
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 '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
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"
title="$(section_value "Title" "$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"
done
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
jq -e . "$PUBLIC_ISSUES_MANIFEST" >/dev/null || fail "invalid_json:docs/public-issues/public-issues-manifest.json"
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_role == "public_mirror_validation_only"
and .registry_release_evidence == "requires_russian_build_runner"
and (.issues | length == 12)
and any(.issues[]; .github_issue_url != null)
and all(.issues[];
.status == "ready_to_create"
and .github_issue_url == null
and (.source | startswith("docs/public-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"
)
)
)
' "$PUBLIC_ISSUES_MANIFEST" >/dev/null || fail "public_issues_manifest_required_fields"
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:
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 = {
"status": "planned_issue_templates_ready",
"github_issue_tracker": "manual_or_gh_cli_creation_required",
"github_role": "public_mirror_validation_only",
"registry_release_evidence": "requires_russian_build_runner",
@@ -249,13 +262,26 @@ for key, value in expected.items():
issues = data.get("issues")
if not isinstance(issues, list) or len(issues) != 12:
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:
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/"):
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
else
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 "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 "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 "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"
@@ -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 "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 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 "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"
@@ -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\\] 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 "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 "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 .*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"