Skip to content

Stabilize linear-update covariance symmetrization - #5256

Open
FlorianPfaff wants to merge 6 commits into
mainfrom
agent/stabilize-linear-update-symmetrization
Open

Stabilize linear-update covariance symmetrization#5256
FlorianPfaff wants to merge 6 commits into
mainfrom
agent/stabilize-linear-update-symmetrization

Conversation

@FlorianPfaff

@FlorianPfaff FlorianPfaff commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Bug

linear_update_planning._symmetrized(...) averaged covariance-like matrices as

0.5 * (matrix + matrix.T)

For large but finite values, the intermediate addition can overflow even though the mathematically correct symmetric average is finite. A concrete one-dimensional covariance equal to 0.75 * np.finfo(float).max therefore raises FloatingPointError under strict NumPy overflow handling before the planner can perform an otherwise valid update.

This helper is used both while validating component covariance matrices and when symmetrizing nominal/effective innovation covariance matrices.

Fix

Scale each operand before adding it:

0.5 * matrix + 0.5 * matrix.T

The expression is algebraically equivalent for ordinary finite inputs but avoids doubling a large entry before the factor of one half is applied.

Regression coverage

Add a public-path regression through plan_linear_measurement_update(...) with a covariance of 0.75 * np.finfo(float).max under np.errstate(over="raise", invalid="raise"). The test verifies that the plan remains accepted and that the nominal innovation covariance stays finite and exactly retains the large finite value.

Validation

  • independently reproduced the pre-fix FloatingPointError: overflow encountered in add;
  • verified the scale-first symmetric average remains finite and equals the original covariance;
  • final PR diff is limited to one production-line replacement and a focused 17-line regression test;
  • branch is based on current main (f196ec41d1d8681e279936db9f1a0a3abfa276e7);
  • GitHub Actions is authoritative for the full test, lint, security, documentation, and integration matrix.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

MegaLinter analysis: Success

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ COPYPASTE jscpd yes no no 15.81s
✅ JSON prettier 7 0 0 0 0.58s
✅ JSON v8r 7 0 0 3.12s
✅ MARKDOWN markdownlint 68 0 0 0 1.07s
✅ MARKDOWN markdown-table-formatter 68 0 0 0 0.46s
✅ PYTHON black 1866 87 0 0 56.71s
✅ PYTHON isort 1866 140 0 0 1.91s
✅ REPOSITORY betterleaks yes no no 1.96s
✅ REPOSITORY checkov yes no no 34.92s
✅ REPOSITORY gitleaks yes no no 10.76s
✅ REPOSITORY git_diff yes no no 0.16s
✅ REPOSITORY secretlint yes no no 47.69s
✅ REPOSITORY syft yes no no 3.65s
✅ REPOSITORY trivy-sbom yes no no 4.42s
✅ REPOSITORY trufflehog yes no no 20.63s
✅ YAML prettier 11 0 0 0 0.44s
✅ YAML v8r 11 0 0 7.94s
✅ YAML yamllint 11 0 0 0.44s

Notices

📣 MegaLinter 9.5.0 is out! Discover the new features and security recommendations in the release announcement. (Skip this info by defining SECURITY_SUGGESTIONS: false)

See detailed reports in MegaLinter artifacts

Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@9.6.0 --custom-flavor-setup --custom-flavor-linters PYTHON_BLACK,PYTHON_ISORT,COPYPASTE_JSCPD,JSON_V8R,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_GITLEAKS,REPOSITORY_BETTERLEAKS,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

@FlorianPfaff
FlorianPfaff marked this pull request as ready for review August 7, 2026 17:54
@FlorianPfaff
FlorianPfaff enabled auto-merge (squash) August 7, 2026 17:54
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