Repository navigation
0.7.6: plates data refresh — France dimensioned + AD/DE/PT settlements - #2
Merged
Merged
Conversation
…+ the AD/DE/PT settlements since 0.7.4 (#283-#286)
rameerez
added a commit
that referenced
this pull request
Oct 10, 2026
…'s own rank, dataset 2026.10.0 (#5) * 0.7.8: typo-tolerant make lookup + top_models(country:) by the country's own rank + dataset 2026.10.0 - Vehicles.make / models / find: bounded Levenshtein fallback after exact, alias and slug matching (1 edit for 4-5 chars, 2 from 6, none under 4), unique-best only — two equally close makes return nil ("Acra": Acura/Acma). "marcedes" -> Mercedes-Benz, "volkswagon" -> Volkswagen. fuzzy: false opts out; both validators are exact-only. find runs its exact pass first, so no 0.7.7 answer changes. - Model#country_ranks / #rank_in; top_models(country:) sorts by that rank (unranked-there after, global order; data without the key = 0.7.7 order). - Bundled snapshot 2026.07.4 -> 2026.10.0 via new rake "data:refresh[tag]", which merges country_ranks from the same tag's catalog/ (asserts equality once the projection ships the key natively — vehiclesdb-pipeline emit). Co-Authored-By: Claude Opus 5.5 <[email protected]> * Fuzzy make: reject out-of-budget distances; forward fuzzy: through models/model/model_options Codex review findings (both P2, both applied): - Fuzzy.unique_closest accepted a lone length-compatible key at limit + 1 (`best` starts there): Vehicles.make("z" * 28) returned Saxas Nutzfahrzeuge Werdau. Now gated on the limit; regression test added. - models / model / model_options changed behaviour through make() but could not take the exact-only opt-out; they now accept and forward fuzzy:. Co-Authored-By: Claude Opus 5.5 <[email protected]> * README: one parenthetical for the register list Co-Authored-By: Claude Opus 5.5 <[email protected]> * Fuzzy make: a candidate may not have fewer words than the query Found by the DEVQ A1 resolver sweep: "volvo v" is two edits from "volvo", so in find's fuzzy pass the make prefix swallowed the model's letter and "Volvo V 60" resolved to Volvo "60" (same for "Mercedes-Benz B 180" -> "180"). Word-deleting matches are now rejected; same-word-count typos ("marcedes benz") and fewer-words queries ("DeLorean" -> "De Lorean") still resolve. Regression test added. Co-Authored-By: Claude Opus 5.5 <[email protected]> * Fuzzy make: every word keeps its first letter Found by the DEVQ A1 parity run through the web resolver's longest-prefix loop: "citroen e" is two edits from "citroen ds", so "Citroën e-C3" became Citroën DS C3 (and "peugeot e"/"volkswagen e" pulled e-5008 / e-Up onto the ICE ids before the word-count rule). Word-for-word initials must now agree. Parity: 1,255 A1 sweep queries resolve identically to production 0.7.7. Co-Authored-By: Claude Opus 5.5 <[email protected]> * Apply Opus I-11 verifier findings (PASS-WITH-FIXES at d1263f9) 1 (P2) Fuzzy.distance is now optimal string alignment: an adjacent swap is one edit, so "telsa" ties Tesla/Temsa -> nil instead of confidently Temsa (also "seta" no longer -> Setra). Early exit checks two rows. 2 (P2) the configured other_label never fuzzy-matches ("Otra" -> Ora broke models(other_label, include_other: true)). 4 (P3) MCP top_models note describes the per-country order. 5 (P3) README rank_in example (the Corolla is gb #51; use the Golf, #2); remaining "14 countries" -> 15, South America added. 6 (P3) README: ranks are per kind; us/ca cars have no ranks (global order). 7 (P3) README + CHANGELOG document the word-count / first-letter / swap guards. 8 (P3) data:refresh accepts refs/tags only; array-form git calls. 3 (P2, web) is filed for the coordinator: resolver.rb rung 3 should run an exact pass (fuzzy: false) before a fuzzy one and label typo hits. Co-Authored-By: Claude Opus 5.5 <[email protected]> * README model count ~15k; data:refresh reads at the verified commit (verifier P3 nits) Co-Authored-By: Claude Opus 5.5 <[email protected]> * mass_decile reader + top_models(by:), never fuzz id/slug/path input, exact MCP tools, CI lint green Coordinator additions (STRETCH 2026-10-10): - Model#mass_decile (popularity.mass_decile, data 2026.10.1+, pipeline#255, ruling R3), nil-safe on the bundled 2026.10.0; top_models(by: :mass_decile) (unranked excluded; :global_decile stays the default); README separates the two questions. - Web-session requirement (verifier-grade): fuzzy never fires on input containing "/" or slug-shaped ("marcedes-benz"): "marcedes-benz/c-class", "/makes/marcedes", "car/marcedes-benz/c-class" -> nil, as in 0.7.7. Human names ("Marcedes-Benz C-Class", "marcedes") still resolve. MCP tools (search_makes, get_model) exact-only. Tests pin every case. - CI: Ruby 3.4/rails_8.0 Lint job failed on main too (111 inherited offenses); frozen in .rubocop_todo.yml (generated, no code change); lib/vehicles/plates/series.rb added to .rubocop.yml's own ClassLength Exclude (it overrides the todo). Ruby 3.3/rails_8.0 failure was a rubygems.org network error during bundle install (re-run). Co-Authored-By: Claude Opus 5.5 <[email protected]> * Delta verifier fixes (PASS-WITH-FIXES at c16818d): every machine shape stays exact F1 (P2) Fuzzy.eligible_input? also rejects Symbols, any of / _ + \, leading/ trailing/double hyphens and UPPER-case hyphenated slugs — each fuzzed for every typo (:marcedes_benz, "MARCEDES-BENZ", "marcedes+benz", …); 0.7.7 returns nil for all. Mixed case ("Marcedes-Benz") and plain words still fuzz. Tests pin the verifier's full list. F2 (P3) CHANGELOG upgrade note: single-word route params still fuzz. F3 (P3) Model#mass_decile never raises on a non-Hash popularity. F4 (P3) docs: by: with country (rank first), to_h :mass_decile, 110+1 frozen. Manager re-check: 223 runs 0F/0E/0S; rubocop rc=0; 30,643 make+find queries vs 0.7.7 code on the same 2026.10.0 data: 0 changed, 0 lost. Co-Authored-By: Claude Opus 5.5 <[email protected]> --------- Co-authored-by: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Data-only release via
rake plates:refresh(PROVENANCE pinned to1b5ffaa):design.plateon nine series, two-line carplate_variants; nine photographic settlements (bar tirets, no diplomatic euroband, art. 9 licence route).Gem suite: 190 runs, 0 failures.
🤖 Generated with Claude Code