-
Notifications
You must be signed in to change notification settings - Fork 304
Add the PLAN-623 branch-local citation evidence contract and the CT-001 detector-sweep packet #3444
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from 36 commits
Commits
Show all changes
38 commits
Select commit
Hold shift + click to select a range
1189155
Add PLAN-623 branch-local citation evidence contract and CT-001 detec…
jslee02 19823f8
Harden the citation evidence gate and correct the CT-001 attribution
jslee02 8aedb37
Record the measured antisymmetry ratios in the CT-001 review evidence
jslee02 afc6d7a
Widen resolved-configuration assertions and scope the iteration marker
jslee02 d4f95f1
Correct the CT-001 attribution details and the branch verification re…
jslee02 24d311b
Close the non-string evidence bypass and regenerate the CT-001 packet
jslee02 978b48e
Draft the release-6.20 PR description
jslee02 0a5b2eb
Point the resume state at the finished branch tip
jslee02 7314b44
Merge remote-tracking branch 'origin/release-6.20' into feature/dart6…
jslee02 ed5074f
Record the opened PR number in the working docs
jslee02 ae4f3b5
Close the Codex round-1 validator loopholes on the LTS lane
jslee02 1a811de
Close the Codex round-2 validator bypasses on the LTS lane
jslee02 e037175
Regenerate the CT-001 packet at the round-2 commit
jslee02 4e96ea7
Record the Codex round-2 verification entry
jslee02 d60f48a
Close the Codex round-3 validator bypasses on the LTS lane
jslee02 eb7b6f8
Close the Codex round-4 validator bypasses on the LTS lane
jslee02 95f7f67
Close the Codex round-5 validator bypasses on the LTS lane
jslee02 c3648c6
Close the Codex round-6 validator bypasses on the LTS lane
jslee02 236870f
Close the Codex round-7 validator bypasses on the LTS lane
jslee02 19a227f
Close the Codex round-8 validator bypasses on the LTS lane
jslee02 e53edc5
Close the Codex round-9 validator bypasses on the LTS lane
jslee02 f75d58a
Close the Codex round-10 validator bypasses on the LTS lane
jslee02 c639a41
Close the Codex round-11 bypasses on the LTS lane
jslee02 98934b3
Regenerate CT-001 under the round-11 instrument
jslee02 886558f
Close the Codex round-12 findings on the LTS lane (loop checkpoint)
jslee02 9e39563
Record the pre-merge test-all gate at the loop checkpoint
jslee02 fac4806
Close the Codex round-13 findings on the LTS lane
jslee02 224d34d
Close the Codex round-14 findings on the LTS lane
jslee02 034b1cc
Close the Codex round-15 findings on the LTS lane
jslee02 62e0862
Close the Codex round-16 findings on the LTS lane
jslee02 08ff92b
Close the Codex round-17 findings on the LTS lane
jslee02 5c96974
Close the Codex round-18 findings on the LTS lane
jslee02 0562b1a
Close the Codex round-19 findings on the LTS lane
jslee02 dc6e8a4
Close the Codex round-20 findings on the LTS lane
jslee02 a8b56e5
Close the Codex round-21 findings on the LTS lane
jslee02 175eefa
Close the Codex round-22 findings on the LTS lane
jslee02 312114d
Close the Codex round-23 findings on the LTS lane
jslee02 1da3966
Close the Codex round-24 findings on the LTS lane
jslee02 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,185 @@ | ||
| # DART 6.20 Citation-Driven Contact Trust | ||
|
|
||
| ## Status | ||
|
|
||
| Durable compatibility and evidence contract for `release-6.20`. Active | ||
| implementation state lives in | ||
| `docs/dev_tasks/dart6_citation_contact_trust/`. The DART 7 long-term owner is | ||
| `docs/design/contact_trust_and_observability.md` on `main`. | ||
|
|
||
| ## Purpose | ||
|
|
||
| DART 6.20 should answer historical and current claims about DART 6 with | ||
| source-faithful reproductions, permanent tests/benchmarks, and honest | ||
| dispositions while preserving the LTS contract. This branch may improve | ||
| existing collision, contact, solver, sleeping, parser, and diagnostic behavior | ||
| when a defect is demonstrated, but it is not a vehicle for DART 7 architecture | ||
| or new public solver families. | ||
|
|
||
| ## Compatibility boundary | ||
|
|
||
| All work preserves unless explicitly authorized otherwise: | ||
|
|
||
| - C++17 and pybind11; | ||
| - installed headers, symbols, class layouts, components, and parser surfaces; | ||
| - FCL `PRIMITIVE` as the built-in default; | ||
| - real FCL, Bullet, ODE, and DART-owned collision backends and factory keys; | ||
| - OSG and consolidated `dart-demos`; | ||
| - default simulation behavior for unaffected scenes; | ||
| - Gazebo/gz-physics/gz-sim compatibility; | ||
| - public `collision::Contact` and constraint/contact-surface semantics. | ||
|
|
||
| `main` is reference evidence only. Do not import C++23, nanobind, EnTT World | ||
| storage, DART 7 solver/backend APIs, or generated DART 7 workflows. | ||
|
|
||
| ## Allowed work | ||
|
|
||
| - Source-bound reproductions of citation, benchmark, and issue claims. | ||
| - Additive tests, benchmarks, demos, scripts, and evidence schemas. | ||
| - Internal or opt-in diagnostics with compile-time/runtime-zero common-path | ||
| overhead where the branch contract requires it. | ||
| - Implementation-local correctness, determinism, allocation, and performance | ||
| fixes with negative controls. | ||
| - Additive non-virtual helpers only after ABI/source review. | ||
| - Documentation clarifying impulse/force/wrench semantics without changing | ||
| established ABI. | ||
| - Separate `main` fixes for defects shared across branches. | ||
|
|
||
| ## Excluded work | ||
|
|
||
| - New exact-cone/NCP, IPC, VBD/AVBD, differentiable, batch-World, rod/shell, or | ||
| biomechanics solver architecture. | ||
| - Public model/state/contact redesign. | ||
| - Default detector or solver changes. | ||
| - Removal or facade replacement of FCL/Bullet/ODE. | ||
| - New required dependencies or language/binding/rendering floor changes. | ||
| - Broad refactors justified only by DART 7 cleanliness. | ||
| - Silent contact smoothing or changed downstream force conventions. | ||
|
|
||
| ## Owner integration | ||
|
|
||
| Before creating new fixtures or task owners, audit and reuse: | ||
|
|
||
| - PLAN-621 and `docs/dev_tasks/dart6_performance_generalization/`; | ||
| - PLAN-622 and `docs/dev_tasks/dart6_deformable_body_performance/`; | ||
| - `docs/design/dart6_collision_backends.md`; | ||
| - existing DART 6 benchmark, capture, evidence, and AI verification tooling; | ||
| - current open PRs/issues and any newer completion/retirement state. | ||
|
|
||
| A corpus row already owned by PLAN-621/622 stays there. The citation task points | ||
| to its evidence and does not copy the implementation checklist. | ||
|
|
||
| ## Claim and evidence contract | ||
|
|
||
| Use the same stable claim IDs and dispositions as DART 7, but every packet is | ||
| explicitly `release-6.20` and records (enforced by | ||
| `scripts/check_citation_evidence.py` — this list matches the enforced | ||
| schema, not an aspiration beyond it): | ||
|
|
||
| - exact target commit plus the runnable durable fetch command; | ||
| - scene identity: digest-bound parameters (source model, license, and | ||
| conversion provenance are recorded WHEN an external model asset is used; | ||
| procedurally built primitive scenes carry their full construction in | ||
| `scene.parameters` and have no external asset to attribute); | ||
| - detector, constraint solver, timestep, iterations, threads, and defaults | ||
| (typed unsupported where the branch exposes no accessor); | ||
| - ensemble (verified repeats, or object sweep points/seeds each bound to | ||
| their own recorded rows) and a named measurement window; | ||
| - contact/trajectory hashes, penetration, energy where available; | ||
| - exact reproducible commands (build step included) and host validity, | ||
| with measured timing forbidden when the host is not | ||
| performance-controlled; | ||
| - disposition, claim boundary, and limitations; | ||
| - Gazebo/gz relevance, recorded per packet in its limitations or notes | ||
| when a downstream-visible path is touched; | ||
| - digest-bound review evidence. | ||
|
|
||
| If DART 6 lacks a comparable metric, record it as unsupported or derive it in | ||
| the harness without changing public runtime APIs. Never encode unsupported as | ||
| numeric zero. | ||
|
|
||
| ## Contact semantics | ||
|
|
||
| DART 6 public compatibility constrains API changes, but evidence must still | ||
| distinguish: | ||
|
|
||
| - collision query geometry; | ||
| - solver impulse; | ||
| - legacy per-step `Contact.force`/wrench data; | ||
| - interval-average or filtered analysis values; | ||
| - downstream Gazebo contact sensor transforms and sign/ownership. | ||
|
|
||
| Tests should pin object ordering, normal convention, point/frame transforms, | ||
| force/wrench sign, timestep dependence, reset/clone behavior, and downstream | ||
| conversion where applicable. Do not silently reinterpret released fields. | ||
|
|
||
| New analysis helpers should remain in tests/examples/scripts or additive | ||
| non-virtual APIs after compatibility review. | ||
|
|
||
| ## Initial DART 6 rows | ||
|
|
||
| The durable row set for this branch (unordered — working priority lives with | ||
| the active task state, not here): | ||
|
|
||
| - the completed `3k_shapes` and sleeping/collision performance campaign | ||
| (audit/guard); | ||
| - rolling/friction-direction behavior across FCL, DART, Bullet, and ODE where | ||
| supported; | ||
| - dense inelastic/elastic contact finite-state and failure grids; | ||
| - heel-strike/toe-off raw impulse and legacy force/wrench interpretation; | ||
| - contact normal/object ordering and Gazebo wrench sensor regressions; | ||
| - high mass-ratio stacks/manipulation and current solver fallback behavior; | ||
| - existing PLAN-622 soft-contact robustness rows using perturbation ensembles | ||
| (these contribute evidence without expanding the cap). | ||
|
|
||
| The cap is six common fixture families with dispositions. The working order | ||
| in which rows are attacked is mutable state and is owned by the PLAN-623 | ||
| task home (`docs/dev_tasks/dart6_citation_contact_trust/README.md`) with the | ||
| branch manifest recording live lane status; this document records only which | ||
| rows exist and why. | ||
|
|
||
| ## Fix policy | ||
|
|
||
| A DART 6 behavioral fix requires: | ||
|
|
||
| - baseline reproduction on a current clean release base; | ||
| - root cause; | ||
| - smallest compatibility-safe change; | ||
| - regression that fails before and passes after; | ||
| - state/contact/rest hash or explicit re-baseline; | ||
| - no unrelated default or backend changes; | ||
| - ABI/header/component/package audit when near a public boundary; | ||
| - `pixi run -e gazebo test-gz` for collision/constraint/World/downstream work; | ||
| - a separate DART 7 issue/PR assessment. | ||
|
|
||
| Performance gains cannot come from lost contacts, changed sleeping, cap hits, | ||
| skipped work that remains physically required, or a different model without | ||
| being labeled non-equivalent. | ||
|
|
||
| ## Diagnostics and overhead | ||
|
|
||
| Diagnostics are opt-in and preferably test/harness-side. Any library | ||
| instrumentation must: | ||
|
|
||
| - preserve public class layout and vtables; | ||
| - be default-off when it adds work or state; | ||
| - compile out or have proved negligible common-path cost as appropriate; | ||
| - avoid global registries, locks, or heap allocation on every solve/step; | ||
| - report actual detector/solver/fallback and unsupported metrics honestly. | ||
|
|
||
| ## Verification | ||
|
|
||
| Every slice runs: | ||
|
|
||
| - `pixi run lint`; | ||
| - focused build and C++/dartpy tests; | ||
| - relevant benchmarks with raw rows and validity checks; | ||
| - deterministic repeats/ensembles; | ||
| - visual evidence through the branch OSG/demos path when visible; | ||
| - `pixi run -e gazebo test-gz` when downstream-sensitive; | ||
| - two clean independent or role-separated reviews; | ||
| - explicit changelog decision. | ||
|
|
||
| Before completion, promote durable facts to this design, existing collision, | ||
| testing, profiling, user, or release owners, then remove the dev-task folder in | ||
| the completing PR. | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new direct
docs/design/*.mddocument is not listed indocs/design/README.md, so readers using the directory's documented index cannot discover this durable owner. Add it to the Files table with the other design documents.AGENTS.md reference: docs/design/AGENTS.md:L25-L25
Useful? React with 👍 / 👎.