Repository navigation
Cloud Native: name the step a refused Native call came from - #32525
Conversation
NativeDeviceEnrollmentError.refused now carries the step that got the status (an owner op name or a METHOD /path template with ids replaced), and the error describes itself as "refused(400) at <step>", so the cloud.machines link_route says which call was refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-b3ddf8ea0a5ba6fad749
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Shipped in:
|
|
Review (subagent claude-opus-5-5 medium): SHIP at 049281f Visual verdict: unchanged by this diff I checked that the only behavioural comparison on this error, CloudNativeRouteHolder's Follow-ups: none |
|
Found 2 test failures on Blacksmith runners: Failures
|
Resolves #32525's step-named refusals with this branch's refusal logging and the platform target route. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-548f18c0a6d1ebb48240
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Why. A capture's
cloud.machinesreply showedlink_route: "link (native failed: refused(400))".NativeDeviceEnrollmentError.refusedis thrown from four places (device revoke, owner ops such ashost.enroll/host.network.bind, the signed Native reads, and thehost.network.targetread), so the reason didn't say which call got the 400.What.
refused(Int)becomesrefused(Int, step: String). The step is the owner op name, orMETHOD /pathwith device and mesh ids swapped for{device}/{mesh}(viaNativeDeviceScope.step). It never holds an id or a token.NativeDeviceEnrollmentErrornow conforms toCustomStringConvertible. Every other case prints exactly what it printed before, andrefusedprintsrefused(400) at POST /v1/devices/{device}/signed/tunnel(or... at host.network.target).refusedare updated.CloudNativeFirstLauncherTestsnow checks the literal route stringlink (native failed: refused(400) at host.network.target).Risk. None. Only the error's detail changes; nothing branches on the status or the step.
Agent session: agent session
🤖 Generated with Claude Code
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Makes
NativeDeviceEnrollmentError.refusedcarry the step that got the status, so thecloud.machineslink route says which call was refused instead of justrefused(400).refused(Int)becomesrefused(Int, step: String); the step is an owner op name or aMETHOD /pathtemplate with device and mesh ids replaced by{device}/{mesh}.NativeDeviceEnrollmentErrornow conforms toCustomStringConvertible, printing every case exactly as before exceptrefused, which prints e.g.refused(400) at POST /v1/devices/{device}/signed/tunnelorrefused(400) at host.network.target.Written for commit 049281f. Summary will update on new commits.