From 399745fde575cd1f5449ed2f0dd80fd7bc6090f3 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Sun, 12 Jul 2026 20:35:47 +0100 Subject: [PATCH] Plan RG06 stale barrier explicitly --- .../patrol_autonomy_colima_real_lab_test.go | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/internal/api/patrol_autonomy_colima_real_lab_test.go b/internal/api/patrol_autonomy_colima_real_lab_test.go index 033b3c2ad..181888cb0 100644 --- a/internal/api/patrol_autonomy_colima_real_lab_test.go +++ b/internal/api/patrol_autonomy_colima_real_lab_test.go @@ -540,9 +540,28 @@ func rg06SubmitBarrier(ctx context.Context, broker *patrolActionBroker, proposal } func rg06SubmitBarrierAfterPlan(ctx context.Context, broker *patrolActionBroker, proposal aicontracts.ActionProposal, afterPlan func() error) (aicontracts.ActionDisposition, error) { - disposition, err := broker.Submit(ctx, proposal) - if err != nil { - return disposition, err + var disposition aicontracts.ActionDisposition + if afterPlan == nil { + var err error + disposition, err = broker.Submit(ctx, proposal) + if err != nil { + return disposition, err + } + } else { + policyFactors, _ := broker.planPolicyFactors(ctx, proposal, broker.currentTime()) + plan, err := broker.lifecycle().PlanWithOptions(ctx, broker.orgID, unified.ActionRequest{RequestID: proposal.ProposalID, ResourceID: proposal.ResourceID, CapabilityName: proposal.CapabilityName, Params: proposal.Params, Reason: proposal.Reason, RequestedBy: patrolActionBrokerActor}, actionlifecycle.PlanOptions{ + Actor: unified.ActionActor{SubjectID: patrolActionBrokerActor, Kind: unified.ActionActorService, CredentialID: "service:patrol-action-broker", OrgID: broker.orgID}, + Origin: &unified.ActionOrigin{Surface: patrolActionOriginSurface, FindingID: proposal.FindingID, InvestigationID: proposal.InvestigationID, ProposalID: proposal.ProposalID}, + PolicyFactors: policyFactors, + }) + if err != nil { + return disposition, err + } + record, found, err := broker.lifecycle().Get(broker.orgID, plan.ActionID) + if err != nil || !found { + return disposition, fmt.Errorf("planned barrier action unavailable: found=%v err=%v", found, err) + } + disposition = dispositionFromRecord(record) } if disposition.State != string(unified.ActionStatePending) { return disposition, fmt.Errorf("barrier action was not pending before policy admission: state=%s", disposition.State)