This is an automated email from the ASF dual-hosted git repository.

sbp pushed a commit to branch sbp
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-releases.git


The following commit(s) were added to refs/heads/sbp by this push:
     new 63940c2e Record when votes are resolved
63940c2e is described below

commit 63940c2e5faa0386ff0a099b78fb9ecda23d2123
Author: Sean B. Palmer <[email protected]>
AuthorDate: Wed Mar 4 15:48:24 2026 +0000

    Record when votes are resolved
---
 atr/storage/writers/release.py | 1 +
 atr/storage/writers/vote.py    | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/atr/storage/writers/release.py b/atr/storage/writers/release.py
index 963fe9ab..8f244172 100644
--- a/atr/storage/writers/release.py
+++ b/atr/storage/writers/release.py
@@ -347,6 +347,7 @@ class CommitteeParticipant(FoundationCommitter):
             .values(
                 phase=sql.ReleasePhase.RELEASE_CANDIDATE,
                 vote_started=datetime.datetime.now(datetime.UTC),
+                vote_resolved=None,
                 vote_manual=vote_manual,
             )
         )
diff --git a/atr/storage/writers/vote.py b/atr/storage/writers/vote.py
index f221bc1e..4a58b1f2 100644
--- a/atr/storage/writers/vote.py
+++ b/atr/storage/writers/vote.py
@@ -18,6 +18,7 @@
 # Removing this will cause circular imports
 from __future__ import annotations
 
+import datetime
 from typing import Literal
 
 import atr.construct as construct
@@ -289,6 +290,7 @@ class CommitteeMember(CommitteeParticipant):
 
         if vote_result == "passed":
             release.phase = sql.ReleasePhase.RELEASE_PREVIEW
+            release.vote_resolved = datetime.datetime.now(datetime.UTC)
             await self.__data.commit()
             await self.__data.refresh(release)
             success_message = "Vote marked as passed"
@@ -299,6 +301,7 @@ class CommitteeMember(CommitteeParticipant):
             )
         else:
             release.phase = sql.ReleasePhase.RELEASE_CANDIDATE_DRAFT
+            release.vote_resolved = datetime.datetime.now(datetime.UTC)
             await self.__data.commit()
             await self.__data.refresh(release)
             success_message = "Vote marked as failed"
@@ -376,6 +379,7 @@ class CommitteeMember(CommitteeParticipant):
             success_message = "Project PPMC vote marked as passed, and 
Incubator PMC vote automatically started"
         elif vote_result == "passed":
             release.phase = sql.ReleasePhase.RELEASE_PREVIEW
+            release.vote_resolved = datetime.datetime.now(datetime.UTC)
             await self.__data.commit()
             await self.__data.refresh(release)
             success_message = "Vote marked as passed"
@@ -391,6 +395,7 @@ class CommitteeMember(CommitteeParticipant):
                 extra_destination = (round_one_email_address, 
round_one_message_id)
         else:
             release.phase = sql.ReleasePhase.RELEASE_CANDIDATE_DRAFT
+            release.vote_resolved = datetime.datetime.now(datetime.UTC)
             await self.__data.commit()
             await self.__data.refresh(release)
             success_message = "Vote marked as failed"


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to