Skip to content

feat(ci-pool-tui): add a read-only TUI for the CI pool - #1093

Draft
i098 wants to merge 2 commits into
mainfrom
fm/cf-forge-tui
Draft

i098 wants to merge 2 commits into
mainfrom
fm/cf-forge-tui

Conversation

@i098

@i098 i098 commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Closes #1091

Summary

Adds tools/ci-pool-tui, a read-only terminal view of the CI pool that flags held jobs and stuck slots. It installs as the ci-pool Herdr tab.

Screenshot: pending

What changed and why

  • New TUI shows each ci-runner@ slot, GitHub runner state, queued and running workflow runs, and an optional Forgejo runs panel. Before this, an operator had to run systemctl, docker and gh by hand.
  • Jobs queued over 5 minutes are flagged with a cause. A slot problem must last 2 minutes before it shows as stuck.
  • GitHub reads stay at 20 calls a minute or fewer and pause until reset on a rate-limit error. It never restarts or cancels anything.
  • Wired in as crewship.herdr.ci_pool_tab (default on): base.yml, default.yml, schema, docs/configuration.md, one pane test update, and a changelog fragment.
  • The Forgejo panel is not tested against a live Forgejo, because no base URL is set on this host.

Test evidence

  • bun test in tools/ci-pool-tui: 8 pass, 0 fail.
  • uv run pytest tests/test_chart.py -k test_default_schedules_tab_preserves_existing_layout: passed.
  • uv run ruff check: All checks passed.
  • sentrux gate: no degradation detected.
  • Live run against the real pool: 51 slots, 8 held jobs (all matching runners busy), one stuck slot that cleared on its own.
  • no-mistakes run: review, test, document, lint and push passed.

Checklist

  • One concern in this PR.
  • The title uses the commit format, for example fix(provisions): check the digest before install.
  • Tests pass (uv run pytest). Not applicable: the full suite timed out locally at 5 minutes; I ran the tests listed above only.
  • Lint clean (uv run ruff check).
  • Ansible syntax clean (--syntax-check). Not applicable: the change adds one list entry to base.yml and no task, and I did not run --syntax-check.
  • Idempotent: launch → launch = changed=0 on the second run. Not applicable: no launch run; the new install task reuses the existing loop over crewship_tuis.
  • A changelog fragment, changelog.d/<issue>.<type>.md (not a CHANGELOG.md edit), or the no changelog label.

i098 added 2 commits November 1, 2026 10:57
Shows each ci-runner@ slot, GitHub runner state, queued and running
runs, held jobs and stuck slots, and Forgejo runs when configured.
Opens as the ci-pool Herdr tab (crewship.herdr.ci_pool_tab).

Closes #1091

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

Add a TUI that shows the CI pool and flags held jobs

1 participant