Skip to content

Hold the runtime's names to the specification's catalog - #116

Merged
Kinflou merged 1 commit into
mainfrom
conformance/catalog
Nov 9, 2026
Merged

Kinflou merged 1 commit into
mainfrom
conformance/catalog

Conversation

@Kinflou

@Kinflou Kinflou commented Nov 9, 2026

Copy link
Copy Markdown
Member

Stage 3 of the ComlineProject/core#219 rollout, part 1: the runtime's names checked against the catalog.

  • Re-vendors the specification at 69d8832. That version includes the comline-catalog crate (specification#2) at spec/rust. Its only other change is the crate's docs.
  • Path dependency, not a git rev. comline-catalog is a path dependency on spec/rust, so it is always the revision spec/REV pins, and it builds without fetching. That makes "the crate and the vendored spec move together" hold by construction instead of needing a CI check. It joins the workspace as a member.
  • Conformance crate:
    • The fact_values! enums now carry their catalog id (FACT) and an ALL list, and Fact::name returns the catalog ids.
    • facts_are_the_catalogs requires the typed facts to be exactly the catalog's, each enum's values to be the catalog's in order, and every official profile to state exactly its kind's catalog facts.
    • A mutation check confirmed it: reordering Calls fails the test.
  • comline-runtime:
    • The wire-name constants stay literal, so the crate still has no dependency for them.
    • tests/catalog.rs, through a dev-dependency, holds each constant to the catalog (value and kind), and checks that every official encoding has one.
  • Conformance README: a paragraph on the crate.

Tested locally:

  • The conformance, reference and catalog suites pass.
  • vendor-spec.sh --check and check.sh pass.
  • The wasm32 ffi build and the no_std core build both build.
  • Clippy reports nothing new.

Next, part 2: one list of fuzz targets, held against the fuzz Cargo.toml, fuzz.yml and the README.

Re-vendors the specification at 69d8832, which ships the catalog as the
comline-catalog crate (spec/rust). The conformance crate depends on it by
path, so it is always the revision spec/REV pins:

- each typed fact value enum carries its catalog id (FACT) and ALL, and
  facts_are_the_catalogs holds the typed facts, their values in order, and
  every official profile's stated facts to the catalog;
- Fact::name returns the catalog ids.

comline-runtime keeps its wire-name constants as literals, so it depends
on nothing for them; tests/catalog.rs (a dev-dependency) holds each to the
catalog and checks every official encoding has one.
@Kinflou
Kinflou merged commit eae95f4 into main Nov 9, 2026
39 checks passed
@Kinflou
Kinflou deleted the conformance/catalog branch November 9, 2026 15:31
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.

1 participant