Module: log_time
Human-readable log timestamps (#opslogts) and low-level ops-log line
formatting. Operators read the supervisor session log and
.agent-doc/logs/ops.log to verify reported issues, and a bare Unix epoch
like 1781771180 is not legible. This module formats every log entry's
timestamp as ISO-8601 UTC and parses it back, with no external date
dependency (Howard Hinnant's civil-date algorithms).
Spec
- [
format_log_timestamp] renders a Unix epoch (seconds) asYYYY-MM-DDTHH:MM:SSZ(UTC). - [
parse_log_timestamp] is the matching reader: it accepts either a bare Unix epoch (pre-#opslogtslog lines and cycles.jsonl timestamps) or an ISO-8601 UTC string and returns epoch seconds. This backward compatibility keeps the staleness / accretion / startup-miss /gate_verifyscanners working across the format switch — old[<epoch>]lines still parse, andparse(format(x)) == xround-trips. - [
current_log_timestamp] samples the system clock and returns the current timestamp in the same ISO-8601 UTC format. - [
format_ops_log_tracking_suffix] renders the appendeddoc=<stem>[ session=<id>][ turn=<cycle_id>]suffix without knowing how callers found those values. - [
format_ops_log_line] renders the final bracketed ops-log line.
Agentic Contracts
- Formatting/parsing helpers are pure and deterministic for unit testing; no I/O and no orchestration dependencies.
- Clock helpers fail closed to Unix epoch
0when the system clock is beforeUNIX_EPOCH. parse_log_timestampfails closed (None) on garbage rather than mapping it to0, so a malformed line is skipped, not mis-windowed.