Skip to content

feat(skills): ci-status — ask the fleet's status API before polling GitHub - #247

Merged
avrabe merged 1 commit into
mainfrom
feat/ci-status-skill
Oct 22, 2026
Merged

avrabe merged 1 commit into
mainfrom
feat/ci-status-skill

Conversation

@avrabe

@avrabe avrabe commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

New skill ci-status: before polling GitHub for a PR's checks, ask the self-hosted fleet's read-only status API (running / queued with a measured start range / overdue / not_queued / unknown) and wake on its recheck_after_s. When the API is not configured or not reachable, say so once and fall back to gh pr checks (0 pass, 1 fail or no checks, 8 pending), waking every 15–30 min.

The API's host is private infrastructure and never enters the repo: it comes only from PULSEENGINE_CI_STATUS_URL / PULSEENGINE_CI_STATUS_CACERT.

  • CI-STATUS-NO-PRIVATE-HOST fails if an mDNS .local URL, the local CA directory or a Caddy root certificate name appears under claude-tooling/. It matches the shape of a leak, not the host name, because claims.yaml is public too. Negative control: a .local URL in the skill makes it exit 1.
  • CI-STATUS-FALLS-BACK-AND-SAYS-SO pins the fallback rule, the exit-code table, "unknown is not not_queued", the no-double-subtraction rule, and the pointers from issue-hunt, feature-loop and the operating contract.
  • REQ-CI-STATUS-SKILL / VER-CI-STATUS-SKILL, release 0.40.0, satisfied by FEAT-CI-GATES.
  • Plugin 0.40.0, twenty skills. PLUGIN-README-SKILL-COUNT caught the README's stale "19" on the first run.

Local: claims 13/13, claim-check self-test 13/13, manifest in sync, roster 20 both ways, rivet PASS (the 2 warnings already on main), zola build OK.

🤖 Generated with Claude Code

https://claude.ai/code/session_01G5qpB7zvxLvdrvn5YRyj4R

…itHub

Agents waited on PR checks by polling GitHub every 15-20 s, one model turn
per poll, unable to tell a running job from one starved of a runner. The new
ci-status skill reads the self-hosted fleet's status API (running, queued
with a measured start range from now, overdue, not_queued, unknown), wakes on
its recheck_after_s, and falls back to gh pr checks (0/1/8) when the API is
not configured or not reachable, saying so once.

The API's host is private: it comes only from PULSEENGINE_CI_STATUS_URL and
PULSEENGINE_CI_STATUS_CACERT. CI-STATUS-NO-PRIVATE-HOST fails on the shapes
of a leak (an mDNS .local URL, the local CA directory, a Caddy root cert)
without naming the host, since claims.yaml is public too; negative-controlled
(a .local URL in the skill exits 1). issue-hunt, the feature loop and the
operating contract point here. Plugin 0.40.0, twenty skills;
PLUGIN-README-SKILL-COUNT caught the README's stale 19 on the first run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G5qpB7zvxLvdrvn5YRyj4R
@avrabe
avrabe merged commit 872d929 into main Oct 22, 2026
2 checks passed
@avrabe
avrabe deleted the feat/ci-status-skill branch October 22, 2026 16:17
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