Files
narratio/docs/internal/adapters.md

1.7 KiB

Internal: Adapters

Purpose

Define external integration boundaries and default adapter wiring used by app/stage orchestration.

Adapter Boundaries

Narratio stage logic depends on adapter interfaces, not transport-specific details.

Primary adapters:

  • whisperx.Client
  • seriatim.Runner
  • audita.Runner
  • scriptorium.Runner
  • storage.ObjectStore
  • notify.Sender

Legacy compatibility boundary:

  • storage.Backend remains in the storage adapter package and defaults to NoopBackend; current pipeline stages use storage.ObjectStore.

Ownership

Adapters own:

  • HTTP/subprocess/SDK argument and transport details.
  • Backend-specific request/response mapping.

Adapters do not own:

  • stage ordering/skip/force logic;
  • manifest transitions;
  • canonical path policy.

Default Wiring

internal/app/runner.go initializes default adapters when not injected:

  • WhisperX HTTP client from pipeline config.
  • Seriatim subprocess runner.
  • Audita subprocess runner.
  • Scriptorium subprocess runner.
  • Noop notifier (notify.NoopSender).
  • Object store only when required by selected stages/config.

Object-store construction goes through newCommandObjectStore, which loads configured filesystem secrets before adapter initialization.

Failure Semantics

  • Constructor errors fail stage execution setup early.
  • Runtime adapter errors propagate to stage code and then manifest failure handling.
  • Subprocess adapters persist stage logs/generated configs through stage-managed paths.

Test Surfaces

  • internal/adapters/whisperx/http_test.go
  • internal/adapters/seriatim/subprocess_test.go
  • internal/adapters/audita/subprocess_test.go
  • internal/adapters/scriptorium/subprocess_test.go
  • internal/adapters/storage/*_test.go
  • internal/app/runner_test.go