Merge remote-tracking branch 'gitea-ssh/main' into codex/p0-product-manifest-standard-20260629

# Conflicts:
#	docs/LOGBOOK.md
This commit is contained in:
Your Name
2026-06-29 13:49:22 +08:00
5 changed files with 1184 additions and 7 deletions

View File

@@ -1,3 +1,15 @@
## 2026-06-29 — 13:45 P0 register 噪音整合為風險輸入
**完成內容**
- 更新 `docs/operations/awoooi-priority-work-order-readback.snapshot.json`,不再把「噪音」視為可忽略事項;改成 `noise_integrated_risk_register`
- 每個干擾訊號都綁定 `why_it_matters``professional_handling``exit_criteria`,避免 canceled CD、UI-only commits、本機髒工作樹、legacy GitHub lane、warning-only cold-start、stale snapshot 再把 P0 主線帶偏。
- P0-005 / P0-003 / P0-006 補上 `professional_fix`,明確要求單一 owner lane、單一 action、可量測退出條件。
**驗證目標**
- `jq empty docs/operations/awoooi-priority-work-order-readback.snapshot.json`
**邊界**:本次只修 P0 執行 register未重啟服務、未改 workflow、未讀 token / secret / `.env`、未操作 host / Docker / K8s / DB。
## 2026-06-29 — 13:40 P0-005 credential escrow evidence intake 只讀投影
**完成內容**

View File

@@ -1,7 +1,7 @@
{
"schema_version": "awoooi_priority_work_order_readback_v1",
"generated_at": "2026-06-29T13:28:25+08:00",
"status": "p0_product_governance_readback_green_next_blocker_credential_escrow",
"status": "integrated_p0_register_next_blocker_credential_escrow",
"source_refs": {
"global_scorecard": "~/.codex/product-runtime-governance-completion-scorecard.snapshot.json",
"workstation_dashboard": "~/.codex/codex-workstation-sync-dashboard.snapshot.json",
@@ -124,21 +124,98 @@
"dns_registrar_recovery",
"oauth_ai_provider_recovery"
],
"safe_next_step": "collect_redacted_non_secret_evidence_refs_then_rerun_preflight"
"professional_fix": {
"owner": "DR evidence lane",
"action": "Create one DR escrow checklist packet with the five required item ids, accept only redacted evidence refs, then run the existing preflight once.",
"exit_criteria": [
"effective_escrow_missing_count=0",
"owner_response_accepted_count=5",
"secret_value_collection_allowed=false",
"post_reboot_readiness OVERALL_DECLARATION no longer includes DR_ESCROW_BLOCKED"
],
"do_not_repeat": [
"Do not reopen cold-start or CI/CD work because escrow refs are missing.",
"Do not create additional owner-package variants for the same five refs."
]
},
"safe_next_step": "create_single_dr_escrow_evidence_checklist_then_rerun_preflight"
},
{
"workplan_id": "P0-003",
"title": "取得 Gitea private inventory 權限",
"status": "blocked_external_or_authenticated_inventory_required",
"reason": "Global scorecard still reports private/internal inventory incomplete; GitHub remains stopped and must not be used as a fallback."
"reason": "Global scorecard still reports private/internal inventory incomplete; GitHub remains stopped and must not be used as a fallback.",
"professional_fix": {
"owner": "Gitea inventory lane",
"action": "Use Gitea-only inventory readback and retire GitHub from P0 completion math; keep GitHub as do_not_use historical context only.",
"exit_criteria": [
"private_inventory_source=gitea",
"github_lane_excluded_from_p0_blocker_count=true",
"all active product repos have Gitea owner/readiness row"
]
}
},
{
"workplan_id": "P0-006",
"title": "清理 source-to-runtime drift 與 stale routes",
"status": "pending_after_p0_005_and_p0_003",
"reason": "P0-004 source readiness and P0-002 product manifest are green; keep drift cleanup after credential escrow and authenticated Gitea inventory readback."
"reason": "P0-004 source readiness and P0-002 product manifest are green; keep drift cleanup after credential escrow and authenticated Gitea inventory readback.",
"professional_fix": {
"owner": "source-runtime drift lane",
"action": "Compare product.awoooi.yaml, committed K8s/docker/workflow sources, production readback, and public routes; generate one drift list with owner and fix command per row.",
"exit_criteria": [
"runtime_without_source_count=0",
"source_without_runtime_count=0",
"stale_route_count=0 or explicitly retired"
]
}
}
],
"noise_integrated_risk_register": [
{
"signal": "canceled_or_superseded_cd_runs",
"why_it_matters": "Canceled runs hide whether the latest main actually deployed and can make a completed source fix look failed.",
"professional_handling": "Only the latest non-canceled run for the current main head is a deploy signal; older canceled runs become context, not blockers.",
"exit_criteria": "latest_main_deploy_readback_success=true"
},
{
"signal": "ui_redaction_commits_during_p0_recovery",
"why_it_matters": "Concurrent UI-only commits can cancel P0 CI runs and consume attention while not changing cold-start or DR truth.",
"professional_handling": "Keep UI-only changes on controlled-runtime profile and verify production readback after the newest head; do not reopen host recovery.",
"exit_criteria": "production_deploy_status=closure_verified and P0 endpoints unchanged"
},
{
"signal": "dirty_local_awooop_worktree",
"why_it_matters": "Local uncommitted frontend copy can create false test failures and pollute P0 diagnosis.",
"professional_handling": "Run P0 verification in clean Gitea main worktrees; never stage or revert user dirty files during P0 recovery.",
"exit_criteria": "all P0 test receipts come from clean main worktree"
},
{
"signal": "legacy_github_lane",
"why_it_matters": "Retired GitHub blockers inflate P0 blocker count and distract from active Gitea/runtime work.",
"professional_handling": "Keep GitHub stopped/do_not_use; remove it from active P0 next actions and route inventory work to Gitea.",
"exit_criteria": "active_p0_next_actions contain no GitHub recovery work"
},
{
"signal": "warning_only_cold_start_findings",
"why_it_matters": "Warnings can reveal hygiene debt, but treating them as reboot blockers delays recovery closure.",
"professional_handling": "Keep warnings visible with owner and due lane; close reboot recovery when BLOCKED=0 and service/data health are green.",
"exit_criteria": "cold_start_blocked=0 and warning items assigned outside reboot recovery"
},
{
"signal": "stale_or_incomplete_priority_snapshots",
"why_it_matters": "Old snapshots can contradict live production readback and send work back to already-fixed items.",
"professional_handling": "Live production readback wins; snapshots must be refreshed only when they change the next executable P0 action.",
"exit_criteria": "priority snapshot current_head matches latest successful deploy marker"
}
],
"professional_execution_rules": [
"Treat noise as a risk input when it masks, delays, or misroutes a P0; otherwise keep it as context.",
"Do not split noise into a separate project; attach it to the P0 row it can affect.",
"Every P0 row must have one owner lane, one action, and measurable exit criteria.",
"Do not re-run cold-start, CD, or UI checks unless their result can change the next P0 action.",
"One blocker gets one checklist and one preflight; do not produce duplicate owner packets for the same missing evidence."
],
"stopped_or_do_not_use": [
{
"workplan_id": "P0-003A",
@@ -163,8 +240,8 @@
"database_write_or_restore_performed": false
},
"next_execution_order": [
"P0-005: keep credential_escrow_evidence blocked until real redacted non-secret evidence refs exist; do not read or write secrets.",
"P0-003: continue Gitea-only private/internal inventory readback when authorized source exists; do not use GitHub.",
"P0-006: source-to-runtime drift cleanup after P0-005/P0-003 blockers are stable."
"P0-005: create a single DR escrow evidence checklist for the five missing refs and rerun one preflight.",
"P0-003: convert private/internal inventory to Gitea-only readback and remove retired GitHub from active P0 blocker math.",
"P0-006: run source-to-runtime drift cleanup using product manifest, committed runtime sources, production readback, and public route evidence."
]
}