Skip to content

feat(providers): report bounded token-grant failures - #4427

Merged
johntmyers merged 14 commits into
NVIDIA:mainfrom
shiju-nv:feat/3319-typed-failure-reporting/shiju-nv
Oct 15, 2026
Merged

johntmyers merged 14 commits into
NVIDIA:mainfrom
shiju-nv:feat/3319-typed-failure-reporting/shiju-nv

Conversation

@shiju-nv

@shiju-nv shiju-nv commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

A refused dynamic token grant now gives authorized callers a bounded cause and recovery action through sandbox reads, while the workload receives a generic HTTP 502 and an opaque request ID. Reporting covers inspected HTTP protocols and selector-based forwarding, including failures before credential selection.

Related Issue

Closes #3319

Changes

  • Classify each refused grant into one closed set of codes, each with a fixed recovery action from the existing provider recovery vocabulary. No cause retains remote descriptions, tokens or error chains.

    Code Recovery gRPC status
    provider_authorization_required reauthorize FAILED_PRECONDITION
    workload_identity_rejected fix configuration PERMISSION_DENIED
    configuration_error fix configuration FAILED_PRECONDITION
    timeout retry DEADLINE_EXCEEDED
    unavailable retry UNAVAILABLE
    unclassified investigate UNKNOWN
  • Recognize a token service's provider_authorization_required only with the exact openshell.token-grant.v1 contract over verified HTTPS; a bare 401 stays unclassified. The gateway can also establish that cause from missing or expired stored subject credentials. HTTP 429 and 5xx without a recognized extension code are unavailable, as are connect failures, including TLS certificate or hostname verification failures. A failure after the connection is established is unclassified, and any timeout, including a slow response body, is timeout.

  • The gateway returns a refused grant to the supervisor as a gRPC status with a single ErrorInfo detail (reason TOKEN_GRANT_FAILURE). The supervisor decodes it strictly. Any other status, such as details over 1024 bytes, more than one detail, or unknown metadata keys, codes or stages, becomes unclassified at the gateway_rpc stage.

  • Carry one supervisor-minted request ID through both token-service hops, the gateway, refusal logs, status and workload response (x-openshell-request-id).

  • Retain one SandboxStatus.last_token_grant_failure with a bounded destination and failure cause. Reuse authenticated status reports and sandbox reads, with no new public RPC or request history. Matching grant success and configuration/session resets clear it; unrelated success retains it. MCP endpoint status also retains its configured-endpoint cause.

  • Proto additions, all on existing messages or new messages they reference:

    • EndpointFailure and EndpointFailureDomain (domain TOKEN_GRANT), carrying code, recovery action, provider, credential key, stage, optional upstream HTTP status and request ID.
    • TokenGrantStatus and TokenGrantFailureObservation (destination host and port plus an EndpointFailure).
    • ReportEndpointStatusRequest.token_grant_status = 8. Omitting it keeps the previous behavior; a present message with no last_failure clears the stored cause.
    • EndpointObservation.failure = 3, EndpointStatus.last_failure = 7 and SandboxStatus.last_token_grant_failure = 17.
  • In Rust, the supervisor builds the proto EndpointFailure from a typed TokenGrantFailure through openshell_core::endpoint_failure::EndpointFailure. The gateway validates reported causes against the same closed sets and names the rejected field and reason (EndpointFailureValidationError) without echoing rejected values.

  • Select the live credential snapshot on fallback forwarding so an idle socket cannot report an old grant under a new provider revision, and drop the per-connection credential copy that no request reads anymore. Expose the result through CLI JSON/YAML/text, the Go SDK and documentation.

  • Add a real REST workload test with native CA verification at both grant hops, authenticated persisted reads, exact correlation, redaction, denied anonymous and supervisor-credential readers, and recovery.

Testing

Focused checks pass on the final head: core 586, server 747 (provider, policy, sandbox, session and schema modules), network 1120 (token grant, L7 and proxy modules) and CLI rendering tests; Go converter tests; strict Clippy on all targets of the five affected production packages; E2E target compilation; formatting and Markdown lint. The repository pre-commit hook (workspace formatting and Clippy on all targets) passed.

Final-head Branch Checks passed all 24 jobs on the first attempt. E2E passed with 59 successful jobs and six optional skipped jobs. The verified-HTTPS REST case passed in bundled Podman, and its target completed all three tests. Optional Windows, GPU and Helm contexts are not runtime proof.

The feature-enabled E2E target retains 13 preexisting Clippy diagnostics. Its library and a diagnostic run allowing only those known categories pass; no lint configuration was changed. The hosted default-feature strict Clippy gate passed.

  • Checks appropriate to the affected code and behavior pass locally
  • Unit tests added/updated
  • E2E tests added/updated

Checklist

@shiju-nv shiju-nv added the test:e2e Requires end-to-end coverage label Oct 12, 2026
@github-actions

Copy link
Copy Markdown

Label test:e2e applied for e7d1a41. Open the existing run and click Re-run all jobs to execute with the label set. The run will execute the standard E2E suite after building the required gateway, sandbox, and supervisor images once. The matching required CI gate status on this PR will flip green automatically once the run finishes.

@shiju-nv
shiju-nv force-pushed the feat/3319-typed-failure-reporting/shiju-nv branch from e7d1a41 to b36ab6c Compare October 12, 2026 18:07
@shiju-nv shiju-nv changed the title feat(providers): report typed dynamic token-grant failures to the control plane feat(providers): report bounded token-grant failures Oct 12, 2026
Signed-off-by: Shiju <shiju@nvidia.com>
Signed-off-by: Shiju <shiju@nvidia.com>
Signed-off-by: Shiju <shiju@nvidia.com>
Signed-off-by: Shiju <shiju@nvidia.com>
Remove duplication and dead paths from the token-grant failure
reporting without changing classification, the workload-visible
502 response, or the wire format.

- Build the gRPC failure envelope with tonic-types, store the typed
  failure in EndpointFailure, and share one request-ID rule and one
  endpoint-status authority check.
- Merge the gateway exchange client wrapper, drop forwarding
  validators, and name the request field when a reported cause is
  rejected.
- Inject fallback credentials only from live provider state and
  delete the unread per-connection credential copy. Keep one 502
  writer per path and restore the base token-cache handling.
- Check the token endpoint after the cache lookup, still before any
  credential acquisition.
- Document 429 and 5xx classification as implemented, and drop tests
  that repeat retained assertions through the same code path.

Signed-off-by: Shiju <shiju@nvidia.com>
Cut the token-grant failure tests to one test per distinct behavior
across core, gateway, supervisor, CLI and Go, and replace the 794-line
closure E2E with status assertions in the existing route-recovery E2E:
the refused grant appears in sandbox status with the response's
request ID, code, stage and upstream status, and the matching grant's
later success clears it.

- Pin the live provider snapshot with one helper used by inspected and
  fallback forwarding, and inject selector-matched grants through
  inject_for_selectors, which borrows the pinned context. Move the
  test-only wrapper into test_support.
- Drop the 35-second wrappers around the gateway grant RPC. The shared
  channel bounds the connection attempt and the gateway bounds its
  token-service calls.
- Log the token service's OAuth error and error_description, without
  control characters and limited to 256 characters each, with the
  request ID in the gateway or supervisor log. Status and the workload
  response still carry only the bounded cause.
- Keep one check that an untrusted token-service certificate cannot
  assert a cause.

Signed-off-by: Shiju <shiju@nvidia.com>
The injection tests named EndpointObservationSender through the parent
module, which no longer imports it. The features suite lockfile kept the
tonic TLS dependency that the removed E2E fixture added.

Signed-off-by: Shiju <shiju@nvidia.com>
Pass the response-size width as a named argument; an implicitly captured
constant panics at runtime. Name the mutation type in the validation
table for Clippy.

Signed-off-by: Shiju <shiju@nvidia.com>
MAX_TOKEN_RESPONSE_BYTES exceeds u16::MAX, the largest format width, so
the padded fixture panicked. Pad with repeat_n as before.

Signed-off-by: Shiju <shiju@nvidia.com>
@shiju-nv
shiju-nv force-pushed the feat/3319-typed-failure-reporting/shiju-nv branch from b019445 to 488ead9 Compare October 13, 2026 18:04
Main added the ListProvidersRequest label selector. The merged public
schema hash comes from the Branch Checks storage_proto test output.

Signed-off-by: Shiju <shiju@nvidia.com>
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Blocked

GitHub reports merge conflicts between this PR and its base branch. Code review is paused until those conflicts are resolved. DCO, Branch Checks, and E2E passed on the current head.

Action required: @shiju-nv, please resolve the merge conflicts and update the PR. Gator will recheck the updated head and continue the review.

Gator metadata
  • Head SHA: 2a18e460132497e00be2e0fac23b5b0d0195adec
  • Base SHA: b9dc1f64660942a168b06f53b9dcbdfb3dd63de7
  • Merge base SHA: b9dc1f64660942a168b06f53b9dcbdfb3dd63de7
  • Patch ID: de9789dd8d518e23269cbdafe3514dcea345aa16
  • Gator payload: 12
  • Review: Not started; process blocker checked first
  • Next state: gator:blocked
  • Blocked reason: merge_conflicts

@johntmyers johntmyers added the gator:blocked Gator is blocked by process or repository gates label Oct 15, 2026
@github-actions

Copy link
Copy Markdown

Compatibility review (advisory)

Unaddressed breaking changes

New fields on Rust raw protobuf structs break exhaustive struct literals in the stable openshell-sdk API. This source break is not allowed in the v0.1.5 patch train.

1. rust-sdk — NOT ACKED

SandboxStatus, EndpointObservation, ReportEndpointStatusRequest, and EndpointStatus gained required generated Rust struct fields, while the baseline structs could be initialized without them.

  • Impact: Rust consumers using exhaustive openshell_sdk::raw::proto struct literals fail to compile until every literal supplies the new fields or uses ..Default::default().
  • Action: Do not add fields to these stable raw Rust structs in v0.1.5; preserve the old exposed types or move the break to a minor release with notice and literal migration guidance.
  • PR: feat(providers): report bounded token-grant failures #4427
Review details
  • Execution: complete
  • Candidate: PR #4427 (876e7040701ab09d011c5a19aee2d64559b81b52)
  • Baseline: 909f336b624a1b7efc5a0c607e35e20dcb96923e (909f336b624a1b7efc5a0c607e35e20dcb96923e)
  • Reviewed: rust-sdk, python-sdk, go-sdk, typescript-sdk, api-behavior, cli, configuration, policy, helm, state

Advisory review; publication gates are unchanged.

Branch check run

@johntmyers johntmyers left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gator-agent

PR Review Status

The merge conflicts are resolved, and the structured failure-reporting work fits validated issue #3319. One blocking credential-disclosure issue remains in the new OAuth diagnostic logging.

Action required: @shiju-nv, remove remote OAuth error text from the new log emission, add the canary regression test, and align the documentation with the redacted behavior.

Blocking findings:

  • GATOR-b312d3bd-01: Token-service error text can expose credentials through supervisor logs.

Carried findings: None.

Non-blocking suggestions: None.

Gator metadata
  • Validation: Implements validated issue #3319; author repository write permission verified.
  • Docs: Fern updates present; the raw OAuth logging paragraph needs correction with the finding.
  • Checks: DCO, Branch Checks, Helm Lint and Trivy Changes passed; current-head E2E running at review time.
  • E2E: test:e2e applied; run 38671292915 confirmed in progress for this head. No dispatch or rerun needed.
  • Review: Independent code-only review; no local tests run.
  • Head SHA: b312d3bdc6f812f1274dadb316df3dc95afa6d8b
  • Base SHA: 909f336b624a1b7efc5a0c607e35e20dcb96923e
  • Merge base SHA: 909f336b624a1b7efc5a0c607e35e20dcb96923e
  • Patch ID: d7941f7d57b9f7329ed8e80a6b1bd7cff1d1ab8d
  • Gator payload: 12
  • Review mode: initial
  • Previous reviewed SHA: none
  • Review budget exhausted: no
  • Maintainer decision required: no
  • Next state: gator:in-review

Comment thread crates/openshell-core/src/oauth.rs Outdated
@johntmyers johntmyers added gator:in-review Gator is reviewing or awaiting PR review feedback and removed gator:blocked Gator is blocked by process or repository gates labels Oct 15, 2026
A token service can echo a submitted credential in its OAuth error or
error_description. Log only the classified failure code, HTTP status and
request ID, and cover the canary echo in a dedicated test binary.

Signed-off-by: Shiju <shiju@nvidia.com>
@github-actions

Copy link
Copy Markdown

Compatibility review (advisory)

Unaddressed breaking changes

The candidate adds members to generated Rust protobuf structs exposed by openshell_sdk::raw::proto, breaking exhaustive struct literals on the v0.1.5 patch train. Other reviewed surfaces remain additive or backward-compatible.

1. rust-sdk — NOT ACKED

SandboxStatus, EndpointObservation, ReportEndpointStatusRequest, and EndpointStatus gain generated Rust members that their baseline definitions did not require.

  • Impact: Consumers using exhaustive openshell_sdk::raw::proto struct literals fail to compile until they initialize the new members.
  • Action: Keep the baseline generated structs unchanged for v0.1.5, or move these additions to a minor train with notice and guidance to use ..Default::default().
  • PR: feat(providers): report bounded token-grant failures #4427
Review details
  • Execution: complete
  • Candidate: PR #4427 (7aa52931224c98b688f12791754089ffd494caba)
  • Baseline: 909f336b624a1b7efc5a0c607e35e20dcb96923e (909f336b624a1b7efc5a0c607e35e20dcb96923e)
  • Reviewed: rust-sdk, python-sdk, go-sdk, typescript-sdk, api-behavior, cli, configuration, policy, helm, state

Advisory review; publication gates are unchanged.

Branch check run

@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

PR Review Status

@shiju-nv, your update fixes the credential-logging finding. I checked the shared grant helper, the canary regression test for both remote error fields, the structured log event fields, and the corrected Fern documentation. The independent follow-up review found no new blocking issues in the author-only delta.

Blocking findings: None.

Carried findings:

  • GATOR-b312d3bd-01: Fixed; the Gator review thread is now resolved.

Branch Checks and E2E are still pending on the current head. Gator will inspect their results next cycle.

Gator metadata
  • Validation: Implements validated issue feat(proxy): preserve typed dynamic token-grant failures across the sandbox boundary #3319; author repository write permission verified.
  • Docs: Fern provider documentation now describes redacted diagnostic logging.
  • Checks: DCO, Helm Lint and Trivy Changes passed; Branch Checks running.
  • E2E: test:e2e present; current-head Branch E2E Checks run 38677860095 confirmed queued. No dispatch or rerun needed.
  • Review: Independent code-only follow-up; no local tests run.
  • Head SHA: c47fa3a3ac30af6ad35f1d660ee145826464a005
  • Base SHA: 909f336b624a1b7efc5a0c607e35e20dcb96923e
  • Merge base SHA: 909f336b624a1b7efc5a0c607e35e20dcb96923e
  • Patch ID: c4ccbc77400396fe886042dbad61ceac2c0f91a8
  • Gator payload: 12
  • Review mode: follow_up
  • Previous reviewed SHA: b312d3bdc6f812f1274dadb316df3dc95afa6d8b
  • Review budget exhausted: no
  • Maintainer decision required: no
  • Next state: gator:watch-pipeline

@johntmyers johntmyers added gator:watch-pipeline Gator is monitoring PR CI/CD status and removed gator:in-review Gator is reviewing or awaiting PR review feedback labels Oct 15, 2026
@shiju-nv

Copy link
Copy Markdown
Collaborator Author

Compatibility review (advisory)

Unaddressed breaking changes

The candidate adds members to generated Rust protobuf structs exposed by openshell_sdk::raw::proto, breaking exhaustive struct literals on the v0.1.5 patch train. Other reviewed surfaces remain additive or backward-compatible.

1. rust-sdk — NOT ACKED

SandboxStatus, EndpointObservation, ReportEndpointStatusRequest, and EndpointStatus gain generated Rust members that their baseline definitions did not require.

  • Impact: Consumers using exhaustive openshell_sdk::raw::proto struct literals fail to compile until they initialize the new members.
  • Action: Keep the baseline generated structs unchanged for v0.1.5, or move these additions to a minor train with notice and guidance to use ..Default::default().
  • PR: feat(providers): report bounded token-grant failures #4427

Review details

  • Execution: complete
  • Candidate: PR #4427 (7aa52931224c98b688f12791754089ffd494caba)
  • Baseline: 909f336b624a1b7efc5a0c607e35e20dcb96923e (909f336b624a1b7efc5a0c607e35e20dcb96923e)
  • Reviewed: rust-sdk, python-sdk, go-sdk, typescript-sdk, api-behavior, cli, configuration, policy, helm, state

Advisory review; publication gates are unchanged.

Branch check run

acknowledged: adds fields to SandboxStatus, EndpointObservation, ReportEndpointStatusRequest and EndpointStatus; Rust struct literals need ..Default::default()

@johntmyers johntmyers added gator:approval-needed Gator completed review; maintainer approval needed and removed gator:watch-pipeline Gator is monitoring PR CI/CD status labels Oct 15, 2026
@github-actions

Copy link
Copy Markdown

Compatibility review (advisory)

Unaddressed breaking changes

Generated Rust protobuf structs exposed through openshell_sdk::raw::proto gain fields, so exhaustive struct literals no longer compile. The PR author acknowledged the break, but patch train v0.1.5 does not permit it.

1. rust-sdk — ACKED

SandboxStatus, EndpointObservation, ReportEndpointStatusRequest, and EndpointStatus gain generated Rust fields that baseline struct literals did not require.

  • Impact: Consumers constructing these openshell_sdk::raw::proto types with exhaustive struct literals fail to compile until they initialize the new fields.
  • Action: Keep the baseline generated structs unchanged for v0.1.5, or move the additions to a minor train with notice and guidance to construct these types using ..Default::default().
  • PR: feat(providers): report bounded token-grant failures #4427
Review details
  • Execution: complete
  • Candidate: PR #4427 (4f44aa25fabdcf2cdab1783a702ccc2046e8b0f6)
  • Baseline: 909f336b624a1b7efc5a0c607e35e20dcb96923e (909f336b624a1b7efc5a0c607e35e20dcb96923e)
  • Reviewed: rust-sdk, python-sdk, go-sdk, typescript-sdk, api-behavior, cli, configuration, policy, helm, state

Advisory review; publication gates are unchanged.

Branch check run

@shiju-nv
shiju-nv force-pushed the feat/3319-typed-failure-reporting/shiju-nv branch 2 times, most recently from 323dee1 to b4864ba Compare October 15, 2026 17:21
Signed-off-by: Shiju <shiju@nvidia.com>
@shiju-nv
shiju-nv force-pushed the feat/3319-typed-failure-reporting/shiju-nv branch from b4864ba to b5e5457 Compare October 15, 2026 17:23
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

PR Review Status

@shiju-nv, I reviewed your documentation update against the existing token-grant behavior; the independent follow-up review found no new blocking issues. I also checked your acknowledgement that exhaustive Rust protobuf struct literals need ..Default::default(); those schema additions are unchanged in this documentation-only delta.

Blocking findings: None.

Carried findings:

  • GATOR-b312d3bd-01: Remains fixed; its review thread remains resolved.

Current-head Branch Checks and E2E are running. Gator will monitor their results before handing this back for maintainer approval.

Gator metadata
  • Validation: Implements validated issue feat(proxy): preserve typed dynamic token-grant failures across the sandbox boundary #3319; author repository write permission verified.
  • Docs: Follow-up changes confined to three Fern documentation pages; existing navigation remains applicable.
  • Checks: DCO, Helm Lint and Trivy Changes passed; Branch Checks pending.
  • E2E: test:e2e present; current-head Branch E2E Checks run 38776959715 is in progress. No dispatch or rerun needed; the old label-help instruction refers to an earlier head.
  • Review: Independent code-only follow-up; no local tests run.
  • Head SHA: b5e5457d6a4deac71b602ef382aae2f998443743
  • Base SHA: 2804f68501fc74da71ff3783b7074682a7a3e276
  • Merge base SHA: 909f336b624a1b7efc5a0c607e35e20dcb96923e
  • Patch ID: 719b9670ca626dd9ed76ea698732999564e893a9
  • Gator payload: 12
  • Review mode: follow_up
  • Previous reviewed SHA: c47fa3a3ac30af6ad35f1d660ee145826464a005
  • Review budget exhausted: no
  • Maintainer decision required: no
  • Next state: gator:watch-pipeline

@johntmyers johntmyers added gator:watch-pipeline Gator is monitoring PR CI/CD status and removed gator:approval-needed Gator completed review; maintainer approval needed labels Oct 15, 2026
@github-actions

Copy link
Copy Markdown

Compatibility review (advisory)

Unaddressed breaking changes

Generated Rust protobuf structs exposed through openshell_sdk::raw::proto gain required fields, so existing exhaustive struct literals no longer compile. The PR author acknowledged the break, but the v0.1.5 patch train does not permit it.

1. rust-sdk — ACKED

SandboxStatus, EndpointObservation, ReportEndpointStatusRequest, and EndpointStatus gain generated Rust fields that baseline struct literals did not require.

  • Impact: Consumers constructing these openshell_sdk::raw::proto types with exhaustive struct literals fail to compile until they initialize the new fields.
  • Action: Keep the baseline generated structs unchanged for v0.1.5, or move the additions to a minor train with notice and guidance to use ..Default::default().
  • PR: feat(providers): report bounded token-grant failures #4427
Review details
  • Execution: complete
  • Candidate: PR #4427 (41a4bfd1261ba00ea3ee65df69e1ff88c4efac86)
  • Baseline: 2804f68501fc74da71ff3783b7074682a7a3e276 (2804f68501fc74da71ff3783b7074682a7a3e276)
  • Reviewed: rust-sdk, python-sdk, go-sdk, typescript-sdk, api-behavior, cli, configuration, policy, helm, state

Advisory review; publication gates are unchanged.

Branch check run

@johntmyers johntmyers added gator:approval-needed Gator completed review; maintainer approval needed and removed gator:watch-pipeline Gator is monitoring PR CI/CD status labels Oct 15, 2026
Signed-off-by: John Myers <9696606+johntmyers@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

Compatibility review (advisory)

Unaddressed breaking changes

Generated Rust protobuf structs exposed through openshell_sdk::raw::proto gain fields, so exhaustive struct literals no longer compile. The author acknowledged the break, but the v0.1.5 patch train does not permit it.

1. rust-sdk — ACKED

SandboxStatus, EndpointObservation, ReportEndpointStatusRequest, and EndpointStatus gain generated Rust fields that baseline struct literals did not require.

  • Impact: Consumers constructing these openshell_sdk::raw::proto types with exhaustive struct literals fail to compile until they initialize the new fields.
  • Action: Keep the baseline generated structs unchanged for v0.1.5, or move the additions to a minor train with notice and guidance to use ..Default::default().
  • PR: feat(providers): report bounded token-grant failures #4427
Review details
  • Execution: complete
  • Candidate: PR #4427 (c69c8f3b51189e4356b85b2fd01c611b415cd142)
  • Baseline: 2804f68501fc74da71ff3783b7074682a7a3e276 (2804f68501fc74da71ff3783b7074682a7a3e276)
  • Reviewed: rust-sdk, python-sdk, go-sdk, typescript-sdk, api-behavior, cli, configuration, policy, helm, state

Advisory review; publication gates are unchanged.

Branch check run

@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

PR Review Status

@shiju-nv, I checked your condensed token-grant failure guidance against the previously reviewed behavior. The independent Critical-only review found no new blocking issues in this documentation-only delta; the credential-logging finding remains fixed and its thread remains resolved.

Blocking findings: None.

Carried findings:

  • GATOR-b312d3bd-01: Remains fixed; no new thread or author action is needed.

Branch Checks passed on the current head, and E2E is running. Gator is returning this PR to pipeline monitoring until the required checks are green; maintainer approval is still outstanding.

Gator metadata
  • Validation: Implements validated issue feat(proxy): preserve typed dynamic token-grant failures across the sandbox boundary #3319; author repository write permission verified.
  • Docs: Latest delta condenses two existing Fern pages; navigation remains applicable.
  • Checks: DCO, Branch Checks, Helm Lint and Trivy Changes passed on the current head.
  • E2E: test:e2e present; current-head Branch E2E Checks run 38783007503 is in progress. No dispatch or rerun needed; the label-help instruction refers to an older head.
  • Review: Independent code-only Critical-only delta review; no local tests run.
  • Head SHA: ea9ff195e77162f47d4d7127b34a455489b2a47a
  • Base SHA: 2804f68501fc74da71ff3783b7074682a7a3e276
  • Merge base SHA: 909f336b624a1b7efc5a0c607e35e20dcb96923e
  • Patch ID: 5158cca5114111dae3cff4a7f45e7a4a9db9bd74
  • Gator payload: 12
  • Review mode: critical_only
  • Previous reviewed SHA: b5e5457d6a4deac71b602ef382aae2f998443743
  • Review budget exhausted: yes
  • Maintainer decision required: no — no unresolved obligation, qualifying scope growth, or proposed Warning requires a convergence decision.
  • Next state: gator:watch-pipeline

@johntmyers johntmyers added gator:watch-pipeline Gator is monitoring PR CI/CD status and removed gator:approval-needed Gator completed review; maintainer approval needed labels Oct 15, 2026
@johntmyers
johntmyers enabled auto-merge October 15, 2026 18:35
@johntmyers
johntmyers added this pull request to the merge queue Oct 15, 2026
@johntmyers johntmyers added gator:merge-ready and removed gator:watch-pipeline Gator is monitoring PR CI/CD status labels Oct 15, 2026
Merged via the queue into NVIDIA:main with commit 29a2b8e Oct 15, 2026
125 of 127 checks passed
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Monitoring Complete

Monitoring is complete because this PR has merged. The last Gator review found no blocking issues, and the previously reported credential-logging finding remains fixed.

I removed the active gator:* label because there is nothing left for Gator to monitor on this PR.

Gator metadata
  • Head SHA: ea9ff195e77162f47d4d7127b34a455489b2a47a
  • Gator payload: 12

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(proxy): preserve typed dynamic token-grant failures across the sandbox boundary

2 participants