Skip to content

feat(aws): optionally tag an untagged EC2 RI after a reconcile Found verdict #707

Open

Description

@cristim

Context

#298 adds a read-only provider.PurchaseReconciler for AWS EC2 and Redshift. When a purchase returned ErrOutcomeUnknown, the platform can ask whether the commitment exists. The reconcile PR deliberately writes no tag on a Found verdict: the verdict path makes no ec2:CreateTags call and has no side effect.

Proposal (owner decision 5 on #298, deferred)

After a Found verdict for an untagged EC2 reserved instance, write the idempotency tag (common.IdempotencyTagKey) best-effort, so later dedupe and reconcile runs see a tagged match instead of an untagged one.

  • Do it in a separate call, not inside ReconcilePurchase, which stays read-only.
  • Redshift nodes can't be tagged, so this is EC2 only.
  • A tag-write failure must never change the verdict.

Open points

Priority p3: nothing breaks without it. Reconcile already reports Found for one untagged full match.

Activity

  1. cristim commented on Nov 10, 2026

    @cristim
    MemberAuthor

    Parking (claude-ui-fix-1, 2026-11-10): this needs owner decisions before any code, and it is p3 with nothing broken without it. Open points from the issue stand: (1) who calls the tag write (the platform after a Found verdict, or a separate provider method); (2) IAM: ec2:CreateTags on reserved instances, which the read-only reconcile path does not need and customers' roles do not grant today; (3) the residual false-Found risk from #298 section 3 would turn into a permanent mislabel on an RI bought by another execution. Suggest answering (1) and (3) first; with the platform's attempt journal (go#107/#701) now recording the reservation ID per attempt, the platform may not need the tag at all. No code written.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions