fix: report NONE gateways for replacement instead of an impossible update - #145
Conversation
…date
UpdateGateway rejects authorizer-type changes ("Authorizer type cannot be
updated for an existing gateway"), so the in-place NONE -> AWS_IAM switch
failed with ValidationException on every existing gateway. Record a fixed
ERR code (gateway_auth_replacement_required) without sending the update,
keep converging role/description drift, and document the operator
replacement procedure. The provisioner still never deletes gateways.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
🤖 AI Code Review (two independent reviewers)_Reviewer responses: codex/ALL claude/ALL _ Status: PASSED — No blocking issues found All claims are now verified against the base file plus the patch. I have what I need to synthesize the chair review. Chair Review — PR #145: fix: report NONE gateways for replacement instead of an impossible update1. SummaryThis PR correctly removes the impossible in-place authorizer upgrade (UpdateGateway rejects authorizer-type changes), replacing it with a fail-loud 2. Issues per lensL2 — Code correctness
L3 — Security / AWS mutation safety
L4 — Observability / data-integration correctness
L5 — Docs / ADR consistency
3. Suggestions
4. VerdictAll confirmed findings are MINOR. Codex's sole MAJOR was verified as a real but narrow documentation edge case in a deliberately conservative operator procedure, with fail-loud behavior preserved on every run — downgraded and excluded from the gate. No CRITICAL/MAJOR remains; the manifest lists no images. IMAGE_COVERAGE: NOT_REQUIRED Triggered by commit |
Summary
ValidationExceptionon all 9 gateways; the CLI message isAuthorizer type cannot be updated for an existing gateway. An in-placeNONE→AWS_IAMswitch is impossible.NONEgateway now recordsERRwith the new fixed codegateway_auth_replacement_required(visible in the bounded diagnostics stream) without sending the rejected update. Role/description drift still converges, preserving the deployed auth.docs/reference/05-agentcore.mddocuments the operator replacement procedure (stack-scoped selection, delete targets → gateway, poll to not-found, re-run provisioner, verify).Test plan
python3 -m pytest -q scripts/v2/agentcore— 88 passed (NONE → ERR with no update call; NONE + role drift still converges keepingNONE)awsops-v2-*gateways per the new procedure, re-run Deploy AgentCoresmoke=true, confirmAWS_IAM+ unsigned rejection🤖 Generated with Claude Code