Skip to content

orchestrator: Add the ReportSink seam for the Report effects - #447

Open
chrysh wants to merge 1 commit into
OpenPRoT:mainfrom
9elements:add-report-sink
Open

orchestrator: Add the ReportSink seam for the Report effects#447
chrysh wants to merge 1 commit into
OpenPRoT:mainfrom
9elements:add-report-sink

Conversation

@chrysh

@chrysh chrysh commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Draft: the management path behind the sink is not designed yet, so this adds the seam only.

The four Effect::Report* variants have no consumer seam. This adds a #[non_exhaustive] Report enum and a single ReportSink::report instead of a method or a trait per variant, so a new report is one variant rather than a trait break and a sink routes only what it recognises.

report returns nothing: a report names something that already happened, so an undeliverable one costs information, not containment, and reporting stays off the driver's fail-closed path. Payloads stay Copy and lifetime-free, like the effects they mirror.

The seam lives in driver/src/board.rs rather than orchestrator-capabilities, because Report carries a ComponentId and that crate is a dependency-free leaf. Same split the driver already makes for Verifier.

Composing a sink into the board follows in the next PR.

References 9elements#3.

The four Effect::Report* variants have no consumer seam. Add a
non_exhaustive Report enum and a single ReportSink::report instead of a
method or a trait per variant, so a new report is one variant rather
than a trait break and a sink routes only what it recognises.

report returns nothing: a report names something that already happened,
so an undeliverable one costs information, not containment, and
reporting stays off the driver's fail-closed path. A sink that needs to
know it dropped one records that on its own side.

Every payload stays Copy and lifetime-free, like the effects these
mirror; a report names its component and nothing more. The unit impl
drops them, for a board with no management side to tell. Trait only,
composing a sink into the board follows.

Assisted-by: Claude:claude-opus-5
@chrysh
chrysh marked this pull request as ready for review August 27, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant