# Overall verdict: PASS WITH CAVEATS

The core numerical results, FITS scaling, pn0 control, scientific limits, and SHA256 asset contract pass independent checking. No Critical or High defect was found. Two wording issues should be corrected before presenting this as a final scientific release; several lower-level release safeguards should also be tightened.

No project file was modified.

## Findings

### Critical

None.

### High

None.

### Medium

1. **“Larger effective areas” confuses extraction area with instrumental effective area.**  
   The executive text attributes the MOS count increase to “larger effective areas” ([index.qmd:18](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/index.qmd:18), [index.qmd:29](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/index.qmd:29)). What increased materially is PHA/BACKSCAL extraction area: +35.2% for MOS1 and +18.5% for MOS2. Mean ARF changed only +0.56% for MOS1 and −2.21% for MOS2 ([summary.json:1143](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:1143)). In X-ray spectroscopy, “effective area” normally means the ARF. Replace with “larger extraction footprint/BACKSCAL sky area.”

2. **The MOS1 causal interpretation is stronger than this compound comparison permits.**  
   The report says the previous MOS1 offset was “mainly” caused by processing/footprint effects ([index.qmd:96](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/index.qmd:96)). But MOS PHA, QPB, ARF, and RMF all change simultaneously ([summary.json:66](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:66)). The result establishes sensitivity to the combined contract, not which component caused it. Reword to “consistent with sensitivity to the processing/footprint contract.” Also label the color errors and z-scores as **count/QPB-statistical only**: their propagation uses band variances and assumes independence, without calibration or response systematics ([driver:167](/u/Lang3/program/XARTATOMS/inspect_r015_epic_3b_fullregion_compare.py:167)).

### Low

1. **Same-scale figures are correct in the current rendered artifacts but not enforced.**  
   The displayed broad and Fe-L panels have matching labelled x/y ranges, supporting [index.qmd:49](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/index.qmd:49). However, the source figures are generated independently without a shared `ylim`, then combined as raster images ([driver:223](/u/Lang3/program/XARTATOMS/inspect_r015_epic_3b_fullregion_compare.py:223), [driver:274](/u/Lang3/program/XARTATOMS/inspect_r015_epic_3b_fullregion_compare.py:274)). A future rebuild could silently autoscale differently. Set explicit common limits or test stored axis metadata.

2. **One advertised download is not a substantive re-review.**  
   “Previous current-tree re-review” is linked at [index.qmd:130](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/index.qmd:130), but its manifest entry is only four bytes ([asset_manifest.json:61](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/asset_manifest.json:61)) and contains only `PASS`. Replace it with a full report or remove/rename the link.

3. **The reviewed release is not commit-bound.**  
   Live `git status --short` marked the driver, output directory, site, and tests as untracked at HEAD `2b44a586351087f7a7e1264b2deda2b662708f28`. The hash manifest secures present byte equality, but not a repository revision. A formal release should commit/tag these artifacts or record a source-tree revision in the manifest.

## Independently reconstructed numbers

All quantities below were recomputed directly from the source PHA, QPB, RMF EBOUNDS, and ARF SPECRESP files without importing the project calculation functions.

### 0.7–1.05 keV detector statistics

| Contract | Detector | Exp. ks | Area arcmin² | Source | Scaled QPB | Net | S/N | Mean ARF cm² |
|---|---|---:|---:|---:|---:|---:|---:|---:|
| Previous | MOS1 | 65.756 | 120.299 | 1,750 | 582.051 | 1,167.949 | 27.471 | 172.283 |
| Previous | MOS2 | 65.232 | 334.990 | 4,129 | 1,781.242 | 2,347.758 | 35.469 | 163.783 |
| Previous | pn0 | 55.374 | 369.775 | 12,447 | 3,854.873 | 8,592.127 | 72.928 | 495.181 |
| Traditional 3B | MOS1 | 78.805 | 162.601 | 2,987 | 1,028.756 | 1,958.244 | 35.168 | 173.254 |
| Traditional 3B | MOS2 | 80.026 | 396.915 | 6,088 | 2,512.650 | 3,575.350 | 44.314 | 160.161 |
| Traditional 3B | pn0 | 55.374 | 369.775 | 12,447 | 3,854.873 | 8,592.127 | 72.928 | 495.181 |

These reproduce [summary.json:532](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:532) to floating-point precision.

### Combined statistics

| Contract | MOS1+MOS2 net | MOS-only S/N | pn0/MOS net | MOS+pn S/N | S/N gain over MOS |
|---|---:|---:|---:|---:|---:|
| Previous | 3,515.707 | 44.690 | 2.4439 | 85.467 | 1.9125 |
| Traditional 3B | 5,533.594 | 56.447 | 1.5527 | 92.164 | 1.6327 |

Evidence: [previous summary:1414](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:1414) and [3B summary:1693](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:1693).

### Old → 3B changes

| Detector | Exposure | Area | Net counts | S/N | Net rate/area | Approx. `sb_flux` |
|---|---:|---:|---:|---:|---:|---:|
| MOS1 | +19.84% | +35.16% | +67.67% | +28.02% | +3.51% | +2.93% |
| MOS2 | +22.68% | +18.49% | +52.29% | +24.94% | +4.77% | +7.14% |
| pn0 | 0 | 0 | 0 | 0 | 0 | 0 |

Thus the “more counts and S/N, only 3–7% Fe-L surface-brightness-proxy change” interpretation is supported.

### Fe-L high/low colors

| Contract | MOS1 | MOS2 | pn0 | MOS1−pn0 | MOS2−pn0 |
|---|---:|---:|---:|---:|---:|
| Previous | 0.51709 ± 0.03863 | 0.58917 ± 0.03350 | 0.58499 ± 0.01681 | −1.612σ | +0.112σ |
| Traditional 3B | 0.55915 ± 0.03227 | 0.59667 ± 0.02712 | 0.58499 ± 0.01681 | −0.710σ | +0.366σ |

These match [summary.json:1842](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:1842). They are quick-look statistical compatibilities, not precision cross-calibration measurements.

## Method audit

- **Lineage and control: pass.** All three traditional inputs resolve under `3B.background_20250124`; instrument headers are EMOS1, EMOS2, and EPN, and pn has `PATTERN <= 0 && FLAG == 0` ([summary.json:16](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:16)). Previous/new pn PHA, QPB, ARF, and RMF use the same paths and independently recomputed SHA256 values are identical ([summary.json:123](/u/Lang3/program/XARTATOMS/joint_spectrum_fitting_2T_basedon_region_v22/r015_epic_3b_fullregion_xsherpa_comparison_20260713/r015_previous_vs_3b_summary.json:123)).

- **QPB representation and scaling: pass.** MOS QPB files contain `COUNTS` plus count-valued `STAT_ERR`; pn contains `RATE` and `STAT_ERR` in counts/s. The code correctly converts pn rate and its error to count-equivalents, then applies exposure×BACKSCAL×AREASCAL scaling ([previous driver:130](/u/Lang3/program/XARTATOMS/inspect_r015_epic_mos12_pn0.py:130)). All resulting scale factors lie between 0.999989 and 1.000025.

- **Variance: pass for the stated naive statistic.** It uses source Poisson variance plus the squared, scaled QPB-provided `STAT_ERR` ([previous driver:212](/u/Lang3/program/XARTATOMS/inspect_r015_epic_mos12_pn0.py:212)). It intentionally excludes calibration, soft-proton, sky-model, and shared-systematic terms.

- **BACKSCAL conversion: pass.** The conversion assumes 0.05-arcsec detector pixels ([driver:88](/u/Lang3/program/XARTATOMS/inspect_r015_epic_3b_fullregion_compare.py:88)), exactly matching SAS `backscale` documentation. [SAS states that BACKSCAL is detector-pixel area with 0.05-arcsec pixels](https://xmm-tools.cosmos.esa.int/external/sas/current/doc/backscale/node3.html).

- **Bands: pass.** RMF-channel midpoints are assigned to half-open intervals ([previous driver:191](/u/Lang3/program/XARTATOMS/inspect_r015_epic_mos12_pn0.py:191)); the reconstruction selected 70 MOS and 72 pn channels over 0.7–1.05 keV, partitioned into 35+35 and 36+36 channels with no boundary double counting.

- **ARF proxy: acceptable only as labelled.** The band ARF is an energy-overlap-weighted mean, not a full RMF×ARF spectral inversion ([previous driver:179](/u/Lang3/program/XARTATOMS/inspect_r015_epic_mos12_pn0.py:179)). The report correctly limits it to quick-look use and requires detector-specific forward-folded fits ([index.qmd:114](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/index.qmd:114)). ESA notes that extended-source responses depend on the spatial flux distribution and detector map, and that ARF and RMF are used together to fit models. [Extended-source response guidance](https://xmm-tools.cosmos.esa.int/external/xmm_user_support/documentation/sas_usg/USG/responsefilesextsrc.html), [arfgen description](https://xmm-tools.cosmos.esa.int/external/sas/current/doc/arfgen/node14.html).

## Decision-safe conclusion

This comparison establishes that, for the examined products:

- the traditional-3B MOS contract yields substantially more Fe-L counts and higher naive count-space S/N;
- most of that increase tracks longer exposure and larger extraction/BACKSCAL area;
- pn0 remains the strongest single-camera Fe-L dataset;
- its net-count advantage over MOS1+MOS2 falls from 2.44 to 1.55;
- the quick-look high/low colors are statistically compatible.

It does **not** establish a plasma temperature, source-component significance, precision cross-calibration result, common-aperture comparison, pn OoT correction, or grounds for replacing 4B with 3B. It also does not turn the 1.63/1.91 count-space S/N gains into a kT-precision forecast. The report’s limits at [index.qmd:114](/u/Lang3/program/XARTATOMS/public_html/m104-r015-epic-comparison/index.qmd:114) are therefore decision-safe.

## Release verification

- Read-only pytest run: **10 passed in 0.67 s**.
- All 24 files under public `assets/` are represented in the manifest.
- Every public/source SHA256 and recorded byte count was independently reproduced.
- All 19 local QMD image/download references resolve.
- Rendered HTML contains the current numerical claims and caveats.
- No pytest cache or bytecode artifacts were created.

## Authoritative ESA/SAS sources consulted

- [EPIC-pn PATTERN definitions and spectral selection](https://xmm-tools.cosmos.esa.int/external/xmm_user_support/documentation/sas_usg/USG/pnevtlist.html)
- [EPIC-pn out-of-time events](https://xmm-tools.cosmos.esa.int/external/xmm_user_support/documentation/sas_usg/USG/epicOoT.html)
- [SAS backscale/BACKSCAL definition](https://xmm-tools.cosmos.esa.int/external/sas/current/doc/backscale/node3.html)
- [Current SAS mosback documentation](https://xmm-tools.cosmos.esa.int/external/sas/current/doc/mosback/index.html)
- [Current SAS pnback documentation](https://xmm-tools.cosmos.esa.int/external/sas/current/doc/pnback/index.html)
- [SAS qpbselect QPB construction and scaling](https://xmm-tools.cosmos.esa.int/external/sas/current/doc/qpbselect/node3.html)
- [SAS extended-source response guidance](https://xmm-tools.cosmos.esa.int/external/xmm_user_support/documentation/sas_usg/USG/responsefilesextsrc.html)
- [SAS arfgen response semantics](https://xmm-tools.cosmos.esa.int/external/sas/current/doc/arfgen/node14.html)

Prior XARTATOMS memory was used only to maintain behavior-first inspection terminology; every factual verdict above was reverified from the current local tree or current ESA/SAS documentation.

