Skip to content

ops: read-only release tracking, production probe and D1 query scripts - #658

Merged
AsperforMias merged 1 commit into
mainfrom
ops/release-tooling
Nov 8, 2026
Merged

AsperforMias merged 1 commit into
mainfrom
ops/release-tooling

Conversation

@AsperforMias

Copy link
Copy Markdown
Collaborator

Adds three read-only operator scripts in .github/compose/:

Script What it does
release-status.sh [--wait] <repo> vX.Y.Z Follows a release through Release → rel/ marker → deploy commit → deploy CI → apps and Cloudflare deploys, and reports the Feed plan. Exits 0 deployed, 1 failed, 2 in progress.
probe.sh [origin] Checks status, latency and missing translations on 20 key production paths. Exits non-zero on any problem.
d1-read.sh core|feed "SELECT …" Runs one read-only statement against production D1. It rejects writes, multiple statements and PRAGMA x = y.

Why: during the repository split, release monitoring was written by hand four times, and each version broke. The worst case: filtering deploy runs by the deploy commit's SHA never matches, because workflow_run deploys report main's SHA. release-status.sh matches deploy runs by start time instead. If the newest deploy commit pinning a version was superseded before it finished, the script falls back to the older commit that actually deployed it.

Verified:

  • release-status.sh against real releases:
    • ghfind v1.0.3, ghfind-server v1.0.5 and ghfind-frontend v1.0.2 report deployed.
    • ghfind-server v1.0.4 reports deployed via its earlier commit, not the cancelled superseding one.
    • v9.9.9 reports pending.
  • probe.sh: 20 of 20 paths return 200.
  • d1-read.sh: reads succeed, and four write attempts are rejected.
  • shellcheck is clean, and the Cloudflare release-workflow contract and hub contract pass on an assembled workspace.

The runbook (SYNOPSIS, release, FILES), deployment.zh.md section 11 and the AGENTS.md document index now point at these scripts. There's no deploy impact, so this needs no release.

🤖 Generated with Claude Code

…ripts

release-status.sh follows a release through Release, rel/ marker,
deploy commit, deploy CI and both production deploys (with the Feed
plan), matching workflow_run deploys by start time because they report
main's SHA. Superseded deploy commits that never finished fall back to
the older commit that deployed the version. probe.sh checks the 20 key
production paths. d1-read.sh runs one read-only statement against
production D1 and rejects writes.

These replace hand-written monitors that broke repeatedly during the
repository split. The runbook, deployment.zh.md and the AGENTS.md index
point at them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AsperforMias
AsperforMias merged commit 5df1a27 into main Nov 8, 2026
3 checks passed
@AsperforMias
AsperforMias deleted the ops/release-tooling branch November 8, 2026 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant