Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 1 addition & 12 deletions .github/feed-health.json
Original file line number Diff line number Diff line change
@@ -1,12 +1 @@
{
"https://communitybuilders.dev/events/feed.json": {
"failures": 3,
"since": "2026-08-28",
"lastError": "schema errors:"
},
"https://eventos.wiki/events.json": {
"failures": 4,
"since": "2026-08-27",
"lastError": "fetch failed: The operation was aborted due to timeout"
}
}
{}
21 changes: 15 additions & 6 deletions .github/workflows/check-feeds.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Daily health check of the registered adopter feeds. scripts/check-feeds.mjs does
# the work (fetch + validate + issue management); this workflow only persists the
# consecutive-failure state between runs by committing .github/feed-health.json.
# the work (fetch + validate + issue management); this workflow only persists what
# has to survive between runs: the private failure window (.github/feed-health.json)
# and the public status the site serves (docs/data/feed-health.json). Both are
# written to only when something actually changes, so a healthy registry produces
# no daily commit.
name: Check adopter feeds

on:
Expand All @@ -26,18 +29,24 @@ jobs:
- name: Check feeds
env:
GITHUB_TOKEN: ${{ github.token }}
FEED_FAILURE_THRESHOLD: "3"
# A schema error or a 404 is the publisher's to fix: report it after two
# runs. A timeout or a 5xx has to dominate the window before it is worth
# an issue — feeds are slow for a morning all the time.
FEED_HARD_THRESHOLD: "2"
FEED_TRANSIENT_THRESHOLD: "5"
FEED_WINDOW: "7"
run: node scripts/check-feeds.mjs

- name: Persist failure counters
- name: Persist health state
run: |
if git diff --quiet .github/feed-health.json 2>/dev/null && ! git status --porcelain .github/feed-health.json | grep -q .; then
PATHS=".github/feed-health.json docs/data/feed-health.json"
if [ -z "$(git status --porcelain -- $PATHS)" ]; then
echo "Health state unchanged."
exit 0
fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add .github/feed-health.json
git add $PATHS
git commit -m "chore(health): update feed failure counters [skip ci]"
git pull --rebase origin "${GITHUB_REF_NAME}"
git push origin HEAD:"${GITHUB_REF_NAME}"
31 changes: 31 additions & 0 deletions docs/data/feed-health.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"_comment": "Health of the registered adopter feeds, refreshed daily by scripts/check-feeds.mjs. Feeds are validated against the spec version they declare; `supported` false means older than the supported window, which is information, not a failure. `specVersion` is the last version seen, kept through an outage. `updated` is when this status last changed.",
"updated": "2026-08-30",
"latestSpecVersion": "0.4.0",
"feeds": [
{
"name": "Community Builders Community Events",
"url": "https://communitybuilders.dev/#events",
"feed": "https://communitybuilders.dev/events/feed.json",
"status": "ok",
"specVersion": "0.3.0",
"supported": true,
"cors": true,
"failureKind": null,
"failingSince": null,
"error": null
},
{
"name": "eventos.wiki",
"url": "https://eventos.wiki",
"feed": "https://eventos.wiki/events.json",
"status": "ok",
"specVersion": "0.4.0",
"supported": true,
"cors": true,
"failureKind": null,
"failingSince": null,
"error": null
}
]
}
Loading
Loading