Skip to content

feat(config)!: add durable configuration completion - #3273

Open
pimlock wants to merge 21 commits into
1731-config-update-stage-2/pimlockfrom
1731-durable-config-operations/pimlock
Open

pimlock wants to merge 21 commits into
1731-config-update-stage-2/pimlockfrom
1731-durable-config-operations/pimlock

Conversation

@pimlock

@pimlock pimlock commented Sep 11, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Add durable completion tracking for sandbox policy and settings updates. Desired state and its operation commit together; callers can return after commit or use WAIT_FOR_COMPLETION to wait for a terminal outcome. A timeout leaves the committed operation running, and completion distinguishes application, degradation, failure, supersession, inactivity and cancellation.

Architecture diagrams and interaction flows — includes request sequencing, operation states, recovery, and a standalone HTML diagram page.

Related Issue

Part of #1731. Stacked on #3265.

Changes

  • Atomically persist desired state, sandbox metadata/resource-version checks and completion operations in SQLite and PostgreSQL. Unchanged updates track existing revisions and obtain a fresh acknowledgement when needed.
  • Match completion to the exact streamed revision, with indexed recovery, conditional state transitions and durable operation lookup. Record request replay before waiting so retries can recover the committed operation after a timeout.
  • Integrate with feat(supervisor)!: apply streamed configuration snapshots #3265's supervisor admission, runtime readiness, provider receipts and protobuf time contracts. Require supervisor protocol revision 3.
  • Update CLI, Go and TypeScript contracts and documentation. Rename WAIT_FOR_APPLY to WAIT_FOR_COMPLETION and expose degraded outcomes separately from operation state.

Testing

Live-testing report covers the earlier #3265 fleet tests—up to 128 running sandboxes, 15,360 policy submissions, and restart/reconnect checks—with observed failures and limitations. It separately records the passing live-policy and lifecycle checks on the current #3273 head (262be8a9e); the fleet benchmark was not rerun on this head.

Review follow-up validation at 40518cc7f:

  • mise run pre-commit passed.
  • Focused durable-operation, idempotency, readiness, and dimension-matching tests passed.
  • The ignored PostgreSQL transaction suite passed all three tests against a disposable postgres:16-alpine instance with OPENSHELL_TEST_POSTGRES_URL=postgres://postgres:openshell-test@127.0.0.1:55432/openshell_test mise exec -- cargo test -p openshell-server 'persistence::tests::postgres_' -- --ignored --test-threads=1.

Checklist

  • Conventional Commits and DCO sign-off requirements followed.
  • Architecture and user-facing documentation updated.
  • SDK contracts updated.

Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
@pimlock
pimlock added this pull request to stack #3266 September 11, 2026 05:36
@copy-pr-bot

copy-pr-bot Bot commented Sep 11, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions

Copy link
Copy Markdown

@pimlock pimlock changed the title 1731 durable config operations/pimlock feat(config): add durable apply transactions Sep 11, 2026
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
@pimlock

This comment has been minimized.

Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
@pimlock pimlock changed the title feat(config): add durable apply transactions feat(config): add durable configuration completion Sep 18, 2026
@pimlock
pimlock marked this pull request as ready for review September 19, 2026 00:12
@pimlock pimlock added test:e2e Requires end-to-end coverage test:e2e-kubernetes Requires Kubernetes end-to-end coverage labels Sep 19, 2026
@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

pimlock

This comment was marked as outdated.

@pimlock pimlock added the gator:in-review Gator is reviewing or awaiting PR review feedback label Sep 19, 2026
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>

# Conflicts:
#	architecture/sandbox.md
#	architecture/security-policy.md
#	crates/openshell-server/src/supervisor_session.rs
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>

# Conflicts:
#	crates/openshell-server/src/supervisor_session.rs
pimlock

This comment was marked as outdated.

Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
@pimlock pimlock added the gator:blocked Gator is blocked by process or repository gates label Sep 19, 2026
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
pimlock

This comment was marked as outdated.

@pimlock pimlock 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 Sep 19, 2026
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
pimlock

This comment was marked as outdated.

@pimlock pimlock added gator:watch-pipeline Gator is monitoring PR CI/CD status gator:follow-up-needed Gator needs submitter or maintainer follow-up and removed gator:in-review Gator is reviewing or awaiting PR review feedback gator:watch-pipeline Gator is monitoring PR CI/CD status labels Sep 19, 2026
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
pimlock

This comment was marked as outdated.

@pimlock pimlock added gator:watch-pipeline Gator is monitoring PR CI/CD status and removed gator:follow-up-needed Gator needs submitter or maintainer follow-up labels Sep 19, 2026
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>

@pimlock pimlock left a comment

Copy link
Copy Markdown
Collaborator Author

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

Thanks @pimlock. I reviewed the latest author delta that allows the startup-rejection E2E to accept either ordering of the fail-closed transition while still requiring exactly one configuration-error event. All prior Gator findings remain resolved, and the bounded critical-only review found no newly introduced Critical defect.

Blocking findings:

  • No blocking findings remain

Carried findings:

  • None
Gator metadata
  • Validation: Project-valid because this implements the accepted stage of #1731 on the declared #3265 stack.
  • Docs: Fern policy documentation and related architecture guidance are updated.
  • Checks: Current-head Branch Checks and required E2E are running; Helm Lint and Trivy Changes are green.
  • E2E: test:e2e and test:e2e-kubernetes are applied, and the current-head workflows are running.
  • Head SHA: ef321d52e572cceb8307aeba722a066f078bf870
  • Base SHA: f5601252ba2dc68677ffe6fc4955802e7ed54128
  • Merge base SHA: f5601252ba2dc68677ffe6fc4955802e7ed54128
  • Patch ID: ab3ec9e885ca8117973618e9df94b12c009cbb8e
  • Gator payload: 9
  • Review mode: critical_only
  • Previous reviewed SHA: dbc0eda816097eb303801776547598cdae040a3f
  • Review budget exhausted: yes
  • Maintainer decision required: no
  • Next state: gator:watch-pipeline

@pimlock pimlock added gator:approval-needed Gator completed review; maintainer approval needed and removed gator:watch-pipeline Gator is monitoring PR CI/CD status labels Sep 19, 2026
@pimlock pimlock changed the title feat(config): add durable configuration completion feat(config)!: add durable configuration completion Sep 21, 2026
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>

# Conflicts:
#	architecture/gateway.md
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
Signed-off-by: Piotr Mlocek <pmlocek@nvidia.com>
@politerealism

Copy link
Copy Markdown
Contributor

Hey @sjenning @mrunalp @derekwaynecarr — this one's been open a bit and is part of the #1731 staged rollout (this is stage 3 of 3). Any chance you have bandwidth for a review pass in the near term? Happy to help unblock if there's anything I can clarify in the meantime.

@pimlock

pimlock commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator Author

Hey @sjenning @mrunalp @derekwaynecarr — this one's been open a bit and is part of the #1731 staged rollout (this is stage 3 of 3). Any chance you have bandwidth for a review pass in the near term? Happy to help unblock if there's anything I can clarify in the meantime.

Thanks @politerealism! Just FYI this won't make it into the 0.1.0 and we will try to land it soon after. It will need some tweaks to land it in one of the patch releases, as this is a breaking change, but shouldn't be too much (this version was made with the assumption we can make breaking changes).

This branch has not been deployed

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

Labels

gator:approval-needed Gator completed review; maintainer approval needed test:e2e Requires end-to-end coverage test:e2e-kubernetes Requires Kubernetes end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants