diff --git a/apps/api/tests/test_sre_k3s_controlled_automation_work_items_api.py b/apps/api/tests/test_sre_k3s_controlled_automation_work_items_api.py index 7da008d4d..2255e1dc8 100644 --- a/apps/api/tests/test_sre_k3s_controlled_automation_work_items_api.py +++ b/apps/api/tests/test_sre_k3s_controlled_automation_work_items_api.py @@ -67,12 +67,12 @@ def test_loader_returns_fixed_architecture_provider_order_and_agent99_bridge() - "total_items": 18, "by_priority": {"P0": 16, "P1": 2}, "by_status": { - "source_implemented_runtime_pending": 6, - "in_progress": 6, - "planned": 5, + "source_implemented_runtime_pending": 8, + "in_progress": 5, + "planned": 4, "policy_active": 1, }, - "source_implemented_items": 6, + "source_implemented_items": 8, "runtime_closed_items": 0, "program_completion_percent": 0, "asset_coverage_status": "partial", @@ -84,7 +84,7 @@ def test_projection_keeps_program_asset_and_runtime_truth_separate() -> None: payload = load_sre_k3s_controlled_automation_work_items() projection = build_sre_k3s_program_projection(payload) - assert projection["rollups"]["source_implemented_items"] == 6 + assert projection["rollups"]["source_implemented_items"] == 8 assert projection["rollups"]["runtime_closed_items"] == 0 assert projection["rollups"]["program_completion_percent"] == 0 assert projection["domain_count"] == 7 diff --git a/docs/operations/sre-k3s-controlled-automation-work-items.snapshot.json b/docs/operations/sre-k3s-controlled-automation-work-items.snapshot.json index 672121bc3..c2124732a 100644 --- a/docs/operations/sre-k3s-controlled-automation-work-items.snapshot.json +++ b/docs/operations/sre-k3s-controlled-automation-work-items.snapshot.json @@ -2,7 +2,7 @@ "schema_version": "sre_k3s_controlled_automation_work_items_v1", "governance_version": "global_product_governance_v2", "program_id": "AIA-SRE-P0-20260715", - "generated_at": "2026-07-15T15:30:00+08:00", + "generated_at": "2026-07-15T16:15:01+08:00", "status": "phase_1_canonical_identity_and_typed_routing_in_progress", "scope_complete": false, "current_p0": { @@ -365,18 +365,22 @@ "title": "DB 專屬 verifier 與 bounded executor", "owner_lane": "DatabaseAutomation", "risk": "high", - "status": "planned", + "status": "source_implemented_runtime_pending", "dependencies": [ "AIA-SRE-004" ], "source_refs": [ - "ops/config/service-registry.yaml" + "ops/config/service-registry.yaml", + "apps/api/src/db/base.py", + "apps/api/src/core/unit_of_work.py", + "apps/api/src/services/executor_trust_boundary_readback.py", + "scripts/ops/awoooi-workload-db-identity-bootstrap.sh" ], "executor": "db_bounded_executor", "verifier": "db_independent_verifier", "rollback": "transactional or compensating action only; destructive restore remains break-glass", "exit_condition": "DB incidents use DB-native preflight/postconditions and never generic host restart", - "next_action": "classify read-only, session, pool, replication and bounded maintenance actions" + "next_action": "deploy then verify cap-2 global session budget, role headroom >= 8 and DB-native no-cross-domain receipts" }, { "id": "AIA-SRE-011", @@ -428,13 +432,15 @@ "title": "Ollama RCA、Claude fallback 與 Gemini Critic/cost gate", "owner_lane": "ModelRouter", "risk": "critical", - "status": "in_progress", + "status": "source_implemented_runtime_pending", "dependencies": [ "AIA-SRE-012" ], "source_refs": [ "apps/api/src/services/ai_router.py", - "apps/api/src/services/ollama_failover_manager.py" + "apps/api/src/services/ollama_failover_manager.py", + "apps/api/src/services/ai_providers/claude.py", + "apps/api/src/services/ai_provider_policy.py" ], "executor": "ordered model router", "verifier": "provider-attributed replay accuracy, latency and cost readback", @@ -566,12 +572,12 @@ "P1": 2 }, "by_status": { - "source_implemented_runtime_pending": 6, - "in_progress": 6, - "planned": 5, + "source_implemented_runtime_pending": 8, + "in_progress": 5, + "planned": 4, "policy_active": 1 }, - "source_implemented_items": 6, + "source_implemented_items": 8, "runtime_closed_items": 0, "program_completion_percent": 0, "asset_coverage_status": "partial",