"""Descriptor <- PlatformEntry projection (relay Phase 0, Task 0.3). Proves the CapabilityDescriptor is a projection of the existing PlatformEntry, not a parallel concept: the entry's label/limit/emoji/hint/pii fields carry straight through. """ from gateway.platform_registry import PlatformEntry from gateway.relay.descriptor import CONTRACT_VERSION, CapabilityDescriptor def _entry(**overrides) -> PlatformEntry: base = dict( name="telegram", label="Telegram", adapter_factory=lambda cfg: None, check_fn=lambda: True, max_message_length=4096, pii_safe=False, emoji="\u2708\ufe0f", platform_hint="You are on Telegram.", ) base.update(overrides) return PlatformEntry(**base) def test_projection_carries_platform_entry_fields(): d = CapabilityDescriptor.from_platform_entry(_entry(), len_unit="utf16") assert d.contract_version == CONTRACT_VERSION assert d.platform == "telegram" assert d.label == "Telegram" assert d.max_message_length == 4096 assert d.emoji == "\u2708\ufe0f" assert d.platform_hint == "You are on Telegram." assert d.pii_safe is False assert d.len_unit == "utf16"