[interactive] Roll the Telegram alert action back out to consumer repos #768
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#768
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Move consumer repos off the inline Telegram payload and onto the
agentic-osaction, then re-roll the fleet.Analysis and evidence:
coilyco-flight-deck/agentic-os#975. This issue is the rollout leg. AOS authors the action and the contract, this repo owns the fan-out, per the standing authoring-vs-rollout split.Background
#522inlined the alert on 2026-07-10 after a fleet-wide CI outage. The root cause was the bare ref form:The Forgejo runner resolved that against
github.com, where the mirror was stale at4dbb587and itsactions/tree had notelegram-alert. Inlining was the correct emergency fix.Both reasons that made it fail are now gone:
coilysiren/agentic-os/actions/telegram-alertexists today, verified against the GitHub API.That fully-qualified form has never been exercised anywhere in the fleet, so it is an untested contract. Treat it as unproven until a real run says otherwise.
Current cost
41 workflow files carry 47 copies of a ~1.9KB single-line
python3 -cpayload with escaped newlines. It cannot be meaningfully reviewed, and any change to the alert requires a fleet re-roll.scripts/telegram-ci-alert-rollout.pyalso restates the payload, both secret names, and the ref policy, none of which it sources from the publishedactions/telegram-alert/defaults.jsoncontract that exists for exactly that purpose.Work
coilyco-gaming/galaxy-genorcoilyco-flight-deck/ward-mcp). Replace one alert step with the fully-qualifieduses:form. Push and watch a real run.mainin the canary and confirm a Telegram message actually arrives. Resolution succeeding is not delivery succeeding, and the runner egress path (FORGEJO_EGRESS_PROXY, nested DinD) is the part most likely to differ between the inline payload and the action.telegram-ci-alert-rollout.pyemits theuses:form and sources the URL, ref policy, and secret names fromdefaults.jsonrather than restating them. Updatetest_telegram_ci_alert_rollout.py, including replacement of the now-stale inline block.dry_run=1reviewed before apply.Open question to settle before step 4
AOS inlines its own alerts so a failure before checkout can still alert. That rationale clearly holds for its local
./actions/refs, which need the checkout to exist. It is unclear whether it holds for a remote URL ref, which the runner fetches independently. Settle this before deciding whether any inline call site should deliberately survive, and record the answer next to the code.Rollback
The current inline rollout is the rollback path. If the canary fails resolution or delivery, revert the canary workflow and leave the rollout script untouched. No fleet-wide change happens until the canary passes both checks, so a bad outcome is scoped to one repo.
Acceptance
uses:form.mainrun.telegram-ci-alert-rollout.pyemits theuses:form and readsdefaults.json.python3 -cpayload, except call sites that carry a written reason.docs/telegram-ci-alerts.mdhere and in AOS state the same policy.Why this is operator work
Action resolution and runner egress are live behaviors that cannot be proven from a checkout, and this exact change has taken the fleet red once. Engineer and QA runs stop at the evidence boundary.
Related: #522, #521,
coilyco-flight-deck/agentic-os#975,coilyco-flight-deck/agentic-os#632.