R187 final Comet Analyzer integration
R187 is the current cumulative authority for the completed Analyzer/Comparison merger remediation. It adds no scientific calculation or user-data transformation; it qualifies and documents the final one-workspace architecture.
1..N state ownership
- returns and formula documents are target-scoped;
- channel visibility and Fit Groups are global workspace policy;
- Independent fit is valid for 1..N targets;
- Shared
nis available only for two or more compatible targets; - formula editors navigate the active target while validation commits all selected target documents atomically.
Automatic-range policy
Automatic X is determined only from visible observations. Once that X interval is established, observation points, model/formula curves and the Bortle reference may contribute to automatic Y inside it. A model must never extend automatic X.
Auto range is a cached view command. Manual USER ranges remain governed by the R163 identity/invalidation contract.
Light Curve Scenario boundary
R183 defines one portable .kopr-lc.json scenario for 1..N targets. R184 requires transactional GUI/runtime restore: validation completes before the restored workspace replaces the committed state.
The scenario path reuses the current typed target, formula, channel and fit architecture; it is not a legacy Comparison runtime.
Typed-target cleanup
Current target loading is typed and immutable. The active production route does not use type_codes or an active self.script. This prevents historical script-shaped state from becoming a parallel source of target identity or behavior.
Compatibility and migration
wanalyzer.py and wcomparison.py are deprecated aliases to the canonical implementation. legacy_comparison_import.py is a one-way migration-only parser and must remain isolated from current runtime state, scenario loading and release identity.
R187 release gate
r187_comet_analyzer_final_integration_release_gate.py composes the current R181–R186 component gates and checks the cutover, automatic Y envelope, Auto range, scenario contract and restore, 1..N unification, typed-target cleanup and current terminology.
| Component | Source-reported result |
|---|---|
| Cumulative cutover | PASS |
| R181 automatic Y envelope | PASS |
| R182 Auto range | PASS |
| R183 scenario contract | PASS |
| R184 scenario GUI/runtime | PASS |
| R185 1..N unification | PASS |
| R186 typed-target cleanup | PASS |
| R187 final integration | PASS |
Qualification boundary
The current Analyzer regression suite reports 384 passed, 3 skipped and 0 failed. The skipped modules are the real PyQt5 gates from R154, R161 and R179. R187 is therefore PASS_HEADLESS, not a complete native GUI qualification.
Current R135–R187 behavioral gates are the release criterion. R100–R134 tests characterize intermediate architectures and are not the R187 qualification command.
Deferred audit items
- Remove the incorrect
degsuffix from the dimensionless Marcusd_90parameter. - Add an explicit Legacy pooled-fit preset when old Analyzer result reproduction is required.
- Decide and implement the final policy for generic, clear or unfiltered CCD data.
These items are deliberately not described as completed by R187.
Evidence
R187 final integration report · Compact reference · Scenario user guide