Repository navigation
chore(workflows): reduce shepherd cron from 30min to 2h - #94
Conversation
Was */30 * * * * (48 ticks/day). After a day of operation 3/3 cron-fired ticks were no-ops — pipeline empty / proposals already in terminal states. Codex review on a fresh implementer-PR is 5-15 min, so a 2-hour shepherd cadence bounds worst-case PR-sit-time at ~2h while cutting cron pressure by 4x. The :30 offset (30 */2 * * *) stays clear of mctl-agents-daily at 06:00 UTC and rotate-mctl-agent-github-token at HH:00, minimizing contention on the mctl-gitops-main-writes mutex.
|
@codex review |
|
@copilot review |
Review of commit The change is correct and minimal. A few notes: Cron expression — Mutex/contention analysis — The Comment quality — The inline rationale block (lines 26–34) is detailed and accurate: observed no-op rate, worst-case sit-time bound, and offset reasoning all check out. No structural or logic issues. LGTM. |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Codex and Claude both flagged two P2 inaccuracies in OPERATOR.md that
came from only consulting the implementer workflow template and
missing the shepherd template:
1. The status lifecycle table omitted four states that automation
actively writes: `implemented` (implementer success), `error`
(implementer crash before PR), `review-fixing` (shepherd
address-review followup), `review-stuck` (shepherd gave up).
Shepherd discovery is keyed to `{implemented, review-fixing}` —
not `in-progress` or `merged`. Adds the missing rows with
per-tier authorship and cites cwft-mctl-agents-shepherd.yaml lines
11, 39-41, 154-155 as source of truth.
2. The `in-progress` meaning was wrong: a proposal can be at
`in-progress` and already have a `pr:` URL (implementer crashed
after push but before flipping to `implemented`). The shepherd
dead-letter recovery handles that case
(cwft-mctl-agents-shepherd.yaml:219-223). The previous "PR not
yet opened" wording would lead an operator to manually
re-trigger and open a duplicate PR.
Also addresses P3: drop the "(issues #86–#94 reference set)" qualifier
from the Go/No-Go checklist header — the checklist is general-purpose.
Adds a new "Recovering stuck or errored proposals" section with
explicit triage paths for `error`, `in-progress` (with and without
PR), `review-stuck`, and stalled `implemented`.
…1-14) Flip #91 (sticky routing) and #94 (Local Bridge) to accepted. #94 is scoped to M4 only (Slices 1-2, tasks 1-14 + tests T1-T8) via the tasks.md "Accepted scope" banner; Slices 3-6 (M4.1) are deferred. Also refresh stale "Current state" facts found in a drift re-review against current master: - #91: metrics registry is now 14 collectors (was "twelve"); deploy/ already exists (alerts/canary/grafana), Layer-1 manifests go under a new deploy/ingress/. - #94: the alert rule task/section now says "add to the existing deploy/alerts/mctl-telegram.rules.yaml" (created by #86), not "create".
Summary
Test plan