Skip to content

[Epic] Tooling & code-quality: close the cross-cutting gaps (companion to Pithead #279) #116

@VijitSingh97

Description

@VijitSingh97

Companion to Pithead #279 (the Pithead developer-tooling epic). This mirrors the language-agnostic parts of that effort for RigForge. RigForge needs a different — and smaller — tooling set than Pithead: it's pure shell (no Python, no JS, no Docker), so most of Pithead's stack simply doesn't apply here.

What RigForge already has — and is ahead of Pithead on

RigForge's shell tooling is already mature; in several places it's ahead of Pithead and worth back-porting there:

  • shellcheck (pinned 0.11.0, checksum-verified) + shfmt (pinned 3.13.1, -i 4) via make lint ✅ — Pithead has no shfmt yet (Pithead #281).
  • kcov coverage + a diff-cover patch-coverage gate (90% on changed lines) ✅ — Pithead uses a flat 80%; patch coverage is the stronger lever, worth back-porting to Pithead.
  • GitHub Actions SHA-pinned (checkout@df4cb1c…) ✅ — Pithead is on mutable @v4 tags (Pithead #282 fixes that).
  • Supply-chain-hardened XMRig build: pinned by version and commit, with post-clone commit verification ✅.
  • Checksum-verified pinned tool installs in CI (avoids the apt-mirror flakiness Pithead hit in its tune: confirm the applied config beats the previous one on the live rig (A/B) #64) ✅.
  • Real macOS CI (incl. bash 3.2 portability) + Docker/macOS e2e ✅.

What does NOT apply here (Pithead-only)

ruff / uv / ty / hypothesis (no Python) · Biome (no JS/CSS) · buf (no proto) · Trivy / Dependabot-docker (no container images). That's why RigForge's set is different rather than a copy of Pithead's.

The remaining gaps (this epic)

Principles (same as Pithead)

  • Local == CI via pre-commit + the Makefile single-source-of-truth (the SHELL_FILES pattern already in place).
  • Proportional — RigForge is a focused shell tool, not a polyglot stack; don't over-tool it.

Milestone: v1.1 (lockstep with Pithead's tooling track). Cross-repo tracker: Pithead #279 · roadmap Pithead #264.

Metadata

Metadata

Assignees

No one assigned

    Labels

    infraDeployment, packaging, releasestestingTests, CI, and test infrastructure

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions