Release · v3.4.0
PyEDCR example suite + multi-dataset explainer
feat(v3): PyEDCR example suite + multi-dataset explainer
Details
Two new real HMC examples join the paper's Military Vehicles walkthrough, switchable live in the explainer: - CIFAR-100 (canonical HMC: official 20-superclass taxonomy; 9 fine classes across aquatic_mammals / fish / flowers) — predictions from two logistic heads on 8×8 RGB pixels of a 936-image slice pulled from the fast.ai mirror. The rules recover the textbook exclusions on their own: dolphin ⋢ fish, shark ⋢ aq-mammal. - 20 Newsgroups (text HMC: hierarchy from the group names; 7 groups across comp / sci / soc / talk) — tf-idf + logistic heads on a 945-post slice of the by-date archive (figshare, sklearn's source), headers stripped. The classic soc.religion.christian / talk.religion.misc border confusion emerges naturally. pyedcr-examples/ is the staging copy of the PyEDCR repo's examples/ dir: per-dataset download_mini.py (slices a tiny portion of the source) and make_mini_example.py (trains the small per-granularity heads, curates a 16-train/5-test table of REAL predictions, validates: ≥2 rules over the F1 floor, 100%-precision recovery, a flaggable error and a hierarchy- consistent miss in the test rows — generation fails loudly rather than invent a row), a shared edcr_mini.py implementing the same RatioDetRuleLearn the browser runs, schema.md, and push_to_pyedcr.sh to land it all in the PyEDCR repo as examples/ (this session has no push access to that repo). The widget now sources examples from the PyEDCR repo when it carries the suite (raw.githubusercontent, lab-v2 then krichelj), falling back to the copy committed under assets/edcr-examples/. Military stays embedded for instant paint. All captions, headers, the Recover bipartite graph and the honest-limit annotation are dataset-driven; the Retrain phase shows the paper's Table-2 numbers, clearly attributed to the military benchmark when another dataset is on stage. Tests: 38 (was 22) — every shipped example JSON is re-validated through the compiled widget core: schema, hierarchy consistency, learnability, recovery precision, flagged + consistent-miss test rows, and embedded- vs-exported military equality.
Files changed (22)
| .gitignore | +4 | −0 |
| frontend/client/tests/edcr-core.test.mjs | +64 | −2 |
| frontend/client/ts/effects/edcr-core.ts | +81 | −0 |
| frontend/client/ts/effects/neurosymbolic-explainer.ts | +175 | −59 |
| frontend/jekyll/_includes/v3/explainer.html | +14 | −6 |
| frontend/jekyll/_sass/v3/_explainer.scss | +43 | −0 |
| frontend/jekyll/assets/edcr-examples/cifar100.json | +312 | −0 |
| frontend/jekyll/assets/edcr-examples/military-vehicles.json | +287 | −0 |
| frontend/jekyll/assets/edcr-examples/newsgroups.json | +321 | −0 |
| pyedcr-examples/README.md | +70 | −0 |
| pyedcr-examples/cifar100/download_mini.py | +83 | −0 |
| pyedcr-examples/cifar100/make_mini_example.py | +133 | −0 |
| pyedcr-examples/common/edcr_mini.py | +318 | −0 |
| pyedcr-examples/common/schema.md | +46 | −0 |
| pyedcr-examples/military_vehicles/make_mini_example.py | +101 | −0 |
| pyedcr-examples/newsgroups/download_mini.py | +84 | −0 |
| pyedcr-examples/newsgroups/make_mini_example.py | +150 | −0 |
| pyedcr-examples/push_to_pyedcr.sh | +46 | −0 |
| pyedcr-examples/requirements.txt | +3 | −0 |
| pyedcr-examples/web/cifar100.json | +312 | −0 |
| pyedcr-examples/web/military-vehicles.json | +287 | −0 |
| pyedcr-examples/web/newsgroups.json | +321 | −0 |