Skip to content

compat gate accepts Kupo-only Evolution, which cannot submit/evaluate transactions #66

Description

@rober-m

Summary

The compatibility gate accepts an Evolution + Kupo-only selection (no Ogmios, no devnet) as valid, but that project has no way to submit or evaluate transactions — Kupo is index/query-only. The seam data treats bare kupo as an independently-sufficient provider for Evolution, which it isn't.

Where

  • registry/tools/evolution.toml: [compat] consumes = ["blockfrost", "kupo", "ogmios"]
  • registry/tools/kupo.toml: [compat] serves = ["kupo"]
  • src/registry/compat.rs implements the documented OR/union rule (TECH_SPEC §3.2.2): compatible when at least one selected provider serves a seam the tool consumes. The rule is correct; the data is wrong.

Failure scenario

cardano-init --off-chain evolution --infra kupo (no ogmios, no devnet):

  • compat::check computes served = {kupo}; since kupo ∈ evolution.consumes, it returns compatible.
  • The scaffolded project wires Evolution against Kupo alone. A real Evolution "Kupmios" provider needs both Kupo (queries) and Ogmios (submit + script evaluation), so Kupo alone can't run the mint→lock→redeem round-trip.

The authors already reasoned about exactly this class of gap for Dolos (dolos.toml declares only u5c, deliberately not blockfrost, because minibf lacks tx evaluation) — Evolution's bare kupo seam is the same trap left open.

Options

  1. Drop bare kupo from Evolution's consumes, so only ogmios (query + submit capable) satisfies it. Simplest; Kupmios users would still select ogmios.
  2. Model a composite "kupmios" seam that requires Kupo and Ogmios together, and have Evolution consume that. More expressive but needs an AND-relationship the current seam model (single-seam OR) doesn't express.

This is a product/design call, hence filing rather than fixing directly. Worth a test that asserts evolution + kupo-only is flagged incompatible once the model is chosen.

Notes

No live duplicate today (the 7 infra tools currently in the registry don't otherwise collide), so this is a latent correctness gap in the seam data, not a regression.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions