383ff66de9a1a37635a1d079cccdeb9842056524 braney Tue Sep 8 09:22:26 2026 -0700 ottoMonitor: correct the job counts in the README and the survey header, refs #38101 The README's "WHAT IT ASKS" section said fifteen jobs write a log or a named file, nine leave only a directory mtime, and eight leave nothing. Those add to 32, but the monitor watches 40. The real split is twenty-four, eight and eight, which is what ottoMonitor.py -v reports. The old "fifteen" counted only the external jobs with a positive stamp and dropped the nine internal ones that also write a per-run file. The old "nine" came from counting the "dir mtime" notes in ottoMonitorStamps.tsv, which catches ottoGitVsHive, but that job is blind, not directory-mtime. The same off-by-one is fixed in the traps section. The two surveys cover all 47 jobs in otto.crontab while the monitor watches 40, so the README now says where the other seven went: they are the Cell Browser jobs, marked monitor=no in ottoOwners.tsv. ottoFailureSignatures.tsv opened by saying the 18 internal jobs were not surveyed yet, three sections above a fully surveyed section for exactly those 18 jobs. The sentence was left over from the draft before that section was added. Also drop a dead clause in sourceIsUp(). "code == 226 or code == 0 and False" reduces to "code == 226", because and binds tighter than or, so it read as if a curl that could not connect were handled specially when it was not. Behavior is unchanged: curl() returns 0 when curl itself failed, and 0 means the source did not answer. These are the two items the 2026-09-08 code review asked for, both in files that tell a future editor to read them before touching a stamp glob. diff --git src/hg/utils/otto/ottoMonitor/ottoFailureSignatures.tsv src/hg/utils/otto/ottoMonitor/ottoFailureSignatures.tsv index 5c8ffbdd907..04e6a011a61 100644 --- src/hg/utils/otto/ottoMonitor/ottoFailureSignatures.tsv +++ src/hg/utils/otto/ottoMonitor/ottoFailureSignatures.tsv @@ -1,25 +1,25 @@ # Kept in the kent tree at src/hg/utils/otto/ottoMonitor, beside the monitor # that reads it. A dated copy of the survey it came from is in # /hive/groups/browser/redmineNotes/38101/claude/. # # What a run, a change, and a failure look like on disk, per otto job. # For the #38101 failure monitor. Surveyed 2026-09-07, read-only, from the LIVE # copies under /hive/data/outside/otto. Nothing was edited or run. # -# This covers all 29 jobs that have an external source. The 18 internal jobs -# are NOT surveyed yet; see the note beside this file. +# This covers all 47 jobs in otto.crontab: the 29 with an external source first, +# then the 18 internal ones in their own section further down. # # runStamp: what proves the job RAN, whether or not the data changed. Without # one, "no new data" and "did not run" are the same picture on disk. # log a log file written on every run # dateDir a dated directory created before any change check # perRunFile a named file rewritten every run # dirMtime NOTHING is written that survives, but a temp file is created and # removed, so the job directory's own mtime tracks the last run. # Works today, but it is a side effect, not a design, and any # manual touch in the directory destroys it. # none no evidence at all that the job ran # # changeArtifact: what appears only when the source actually changed. # failureSignal: what a failure produces. Cron mails only on output. #