Skip to content

fix: assorted small validation and robustness fixes - #2450

Open
andrewwhitecdw wants to merge 9 commits into
NVIDIA:mainfrom
andrewwhitecdw:fix-assorted-validation-robustness/aw
Open

fix: assorted small validation and robustness fixes#2450
andrewwhitecdw wants to merge 9 commits into
NVIDIA:mainfrom
andrewwhitecdw:fix-assorted-validation-robustness/aw

Conversation

@andrewwhitecdw

Copy link
Copy Markdown
Contributor

Summary

Three small, independent robustness fixes found during code review, one commit each:

  1. server: Kubernetes label key/value validation used Unicode-aware is_alphanumeric(), so labels like café or 日本語 passed gateway validation but would be rejected by the Kubernetes API server (the label spec is ASCII-only). The same functions already validate the key prefix with ASCII-only checks.
  2. cli: print_policy_revision_table truncated server-supplied load_error strings at a fixed byte index (&rev.load_error[..40]), panicking when the index lands inside a multi-byte UTF-8 character (same bug class as fix(cli): avoid panic on multi-byte UTF-8 in --since duration #2446).
  3. sandbox: the ephemeral-port advisory check used port > 49152, omitting port 49152 itself from the IANA dynamic/private range (49152–65535 inclusive).

This PR supersedes #2410, which was auto-closed by the vouch-check workflow before I was vouched.

Related Issue

N/A — small fixes found during code review.

Changes

  • validate_label_key/validate_label_value: use is_ascii_alphanumeric(); added Unicode rejection tests
  • print_policy_revision_table: back off to a char boundary when truncating load_error
  • mechanistic_mapper: port >= 49152 for the ephemeral range note

Testing

  • mise run pre-commit passes (mise unavailable in this environment; ran equivalent cargo fmt + cargo clippy on all touched crates — clean)
  • Unit tests added/updated (cargo test -p openshell-server validate_label — 40 passed, incl. 2 new)
  • E2E tests added/updated (if applicable)

Checklist

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

@copy-pr-bot

copy-pr-bot Bot commented Jul 23, 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.

@andrewwhitecdw

Copy link
Copy Markdown
Contributor Author

I have read the DCO document and I hereby sign the DCO.

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown

All contributors have signed the DCO ✍️ ✅
Posted by the DCO Assistant Lite bot.

@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

Validation: This is project-valid small, concentrated robustness work. PR #2410 is the same author's auto-closed predecessor, not competing active work.
Head SHA: 949b5b6be5d0634296691cf826d0c81e4f48c7f1

Review findings:

  • Two warning-level UTF-8 panic paths remain in CLI rendering; see the inline comments.
  • Suggested coverage: exercise a multibyte load_error crossing byte 40 and the ephemeral-port boundary at 49151/49152.

Docs: Fern docs and navigation are not needed because these fixes add no command, option, workflow, or documented contract.

Next state: gator:in-review; author changes are needed before pipeline/E2E gating.

"·".dimmed(),
resp.version,
&resp.policy_hash[..12]
short_hash(&resp.policy_hash)

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

Warning: short_hash still uses &hash[..12], so a server response such as aaaaaaaaaaaé panics when byte 12 splits a UTF-8 character (CWE-248). Make short_hash select the twelfth character boundary using char_indices() and add short/multibyte regression cases; that fixes both new call sites.

Comment thread crates/openshell-cli/src/run.rs Outdated
};
let error_short = if rev.load_error.len() > 40 {
format!("{}...", &rev.load_error[..40])
// Back off to a char boundary: byte-index slicing panics on

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

Warning: The revision table still byte-slices the server-supplied policy hash, preserving the same UTF-8 panic (CWE-248). After fixing short_hash, replace this branch with let hash_short = short_hash(&rev.policy_hash);.

@johntmyers johntmyers added the gator:in-review Gator is reviewing or awaiting PR review feedback label Jul 24, 2026
andrewwhitecdw added a commit to andrewwhitecdw/OpenShell that referenced this pull request Jul 28, 2026
Addresses gator-agent review feedback on NVIDIA#2450:

- Make short_hash() slice at the 13th character boundary so multi-byte UTF-8 cannot panic.

- Use short_hash() in the policy revision table instead of byte-index slicing.

- Extract error-message truncation into truncate_error_message() and keep char-boundary backoff.

- Add regression tests for short_hash, truncate_error_message, and the ephemeral-port inclusive boundary (49152).

Signed-off-by: Andrew White <andrewh@cdw.com>
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Blocked

Head SHA: 45b4249a3df044ed5ed459e4fbf1d056824bf645

Andrew’s latest commit appears to address the earlier UTF-8 slicing and boundary-test requests, but GitHub currently reports this branch as conflicting with main (mergeable: CONFLICTING, mergeStateStatus: DIRTY). Gator cannot complete a fresh independent review of the updated head until the conflict is resolved.

Next action: @andrewwhitecdw, please rebase or merge main, resolve the conflicts, and push the resulting update. Gator will review the new head and then make the E2E/test-label decision.

@johntmyers johntmyers added gator:blocked Gator is blocked by process or repository gates and removed gator:in-review Gator is reviewing or awaiting PR review feedback labels Jul 28, 2026
@andrewwhitecdw
andrewwhitecdw force-pushed the fix-assorted-validation-robustness/aw branch from 45b4249 to 70cd90c Compare July 28, 2026 21:11
andrewwhitecdw added a commit to andrewwhitecdw/OpenShell that referenced this pull request Jul 28, 2026
Addresses gator-agent review feedback on NVIDIA#2450:

- Make short_hash() slice at the 13th character boundary so multi-byte UTF-8 cannot panic.

- Use short_hash() in the policy revision table instead of byte-index slicing.

- Extract error-message truncation into truncate_error_message() and keep char-boundary backoff.

- Add regression tests for short_hash, truncate_error_message, and the ephemeral-port inclusive boundary (49152).

Signed-off-by: Andrew White <andrewh@cdw.com>
@andrewwhitecdw

Copy link
Copy Markdown
Contributor Author

Rebased onto main and resolved the merge conflict in crates/openshell-cli/src/run.rs (kept both the new sandbox_detail_to_json_* tests from main and the truncate_error_message_* tests from this PR). All relevant tests pass and the branch is now clean.

@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

Validation: This remains project-valid small, concentrated robustness work. PR #2410 is the same author's auto-closed predecessor, not competing active work.
Head SHA: 70cd90c823df9d6d8271779dc4c9c6d7f4d88fc8

Thanks @andrewwhitecdw. I checked your rebase and GitHub now reports the branch mergeable, so the earlier conflict blocker is resolved. I also verified that the updated short_hash, UTF-8 error truncation, and 49151/49152 boundary tests address the previous gator findings in the changed paths.

Review finding:

  • Warning (CWE-248): the same server-supplied UTF-8 panic pattern remains at crates/openshell-cli/src/run.rs:5381 (sandbox_policy_set_global) and crates/openshell-cli/src/run.rs:6733 (sandbox_draft_approve). These unchanged lines still byte-slice policy_hash; the latter's min(len) protects length but not UTF-8 boundaries. Please replace them with short_hash(&response.policy_hash) and short_hash(&inner.policy_hash) respectively. These locations are outside the current diff, so this is a general finding rather than an inline comment.

Docs: Fern docs and navigation are not needed because these are conformance and crash fixes, not new commands, options, workflows, or documented contracts.

Next state: gator:in-review; the two remaining hash display paths need an author update before pipeline/E2E gating.

@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 Jul 28, 2026
andrewwhitecdw added a commit to andrewwhitecdw/OpenShell that referenced this pull request Jul 28, 2026
Replaces the two remaining byte-slice policy_hash renderings in
sandbox_policy_set_global and sandbox_draft_approve with the existing
short_hash helper, avoiding UTF-8 panic paths on multibyte hashes.

Also fixes a clippy map_unwrap_or warning in short_hash itself.

Addresses review feedback in NVIDIA#2450.

Signed-off-by: Andrew White <andrewh@cdw.com>

@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

Validation: This remains project-valid small, concentrated robustness work. PR #2410 is the same author's auto-closed predecessor, not competing active work.
Head SHA: 7d08bbe6526e87aad64fc2bd2802b49084a0f586

Thanks @andrewwhitecdw. I checked your current update and verified that both remaining policy-hash byte slices now use short_hash, resolving the prior UTF-8 panic finding.

Review finding:

  • One blocking gateway consistency defect remains; see the inline comment. The sandbox-side 49152 boundary is corrected, but the gateway's separate security-note recomputation still excludes that boundary.

Docs: Fern docs and navigation are not needed because these are conformance and crash fixes, not new commands, options, workflows, or documented contracts.

Next state: gator:in-review; the gateway boundary and regression coverage need an author update before pipeline/E2E gating.

// High port numbers may indicate ephemeral services.
if port > 49152 {
// The IANA dynamic/private (ephemeral) range is 49152-65535 inclusive.
if port >= 49152 {

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

Critical (CWE-193; OWASP LLM06): This corrects only the sandbox-generated note. The gateway discards and recomputes notes through current_draft_chunk_security_notes(), while crates/openshell-server/src/grpc/policy.rs:3769 still uses port > 49152. Consequently, a port-49152 proposal can be considered note-free and auto-approved. Please update the gateway predicate to >= and add gateway boundary/auto-approval coverage.

andrewwhitecdw added a commit to andrewwhitecdw/OpenShell that referenced this pull request Jul 28, 2026
The sandbox mechanistic_mapper already treated 49152 as ephemeral
(port >= 49152), but the gateway's generate_security_notes used
port > 49152, so the boundary port was inconsistently unflagged.

Change the gateway check to port >= 49152 and add a regression test
for the 49151/49152 boundary.

Addresses review feedback in NVIDIA#2450.

Signed-off-by: Andrew White <andrewh@cdw.com>

@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

Validation: This remains project-valid small, concentrated robustness work. PR #2410 is the same author's auto-closed predecessor, not competing active work.
Head SHA: 389dc8c138458107998e548ac5e3f9ff48aaa534

Thanks @andrewwhitecdw. I reviewed the current update and verified that the gateway now flags port 49152 consistently with the sandbox mapper, with gateway boundary coverage for 49151/49152. This resolves the prior security-note consistency finding. The independent code review found no remaining actionable findings; the UTF-8-safe hash and error truncation changes and their regression tests also remain sound.

Docs: Fern docs and navigation are not needed because these are conformance, crash, and security-note fixes, not new commands, options, workflows, or documented contracts.

E2E: test:e2e is required because this changes sandbox policy/security-note behavior.

Next state: gator:watch-pipeline.

@johntmyers johntmyers added test:e2e Requires end-to-end coverage gator:watch-pipeline Gator is monitoring PR CI/CD status and removed gator:in-review Gator is reviewing or awaiting PR review feedback labels Jul 28, 2026
@johntmyers

Copy link
Copy Markdown
Collaborator

/ok to test 389dc8c

@github-actions

Copy link
Copy Markdown

Label test:e2e applied for 389dc8c. 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 and supervisor images once. The matching required CI gate status on this PR will flip green automatically once the run finishes.

@johntmyers johntmyers removed the gator:watch-pipeline Gator is monitoring PR CI/CD status label Jul 28, 2026
@johntmyers johntmyers added gator:in-review Gator is reviewing or awaiting PR review feedback gator:blocked Gator is blocked by process or repository gates and removed gator:watch-pipeline Gator is monitoring PR CI/CD status gator:in-review Gator is reviewing or awaiting PR review feedback gator:blocked Gator is blocked by process or repository gates labels Jul 29, 2026
@andrewwhitecdw

Copy link
Copy Markdown
Contributor Author

Fixed — corrected the comment for aaaaaaaaaaaaé (byte 12 is a valid boundary, so it wouldn't panic) and added the genuinely-splitting case aaaaaaaaaaaéx expecting aaaaaaaaaaaé. Verified locally: cargo test -p openshell-cli --lib short_hash → 3 passed.

@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Blocked

Head SHA: 351cf55e21512f07b756057d0ce8e8931597ccd6

Thanks @andrewwhitecdw. I checked your latest update and confirmed that the corrected aaaaaaaaaaaaé explanation plus the genuinely splitting aaaaaaaaaaaéx regression case resolve the prior non-blocking test-comment suggestion.

GitHub currently reports this new head as conflicting with main (mergeable: false, mergeable_state: dirty). Gator cannot run the fresh independent review or start the required E2E pipeline for this head until the conflict is resolved.

Next action: please rebase or merge main, resolve the conflict, and push the resulting update. Gator will review that new head and then trigger the already-applied test:e2e gate if required.

andrewwhitecdw added a commit to andrewwhitecdw/OpenShell that referenced this pull request Jul 30, 2026
Addresses gator-agent review feedback on NVIDIA#2450:

- Make short_hash() slice at the 13th character boundary so multi-byte UTF-8 cannot panic.

- Use short_hash() in the policy revision table instead of byte-index slicing.

- Extract error-message truncation into truncate_error_message() and keep char-boundary backoff.

- Add regression tests for short_hash, truncate_error_message, and the ephemeral-port inclusive boundary (49152).

Signed-off-by: Andrew White <andrewh@cdw.com>
andrewwhitecdw added a commit to andrewwhitecdw/OpenShell that referenced this pull request Jul 30, 2026
Replaces the two remaining byte-slice policy_hash renderings in
sandbox_policy_set_global and sandbox_draft_approve with the existing
short_hash helper, avoiding UTF-8 panic paths on multibyte hashes.

Also fixes a clippy map_unwrap_or warning in short_hash itself.

Addresses review feedback in NVIDIA#2450.

Signed-off-by: Andrew White <andrewh@cdw.com>
andrewwhitecdw added a commit to andrewwhitecdw/OpenShell that referenced this pull request Jul 30, 2026
The sandbox mechanistic_mapper already treated 49152 as ephemeral
(port >= 49152), but the gateway's generate_security_notes used
port > 49152, so the boundary port was inconsistently unflagged.

Change the gateway check to port >= 49152 and add a regression test
for the 49151/49152 boundary.

Addresses review feedback in NVIDIA#2450.

Signed-off-by: Andrew White <andrewh@cdw.com>
@andrewwhitecdw
andrewwhitecdw force-pushed the fix-assorted-validation-robustness/aw branch from 351cf55 to 11668cd Compare July 30, 2026 20:19
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Review Convergence Checkpoint

Head SHA: 11668cda8ee64fcd143b5b735d9a8f9e0c613d8e
Base SHA: 28f3bee0ce7e89c845016fc0554f8990a31543bb
Merge base SHA: 28f3bee0ce7e89c845016fc0554f8990a31543bb
Patch ID: 7a843dd076bbf5d47489bde862e695507adf8fbe
Gator payload: 2

Three finding-bearing review rounds have completed.

Thanks @andrewwhitecdw. I checked your latest rebase and the author-only delta: the earlier seven PR commits remain equivalent, and the new test commit corrects the aaaaaaaaaaaaé explanation and adds the genuinely byte-splitting aaaaaaaaaaaéx case you described. The checkpoint-limited independent review found no new Critical defect in that delta.

Root-cause findings:

  • gator-inline-3647344813 / gator-inline-3647344815: server-supplied UTF-8 hash byte slicing — addressed by the character-safe short_hash implementation and its use at the affected display paths.
  • gator-inline-3669532419: inconsistent port-49152 handling between sandbox and gateway security-note computation — addressed by the gateway predicate and boundary coverage.
  • gator-inline-3670118622: inaccurate UTF-8 regression-test explanation — non-blocking and addressed by the latest test-only delta.

Scope growth:

  • Review remediation expanded from the initially touched CLI display paths to the remaining hash display paths, and from the sandbox-side ephemeral-port predicate to the gateway's separate security-note recomputation.

Reviewer-quality signals:

  • The ledger reports no duplicate finding IDs or repeated findings across reviewed heads. The latest checkpoint review proposed no findings. One earlier follow-up inspected unchanged sibling CLI paths; that scope expansion is included here for maintainer disposition rather than generating another autonomous Warning round.

Maintainer action: @NVIDIA/openshell-maintainers, please accept the current scope, split follow-up work, waive an obligation, or explicitly authorize another autonomous review round.

Next state: gator:blocked

@johntmyers

Copy link
Copy Markdown
Collaborator

/ok to test 11668cd

@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Review Convergence Checkpoint

Head SHA: c6648a185365c7801671dd50fc659801566e6bd6
Base SHA: 28f3bee0ce7e89c845016fc0554f8990a31543bb
Merge base SHA: 28f3bee0ce7e89c845016fc0554f8990a31543bb
Patch ID: a257f947532e2914e2e3aae4153b12eab49bff27
Gator payload: 2

Three finding-bearing review rounds have completed.

The latest author-only delta from 11668cda8ee64fcd143b5b735d9a8f9e0c613d8e only applies rustfmt formatting to two test assertions. The checkpoint-limited independent review found no new Critical defect.

Root-cause findings:

  • gator-inline-3647344813 / gator-inline-3647344815: server-supplied UTF-8 hash byte slicing — addressed by the character-safe short_hash implementation and its use at the affected display paths.
  • gator-inline-3669532419: inconsistent port-49152 handling between sandbox and gateway security-note computation — addressed by the gateway predicate and boundary coverage.
  • gator-inline-3670118622: inaccurate UTF-8 regression-test explanation — non-blocking and addressed by the corrected test case.

Scope growth:

  • Prior remediation expanded from the initially touched CLI display paths to the remaining hash display paths, and from the sandbox-side ephemeral-port predicate to the gateway's separate security-note recomputation. The latest delta adds no scope.

Reviewer-quality signals:

  • No duplicate finding IDs, repeated findings, waived re-raises, unchanged-code proposals, or new findings were reported in this checkpoint review.

Maintainer action: @NVIDIA/openshell-maintainers, please accept the current scope, split follow-up work, waive an obligation, or explicitly authorize another autonomous review round.

Next state: gator:blocked

@johntmyers

Copy link
Copy Markdown
Collaborator

/ok to test c6648a1

validate_label_key and validate_label_value used Unicode-aware
char::is_alphanumeric(), so values like 'café' or '日本語' passed
gateway validation even though the Kubernetes label spec
(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])? is ASCII-only and the
API server rejects such labels later. The same functions already
validate the key prefix with ASCII-only checks.

Use is_ascii_alphanumeric() and add regression tests for Unicode
keys and values.

Signed-off-by: Andrew White <andrewh@cdw.com>
Two display paths in sandbox policy commands sliced server-supplied
strings without guarding:

- sandbox_policy_set used &resp.policy_hash[..12] unconditionally;
  an empty or short proto3 hash field would panic. Use the existing
  short_hash() helper, as nearby call sites already do.
- The policy revision table truncated load_error at a fixed byte
  index (&rev.load_error[..40]), panicking on multi-byte UTF-8 in
  server error messages. Back off to a char boundary instead.

Signed-off-by: Andrew White <andrewh@cdw.com>
The IANA dynamic/private (ephemeral) port range is 49152-65535
inclusive, but the check used port > 49152, silently omitting the
advisory note for port 49152 itself.

Signed-off-by: Andrew White <andrewh@cdw.com>
Addresses gator-agent review feedback on NVIDIA#2450:

- Make short_hash() slice at the 13th character boundary so multi-byte UTF-8 cannot panic.

- Use short_hash() in the policy revision table instead of byte-index slicing.

- Extract error-message truncation into truncate_error_message() and keep char-boundary backoff.

- Add regression tests for short_hash, truncate_error_message, and the ephemeral-port inclusive boundary (49152).

Signed-off-by: Andrew White <andrewh@cdw.com>
Replaces the two remaining byte-slice policy_hash renderings in
sandbox_policy_set_global and sandbox_draft_approve with the existing
short_hash helper, avoiding UTF-8 panic paths on multibyte hashes.

Also fixes a clippy map_unwrap_or warning in short_hash itself.

Addresses review feedback in NVIDIA#2450.

Signed-off-by: Andrew White <andrewh@cdw.com>
The sandbox mechanistic_mapper already treated 49152 as ephemeral
(port >= 49152), but the gateway's generate_security_notes used
port > 49152, so the boundary port was inconsistently unflagged.

Change the gateway check to port >= 49152 and add a regression test
for the 49151/49152 boundary.

Addresses review feedback in NVIDIA#2450.

Signed-off-by: Andrew White <andrewh@cdw.com>
aaaaaaaaaaaaé has a valid boundary at byte 12, so the old byte-slice
would not panic for that input; correct the comment and add
aaaaaaaaaaaéx (11 'a' + 2-byte 'é' + 'x'), where a byte-slice at 12
would split 'é', expecting aaaaaaaaaaaé. Verified with
cargo test -p openshell-cli --lib short_hash (3 passed).

Signed-off-by: Andrew White <andrewh@cdw.com>
@andrewwhitecdw
andrewwhitecdw force-pushed the fix-assorted-validation-robustness/aw branch from c6648a1 to 5d14ccd Compare July 31, 2026 15:07
@johntmyers

Copy link
Copy Markdown
Collaborator

gator-agent

Review Convergence Checkpoint

Head SHA: 5d14ccd3bb21b198539050fef43936093738e96b
Base SHA: 5541398ccbda05fd951e08e5741b9ca090717f3a
Merge base SHA: 5541398ccbda05fd951e08e5741b9ca090717f3a
Patch ID: a257f947532e2914e2e3aae4153b12eab49bff27
Gator payload: 2

Three finding-bearing review rounds have completed.

This head rebases the same effective author patch reviewed at the prior convergence checkpoint: its stable patch ID still matches c6648a185365c7801671dd50fc659801566e6bd6. The commit-to-commit differences are upstream-only, so Gator did not run another reviewer or mine the rebased upstream code for findings.

Root-cause findings:

  • gator-inline-3647344813 / gator-inline-3647344815: server-supplied UTF-8 hash byte slicing — addressed by the character-safe short_hash implementation and its use at the affected display paths.
  • gator-inline-3669532419: inconsistent port-49152 handling between sandbox and gateway security-note computation — addressed by the gateway predicate and boundary coverage.
  • gator-inline-3670118622: inaccurate UTF-8 regression-test explanation — non-blocking and addressed by the corrected test case.

Scope growth:

  • Prior remediation expanded from the initially touched CLI display paths to the remaining hash display paths, and from the sandbox-side ephemeral-port predicate to the gateway's separate security-note recomputation. This rebase adds no author scope.

Reviewer-quality signals:

  • The ledger reports no duplicate finding IDs, repeated findings across reviewed heads, or waived re-raises. No new reviewer proposal was generated for this patch-equivalent rebase.

E2E: test:e2e remains required for sandbox policy/security-note behavior. Gator is authorizing the current head for testing in a separate /ok to test command.

Maintainer action: @NVIDIA/openshell-maintainers, please accept the current scope, split follow-up work, waive an obligation, or explicitly authorize another autonomous review round.

Next state: gator:blocked

@johntmyers

Copy link
Copy Markdown
Collaborator

/ok to test 5d14ccd

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

Labels

gator:blocked Gator is blocked by process or repository gates test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants