feat(agent99): add durable completion callback

This commit is contained in:
ogt
2026-07-11 20:45:52 +08:00
parent df26f43b77
commit e8b0244ee7
15 changed files with 965 additions and 41 deletions

View File

@@ -1,7 +1,7 @@
{
"schema_version": "agent99_enterprise_ai_automation_work_items_v1",
"generated_at": "2026-07-11T20:14:33+08:00",
"status": "in_progress_p0_agent99_false_green_and_lifecycle_closure",
"generated_at": "2026-07-11T20:34:00+08:00",
"status": "in_progress_p0_agent99_canonical_completion_callback",
"scope_complete": false,
"north_star": "Make Windows host 192.168.0.99 the policy-controlled on-prem AI execution node for all hosts, VMs, services, products, sites, tools, packages, alerts and recovery workflows, with external monitoring when host 99 is unavailable.",
"canonical_sources": {
@@ -17,22 +17,22 @@
"runtime_reboot_slo_readback": "https://awoooi.wooo.work/api/v1/agents/reboot-auto-recovery-slo-scorecard"
},
"current_p0": {
"id": "AG99-P0-001",
"title": "Agent99 runtime truth, false-green prevention and visible lifecycle receipt",
"reason": "The 2026-07-11 live audit proved that Agent99 runs real recovery work, but the operator cannot reliably see the closure: required inbox evidence can fail safe-summary parsing while preflight remains green, a successful Recover produces zero Telegram attempts because info lifecycle events are filtered out, and dedupe suppression leaves no explicit delivery receipt. Runtime truth and one-run lifecycle visibility must be corrected before adding more automation breadth.",
"implementation_status": "regression_reopened_source_fix_in_progress_runtime_deploy_and_recover_verifier_pending",
"next_action": "Deploy the parse-aware preflight and recovery lifecycle card to Windows 99, run one production-principal Recover, and require one explicit Telegram sent-or-dedupe receipt plus a parse-clean live preflight."
"id": "AG99-P0-006",
"title": "Agent99 canonical completion callback and cross-system incident closure",
"reason": "P0-001 is now runtime-verified on Windows 99: required evidence is fresh, parseable and content-healthy; a production-principal Recover passed all seven phases and produced a real Telegram visual receipt. The next missing link is canonical Agent99-to-AWOOOI/AwoooP/IWOOOS writeback, because Telegram delivery alone is not a durable incident closure.",
"implementation_status": "api_and_agent99_callback_source_ready_39_tests_passed_production_cd_and_runtime_callback_pending",
"next_action": "Commit the authenticated idempotent callback source, wait for the coordinated Gitea push slot, deploy through Gitea CD, then replay one SRE alert and require identical callback/run/trace plus AWOOOI operation and AwoooP run readback."
},
"current_runtime_truth": {
"observed_at": "2026-07-11T17:37:00+08:00",
"observed_at": "2026-07-11T20:25:26+08:00",
"awoooi_health_http_status": 200,
"awoooi_health_state": "recovered_late_currently_healthy",
"awoooi_runtime_build_commit_sha": "4a4b95e5135e8cf71d807a54700a962f5490088f",
"gitea_main_observed_sha": "f102616f0",
"gitea_main_deployed_source_sha": "4a4b95e5135e8cf71d807a54700a962f5490088f",
"runtime_work_items_generated_at": "2026-07-10T19:40:00+08:00",
"windows99_agent99_manifest_observed_at": "2026-07-11T17:31:00+08:00",
"windows99_agent99_source_revision": "442b319bb80e009291ced7afa4f704cbe3b64886",
"windows99_agent99_manifest_observed_at": "2026-07-11T20:20:51+08:00",
"windows99_agent99_source_revision": "06509e071c8b7c538feb112e4e4774ee22abf7d1",
"windows99_agent99_runtime_matched": true,
"windows99_agent99_runtime_file_count": 14,
"windows99_agent99_runtime_mismatch_count": 0,
@@ -41,11 +41,23 @@
"windows99_agent99_relay_listener_count": 1,
"windows99_agent99_alert_incoming_count": 0,
"windows99_agent99_command_pending_count": 0,
"windows99_agent99_live_preflight_green": true,
"windows99_agent99_required_evidence_fresh_count": 7,
"windows99_agent99_required_evidence_usable_count": 7,
"windows99_agent99_required_evidence_parse_failure_count": 0,
"windows99_agent99_required_evidence_content_failure_count": 0,
"windows99_agent99_recovery_run_id": "agent99-recovery-20260711-202159-3404b5b3",
"windows99_agent99_recovery_completed": true,
"windows99_agent99_recovery_elapsed_seconds": 42.9,
"windows99_agent99_recovery_phase_count": 7,
"windows99_agent99_recovery_telegram_sent": true,
"windows99_agent99_recovery_visual_sent": true,
"agent99_completion_callback_runtime_status": "source_ready_production_api_and_windows_client_not_yet_deployed",
"windows99_agent99_startup_recovery_execution_limit": "PT20M",
"windows99_vmware_running_guests": "5/5",
"public_surface_matrix": "23/23_http_2xx_or_expected_3xx",
"reboot_slo_status": "slo_breached_recovered_late",
"reboot_slo_readiness_percent": 87,
"reboot_slo_readiness_percent": 89,
"reboot_slo_primary_blocker": "all_required_hosts_not_in_10_minute_reboot_window",
"reboot_slo_active_blockers": [
"all_required_hosts_not_in_10_minute_reboot_window",
@@ -272,7 +284,7 @@
"id": "AG99-P0-001",
"order": 1,
"priority": "P0",
"status": "in_progress",
"status": "complete",
"title": "Agent outcome truth, source-runtime reconciliation and false-green prevention",
"owner_lane": "agent99_control_plane",
"dependencies": [],
@@ -289,9 +301,9 @@
"callback": "Write final outcome to AWOOOI incident and AwoooP Run/Verifier using the same trace id.",
"acceptance": "No false-resolved regression cases; source/runtime drift count is zero; unresolved evidence stays degraded or blocked.",
"completion_receipt": {
"source_revision": "5ea4405c2a75b51244da168a4834d27e24d74ee6",
"source_revision": "06509e071c8b7c538feb112e4e4774ee22abf7d1",
"runtime_manifest_matched": true,
"runtime_manifest_file_count": 7,
"runtime_manifest_file_count": 14,
"runtime_manifest_mismatch_count": 0,
"self_health_runtime_manifest_severity": "ok",
"outcome_self_test_ok": true,
@@ -300,19 +312,31 @@
"alert_replay_state": "verifying",
"alert_replay_verified_resolved": 0,
"alert_replay_source_event_resolved": false,
"telegram_sent_count": 0,
"rollback": "C:\\Wooo\\Agent99\\rollback\\p0-001-pre-5ea4405c",
"telegram_sent_count": 1,
"telegram_visual_sent_count": 1,
"required_evidence_usable_count": 7,
"required_evidence_parse_failure_count": 0,
"required_evidence_content_failure_count": 0,
"recovery_run_id": "agent99-recovery-20260711-202159-3404b5b3",
"recovery_completed": true,
"recovery_elapsed_seconds": 42.9,
"recovery_phase_count": 7,
"rollback": "C:\\Wooo\\Agent99\\deploy\\backup-20260711-202021",
"evidence": [
"C:\\Wooo\\Agent99\\evidence\\agent99-OutcomeContractSelfTest-20260710-161302.json",
"C:\\Wooo\\Agent99\\evidence\\agent99-SelfCheck-20260710-161350.json",
"C:\\Wooo\\Agent99\\queue\\processed\\processed-p0-001-operator-verifier-20260710-1615.json",
"C:\\Wooo\\Agent99\\queue\\processed\\processed-p0-001-alert-verifier-20260710-1615.json",
"C:\\Wooo\\Agent99\\evidence\\agent99-ControlTick-20260710-161919.json"
"C:\\Wooo\\Agent99\\evidence\\agent99-ControlTick-20260710-161919.json",
"C:\\Wooo\\Agent99\\evidence\\agent99-deploy-20260711-202021.json",
"C:\\Wooo\\Agent99\\evidence\\agent99-Recover-20260711-202159.json",
"C:\\Wooo\\Agent99\\evidence\\telegram-cards\\agent99-card-recovery_slo_result-20260711-202159.png"
]
},
"regression_reopened_at": "2026-07-11T20:02:00+08:00",
"regression_evidence": ["Windows 99 live preflight returned green while latest SreAlertInbox and TelegramInbox safe summaries reported RuntimeException", "latest production-principal Recover was verifier-green but telegramAttemptCount=0", "dedupe suppression returned without a Telegram attempt receipt"],
"next_action": "Deploy the parse-aware evidence gate, explicit lifecycle info alert and dedupe receipt; rerun production-principal Recover and keep this item open until runtime readback is parse-clean and notification-visible."
"closed_at": "2026-07-11T20:25:26+08:00",
"next_action": "Keep parse/content health and lifecycle notification receipts under regression monitoring; continue with AG99-P0-006."
},
{
"id": "AG99-P0-002",
@@ -432,8 +456,8 @@
"verifier": "Read back identical trace, final state and verifier evidence from AWOOOI and AwoooP.",
"callback": "This work item creates the canonical callback contract.",
"acceptance": "One trace is visible from alert receipt through final verifier, notification and recurrence counters.",
"implementation_progress": "The first closure slice is being implemented in Agent99 runtime: Recover now has a dedicated Traditional-Chinese lifecycle summary, a phase timeline image, a successful info-event delivery policy and an explicit dedupe receipt. Canonical authenticated AWOOOI/AwoooP/IWOOOS writeback remains open.",
"next_action": "Verify the Windows 99 recovery lifecycle receipt, then define the canonical callback schema and idempotent authenticated AWOOOI/AwoooP/IWOOOS endpoint."
"implementation_progress": "Recover lifecycle visibility is runtime verified on Windows 99. Source now adds an authenticated callback endpoint using the existing Agent99 relay token, idempotent AWOOOI operation receipts, an AwoooP completed shadow run, durable DB readback, bounded Agent99 pending retries and no-secret payload validation. Focused callback/recovery tests pass 39/39; production Gitea CD and one live same-trace replay remain open.",
"next_action": "Commit the callback source, obtain the coordinated single-writer push slot, deploy API and Agent99 client in order, then replay one SRE alert and verify AWOOOI/AwoooP/IWOOOS plus Telegram receipts share the same trace."
},
{
"id": "AG99-P0-007",
@@ -791,14 +815,13 @@
"p0_count": 14,
"p1_count": 8,
"p2_count": 3,
"in_progress_count": 10,
"in_progress_count": 9,
"in_progress_blocked_count": 0,
"planned_count": 14,
"complete_count": 1,
"complete_count": 2,
"current_p0_count": 1
},
"next_execution_order": [
"AG99-P0-001",
"AG99-P0-006",
"AG99-P0-003",
"AG99-P0-004",