fix(channels): preserve external policy authority - #10118
Conversation
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
…nto codex/9833-channel-authority # Conflicts: # test/channels/channels-add-preset.test.ts
…authority Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
…authority Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
cv
left a comment
There was a problem hiding this comment.
I found two unresolved state-recovery defects on commit 1fe92d4139e82845fab1537568b235030e79c166:
-
src/lib/actions/sandbox/policy-channel.ts:1719-1733can detect an authority refusal after the rebuild, host-forward creation, or bridge-health probe.rollbackChannelAddremoves providers, credentials, policy attribution, and the registry plan, but it does not restore or stop the rebuilt sandbox. The running sandbox can retain the newly enabled bridge process and injected credential after the command reports refusal. Restore the prior runtime state, or prevent this runtime mutation when rollback cannot restore it. -
src/lib/actions/sandbox/policy-channel.ts:2324-2346persists the enabled channel plan before the next authority validation. If authority changes after the persistence callback and before line 2346, the refusal exits without restoring the prior disabled plan. A later rebuild can then enable a channel whose start operation refused. Restore the prior plan after post-persistence refusal, or make the validation and persistence one guarded operation.
Issue #9833 contains the accepted product decision, and the complete review-thread snapshot has no existing threads. DCO passes, and GitHub reports every PR commit as Verified. CodeRabbit skipped its review because this PR targets a non-default branch. PR Advisor did not publish a synthesis. These unavailable automated reviews and the failing checks are not the reason for this decision.
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
senthilr-nv
left a comment
There was a problem hiding this comment.
Reviewed latest PR commit 1f0106f. Product scope is accepted in #9833. The containment after rebuilt-runtime authority refusal, prior-plan restoration, and live-policy preservation repairs close the state-safety findings. Focused tests and repository checks pass; DCO and every PR commit signature are valid. No blocking findings remain.
|
PR Review Advisor finished for commit |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
sandl99
left a comment
There was a problem hiding this comment.
Requesting changes on reviewed head c7574ee.
Blocking findings:
-
The candidate does not compile. policy-channel.ts still calls the removed revalidateMessagingProviderAttachmentTarget helper, and gatewayName is referenced outside its declaration scope. Current static-checks and build/type-check CI confirm these undefined symbols.
-
Provider attachment uses a mutable sandbox name after removing the fail-closed target revalidation. A name rebind can direct messaging credentials to a replacement sandbox instead of the identity that was authorized.
-
Provider removal uses unscoped runOpenshell rather than the gateway-scoped deleteMessagingProviderWithRecovery path. On a named gateway, NotFound from the default gateway can be treated as successful cleanup, durable channel state can be removed, and the credential provider can remain active on the intended gateway.
-
The durable external-policy authority model conflicts with accepted issue #10514, which makes OpenShell the sole durable policy authority and explicitly supersedes work preserving external-policy authority. Please retarget the implementation to that accepted direction before further review.
-
The moved upsertMessagingProviders test asserts a two-argument call, while the production call supplies definitions, gateway name, and options.
Manual PR E2E cannot be requested for this revision because the PR targets codex/9833-snapshot-authority rather than main. After the design and correctness blockers are resolved and the PR targets main, exact-head evidence should be requested.
|
Closing this PR because the accepted policy decision in #10514 supersedes #9833. This PR preserves external policy authority across messaging-channel operations, but #10514 removes that durable authority model and makes current OpenShell policy authoritative. Replacement work is in #10515, which delivers the accepted cutover and states that no intermediate authority-stack PR is intended to merge. This closure records supersession. It does not assess the contributor or the implementation quality. |
Summary
Standalone messaging channel operations now verify the recorded OpenShell policy authority before policy-sensitive changes. External policy remains owned by its external authority while NemoClaw manages channel state and recovery.
Related Issue
Part of #9833
Changes
Type of Change
Quality Gates
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run validate:prpassed after refreshingorigin/mainwhen hooks were skipped or unavailablenpm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result:npm run docsbuilds without warnings (doc changes only)Signed-off-by: Apurv Kumaria akumaria@nvidia.com