Skip to content

Implement the real Pincher source adapter #4

Description

@alexhraber

Context

PR #2 ships only a deterministic fixture/replay adapter. It intentionally does not claim production Pincher integration while the host event contract is provisional.

Scope

Implement a replaceable Amnion adapter for the published Pincher host contract after the producer contract issue is complete. Cover the connection or process boundary, subscription/poll/replay behavior, reconnect and resume, duplicate handling, backpressure, freshness, clean shutdown, and adapter conformance against shared producer/consumer fixtures.

The adapter must feed the existing projection reducer and must not move execution semantics, provider calls, patch application, shell execution, or governance storage into Amnion.

Non-goals

No new agent loop, provider runtime, persistent Amnion database, HTTP/WebSocket service, or local approval/proof authority. Do not redesign the projection contract in the adapter.

Acceptance criteria

  • The adapter consumes the versioned Pincher contract without decoding ad hoc payload maps in UI code.
  • Initial load, incremental updates, replay, reconnect, resume cursor, and duplicate events are covered by tests.
  • Fresh, stale, unavailable, malformed, unknown, and shutdown states remain visible.
  • Backpressure and bounded-memory behavior are explicit.
  • Clean shutdown leaves no background process or orphaned subscription.
  • Shared fixtures pass unchanged against the adapter and reducer.
  • The default TUI remains quiet and stable; detailed events are opt-in.

Dependencies

Depends on the Pincher contract issue and PR #2’s EventSourceAdapter boundary.

Validation expectations

Run cargo fmt, cargo test, Clippy with warnings denied, fixture conformance, reconnect/replay tests, and Decapod validation in the governed workspace.

Related: #2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions