feat(pipeline): Step ABC + Pipeline runner + Timer #9

Merged
goldstein merged 1 commit from feat/pipeline-core into main 2026-04-18 09:07:10 +00:00

1 commit

Author SHA1 Message Date
dcd1bc764a feat(pipeline): Step ABC + Pipeline runner + Timer (spec §3, §4)
All checks were successful
tests / test (push) Successful in 56s
tests / test (pull_request) Successful in 1m7s
Adds the transport-agnostic pipeline orchestrator. Each step implements
async validate + process; the runner wraps both in a Timer, writes
per-step entries to response.metadata.timings, and aborts on the first
IXException by writing response.error.

- Step exposes a step_name property (defaults to class name) so tests and
  logs label steps consistently.
- Timer is a plain context manager that appends one {step, elapsed_seconds}
  entry on exit regardless of whether the body raised, so the timeline
  stays reconstructable for failed steps.
- 9 unit tests cover ordering, skip-on-false, IXException in validate vs.
  process, timings populated for every executed step, and shared-response
  mutation across steps. Non-IX exceptions propagate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 11:06:46 +02:00