Skip to content

th-65c63e: add per-language PR CI lanes (python, typescript, go)#144

Merged
brentrager merged 1 commit into
mainfrom
polyglot-ci-lanes
Jul 2, 2026
Merged

th-65c63e: add per-language PR CI lanes (python, typescript, go)#144
brentrager merged 1 commit into
mainfrom
polyglot-ci-lanes

Conversation

@brentrager

Copy link
Copy Markdown
Contributor

Problem

PRs touching only python/, typescript/, or go/ got zero CI checks — only rust/ + dotnet/ paths triggered a lane (kind deploy smoke / .NET). SMOODEV-590's port PRs (#125/#126/#128) merged with no CI as a result.

Solution

One path-filtered PR lane per language, modeled on the existing .NET lane's shape (push-to-main + pull_request triggers, path filters, ubuntu-latest, 15-min timeout) plus concurrency (cancel superseded) and permissions: contents: read borrowed from the kind deploy smoke lane. Each lane runs exactly how its tree actually tests:

Lane Commands Matrix
Python uv syncruff checkruff format --checkpytest python/, python/server/
TypeScript pnpm install --frozen-lockfiletypechecktest (vitest) scoped to @smooai/smooth-operator + …-server
Go gofmt -l gate → go vet ./...go test ./... -race go/, go/server/

Trigger paths

Each lane fires on its own tree, its own workflow file, and spec/** — because all three conformance suites validate against spec/conformance/fixtures.json at runtime (same reason the .NET lane watches spec/**).

No secrets needed

The live-gateway E2E tests (test_e2e_live.py, e2e_live_test.go, e2e.live.test.ts) all self-skip without SMOOTH_AGENT_E2E + SMOOAI_GATEWAY_KEY, and the default vitest run excludes the live TS E2E.

Caching

Standard per-ecosystem caching consistent with the existing setup-action approach: astral-sh/setup-uv (enable-cache), actions/setup-node (cache: pnpm), actions/setup-go (built-in module/build cache).

Note

Also ran ruff format on the 7 unformatted files under python/ (pre-existing drift introduced by the port PRs) so the new format gate is green. No rust/dotnet lane touched.

Verification

All commands validated locally before pushing (go: 42+144 tests, python: 43+116 tests, ts: 30+132 tests, all green; actionlint clean). Acceptance is the lanes running green on this PR itself.

🤖 Generated with Claude Code

PRs touching only python/, typescript/, or go/ got ZERO checks — only
rust/dotnet paths triggered a lane, so SMOODEV-590's port PRs (#125/#126/#128)
merged with no CI. Add one path-filtered lane per language, mirroring the
existing .NET lane's shape (triggers, path filters, ubuntu-latest, timeout)
plus concurrency + read-only permissions from the kind-smoke lane:

- Python: uv sync + ruff check + ruff format --check + pytest, matrix over
  python/ and python/server/.
- TypeScript: pnpm install + typecheck + test (vitest), scoped to the two
  workspace packages (@smooai/smooth-operator + …-server).
- Go: gofmt check + go vet + go test ./... -race, matrix over go/ and go/server/.

Each lane also triggers on spec/** because all three conformance suites validate
against spec/conformance/fixtures.json at runtime. Live-gateway E2E tests
self-skip without SMOOTH_AGENT_E2E + SMOOAI_GATEWAY_KEY, so no secrets needed.

Also ran `ruff format` on the 7 unformatted files under python/ so the new
format gate is green (pre-existing drift from the port PRs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Jul 2, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: a62215e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@brentrager brentrager merged commit 77f9b1d into main Jul 2, 2026
5 checks passed
@brentrager brentrager deleted the polyglot-ci-lanes branch July 2, 2026 19:16
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