feat(bus): identity.* topic family (formed / observation.linked / merged)
Fourth of the five-step identity-resolution substrate. Constants and builder ship now; no publishers exist yet — they land with the clusterer worker. Subscribers (webhook worker, dashboard SSE relay) can register against identity.> from day one. * decnet/bus/topics.py — IDENTITY root + IDENTITY_FORMED / IDENTITY_OBSERVATION_LINKED / IDENTITY_MERGED leaves; identity() builder mirroring the attacker() / system() helpers. Module docstring topic-tree updated. * tests/bus/test_topics.py — assert builder produces the expected three topic strings + rejects empty event_type. Wiki Service-Bus.md and a new Identity-Resolution.md page land in the companion wiki-checkout commit.
This commit is contained in:
@@ -72,3 +72,17 @@ def test_system_control_builder() -> None:
|
||||
def test_system_control_rejects_bad_segments(bad: str) -> None:
|
||||
with pytest.raises(ValueError):
|
||||
topics.system_control(bad)
|
||||
|
||||
|
||||
# ─── Identity resolution topics (commit 4 of IDENTITY_RESOLUTION.md) ─────────
|
||||
|
||||
|
||||
def test_identity_builder() -> None:
|
||||
assert topics.identity(topics.IDENTITY_FORMED) == "identity.formed"
|
||||
assert topics.identity(topics.IDENTITY_OBSERVATION_LINKED) == "identity.observation.linked"
|
||||
assert topics.identity(topics.IDENTITY_MERGED) == "identity.merged"
|
||||
|
||||
|
||||
def test_identity_builder_rejects_empty() -> None:
|
||||
with pytest.raises(ValueError):
|
||||
topics.identity("")
|
||||
|
||||
Reference in New Issue
Block a user