Skip to content

feat(bernese): CODSPP-QC parse + a-priori/obs triage (RH-005 core) - #41

Merged
alfieprojectsdev merged 3 commits into
docs/bernese-training-notesfrom
feat/rh-005-codspp-tropo
Jul 2, 2026
Merged

feat(bernese): CODSPP-QC parse + a-priori/obs triage (RH-005 core)#41
alfieprojectsdev merged 3 commits into
docs/bernese-training-notesfrom
feat/rh-005-codspp-tropo

Conversation

@alfieprojectsdev

Copy link
Copy Markdown
Owner

RH-005 (core) — CODSPP-QC parse + a-priori/obs triage (readiness gap #9)

Stacked on #38 (branched off docs/bernese-training-notes); base retargets to main once #38 merges. Sanitizer-style detection core of the M-size RH-005; the auto-recovery actions are the remainder (below).

Problem

CODSPP (BPE jobs 301/302) is code single-point positioning run before the phase solution. Its per-cluster output (OUT/SPP_YYYYDDDs_NNN.OUT) reports, per station, an RMS OF UNIT WEIGHT and a coordinate correction table (NEW- A PRIORI). During the training week staff eyeballed those to separate two failure modes by hand:

  • Bad a priori — high RMS and a large coordinate shift → the .CRD seed is wrong; CODSPP found the right spot. Free fix: re-seed from the CODSPP NEW coords and retry.
  • Bad observations — high RMS but small shift → the data is bad; no auto-fix, alert a human.

Change — codspp_qc.py

  • parse_codspp_output()CodsppStation: station code, RMS OF UNIT WEIGHT, BAD/USED OBSERVATIONS, X/Y/Z NEW- A PRIORI deltas, and coord_shift_m (Euclidean magnitude). Missing fields degrade to None, never raise.
  • classify_codspp()ok / bad_apriori / bad_obs / unknown, with tunable rms_threshold_m (default 3) and shift_threshold_m (default 1). CODSPP code solutions normally sit ~1 m RMS — defaults must be tuned against a real network before unattended use.
  • parse_codxtr_summary() reads the combined CODXTR worst-station MAX. RMS / MAX. BAD lines.

Verification

Parsed/classified against the real CUSV 0840 SPP block (RMS 1.03 m, shift 0.26 m → ok). test_codspp_qc.py +9, ruff + mypy clean. (Tests run via the already-synced rh-004 worktree venv + PYTHONPATH — deliberately no uv sync while the BPE final solve was running, after a uv sync I/O storm hung the run earlier today.)

RH-005 remainder (follow-up, tracked in backlog)

Developed under the git-worktree protocol (.trees/rh-005-codspp-tropo).

CODSPP (BPE 301/302) reports a per-station RMS OF UNIT WEIGHT and a
NEW- A PRIORI coordinate correction. Those two numbers separate the two
failure modes staff triaged by hand in the training week (gap #9):
high RMS + large coordinate shift = bad a priori (seed .CRD wrong, free
auto-fix by re-seeding from CODSPP NEW coords); high RMS + small shift =
bad observations (data fault, needs a human).

codspp_qc.py:
- parse_codspp_output(): station code, RMS OF UNIT WEIGHT, BAD/USED
  OBSERVATIONS, X/Y/Z NEW- A PRIORI deltas -> coord_shift_m. Missing
  fields degrade to None, never raise.
- classify_codspp(): ok / bad_apriori / bad_obs / unknown, with tunable
  rms + shift thresholds (defaults 3 m / 1 m; CODSPP code solutions sit
  ~1 m, tune on a real network).
- parse_codxtr_summary(): combined CODXTR MAX. RMS / MAX. BAD worst-station.

Verified against the real CUSV 0840 SPP output. test_codspp_qc.py +9,
ruff + mypy clean (run via the rh-004 worktree venv to avoid a uv sync
while the BPE final solve was running).

RH-005 remainder: the re-seed ACTION (gap #9) and the PID-322 tropo
quarantine (gap #11) — tracked in the backlog. Developed in worktree
.trees/rh-005-codspp-tropo.
@coderabbitai

coderabbitai Bot commented Jul 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c245111a-317a-411b-b0b3-d00db1207a7c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/rh-005-codspp-tropo

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.

R740 orchestrator hardening: per-session RINEX validator (RH-001) + parameterized BPE run (RH-002) + training-week docs
# Conflicts:
#	docs/project_documentation/ticket_backlog.md
@alfieprojectsdev
alfieprojectsdev merged commit 692e0dc into docs/bernese-training-notes Jul 2, 2026
1 check was pending
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