Skip to content

openspec: atmospheric-measurement-propagation — refraction + ionospheric delay biases with correction hooks (proposal + design + specs + tasks) - #144

Merged
montge merged 2 commits into
developfrom
feature/atmospheric-measurement-propagation
Jul 16, 2026
Merged

openspec: atmospheric-measurement-propagation — refraction + ionospheric delay biases with correction hooks (proposal + design + specs + tasks)#144
montge merged 2 commits into
developfrom
feature/atmospheric-measurement-propagation

Conversation

@montge

@montge montge commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

OpenSpec change artifacts for atmospheric-measurement-propagation — the fifth and final change of the propagation tier.

Why

The microwave radar path models the atmosphere only as SNR loss (ITU-R P.676): range/elevation measurements carry zero refraction bending and zero ionospheric delay — synthetic truth is unphysically clean, and trackers never face the dominant real-world measurement-bias class.

What the change specifies

  • tropospheric-refraction (new): Bean–Dutton exponential-profile ray integral (deterministic fixed quadrature) for elevation bending + excess range, 4/3-Earth cheap tier with a mandatory cross-check band, explicit low-elevation validity floor, and corrections whose residual after mismatched-parameter correction is measured and bounded (corrections are models; the tests say how good)
  • ionospheric-group-delay (new): K·STEC/f² with fetched constant provenance, thin-shell obliquity mapping, configured VTEC only (no space-weather ingestion), exact 1/f² and L/S/X-band magnitude tests, and a unit-checked Chapman→VTEC bridge to the existing OTHR machinery (which stays untouched)
  • biased-measurement-generation (new): opt-in bias-then-noise application in synthetic radar generation, default OFF with bitwise benchmark invariance, and the demonstration the tier was building toward: biased truth + uncorrected tracker degrades MOTP/ANEES measurably; corrections at the RAE→Cartesian seam recover near-honest statistics — the eval-consistency gates catching a physics-modeling gap end-to-end

Design notes

  • Validation is deliberately component-level with fetched published values — no python fixture generator (closed forms + a fixed quadrature don't warrant one; recorded in the design so review doesn't mistake it for an omission)
  • No committed scenario TOML gains knobs or bounds (the tracker_noise_sigma API/test-only precedent)
  • Out of scope: MODTRAN/NRLMSISE, live TEC, OTHR changes, multipath, filter-side bias estimation (future §3.4 work)

openspec validate --all --strict: 46/46.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Added a structured proposal and design documentation for atmospheric effects on radar measurements.
    • Documented tropospheric refraction and ionospheric delay models, correction approaches, validity limits, and configuration expectations.
    • Defined opt-in measurement bias behavior while preserving existing benchmark results when disabled.
    • Added specifications for validation, deterministic demonstrations, benchmark comparisons, and migration tasks.
    • Added OpenSpec metadata and a phased implementation checklist.

… design + specs + tasks)

The last propagation-tier change: deterministic atmospheric measurement
biases for microwave radar — Bean-Dutton exponential-profile refraction
(elevation bending + excess range, 4/3-Earth cheap tier + cross-check,
explicit low-elevation validity floor) and ionospheric group delay
(K*STEC/f^2, thin-shell obliquity, configured VTEC only, Chapman->VTEC
bridge to the OTHR machinery) — plus inverse-model correction hooks at
the RAE->Cartesian seam with measured residual-honesty bounds, opt-in
bias application in synthetic generation (default OFF, benchmarks
bitwise-invariant), and the falsifiability demonstration: biased truth
+ uncorrected tracker degrades MOTP/ANEES measurably, corrections
recover — the eval-consistency layer catching a physics-modeling gap.
Validation is component-level with fetched published values (no python
fixture generator — recorded deliberately in the design).

openspec validate --all --strict: 46/46.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 16, 2026 19:21

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@montge, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ea8cbae7-885c-4f1e-9cf2-fb24df48f8ef

📥 Commits

Reviewing files that changed from the base of the PR and between f182eb8 and 0a77fd0.

📒 Files selected for processing (1)
  • openspec/changes/atmospheric-measurement-propagation/tasks.md
📝 Walkthrough

Walkthrough

This change adds an OpenSpec proposal for atmospheric measurement propagation, covering tropospheric refraction, ionospheric delay, opt-in biased measurement generation, inverse correction hooks, validation scenarios, benchmark invariance, and implementation tasks.

Changes

Atmospheric Measurement Propagation

Layer / File(s) Summary
Design and scope
.openspec.yaml, proposal.md, design.md
Defines the propagation scope, modeling decisions, generation and correction order, migration plan, exclusions, risks, and OpenSpec metadata.
Propagation and measurement requirements
specs/tropospheric-refraction/spec.md, specs/ionospheric-group-delay/spec.md, specs/biased-measurement-generation/spec.md
Specifies refraction tiers, ionospheric delay and Chapman integration, opt-in biasing, inverse correction, deterministic behavior, and benchmark invariance scenarios.
Implementation and verification plan
tasks.md
Lists planned propagation work, synthetic radar integration, benchmark demonstrations, invariance checks, and validation gates.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is clearly related to the PR and accurately summarizes the refraction, ionospheric delay, and correction-hook changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/atmospheric-measurement-propagation

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@openspec/changes/atmospheric-measurement-propagation/tasks.md`:
- Line 32: Update task 5.1’s documented OpenSpec validation command to include
the required --no-interactive flag, preserving the existing --all and --strict
options and all other gate commands unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 18ede1f3-7756-454c-a382-76f4cbcd010a

📥 Commits

Reviewing files that changed from the base of the PR and between befc7f7 and f182eb8.

📒 Files selected for processing (7)
  • openspec/changes/atmospheric-measurement-propagation/.openspec.yaml
  • openspec/changes/atmospheric-measurement-propagation/design.md
  • openspec/changes/atmospheric-measurement-propagation/proposal.md
  • openspec/changes/atmospheric-measurement-propagation/specs/biased-measurement-generation/spec.md
  • openspec/changes/atmospheric-measurement-propagation/specs/ionospheric-group-delay/spec.md
  • openspec/changes/atmospheric-measurement-propagation/specs/tropospheric-refraction/spec.md
  • openspec/changes/atmospheric-measurement-propagation/tasks.md

Comment thread openspec/changes/atmospheric-measurement-propagation/tasks.md Outdated
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

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.

2 participants