Skip to content

Add VBD and AVBD paper-parity foundation - #3432

Open
jslee02 wants to merge 15 commits into
mainfrom
feature/vbd-avbd-paper-parity-contract
Open

Add VBD and AVBD paper-parity foundation#3432
jslee02 wants to merge 15 commits into
mainfrom
feature/vbd-avbd-paper-parity-contract

Conversation

@jslee02

@jslee02 jslee02 commented Aug 2, 2026

Copy link
Copy Markdown
Member

Summary

  • Establishes the fail-closed DART-owned VBD/AVBD paper-parity foundation for
    DART 7, including public solver selection, rigid pair constraints, and
    independently attributable Sequential Impulse, fixed-penalty VBD, and AVBD
    Figure 13 rows.
  • Adds machine-checked 88-row VBD and 88-row AVBD contracts. All 176 rows remain
    partial or missing; this PR does not claim paper parity, GPU parity, or a
    paper/reference speedup.

Motivation / Problem

  • PLAN-104 needs one shared, reviewable foundation before the remaining work
    can be completed in two ordered PRs: VBD first, then AVBD. Existing partial
    implementations and evidence did not fail closed on solver identity,
    source/build provenance, visual outcomes, CPU/CUDA coverage, or comparable
    achieved-accuracy performance.

Changes / Key Changes

  • Adds canonical paper/site/video/demo inventories and a validator for 176
    VBD/AVBD completion predicates.
  • Implements AVBD quasi-Newton geometric stiffness, deterministic parallel
    dual/stiffness updates, articulated finite rows and motors, physical fracture
    accounting, and public C++/dartpy rigid-solver configuration.
  • Adds a public fixed-penalty VBD comparison path and makes the default
    Sequential Impulse family own hard rigid pair rows, bounded velocity motors,
    fracture, and post-stabilization rather than borrowing AVBD projection.
  • Adds source-bound Figure 13 captures, semantic review records, packet-chain
    validation, and descriptive same-host benchmark evidence for SI, VBD, and
    AVBD.
  • Updates PLAN-104 and its dev-task handoff with the exact publication state
    and the required foundation -> VBD PR -> AVBD PR execution sequence.

Before / After

Before After
Partial VBD/AVBD mechanisms and demo packets had no aggregate fail-closed completion authority. Two machine-checked 88-row contracts make solver identity, CPU/CUDA, visual, and performance gaps explicit.
Public hard rigid pair rows borrowed AVBD projection state. Sequential Impulse owns hard pair rows; finite-stiffness rows fail closed to VBD/AVBD.
Figure 13 rows were not independently attributable or source-bound as a three-method comparison. SI, fixed-penalty VBD, and AVBD have distinct partial outcome oracles and one source-bound packet chain.

Testing

Current head 57bce9a5cedf:

  • DART_DISABLE_COMPILER_CACHE=ON pixi run test-all (all 6 phases passed;
    lint, release/debug builds, 229/229 core C++ tests, 81 runnable simulation
    tests, the full Python corpus, and documentation)
  • PYTHONUNBUFFERED=1 DART_DISABLE_COMPILER_CACHE=ON pixi run -e cuda test-all
    (all 7 phases passed; 213/213 core C++ tests, 80 runnable simulation tests,
    the full Python corpus, 8/8 CUDA device tests, and all 9 benchmark-smoke
    commands)
  • build/default/cpp/Release/bin/test_world --gtest_filter=World.PublicVbdFamilyRequiresFinitePointJointProjectionStiffness
    (1/1 public fixed/revolute/prismatic/spherical hard-row regression passed)
  • pixi run check-avbd-packets (58 packets)
  • pixi run check-plan104-paper-parity (176 canonical rows)
  • Fresh six-capture source digest:
    7a96ffd3b73b9649961ed858f7d9967044b6e2fe47477227e04e2840c5f0b4d0

Visual verification

  • The foundation has six source-bound 1280x720 Figure 13 stills and three
    separate semantic reviews for SI, fixed-penalty VBD, and AVBD. They pass
    engine ViewReports, pixel-integrity checks, image verdicts, and
    original-resolution review against the pinned paper page.
  • These are partial Figure 13 checkpoints, not full VBD or AVBD paper
    replication. No video bundle was generated for this foundation slice, and
    transient media is intentionally not committed.
  • The six current stills can be uploaded to this PR as GitHub attachments
    without another code PR. Full paper/site/official-video/source-demo image,
    GIF, and video evidence will ship inside exactly two follow-ups: the VBD
    completion PR first, then the AVBD completion PR. There will be no separate
    media-only PR.
  • This follows the repository-hygiene boundary demonstrated by Add opt-in exact-Coulomb FBF friction solver and fix split-impulse impulse loss #3377: generated
    media stays ignored locally and reviewer-facing media uses GitHub
    attachments. It does not copy Add opt-in exact-Coulomb FBF friction solver and fix split-impulse impulse loss #3377's still-incomplete claim boundary.

Breaking Changes

  • None
  • No public source-compatibility break. Experimental DART 7 rigid-solver
    behavior now attributes hard pair constraints to Sequential Impulse and
    routes finite-stiffness pair constraints to VBD/AVBD.

Related Issues / PRs (backports)


Checklist

  • Milestone set (DART 7.0)
  • CHANGELOG.md updated per docs/onboarding/changelog.md
  • Add unit tests for new functionality
  • Document new methods and classes
  • Add Python bindings (dartpy) if applicable

@jslee02 jslee02 added this to the DART 7.0 milestone Aug 2, 2026
@jslee02

jslee02 commented Aug 2, 2026

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: 404d66b98d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@jslee02
jslee02 marked this pull request as ready for review August 2, 2026 03:30

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 995be410b9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/avbd_packet_schema.py Outdated
@jslee02

jslee02 commented Aug 2, 2026

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 58bf1c3e85

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread dart/simulation/detail/rigid_avbd/rigid_world_contact.hpp
@jslee02

jslee02 commented Aug 2, 2026

Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 57bce9a5ce

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/check_plan104_paper_parity.py
@codecov

codecov Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 83.58779% with 301 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.00%. Comparing base (ef10cb2) to head (57bce9a).

Files with missing lines Patch % Lines
...simulation/detail/deformable_vbd/block_descent.hpp 39.28% 119 Missing ⚠️
...imulation/detail/rigid_avbd/rigid_block_kernel.hpp 73.07% 42 Missing ⚠️
...mulation/detail/rigid_avbd/rigid_world_contact.hpp 83.41% 32 Missing ⚠️
...rt/simulation/compute/rigid_body_contact_stage.cpp 94.59% 29 Missing ⚠️
dart/simulation/detail/rigid_pair_constraint.hpp 88.73% 24 Missing ⚠️
...art/simulation/compute/variational_integration.cpp 87.57% 22 Missing ⚠️
dart/simulation/compute/parallel_executor.cpp 86.86% 13 Missing ⚠️
dart/simulation/world.cpp 95.32% 10 Missing ⚠️
...ion/detail/deformable_vbd/quasi_newton_hessian.hpp 64.28% 5 Missing ⚠️
...tion/detail/deformable_vbd/parallel_row_update.hpp 72.72% 3 Missing ⚠️
... and 2 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3432      +/-   ##
==========================================
+ Coverage   81.67%   82.00%   +0.33%     
==========================================
  Files         667      670       +3     
  Lines       92082    93365    +1283     
==========================================
+ Hits        75209    76565    +1356     
+ Misses      16873    16800      -73     
Flag Coverage Δ
unittests 82.00% <83.58%> (+0.33%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dart/simulation/comps/joint.hpp 100.00% <ø> (ø)
dart/simulation/comps/rigid_body.hpp 100.00% <ø> (ø)
...on/compute/detail/deformable_avbd_replay_state.hpp 100.00% <100.00%> (ø)
...rt/simulation/compute/detail/world_step_stages.hpp 100.00% <ø> (ø)
...art/simulation/compute/variational_integration.hpp 95.65% <ø> (ø)
dart/simulation/detail/world_step_schedule.hpp 98.18% <100.00%> (+0.03%) ⬆️
dart/simulation/io/binary_io.hpp 100.00% <ø> (ø)
dart/simulation/world.hpp 100.00% <ø> (ø)
...t/simulation/compute/deformable_dynamics_stage.cpp 86.30% <66.66%> (-0.01%) ⬇️
.../detail/deformable_vbd/finite_stiffness_kernel.hpp 56.41% <91.66%> (+11.58%) ⬆️
... and 10 more

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant