Skip to content

Pendulum: Add Drift-Transfer Diagnostics - #4411

Closed
d-sorgcodexagent[bot] wants to merge 1 commit into
mainfrom
research/shoulder-velocity-drift-transfer
Closed

Pendulum: Add Drift-Transfer Diagnostics#4411
d-sorgcodexagent[bot] wants to merge 1 commit into
mainfrom
research/shoulder-velocity-drift-transfer

Conversation

@d-sorgcodexagent

Copy link
Copy Markdown
Contributor

Closes #4406
Supports D-sorganization/UpstreamDrift#8551.

Outcome

  • adds model-neutral drift/control grip-power and work diagnostics with exact closure checks
  • adds negative grip work, opposing along-path impulse, wrist work, peak-force, distal-energy, and Pareto metrics
  • exposes the analysis in a PyQt Drift Transfer tab without duplicating solver physics
  • fails closed for unsupported model tiers and states the proximal-link/anatomical boundary

Verification

  • 22 scoped model and GUI tests pass
  • Ruff passes on all changed Python
  • module-size budget passes
  • full pendulum baseline: 1,582 passed, 11 skipped; 52 unrelated failures and 27 unrelated fixture errors remain in legacy hub/scapula, simulation-panel, font, and perturbation tests

@dieterolson

Copy link
Copy Markdown
Collaborator

Superseded by #4450 (CONS-A4), which merges this PR together with #4080 into one merge boundary.

Containment verified by ancestry, not by title: verify_coverage.sh reports covered=2 NOT-covered=0 against consolidated/docs-pendulum-2026-08-13, so research/shoulder-velocity-drift-transfer is a true ancestor of #4450 and closing this drops nothing. The branch is not deleted.

This PR's content is carried across byte-for-byte and required no changes. It merged into #4080 with zero conflicts, and all 10 of its files were taken from this branch's own head rather than from the merge result — this branch forked from current main (3e8959915) and so is free of the pre-commit formatting churn that #4080 carried into src/pendulum_simulator/. That churn was reverted in the consolidation, which incidentally removes the pendulum-tree collision STATE.md predicted against #4438.

Closes #4406 and Supports D-sorganization/UpstreamDrift#8551 are carried over unchanged, along with the SPEC.md §12 Change Log row.

Verified on the consolidated branch: lint clean and all 5 changed .py files already formatted under the CI-pinned ruff 0.14.10, and double_pendulum_golf.transfer_strategy imports cleanly exposing TransferSignals, TransferSummary, double_pendulum_transfer_signals, pareto_front, summarize_transfer. The pytest run could not be completed locally because pytest-qt aborts at configure time with ImportError: DLL load failed while importing QtCore — the known PyQt6 6.10 / Qt6Core.dll fault on this machine, an environment problem rather than a defect in this PR.

Auto-merge was disarmed here before #4450 was opened so this cannot merge itself and duplicate the content.

auto-merge was automatically disabled August 14, 2026 04:53

Pull request was closed

dieterolson added a commit that referenced this pull request Aug 15, 2026
…diagnostics (#4450)

CONS-A4. Consolidates the last two remaining open Tools PRs into one squash commit.

Supersedes and closes:
  * #4080  jules-12248824925126103807-8eacfe8f  - completist data audit + report
  * #4411  research/shoulder-velocity-drift-transfer - pendulum drift-transfer

Containment verified by ancestry before either was closed: verify_coverage.sh
reported covered=2 NOT-covered=0 against consolidated/docs-pendulum-2026-08-13,
so both head refs are true ancestors of this commit.

Two unrelated subsystems kept in one PR because they provably do not interfere -
#4411 merged into #4080 with zero conflicts and their final file sets are
disjoint - and because every extra PR costs ~28 workflow runs and ~4 self-hosted
fleet slots, which is the problem this consolidation drive exists to fix.

From #4411 (closes #4406, supports D-sorganization/UpstreamDrift#8551): a
model-neutral transfer-signal contract with exact drift/control grip-force
closure checks, phase-window work/braking/impulse metrics, mixed-objective
Pareto ranking, a qualified double-pendulum adapter, and a PyQt Drift Transfer
tab that fails closed for unqualified model tiers. Carried across byte-for-byte
from its own head, which forked from current main and so is free of the
formatting churn #4080 swept through src/pendulum_simulator/.

From #4080: regenerated completist scan data (5 .jules/completist_data/*.txt),
Completist_Report_2026-08-02.md, 6 new Issue_0NN_*.md, 4 renames, the
COMPLETIST_LATEST.md refresh, and - the most immediately valuable part - two
fleet-load fixes hoisting cheap `if:` pre-filters onto the pick-runner jobs of
Jules-Issue-Mention-Handler.yml and PR-Comment-Responder.yml, so a non-matching
comment costs zero d-sorg-fleet capacity instead of occupying two runners to be
skipped one job later.

Reverted from #4080:
  * 90 deleted documentation files restored - 19 dated historical
    Completist_Report_*.md (2026-03-08..2026-07-23), 7 hand-written
    docs/assessments/issues/ISSUE_*.md, 57 generated Issue_NNNN_*.md, and
    docs/development/professional-scada-epic.md. An agent regression, not tool
    behaviour: the PR body describes no deletion, and
    scripts/analyze_completist_data.py has no unlink/rmtree/remove - it only
    globs ISSUES_DIR to deduplicate and count. The regenerated set also restarts
    numbering at Issue_005 instead of continuing from Issue_2027, so it is not a
    superset of what it removed.
  * A stale-base removal of the two Bolt learnings main gained from #4071/#4176.
  * ~290 files of pre-commit formatting churn (commits ba3730a, 35bec2d,
    c70755b). It was produced by a ruff build disagreeing with the CI-pinned
    0.14.10 - 281 of 299 changed .py files failed ruff format --check under the
    pin - it displaced `# noqa` comments into uselessness (9 live F841 errors,
    a UP017 rewrite, 2 lost SLF001 suppressions), and it reformatted
    ruff-excluded trees. 280 of 295 were proven content-neutral by
    format-normalisation before reverting; the other 15 by provenance.
  * 6 committed .codex-worktrees/ gitlinks removed (unreachable on any remote).

Net: 323 files -> 29; 299 changed .py files -> 5.

Closes #4406

Verification: ruff check + ruff format --check clean under the CI-pinned 0.14.10;
0 files fall inside CI's gated set since the only changed .py are the 5 under the
excluded src/pendulum_simulator/ tree, checked anyway and clean;
double_pendulum_golf.transfer_strategy imports cleanly; no conflict markers; no
bare `from datetime import UTC`; zero gitlinks. #4411's pytest run could not be
completed locally - pytest-qt aborts with ImportError on QtCore, the known
PyQt6 6.10 / Qt6Core.dll fault on that machine, not a defect.
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.

Add Shoulder-Velocity Drift-Transfer Diagnostics and Optimization to the Pendulum Simulator

1 participant