Skip to content

v4.0.0

Choose a tag to compare

@github-actions github-actions released this 06 Jun 15:02
· 454 commits to main since this release
  • ci(publish): retry the HF weight fetch (transient 429 throttling) (#349) (31c7847)
  • feat: inference-side anchor channel — make v0.9 anchor models runnable end-to-end (#240) (#348) (c97d709)
  • chore(release): reconcile 4.0.0 — installable closure, DRY versions, drop R2 (#347) (018c8fb)
  • docs(blog): "Which way does a postcode point?" — the anchor's order asymmetry (#346) (ef3b0ab)
  • docs(shift): final night-7 postmortem — demo tier (4 + S38 doc), ES, 22 PRs (#345) (09f1024)
  • feat(corpus): acquire Spain OA data — ES now shard-ready (multi-locale) (#344) (0bb7a4e)
  • feat(demo): containment hierarchy tree view (S35) (#343) (78e600e)
  • docs(demo): S38 service-worker cache — design notes + the cross-origin gotchas (#342) (9b8a50a)
  • docs(shift): finalize night-7 postmortem — arc concluded + demo tier (#341) (2c0b8ce)
  • feat(demo): copy-result-as-JSON button (S40) (#340) (a7131bd)
  • feat(demo): per-stage timing breakdown panel (S37) (#339) (fe1dd34)
  • feat(demo): span-highlight visualizer — tint the raw input by parse confidence (S34) (#338) (a43e56f)
  • docs(eval): record the anchor-fork decision — accept the asymmetry (DeepSeek, delegated authority) (#337) (4e8300f)
  • docs(eval): v0.9.4 dual-injection failed — order-robustness arc concluded (#336) (ca1f3b7)
  • feat(corpus): acquire Italy OA data — IT now shard-ready (multi-locale) (#335) (fda31c0)
  • feat(train): v0.9.4 dual-injection anchor — inject at the postcode AND position 0 (#327) (#334) (837678e)
  • feat(corpus): NL postcode normalization — both orders now build for NL (#333) (079906b)
  • feat(corpus): build-locale-shard streaming reservoir — FR/US-scale CSVs without OOM (#332) (9fee6a5)
  • docs: night-7 shift postmortem (order robustness — corpus lever exhausted) (#331) (41472d5)
  • docs(eval): v0.9.3 region-tail follow-up — the corpus lever is exhausted (#329) (f81f987)
  • feat(corpus): v0.9.3 region-tail — international German renders City, Region Postcode (#328) (03f48c2)
  • docs(eval): v0.9.2 both-order retrain — the anchor and word order fight over German (#326) (24b4958)
  • feat(eval): order-robustness eval harness + anchor-aware per-locale-F1 + commit diag scripts (#325) (82027fb)
  • feat(cli): parse --default-country to scope the resolver (NY → US state, not a foreign homonym) (#324) (86fb18f)
  • feat(corpus): both-order German synthesis + native-order eval asset (order-robustness) (#323) (edbe1f9)
  • docs(eval): anchor pilot finding (#239/#240) (#321) (3172e9f)
  • feat: inference-side postcode-anchor channel — the verdict build (#239/#240) (#322) (7f4269b)
  • feat(train): wire the anchor channel through the data pipeline + curriculum (#239/#240) (#320) (fa140f8)
  • feat(train): gold-span anchor→subtoken alignment for the pilot (#239/#240) (#319) (5753e67)
  • Refine. (b27c496)
  • docs(blog): "The map runs out before the country does" — CJK arena writeup (#314) (83b5b8a)
  • feat(train): postcode-anchor conditioning channel for the de-risk pilot (#239/#240) (#318) (8326a0a)
  • feat(postcode): extend anchor coverage to ES/IT/GB, with GB outward aggregation (#240) (#317) (affe045)
  • eval(postcode): A/B the anchor country posterior — uniform stays, de-biased rejected (#240) (#316) (0748d9d)
  • docs(eval): correct night-6 budget — actual ~$11.55, under cap (false alarm) (#315) (0bbcaf4)
  • Add generated theme. (3237fc7)
  • docs(eval): fold KR coarse resolution + TW-blocked confirmation into night-6 postmortem (#313) (2fd32f2)
  • feat(resolver): KR coarse resolution — point-primary CJK build (#293) (#312) (2d21bb2)
  • train(corpus): bare-street v2 — fix the no-house-number gap (continue-train) (#310) (a1670be)
  • docs(eval): bare-street v2 result (negative) + budget caution (#311) (0c75a8c)
  • docs(eval): night-6 shift postmortem (#309) (3437280)
  • chore(manifest): pin JP CJK sources (admin-jp/kr/tw, postalcode-jp, KEN_ALL) (#307) (774b84e)
  • feat(corpus): bare-street synth shard — the v0.8.0 harness lever (#308) (95eb651)
  • train(config): v0.8.0 calibration candidate — v0.7.2 + label_smoothing=0.05 (#306) (ec2eb19)
  • docs(eval): CJK arena — Japan resolves at 94% with no city polygons (#292) (#304) (cd773b5)
  • feat(resolver): Japan coarse resolution via KEN_ALL name-match (#292) (#303) (4422eb9)
  • feat(normalize): CJK pre-parse normalization — strip 〒, fold full-width (#291) (#302) (bd3eb72)
  • feat(resolver): convention asset — build-from-source, queried on demand (#290) (#301) (f84c908)
  • feat(resolver): Geographic Rule Engine core — convention dispatch (#289) (#300) (7cf07a0)
  • docs(plan): Direction E — the Geographic Rule Engine (epic #288) (#299) (64d35d6)
  • docs(eval): multi-locale coordinate-first resolver report (#287) (4115dbc)
  • eval(resolver): quantify FR/NL coordinate-first PIP-containment (#286) (61618cc)
  • chore(eval): default --wof attaches postcode-locality-intl.db (coord-first on by default) (#285) (0dc7797)
  • feat(resolver): GB + NL coordinate-first + ES/IT/NL admin rebuild + read-only asset (#284) (6b9689d)
  • feat(resolver): generalize postcode→locality to FR + multi-locale shared table (#283) (a015599)
  • feat(resolver): postcode/city conflict flag + falsehoods eval (#276) (#282) (1ab53c3)
  • feat(resolver): coordinate-first locality soft-scoring — DE 77→93% (#275) (#281) (543bc62)
  • feat(resolver): postcode→locality candidate table from source (#274) (#280) (e1d8ecf)
  • eval(resolver): coordinate-first ceiling probe (#274) — hybrid ceiling 93.9% DE (#279) (0a7556a)
  • eval(resolver): PIP-containment metric (#273) — gold point inside resolved WOF polygon (#278) (f51234e)
  • docs(plan): coordinate-first resolver & falsehood-aware reconciliation (#277) (2b40ea7)
  • fix(decoder): hand a trailing postcode over-extension BACK to the city, not to O (#272) (1107aff)
  • PR3 Pilot A: self-conditioning negative result + FiLM ONNX export fix (#271) (fbc43b7)
  • chore(modal): diagnose_corpus takes --corpus-dir + verifies rows pass the filter (#270) (d4a826a)
  • feat(corpus): assemble the DE-inclusive corpus for the PR3 pilot (#269) (30764e4)
  • feat(train): PR3 self-conditioning architecture + Pilot A config (no GPU yet) (#268) (9e64b3b)
  • docs(plan): PR3 — the self-conditioned retrain (plan, not a launch) (#267) (e428d25)
  • docs(blog): humanizer pass — de-stack a tailing negation (#266) (035bab0)
  • docs(blog): "Does a postcode know what country it's in?" (#265) (0ccebba)
  • feat(anchor): system-gate the postcode anchor's street check (PR1 of system-conditioning) (#264) (5e1a41f)
  • feat(codex): add Canada, UK, and Japan address systems (ca/gb/jp) (#263) (ca0d7a5)
  • feat(codex): add the French address system (codex/fr) + wire anchor voie + eval region matcher (#262) (c818ca9)
  • fix(eval): codex-aware region matcher — fold German states to ISO codes (lookupGermanState) (#261) (abf8f36)
  • feat(codex): add the German address system (codex/de) + wire the anchor to it (#260) (aff642b)
  • feat(codex): new @mailwoman/codex package + position-aware postcode anchor (#240) (#258) (6c20605)
  • feat(eval): wire the postcode anchor into the resolver eval (neural+anchor row) (#240) (#257) (1fa4805)
  • feat(postcode-anchor): GeoNames centroid backfill — adds ES/IT, lifts DE, fixes Milan (#240) (#256) (39a479a)
  • docs(reference): add gazetteer/coordinate-source companion section + GeoNames probe (#255) (a69d604)
  • docs(eval): update night-5 postmortem — browser resolver + dual-target (#253) (#254) (3caa9d2)
  • feat(postcode-anchor): browser flat-binary resolver — completes the dual-target (#240) (#253) (dda34d6)
  • docs(plan): mark the postcode anchor shipped in the staged plan (US/NL/FR/DE) (#252) (9002d82)
  • docs(eval): night-5 shift postmortem — the postcode anchor (US/NL/FR/DE) (#251) (7e1bbce)
  • feat(postcode-anchor): add NL (clean 100%-placed locale) + WOF data-quality survey (#240) (#250) (64a77d4)
  • feat(postcode-anchor): opt-in fuzzy (edit-distance-1) typo/OCR tolerance (#240) (#249) (0c407e1)
  • feat(postcode-anchor): ancestor-fallback backfill + centroid-accuracy eval (#240) (#248) (95211f1)
  • feat(postcode-anchor): multi-locale postcode anchor — extractor + gazetteer + soft country posterior (#240) (#247) (9a4dcd8)
  • docs(eval): humanizer pass on the German postmortem + reconcile stale pre-run framing (#246) (f65bcd1)
  • docs(plan): anchor-based parsing & multi-locale architecture direction (#238) (5d86f20)
  • docs(eval): German order-shard result — order learnable, recipe REVERTed (#237) (dd4b7a6)
  • docs(eval): add FR to the multi-locale roadmap (not an order locale) (#236) (388f529)
  • refactor(corpus): locale-generic synthesizer (synthesizeLocaleRow) (#235) (60a0d97)
  • Multi-locale roadmap + multi-script tokenizer scoping (night-shift 2026-06-02) (#234) (f04f6b2)
  • Multi-locale German coverage + eval tooling (night-shift 2026-06-02) (#233) (b13579c)
  • docs(blog): rewrite the remaining clipped contrastive negations (#232) (77da781)
  • docs(articles): house-voice cleanup (concepts + understanding + retrospectives) (#231) (4e05e5a)
  • docs(blog): house-voice cleanup across 13 posts (DeepSeek-reviewed) (#230) (6488ae2)
  • fix(train): support-aware val F1 + honest blank charts + dashboard legend (Layer 1) (#228) (71ce3fc)
  • fix(decoder): repair fragmented multi-word locality spans (Saint Paul → one span) (#226) (d756bd3)
  • fix(publish): correct FST filename casing in HF-bucket publish (BCP-47) (#225) (a8d6e5a)
  • docs: two-scoreboards retrospective + blog post (neural vs rules parsing) (#224) (137e344)
  • eval(v0.8.1): MLM decisive round — verdict DROP pretraining (no ceiling benefit) (#223) (b6f6bdf)
  • eval(resolver): gazetteer-alias locality matching + per-row failure dump (#222) (0e9f698)
  • chore(train): v0.8.1 decisive-round fine-tune configs (100k, v0.7.2 recipe) (#221) (f931bfa)
  • fix(train): _shard_paths — prefer valid manifest paths, re-root only stale ones (#220) (6541ec4)
  • chore(train): v0.8.0 fine-tune A/B configs (pretrained-init vs scratch) (#219) (0d73c42)
  • fix(train): re-root MANIFEST shard paths under corpus_dir (portability) (#218) (749b31e)
  • chore(train): v0.8.0 MLM pre-training config (#217) (ef4407e)
  • feat(train): MLM self-supervised pre-training mode (#216) (4bc8267)
  • docs(eval): reframe OA eval intro as the neural-vs-Pelias head-to-head (#215) (169253f)
  • feat(eval): neural-vs-Pelias-parser head-to-head on OA + self-reporting (#214) (06966d8)
  • feat(decoder): AddressTree.system + per-system containment indirection (#213) (b8302f2)
  • fix(eval): correct OA eval numbers (96.1% loc / p50 2.4km — were fabricated) (#212) (831b263)
  • feat(eval): OpenAddresses real-point resolver eval (non-circular accuracy) (#211) (b5d4d42)
  • feat(resolver): exact-match tiering + parent fallback (+8.5pp Acc@1) (#209) (11b00b4)
  • docs(plan): self-supervised pre-training experiment spec (MLM/ELECTRA vs CLM) (#210) (cc5592c)
  • docs(eval): harness is v0-lineage — reframe to the resolver scoreboard (#208) (d050848)
  • feat(train): optional Trackio experiment tracking → HF Space dashboard (#207) (8b5e747)
  • feat(resolver): Direction C Phase 1 — resolver country+abbrev fixes, postcode shard, e2e eval (#205) (69487b5)
  • fix(docs): escape bare {address, lat/lon} in plan doc — fixes red Docs build on main (#206) (70fdab6)
  • parser: unit-repair pass + parser-improvement backlog (#201) (4d45e66)
  • feat(eval): third capability arena — labeled postal-standards edge cases (#200) (08bbf09)
  • docs(eval): v0.7.2 intersection-bare eval — EXPERIMENTAL verdict (#202) (b96ad3e)
  • docs(plan): resolver routing + end-to-end eval — Direction C plan (#203) (f79c370)
  • chore(wof): canonical custom-built gazetteer — delete off-the-shelf, reproducible rebuild (8057a8b)
  • feat(eval): corpus-perturbation neutral arena — the vindication result (f6ee9b3)
  • feat(eval): libpostal cross-architecture benchmark + --symmetric-match (513203c)
  • data(eval): harvested external validation corpora + survey (4d08d3c)
  • feat(corpus): v0.7.2 — bare intersections + @ connector (eb02bc2)
  • test(pipeline): update safeClassify assertion for postcode-repair default-on (1363e02)
  • docs(blog): "The model that never saw an intersection" — v0.7 discoveries (2850442)
  • fix(modal): vol.reload() so train/diagnose see post-deploy shard additions (36c0a31)
  • feat(pipeline): postcode repair on by default (operator-signed, #35) (3901fed)
  • chore(eval): refresh golden v0.1.2 MANIFEST counts/shas (operator-signed) (94893ae)
  • feat(corpus): intersection shard-build script + export generator (06d69b8)
  • feat(corpus): intersection synthesizer — close the #1 harness coverage gap (a3236b0)
  • test(decoder): unit tests for #37 tree-validity checker (b894ac7)
  • test(neural): unit tests for #35 postcode repair (7e0ed88)
  • docs(eval): product-level confirmation — neural lags rule-only at hybrid level (647f333)
  • fix(neural): resolveWeights drops model-card on explicit paths → STAGE3 evals empty (2c4c55e)
  • docs(eval): intersection root-cause — corpus gap, not decode bug (a519f23)
  • docs(eval): harness ceiling analysis — release metric is coverage-bound (369c7bb)
  • docs(eval): night-3 postmortem — calibration gate result + iteration-2 config (30e2099)
  • feat(eval): #33 step 2 — lexical-feature locale detection probe (51c1932)
  • feat(eval): #33 locale-gate baseline + #31 push-button gate runner (ae77c89)
  • feat(decoder): #37 — AddressTree structural-validity checker (ce21571)
  • feat(eval): target arbitrary model + postcode-repair in eval harnesses (60a4d94)
  • feat(train): #31 — v0.7.0 calibration config (label_smoothing=0.1) (66f2129)
  • feat(neural): #35 — deterministic postcode regex repair pass (e34684e)
  • feat(eval): #34 — deterministic 90/10 dev/test split of golden v0.1.2 (132949a)
  • fix(docs): unblock docs-build CI — escape MDX <digit, repair links, define tags (c819fe6)
  • Format. (6f8ea75)
  • feat(eval): postcode-only harness + v0.6.x retrospective and v0.7 plan (d030473)
  • feat(eval): postcode-only harness + v0.6.x retrospective and v0.7 plan (fc7dda0)
  • docs(evals): v0.6.3 step 100K — HOLD, dilution mechanism confirmed (283f611)
  • feat(viz+docs): per-tag F1 charts + containment-and-tree-projection sub-article (e103d4a)
  • docs(concepts): three bite-size architecture sub-articles (00f35eb)
  • docs(viz): embed v0.6.x training curves into eval + concept docs (3032b5a)
  • feat(train): v0_6_4-rebalance-no-street — counter dilution (02d29bc)
  • feat(scripts): verify-shard-acks gates training on lint acknowledgment (61fa475)
  • feat(scripts): training visualization (log parse + SVG line chart) (4e43970)
  • chore(scripts): eval-v062-checkpoint accepts output-dir tag arg (35a5784)
  • docs(concepts): how-the-model-reasons + corpus-poisoning-vulnerability (6acdfa6)
  • feat(scripts): corpus linter v1 — catches "5th Avenue Theatre" class of failures (0f43f01)
  • docs(evals): v0.6.2 step 100K eval — HOLD per gate, v0.6.3 addresses the gap (a93b2e0)
  • feat(train): v0_6_3-house-venue training config (a73e651)
  • feat(scripts): --source-name flag on both shard builders (c35dadf)
  • feat(corpus): v0.6.3 prep — filter venue pool + synth-house-venue companion shard (a6a6223)
  • investigate(eval): confidence distribution probe — both runs equally overconfident (893625a)
  • chore(scripts): eval-v062-checkpoint defaults to --stage3-fold (38aa01c)
  • feat(eval): Stage-3-aware fold + v0.6.2b half-weight parallel run (ab6bdbc)
  • eval(falsehoods): catalog expansion — postcodes + numbers/format/hierarchy rows (76f57b3)
  • chore(scripts): v0.6.2 model-card template (b8c3343)
  • feat(scripts): v0.6.2 checkpoint eval pipeline (b6f4679)
  • docs(evals): fp32-CRF diagnostic — PASS verdict (45b89e4)
  • feat(train): v0_6_2-stage3-rebalance training config (831b526)
  • feat(train): crf_fp32 diagnostic flag + small training config (839e6db)
  • feat(scripts): extract-tuples-de-gb for v0.6.2 bilingual no-street shard (00549da)
  • feat(eval): 2D pre-publish eval gate + structured JSON output (51b7034)
  • feat(corpus): synth-no-street counter-example shard for v0.6.2 retrain (8d22415)
  • eval(falsehoods): catalog falsehoods-streets.md cases as 22 structured eval rows (497bd65)
  • eval(neural): v0-vs-neural harness — honest assessment finds 14.4% pass (b03b13a)
  • eval(neural): Layer 1 morphology FST against v0.6.1 — decoder-only fix is insufficient (30349d5)
  • feat(neural): street-morphology emission prior + ParseOpts wiring (7b61743)
  • feat(resolver): street-morphology FST builder (Layer 1 infrastructure) (efc6f2e)
  • docs(concepts): WOF hierarchy gap + four-layer street-supplement architecture (6084805)
  • fix(corpus): synth-street test no longer asserts components.country (94b19ed)
  • Add wof graph command for node-link JSON output. (1881dc2)
  • Flesh out WOF diagram support. (be43fc4)
  • Flesh out design. (78b14cc)
  • Fix loading. (98944c8)
  • Flesh out demo clean up. (fd9c023)
  • feat(skills): scaffold /night-shift skill (6cadf68)
  • feat(skills): scaffold /night-shift skill (2d17725)
  • Format. (23948b5)
  • Ignore Claude worktrees. (f2f887f)
  • docs: night shift 2026-05-28 postmortem (a0ca1a3)
  • Format. (801b441)
  • docs: promote FST gazetteer prior concept to a full article (1ef0e5e)
  • docs: v0.6.1 error analysis — experimental release with mixed results (a755d28)
  • feat(corpus): street-decomposition synthesizer for v0.6.1 (e33dc56)