Troubleshooting and diagnostics

A symptom-based guide for startup, calibration, astrometry, stacking, catalogue access and comet photometry in the current KOPR live build.

Source-verified Corrective actions combine the audited KOPR/WSL baseline with the supplied Scientific/Compact implementation documentation dated 24 July 2026.

Preserve the evidence. Before retrying a failed reduction, keep the original images, the exact terminal output, the WStack log, generated CSV/JSON reports and any partially created FITS products. Do not edit the original science data to make an error disappear.

First response to any failure

  1. Read the final error and the lines immediately above it. WStack reports the active stage, current file and often the exact rejection reason.
  2. Identify the first failing stage. A later photometry error may be caused by an earlier metadata, calibration, WCS or pair-contract problem.
  3. Use the generated reports. Master creation writes frame and group CSV reports, and WStack stores local state, manifests and QC diagnostics.
  4. Retry only after correcting the cause. Repeating the same operation with the same inputs normally reproduces the same result and can obscure which files belong to which attempt.

Useful general references: installation, configuration, WStack workflow, CCD photometry and data/FITS reference.

Startup and installation

SymptomLikely causeCorrective action
ModuleNotFoundErrorThe KOPR virtual environment is not active or a required package is absent.Activate .venv, install docs/files/kopr-python-requirements.txt, then run check-kopr-install.py.
Linux Qt cannot connect to a displayKOPR is being launched from a text-only session or SSH session without a graphical display.Run it in a graphical desktop or configure display forwarding. Native Windows KOPR does not require WSLg.
Relative files or directories are not foundKOPR was started from a different current working directory.Change into the directory containing kopr.py before running python kopr.py.
Configuration incompleteObserver data or one of the required equipment lists is empty.Open Configuration → Settings, save the missing observer/location/telescope/camera/eyepiece entries, close the dialog with OK, then select the active items from the Configuration menu.
KOPR cannot create config-files/, comet-data/ or obs-data/The application directory is read-only or owned by another user.Move KOPR to a user-writable directory. Do not run the GUI as administrator/root merely to bypass permissions.
Windows KOPR starts, but astrometry cannot start WSLWSL is missing, outdated, not initialized or blocked by disabled virtualization.Run wsl --status and wsl --list --verbose; update WSL and enable the required Windows/BIOS virtualization features.
data/de440s.bsp is missingThis is normal in R22. Use the first-start progress dialog. Cancel continues with the legacy ephemeris fallback; Retry starts another verified attempt without restarting KOPR. A command-line attempt is available through python de440s_fetch.py.
The DE440s download fails or is cancelledKOPR remains usable in legacy ephemeris mode. Correct the network, permission or free-space problem and press Retry. Only a verified file is installed atomically; temporary .part data are cleaned up.
A DE440s kernel already exists elsewhereSet KOPR_DE440S to the verified kernel path before starting KOPR.

Working directory and input files

Message or displayMeaningAction
(no input FITS frames)The FITS-only working index is empty. Pending DSLR RAW may have failed materialization or the directory contains no usable FITS.Review the extraction result or DSLR RAW extraction unavailable message, install rawpy/LibRaw when required, and reopen the directory. See DSLR RAW materialization.
(astrometry has not produced any WCS files yet)No solved products are registered for the current directory.Complete calibration, enable the intended CALIB frames, then run Astrometry.
(no stack files)No final WStack products were found.Run a star/comet stack, or open the directory that contains the final ST_.../CO_... files.
Cannot open directoryThe path disappeared, is inaccessible, or cannot be scanned.Verify the mount, path and read permissions. Re-open the directory rather than editing pipeline_state.json manually.
The extraction progress opens immediately after selecting a DSLR directoryThis is the intended R74 behavior: pending or stale representations are materialized automatically.Allow the batch to finish or use its cooperative Cancel button. There is no separate extraction decision dialog.
DSLR RAW extraction unavailablerawpy/LibRaw is not available while pending or stale RAW sources require decoding.Install rawpy and restart KOPR. Existing FITS may still open; if no usable FITS exists, the previous session is preserved.
Extraction Cancel did not stop the current file immediatelyCancellation is cooperative between RAW files.Allow the active decoder to finish safely. Completed FITS remains; remaining RAW sources are processed automatically next time the directory is opened.
A TG FITS target is skipped as conflictingThe deterministic target is foreign, unreadable or represents a second genuine direct RAW materialization. R81 no longer treats CALIB/WCS/CO/ST derivatives with historical RAWFILE/RAWEXT as competing direct representations.Check RAWREP and the product-identifying cards. Preserve or move a genuinely foreign/direct conflict; do not delete valid derived products merely because they record RAW ancestry.
Reopening a DSLR directory reports several representations of one RAWOn an older build, derived products may have inherited RAWFILE/RAWEXT and been mistaken for direct TG FITS.Use R81 or newer. Direct representations use RAWREP=T; derivatives are recognized by RAWREP=F, product cards or legacy names. Two genuine direct representations still require manual resolution.
A physical CR2/NEF/etc. is not visible on the Raw pageThis is the intended R74 FITS-only session policy.Use the corresponding verified _TG.fits. The Raw page name denotes the workflow stage, not the physical file format.
Unsupported stackThe FITS file lacks a recognized final STACKTYP, is damaged, or is an ordinary exposure that only happens to contain a stack-like keyword.Inspect the primary header. A measurement product must identify COMET/COMET-AUTO/STARS and must satisfy the documented stack contract.
input FITS contains no 2D imageNo two-dimensional image HDU could be selected.Check the file with Astropy or another FITS viewer. Export a genuine image FITS; do not rename a table or empty container to .fits.

Master darks and master flats

The completion dialog includes accepted/rejected counts, primary reasons and a detailed section. The authoritative per-frame records are written to masterdark_QC_report.csv or masterflat_QC_report.csv; group reports explain why a compatible group was not created.

Reported reasonInterpretationAction
missing EXPTIMEThe calibration frame cannot be grouped or safely matched.Correct the acquisition/export metadata. Do not invent an exposure unless it is independently known.
missing FILTER or missing BINNING on a flatFlat compatibility is ambiguous.Add the correct metadata during a controlled export, or use source files that preserve it.
too many NaN/Inf valuesA substantial part of the frame is not finite.Inspect the image and the producing software. Replace corrupted frames.
excessive saturated-pixel fractionThe measured fraction exceeds the hard limit displayed by KOPR.Inspect actual pixel values and the detector saturation metadata (SATURATE, SATLEVEL, MAXADU, ADC-MAX). Retake overexposed flats/darks; do not raise the hard limit to accept invalid data.
excessive hot-pixel fractionA dark-like exposure has an implausibly large hot-pixel population.Check exposure type, temperature, gain/offset and file scaling. A LIGHT or stretched image may have been selected as a dark.
excessive bright-local-outlier fractionA flat contains too many stellar or local bright structures.Use uniformly illuminated flats and reject frames contaminated by stars, moving shadows or reflections.
median outside the allowed ADC rangeThe flat is too dark or too close to the detector limit for reliable normalization.Retake flats at a suitable exposure. Confirm that the header detector limit matches the stored data scale.
whole-frame outlierThe frame median/noise or illumination pattern is inconsistent with its group.Inspect the frame and acquisition sequence. Keep it rejected unless there is a documented reason the group itself is wrong.
loading errorThe file could not be decoded as a supported image.Open that specific file independently and compare it with accepted files from the same camera.
No master ... group is eligibleAfter compatibility grouping and QC, no group has enough usable frames or required metadata.Read both CSV reports and the detailed dialog. Correct the dominant reason rather than combining incompatible groups manually.
No matching dark-flat/bias for a flatThe flat correction stage cannot select one unique compatible offset master.Create a compatible dark-flat, or a bias where the workflow permits it. Resolve ties and metadata mismatches in the master library.
the flat cannot be normalized after correctionThe corrected flat has no stable positive median.Inspect the selected offset master and flat exposure. This is not repaired by synthetic normalization.

Unexpected master-flat correction

Stop before accepting the build and review the R75 correction guard. Confirm that the proposed bias, dark-flat or dark correction belongs to the flat group. The guard is intended to prevent a correction from being applied silently.

LIGHT calibration

MessageCauseAction
frame has no valid pre-calibration QC recordThe input did not pass or retain the raw-LIGHT QC state expected by the calibration run.Return to Raw, rescan and run/select the intended QC inputs.
no compatible master dark or master flat foundThe library has no complete compatible pair.Compare exposure, temperature, dimensions, binning, instrument, gain, offset, read mode and filter. Build the missing compatible master.
only a master flat was found / only a master dark was foundThe current workflow forbids one-sided calibration.Provide both compatible masters. Do not treat a partial calibration as equivalent.
CALTYPE=... but DARK is requiredA BIAS or DARKFLAT was selected where LIGHT calibration requires a master DARK.Correct the master library and metadata.
Master exposure or temperature does not match LIGHTThe difference exceeds the configured tolerance.Create a closer master group or correct erroneous header metadata. KOPR does not silently scale an incompatible dark.
Master dimensions differ from LIGHTROI, camera mode or binning differs.Use masters created with the same detector geometry.
Master flat has invalid/zero pixels above the limitDivision by the flat would corrupt too much of the output.Rebuild the flat from better source frames and verify its offset correction.

Review processing_manifest.json after calibration. It records source-to-calibrated paths and the selected master files.

Scientific and Compact output

SymptomMeaning and action
Compact was selected but one file is ScientificThis is expected when the required QSTEP exceeds 0.25 × sigma_local. Inspect REQMODE, QSAFE, QFALLBK, QNOISE and QMAX. KOPR deliberately avoids clipping or unsafe coarse quantization.
The whole FITS is not 50% smallerOnly the primary science payload changes from four to two bytes per pixel. Coverage, clipping, saturation, provenance and tracking extensions remain.
Peak RAM is not halved in Compact modeExpected. Calibration, reprojection, stacking and photometry still use floating-point working arrays.
A Compact file appears as floating point after readingExpected. Astropy applies BSCALE/BZERO/BLANK and returns physical values.
Header says Compact but scaling cards are inconsistentTreat this as a damaged or non-conforming FITS. Preserve the file, record the science HDU and scaling cards, and run the validation tool before measurement.

Use validate_scientific_compact.py --compare scientific.fits compact.fits --json pair-validation.json to quantify pixel and optional aperture differences. See Scientific and Compact FITS output.

Astrometry and index installation

Message or symptomMeaningAction
solve-field was not found on PATH (Linux/non-Windows)The native Astrometry.net command is not installed or is outside PATH.Install the system package and verify command -v solve-field in the same environment used to start KOPR.
KOPR found neither native solve-field nor wsl.exeNative Windows has no usable solver backend.Install WSL 2 and Astrometry.net in Ubuntu, or provide a native Windows solver on PATH.
WSL is installed, but solve-field was not found in the selected distributionThe default/selected WSL distribution does not contain Astrometry.net.Run sudo apt install astrometry.net in that distribution. If another distribution contains it, set KOPR_WSL_DISTRIBUTION to its exact name.
WSL could not translate the Windows pathwslpath cannot map the KOPR/data/work/index location.Use an ordinary local C: or D: path. Avoid an unavailable network/UNC path and verify the drive is visible as /mnt/c, /mnt/d, etc.
No index download follows a solver errorSolver preflight now intentionally runs before index installation.Repair the solver backend first. KOPR will check/download indexes only after preflight succeeds.
No 42xx indexes were foundThe local 4200-series index directory is empty or incomplete.After solver preflight succeeds, use KOPR's downloader or install the required files into astrometry-index/4200/.
The index directory contains no FITS indexesA configured index path exists but contains no usable index FITS files.Correct the WStack path or complete the download. Remove stale .part files only after confirming no download is active.
Index download lists missing seriesOne or more requested 4206–4214 series were not completed.Retry with stable network access and enough disk space; partial files can resume.
no complete astrometry seed ... missing RA/DEC/scale_low/scale_highThe offline automatic chain and any explicit manual override did not produce complete position and scale constraints.Check FITS WCS/pointing, comet designation and active location/camera/telescope. To override automatic values, edit both RA/DEC or both scale limits in the dialog opened by Astrometry; clear both scale fields to return to automatic scale.
Unexpected automatic offline RA/DECThe value comes from the current automatic chain: FITS WCS/pointing first, otherwise the internal comet ephemeris. Per-group manual coordinates are stored in pipeline_state.json, not in general QSettings.Inspect the FITS header and session state before assuming stale preferences. For a bit-for-bit ephemeris audit, also record whether the runtime used de440s.bsp or the legacy fallback.
Internal ephemeris has no local orbital elementsThe comet designation is not present in the local element database.Update the orbital elements or add validated custom elements. Check designation syntax.
solve-field failed (return=...)The external solver started but exited unsuccessfully.Read the included tail of the solver log. Typical causes are wrong scale/position seed, missing indexes, too few detectable stars, a non-linear/stretched image or an invalid FITS.
WCS is far from the supplied seed or fails inverse validationThe solution is syntactically valid but geometrically inconsistent or on the wrong field.Correct the seed, scale and image metadata. Do not accept the file merely because WCS cards exist.
solve-field did not create a readable AXY source listThe WCS may be usable, but post-solve star-quality diagnostics could not be measured.Inspect the solver log and AXY output. Stacking still performs its own WCS preflight.
Blind online upload times out or reports no job IDnova.astrometry.net did not accept or complete the blind upload/job within the polling interval.Retry later and verify the API key and network. R48 does not send centre, radius, scale, parity or downsampling constraints; the returned centre/scale is used only after a successful job.
Online log repeatedly shows queued or solvingThe server job is still active. R48 reports periodic status heartbeats and intentionally does not request calibration yet.Wait for status=success or a terminal failure. Repeated no calibration data available polling is not expected.
Online job succeeds but calibration cannot be readThe server reported success but did not return a usable calibration payload.Preserve the job ID and log, retry later, or continue with offline Astrometry. Do not restore local upload constraints as a workaround.
SKIPPED_ANCHOR_FAILEDA required group anchor exhausted the three-stage solve strategy. With the recommended policy, the remaining group members were intentionally not retried under the same conditions.Open the anchor's Attempt 1–3 logs. Check seeds, scale/radius, index availability and the robust-copy diagnostics. Rerun after correction, or select Continue with independent seeds only for a heterogeneous series.
[FAILED] followed by several [SKIPPED] linesThis is the group anchor failure guard, not loss of files or settings.Use the group summary to identify the failed anchor. The calibrated inputs and group configuration remain available for another run.
[INDEX] available=... lists 4200 but not 4100The optional Tycho-2 4100 family is absent.Continue with 4200. Install 4107–4112 only when wider-field work needs the optional family; the automatic downloader remains 4206–4214.
Robust-copy attempt reports many replaced impulsesKOPR found isolated positive/negative extremes and replaced them only in a temporary solver input.Compare the count across frames and inspect the full attempt log. Multi-pixel stellar profiles should remain; the calibrated source FITS is not edited.

Direct Windows/WSL checks

wsl --status
wsl --list --verbose
wsl.exe -d Ubuntu -- sh -lc "command -v solve-field"
wsl.exe -d Ubuntu -- sh -lc "solve-field --help >/dev/null && echo SOLVER_OK"

Replace Ubuntu with the exact selected distribution name. After installing Astrometry.net or changing KOPR_WSL_DISTRIBUTION, close and restart KOPR so the cached backend is resolved again.

Scale or ephemeris differs from another program

Record the active source in the shared scale priority: solved WCS/online calibration, manual override, FITS metadata or active optics with validated binning. For comet positions, also record whether DE440s down-leg light-time or the fallback path was used. Guide, Tycho and Horizons comparisons are diagnostic; do not apply a universal arcsecond threshold to every comet and epoch.

Relative WCS quality control

After solving and again before stacking, KOPR compares star positions between frames. A valid-looking FITS WCS can still be rejected when relative matching is inaccurate.

ObservationInterpretation and action
relative WCS rejectedRead the reason, matched-star count/fraction and residual diagnostics. Inspect the rejected frame for tracking, clouds, incorrect WCS, duplicated fields or a different camera geometry.
Many frames rejected against one referenceThe reference itself may be poor. Review FWHM/elongation and choose a representative, well-solved frame before rerunning.
More than 25% rejectedKOPR requests explicit confirmation. Continue only when the remaining set is scientifically adequate and the rejection reasons are understood.
Rejected solved files disappear from AstroThis is expected: KOPR removes inaccurate WCS products where possible and clears stale CALIB→WCS state links.
Batch validation skipped after cancellationAlready completed WCS products remain, but are not trusted automatically; stack preflight will validate them again.

Stacking

SymptomCauseAction
No enabled WCS inputsAstro selections are off, missing or rejected.Enable only valid solved LIGHT frames. Re-run the Astro page scan after correcting state.
Science stack expects LIGHT/OBJECT/SCIENCE but another type is detectedA calibration master or non-science file entered the group.Remove it from the enabled Astro set and correct IMAGETYP.
Unknown stacking modeThe requested operation is outside the supported star/comet/pair modes.Use the GUI action and a supported combination method rather than editing state JSON.
Dimensions changed during processingAn input file was replaced or altered after preflight.Restore an immutable input set, reopen the directory and rerun.
Stacking cancelledThe user cancelled or did not confirm continuation after WCS rejection.Wait for the worker to finish cleanup. Treat partial temporary files as incomplete.
Unexpected crop or NaN bordersWCS overlap does not cover the entire reference geometry.Inspect NCONTRIB/NVALID, selected crop mode and rejected frames. NaN outside required coverage is intentional.
Sigma-clipping threshold errorThe requested sigma is below 3.0 or rejection-fraction settings are outside the accepted range.Use the GUI-supported values. The maximum-rejected-fraction metric is diagnostic, not permission to discard all samples in a pixel.

Stack Parameters stops before processing

R75 runs one explicit preflight before stack execution. Resolve the reported compatibility or required-input problem rather than repeatedly reopening the same processing path; the preflight is not a second stacking algorithm.

Performance, memory and concurrency

SymptomExplanation and action
Only one task appears activeR22 may choose serial execution for a small job, a one-CPU system, insufficient available RAM or scheduler initialization failure. This is an automatic safe fallback.
Only two calibration/reprojection tasks runThis is the fixed R22 ceiling for LIGHT calibration, row reprojection and sigma clipping.
No more than two solve-field processes runThis is the intended astrometry batch limit. Each solver uses an isolated working directory.
No thread or memory option exists in SettingsCorrect. These values are internal release contracts and are not user configurable.
Release behaviour is uncertainRun python3 validate_performance_release.py; use --json for machine-readable diagnostics.

See Performance and platform limits for the complete fixed-value table and target-machine checks.

ST/CO pairing and WCCD hand-off

MessageInterpretationAction
No matching comet or stars productOnly one alignment target is present, or grouping metadata do not identify the same reduction.Create the pair in one WStack run when possible. Keep both products together.
No matching non-empty PAIRIDThe products are not a validated current-schema pair.Select the reciprocal files produced together; do not combine unrelated legacy products by filename alone.
Invalid/unsupported PAIRVER or wrong PAIRROLEThe pair schema or roles are inconsistent.Regenerate the products with the current WStack version.
PAIRFILE does not point to the selected partnerA product was renamed, moved independently or paired with the wrong file.Restore the original pair names/location or regenerate. Avoid manually editing only one header.
Products are photometrically inconsistentFilter, method, frame count, pair identity or represented EXPTIME differ. WCCD accepts the Comet/Stars exposure comparison only within 0.001 s.Use products generated from the same enabled source set and same method. Do not substitute TOTEXP or a manually invented scale for the represented pixel exposure.
Stack Browse opens on keyboard focusR29 opens the chooser on Tab/Shift+Tab only when the receiving Comet/Stars path field is empty.For a populated path, Tab should only focus the field. Click the field, press Enter/Return or use Browse to intentionally reopen the chooser. Cancel preserves the existing path.
Stack Browse immediately reopensModal return or duplicate queued requests should be suppressed in R29.Confirm that the running build is R29 or later. If reproducible, report the exact click/key sequence and whether the path field was empty.
Camera dialog opens although the configured camera is correctCheck that Settings contains the native unbinned resolution and that the FITS source dimensions and binning reconstruct the same detector geometry. Exact and unique active-area-compatible matches should be accepted before the dialog is opened.Correct the camera geometry or FITS binning/source-dimension metadata. The 1370 × 1002, 3 × 3 MI C2-12000A reference reconstructs 4110 × 3006 and must not require confirmation.
SATCOMP=NONE or source-frame peak provider unavailableSource-frame saturation provenance is incomplete, but the scalar resolver may still provide a valid effective limit.Inspect the base, multiplier and effective threshold. Do not reject every star solely for missing provenance; retain flat-top and bleeding morphology rejection.
Effective saturation is much larger than 65535A SUM or other aggregate image can have pixel values above the per-frame/base detector limit. KOPR scales the base by an integer multiplier so the effective image-domain threshold is not below the finite image maximum.Verify the base limit and stack method. Do not replace the result with the observed maximum. For the audited 240P SUM stack, 65535 × 16 = 1048560 ADU.

Comparison scripts

SymptomAction
Cancel in Load/Save reports an empty filenameThis is fixed in R28. Current behaviour is an immediate return with the editor unchanged.
A missing comet from Add from list is not available afterwardsComplete the Add Comet dialog. KOPR reloads the record after the dialog; cancelling or failing to add it safely skips that item.
Non-ASCII text is damaged in a comparison scriptCurrent script file access uses UTF-8. Verify the file encoding and avoid saving it through software that rewrites it in a legacy code page.

Catalogues and network services

SymptomAction
0 stars found, looking for online data ...This is a fallback, not by itself an error. Wait for the terminal result. Verify WCS, field radius, filter and catalogue magnitude limit.
Connection timed out for VizieR, COBS or MPCConfirm internet/DNS access and retry later. Use local catalogues/data where supported. Do not interpret a network timeout as an empty astronomical field.
Star not foundThe catalogue query returned no usable star near the requested coordinates. Verify the position, WCS and catalogue/filter selection.
Elements not foundThe local comet database lacks the requested designation. Update orbital elements or correct the designation.
Selected catalogue returned no usable starsField, magnitude limit, filter conversion or WCS does not yield calibrators.Inspect the field and try an appropriate catalogue/limit. Do not force a zero point without accepted stars.
COBS rejects or misinterprets an APASS Sloan sourceCOBS magnitude-source codes are case-sensitive.Use R47 or later. APASS Sloan g′/r′/i′ must be AG/AR/AI; do not change the case of Gaia identifiers.

Reference stars are excluded at the 0.150-mag boundary

The R77 policy is strict: every accepted pair must differ by less than 0.150 mag. Exactly 0.150 mag fails. Inspect the scrollable Reference stars dialog to distinguish an observer-disabled star from one rejected by the derived global pairwise solution.

Photometric exposure and background

SymptomCause and action
Magnitude changes with local background levelCurrent R27 photometry subtracts local sky additively but never divides flux by it. Verify that the running build and documentation use net_flux / EXPTIME, not the removed historical sky-ratio convention.
Comet and Stars stacks fail exposure preflightThe numerical exposures represented by their pixels differ by more than 0.001 s or required exposure metadata are invalid. Regenerate a matched pair or correct the source metadata; do not force TOTEXP into EXPTIME.
A custom photometric scale is requestedR27 has no PHOTSCAL, KPRSCAL or user-entered scale. The accepted observation EXPTIME is the only normalization term.

ACF, centroid and Review dialog

SymptomCause and action
Review comet ACF… is disabledNo successful ACF Comet measurement is retained, or it was invalidated by a new observation/reset/different Comet FITS, a newer successful non-ACF measurement or an incompatible context. Stars-image, reference-star, catalogue and photometric-option changes alone do not invalidate Review.
Apply is refusedThe preview context_id or run_id no longer matches the active measurement. Close the stale dialog and open Review from the current measurement.
Reset returns to the last Apply rather than original SettingsExpected. Reset restores the original or most recently applied state of this measurement; Review parameters are not global Settings.
Legacy ACF cut (%) does not alter the production resultExpected. pa-adaptive-upper-v1 uses Upper limit (sigma); the percentage is retained only for legacy rollback.
Centroid stops before the brightest nearby pixelThe bounded shift protects the clicked comet identity. Check the click and Comet centroid max shift rather than enlarging the coma aperture.
Zoom resets after Measure comet againR81 preserves the current viewport when the Comet image is already active. The same guard applies to repeated star and tail measurement. A reset is expected only when KOPR must switch to a different image role; report a redraw when the correct role was already active.
ACF OFF graph has no clipping curvesExpected. When ACF is disabled, the selected ring has no upper-limit/filtered clipping result to display.
ACF ON graph styles appear mixedRaw, upper-limit and filtered PA profiles should have explicit distinct styles. Capture the selected ring and report the case if the curves cannot be distinguished.
Unexpected outer-ring clippingInspect the ring map, raw/upper/filtered PA profile and per-ring sigma diagnostics. Only positive PA-local outliers should be clipped; report a case where negative samples are modified.
Result changes after Review ApplyExpected only for the ACF profile, plateau/lower-limit decision and final comet flux/magnitude. Catalogue, stars, zero point, centroid and background should remain frozen.
Missing reproducibility evidenceKeep the detailed kopr-acf-provenance-v1 diagnostics and confirm a concise KACF line in the log/FITS HISTORY.

See PA-adaptive ACF and Review dialog for the complete state contract.

Reference stars Use state

DisplayMeaning and action
Use is uncheckedThe star is not effectively included: it may be disabled by the observer, image-quality-ineligible or rejected by the strict pairwise solution. Read the Reason column.
A rechecked star becomes unchecked after RecalculateExpected when the candidate remains scientifically incompatible. A newly edited/rechecked candidate stays selected only while the new solution is pending.
No Pairwise status column existsExpected in R80. Use shows effective inclusion and Reason is the sole visible exclusion diagnostic; the canonical internal states remain separate.

Saving and output problems

SymptomExplanation
CometObs or Afρ text was not appendedThe ICQ button appends only the fixed-width ICQ line. Copy/save the displayed auxiliary output separately.
Nothing is saved after closing the result dialogClosing is not an implicit save.
Permission error when savingChoose a user-writable directory and verify that the current KOPR directory is writable for observer-code output.
Duplicate ICQ lineThe same result may have been reopened/appended from a different dialog or manually copied. The append button only prevents a second click in the same dialog.

Cancellation and shutdown

Workers use cooperative cancellation. After pressing Cancel, wait for the active external process and cleanup to finish.

Message or symptomAction
A background operation is still shutting down. Wait a moment and close KOPR again.Do exactly that. Repeatedly killing the application can leave temporary files or external solver processes.
Astrometry or stacking says CANCELLEDCompleted immutable products may remain, but the batch/state may be incomplete. Reopen the working directory and review enabled states before retrying.
Windows/WSL astrometry remains busy for several seconds after CancelKOPR sends TERM to the Linux solver process group, waits up to three seconds, then escalates to KILL. It does not terminate the complete WSL distribution.
Suspected orphaned WSL solverCheck inside the selected distribution with pgrep -a solve-field. If a process remains after KOPR has reported completion, include it in the bug report.
Index download cancelledPartial .part files are intentionally retained for resume.

Prepare a useful bug report

Start with the downloadable bug-report template. For installation/environment issues, run collect-kopr-diagnostics.py from the directory containing kopr.py and attach its text output after reviewing it for local paths.

Always include

  • exact KOPR build/archive name and operating system;
  • the action sequence that reproduces the problem;
  • the complete final error and relevant preceding log lines;
  • whether the problem is repeatable with the same files;
  • active location, telescope and camera names plus relevant dimensions/binning/filter/exposure;
  • expected result and actual result.

For image-pipeline problems

  • the relevant frame/group CSV reports;
  • processing_manifest.json, pipeline_state.json and applicable QC JSON;
  • primary FITS headers and extension inventory for the affected products;
  • for paired products, both original ST/CO FITS files and the original source paths when saturation checks are involved;
  • for Scientific/Compact issues, include REQMODE/KOPRMODE/STORFMT/QSTEP and all Q-policy keywords plus the validation JSON;
Remove secrets before sharing. Do not attach `.env`, API keys, SFTP credentials or unrelated personal data. FITS headers can contain observer/site information; review them before public publication.

For Windows/WSL astrometry problems

wsl --status
wsl --list --verbose
wsl.exe -d Ubuntu -- sh -lc "uname -a; command -v solve-field; solve-field --help >/dev/null && echo SOLVER_OK"

Also include the exact WSL distribution name, whether KOPR logged a native or WSL backend, the final WStack log lines, and the path to the KOPR working directory. Do not include the Ubuntu password.

WCCD Automatic Helpers and Slice

SymptomMeaning and action
Helper checkboxes are rememberedExpected. Accepted values are persistent defaults stored through QSettings. Cancel must leave the previous defaults unchanged.
New observation was cancelled or failed preflightNo new observation or helper state should be committed, and no helper should start. The previous valid observation remains active.
JPL position unavailableCheck internet and optional astroquery. Continue with the internal KOPR position; the observation must remain open.
JPL object is ambiguousConfirm the designation/apparition. If no safe match is returned, use the internal position or manual centre.
Expected position is outside the frameCheck time, observatory, object designation and WCS. Use Fix Astrometry or select the centre manually.
Finder or Auto Stars appears inactiveLook for the compact progress dialog and its current stage. The main image intentionally does not show intermediate processing frames.
Auto Star Measure does not start immediatelyIt waits for the finder worker and candidate dialog. Remain in or later re-enter Measure Stars.
Auto Star Measure failed saturation validationCheck the active image role and policy. With complete NSATVAL, any marked aperture pixel is authoritative and the aggregate stack peak is not a valid substitute. Without a complete map, verify the explicit metadata, detector bit depth, integer storage ceiling or FLOAT fallback. If Saturation level was edited, the role is in manual-threshold policy and intentionally ignores the source-frame map.
A normalized FLOAT image shows Saturation level = 1Expected when all finite values follow the common 0–1 floating convention. The data range is used only to recognize that convention.
An unscaled FLOAT image shows Saturation level = 65535R47 supplies a generic editable fallback because no authoritative detector metadata are available. Replace it with the actual detector or linearity limit when known.
The displayed saturation value equals the brightest pixelThis is not the R47 policy. KOPR never copies the observed maximum into the threshold field.
Terminal says source-frame provenance is ignoredAn explicit Saturation level override is active for the current Comet or Stars image. Restore automatic policy by loading that FITS again; loading the other role does not reset this one.
Only final star markers appearedExpected. After validation, the main WCCD image shows final catalogue markers and accepted apertures; intermediate overlays remain inside the progress workflow.
Late worker changes nothingExpected after reset/new observation: observation/source/run-token validation discards stale or cancelled results and prevents a late dialog from opening.
Slice Through Comet unavailableSet a comet centre first with the finder or manual measurement.
Slice profile remains in a separate windowExpected. Slice is an independent non-modal profile window. Observation reset/replacement closes the obsolete window and clears its selection.
Review remains active on Stars imageExpected. Review belongs to the last successful ACF Comet measurement, not to the currently displayed image.
Review disappearedCheck for new observation/reset/different Comet FITS, a newer successful non-ACF measurement or incompatible context. Stars-image and catalogue changes alone do not invalidate it.
Automatic Comet Finder shows no numerical candidateThe interactive WCCD review still opens a valid WCS/ephemeris cutout and searches to 120 arcsec.Click the visible comet to create an M1 starting position for the canonical bounded Gaussian centroid, then select it and use Confirm centre. If no review opens, check WCS, time, designation and expected position.
Only one row is shown but it is labelled C4 in an older buildThe label came from a raw peak number before filtering.Displayed candidates are renumbered consecutively C1..Cn. Update the application; the row number does not indicate hidden selectable candidates.
Clicking the finder image does not select a centrePan or zoom mode may be active, or the click was outside the review axes.Leave pan/zoom mode. Click near a candidate circle to select its row, or click another visible object to create M1. The displayed centre may move within the configured centroid bound because the same Gaussian model is used for every comet-centre route.
Candidate review was rejected or closedNo centre or photometric state is committed.The observation remains available for manual work.
Auto Star Measure reports moderate_elongationThe star has elongation above 2.2 and at most 2.7.This is a quality warning, not an automatic rejection. Standard-shape calibrators are preferred; values above 2.7 are rejected.
Stable common-aperture plateau was not foundR55 uses a guarded fallback radius of 3.5 × robust stellar FWHM, never above 4.0 × robust FWHM.Compare raw and robust FWHM, the robust method/source count and profile-width percentiles. The fallback still passes all normal coverage, saturation, blend, background, S/N, zero-point and scatter gates.
Zero-point clipping rejected more than 40%The reject fraction is diagnostic and no longer fails the result by itself.Check how many stars remain and the final scatter. At least 3 must remain; 3–7 produces a warning and 8+ continues normally.
Auto Star Measure finishes with 3–7 starsR50 considers this a valid zero point with a prominent warning.Inspect the final zero point, scatter, rejected reasons and field quality before accepting the result.
Auto Star Measure final scatter is highScatter up to 0.08 mag is normal; 0.08–0.15 mag is retained with warning; above 0.15 mag is a hard failure.Use the computed zero point/scatter and rejection list to diagnose catalogue mismatch, gradients, blends, deformation or poor coverage.
A few NaN pixels occur in a sky annulusR55 excludes them statistically while preserving spatial coverage, sector consistency and gradient checks.A mildly cropped square annulus may pass under stricter coverage or use balanced_boxes only when the failure is geometric/coverage-related. Review the reported background method and precise rejection subreason.
NaN or a masked pixel touches the stellar apertureR55 uses a strict flux-preservation rule: any invalid pixel with non-zero fractional aperture weight causes invalid_aperture.Choose another star or repair the source product. KOPR does not replace, interpolate or zero-fill missing stellar flux.
Raw median FWHM is much larger than robust FWHMBlended or crowded profiles form a high-width tail. R55 derives the global PSF from isolated quality stars or the lower 30% guarded fallback.Inspect the FWHM percentiles, method and source count, final aperture, blend gate and post-aperture rejections. A lower robust FWHM is expected when the raw distribution is blend-contaminated.
Auto Star Measure reports centroid_failed or invalid_backgroundR55 records a specific subreason rather than only the generic class.Use the detailed report to distinguish cropped patches, invalid cores, insufficient valid/background samples, no signal, invalid moments, invalid iterated positions, asymmetric masking, inconsistent sectors, radial gradients or coma contamination.

All helper failures should leave the manual WCCD route available when the observation itself is valid.