发布

  • v1228 34eced880f

    cog-ha-matter (ADR-116 P4): MdnsService -> mdns-sd ServiceInfo bridge

    frostbyte_neo 发布于 2026-05-23 22:28:10 +00:00

    Pure conversion from our wire-format MdnsService to the
    mdns_sd::ServiceInfo shape the responder daemon consumes. No
    socket binding, no daemon registration yet — that lands next iter
    as a runtime::spawn_mdns_responder(info) JoinHandle returning
    helper, same shape as runtime::spawn_publisher.

    • MdnsService::to_service_info(hostname, ipv4) -> Result<ServiceInfo, mdns_sd::Error>
    • mdns-sd = "0.11" added — aligned with the workspace pin from
      wifi-densepose-desktop so the lockfile doesn't fork dalek-like
      surfaces.

    3 new tests:

    • to_service_info_carries_service_type_and_port — locks that
      _ruview-ha._tcp (with or without mdns-sd's trailing-dot
      normalisation) and the control port round-trip through the
      conversion
    • to_service_info_propagates_txt_records — every locked TXT
      key from iter 4 (cog_id, mqtt_port, privacy, proto, node_id,
      cog_version) reachable via get_property_val_str on the
      converted ServiceInfo
    • to_service_info_does_not_silently_drop_caller_hostname —
      locks the caller-side responsibility for the .local. suffix.
      mdns-sd 0.11 accepts bare hostnames (verified empirically by
      initial test expecting it to reject — it didn't), so the
      wrapper layer must do the trailing-dot dance. Documenting
      that via a named test catches future bumps where the lib
      starts mutating the value.

    63/63 cog tests green (60 → 63).

    ADR-116 P4 now ⁶⁄₇: mDNS record-builder, chain, JSONL,
    file persistence, Ed25519 signing, ServiceInfo conversion;
    daemon register + embedded broker.

    Co-Authored-By: claude-flow ruv@ruv.net

    下载附件