Skip to content

No registry reader checks [meta] version — D-05 is one instance of a class with no policy #45

Description

@Polichinel

What

coordinate_registry.toml carries [meta] version, currently 1.4.1. Consumers pin by version and commit, and §10 makes the version load-bearing.

None of the three readers reads it.

  • views-models/tools/credentials/registry_to_env.py
  • views-faoapi/deployment/registry_to_env.py
  • views-crafdapi/deployment/registry_to_env.py

Each parses the TOML, iterates ("connection", "target"), and emits NAME=value. A reader written against v1.x will process a v2.x registry silently, interpreting whatever it recognises and ignoring the rest.

Why file it separately from D-05

D-05 (views-models#327 / C-51) asks what a reader should do with a reserved, value-less entry. That is one construct. The general question is: can a reader written at time T correctly process a registry written at T+1?

The current divergence is exactly this class of failure — three readers, two interpretations of the same document, no version negotiation between them. Settling D-05 fixes the instance and leaves the class open. The next registry construct reopens it under a new name.

Raised in an 8-perspective review of D-05; this was Kleppmann's reframing and no other perspective contradicted it. Deliberately not folded into that ruling — a compatibility policy is a bigger decision and should not ride on a specific dispute.

The decision

The standard answer is: refuse a document you cannot fully interpret. Concretely, each reader asserts the registry's major version matches what it was written against, and exits non-zero otherwise.

Open questions this repo should not answer alone:

  1. Major only, or major+minor? Major-only permits additive change without touching three readers — which fits how v1.4.0 and v1.4.1 actually went (both observation-driven, no consumer obligation). Minor-strict would have failed every consumer for a registry edit that changed nothing for them.
  2. Where does the "written against" constant live? In each reader — three copies to bump, consistent with the ratified WET arrangement — or derived?
  3. Does this belong in the contract as a clause, or is it reader implementation detail? Under §1's admission test it plausibly passes Q1 and Q2, which would make it contract surface.

Cost of not deciding

Low today, and that is the trap. Nothing breaks until the registry gains a construct an old reader misreads — at which point the failure looks exactly like C-29 and D-05 did: green tests, disagreeing runtimes, and no signal at the point of divergence.

Tracked as C-63 in reports/technical_risk_register.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions