From d420f5edef3c409eeab0521bda02a2c903ad3889 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 28 Jun 2026 15:02:18 +0800 Subject: [PATCH] fix(web): keep autonomous runtime readback visible --- .../tabs/automation-inventory-tab.tsx | 146 +++++++++++++++++- 1 file changed, 144 insertions(+), 2 deletions(-) diff --git a/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx b/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx index 128592a5c..d88b01041 100644 --- a/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx +++ b/apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx @@ -847,6 +847,145 @@ function GateMatrixRow({ ) } +function AutonomousRuntimeControlPriorityPanel({ + control, + t, +}: { + control: AiAgentAutonomousRuntimeControlSnapshot + t: ReturnType +}) { + const policy = control.current_policy + const switches = control.runtime_switches + const executorReceipts = control.controlled_executor.operation_receipts ?? [] + const hardBlockers = control.hard_blockers ?? [] + + return ( + +
+
+
+
+ +
+
+ + {t('globalControl.currentAutonomy.title')} + + + {control.program_status.status_note} + +
+
+
+ + + + +
+
+ +
+ } /> + } /> + } /> + } /> + } /> + } /> +
+ +
+
+
+ {t('globalControl.currentAutonomy.policyTitle')} + +
+
+ + + +
+
+ +
+ {t('globalControl.currentAutonomy.runtimeTitle')} + + + +
+
+ +
+
+ {t('globalControl.currentAutonomy.executorTitle')} + {executorReceipts.slice(0, 5).map(receipt => ( + + ))} +
+
+ {t('globalControl.currentAutonomy.hardBlockerTitle')} + {hardBlockers.slice(0, 5).map(blocker => ( + + ))} +
+
+
+
+ ) +} + export function AutomationInventoryTab() { const t = useTranslations('governance.automationInventory') const [snapshot, setSnapshot] = useState(null) @@ -2920,7 +3059,10 @@ export function AutomationInventoryTab() { if (error || !snapshot || !backlog || !backupTargets || !backupReadiness || !backupPolicy || !offsiteEscrow || !giteaHealth || !observabilityMatrix || !providerRouteMatrix || !deploymentLayout || !warRoom || !professionalTaskExpansion || !receiptReadbackOwnerReview || !reportNoWriteAnalysisRuntime || !lowMediumRiskWhitelist || !highRiskOwnerReviewQueue || !controlledExecutorHandoff || !actionAuditLedger || !actionOwnerAcceptanceEventBus || !hostRunawayAiops || !proactiveOperations || !versionLifecycleProposal || !interactionLearningProof || !liveReadModelGate || !redisDryRunGate || !learningWritebackPackage || !telegramReceiptPackage || !ownerApprovedLearningDryRun || !runtimeWriteGateReview || !postWriteVerifierPackage || !runtimeVerifierEvidenceReview || !reportAutomationReview || !reportStatusBoard || !reportRuntimeReadiness || !reportRuntimeDryRun || !reportRuntimeFixtureReadback || !runtimeWorkerShadowGate || !operationPermissionModel || !candidateOperationDryRunEvidence || !taskResultAuditTrail || !matchedPlaybookLearningGap || !criticReviewerResultCapture || !ownerApprovedResultCaptureDryRun || !ownerApprovedResultCaptureReadback || !runtimeReadbackApprovalPackage || !runtimeReadbackImplementationReview || !reportLiveDeliveryApprovalPackage || !runtimeReadbackFixtureApproval || !runtimeReadbackPromotionGate || !ownerApprovedFixturePromotionGate || !canonicalRuntimeReadbackOwnerAcceptance || !failureReceiptNoSendReplay || !reviewerQueueNoWriteReadback || !resultCaptureNoWriteReadback || !resultCapturePromotionApprovalGate || !ownerApprovedResultCapturePromotionDryRun || !resultCaptureWriteGateReview || !resultCaptureWriterImplementationReview || !resultCaptureWriterDryRunFixture || !resultCaptureWriterDryRunReadback || !resultCaptureOwnerPromotionReview || !resultCaptureOwnerApprovedExecutionRehearsal || !resultCaptureOwnerAcceptanceMaintenanceGate || !resultCaptureOwnerAcceptanceReadbackPreflightHold || !resultCaptureOwnerApprovedPreflightReleasePackage || !resultCaptureOwnerApprovedReleaseReadinessReadback || !resultCaptureOwnerReleaseApprovalGate || !resultCapturePostReleaseVerifierRollbackGate || !resultCaptureFinalReleaseCandidateReadback || !resultCaptureReleaseAuthorizationHold || !resultCaptureReleaseAuthorizationReadbackGate || !resultCaptureReleaseVerifierPreflightGate || !resultCaptureReleaseVerifierOwnerReviewPacket || !resultCaptureReleaseDecisionHold || !resultCaptureReleaseDecisionReadback || !resultCaptureReleaseDecisionNextHandoff || !resultCaptureReleaseDecisionInputPrep || !resultCaptureReleaseDecisionOwnerResponsePreflight || !resultCaptureReleaseDecisionOwnerResponseReadback || !resultCaptureReleaseDecisionOwnerResponseAcceptanceGate || !reportTruthActionabilityReview || !ownerDryRunPackage || !hostStatefulInventory || !dependencySupplyChainDriftMonitor || !serviceHealthGapMatrix || !serviceHealthNotificationPolicy) { return ( -
+
+ {autonomousRuntimeControl ? ( + + ) : null}
@@ -6377,7 +6519,7 @@ export function AutomationInventoryTab() {