Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
This pull request implements the provider-team slice of the Hermes Agent programming ecosystem, introducing infrastructure for task assignment and second-team code reviews. Key changes include new API endpoints for team readiness, task assignment, and review requests, along with service-level logic to validate prerequisites like MCP locks and provider configurations. The feedback identifies opportunities to improve maintainability by extracting duplicated validation and readiness-checking logic into shared helper functions.
| files = payload.get("files") | ||
| if not isinstance(files, list) or not files: | ||
| raise ValueError("Payload field files must be a non-empty list.") |
There was a problem hiding this comment.
This validation logic for a non-empty list is also used for files and proof_ids in the code.teams.request_review handler (lines 695-698). To improve maintainability and reduce code duplication, consider extracting this logic into a helper function, similar to how _required_payload_text is used for string validation.
| readiness = provider_team_readiness() | ||
| team_map = {team["id"]: team for team in readiness["teams"]} | ||
| selected_status = [team_map[item] for item in selected_teams] | ||
| blocked = [ | ||
| f"{team['id']}: {reason}" | ||
| for team in selected_status | ||
| for reason in (team.get("blocked_reasons") or []) | ||
| ] |
There was a problem hiding this comment.
This block of code to check team readiness and gather blocked reasons is duplicated in request_provider_team_review (lines 1010-1017). To improve maintainability, consider extracting this logic into a private helper function that could be called from both places. For example, a function like _get_selected_teams_status(selected_teams) could return the selected_status and blocked lists.
…85) (#198) Adds H3D-CLOSED-PR-LEDGER.md as the source-of-truth for the 19 closed-unmerged PRs in the Wave 10 audit scope. Each row cites the merged successor PR(s) and proof file paths, satisfying the feedback_weakness_correction.md rule that every PARTIAL audit finding must be paired with a fix-PR. The PR-#85 row in particular records the fold-in chain attribution (#84 team assignment -> #104 provider smoke -> #107/#112/#124/#145/#148 hardening) that was missing from the replacement-PR bodies per W10-A9's anti-rubber-stamp finding. Also includes a See also link from the W10 audit synthesis (CLOSED_UNMERGED_PR_SUPERSESSION_AUDIT_2026-05-10.md) to the new ledger, and a PARTIAL gap reconciliation section enumerating the Wave 11 closing PRs for #37 (W11-2 UI Playwright spec), #83 (W11-3 5 git-contract unit tests), and #85 (this PR — ledger doc). Doc-only PR: no source/test edits. Hermes evidence chain: PASS Task ID: W11-4-PR85-LEDGER-2026-05-10 Hermes lock owner: claude-w11-4-pr85 hermes_run_gate: docs-only-truth-gate Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
/api/code-operator/teams/*/api/agents/action-catalog, raising the catalog to 74 actionsTruth / Proof
H3D-CODEX-HERMES-AGENT-TEAMSev_bccf8739b9829cca/api/code-operator/teams/readinessreturned 200;/api/agents/action-catalogreturned 74 contractsassigned,review_requested,releasedValidation
python -m py_compile 03_implementation/src/hermes3d/services/code_history.py 03_implementation/src/hermes3d/api/routes/code_operator.py 03_implementation/src/hermes3d/api/routes/agents.pypython -m ruff check 03_implementation/src/hermes3d/services/code_history.py 03_implementation/src/hermes3d/api/routes/code_operator.py 03_implementation/src/hermes3d/api/routes/agents.py 04_testing/pytest/unit/test_code_operator.py 04_testing/pytest/unit/test_agent_action_catalog.pypython -m pytest 04_testing/pytest/unit/test_code_operator.py 04_testing/pytest/unit/test_agent_action_catalog.py -q(33 passed)python -m pytest 04_testing/pytest/unit/test_code_operator.py 04_testing/pytest/unit/test_agent_action_catalog.py 04_testing/pytest/unit/test_printer_policy.py -q(49 passed)python 03_implementation/scripts/scan_active_ui_no_fake.pypython -m pytest 04_testing/pytest/unit -q --maxfail=1(passed, 1 skipped)python -m pytest 03_implementation/tests -q --maxfail=1(passed with existing expected xfails)Remaining Roadmap Gap
This does not yet invoke MiniMax/DeepSeek to autonomously write/review code. It creates the real readiness, assignment, review-request, MCP/proof boundary needed before that provider-backed execution loop can be added safely.