From da789392abdf9904580f0f49157371395ba13137 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Mon, 27 Jul 2026 11:26:42 +0000 Subject: [PATCH] =?UTF-8?q?Complete=20the=20task=20for=20a=20void=20proper?= =?UTF-8?q?ty=20instead=20of=20dead-lettering=20it=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) --- applications/abri/dispatch.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/applications/abri/dispatch.py b/applications/abri/dispatch.py index 2362fa1d0..3e28d0951 100644 --- a/applications/abri/dispatch.py +++ b/applications/abri/dispatch.py @@ -23,6 +23,7 @@ from orchestration.abri_orchestrator import ( DealDatabaseGateway, LogJobOrchestrationResult, LogJobWriteBackError, + PropertyReportedVoid, TenantDataSyncResult, ) from utilities.aws_lambda.task_handler import NonRetriableTaskError @@ -198,6 +199,13 @@ def _run_tenant_sync(request: AbriTriggerRequest, flows: AbriFlows) -> str: ) if isinstance(outcome, AbriRequestRejected): raise AbriFlowRejectedError(flow="sync_tenant_data", rejection=outcome) + if isinstance(outcome, PropertyReportedVoid): + # Not a failure: an empty property has no signatories to sync, so + # redelivery could only park the message in the dead-letter queue. + return ( + f"no live tenancy for place {outcome.place_ref}; " + "property noted as void" + ) return ( f"{len(outcome.contact_ids)} contacts created " f"({outcome.vulnerable_contact_count} vulnerable)"