Skip to content

V5: Composition -> SMS drift check via Pet Data #307

Description

@ckrough

Complexity: M · Blocked on external: SMS API access (via Pet Data)

Scope

Implement the Composition -> SMS hop as a ChannelAdapter-shaped read that pulls the animal's current SMS-sourced card through Pet Data's extraction (no second SMS connector in this service) and returns a ListingSnapshot for diffing.

Where the shelter's SMS exposes an API, that access lands in Pet Data's config; the listings service consumes Pet Data's extracted current card. This is the drift-prone manual-entry hop, so it is the highest-value check in the epic.

Out of scope

Dependencies

Acceptance criteria

  • The SMS hop returns a ListingSnapshot built from Pet Data's current extracted card for a fixture animal (asserted; the Pet Data client is mocked).
  • No module under src/listings/ opens its own SMS connection or imports an SMS SDK (grep-asserted); the SMS read goes through the Pet Data client only.
  • Absent SMS data maps to a "not entered" snapshot rather than an exception (test).

ADR: docs/adr/0033-listing-sync-verification.md. Epic: #302.
Tenant-data path: high-risk, blocked.

Metadata

Metadata

Assignees

No one assigned

    Labels

    blockedBlocked: needs operator decision or unblockingfeatureNew functionalityhigh-riskTouches data, auth, or LLM surface; warrants extra reviewmodule:listingsListing Compliance service (services/listings)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions