Skip to content

v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Sep 14:04
· 837 commits to master since this release

[0.2.0] - 2026-09-14

🚀 Features

  • (kermit-bench) Move tuple generators into generation module
  • (kermit-bench) Add graph generation stub with GraphModel enum
  • (kermit-bench) Add exponential and factorial benchmark configs
  • (kermit) Add SpaceMeasurement module for Criterion space benchmarks
  • (kermit) Add bench suite subcommand for running named benchmark workloads
  • (bench) Replace synthetic benchmarks with cloud-based YAML system
  • (bench) Support multiple named queries per benchmark
  • (bench) Add list subcommand to show available benchmarks
  • (bench) Add Oxford .tbl to Parquet conversion script
  • (bench) Add Oxford DSI benchmark definitions
  • (algos) Add SingletonTrieIter for Const-view rewrite
  • (algos) Add TrieIterKind dispatch enum
  • (algos) Add const_rewrite for paper-canonical atom filtering
  • (kermit) Wire Const-view rewrite into DatabaseEngine::join
  • (watdiv) Preprocessor dictionary builder
  • (watdiv) Preprocessor predicate partitioner
  • (watdiv) Preprocessor SPARQL → Datalog translator
  • (watdiv) Preprocessor YAML emitter and end-to-end driver
  • (watdiv) Preprocessor emits expected.json from .desc files
  • (watdiv) Add generic-workload driver (sparql-preprocess CLI)
  • (watdiv) Add stress-100/1000 benchmark YAMLs
  • (kermit) Wire SpaceMeasurement through bench ds + bench run
  • (kermit) Unified bench metadata writer + BytesFormatter integration
  • (kermit) Add --report-json channel for bench subcommands
  • (kermit) Tighten bench output and CLI surface
  • (kermit-rdf) Scaffold crate with empty stub modules
  • (kermit-rdf) Add RdfError enum
  • (kermit-rdf) Add RdfValue enum
  • (kermit-rdf) Add streaming N-Triples parser
  • (kermit-rdf) Add Dictionary type
  • (kermit-rdf) Add predicate sanitization
  • (kermit-rdf) Add triple partitioning by predicate
  • (kermit-rdf) Add Parquet writers for dict + relations
  • (kermit-rdf) Add SPARQL parser wrapper
  • (kermit-rdf) SPARQL→Datalog translator with golden tests
  • (kermit-rdf) Emit BenchmarkDefinition YAML
  • (kermit-rdf) Harvest watdiv .desc cardinalities into expected/ CSVs
  • (kermit-rdf) Add TempStagingDir for watdiv driver
  • (kermit-rdf) Driver invokes watdiv -d/-s/-q
  • (kermit-rdf) Driver entry point and DriverInputs
  • (kermit-rdf) Pipeline orchestrator and meta.json schema
  • (kermit-rdf) Vendor watdiv binary + support files
  • (kermit-bench) Discovery walks workspace + cache roots
  • (kermit) Add bench watdiv-gen subcommand
  • (kermit) List/fetch/run walk workspace + cache roots
  • (kermit) Drop criterion auto-plot rendering
  • (kermit) Bump bench-report schema to v2 with axes map
  • (kermit-plot) Add python plotter for bench reports
  • (kermit) Always write json bench report
  • (kermit-lab) Add DataFrame loading API
  • (kermit-lab) Plot functions return Figure; CLI is a thin wrapper
  • (kermit-lab) Add summary, compare, and stats functions
  • (kermit-rdf) Add lubm benchmark generation pipeline
  • (kermit) Add bench lubm-gen subcommand
  • (kermit) Add declarative generator yaml for bench run
  • (kermit) Sweep --indexstructure and --algorithm via 'all' selectors
  • (kermit-lab) Scaffold full-timeline notebook with prereq cells
  • (kermit-lab) Notebook phase 1 — bench gen lubm
  • (kermit-lab) Notebook phases 2-3 — bench run time and space
  • (kermit-lab) Notebook phase 4 — load reports into DataFrame
  • (kermit-lab) Notebook phases 5-6 — plots + outro
  • (kermit-lab) Bar_queries accepts multi ds/algo with stacked layout
  • (iters) Add hash_attribute for hash-trie iterator family
  • (iters) Add HashTrieIterator trait
  • (iters) Add HashTrieIterable trait
  • (iters) Re-export HashTrieIterator family from crate root
  • (ds) Scaffold HashTable primitive
  • (ds) HashTable::get/get_mut with linear probing
  • (ds) HashTable::entry_or_insert_with (pre-resize)
  • (ds) HashTable resize on load factor > 0.7
  • (ds) HashTable::iter over occupied buckets
  • (ds) HashTrieNode recursive enum
  • (ds) HashTrie struct + Relation::new
  • (ds) HashTrie::insert via recursive insert_at
  • (ds) HashTrie::from_tuples and insert_all
  • (ds) HashTrie::collect_tuples for projection and tests
  • (ds) HashTrie HeapSize impl
  • (ds) HashTrie Projectable impl
  • (ds) HashTrieIter scaffolding with open
  • (ds) HashTrieIter::{key,next,at_end,size}
  • (ds) HashTrieIter::lookup with HashTable::index_of
  • (ds) HashTrieIter::up
  • (ds) HashTrieIter::leaf_tuples
  • (ds) HashTrie HashTrieIterable impl
  • (ds) Expose HashTrie via IndexStructure and crate root
  • (algos) SingletonHashTrieIter skeleton
  • (algos) SingletonHashTrieIter::leaf_tuples
  • (algos) HashTrieIterKind dispatch enum
  • (algos) Hash_triejoin query indexing helpers
  • (algos) Verify_and_construct for leaf-level emission
  • (algos) Enumerate + emit_leaf — Algorithm 3 verbatim
  • (algos) HashTriejoin entry point
  • (cli) Add HashTrie/HashTriejoin to selectors
  • (cli) IndexStructureSelector::supports_algorithm
  • (cli) Hash_join free function for HashTrie family
  • (cli) Wire HashTrie + HashTriejoin into bench dispatch
  • (iters) Add optimization trait family
  • (iters) Add HashStrategy trait + Sip/FxHash strategies
  • (ds) Implement HasOptimizationAxes on HashTrie
  • (cli) Add HasherChoice and LayoutChoices CLI scaffolding
  • (cli) Bench-report axes include ds_layout_hasher
  • (rdf) Vendor WatDiv Basic Testing query templates (L/S/F/C)
  • (bench) Add watdiv-basic GeneratorSpec variant
  • (rdf) Add drive_basic for the WatDiv Basic Testing workload
  • (rdf) Add run_basic_pipeline; parameterize process_artifacts meta kind
  • (cli) Dispatch watdiv-basic generator to run_basic_pipeline
  • (bench) Add watdiv-basic and watdiv-stress-default benchmarks
  • (kermit-lab) Add optimization-axis defaults registry
  • (kermit-lab) Wildcard-wide optimization-axis ingest in loader
  • (kermit-lab) Column-aware colour/marker/linestyle + HashTrie colour
  • (kermit-lab) Aesthetic-map encoding + scalar series resolution
  • (kermit-lab) Bar + line geom drawers
  • (kermit-lab) Facet grid + shared-legend helper
  • (kermit-lab) Kl.plot entry point (bar + line)
  • (kermit-lab) Scatter + violin geoms and tradeoff metric-x path
  • (kermit-lab) Presets over the general plot engine
  • (kermit-lab) Rewire public API to engine + presets
  • (kermit-lab) Preset-based render-all with ablation auto-discovery
  • (kermit-lab) General plot subcommand + preset routing in CLI
  • (bench) Add lubm-reference declarative benchmark
  • (kermit-lab) Reference notebook — preflight and profile knob
  • (kermit-lab) Reference notebook — correctness phase
  • (kermit-lab) Reference notebook — benchmark sweep phase
  • (kermit-lab) Reference notebook — load phase
  • (kermit-lab) Reference notebook — comparison figures
  • (kermit-lab) Reference notebook — statistical analysis
  • (kermit-lab) Reference notebook — summary and outro
  • (kermit-ds) Cardinality trait with O(1) TreeTrie tuple counter
  • (kermit-ds) ColumnTrie Cardinality impl via matched-existing insert signal
  • (kermit-ds) HashTrie Cardinality impl (multiset stored-tuple count)
  • (kermit-algos) Optimiser module with shared query analysis (hoisted from build_variable_index)
  • (kermit-algos) QueryPlan with validation and rank-parameterised topological ordering
  • (kermit-algos) QueryOptimiser trait, CatalogStats, LexicographicOptimiser default
  • (kermit-algos) CardinalityOptimiser — smallest-relation-first variable ordering
  • [breaking] JoinAlgo::join_iter consumes a QueryPlan; engine plans via QueryOptimiser
  • (cli) --optimiser flag on join/bench join/bench run with 'optimiser' report axis
  • (bench) Add end-to-end metric timing build + K queries per sample
  • (bench) Let a benchmark commit its relation file via path:
  • (ds) Add HashTrieConfig with the singleton_pruning flag
  • (ds) Add ConfigurableRelation and carry HashTrieConfig on HashTrie
  • (ds) Singleton pruning at HashTrie build time (paper Fig. 5)
  • (ds) Emulate pruned levels in HashTrieIter with singleton frames
  • (ds) Add Configured<R, P> to lift a Config value to a type for test suites
  • (kermit-lab) Back-fill ds_config_singleton_pruning=false for pre-Config reports
  • (kermit) Carry HashTrieConfig on the HashHtj execution cell
  • (kermit) Add --ds-config with singleton-pruning for hash-trie benches
  • (ds) Add the PruningPolicy Layout markers with an uninhabited off payload
  • (ds) Make the HashTable load-factor cap a HashTrieConfig value (ds_config_load_factor)
  • (kermit-lab) Ds_layout_pruning and ds_config_load_factor defaults; fixtures name real axes
  • (kermit) Accept --ds-config load-factor and report ds_config_load_factor
  • (ds) [breaking] Singleton pruning becomes the P Layout parameter of HashTrie (ds_layout_pruning)
  • (kermit) [breaking] --ds-layout-pruning and the hasher × pruning Layout dispatch
  • (kermit-ds) Add IndexStructure::axis_value as the pinned identity label
  • (kermit-algos) Add JoinAlgorithm::axis_value as the pinned identity label
  • (kermit) Resolve the workspace root at runtime with a KERMIT_WORKSPACE override
  • (kermit) Add ReportSink for atomic per-cell report rewrites
  • (kermit) Write bench reports incrementally through ReportSink
  • (kermit) Add bench::Workload, the runner's input for bench run and bench join
  • (kermit) Run bench join through the generic runner with metrics, axes and --ds-config
  • (kermit-bench) Optional expected result cardinality on query definitions
  • (kermit-rdf) Write expected cardinalities into benchmark.yml and drop the sidecars
  • (kermit) Bench run --verify checks result cardinalities before timing
  • (kermit-lab) Verified column and a real-binary contract test
  • (kermit-bench) Optional sha256 on relations, checked on download and by verify_integrity
  • (kermit) Bench fetch verifies declared sha256 digests; pin triangle's relation
  • (scripts) Add WatDiv stress snapshot installer and per-template sampler
  • (algos) Selection rewrite and equality-selection views for repeated variables

🐛 Bug Fixes

  • Address code review findings
  • (bench) Reject HTTP errors on download and use distinct placeholder URLs
  • (watdiv) Thread URI→name map through preprocessor to prevent predicate aliasing
  • (watdiv) Make emitter fail loud on unknown predicates; document head-atom scope
  • (watdiv) Include literal-object triples in predicate partitions
  • (watdiv) Absorb query-only URIs into dictionary instead of raising
  • (watdiv-gen) Apply code review feedback for on-the-fly rollout
  • (kermit-rdf) Align watdiv -s/-q driver with vendored binary CLI
  • (kermit-rdf) Canonicalize watdiv binary path before staging
  • (kermit-plot) Handle slashed group names and null slope from criterion
  • (kermit-lab) Accept glob patterns in load(); preserve CLI exit codes
  • (kermit-lab) Make quick-start notebook robust to single-scale data
  • (kermit-lab) Document data-shape requirements and unhardcode DS names in notebooks
  • (kermit-lab) Correct --report-json flag position in watdiv notebook
  • (kermit-lab) Correct watdiv benchmark names in 04 notebook
  • (kermit) Address code review issues for declarative generator yaml
  • (kermit-lab) Stream run_phase output and align launch command
  • (kermit-ds) Update interval_index in duplicate-key descent path
  • (iters) Seek works on unstarted iterator
  • (rdf) Inverse rule skips blank-node objects
  • (ds) Guard ColumnTrieIter::open against post-exhaustion descent
  • (ds) Assert header arity in from_tuples
  • (kermit) Report missing relation name in DB diagnostics
  • (kermit) Propagate cache-dir errors and dedupe cache lookups
  • (rdf) Tighten subprocess and path error handling
  • (algos) Enforce valid global attribute order in triejoins
  • (rdf) Seed empty relations for predicates absent from basic-workload data
  • (kermit-lab) Deterministic stable colour fallback, preserve committed-colour separation
  • (kermit-lab) Dedup group cols, neutral fallback colour, error-path tests for encoding
  • (kermit-lab) Generalize tradeoff orientation + keys, strengthen plot tests, drop redundant path comments
  • (kermit-lab) Clean-break API rewire — revert preset compat shims, drop obsolete top-level-API tests
  • (kermit-lab) Reference notebook — per-config sweeps, F5/T2 labels, citation fixes
  • (kermit-lab) Reference notebook — align intro sweep phrasing with per-config invocations
  • (kermit) Make bench run sweeps enumerate valid cells, unify runners
  • (kermit) Build the bench run insertion metric with the family's config
  • (ds) Plain doc comment on define_config_provider! marker so rustfmt is idempotent
  • (kermit-algos) Make a failed LFTJ descent atomic
  • (kermit) Resolve the workspace root once per process
  • (rdf) Seed empty relations for absent predicates in the stress workload too
  • (kermit-rdf) Describe RdfError::Expected by all the stages that raise it
  • (kermit-lab) Contract test runs in a temp dir and surfaces kermit's output
  • (db) Enforce repeated variables via selection views; suite runs through real entry points
  • (bench) Reject downloads that are not Parquet files before caching
  • (bench,lab) Resolve Criterion results by id, refuse truncating sweeps

💼 Other

  • Add algorithm and data-structure docs
  • (cli) Optimiser flag hardening — axis guard test, tempfile hygiene, naming

🚜 Refactor

  • (kermit-bench) Remove download infrastructure, rewrite config types
  • (kermit-ds) Remove Criterion benchmarks
  • (kermit) Remove Benchmarker stub and Commands::Benchmark
  • (watdiv) Extract run_pipeline from main
  • (watdiv) Decouple expected.py from watdiv-stress-* glob
  • (watdiv) Move WatDiv CLI into drivers/watdiv
  • (kermit-lab) Hoist PATHS and CRITERION_ROOT to constants in notebooks
  • (kermit) Nest gen subcommands under bench gen
  • (kermit-algos) Clarify LFTJ naming and state machine
  • (kermit-ds) Tighten Relation trait and clarify trie internals
  • (kermit-rdf) Extract shared timestamp helpers
  • (kermit-rdf) Name parquet column strings as constants
  • (kermit) Name default group and byte-unit constants
  • (kermit) Drop unused PhantomData in DatabaseEngine
  • (kermit-ds) Rename TreeTrieIter pos to sibling_idx
  • (kermit-algos) Rename LFTJ iterator_pool to idle_iterators
  • (kermit) Replace anyhow rewrap boilerplate with bare ?
  • (kermit) Introduce CacheState enum in materialize
  • (kermit-bench) Extract try_load_cache_subdir helper
  • (kermit-rdf) Split LUBM entailment loop into per-rule fns
  • (kermit-ds) Extract LayerStep enum from internal_insert
  • (kermit) Extract add_space_bench helper for space metrics
  • (ds) Extract project_via_trie_iter helper
  • (rdf) Lift sha256_file helper to crate root
  • (bench) Expose base_cache_dir and load_cached_benchmark
  • (derive) Validate IntoTrieIter input generics
  • (kermit) Parameterize DatabaseEngine name from caller
  • (iters) Remove legacy hash_attribute function
  • (ds) Make HashTrie generic over H: HashStrategy
  • (ds) Make HashTrieIter generic over H: HashStrategy
  • (algos) SingletonHashTrieIter takes precomputed hash
  • (kermit) Make hash_join generic over HashStrategy
  • (kermit-lab) Polish optimization-axis loader per review
  • (kermit-lab) Delete legacy plots/ package and its tests
  • (kermit-lab) Final polish — drop dead axis_mapping fns, boolean dtype, README + test gaps
  • (kermit-algos) Share Const_ predicate prefix between rewrite and stats; harden docs+tests
  • Readability pass — document contracts, clarify names, name magic values
  • (cli) Decompose main dispatch into per-subcommand handlers
  • (rdf) Consolidate duplicated watdiv/lubm pipeline logic
  • (ds) Reduce trie internal complexity, behavior-preserving
  • (algos) LFTJ literature alignment — uniform ring indexing
  • (rdf) Share WatDiv/LUBM post-driver orchestration via Generator trait
  • (kermit-rdf) Drop unused kermit-parser and kermit-ds dependencies
  • (ds) Tighten pruning invariant walker and insert_at readability
  • (ds) Close the Configured<R, P> drift hole and pin its contract
  • (ds) Panic on Singleton-in-Table frames and tighten HashTrieIter docs/tests
  • (ds) Expose read_csv/read_parquet so callers can build with a config
  • (kermit) Make build_relation the single construction site and pin the load path
  • (ds,kermit) Drop the redundant singleton-frame depth, tighten Layout docs and tests
  • (kermit) Move optimisation-axis CLI options into options.rs
  • (kermit) Derive HashHtj's report labels from its Layout types
  • (kermit) Pin the Layout macro pairings and tighten options docs
  • (kermit) Collapse run_ds_bench/run_ds_bench_hash onto ExecutionFamily
  • (kermit) Split RelationFamily out of ExecutionFamily for bench ds
  • (kermit) Collapse the DB layer into family-symmetric join functions
  • (kermit) Derive identity labels from axis_value instead of Debug
  • (algos) Drop dead dependency, dead spelling, unreachable pub
  • (algos) Split src/ by iterator family into sorted/ and hash/
  • (algos) Fix planner/executor layering; split optimiser/mod.rs
  • (kermit) Move Metric, Criterion helpers and the bench ds runner into bench/
  • (kermit) Run bench run through bench::run on a Workload
  • (kermit) Group the runner's per-invocation inputs into RunSettings

📚 Documentation

  • Update CLAUDE.md and benchmarking architecture spec for consolidation
  • Update README benchmarking section for consolidated CLI
  • Update CLAUDE.md for cloud-based benchmark system
  • Fix inaccuracies and add missing context to CLAUDE.md
  • Document bench list subcommand in CLAUDE.md
  • (bench) Add benchmarks/README.md documenting YAML schema
  • (iters) Add README, crate-level example, clean JoinIterable doc
  • (derive) Add README and expand crate-level example
  • (parser) Add README, crate-level doctests, # Errors
  • (ds) Add # Errors sections and expand trait docs
  • (ds) Expand TreeTrie and ColumnTrie struct docs
  • (ds) Add README and deny missing_docs
  • (algos) Add leapfrog_triejoin module doc and variant doc
  • (algos) Add README and deny missing_docs
  • (bench) Add module docs, field docs, and # Errors sections
  • (bench) Add doctests, README, and deny missing_docs
  • (kermit) Expand lib.rs and db module docs
  • (kermit) Add main.rs crate doc
  • (kermit) Add README and deny missing_docs
  • (plans) Add WatDiv benchmark integration design
  • Note Const-view rewrite and WatDiv generated YAMLs
  • (watdiv) Document generic driver
  • (watdiv) Document literal partitioning and dict/YAML coupling
  • (benchmarking) Refresh architecture spec for current CLI
  • Add gotchas for rustfmt noise and bench CLI quirks
  • (watdiv) Spec on-the-fly generation pipeline
  • (plans) Add watdiv on-the-fly implementation plan
  • Note miri's fchmod limitation in gotchas
  • (specs) Add design and schema specs for bench-report v2
  • (kermit) Document bench --report-json + kermit-plot in readme
  • Add usage guide with end-to-end examples
  • Document kermit-plot uv workflow and new path
  • (kermit-lab) Add notebook templates and reposition as analysis library
  • Fix USAGE.md --format claim and add bench watdiv-gen section
  • Document kermit-rdf as 8th crate and lubm-gen subcommand
  • (benchmarks) Add lubm benchmark reference
  • (benchmarks) Add watdiv benchmark reference
  • Polish claude.md after lubm work
  • Clarify rustfmt and cache-yaml gotchas in claude.md
  • (benchmarks) Add minimal declarative generator examples
  • Update CLI references for bench gen subcommands
  • Note iter_custom calibration trap in space-bench gotcha
  • Refresh user-facing docs for kermit-rdf and bench surface
  • (specs) Add design for example jupyter notebook full timeline
  • (plans) Add implementation plan for full-timeline notebook
  • (kermit-lab) Correct phase 1 prose accuracy
  • (kermit-lab) Point at 00_full_timeline.ipynb as the entry point
  • Point root readme at the full-timeline notebook
  • (benchmarks) Unify LUBM and WatDiv docs under shared schema
  • (kermit-rdf) Document VarOrder first-appearance invariant
  • (kermit-algos) Document LFTJ invariants and K-var naming
  • Address review nits from readability refactor
  • (kermit-ds) Clarify LayerStep semantics for duplicate-key path
  • (kermit) Fix misleading doc-link target in add_space_bench
  • (rdf) Clarify StressParams forwarded vs informational fields
  • (ds) Fix HashTrie::collect_tuples doc link path
  • (data-structures) Hash-trie.md per Priorities item 3
  • (algorithms) Hash-triejoin.md per Priorities item 3
  • (specs) Add optimization-standard.md (normative)
  • (claude.md) Document optimization standard in 'Extending the System'
  • (specs) Document standard axis prefixes in bench-report-schema
  • (data-structures) Add Optimizations section to hash-trie.md
  • (specs,plans) Restore hash-triejoin design + plan
  • (specs,plans) Restore optimization-standard design + plan
  • (benchmarks) Document WatDiv default workloads, templates, and absent-predicate tolerance
  • (plans) Add WatDiv default workloads implementation plan
  • Add human-facing optimization-standard guide
  • (specs) Design for optimization-axis-aware kermit-lab plotting
  • (plans) Implementation plan for optimization-axis-aware plotting
  • (kermit-lab) Document the general plot engine + ablation
  • (kermit-lab) Update example notebooks for the new plotting API
  • Add BENCHMARKING.md methodology guide; refresh USAGE.md plotting
  • (specs) Consolidate optimization-standard guide and normative spec
  • (specs) Add LUBM reference comparison notebook design
  • (plans) Add LUBM reference notebook implementation plan
  • (specs,plans) Correct false claim that bench run all×all skips incompatible pairs
  • Audit and correct documentation across the workspace
  • (specs) Query optimiser design — planner trait, QueryPlan, cardinality policy
  • (plans) Query optimiser implementation plan — 12 TDD tasks
  • (specs) Correct Cardinality seam — lives in kermit-ds, stored-tuple (multiset-aware) semantics
  • (kermit) Tighten db.rs plan-flow comments; note measured-path planning cost
  • Optimiser component docs, extension recipe, architecture and schema updates
  • (optimisers) House-style headers, See-also cross-links, CLAUDE.md trim
  • Surface --optimiser in README, USAGE, and benchmarking-architecture
  • Fix hasher-ablation example — hash-trie pairs with hash-triejoin
  • Sync ARCHITECTURE.md and CLAUDE.md with the current architecture
  • Correct ARCHITECTURE.md sections overtaken by the #56 fix
  • (specs) Design singleton pruning as the first Config consumer ([#58](#58))
  • (plans) Implementation plan for singleton pruning as first Config consumer ([#58](#58))
  • (ds) Tighten ConfigurableRelation contract and HashTrie constructor docs
  • Document singleton pruning, ConfigurableRelation, and the with_config suite
  • Correct optimization-standard walkthrough and stale hash-trie text
  • Record measured singleton-pruning overhead and the open design decision
  • (specs) Amendment 1 — pruning is a Layout, the load-factor cap is the Config consumer
  • (plans) Implementation plan for Amendment 1 (pruning Layout, load-factor Config)
  • Pruning as a Layout, load factor as the Config; classification rule in the standard
  • Correct layout-guarantee wording and stale claims after the Layout switch
  • Record Amendment 1 acceptance measurements
  • (specs) Mark the pre-amendment optimisation specs superseded and update their axis examples
  • Point the option-group references at kermit/src/options.rs
  • Record the FxHash pivots in the Amendment 1 acceptance record
  • (claude) Require the LUBM hook when adding a query optimiser
  • Name the merged bench ds families correctly
  • (architecture) Name the HashHtj cell's Layout and Config fields
  • Finish renaming the HashHtj cell and runner references after the merge
  • (kermit) Describe the family-symmetric join layer; bump kermit to 0.2.0
  • (benchmarks) Explain why scripts/ is retained
  • (specs) Sweep-hardening design (sub-project A)
  • (plans) Sweep-hardening implementation plan
  • (specs) Mark sweep-hardening as implemented
  • Note incremental reports and runtime workspace root
  • (algos) Rewrite README for the reorganised crate
  • (algos) Record why the triejoin tests stay inline
  • (specs) Design for seeding absent predicates in the WatDiv stress workload ([#63](#63))
  • (plans) Implementation plan for WatDiv stress absent-predicate seeding ([#63](#63))
  • (benchmarks) Absent predicates are seeded in both WatDiv workloads; note 1-second seed granularity
  • (specs) Runner-consolidation design (sub-project B)
  • (specs) Fix criterion_groups count in runner-consolidation test bullet
  • (plans) Runner-consolidation implementation plan
  • Describe bench join's generic-runner surface and the bench/ module
  • Fix stale bench join and module-location sentences
  • (specs) Answer-verification design (sub-project C)
  • (specs) Fold sub-projects D and E into the answer-verification spec
  • (plans) Answer-verification, Rust–Python contract and download-integrity plan
  • Expected cardinalities, --verify, sha256 integrity, and the kermit-lab contract test
  • (benchmarks) Keep the static-fields schema table contiguous
  • Note sha256 verification in bench fetch and disambiguate the run-time hash
  • Selection rewrite for repeated variables; 14 standard join patterns

⚡ Performance

  • (kermit) Skip per-iter trie rebuild in space benchmarks
  • (kermit) Load each parquet relation once in run_benchmark
  • (ds) Keep HashTrieNode table accessors inlined despite the Singleton panic arm

🎨 Styling

  • Apply nightly rustfmt formatting
  • Apply nightly rustfmt formatting
  • Apply nightly rustfmt formatting
  • Apply nightly rustfmt formatting
  • Apply nightly rustfmt formatting
  • Apply nightly rustfmt formatting
  • Apply nightly rustfmt to documentation edits
  • (kermit) Apply nightly rustfmt to recently-touched files
  • (kermit-rdf) Wrap long doc comments in error.rs to satisfy rustfmt
  • (kermit) Apply nightly rustfmt to bench_report
  • Apply nightly rustfmt formatting pass
  • (kermit-ds) Regroup hex literal in column_trie test seed
  • (iters) Cargo fmt + doc/param naming consistency
  • (ds) Cargo fmt + clippy fixes after Phase 2
  • (ds) Cargo fmt after Phase 3
  • (ds) Cargo fmt after Phase 4
  • (algos) Cargo fmt after Phase 7
  • (iters) Cargo fmt after Phase 1
  • (cli) Cargo fmt after Phase 4
  • Apply rustfmt to watdiv default-workload changes
  • Cargo fmt
  • Cargo fmt
  • Cargo fmt
  • Run rustfmt over the dependency-bump edits
  • Rustfmt and align axis_value test imports with the optimiser precedent

🧪 Testing

  • (kermit-bench) Add tests for tuple generators and benchmark configs
  • (kermit) Add trimmed WatDiv fixture for correctness checks
  • (kermit) Integration test — WatDiv mini fixture
  • (kermit-rdf) Integration test for stages 4-6
  • (kermit-rdf) E2e SF=1 against real watdiv binary
  • (kermit) CLI smoke test for bench watdiv-gen
  • (kermit-rdf) Gate driver fs tests behind cfg(miri)
  • (kermit-rdf) Add lubm pipeline integration tests
  • (kermit-ds) Move tree_trie tests to a sibling file
  • (kermit-ds) Add randomised round-trip test for column_trie inserts
  • (kermit) Pin bench run JSON-schema with triangle benchmark
  • (kermit) Address review findings on bench-run schema test
  • Miri-gate e2e_watdiv and de-collide cli_join temp path
  • Sort both sides in test_join for multiset equality
  • Define_multiway_join_test_suite!(HashTrie, HashTriejoin)
  • (cli) Unit tests for validate_layout_choices
  • Split HashTrie suite by Layout variant via type aliases
  • (lubm) Add cardinality regression test
  • (rdf) E2e test for the WatDiv Basic Testing pipeline
  • (kermit-ds) Harden HashTrie multiset counter — from_tuples duplicate pin + desync guard comment
  • (kermit-algos) Pin repeated-variable analysis edge; state head-index guarantee
  • (kermit-algos) Pin out-of-range plan rejection; document rank call frequency
  • (kermit-algos) Pin CardinalityOptimiser min-fold semantics; drop redundant tie-break
  • Run the 11-pattern multiway join suite under both optimisers (88 tests)
  • (ds) Add HashTrie iterator-contract, Parquet, and collision suites
  • (ds) Run HashTrie iterator, Parquet and collision suites with pruning on
  • (kermit) Add define_multiway_join_test_suite_with_config! and pruning-on suites
  • (kermit) CLI smoke test for --ds-config singleton-pruning
  • (kermit) CLI smoke test for --ds-layout-pruning
  • (kermit) Share the CLI smoke-test helpers in tests/common/cli.rs
  • (kermit) Run the LUBM cardinality check under every optimiser
  • (kermit) Add a deep-dead-end pattern to the standard join suite
  • (kermit) Partial bench run sweep keeps finished benchmarks' reports
  • (rdf) Pin seed_missing_predicates with a deterministic unit test
  • (rdf) Accept seeded relations in e2e_watdiv and assert YAML/seeded relations reach Parquet
  • (kermit) Pin the Python schema version to REPORT_SCHEMA_VERSION
  • Reference the head-projection issue from the diagonal tests
  • (rdf) Pin pipeline artifact contents on hand-crafted input
  • (rdf) Assert the exact entailment closure of interacting rules
  • (kermit) Java-free miniature LUBM oracle
  • (rdf) Tighten pipeline fixture; document partition tuple order
  • (kermit) Mini LUBM oracle covers every optimiser and constant

🔧 Build

  • (flake) Expose python and ld_library_path for kermit-plot
  • (kermit-plot) Migrate to uv with hatchling backend
  • (flake) Add uv to dev shell
  • (flake) Add jdk 8 for lubm-uba jar runtime
  • (kermit-lab) Sync uv.lock with 0.2.0 package version
  • (flake) Track CI's nightly and fix the drift it exposes
  • (deps) Bump dirs to 7 and reqwest to 0.13
  • (deps) Bump sha2 to 0.11 and hex-encode digests explicitly
  • (deps) Bump syn to 3
  • (deps) Bump winnow to 1.0
  • (deps) Bump arrow and parquet to 59
  • (deps) Bump oxrdf, oxttl and spargebra
  • (deps) Bump criterion to 0.8

⚙️ Miscellaneous Tasks

  • Add .worktrees/ to .gitignore
  • (watdiv) Scaffold Python preprocessor skeleton
  • (kermit) Fail loud on missing relation in join; ignore watdiv-data/
  • (kermit-rdf) Drop redundant tempfile dev-dep + premature kermit-algos dep
  • Add watdiv binary to .gitignore
  • Ignore .loom/ output directory
  • (kermit-plot) Move project from scripts/ to python/
  • (kermit-lab) Rename from kermit-plot
  • Ignore log.txt files emitted by lubm-uba jar
  • (kermit-rdf) Vendor lubm-uba jar with provenance
  • Ignore .serena/ MCP server config dir
  • Ignore .claude.local.md
  • (release) Bump crate versions and add kermit-rdf changelog
  • Remove dead Node trait and stale commented test block
  • Update CLAUDE.md
  • (kermit) Stub HashTrie arms in CLI dispatch until phase 9
  • (release) Bump workspace crate versions
  • (python) Ignore Jupyter notebook checkpoint directories
  • (kermit-lab) Resave timeline notebook with kermit-lab kernelspec
  • Resolve architecture-review cleanups ([#60](#60))
  • (algos) Drop four dependencies the crate never used
  • Run kermit-lab tests with the real-binary contract test
  • Cache uv in the kermit-lab job
  • (release) Stop publishing to crates.io