Skip to content

feat(toolchain): add runtime capability registry - #371

Merged
szmyty merged 1 commit into
mainfrom
feat/toolchain-registry-359
Aug 31, 2026
Merged

feat(toolchain): add runtime capability registry#371
szmyty merged 1 commit into
mainfrom
feat/toolchain-registry-359

Conversation

@szmyty

@szmyty szmyty commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Introduces the runtime tool/provider capability registry and reproducible selected-toolchain fingerprint required by #359.

This makes external tool availability, compatibility, provider identity, and capabilities first-class planner inputs instead of scattered executable assumptions.

Architecture

  • Adds a canonical, versioned built-in registry in crates/renderflow-core/data/tool-registry.yaml.
  • Adds the Rust ToolRegistry runtime model for built-in and runtime/plugin-provided tool capabilities.
  • Uses the bounded process service from Centralize and harden external tool execution with bounded process policies #356 for executable/version probing.
  • Preserves provider identity when transform definitions become graph edges so plans can explain which implementation was selected.
  • Filters unavailable/incompatible providers during planning and retains explainable provider/fallback information.
  • Computes a deterministic fingerprint from the providers relevant to the selected plan rather than the entire host environment.
  • Carries the selected toolchain fingerprint into execution-plan evidence and artifact DAG cache compatibility.
  • Registers dynamic YAML command transforms as runtime providers instead of pretending arbitrary executables are built-in tools.
  • Reworks doctor and adds structured tools list, tools inspect, and capability surfaces backed by the same machine-readable registry model.
  • Exposes the registry/fingerprint model through the SDK without exposing planner internals.
  • Adds generated tool-registry documentation and makes docs CI verify that the generated projection is current.

Built-in capability model

Registry descriptors capture stable tool/provider IDs, executable/version probes, supported platforms/architectures, capability IDs, media constraints, determinism, local/network behavior, fidelity/loss characteristics, required environment/configuration, validation notes, licensing/distribution notes, and fallback/substitution relationships.

Compatibility and boundaries

Tests

Coverage includes canonical registry parsing/validation, fake probe results, availability-state classification, version compatibility, stable tool/capability IDs, selected-toolchain fingerprint stability/change detection, provider-aware graph planning, runtime provider registration, registry-driven Tectonic availability checks, and the existing CLI/library/plugin example suite.

Final validation

Final review commit: 5f9e7a9865d321cc9fae869d5ff5b4afb64a0941 (single Conventional Commit).

All PR-triggered workflows passed on that exact SHA:

  • CI 33442142287 — success
    • Clippy with warnings denied
    • full Rust workspace build
    • full Rust workspace tests
    • web formatting/lint/typecheck/tests/build
    • portable installer build/install smoke test
    • Arch Linux stable PKGBUILD validation
    • Arch Linux git PKGBUILD validation
    • Snap build, install, renderflow --version smoke test, and artifact upload
    • bundled hello-world/transforms dry-runs
    • library embedding example
    • plugin registration example
  • docs 33442142327 — success
    • canonical tool-registry documentation generation
    • generated-doc zero-diff verification
    • MkDocs build
    • versioned docs build smoke test
  • Commit Lint 33442142130 — success

Closes #359

Introduce the canonical provider/tool registry, structured availability diagnostics,
provider-aware planning, selected-tool fingerprints, CLI/SDK inspection surfaces,
and generated registry documentation.

Use the bounded process service for version probes, preserve provider identity through
the transform graph, and make graph cache compatibility depend on the relevant
selected toolchain rather than arbitrary host state.

Closes #359
@szmyty
szmyty merged commit 120c07f into main Aug 31, 2026
19 checks passed
@szmyty
szmyty deleted the feat/toolchain-registry-359 branch August 31, 2026 22:00
@devactivity-app

Copy link
Copy Markdown

Pull Request Summary by devActivity

Metrics

Cycle Time: 25m

Achievements

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.

Create a runtime tool capability registry and reproducible toolchain fingerprint

1 participant