Skip to content

fleet-schedule-registry: systemd timer rows drop the OnCalendar time component — every-minute/hourly timers read as daily at midnight #5313

Closed

Description

@dezren39

Finding (from PR review)

Codex (chatgpt-codex-connector[bot]) raised this P2 finding on merged PR #5166 and it was never fixed or replied to:

No-response evidence

  • The inline thread contains only the Codex comment; no reply followed it (reviewThreads check 2026-11-04: thread unresolved, sole author chatgpt-codex-connector).
  • PR fleet: unified schedule registry — Muse cron + OpenCode + Jules (#4988) #5166 merged at 2026-11-03T21:44:28Z, under a minute after the review was submitted — no fix commit could have followed the comment on the PR, and the defect is present in the merged result on main.

Still live on current main (verified 2026-11-04 by gh api raw read)

doc/fleet-schedule-registry.md, section 2b (laptop systemd user timers):

  • Lines 225–261: essentially every timer row records its cadence as `OnCalendar=*-*-*` with no time component (e.g. line 240 laptop-autocommit-hatch-personal.timer, line 254 quota-gatherer.timer, line 261 worktree-reaper.timer).
  • The section header claims "Cadence is the unit's own OnCalendar/OnUnitActiveUSec spec, read live from systemctl --user show" — the recorded specs are truncated, not the units' own.
    Meanwhile the source of truth disagrees: nixos/home/laptop-autocommit.nix sets Timer.OnCalendar = "*-*-* *:*:00" ("Autocommit ${name} every minute") — daily-at-midnight in the registry vs every minute in reality.

Acceptance criteria

  • Every systemd-timer row in doc/fleet-schedule-registry.md records the timer's complete calendar expression (date + time components, e.g. *-*-* *:*:00), re-read from the live units / unit files, so the registry's documented cadence matches what systemd will actually run.
  • Or: the finding is resolved on this issue by a documented decision, with the reasoning recorded.
  • The registry's maintenance/verification note is updated so a future refresh does not re-truncate the specs.

Activity

  1. added
    kind/docsDocumentation improvement or addition
    task/triageQueue packet kind: verify, reproduce, and route this item
    priority/normalOrdinary priority (the default)
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 4, 2026
  2. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · filed

  3. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    Launched and bound queue task 9264 to OpenCode session ses_e5e5a8f3609ffedFjEtvG5e3Pt via opencode-route/workhorse (build). The task claim remains owned by repo-worker-code.

  4. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    Triage verdict: confirmed on current main (2026-11-04)

    Fresh raw GitHub API reads confirm the finding is still live:

    • doc/fleet-schedule-registry.md Surface 2b still shows OnCalendar=*-*-* for the named laptop-autocommit, quota-gatherer, and worktree-reaper timers.
    • nixos/home/laptop-autocommit.nix sets Timer.OnCalendar = "*-*-* *:*:00" (every minute).
    • nixos/home/worktree-reaper.nix sets Timer.OnCalendar = "hourly".
    • pm-stack/aggregator/systemd/quota-gatherer.timer sets OnCalendar=*:0/15 (every 15 minutes).

    Routed a scoped, docs-only small_fix packet as queue task 9317, using dedupe key repo-health:v1:fix:developing-today/code:issue:5313. It covers correcting the Surface 2b cadences and updating the maintenance note so future refreshes preserve the complete effective schedule. Timer behavior and source definitions are explicitly out of scope. This triage did not reply to or resolve the source PR review thread.

  5. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 4, 2026
  6. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  7. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/docsDocumentation improvement or additionpriority/normalOrdinary priority (the default)source/pr-comment-reviewFiled by the pr-comment-review jobtask/triageQueue packet kind: verify, reproduce, and route this item

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions