diff --git a/decnet/orchestrator/emailgen/scheduler.py b/decnet/orchestrator/emailgen/scheduler.py index 51d0f735..1a05f6ff 100644 --- a/decnet/orchestrator/emailgen/scheduler.py +++ b/decnet/orchestrator/emailgen/scheduler.py @@ -131,13 +131,13 @@ async def _resolve_personas( topology = await repo.get_topology(topology_id) if not topology: return [], source - return ( - parse_personas( - topology.get("email_personas"), - language_default=topology.get("language_default") or "en", - ), - source, - ) + if isinstance(topology, dict): + raw = topology.get("email_personas") + lang = topology.get("language_default") or "en" + else: + raw = topology.email_personas + lang = topology.language_default or "en" + return parse_personas(raw, language_default=lang), source # Fleet / shard / anything else → global pool. return global_pool.load(), source diff --git a/tests/swarm/test_heartbeat_topology_resync.py b/tests/swarm/test_heartbeat_topology_resync.py index fbe8114d..2ec90b5f 100644 --- a/tests/swarm/test_heartbeat_topology_resync.py +++ b/tests/swarm/test_heartbeat_topology_resync.py @@ -115,7 +115,7 @@ async def test_heartbeat_matching_hash_does_not_flag( ) assert resp.status_code == 204, resp.text row = await repo.get_topology(tid) - assert row["needs_resync"] is False + assert row.needs_resync is False @pytest.mark.anyio @@ -140,7 +140,7 @@ async def test_heartbeat_hash_mismatch_flags_resync( ) assert resp.status_code == 204, resp.text row = await repo.get_topology(tid) - assert row["needs_resync"] is True + assert row.needs_resync is True @pytest.mark.anyio @@ -167,7 +167,7 @@ async def test_heartbeat_agent_reports_no_topology_flags_resync( ) assert resp.status_code == 204, resp.text row = await repo.get_topology(tid) - assert row["needs_resync"] is True + assert row.needs_resync is True @pytest.mark.anyio @@ -190,7 +190,7 @@ async def test_heartbeat_without_topology_block_is_noop_for_resync( row = await repo.get_topology(tid) # Absence of the topology block means agent hasn't reported anything # → treat like no topology reported → flag. - assert row["needs_resync"] is True + assert row.needs_resync is True @pytest.mark.anyio @@ -221,4 +221,4 @@ async def test_heartbeat_other_host_topology_unaffected( ) assert resp.status_code == 204, resp.text row = await repo.get_topology(tid_a) - assert row["needs_resync"] is False + assert row.needs_resync is False