Add Mergify config for automated merge queue#860
Conversation
|
test |
|
Claude Code Review Summary This PR adds a .mergify.yml configuration file (10 lines) to automate the merge queue process. The change is small and well-intentioned, but has two notable issues: the merge method conflicts with the project documented convention, and there are no CI status check requirements to gate automatic merges. Issues by Severity Blocker Issues: None Critical Issues: None Major Issues
File: .mergify.yml line 3
File: .mergify.yml lines 1-4 Minor Issues
File: .mergify.yml line 8 Positive Highlights
Recommendations
Review generated by Claude Code using repository standards from .claude/context/ and .claude/patterns/ |
|
Claude Code Review - See full review below (posted in sections due to formatting constraints) |
|
This is a test with a URL: https://github.com/ambient-code/platform and some backticks like merge_method: squash and some review content. |
|
Replacing with full review - see next comment |
|
Claude Code Review Summary This PR introduces a .mergify.yml to automate the merge queue using the Mergify GitHub App. The configuration is minimal and well-structured, but there are two meaningful gaps: the merge_method contradicts the project's documented commit convention, and several required CI checks (unit tests, lint) are absent from the queue gate. Issues by Severity Blocker Issues: None Critical Issues: None Major Issues
File: .mergify.yml line 4
File: .mergify.yml lines 5-10 Minor Issues
File: .mergify.yml line 8
File: .mergify.yml lines 13-16 Positive Highlights
Recommendations
|
|
test |
|
Placeholder - will edit |
|
Claude Code Review - Summary: This PR introduces a .mergify.yml. Two gaps found: merge_method contradicts squash convention, and unit tests and lint are absent from queue gate. Major Issue 1: merge_method rebase contradicts squash-merge convention (CLAUDE.md). Major Issue 2: Unit tests and lint not required in queue_conditions. Minor: detect-changes ambiguous, no dismissed-reviews guard. Recommendations: Change to squash, add unit-test and lint checks, add changes-requested guard, remove or qualify detect-changes. |
Ambient Code PlatformKubernetes-native AI automation platform that orchestrates agentic sessions through containerized microservices. Built with Go (backend, operator), NextJS + Shadcn (frontend), Python (runner), and Kubernetes CRDs.
Structure
Key Files
Session FlowCommandsmake build-all # Build all container images
make deploy # Deploy to cluster
make test # Run tests
make lint # Lint code
make kind-up # Start local Kind cluster
make test-e2e-local # Run E2E tests against KindPer-Component# Backend / Operator (Go)
cd components/backend && gofmt -l . && go vet ./... && golangci-lint run
cd components/operator && gofmt -l . && go vet ./... && golangci-lint run
# Frontend
cd components/frontend && npm run build # Must pass with 0 errors, 0 warnings
# Runner (Python)
cd components/runners/ambient-runner && uv venv && uv pip install -e .
# Docs
cd docs && npm run dev # http://localhost:4321Critical Context
Pre-commit HooksThe project uses the pre-commit framework to run linters locally before every commit. Configuration lives in Installmake setup-hooksWhat RunsOn every
On every
Run Manuallymake lint # All hooks, all files
pre-commit run gofmt-check --all-files # Single hook
pre-commit run --files path/to/file.go # Single fileSkip Hooksgit commit --no-verify # Skip pre-commit hooks
git push --no-verify # Skip pre-push hooksNotes
Testing
More InfoSee BOOKMARKS.md for architecture decisions, development context, code patterns, and component-specific guides. |
2 similar comments
Ambient Code PlatformKubernetes-native AI automation platform that orchestrates agentic sessions through containerized microservices. Built with Go (backend, operator), NextJS + Shadcn (frontend), Python (runner), and Kubernetes CRDs.
Structure
Key Files
Session FlowCommandsmake build-all # Build all container images
make deploy # Deploy to cluster
make test # Run tests
make lint # Lint code
make kind-up # Start local Kind cluster
make test-e2e-local # Run E2E tests against KindPer-Component# Backend / Operator (Go)
cd components/backend && gofmt -l . && go vet ./... && golangci-lint run
cd components/operator && gofmt -l . && go vet ./... && golangci-lint run
# Frontend
cd components/frontend && npm run build # Must pass with 0 errors, 0 warnings
# Runner (Python)
cd components/runners/ambient-runner && uv venv && uv pip install -e .
# Docs
cd docs && npm run dev # http://localhost:4321Critical Context
Pre-commit HooksThe project uses the pre-commit framework to run linters locally before every commit. Configuration lives in Installmake setup-hooksWhat RunsOn every
On every
Run Manuallymake lint # All hooks, all files
pre-commit run gofmt-check --all-files # Single hook
pre-commit run --files path/to/file.go # Single fileSkip Hooksgit commit --no-verify # Skip pre-commit hooks
git push --no-verify # Skip pre-push hooksNotes
Testing
More InfoSee BOOKMARKS.md for architecture decisions, development context, code patterns, and component-specific guides. |
Ambient Code PlatformKubernetes-native AI automation platform that orchestrates agentic sessions through containerized microservices. Built with Go (backend, operator), NextJS + Shadcn (frontend), Python (runner), and Kubernetes CRDs.
Structure
Key Files
Session FlowCommandsmake build-all # Build all container images
make deploy # Deploy to cluster
make test # Run tests
make lint # Lint code
make kind-up # Start local Kind cluster
make test-e2e-local # Run E2E tests against KindPer-Component# Backend / Operator (Go)
cd components/backend && gofmt -l . && go vet ./... && golangci-lint run
cd components/operator && gofmt -l . && go vet ./... && golangci-lint run
# Frontend
cd components/frontend && npm run build # Must pass with 0 errors, 0 warnings
# Runner (Python)
cd components/runners/ambient-runner && uv venv && uv pip install -e .
# Docs
cd docs && npm run dev # http://localhost:4321Critical Context
Pre-commit HooksThe project uses the pre-commit framework to run linters locally before every commit. Configuration lives in Installmake setup-hooksWhat RunsOn every
On every
Run Manuallymake lint # All hooks, all files
pre-commit run gofmt-check --all-files # Single hook
pre-commit run --files path/to/file.go # Single fileSkip Hooksgit commit --no-verify # Skip pre-commit hooks
git push --no-verify # Skip pre-push hooksNotes
Testing
More InfoSee BOOKMARKS.md for architecture decisions, development context, code patterns, and component-specific guides. |
Claude Code ReviewSummaryThis PR introduces a Issues by SeverityBlocker IssuesNone Critical IssuesNone Major Issues1.
2. Unit tests and lint are not required queue conditions
Minor Issues1.
2. No dismissed-reviews guard
Positive Highlights
Recommendations
|
Claude Code ReviewSummaryThis PR adds a .mergify.yml configuration file to enable automated merge queue management via the Mergify GitHub App. The change is infrastructure-only, small in scope, and aligns well with the project squash-merge convention. One minor inconsistency between the PR description and the actual configuration was found. Issues by SeverityBlocker IssuesNone Critical IssuesNone Major IssuesNone Minor Issues1. PR description contradicts actual merge method
2. queue action has no explicit name property
Positive Highlights
Recommendations
Reviewed by Claude Code - Model: claude-sonnet-4-6 |
Mergify enqueues approved PRs, rebases them onto the target branch, and merges once CI passes. This replaces manual merge coordination and ensures every PR lands with a clean rebase. The repo also needs the "Require review from Code Owners" branch protection setting enabled in GitHub for CODEOWNERS enforcement to take effect. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9050586 to
fe24f8c
Compare
Ambient Code PlatformKubernetes-native AI automation platform that orchestrates agentic sessions through containerized microservices. Built with Go (backend, operator), NextJS + Shadcn (frontend), Python (runner), and Kubernetes CRDs.
Structure
Key Files
Session FlowCommandsmake build-all # Build all container images
make deploy # Deploy to cluster
make test # Run tests
make lint # Lint code
make kind-up # Start local Kind cluster
make test-e2e-local # Run E2E tests against KindPer-Component# Backend / Operator (Go)
cd components/backend && gofmt -l . && go vet ./... && golangci-lint run
cd components/operator && gofmt -l . && go vet ./... && golangci-lint run
# Frontend
cd components/frontend && npm run build # Must pass with 0 errors, 0 warnings
# Runner (Python)
cd components/runners/ambient-runner && uv venv && uv pip install -e .
# Docs
cd docs && npm run dev # http://localhost:4321Critical Context
Pre-commit HooksThe project uses the pre-commit framework to run linters locally before every commit. Configuration lives in Installmake setup-hooksWhat RunsOn every
On every
Run Manuallymake lint # All hooks, all files
pre-commit run gofmt-check --all-files # Single hook
pre-commit run --files path/to/file.go # Single fileSkip Hooksgit commit --no-verify # Skip pre-commit hooks
git push --no-verify # Skip pre-push hooksNotes
Testing
More InfoSee BOOKMARKS.md for architecture decisions, development context, code patterns, and component-specific guides. |
BookmarksProgressive disclosure for task-specific documentation and references. Table of Contents
Architecture DecisionsADR-0001: Kubernetes-Native ArchitectureWhy the platform uses CRDs, operators, and Job-based execution instead of a traditional API. ADR-0002: User Token AuthenticationWhy user tokens are used for API operations instead of service accounts. ADR-0003: Multi-Repo SupportDesign for operating on multiple repositories in a single session. ADR-0004: Go Backend, Python RunnerLanguage choices for each component and why. ADR-0005: NextJS + Shadcn + React QueryFrontend technology stack decisions. ADR-0006: Ambient Runner SDK ArchitectureRunner SDK design and architecture. Development ContextBackend Development ContextGo backend patterns, K8s integration, handler conventions, user-scoped client usage. Frontend Development ContextNextJS patterns, Shadcn UI usage, React Query data fetching, component guidelines. Security StandardsAuth flows, RBAC enforcement, token handling, container security patterns. Code PatternsError Handling PatternsConsistent error patterns across backend, operator, and runner. K8s Client Usage PatternsWhen to use user token vs. service account clients. Critical for RBAC compliance. React Query Usage PatternsData fetching hooks, mutations, cache invalidation, optimistic updates. Component GuidesBackend READMEGo API development, testing, handler structure. Backend Test GuideTesting strategies, test utilities, integration test setup. Frontend READMENextJS development, local setup, environment config. Frontend Design GuidelinesComponent patterns, Shadcn usage, type conventions, pre-commit checklist. Frontend Component PatternsArchitecture patterns for React components. Operator READMEOperator development, watch patterns, reconciliation loop. Runner READMEPython runner development, Claude Code SDK integration. Public API READMEStateless gateway design, token forwarding, input validation. Development EnvironmentKind Local DevelopmentRecommended local dev setup using Kind (Kubernetes in Docker). CRC Local DevelopmentOpenShift Local (CRC) setup for OpenShift-specific features. Minikube SetupOlder approach, still supported. Hybrid DevelopmentRun components locally with breakpoint debugging. Manifests READMEKustomize overlay structure, deploy.sh usage. TestingE2E Testing GuideWriting and running Cypress E2E tests. E2E READMERunning E2E tests, environment setup, CI integration. ObservabilityObservability OverviewMonitoring, metrics, and tracing architecture. Langfuse IntegrationLLM tracing with privacy-preserving defaults. Operator MetricsGrafana dashboards for operator metrics. Design DocumentsDeclarative Session ReconciliationSession lifecycle management through declarative status transitions. Runner-Operator ContractInterface contract between operator and runner pods. Session Status RedesignStatus field evolution and phase transitions. Session Initialization FlowHow sessions are initialized and configured. Spec-Runtime SynchronizationKeeping spec and runtime state in sync. Amber AutomationAmber ConfigAutomation policies and label mappings. |
Ambient Code PlatformKubernetes-native AI automation platform that orchestrates agentic sessions through containerized microservices. Built with Go (backend, operator), NextJS + Shadcn (frontend), Python (runner), and Kubernetes CRDs.
Structure
Key Files
Session FlowCommandsmake build-all # Build all container images
make deploy # Deploy to cluster
make test # Run tests
make lint # Lint code
make kind-up # Start local Kind cluster
make test-e2e-local # Run E2E tests against KindPer-Component# Backend / Operator (Go)
cd components/backend && gofmt -l . && go vet ./... && golangci-lint run
cd components/operator && gofmt -l . && go vet ./... && golangci-lint run
# Frontend
cd components/frontend && npm run build # Must pass with 0 errors, 0 warnings
# Runner (Python)
cd components/runners/ambient-runner && uv venv && uv pip install -e .
# Docs
cd docs && npm run dev # http://localhost:4321Critical Context
Pre-commit HooksThe project uses the pre-commit framework to run linters locally before every commit. Configuration lives in Installmake setup-hooksWhat RunsOn every
On every
Run Manuallymake lint # All hooks, all files
pre-commit run gofmt-check --all-files # Single hook
pre-commit run --files path/to/file.go # Single fileSkip Hooksgit commit --no-verify # Skip pre-commit hooks
git push --no-verify # Skip pre-push hooksNotes
Testing
More InfoSee BOOKMARKS.md for architecture decisions, development context, code patterns, and component-specific guides. |
|
Test comment - checking connectivity |
Ambient Code PlatformKubernetes-native AI automation platform that orchestrates agentic sessions through containerized microservices. Built with Go (backend, operator), NextJS + Shadcn (frontend), Python (runner), and Kubernetes CRDs.
Structure
Key Files
Session FlowCommandsmake build-all # Build all container images
make deploy # Deploy to cluster
make test # Run tests
make lint # Lint code
make kind-up # Start local Kind cluster
make test-e2e-local # Run E2E tests against KindPer-Component# Backend / Operator (Go)
cd components/backend && gofmt -l . && go vet ./... && golangci-lint run
cd components/operator && gofmt -l . && go vet ./... && golangci-lint run
# Frontend
cd components/frontend && npm run build # Must pass with 0 errors, 0 warnings
# Runner (Python)
cd components/runners/ambient-runner && uv venv && uv pip install -e .
# Docs
cd docs && npm run dev # http://localhost:4321Critical Context
Pre-commit HooksThe project uses the pre-commit framework to run linters locally before every commit. Configuration lives in Installmake setup-hooksWhat RunsOn every
On every
Run Manuallymake lint # All hooks, all files
pre-commit run gofmt-check --all-files # Single hook
pre-commit run --files path/to/file.go # Single fileSkip Hooksgit commit --no-verify # Skip pre-commit hooks
git push --no-verify # Skip pre-push hooksNotes
Testing
More InfoSee BOOKMARKS.md for architecture decisions, development context, code patterns, and component-specific guides. |
|
Linux version 6.14.0-1017-azure (buildd@lcy02-amd64-074) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2 |
|
test |
|
Test comment 2 - checking write permissions before review |
|
Claude Code Review Summary This PR introduces a Issues by Severity Blocker Issues: None Critical Issues: None Major Issues: None Minor Issues 1. No base=main filter on the enqueue rule - The 2. Squash commit message template not specified - With 3. PR description references CODEOWNERS but no CODEOWNERS file exists The PR description states the queue satisfies CODEOWNERS requirements, but no CODEOWNERS file exists in the repository. Positive Highlights
Recommendations
Review generated by Amber / Claude Code |
Claude Code ReviewSummaryThis PR adds a Issues by SeverityBlocker IssuesNone Critical IssuesNone Major IssuesNone Minor Issues1. PR description says “rebase” but config uses The description states the queue “rebases and merges” PRs, but Suggested fix: Update the PR description to say “squash-merges” to accurately reflect the behavior. 2. No File: The queue will process PRs without explicitly ensuring they are rebased onto the latest base branch before the squash-merge. In high-velocity scenarios a PR with passing CI could land on a stale base. Adding 3. CI gate completeness cannot be fully verified from the diff File: The four required checks ( Suggested action: Cross-check these four names against all GitHub Actions workflow job names to ensure no critical gate is missing. Positive Highlights
Recommendations
Review performed by Claude Code using repository standards from 🔍 View AI decision process (logs available for 90 days) 📋 View memory system files loaded (click to expand)What Amber Loaded for Code ReviewAmber automatically loaded these repository standards from the memory system:
Impact: This review used your repository's specific code quality standards, security patterns, and best practices from the memory system (PRs #359, #360) - not just generic code review guidelines. |
|
Idea from @mprpic : Instead of hard-coding the GH Action job names in Mergify itself does not have support for this. One option I researched: build a new |
Summary
.mergify.ymlwith a merge queue that rebases queued PRs ontomainand re-runs CI, then squash-merges once all checks passFixes #858
Prerequisites
Test plan
python3 -c "import yaml; yaml.safe_load(open('.mergify.yml'))"