Compare commits

..

4 Commits

Author SHA1 Message Date
ba87ab34be Merge pull request 'chore(ci): noop workflow to clear stale red badge' (#6) from chore/noop-ci-clear-stale-red-badge into main
All checks were successful
CI / noop (push) Successful in 0s
2026-05-08 17:00:56 +00:00
dev-lead
4acb103181 chore(ci): noop workflow to clear stale red badge
After PR #5 moved all 5 upptime workflows out of .github/workflows/,
no CI fires on push to main. The dashboard's CI status badge is
sticky on the LAST CI run, which was the broken upptime cron from
before the disable — so the repo displays a permanent red X.

Add a tiny noop workflow that prints why the repo is idle and
exits 0. Fires on push + daily cron so the badge stays accurate.

Replacement tracked in internal#97 (external uptime monitor RFC).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 10:00:37 -07:00
181b62d748 Merge pull request 'chore(ci): disable upptime workflows (post-suspension)' (#5) from chore/disable-broken-upptime-workflows into main 2026-05-08 15:56:57 +00:00
dev-lead
f7d5342c44 chore(ci): disable upptime workflows (post-suspension)
Five status-page workflows have been red on every cron tick (5x/hour)
since the 2026-05-06 GitHub org suspension. Symptom from the latest
run (run 8002):

  url: api.github.com/repos/upptime/uptime-monitor/releases?per_page=1
  data: { message: 'Bad credentials', status: '401' }

upptime fundamentally cannot work on this infra:
  - upstream upptime/uptime-monitor action calls api.github.com on
    every run to check its own version
  - GitHub Molecule-AI org PAT is dead
  - operator-host anonymous IP is rate-limited
  - re-tokenizing with a personal PAT recreates the bot-ring shape
    that triggered the original suspension (memory:
    feedback_github_botring_fingerprint)

Move the five workflow files to .github/workflows-disabled-post-suspension/
so Gitea Actions stops dispatching them. This eliminates the 5x/hour
red CI noise on dashboards and stops paging on a known-impossible run.

Replacement plan: external uptime monitor (StatusPage.io, BetterStack,
healthchecks.io). RFC follow-up filed separately on internal#.

Files moved (no functional change to YAML):
  - uptime.yml
  - response-time.yml
  - graphs.yml
  - summary.yml
  - static-site.yml

Plus a README explaining why under the new dir.

Rollback: git mv them back if upptime ever becomes runnable again.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 08:56:17 -07:00
8 changed files with 56 additions and 19 deletions

View File

@ -0,0 +1,20 @@
# Disabled upptime workflows
These five workflows were the upptime-driven status page. They have been
disabled because upptime fundamentally cannot run on Gitea Actions:
- `uptime/uptime-monitor` action calls `api.github.com/repos/upptime/uptime-monitor/releases`
on every run to check its own version. This call:
- Returns `401 Bad credentials` because the GitHub `Molecule-AI` org
PAT was suspended on 2026-05-06.
- Cannot be papered over with the operator host's anonymous IP — also
rate-limited.
- Cannot be re-tokenized with a personal GitHub PAT (the original
bot-ring fingerprint that got us banned, per memory
feedback_github_botring_fingerprint).
The replacement plan is tracked in `internal#TBD` (RFC).
If you need a status page in the meantime: external services
(StatusPage.io, BetterStack, healthchecks.io) sit outside the Molecule-AI
infra and don't depend on GitHub. We picked one of those for the gap.

View File

@ -1,19 +0,0 @@
# Disabled upptime workflows
These five workflows (`graphs.yml`, `response-time.yml`, `static-site.yml`,
`summary.yml`, `uptime.yml`) are upptime-driven and call
`api.github.com` for releases lookup, issue management, and result
commits.
Post the 2026-05-06 GitHub org suspension, no token in our org
authenticates against api.github.com, so every scheduled run fails
with HTTP 401 "Bad credentials". See molecule-ai-status#2 for full
diagnosis + the replacement plan.
Workflows here will not be re-enabled — they're moved to
`workflows-disabled/` so the failed-run noise stops while the
replacement (Gitea-native uptime probe) is built. Delete this
directory after the replacement lands and the existing history is
either migrated or marked archived.
Tracked: molecule-ai-status#2

36
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,36 @@
name: CI
# Tiny no-op workflow so the dashboard doesn't display a stale red
# badge from the disabled upptime workflows. The workflows that actually
# probed our endpoints (uptime/response-time/graphs/summary/static-site)
# were moved to .github/workflows-disabled-post-suspension/ in #5
# because upptime cannot run on Gitea Actions post-2026-05-06 GitHub
# org suspension. Replacement is tracked in internal#97.
#
# This noop fires on every push to main + once daily so the badge
# accurately reflects "this repo is intentionally idle" instead of
# "the last 5x/hour upptime cron failed forever ago."
on:
push:
branches: [main]
schedule:
# Daily at 00:00 UTC so the badge stays green even on weeks with no
# commits. Cheap; just an echo.
- cron: "0 0 * * *"
workflow_dispatch: {}
permissions:
contents: read
jobs:
noop:
runs-on: ubuntu-latest
steps:
- name: Repo intentionally idle
run: |
echo "molecule-ai-status is intentionally idle until the upptime"
echo "replacement lands per internal#97. The five upptime workflows"
echo "that used to live in .github/workflows/ have been moved to"
echo ".github/workflows-disabled-post-suspension/ — see that"
echo "directory's README.md for context."