Skip to content

Releases: ivg-design/bbsolver

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

28 May 13:02

Choose a tag to compare

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.

bbsolver v1.0.0

25 May 07:26

Choose a tag to compare

bbsolver v1.0.0

First standalone release of bbsolver, a C++ spatiotemporal optimization
engine for animation data.

Highlights

  • Reduces dense sampled animation to sparse keyframes within an explicit error
    budget.
  • Supports scalar, vector, Position-style spatial properties, stable
    shape_flat paths, and variable-topology path replacement flows.
  • Includes motion path smoothing for Position-style motion paths, with options
    for preserving keyed frames and sharp turns.
  • Preserves host animation semantics where applicable: hold, linear, Bezier,
    temporal ease, spatial tangents, and roving flags.
  • Ships a standalone After Effects ScriptUI test harness plus JSON shim that
    demonstrates sampling, expression bake-and-disable, optional parented 2-D
    Position flatten/unparent, CLI solve/verify, and key writeback.

Supported Integration Surface

  • CLI commands: solve, verify, dump, --version, and --help.
  • JSON IO: strict SampleBundle input and KeyBundle output with
    _schema, schema_version: 1, and dimension-checked value arrays.
  • CMake package: find_package(bbsolver CONFIG) with exported
    bbsolver::bbsolver and bbsolver::core targets.
  • FlatBuffers schemas are included as protocol/design references; v1.0.0 CLI IO
    is JSON.

Build And Use

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j

./build/bbsolver solve \
  examples/json/minimal_scalar.bbsm.json \
  /tmp/minimal_scalar.bbky.json
./build/bbsolver verify \
  /tmp/minimal_scalar.bbky.json \
  examples/json/minimal_scalar.bbsm.json

Windows PowerShell:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j

.\build\Release\bbsolver.exe solve `
  examples\json\minimal_scalar.bbsm.json `
  $env:TEMP\minimal_scalar.bbky.json
.\build\Release\bbsolver.exe verify `
  $env:TEMP\minimal_scalar.bbky.json `
  examples\json\minimal_scalar.bbsm.json

Offline/reproducible builds can use the bundled dependency archives:

cmake -S . -B build -DBBSOLVER_FORCE_THIRD_PARTY_ARCHIVES=ON
cmake --build build -j

Validation Evidence

Validated public commit:
5e2954573476d31d06f27538676a012bbb759e13.

Public CI:

  • Push run
    26384591701:
    quick-linux, package-macos, and package-windows passed.
  • Manual release-validation run
    26385148293:
    quick-linux, package-macos, package-windows, and
    release-validation passed.
  • Tag run
    26387781951
    for v1.0.0: quick-linux, package-macos, package-windows, and
    release-validation passed.

The release-validation job completed the standalone validator, installed
package smoke test, JSON example solve/verify/dump checks, negative schema
checks, install hygiene checks, and clangd sweep.

Source Traceability

This public release was synced from the source repository with the following
metadata:

  • Source-Repository: https://github.com/ivg-design/bakerBoy.git
  • Source-Ref: HEAD
  • Source-Commit: 460c84aaa8018d88b2120cfe37ad12a2e5b1e3bb
  • Source-Path: solver
  • Source-Tree: 99bf3f2b864ac852a364b745fca46956f9a3459e

Documentation

  • README.md: package overview and quickstart.
  • docs/QUICKSTART.md: five-minute build, solve, and verify path.
  • docs/SOLVER_CLI.md: CLI commands, flags, exit codes, progress,
    cancellation, and diagnostics.
  • docs/API_REFERENCE.md: JSON SampleBundle and KeyBundle contracts.
  • docs/PACKAGING.md: CMake install/export and package-consumer behavior.
  • docs/AE_SCRIPTUI_HARNESS.md: After Effects ScriptUI harness integration.
  • docs/VALIDATION_WORKFLOWS.md: local and release validation workflows.