Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2d26e22915
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: af5535c527
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ebeb778f95
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 95bbf854bd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bb301f898c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Please review exact head ed26b1c. This batch adds operation column filters and available-height layout, removes the status popup's redundant configuration shortcut, and makes Configure always open a fresh wizard. It also fixes the multi-group preflight finding: immutable identities and the pending group's original settings are rechecked without rejecting settings already changed by an earlier approved group. Focused workflow, UI/PWA, Python documentation, Ruff/mypy, repository/documentation checks and 52 JavaScript/shared tests passed. The wheel is deployed to the receipt-bound test appliance; integrated-browser checks verified filtering retained on refresh, full desktop height, standalone status and fresh Configure after viewing an existing operation. No native backup writes were replayed. |
|
Codex Review: Didn't find any major issues. 👍 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review Please review exact head 32c9304. The wizard now starts with multiple product choices, then queues each selected connection before combined review. Operations daily full recurrence supports preserving, enabling or disabling incrementals with a minimum 240-minute interval and explicit full-backup fallback. Coverage gaps clearly identify excluded components without implying selected backups failed. Focused native/workflow tests and proposal/write/readback round trips passed, along with 57 JavaScript/shared tests, focused UI/PWA/parameter docs, Ruff/scoped mypy80, repository and documentation checks. Deployed wheel/browser checks verified product multi-selection, Vault-backed Operations discovery, incremental minimum validation and fallback=false in exact review. No native configuration or backup writes were made during this batch. |
|
Codex Review: Didn't find any major issues. Can't wait for the next one! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review This batch moves Backup Operations to VCF Backups with separate local Date/Time columns and recorded task Elapsed duration. A row loads its status directly; the redundant editable ID/Load status controls are removed. VCF Helper keeps configuration and links to the list. Status-only startup preserves filters, epoch guards, request-local recovery credentials and read-only reconciliation. Later successful reconciliation preserves an already successful job's and steps' finish timestamps. 62 JavaScript/shared tests passed, including startup, direct row loading, date projection, elapsed sorting/formatting and manual/Vault reconciliation without a wizard. Focused timestamp/recovery, page and browser-route checks passed. Ruff/scoped mypy80, repository989, docs104, Markdown120, strict documentation build and diff checks passed. No native configuration or backup writes are part of this batch. Elapsed is recorded Atlaso task runtime including verification/recovery, not native transfer duration. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a38d87effc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| component_ids = reference.get("component_ids") | ||
| if not isinstance(component_ids, list) or component_ids != item["component_ids"]: | ||
| raise ValueError("Native backup reference has invalid component coverage") |
There was a problem hiding this comment.
Compare recorded component coverage independently of ordering
If Fleet returns the same eligible components in a different order when recovery rediscovers inventory, this list comparison rejects the recorded backup reference before querying its task. A focused reproduction with recorded coverage ['a', 'b'] and rediscovered coverage ['b', 'a'] raises Native backup reference has invalid component coverage. Consequently, neither reconciliation nor explicit closure can finish, leaving the global backup reservation held despite unchanged component coverage. Compare membership independently of ordering while retaining duplicate and malformed-input checks.
Useful? React with 👍 / 👎.
| with NativeBackup(source, credential) as native: | ||
| native.login() | ||
| native.discover() | ||
| report = {"group_id": group["id"], "checkpoint": group["checkpoint"], "current": native.current(group["native_group_id"])} |
There was a problem hiding this comment.
Verify the recorded native identity during reconciliation
If Operations advertises a different Fleet service during recovery, NativeBackup.login() adopts its newly advertised endpoint and certificate, but reconciliation discards discovery without comparing that identity to the recorded source. It then interprets saved group/task references against the replacement service; if those identifiers also exist there, unrelated terminal results can authorize reservation release. Unlike the guarded execution path, a focused reconciliation reproduction accepted changed discovery identity and closed recovery. Check immutable appliance and Fleet service identity before interpreting recorded references, while continuing to allow mutable policy drift.
Useful? React with 👍 / 👎.
Adds a VCF Helper wizard for reviewed native backup configuration and one initial backup. Administrators first choose one or more products, then connect to each chosen Operations, NSX, vCenter or direct SDDC Manager source before reviewing one combined plan. New configuration requires an enabled, applied VCF Backup SFTP receiver. Administrators confirm TLS identity, discover eligible targets and review destinations, recurrence, retention, credentials and side effects before authorizing writes. Coverage gaps identify components outside the plan without presenting native ineligibility as an execution failure.
Operations recurrence is optional: preserve the exact existing full/incremental schedule by default, create a daily UTC full schedule, or explicitly disable recurrence. Daily full recurrence supports preserving, enabling or disabling incrementals, with a validated minimum 240-minute cadence and explicit fallback-to-full choice. The initial backup remains a separate action. Native writes are checkpointed and never automatically replayed. Successful completion requires native task success, configuration readback and fresh nonempty receiver artifacts for every selected component.
The Backup Operations list lives on VCF Backups beside the receiver settings. It has filters, separate local Date/Time columns and recorded task Elapsed duration. A row opens its status directly, without a redundant ID lookup or configuration wizard. Later successful reconciliation preserves recorded successful completion times. VCF Helper keeps configuration and links to the operations list. Configure VCF Backup always starts a fresh wizard. Read-only reconciliation runs in the background, survives browser closure, deduplicates active requests and reports restart interruption without replay. Status separates backup artifact verification from current-policy drift. Recovery remains available when the receiver is unready; refreshed API credentials are allowed only for the recorded identity. Fleet writes and token refresh recheck the reviewed service, while scheduler keys bind verified appliance identities. Per-group checks allow an earlier approved group to change its own settings while still rejecting drift in the next group.
Reuses the issue-approved Configure VCF Offline Depot wizard and shared grids, with Tasks-style read-only status. Includes operator documentation, synchronized version 0.9.469, route/mypy/UI contract updates and parameter documentation required by CI.
Closes #1066
Validation
backupAllowed=false, and a Fleet SDDC lifecycle-service backup is not proof of the separate legacy SDDC Manager backup. Optional recurrence controls currently apply to Operations; direct products retain their existing controls. Full VCF protection and restore acceptance are not claimed.