Skip to content

ci: gate workspace membership, cover npm in dependabot#647

Closed
dev-jodee wants to merge 1 commit into
ci/cachefrom
ci/repo-checks
Closed

ci: gate workspace membership, cover npm in dependabot#647
dev-jodee wants to merge 1 commit into
ci/cachefrom
ci/repo-checks

Conversation

@dev-jodee

Copy link
Copy Markdown
Collaborator
  • rust.yml gains a workspace-membership job: any crate with a
    [package] section must be a root workspace member or listed in
    .github/.workspace-ignore, so fmt/clippy coverage can no longer drop
    silently. The ignore file is seeded with the 53 crates currently
    outside the workspace as a ratchet.
  • dependabot now updates npm across all example directories (grouped,
    biweekly, patch-only — same posture as cargo), covering the manual
    dependency-bump toil.
  • typescript.yml renamed to Lint: it runs Biome only; typechecking
    lives in the build workflows.

Stack created with GitHub Stacks CLIGive Feedback 💬

- rust.yml gains a workspace-membership job: any crate with a
  [package] section must be a root workspace member or listed in
  .github/.workspace-ignore, so fmt/clippy coverage can no longer drop
  silently. The ignore file is seeded with the 53 crates currently
  outside the workspace as a ratchet.
- dependabot now updates npm across all example directories (grouped,
  biweekly, patch-only — same posture as cargo), covering the manual
  dependency-bump toil.
- typescript.yml renamed to Lint: it runs Biome only; typechecking
  lives in the build workflows.
@greptile-apps

greptile-apps Bot commented Jul 24, 2026

Copy link
Copy Markdown

Greptile Summary

This PR expands automated dependency and CI coverage.

  • Adds a workspace-membership check that requires every Rust crate to be a root workspace member or explicitly ignored.
  • Seeds the workspace ignore list with existing standalone crates.
  • Configures patch-only npm Dependabot updates across example directories.
  • Renames the TypeScript workflow to reflect its Biome-only linting role.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete defects identified in the changed CI or dependency-update configuration.

The workspace gate matches the repository’s current root and standalone crate layouts, while the remaining changes preserve existing workflow behavior and dependency-update policy.

Important Files Changed

Filename Overview
.github/.workspace-ignore Accurately enumerates the current crates intentionally excluded from the root Cargo workspace.
.github/dependabot.yml Adds npm updates using the existing grouped, biweekly, cooldown, and patch-only policy.
.github/workflows/rust.yml Adds a consistent workspace-membership ratchet without disrupting the existing formatting or clippy jobs.
.github/workflows/typescript.yml Renames the workflow from TypeScript to Lint without changing its execution behavior.

Reviews (1): Last reviewed commit: "ci: gate workspace membership, cover npm..." | Re-trigger Greptile

@dev-jodee
dev-jodee deleted the branch ci/cache July 24, 2026 15:54
@dev-jodee

Copy link
Copy Markdown
Collaborator Author

Superseded by a single combined PR.

@dev-jodee dev-jodee closed this Jul 24, 2026
@dev-jodee
dev-jodee deleted the ci/repo-checks branch July 24, 2026 15:54
dev-jodee added a commit that referenced this pull request Jul 24, 2026
…#650)

## Summary

Combined CI overhaul (supersedes the closed stack #643#647, #649). Six commits, reviewable one by one:

- **Hardening** — fix the matrix stride bug (jobs sliced with hardcoded `MIN_PROJECTS_PER_JOB` while the matrix was sized with the computed `projects_per_job`, silently skipping projects past 256 dirs of one type); cancel superseded PR runs; `timeout-minutes` on every job; top-level `permissions: contents: read`; third-party actions pinned to commit SHAs.
- **Beta → nightly** — Solana beta legs ran double the build on every PR while `continue-on-error` made them unfailable. They now run only on the nightly schedule, skip the test leg when beta setup fails, and report passed/failed/skipped explicitly in the job summary.
- **Typecheck** — nothing in CI ran `tsc` (Biome only lints; ts-mocha/tsx transpile without checking). Every build workflow now runs `tsc --noEmit` per project — after `anchor build` for anchor so generated `target/types`/`target/idl` resolve. 79 of ~100 projects failed the initial audit; all CI-covered projects were repaired (tsconfig hygiene, `@types/node`, TS 4→5 bumps, lockfile regens) including real bugs: `counter/native` called `createIncrementInstruction` with two args, `close-account/native` was missing its `borsh` dependency.
- **Caching** — pnpm store, shared cargo-registry cache, Solana toolchain cache, sbpf binary keyed on its pinned rev.
- **Repo checks** — workspace-membership ratchet: crates outside the root Cargo workspace escape fmt/clippy; `.github/.workspace-ignore` seeds the 53 current gaps and CI fails on new ones. Dependabot now covers npm (grouped, biweekly, patch-only). `typescript.yml` renamed to Lint.
- **Unified setup action** — single `.github/actions/setup` with `install-*` toggles + version inputs (pnpm/Node, Solana, Anchor, just, sbpf) and built-in caching, called by every build workflow. Absorbs the vendored setup-anchor and removes all remote `heyAyushh/setup-solana` references — that action checks out its own default branch at runtime, so even SHA-pinned it executed unpinned code. Also fixes an inherited bug that is live today: with no beta tag, `channel-info.sh`'s positional output shifts stable into the beta slot and "stable" resolves to nothing.
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