feat: cloud-team-issue multi-member team spec + contract validation#43
Conversation
Adds teams/cloud-team-issue/team.json — a 2-member roster (implementer + reviewer) for the deployed cloud-team-issue teamSolve agent, using the lead-outside-member-list shape bindTeam expects. Binding it creates the team_members rows the team N>1 delivery drain (cloud#1893) reads; the roster stays dormant until the persona maxMembers bump and the CLOUD_TEAM_LAUNCH_MULTI_ENABLED flag flip in cloud. scripts/validate-team-spec.mjs mirrors cloud's loadTeamSpec rules plus the Phase-1 bindTeam restrictions (no inline personas), and tests/team-spec.test.mjs golden-validates every teams/*/team.json against it — including self-checks proving each rejection rule fires — so contract drift fails in CI instead of as a 4xx at bind time. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
|
CodeAnt AI is reviewing your PR. |
📝 WalkthroughWalkthroughThis PR introduces a team specification validation system for the repository. It adds a reusable validator module that enforces team JSON contracts (required/optional fields, persona format, member uniqueness, ownership double-claim detection, budget validation), documentation explaining the team spec binding semantics and structure, a concrete example team configuration, and a comprehensive test suite that discovers and validates all team specs. ChangesTeam Specification Validation Framework
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
CodeAnt AI finished reviewing your PR. |
|
ℹ️ pr-reviewer: review only — no file changes were applied to the PR (nothing to commit after review). The notes below are advisory and were not pushed. Reviewed PR #43 against the diff, changed files, local code paths, PR comments, reviews, and checks. No code changes were needed. I found no actionable bot/reviewer comments:
Local verification after
I am not printing |
There was a problem hiding this comment.
1 issue found across 4 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…enter / cloud-team-reviewer) agents#44 ships deployable teamSolve members; the roster now references those slugs instead of the placeholder same-slug setup. Binding fails closed until the new personas are deployed, so the order stays: merge+ deploy #44 -> bind this roster. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
CodeAnt AI is running Incremental review |
|
CodeAnt AI Incremental review completed. |
|
Reviewed PR #43 and resolved the roster/spec consistency issue in the checked-out files. The final Local verification passed:
|
|
Fixed the PR issue I found: Added a focused regression test in Local checks passed:
|
|
✅ pr-reviewer applied fixes — committed and pushed Fixed the PR issue I found: Added a focused regression test in Local checks passed:
|
|
Fixed the actionable cubic review finding in scripts/validate-team-spec.mjs: duplicate Added regression coverage in tests/team-spec.test.mjs for the missed conflict case. Local verification passed:
Reviewed PR comments on GitHub; the only actionable bot issue was cubic’s |
|
✅ pr-reviewer applied fixes — committed and pushed Fixed the actionable cubic review finding in scripts/validate-team-spec.mjs: duplicate Added regression coverage in tests/team-spec.test.mjs for the missed conflict case. Local verification passed:
Reviewed PR comments on GitHub; the only actionable bot issue was cubic’s |
|
ℹ️ pr-reviewer: review only — no file changes were applied to the PR (nothing to commit after review). The notes below are advisory and were not pushed. Reviewed PR #43 against No additional file edits were needed in this run: the actionable cubic finding on duplicate Local checks passed:
The PR head currently has no failed or in-progress checks I can fix locally. |
|
ℹ️ pr-reviewer: review only — no file changes were applied to the PR (nothing to commit after review). The notes below are advisory and were not pushed. Reviewed PR #43 against the diff, changed files, local impact, and GitHub PR comments. No additional fixes were needed in this run. The actionable cubic finding about duplicate Local checks passed after
|
|
Reviewed PR #43 from the provided artifacts and traced the changed files in the checkout. I found no required code fixes. Local checks run:
No bot/reviewer comment metadata was present under |
|
ℹ️ pr-reviewer: review only — no file changes were applied to the PR (nothing to commit after review). The notes below are advisory and were not pushed. Reviewed PR #43 from the provided artifacts and traced the changed files in the checkout. I found no required code fixes. Local checks run:
No bot/reviewer comment metadata was present under |
User description
What
teams/cloud-team-issue/team.json— a 2-member roster (implementer + reviewer) for the deployedcloud-team-issueteamSolve agent, in the lead-outside-member-list shapebindTeamexpects (lead = deployed agent'sdeployedName; members = launchable workers).scripts/validate-team-spec.mjs— validation helper mirroring cloud'sloadTeamSpecrules (packages/core team-spec.ts) plus the Phase-1bindTeamrestriction (inline personas rejected).tests/team-spec.test.mjs— golden-validates everyteams/*/team.jsonagainst the contract, with self-checks proving each rejection rule fires.npm test: 31/31.teams/README.md— contract summary + bind command + go-live levers.Why this roster shape
UPDATED: the roster now references the real member personas from agents#44 (
cloud-team-implementercodex/gpt-5.5 +cloud-team-reviewerclaude/sonnet-4-6).bindTeamrequires every member slug to be deployed, and binding fails closed until they are — so the order is: merge+deploy #44 → merge this → bind. The binding upserts on(workspace, slug)so re-binding updates the roster in place.Open choice flagged for @khaliqgant: if you'd rather the members reference different personas (or a 3rd member to exercise the cap-truncation path), say the word — member rows are the only part that changes.
Dormant by construction — three levers for team N>1 go-live
POST /api/v1/workspaces/{id}/teamswith this file — creates theteam_membersrows cloud#1893's drain reads).cloud-team-issuepersona'scapabilities.teamSolve.maxMembersraised from its current 1 (the drain re-derives the cap from the persona spec and truncates the roster to it, logging dropped members — so binding this today is safe and inert).CLOUD_TEAM_LAUNCH_MULTI_ENABLEDflipped (cloud#1893 dispatcher flag, default off).Until all three, nothing changes in production behavior.
🤖 Generated with Claude Code
Summary by cubic
Adds a two-member roster for
cloud-team-issueand a CI validator with tests to enforce the team spec contract. Further review fixes applied; no behavior changes.New Features
teams/cloud-team-issue/team.json: implementer + reviewer members; lead is the deployedcloud-team-issueagent; both members reference thecloud-team-issuepersona slug and are distinguished byname/role.scripts/validate-team-spec.mjs: mirrors cloudloadTeamSpecand Phase‑1bindTeamrules (no inline personas, unique names, non‑overlappingowns, positive 32‑bit budgets).tests/team-spec.test.mjs: validates everyteams/*/team.jsonand includes rejection self‑checks;teams/README.mddocuments the contract and a curl bind example.Migration
teams/cloud-team-issue/team.jsonto the workspace teams API.capabilities.teamSolve.maxMembersabove 1.CLOUD_TEAM_LAUNCH_MULTI_ENABLEDto true.Written for commit 4a8f745. Summary will update on new commits.
Cap-ordering note (from cloud#1893 drain cross-check)
The drain orders roster rows by
team_members.nameascending and truncates to the persona cap — so at the current cap of 1, the alphabetically-first member name decides which row launches. The names here (implementer<reviewer) make the implementer win, which is the intended default; renaming members can silently change the cap-1 pick. Also: once bound, the roster-config path is live at N=1 (memberName/role come from the roster row instead of the verbatim fallback) — that's #1853's intended behavior, not a new delta.CodeAnt-AI Description
Add a validated multi-member team roster for cloud-team-issue
What Changed
cloud-team-issueteam spec with two members: an implementer and a reviewer.Impact
✅ Safer team binding✅ Fewer invalid team spec uploads✅ Clearer setup for multi-member team launches💡 Usage Guide
Checking Your Pull Request
Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.
Talking to CodeAnt AI
Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:
This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.
Example
Preserve Org Learnings with CodeAnt
You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:
This helps CodeAnt AI learn and adapt to your team's coding style and standards.
Example
Retrigger review
Ask CodeAnt AI to review the PR again, by typing:
Check Your Repository Health
To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.