四套程序与日志:并列证据,不先定标准答案

XARTATOMS 0900170101 · M31CGM 0800732701 · M31HotISM 0112570101 · esas_playground v1.4.1

发布于

2026年7月13日

比较规则

我们不按“文件名版本号最大”直接排名,而看五类证据。用户已选 esas_playground_v1.4.1.py 为统一 canonical engine;runner/acceptance/failure-corpus 的分工仍由以下证据限定。

  1. entry point:真实执行的是哪个 shell / Python / .par
  2. stage semanticsreduCfull 到底打开哪些 step;
  3. spatial contract:exact DS9、source exclusion、camera coverage 如何进入 mos-spectra
  4. product contract:source/QPB/RMF/ARF、headers、counts、BACKSCAL 与 no-fit QA;
  5. replay evidence:真实 log、status、hash、test、qualification,而不是注释中的理想流程。
警告路径名纠正

用户提到的 xmm/python_scripts/ipynb/esas* 在当前文件树中不存在;实际活跃目录是 xmm/python_xmmscripts/ipynb/esas*。本页把这个 live tree 作为第四套材料,但不会把“最新修改时间”自动等同于“production-qualified”。

软件版本与 task-name 边界

本轮 local exemplar 的 wrapper/log 使用 xmmsas_20211130_0941 分发环境,并调用 legacy interfaces mos-spectramos_back。当前 SAS 在线文档(2026-07-13 回读)分别以 mosspectramosback 为 task heading;官方 routine concordance 还列出 old→new 名称映射。

因此本教程是 local legacy-runtime audit,不是 current-SAS command migration guide。用户指定 golden runtime 前,不会自动把 task 名改写成 current interface。

Claim-level provenance

Evidence ID 公开 source label 支撑的主张
XART-E01 / XART-E02 / XART-E03 Phase2 pilot/batch wrapper + pilot .par clean shell、pilot→batch、background-only/no-fit 配置与 engine hash gate
XART-E04 remaining-six qualification JSON six new regions qualified;结合 Wind N pilot 得 7/8,S8 unavailable
CGM-E01 / CGM-E02 / CGM-E03 PBS job、v1.3.2 .par、2025-11-30 main log historical redu/C、cluster scale、49,609,621-byte log 与 legacy credential caveat
HOTISM-E009 / HOTISM-E009-QA / HOTISM-E009-RUN E009 record、84-gate JSON、pilot wrapper camera-specific point mask、MOS1/MOS2 products、84/84 PASS、无 unintended PN
ENGINE-E01 esas_playground_v1.4.1.py exact engine SHA-256 与本页列出的 source-level improvements/open points

所有 SHA-256 见 public source inventory。公开 evidence label 不暴露 internal absolute path。

总表

维度 XARTATOMS 0900170101 M31CGM 0800732701 M31HotISM 0112570101 upstream v1.4.1
真实 engine esas_playground_v1.4.1.py 历史 v1.2.0C / v1.3.0,准备迁到 v1.3.2 v1.3.2.py engine 本体
入口 clean-shell pilot / remaining batch wrapper PBS job_demo_v1.3.2.sh + root batch script project runner + compat + mask + linker + verifier python engine.py config.par
代表 mode full,但只打开 4.background + extra_region + background redu 全链;C 可开 background C / custom runner 支持 full/resume/redu/C...
camera recent R4–7 branch MOS2-only MOS1+MOS2,历史配置不含 PN MOS1+MOS2,显式无 PN MOS/PN 都支持
region exact FK5 sector + exclusion file 大批 annulus/Angle2 + exclusion exact variable-W1 polygon + camera point-source masks extra_region_list / extra_region_file
preflight clean namespace、SUM count、tool path、geometry tests、pilot release hash PBS resources / qstat;较少产品级 fail-close clean env、input hash、inventory、mask rebuild engine 内部 checks,wrapper 责任较多
output QA pilot/replay/qualification + no-fit/spatial handoff 真实日志丰富,但旧流程验收较松 84/84 product gates 不是 release layer
log 特征 recent production + replay;也保留 noisy bootstrap 49,609,621-byte main log,环境 dump 极重 targeted audit logs + cognition OS 历史 log 很多,当前 production log 在项目端
主要价值 production discipline history + scale + failure corpus geometry/product acceptance reusable engine logic
主要风险 项目专属 wrapper 不能直接泛化 过期环境、全量复制、credential、巨型日志 recovery 逻辑混入 routine runner rProfile/sync/noisy bootstrap 未完全收口

A. XARTATOMS 0900170101: 本轮盘点中最完整的 recent production exemplar

真实入口

  • run_esas_r47_eight_axis_centered_phase2_pilot_mos2_windN.sh
  • run_esas_r47_eight_axis_centered_phase2_remaining_seven_mos2.sh
  • esas_playground_r47_eight_axis_centered_phase2_{pilot,remaining}.par
  • engine SHA-256: 67ce592641201f92bf6952f7ee5555e9c8a508198ee571f924a8caa9d7e96063 (ENGINE-E01)

代表性 .par 不是跑 full ODF chain,而是:

[DEFAULT]
obsID = 0900170101
mode = full

[full]
cifbuild = no
odfingest = no
1.calibration = no
2.filter = no
3B.background = no
4.background = yes
extra_region = yes
background = yes
4.fitting = no

[back]
INST = mos2,
generate_spectra_and_back = yes
EMINLIST = 700,
EMAXLIST = 1000,
MASK = 1,
extra_region_file = "<approved source-exclusion.reg>"
extra_region_list = <approved R4-7 sector.reg>,

为什么值得优先学

  • env -i clean shell,显式 HEADAS/SAS/ESAS 初始化;
  • PREFLIGHT_ONLY 可只做 gate,不抽谱;
  • 检查唯一 SUM、engine/tool 路径、干净 output namespace;
  • pilot 的 release manifest 和 hashes 是 batch 前置 gate;
  • 运行完成不直接宣称“qualified”,状态先是 pipeline_finished_qa_pending
  • Wind N pilot 通过 source/QPB/ARF/RMF + outer-corner replay;其余六个 region 使用 production-only QPB qualification;S8 因只有 CCD1、无 outer anchor 而 fail-closed unavailable(XART-E04);
  • no-fit spectrum 与 exact region/camera-mask spatial QA 独立交付。

仍需你判断

  • production log 仍包含 import-time test noise、test.txt、环境 setup 展开和 Unicode logging error;
  • wrapper 对 R4–7 sector/CCD/pilot release 高度专用;
  • v1.4.1 内仍保留 unconditional rProfile / final calibration sync 等历史行为;
  • full 作为“resume-like background only”名称是否应保留,还是改成更明确的 mode。

XARTATOMS 的 full + 全部前置 stage=no + 4.background=yes 是你现在推荐的标准 C-mode 写法吗?还是应该使用 C/resume,并把 field preparation 放在另一个 .par

B. M31CGM 0800732701: 历史规模化教材,而不是当前模板

真实入口与证据

  • root command_v1.3.2.sh 为每个 OBSID 复制 job/config、sed 替换 OBSID、手工 hardlink sync、qsub
  • per-OBSID job_demo_v1.3.2.sh 请求 6 CPU / 60 GB,复制 v1.3.2.py 后用 IPython 运行;
  • 现存 2025-11-30 log 实际执行的是 v1.2.0C.ipynbmode=redu
  • redu 同时打开 calibration、filter、source detection、background,说明它是 full observation reduction,不是每个 region 的 routine extraction;
  • v1.3.2.parC mode 用 4.background + cheese + extra_region + background[back] 包含大量 Angle2 region。

最有价值的部分

  • 真实多观测 PBS 调度与资源历史;
  • redu / B / C / C1 / C2 / C3 / D / E 的 mode 演化;
  • 16 个 main/error logs 共 369,293,176 bytes,能学习 SAS failure 与环境 drift(CGM-E03 inventory);
  • extra_region_file + extra_region_list 的早期大批量实践。

不应原样复制

  • 每个 OBSID 复制整份 engine;
  • sed 修改配置,缺少 config schema / exact hash gate;
  • shell 内硬编码通知 credential(公开材料已 [REDACTED]);
  • 49,609,621-byte 单日志包含整个环境和大量 SAS 参数,难以区分真正 error;
  • root hardlink sync 与 extraction 混在一起;
  • job 结束后的通知不等于产品 acceptance。

M31CGM 的哪一个 log 是你认为最值得作为“从 ODF 到可抽谱 RPC”的 golden log?目前我只把 0800732701 的 2025-11-30 full reduction 作为历史样本,没有把它当成功模板。

C. M31HotISM 0112570101: 验收范例,但 runner 需要减肥

经过验证的 extraction core

extra_region_list
→ add_extra_region_v2
→ ds9_to_xmmexpr(coordtype='det')
→ mos-spectra
→ mos_back

E009 对 adopted a=0–4′ polygon 的结果:

  • MOS1/MOS2 source、QPB、RMF、ARF 齐全;
  • 84/84 hard gates PASS(HOTISM-E009-QA);
  • PHA channel / RMF grid / exposure / BACKSCAL / headers / exact selection 全检;
  • camera-specific 80% EEF point-source masks;
  • 明确无 pn-spectrapn_back、PN OoT 或新 PN-like products;
  • 明确 no fit / no physical result。

为什么 runner 变厚

  • v1.3.2 + Python/HEASOFT/SAS compatibility;
  • 运行前恢复被 engine 删除的 clean files;
  • 单独重建 point-source masks;
  • post-run OGIP linker + verifier;
  • inventory/hash/audit/rejected-attempt 记录;
  • current mask builder/linker/verifier仍硬编码 0112570101S001/S002 exposure IDs、92/90 mask rows 和 rejected-attempt regression;迁移新 OBSID 前必须改为 manifest/参数,不能原样照搬。

这些大多是恢复和验收,不是 mos-spectra → mos_back 本身。

你希望保留 M31HotISM 的哪些 84 gates 作为所有新光谱的最小验收?哪些只适合这个 custom polygon / compatibility 事件?

D. upstream esas_playground_v1.4.1.py: engine,而不是完整 release workflow

已知新增/修正

  • Python 3.13 subprocess bootstrap;
  • relative-CWD / MOS-only bookkeeping;
  • extra-region path 与 decimal basename;
  • region-specific MOS CCD preflight 和 QPB outer-corner anchors;
  • xmmtools.esas_pha helpers;
  • XARTATOMS recent production 实际使用该 hash。

已知未关闭点

  • rProfile 默认后处理可能阻塞;
  • final 1.calibration sync 不应无条件要求;
  • import-time test/logging noise;
  • changelog 文件仍停在 v1.3.1,不能单靠 changelog 理解 v1.4.1;
  • local tree 有大量历史 notebooks/logs,必须由你指定“golden version”。

用户已确认 v1.4.1.py 是主程序,并要求所有变化经 .par 配置。仍待 central qualification 的是 rProfile/final-sync 等 open points,而不是再选一个 per-OBSID engine。

用户决定后的教材分工

CANONICAL ENGINE

v1.4.1 engine

用户指定的唯一处理程序;不同 OBSID/region/band 全部由 .par 配置。

PRODUCTION PATTERN

XARTATOMS wrapper

学习 clean-shell、pilot、hash、status、fail-close、qualification。

ACCEPTANCE PATTERN

M31HotISM E009

学习 exact geometry、point mask、source/QPB/response 和 no-PN gates。

FAILURE CORPUS

M31CGM logs

学习 full reduction、集群环境与真实错误;不复制 legacy launcher。

用户教学决定已被采纳;可到 教 Hermes 页继续修订。原决定 execution_authorized=false,不授权任何具体 run。

下载证据摘要