Skip to content

docs: reflect 6-agent runner pool + Server→Node rename residuals - #104

Merged
TaprootFreak merged 4 commits into
developfrom
chore/docs-6-runners-and-job-rename
May 25, 2026
Merged

docs: reflect 6-agent runner pool + Server→Node rename residuals#104
TaprootFreak merged 4 commits into
developfrom
chore/docs-6-runners-and-job-rename

Conversation

@TaprootFreak

Copy link
Copy Markdown
Contributor

Summary

Documentation cleanup after two recent infra changes that left stale references behind:

  1. 2026-05-25: M3 Ultra runner pool on dfx01 grew from 3 → 6 agents (dfx01, dfx01-2..dfx01-6).
  2. Pre-Plonky2 → Plonky2 era: Heavy job + required check renamed Server + Shared TestsNode + Shared Tests. Workflow file was updated; docs + branch protection lagged behind.

Branch protection on main was already patched today (out-of-band, via gh api) to rename the required-check context. This commit aligns the docs with that config change.

Findings audited (subagent pass) and resolved

scripts/ci-runner/README.md (~150 LOC of changes)

  • Pluralized title + intro to reflect runner pool.
  • New Scaling out section documenting the procedure used to register dfx01-4/-5/-6 (token-reuse, tarball cache in /tmp, SIGPIPE foot-gun when looping with set -o pipefail + head).
  • Operations section uses ${RUNNER_DIR} so snippets work for any agent; added pool-wide loop helpers (status / cache wipe).
  • Disk + RAM headroom rewritten with the measured budget table from today's profiling (3 parallel jobs: ~14 GB cargo RSS, ~85 GB app memory, 0 swap; 6 parallel forecast: ~29 GB / ~95 GB / 0 swap).
  • Naming-drift note for the legacy actions-runner-zkcoins-server (no hyphen) and …-zk-coins-server-N directory names that predate the repo rename.
  • Activating the CI jobs (historical) section: branch protection moved from develop → main; required-check list updated to the current 4 contexts.
  • Removed the directly-contradictory line "add a single self-hosted runner only (one concurrent job per repo) and let GitHub queue the rest".

.github/workflows/ci.yaml

  • Concurrency-group comment: "M3 Ultra capacity is scarce" → "pool of 6 agents shared with every other open PR".
  • node-tests job header: "single self-hosted M3 Ultra" → "one of 6 agents on dfx01 sharing the host's 96 GB / 28 cores".
  • node-tests + coverage overview comment: pluralized.

CONTRIBUTING.md

  • Pre-push narrative: "self-hosted M3 Ultra runner" → "runner pool" (4 occurrences).
  • Wall-budget table: Server + shared testsNode + shared tests.
  • Sentence about "only the `server` + `shared` test sweep is gated in CI" → "`node` + `shared`".
  • CI/CD table: ci.yaml (Server + Shared Tests)(Node + Shared Tests); command updated cargo test -p node -p sharedcargo nextest run -p node -p shared --release --all-features --test-threads=1 to match the workflow.
  • Heavy-jobs paragraph: rename + pluralize.

README.md

  • Coverage paragraph: cargo test --all-featurescargo nextest run -p node -p shared --release --all-features --test-threads=1; "the self-hosted M3 Ultra runner" → "the self-hosted M3 Ultra runner pool".

Out of scope (deliberately deferred)

  • Re-registration of dfx01/dfx01-2/dfx01-3 to refresh the local .runner.gitHubUrl (still points at zk-coins/server from before the rename) and to migrate the launchd plist label from actions.runner.zk-coins-server.* to …zk-coins-node.*. GitHub silently routes correctly after a rename — drift is metadata-only. Plan separately as an operational task.
  • Directory rename actions-runner-zkcoins-server (no hyphen, dfx01) → actions-runner-zk-coins-node-1 for naming-pattern consistency. Bundle with the re-register cycle above.

Test plan

  • CI passes Lint & Build (no Rust touched, so no Heavy needed; ci:full not required for review)
  • Render the diff and confirm no remaining Server + Shared Tests, server-tests, or single self-hosted M3 Ultra references in non-historical context
  • Confirm Release-PR (develop → main) is no longer blocked by the stale Server + Shared Tests (M3 Ultra) required check

Three things bled stale when the pool grew from 1→3→6 m3-ultra agents
and the Heavy job was renamed `Server + Shared Tests` → `Node + Shared
Tests`:

1. scripts/ci-runner/README.md still described a "single runner"
   topology, including the explicit advice "add a single self-hosted
   runner only (one concurrent job per repo) and let GitHub queue the
   rest" — directly contradicted by the live pool. Rewritten:
   - Title + intro pluralized; hardware-target section explains the
     6-agent pool sharing one M3 Ultra host.
   - New "Scaling out" section documenting the procedure used to add
     dfx01-4/5/6 (registration-token reuse, tarball cache in /tmp,
     SIGPIPE foot-gun with `set -o pipefail` + `head`).
   - Operations section now uses `${RUNNER_DIR}` so snippets work for
     any agent; added a pool-wide loop for status / cache wipe.
   - Disk + RAM headroom rewritten with the measured budget table
     (3 parallel jobs → ~14 GB cargo RSS, ~85 GB app memory, 0 swap;
     6 parallel forecast → ~29 GB / ~95 GB / 0 swap).
   - Naming-drift note for the legacy `actions-runner-zkcoins-server`
     / `…-zk-coins-server-N` directories that predate the repo rename.
   - "Activating the CI jobs (historical)" section: branch protection
     migrated develop → main, required-check list updated to the
     current 4 contexts (incl. the Node + Shared Tests rename).

2. ci.yaml carried two stale comment blocks: the concurrency rationale
   called M3 Ultra capacity "scarce" (single-runner framing) and the
   node-tests job described itself as running on "the single self-
   hosted M3 Ultra". Both reworded to reflect the 6-agent pool.

3. CONTRIBUTING.md and README.md referenced "the self-hosted M3 Ultra
   runner" (singular) and the old `Server + Shared Tests` job name in
   the CI/CD table + pre-push narrative. Pluralized and renamed; the
   cargo invocation in README.md was also updated `cargo test` →
   `cargo nextest run -p node -p shared --release --all-features
   --test-threads=1` to match the workflow.

Branch protection on `main` was patched out-of-band today to rename
the required context `Server + Shared Tests (M3 Ultra)` → `Node +
Shared Tests (M3 Ultra)`; this commit aligns the docs with that
config change.
Senior-review pass on PR #104 flagged two BLOCKING gaps the original
commit missed (the PR description claimed no non-historical `Server +
Shared Tests` references would remain):

- ROADMAP.md test-plan paragraph still cited the old job names.
- program-plonky2/CONTRIBUTING.md described the CI gate as running
  `-p server -p shared` against `Server + Shared Tests` — both pieces
  stale post-rename.

Also addressed the consistency findings:

- scripts/ci-runner/README.md budget table prose contradicted itself
  (called 6 jobs a "forecast" while the prose explained that 3 PRs ×
  2 jobs already saturates the pool at 6 concurrent agents). Reworded
  to make clear the snapshot was captured under the pre-expansion
  3-runner topology and the saturated column projects the linear
  envelope of the new 6-agent pool.

- scripts/ci-runner/README.md:13 used "Six" (spelled-out) while every
  other reference uses the digit "6". Harmonised.

- CONTRIBUTING.md, README.md, and the budget-table prose drifted on
  the `--test-threads` form (`=1` vs ` 1`) versus the actual ci.yaml
  command, and elided the `-E 'not binary(api_remote)'` test filter
  that the workflow uses. Quoted commands now match ci.yaml verbatim.

- .github/workflows/ci.yaml sccache comment still read "The M3 Ultra
  runner is self-hosted" (singular) while the neighbouring updated
  comments now talk about the pool. Pluralised.

GiB vs GB nit (`1 TB host` vs `>600 GiB free`) left as-is — matching
the conventional usage (TB / GB for disk capacity, GiB for sccache
cap).
…ne budget table

Second senior-review pass on PR #104 flagged a handful of consistency
nits left after the first fix-up commit:

- scripts/ci-runner/README.md `## Tracking` section was still singular
  ("The runner is a launchd service") — pluralised to "Each agent".

- program-plonky2/CONTRIBUTING.md still linked to PRs/issues under the
  pre-rename `zk-coins/server` org URL (PR #17, PR #48, issue #50).
  GitHub auto-redirects, but the cross-link to the top-level
  CONTRIBUTING.md inconsistency was distracting — all three rewritten
  to `zk-coins/node` to match the rest of the docs.

- .github/workflows/ci.yaml had three remaining singulars: the
  Docker-socket comment on both node-tests + coverage jobs ("The M3
  Ultra runner on dfx01 runs Colima"), the sccache cap comment ("every
  m3-ultra runner on the host; with 3+ parallel runners"), and the
  concurrency block's last line ("free the runner"). All four reworded
  to use the pool / per-agent framing consistently.

- scripts/ci-runner/README.md budget table:
    - Prose said "linearly projects to 6", but the App-memory row goes
      ~85 GB → ~95 GB, which is bounded by the 96 GB host RAM ceiling,
      not a linear extrapolation. Reworded to call out the cache-bound
      ceiling.
    - "CPU cores in use: 3 of 28 → 6 of 28" misleadingly implied an
      idle box; renamed to "Active test processes (`--test-threads 1`)"
      with cell content stripped of the misleading "of 28 cores" framing.

- ci.yaml:245 comment still spelled `--test-threads=1` (equals form)
  while the actual command on :256 uses ` 1` (space form). Aligned.

Out-of-scope (flagged in review, intentionally not touched in this PR):
- deploy-dev.yaml + deploy-prd.yaml still use singular "the self-hosted
  M3 Ultra runner" framing. Not in the PR's stated scope; carry as a
  follow-up if the framing becomes confusing.
…rs-and-job-rename

# Conflicts:
#	program-plonky2/CONTRIBUTING.md
@TaprootFreak
TaprootFreak marked this pull request as ready for review May 25, 2026 10:36
@TaprootFreak
TaprootFreak merged commit 9813af8 into develop May 25, 2026
8 checks passed
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