| K1 vs K2 differences | |
| ALPAO DM electronics counter check | K2 only. The ao.AMExHCNT keywords do not exist on K1. |
| STRAP uninitialized check - RTC modes | K2: wcmode 13 (LGS_57x57) or 15 (LGS_29X29), updated 20 May 2026 for HAKA. K1: wcmode 6 (LGS_ocam2k), 9 (GLAO) or 10 (LTAO). |
| BM2 saturation check | Same logic on both, using the telescope's own EPICS channels (k1:ao:ls:bm2:* / k2:ao:ls:bm2:*). |
| Keyword read error handling | K2 only acts on a check when the keyword reads succeed (status >= 0) for every check. K1 does this only for the FCS stall check and the RTC fault check (detectwfcfault skips the check if ao.wcstat, ao.wcdmstat or ao.wcdtstat are disconnected). |
| Overillumination recovery | K1 opens the loops a second time just before re-writing ao.o1smgn (harmless). |
| hvcrecovery | K1 passes continue=continue to change_keyword_block; otherwise the logic is the same. |
| KEYWORD_CHECK (commented out) | In K1's commented-out code the retry limit is 10 (~3 s) and the counter resets; K2's is 3. This has no effect while it stays commented out. |
| Things noticed during review (possible issues, not changes) | |
| ao.wcdtstat ERROR value | detectwfcfault tests ao.wcdtstat EQ 5, but on both telescopes ERROR is 10 for this keyword (5 = UNUSED2). A DT loop ERROR may therefore not trigger the Initialize RTC recovery. |
| ao.wcttstat | checkwfc reads ao.wcttstat, which does not exist on either telescope. The post-recovery check therefore only uses ao.wcdmstat and ao.wcstat. |
| 30-minute alarm silencing | The CE/TRS/ALPAO alarms count down 1800 check cycles. At the nominal 0.5 s timer that is ~15 min, not 30. The real time depends on how long each cycle takes. |
| ALPAO counter logic | The alarm fires if any one of the four counters is unchanged between two cycles (OR). It does not require all four to be stalled. |
| OCAM2K flow message | The message tells users to check k2rtcenv.dsp even on K1. |