feat(bernese): CODSPP-QC parse + a-priori/obs triage (RH-005 core) - #41
Merged
alfieprojectsdev merged 3 commits intoJul 2, 2026
Merged
Conversation
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.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
alfieprojectsdev
added a commit
that referenced
this pull request
Jul 1, 2026
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
merged commit Jul 2, 2026
692e0dc
into
docs/bernese-training-notes
1 check was pending
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
RH-005 (core) — CODSPP-QC parse + a-priori/obs triage (readiness gap #9)
Stacked on #38 (branched off
docs/bernese-training-notes); base retargets tomainonce #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, anRMS OF UNIT WEIGHTand a coordinate correction table (NEW- A PRIORI). During the training week staff eyeballed those to separate two failure modes by hand:.CRDseed is wrong; CODSPP found the right spot. Free fix: re-seed from the CODSPPNEWcoords and retry.Change —
codspp_qc.pyparse_codspp_output()→CodsppStation: station code,RMS OF UNIT WEIGHT,BAD/USED OBSERVATIONS, X/Y/ZNEW- A PRIORIdeltas, andcoord_shift_m(Euclidean magnitude). Missing fields degrade toNone, never raise.classify_codspp()→ok/bad_apriori/bad_obs/unknown, with tunablerms_threshold_m(default 3) andshift_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-stationMAX. RMS/MAX. BADlines.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 nouv syncwhile the BPE final solve was running, after auv syncI/O storm hung the run earlier today.)RH-005 remainder (follow-up, tracked in backlog)
bad_apriori, rewrite the station's.CRDfrom CODSPPNEWcoords and re-run — the applied/orchestrator layer.Developed under the git-worktree protocol (
.trees/rh-005-codspp-tropo).