Skip to content

Terminology

Date: 2026-03-18 Status: Accepted; updated by the 2026-06-12 correspondence-first migration

Context

Binoc introduces a number of domain-specific terms. This ADR catalogs the deliberate choices and documents the rejected alternatives so that contributors and plugin authors understand the vocabulary.

Decisions

Core Objects

Chosen term Meaning
Snapshot A set of files representing a dataset's state at a point in time.
Changeset The stored finalized IR: a structured description of how one snapshot differs from the next. A tree of diff nodes. Chosen over migration (strongly implies an executable transformation — database migrations are scripts you run — but binoc changesets are descriptive records, not replayable operations), diff (already overloaded: verb, command name, DiffNode), delta (precise but abstract for user-facing contexts), patch (implies applicability, same problem as migration).
Changelog A human-level summary rendered from changesets.

Program Components

Superseded in part by 2026-06-12-correspondence_first_engine.md. Comparator and Transformer remain useful compatibility and author-facing terms, but the current engine's primary phases are correspondence rule families: expand, parse, pair, write edits, compact, annotate projection, and render.

Chosen term Meaning
Controller The type-ignorant host that creates a run, drives the correspondence engine, and renders or extracts results.
Comparator Compatibility/author-facing role for rules that parse or expand source data. In the current engine this usually maps to expand rules, parse rules, pair rules, and writers.
Transformer Compatibility/author-facing role for rules that optimize or annotate the result. In the current engine this usually maps to compaction rules, projection annotators, and renderers.
Correspondence rule One rule registered with the correspondence engine: expand, parse, pair, writer, compaction, or projection annotation.
Renderer A plugin that renders changesets into a presentation format.
Porcelain (for the CLI) Borrowed from git's terminology: the CLI is a user-facing layer over the library.

IR Fields

Chosen term Meaning
Intermediate Representation (IR) The tree of diff nodes that represents the changes between two snapshots.
action Open enum describing what happened: "add", "remove", "modify", "move", "reorder", etc. Chosen over kind (ambiguous alongside item_type — both read as "type of something").
item_type Human-readable label describing what the item is: "directory", "file", "tabular", "zip_archive", etc. Used by renderers for fallback descriptions (e.g. "File modified", "New tabular"). It is a projected fact, not a core scheduling key.
tags An open bag of semantic strings attached to projected diff nodes by rule packs.
details Structured payload on a projected diff node.
annotations Renderer/plugin metadata on a projected diff node.
summary Optional human-readable one-liner describing a change, set during projection.

Comparison Mechanics

Superseded in part by the correspondence-first engine ADR. The terms below are historical or compatibility vocabulary unless otherwise noted.

Chosen term Meaning
Item pair Compatibility vocabulary for two source items: left item (old) and right item (new), either side potentially absent. The correspondence engine stores side items separately and links them.
left / right The two sides of a comparison or correspondence link.
Link A correspondence between one left item and one right item.
Evidence An open-vocabulary string explaining why a pair rule proposed a link.
Edit list The open-vocabulary edits emitted by a writer for one link before projection.
Claim (verb) Historical comparator-dispatch vocabulary; in the current engine, rules propose links or emit artifacts/edits instead of claiming the whole comparison.
Expand / Leaf Historical comparator-output vocabulary. Expand remains a rule family; leaf output is now represented by parsed artifacts, writer edits, and projection.
Logical path The user-meaningful path within a snapshot, including interior paths like "archive.zip/data/file.csv".

Significance Classification

Superseded in part by 2026-06-02-renderer_groups.md for the current Markdown grouping model and the removal of shipped default headings.

Chosen term Meaning
Clerical Changes that are mechanically necessary but semantically unimportant: column reordering, whitespace normalization, encoding changes. Chosen over ministerial (precise in records management but unfamiliar to most developers), minor/trivial (judgmental), cosmetic (implies visual concerns).
Substantive Changes that alter the information content: added columns, removed rows, schema changes.

Note: these were the original category names used in the Markdown renderer design. They are not baked into the IR. Current renderer config uses explicit ordered groups with literal headings.

Testing

Chosen term Meaning
Test vector A self-contained directory with two snapshots, a manifest, and optional expected output, exercising one capability.
Gold file An optional expected-output file in a test vector, checked by exact comparison.

Other

Chosen term Meaning
Open enum / open bag The extensibility model for action, item_type, and tags — plugins can define new values without modifying core types.
Plugin pack A distribution unit of comparators, transformers, and renderer configs (e.g. biobinoc).
Standard library / stdlib The built-in plugin pack (binoc-stdlib).