Skip to content

feat(reporting): support issue_observer on the production= service path #1873

Open

Description

@bokelley

Follow-up to #1258.

ReliableReportingService(issue_observer=...) delivers reporting-issue lifecycle events (opened, escalated, acknowledged, waived, resolved) on the worker turn, read from the issue-event outbox the ledger records beside each lifecycle write (adcp-reporting-storage migration 0008).

The first release supports only the non-production composition. With production=ReportingProductionOptions(...) the production graph owns the workers, admission and error handling, and the service refuses issue_observer with ReliableReportingConfigurationError.

Ask

Run ReportingIssueEventDispatcher on the production graph:

  • thread issue_observer through ReportingProductionOptions._compose / ReportingProductionSupport;
  • schedule the dispatcher alongside the production and notification tasks, with its failures reported where production reports worker failures;
  • check that the production store (PgReportingProductionStore / InMemoryReportingProductionStore) records issue events (issue_events_supported, issue_events_ready()).

Then remove the refusal in ReliableReportingService.__init__.

The delivery contract stays the same: at least once, deduplicated on event_id, in recording order per occurrence, and the observer never fails the buyer's call.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestno-triageSkip the Claude triage bot — human or designated agent will handle this issue

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions