Skip to content

v1.0.1 — Verifier bug fix for variable-topology shape_flat

Latest

Choose a tag to compare

@ivg-design ivg-design released this 28 May 13:02
· 6 commits to main since this release

Verifier-side bug fix. No solver numeric changes — running v1.0.1 solve against the same bbsm.json produces a bit-identical bbky.json (same max_err to six decimal places, same key counts, same per-key vertex counts). The fix only relaxes a strict per-key dimension check in the canonical bbsolver verify <bbky> <bbsm> CLI that had rejected the six variable-topology shape_flat rows of the published paper corpus (noodle and blob fixtures).

What changed

The verifier now applies a sample-aware rule on units_label == \"shape_flat\" && shape_variable_topology == true:

  • each VT key's v[] must be length ≥ 2
  • v[1] (the encoded vertex count) must be a finite non-negative integer-ish value
  • v.size() == 2 + 6 * round(v[1])
  • vertex_count <= shape_max_vertex_count when the max is known

Malformed VT keys are reported under the new invalid_shape_flat_key_dimensions reason code with a malformed_keys array carrying per-key diagnostics. The bbsm side is cross-checked via the new invalid_shape_flat_sample_metadata code. Non-shape and fixed-topology paths keep the existing key_value_dimension_mismatch reason code unchanged.

The main ReadKeyBundleJson parser (used by solve, apply, dump, and any other call site) is byte-for-byte unchanged. The relaxed gate is scoped to a new ReadKeyBundleJsonForVerify entry point used only by the verify CLI.

Test coverage

  • 7 new unit cases in tests/solver_unit/test_verify_dump_commands.cpp
  • New integration test test_verify_paper_corpus_integration walking data/paper_corpus/req-*/ and asserting all 16 shipped bbky.json bundles reach the sample-aware verifier without schema rejection
  • ctest: 117 / 117 passing on macOS arm64 + x86_64

Independent validation

Codex orchestrator dispatched Codexolog to run the release-gating black-box validation matrix. Verdict: GREEN, no blockers under any of the four decision gates:

  1. No schema rejection on valid variable-topology shape_flat
  2. No relaxation of fixed-topology or non-shape mismatch detection
  3. No relaxation of the solve/apply main parser
  4. shape_flat without shape_variable_topology carrying per-key varying lengths is still rejected via the strict gate (confirms the gate requires BOTH conditions, not just units_label)

v1.0.0 compatibility

The v1.0.0 release remains available unchanged for byte-level reproduction of the original solver outputs. v1.0.1 is the recommended binary for reproducing verify.json from scratch.

SHA-256 manifest

c28ce4c9530f298b094a7ec35305ca39dc35d25f9adf2014c7f30cb69deb26ad  bbsolver-v1.0.1-macos-arm64.tar.gz
6e221df339dd89366ad38ca3a29dbf4501550d3be73d9bb863cd2eb6f3167d5e  bbsolver-v1.0.1-macos-x86_64.tar.gz
776f0f8278aa76fd0fdcb3f45bc0ce1d62d68ba8eb31b833f8ced1964c067f08  bbsolver-v1.0.1-windows-arm64.zip
daa6448a888b18820b18971d4465c4c1668414bc2f75ad6f220a458bc7d5e24c  bbsolver-v1.0.1-windows-x64.zip

See CHANGELOG.md for the full diff and the paper §8.1 for the reproducibility manifest.