Outcome
Turn Renderflow's external-tool support into a deliberate adapter ecosystem rather than a collection of command snippets.
The target is a broad local-first toolbox that can satisfy as much of an artifact forest as possible while keeping every provider replaceable, capability-declared, version-probed, validated, and provenance-aware.
Architecture
Organize adapters by capability/family rather than embedding provider names into core domain logic. A conceptual layout may resemble:
adapters/
documents/
pdf/
images/
audio_video/
ebooks/
office/
archives/
data/
ocr/
subtitles/
Each provider adapter must declare what it actually does and should use the shared process/tool/artifact contracts from the foundation issues.
Candidate ecosystem to evaluate
Do not adopt every candidate automatically. For each category, perform an adopt/adapt/reject decision based on capability coverage, portability, licensing, maintenance, deterministic behavior, output quality, and validation support.
Candidate classes include:
- document/publishing conversion and typesetting
- PDF inspection/rendering/repair/preflight
- image raster/vector conversion and metadata handling
- audio/video probing and transcoding
- office document conversion/extraction
- e-book conversion/validation
- archive inspection/extraction/creation
- structured-data normalization/querying
- OCR and scanned-document extraction
- subtitle/transcript conversion
Existing Pandoc, Tectonic, FFmpeg, EPUB/KEPUB #344, and HandBrake #345 work should become providers inside this model rather than special cases.
Adapter contract
Every adopted adapter must declare at minimum:
- stable provider ID and version compatibility
- supplied capability/transform IDs
- accepted input and produced output artifact types
- required runtime/tooling
- deterministic status
- loss/fidelity profile
- local/network behavior
- expected side effects
- validation strategy
- config schema/options
- provenance contribution
- representative fixtures
Selection and fallback
Allow multiple providers to satisfy the same capability. Planning should select among them using explicit policy such as availability, quality, cost, determinism, locality, user preference, and platform support.
Do not hide provider substitution after planning.
Acceptance criteria
Dependencies
Depends on #352, #356, #359, and #360. This issue should coordinate with existing #344 and #345 rather than duplicate them.
Outcome
Turn Renderflow's external-tool support into a deliberate adapter ecosystem rather than a collection of command snippets.
The target is a broad local-first toolbox that can satisfy as much of an artifact forest as possible while keeping every provider replaceable, capability-declared, version-probed, validated, and provenance-aware.
Architecture
Organize adapters by capability/family rather than embedding provider names into core domain logic. A conceptual layout may resemble:
Each provider adapter must declare what it actually does and should use the shared process/tool/artifact contracts from the foundation issues.
Candidate ecosystem to evaluate
Do not adopt every candidate automatically. For each category, perform an adopt/adapt/reject decision based on capability coverage, portability, licensing, maintenance, deterministic behavior, output quality, and validation support.
Candidate classes include:
Existing Pandoc, Tectonic, FFmpeg, EPUB/KEPUB #344, and HandBrake #345 work should become providers inside this model rather than special cases.
Adapter contract
Every adopted adapter must declare at minimum:
Selection and fallback
Allow multiple providers to satisfy the same capability. Planning should select among them using explicit policy such as availability, quality, cost, determinism, locality, user preference, and platform support.
Do not hide provider substitution after planning.
Acceptance criteria
Dependencies
Depends on #352, #356, #359, and #360. This issue should coordinate with existing #344 and #345 rather than duplicate them.