feat(governance): 新增 release decision readback
All checks were successful
Code Review / ai-code-review (push) Successful in 18s
CD Pipeline / tests (push) Successful in 1m42s
CD Pipeline / build-and-deploy (push) Successful in 5m12s
CD Pipeline / post-deploy-checks (push) Successful in 1m32s

This commit is contained in:
Your Name
2026-06-14 11:43:03 +08:00
parent de884089d6
commit d41b1a383e
13 changed files with 1880 additions and 5 deletions

View File

@@ -590,6 +590,11 @@ export const apiClient = {
return handleResponse<AiAgentResultCaptureReleaseDecisionHoldSnapshot>(res)
},
async getAiAgentResultCaptureReleaseDecisionReadback() {
const res = await fetch(`${API_BASE_URL}/agents/agent-result-capture-release-decision-readback`)
return handleResponse<AiAgentResultCaptureReleaseDecisionReadbackSnapshot>(res)
},
async getAiAgentOwnerApprovedFixtureDryRun() {
const res = await fetch(`${API_BASE_URL}/agents/agent-owner-approved-fixture-dry-run`)
return handleResponse<AiAgentOwnerApprovedFixtureDryRunSnapshot>(res)
@@ -9305,6 +9310,229 @@ export interface AiAgentResultCaptureReleaseDecisionHoldSnapshot {
}
}
interface AiAgentReleaseDecisionReadbackItem {
readback_id: string
display_name: string
owner_agent: string
source_hold_id: string
readback_status: string
readback_mode: string
readback_summary: string
release_decision_passed: boolean
release_authorization_granted: boolean
runtime_write_allowed: boolean
telegram_send_allowed: boolean
evidence_hash?: string
}
export interface AiAgentResultCaptureReleaseDecisionReadbackSnapshot {
schema_version: 'ai_agent_result_capture_release_decision_readback_v1'
generated_at: string
program_status: {
overall_completion_percent: number
current_priority: 'P0' | 'P1' | 'P2' | 'P3'
current_task_id: 'P2-139'
next_task_id: 'P2-140'
read_only_mode: true
runtime_authority: 'result_capture_release_decision_readback_only_no_live_write'
status_note: string
}
source_refs: string[]
prior_release_decision_hold: {
schema_version: string
release_decision_hold_count: number
owner_decision_hold_count: number
verifier_decision_hold_count: number
rollback_decision_hold_count: number
maintenance_window_decision_hold_count: number
live_apply_decision_hold_count: number
blocked_decision_transition_count: number
operator_action_count: number
approval_required_total: number
blocked_total: number
readiness_note: string
owner_release_authorized_count: number
owner_release_approved_count: number
owner_review_approved_count: number
owner_decision_approved_count: number
verifier_decision_approved_count: number
maintenance_window_approved_count: number
rollback_owner_confirmed_count: number
post_release_verifier_ready_count: number
final_release_candidate_approved_count: number
final_release_candidate_pass_count: number
release_decision_pass_count: number
release_authorization_granted_count: number
release_authorization_pass_count: number
rollback_release_pass_count: number
live_apply_release_pass_count: number
writer_apply_count: number
execution_apply_count: number
receipt_write_count: number
reviewer_queue_write_count: number
gateway_queue_write_count: number
telegram_send_count: number
bot_api_call_count: number
report_receipt_write_count: number
result_capture_write_count: number
learning_write_count: number
playbook_trust_write_count: number
production_write_count: number
secret_read_count: number
destructive_operation_count: number
}
release_decision_readback_truth: {
p2_138_release_decision_hold_loaded: boolean
release_decision_readback_ready: boolean
owner_decision_still_required: boolean
verifier_decision_still_required: boolean
rollback_decision_still_required: boolean
maintenance_window_decision_still_required: boolean
live_apply_decision_still_required: boolean
redaction_review_still_required: boolean
release_decision_readback_only: boolean
truth_note: string
owner_release_authorized: boolean
owner_release_approved: boolean
owner_review_approved: boolean
owner_decision_approved: boolean
verifier_decision_approved: boolean
maintenance_window_approved: boolean
rollback_owner_confirmed: boolean
post_release_verifier_ready: boolean
final_release_candidate_approved: boolean
final_release_candidate_passed: boolean
release_decision_passed: boolean
release_authorization_granted: boolean
release_authorization_passed: boolean
rollback_release_passed: boolean
live_apply_release_passed: boolean
writer_apply_enabled: boolean
execution_apply_enabled: boolean
receipt_write_enabled: boolean
reviewer_queue_write_enabled: boolean
gateway_queue_write_enabled: boolean
telegram_send_enabled: boolean
bot_api_call_enabled: boolean
report_receipt_write_enabled: boolean
result_capture_write_enabled: boolean
learning_write_enabled: boolean
playbook_trust_write_enabled: boolean
production_write_enabled: boolean
secret_read_enabled: boolean
destructive_operation_enabled: boolean
owner_release_authorized_count: number
owner_release_approved_count: number
owner_review_approved_count: number
owner_decision_approved_count: number
verifier_decision_approved_count: number
maintenance_window_approved_count: number
rollback_owner_confirmed_count: number
post_release_verifier_ready_count: number
final_release_candidate_approved_count: number
final_release_candidate_pass_count: number
release_decision_pass_count: number
release_authorization_granted_count: number
release_authorization_pass_count: number
rollback_release_pass_count: number
live_apply_release_pass_count: number
writer_apply_count: number
execution_apply_count: number
receipt_write_count: number
reviewer_queue_write_count: number
gateway_queue_write_count: number
telegram_send_count: number
bot_api_call_count: number
report_receipt_write_count: number
result_capture_write_count: number
learning_write_count: number
playbook_trust_write_count: number
production_write_count: number
secret_read_count: number
destructive_operation_count: number
}
release_decision_readbacks: AiAgentReleaseDecisionReadbackItem[]
owner_decision_readbacks: AiAgentReleaseDecisionReadbackItem[]
verifier_decision_readbacks: AiAgentReleaseDecisionReadbackItem[]
rollback_decision_readbacks: AiAgentReleaseDecisionReadbackItem[]
maintenance_window_decision_readbacks: AiAgentReleaseDecisionReadbackItem[]
live_apply_decision_readbacks: AiAgentReleaseDecisionReadbackItem[]
blocked_readback_transitions: {
transition_id: string
status: string
reason: string
runtime_write_allowed: boolean
}[]
operator_actions: {
action_id: string
owner_agent: string
status: string
operator_instruction: string
runtime_write_allowed: boolean
}[]
display_redaction_contract: {
redaction_required: boolean
raw_prompt_display_allowed: boolean
private_reasoning_display_allowed: boolean
secret_value_display_allowed: boolean
raw_runtime_payload_display_allowed: boolean
internal_collaboration_content_display_allowed: boolean
frontend_display_policy: string
}
rollups: {
release_decision_readback_count: number
owner_decision_readback_count: number
verifier_decision_readback_count: number
rollback_decision_readback_count: number
maintenance_window_decision_readback_count: number
live_apply_decision_readback_count: number
blocked_readback_transition_count: number
operator_action_count: number
approval_required_release_decision_count: number
blocked_release_decision_count: number
approval_required_owner_decision_count: number
blocked_owner_decision_count: number
approval_required_verifier_decision_count: number
blocked_verifier_decision_count: number
approval_required_rollback_decision_count: number
blocked_rollback_decision_count: number
approval_required_maintenance_window_decision_count: number
blocked_maintenance_window_decision_count: number
approval_required_live_apply_decision_count: number
blocked_live_apply_decision_count: number
critical_blocker_count: number
owner_release_authorized_count: number
owner_release_approved_count: number
owner_review_approved_count: number
owner_decision_approved_count: number
verifier_decision_approved_count: number
maintenance_window_approved_count: number
rollback_owner_confirmed_count: number
post_release_verifier_ready_count: number
final_release_candidate_approved_count: number
final_release_candidate_pass_count: number
release_decision_pass_count: number
release_authorization_granted_count: number
release_authorization_pass_count: number
rollback_release_pass_count: number
live_apply_release_pass_count: number
writer_apply_count: number
execution_apply_count: number
receipt_write_count: number
reviewer_queue_write_count: number
gateway_queue_write_count: number
telegram_send_count: number
bot_api_call_count: number
report_receipt_write_count: number
result_capture_write_count: number
learning_write_count: number
playbook_trust_write_count: number
production_write_count: number
secret_read_count: number
destructive_operation_count: number
}
}
export interface AiAgentOwnerApprovedFixtureDryRunSnapshot {
schema_version: 'ai_agent_owner_approved_fixture_dry_run_v1'
generated_at: string