Skip to content

fix(server): sort map fields when hashing provider profiles - #4077

Closed
ericcurtin wants to merge 1 commit into
NVIDIA:mainfrom
ericcurtin:fix/3929-profile-revision-deterministic
Closed

ericcurtin wants to merge 1 commit into
NVIDIA:mainfrom
ericcurtin:fix/3929-profile-revision-deterministic

Conversation

@ericcurtin

Copy link
Copy Markdown
Contributor

Summary

Provider profile revisions hashed raw protobuf bytes, which vary with map order. Hash a canonical encoding instead.

Related Issue

Fixes #3929

Changes

  • Add canonical_provider_profile_bytes, sharing the endpoint map handling with canonical_rule_bytes (its output is unchanged).
  • Use it at the profile revision hash sites.

Testing

  • mise run pre-commit passes
  • Unit tests added/updated
  • E2E tests added/updated (if applicable)

Checklist

  • Follows Conventional Commits
  • Commits are signed off (DCO)
  • Architecture docs updated (if applicable)

Fixes NVIDIA#3929

Signed-off-by: Eric Curtin <eric.curtin@docker.com>
@copy-pr-bot

copy-pr-bot Bot commented Oct 1, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@ericcurtin

Copy link
Copy Markdown
Contributor Author

If useful, please also try https://github.com/llmmanorg/llmman, which can launch agents in an OpenShell sandbox (--sandbox openshell).

@ericcurtin

Copy link
Copy Markdown
Contributor Author

@drew @krishicks PTAL when you get a chance, and /ok to test 475e7dce921c630e3aba9214c823ebea5432ae9e if it looks good. Thank you!

@johntmyers johntmyers added the test:e2e Requires end-to-end coverage label Oct 2, 2026
@johntmyers

Copy link
Copy Markdown
Collaborator

/ok to test 475e7dc

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

Label test:e2e applied for 475e7dc. Open Branch E2E Checks, find the run for commit 475e7dc, 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.

@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 independent review found no blocking issues in the provider-profile hashing fix. It canonicalizes profile maps at all four revision hash sites and preserves the existing policy-rule encoding.

@ericcurtin, I checked your request to run tests and posted /ok to test for the current head. Branch Checks, Helm Lint, and E2E are now running; Trivy is green. The E2E run was created after test:e2e was applied, so the bot's rerun hint is satisfied by this fresh run with the label set.

Blocking findings: None.

Carried findings: None.

Non-blocking suggestions: None.

Gator metadata
  • Validation: Focused deterministic-revision bug fix for #3929, confined to core encoding and server hash sites.
  • Docs: Not needed; restores stable revisions without changing configuration, APIs, or documented workflows.
  • Checks: Current-head Branch Checks and Helm Lint running; Trivy passed; DCO and vouch passed.
  • E2E: test:e2e applied; current-head Branch E2E Checks run 37036927542 running.
  • Head SHA: 475e7dce921c630e3aba9214c823ebea5432ae9e
  • Base SHA: 348a1fc62566892ba5530ac9f35acc983e4d9324
  • Merge base SHA: 348a1fc62566892ba5530ac9f35acc983e4d9324
  • Patch ID: 0ab08d72dcc9575afcce6f95a5de65a5ce7ee4c4
  • Gator payload: 10
  • Review mode: initial
  • Previous reviewed SHA: none
  • 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 gator:approval-needed Gator completed review; maintainer approval needed gator:blocked Gator is blocked by process or repository gates and removed gator:watch-pipeline Gator is monitoring PR CI/CD status gator:approval-needed Gator completed review; maintainer approval needed labels Oct 2, 2026
@ericcurtin

Copy link
Copy Markdown
Contributor Author

Superseded by #4122. Closing.

@ericcurtin ericcurtin closed this Oct 2, 2026
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Monitoring Complete

Monitoring is complete because this PR was closed without merge.

@ericcurtin, I checked your closure note that this work is superseded by #4122 and confirmed that #4077 is closed. The existing current-head Gator review found no blocking issues; Branch Checks, Helm Lint, Trivy, and E2E passed. Monitoring of #4122 is outside this invocation's scope.

I am removing the active gator:blocked label because there is nothing left for Gator to monitor on this PR.

Gator metadata
  • Head SHA: 475e7dce921c630e3aba9214c823ebea5432ae9e
  • Gator payload: 10
  • Terminal state: closed without merge

@johntmyers johntmyers removed the gator:blocked Gator is blocked by process or repository gates label Oct 2, 2026
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.

bug(gateway): provider environment revision is not deterministic when a provider profile has several annotations

2 participants