Skip to content

Vintage-audience benchmark vector + ADR#118

Merged
jcushman merged 3 commits into
mainfrom
vintage-benchmark-vector
Jun 29, 2026
Merged

Vintage-audience benchmark vector + ADR#118
jcushman merged 3 commits into
mainfrom
vintage-benchmark-vector

Conversation

@jcushman

Copy link
Copy Markdown
Collaborator

What

A kept, passing benchmark for binoc's latent vintage audience — readers comparing two editions of the same published dataset who care about schema and vocabulary changes, not the bulk cell/row churn. This ships no feature; it pins "what great looks like" and proves the engine is ready, while we keep our focus on the same-data audience.

  • test-vectors/csv-vintage-benchmark/ — a two-CSV "published dataset" across two editions. facilities.csv gains a region column and one row's status moves to a new category (decommissioned); inspections.csv changes only in its data.
  • The markdown groups config models the vintage stance as significance. Because classify_tags promotes a node to its highest-priority group, the schema-touching facilities.csv floats up to "Schema & vocabulary changes" and the pure-data inspections.csv sinks to "Bulk data updates" — pure config, no controller involvement.
  • expected-output/changelog.snap is the real, harness-checked engine output. VINTAGE-IDEAL.md is the hand-authored target (not harness-checked), so the gap stays visible and the test stays green.
  • docs/adr/2026-06-22-vintage_audience_and_metadata_only_benchmark.md records the rationale.

The gap to the ideal (all reachable without engine/IR changes)

  1. Within-node keep/drop — surface a CSV's column-add while holding its cell edits back. Renderer-local; EditProjection.visible already exists but only writers set it. Smallest unlock.
  2. Vocabulary as first-classactive → decommissioned is a plain binoc.cell-change today; a plugin EditListWriter could diff per-column distinct-value sets and emit binoc.vocabulary-change.
  3. Summary statistics — a one-line "4 → 6 rows, 3 cells changed" via Edit::with_summary/GlobalClaim instead of enumerating the churn.

Notes

  • Full vector suite passes (INSTA_UPDATE=no cargo test -p binoc-stdlib --test test_vectors); no other snapshots touched.
  • Deliberately not building the unlocks here — nail the same-data experience first. There's adjacent parallel work on branches auto/md-groups-* and auto/stat-binary-metadata-only worth coordinating with before anyone implements gap Plugin-based binoc implementation #1.

(Auto generated pull request)

jcushman added 3 commits June 16, 2026 16:40
…e helper

Split run_inner's two large post-loop blocks into build_edit_lists and
compact_edit_lists, and collapse the repeated fire-counter/FireEvent
bookkeeping into RunStats::record_fire. Pure mechanical extraction;
behavior unchanged (core + vector suites green).
Replace the positional (u8, u32, ArtifactFormat[, String]) parse/decline
memoization tuples with named ParseClaim/Decline structs (+ side_code and
ParseClaim::declined_by helpers), and collapse the three duplicated
LinkCtx constructions into a single link_ctx() helper. Behavior unchanged
(core + vector suites green; clippy clean).
A kept, passing benchmark for the vintage (different-edition) reader who
cares about schema and vocabulary, not bulk cell/row churn. The markdown
groups config models the vintage stance as significance, so a
schema-touching file floats above pure-data files. expected-output is the
real engine output; VINTAGE-IDEAL.md is the hand-authored target.

Records that the engine does not foreclose the vintage audience: the gap
to the ideal is one renderer-local keep/drop filter plus one plugin pack
(vocabulary + statistics), with no change to the controller, IR, or
correspondence engine. See docs/adr/2026-06-22.
@jcushman jcushman merged commit 0e89d64 into main Jun 29, 2026
9 of 10 checks passed
@jcushman jcushman deleted the vintage-benchmark-vector branch June 29, 2026 17:07
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