Skip to content

feat(workspace-config): biome-linter rule — fleet tracks one biome version#43

Merged
mabry1985 merged 1 commit into
mainfrom
feat/biome-fleet-standard
Jun 4, 2026
Merged

feat(workspace-config): biome-linter rule — fleet tracks one biome version#43
mabry1985 merged 1 commit into
mainfrom
feat/biome-fleet-standard

Conversation

@mabry1985

Copy link
Copy Markdown
Contributor

What

Adds a workspace-config standard rule so the fleet tracks one biome version together — bump it in a single place and every JS/TS repo that's behind gets flagged in CI, instead of biome drifting per-repo.

  • FLEET_BIOME_VERSION (lib/workspace-config.mjs) — the single source of truth for the biome version the fleet tracks (currently 2.4.16, matching protoWorkstacean + release-tools).
  • biome-linter rule (warn): a repo with a package.json must depend on @biomejs/biome at FLEET_BIOME_VERSION and carry a biome.json/biome.jsonc. The detail line names the exact gap:
    • no @biomejs/biome dep → still on ESLint, or unlinted
    • dep present but no biome.json
    • version differs from the fleet pin → version drift
  • N/A for non-node repos (Python, Rust — no package.json) → never fires there.
  • both manifest builders (local + remote/gh api) now expose packageJson and resolve biome.json/biome.jsonc; cleanVersion + biomeVersion helpers exported.

warn (not error) for rollout — same posture as workflow-security-lint; tighten to error once every node repo is on biome.

How the fleet moves together

Bump FLEET_BIOME_VERSION here → protoWorkstacean's fleet-config-audit (which runs verify-workspace-config --repo across every watched repo) flags everyone behind. Single bump, fleet-wide signal.

Verification

  • npm test60 pass / 0 fail (9 new: cleanVersion, biomeVersion, N/A, pass-on-fleet-version, no-dep warn, no-config warn, version-drift warn, biome.jsonc)
  • biome lint . clean; npm run smoke OK
  • self-audit (verify-workspace-config) — conformant (release-tools is on biome 2.4.16)
  • docs: reference/workspace-config-standard.md updated (table row + rationale)

Follow-up

The fleet-config-audit consumes github:protoLabsAI/release-tools (main), so this is live for the fleet audit on merge. A release-tools version bump/release would surface it to npm @protolabsai/release-tools consumers too.

🤖 Generated with Claude Code

…rsion

Adds a workspace-config standard rule so the fleet upgrades biome in lockstep
instead of drifting per-repo.

- `FLEET_BIOME_VERSION` (lib/workspace-config.mjs) is the single source of truth
  for the biome version every JS/TS repo tracks. Currently 2.4.16.
- new `biome-linter` rule (warn): a repo with a package.json must depend on
  @biomejs/biome at FLEET_BIOME_VERSION and carry a biome.json/biome.jsonc. The
  detail line names the exact gap (no dep → still on ESLint; dep but no config;
  or version drift from the fleet pin). N/A for non-node repos (Python/Rust have
  no package.json) → never fires there.
- both manifest builders (local + remote) now expose `packageJson` and resolve
  biome.json/biome.jsonc; helpers `cleanVersion` + `biomeVersion` exported.
- warn (not error) for rollout — same posture as workflow-security-lint; tighten
  to error once every node repo is on biome.

To move the fleet: bump FLEET_BIOME_VERSION here → `verify-workspace-config`
(run across the fleet by protoWorkstacean's fleet-config-audit) flags every repo
behind, in CI.

9 new tests (cleanVersion, biomeVersion, N/A, pass, no-dep warn, no-config warn,
version drift, biome.jsonc). 60 pass, biome lint clean, smoke OK, self-audit
conformant. Docs: reference/workspace-config-standard.md updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@protoquinn

protoquinn Bot commented Jun 4, 2026

Copy link
Copy Markdown

👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow.

@protoquinn protoquinn Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QA Audit — PR #43 | feat(workspace-config): biome-linter rule — fleet tracks one biome version

VERDICT: INCONCLUSIVE — CI pending


CI Status

  • Lint + smoke test: queued ⏳

Diff Review

  • bin/verify-workspace-config.mjs: localManifest and remoteManifest both gain packageJson (parsed or null). Graceful null on missing/not-a-node-repo. remoteManifest also adds biome.json/biome.jsonc to its presence-check set — correct.
  • lib/workspace-config.mjs: FLEET_BIOME_VERSION = '2.4.16', cleanVersion, biomeVersion helpers exported. New biome-linter rule (warn): skips non-node repos via !m.packageJson guard, checks dep presence → config presence → version match via cleanVersion. Detail lines are clear and actionable. fix command embeds the fleet pin inline — good.
  • docs/reference/workspace-config-standard.md: Table row added, rationale section covers non-node N/A and the upgrade flow.
  • test/workspace-config.test.mjs: 9 new cases covering N/A, pass-on-fleet-version, no-dep warn, no-config warn, version-drift warn, and biome.jsonc. Helper nodeManifest is clean.

Structural review (clawpatch)

  • Unavailable (gateway 502 on branch ref). Manual review substituted.

Observations

  • LOW: remoteManifest uses gh api fallback to null silently on any error — including a transient network failure, not just "file absent." The behavior is intentionally lenient (non-node repos have no package.json on GitHub), but worth noting: a 403 on a private repo would also silently fall through. Unlikely to matter for this tool's fleet context, but documented.
  • MEDIUM/INFO: WORKFLOW_SECURITY_LINT_PATH is imported in tests but unused in the diff — likely pre-existing dead import.

CodeRabbit

  • No unresolved threads.

CI must reach a terminal state before a formal PASS/FAIL verdict is issued. Will re-review once Lint + smoke test completes.

— Quinn, QA Engineer

@protoquinn

protoquinn Bot commented Jun 4, 2026

Copy link
Copy Markdown

Submitted COMMENT review on protoLabsAI/release-tools#43 — CI was still queued at inspection time, so a formal verdict (PASS/FAIL) is reserved until checks are terminal. The diff itself is well-structured: FLEET_BIOME_VERSION is a clean single-source pin, the biome-linter rule correctly gates on packageJson presence (making it N/A for Python/Rust), and the detail lines are specific enough to drive action. No blocking issues identified in the code.

@protoquinn protoquinn Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI terminal-green, no blockers on prior review — auto-approving on green (#748).

@mabry1985 mabry1985 merged commit 971e3bf into main Jun 4, 2026
1 check passed
@mabry1985 mabry1985 deleted the feat/biome-fleet-standard branch June 4, 2026 21:06
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