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.

Current authority

one Comet Analyzer tab
→ one WLightCurves implementation
→ one WLIGHTCURVES_POLICY identity
→ immutable typed targets and datasets
→ one 1..N workspace

The historical merger gate retains release = R144 for traceability and adds qualified_through = R187.

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 n is 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.

ComponentSource-reported result
Cumulative cutoverPASS
R181 automatic Y envelopePASS
R182 Auto rangePASS
R183 scenario contractPASS
R184 scenario GUI/runtimePASS
R185 1..N unificationPASS
R186 typed-target cleanupPASS
R187 final integrationPASS

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

  1. Remove the incorrect deg suffix from the dimensionless Marcus d_90 parameter.
  2. Add an explicit Legacy pooled-fit preset when old Analyzer result reproduction is required.
  3. 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