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 valuev.size() == 2 + 6 * round(v[1])vertex_count <= shape_max_vertex_countwhen 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_integrationwalkingdata/paper_corpus/req-*/and asserting all 16 shippedbbky.jsonbundles 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:
- No schema rejection on valid variable-topology shape_flat
- No relaxation of fixed-topology or non-shape mismatch detection
- No relaxation of the solve/apply main parser
shape_flatwithoutshape_variable_topologycarrying per-key varying lengths is still rejected via the strict gate (confirms the gate requires BOTH conditions, not justunits_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.