Repository navigation
Conversation
e33de07 to
2d45262
Compare
## Summary Add typed direct-node recovery exercises for an explicitly opted-in, idle standalone worker. Check machine identity and effective cluster authority before mutation. Fence fault injection with sandbox/execution ownership, cgroup membership, recorded process birth time and a live pidfd. The crash exercise performs repeated VMM termination, including a manager restart, waits for normal cleanup to reach Stopped and release the node lease, then proves a new execution retains the disk marker. Keep it quarantined pending live qualification of #953. Document supervisor-first compact-layout rollout, drain-before-rollback, x86-64 usage and the ARM64 admission gate. ## Validation Ruff checks/formatting passed; both embedded Python programs compile, including the previously broken crash script. Focused Linux recovery tests pass, but the revised crash and manager-restart scenario has not been executed on a live KVM node. It remains a qualification gate, not passing acceptance evidence. ## Severity and risk Opt-in disruptive tests, restricted to the owned execution on an authorized standalone worker. The guard is not a lock against concurrent administrators; exclusive operator access is required. Ambiguous ownership refuses fault injection and cleanup. ## Stack CPU execution sequence: #925 → #926 → #928 → #929 → #930 → #931 → #960. Deploy the supervisor before node-manager and runtime-manager. Enable CH explicitly only after the complete sequence is deployed. Firecracker/E0 remains the default. GPU and Windows are separate work. AI assistance: Codex drafted code, tests and this description.
## Summary The standalone guard also inspects each running node-ctl process, including its own environment and --config path. The quarantined crash scenario links its recovery issue explicitly. Add typed direct-node recovery exercises for an explicitly opted-in, idle standalone worker. Check machine identity and effective cluster authority before mutation. Fence fault injection with sandbox/execution ownership, cgroup membership, recorded process birth time and a live pidfd. The crash exercise performs repeated VMM termination, including a manager restart, waits for normal cleanup to reach Stopped and release the node lease, then proves a new execution retains the disk marker. Keep it quarantined pending live qualification of #953. Document supervisor-first compact-layout rollout, drain-before-rollback, x86-64 usage and the ARM64 admission gate. ## Validation Current CPU-stack validation: 64 focused Linux tests passed, including managed-store ancestry, both release locator layouts, catalog pins, control protocol behavior, supervisor config refusals and launcher outcome handling. Linux ARM64 all-target/all-feature workspace Clippy and runtime-core default-feature Clippy passed with warnings denied; workspace rustfmt passed. Live KVM crash/restart qualification was not repeated. Ruff checks/formatting passed; both embedded Python programs compile, including the previously broken crash script. Focused Linux recovery tests pass, but the revised crash and manager-restart scenario has not been executed on a live KVM node. It remains a qualification gate, not passing acceptance evidence. ## Severity and risk Opt-in disruptive tests, restricted to the owned execution on an authorized standalone worker. The guard is not a lock against concurrent administrators; exclusive operator access is required. Ambiguous ownership refuses fault injection and cleanup. ## Stack CPU execution sequence: #925 → #926 → #928 → #929 → #930 → #931 → #960. Deploy a supervisor binary containing #930 before node-manager and runtime-manager. #929 alone is not an enablement boundary. Drain CH executions before rolling back below #930; retain a supervisor containing #930 while any CH execution exists. Enable CH explicitly only after the complete sequence is deployed. Firecracker/E0 remains the default. GPU and Windows are separate work. AI assistance: Codex drafted code, tests and this description.
## Summary The standalone guard also inspects each running node-ctl process, including its own environment and --config path. The quarantined crash scenario links its recovery issue explicitly. Add typed direct-node recovery exercises for an explicitly opted-in, idle standalone worker. Check machine identity and effective cluster authority before mutation. Fence fault injection with sandbox/execution ownership, cgroup membership, recorded process birth time and a live pidfd. The crash exercise performs repeated VMM termination, including a manager restart, waits for normal cleanup to reach Stopped and release the node lease, then proves a new execution retains the disk marker. Keep it quarantined pending live qualification of #953. Document supervisor-first compact-layout rollout, drain-before-rollback, x86-64 usage and the ARM64 admission gate. ## Validation Current CPU-stack validation: 64 focused Linux tests passed, including managed-store ancestry, both release locator layouts, catalog pins, control protocol behavior, supervisor config refusals and launcher outcome handling. Linux ARM64 all-target/all-feature workspace Clippy and runtime-core default-feature Clippy passed with warnings denied; workspace rustfmt passed. Live KVM crash/restart qualification was not repeated. Ruff checks/formatting passed; both embedded Python programs compile, including the previously broken crash script. Focused Linux recovery tests pass, but the revised crash and manager-restart scenario has not been executed on a live KVM node. It remains a qualification gate, not passing acceptance evidence. ## Severity and risk Opt-in disruptive tests, restricted to the owned execution on an authorized standalone worker. The guard is not a lock against concurrent administrators; exclusive operator access is required. Ambiguous ownership refuses fault injection and cleanup. ## Stack CPU execution sequence: #925 → #926 → #928 → #929 → #930 → #931 → #960. Deploy a supervisor binary containing #930 before node-manager and runtime-manager. #929 alone is not an enablement boundary. Drain CH executions before rolling back below #930; retain a supervisor containing #930 while any CH execution exists. Enable CH explicitly only after the complete sequence is deployed. Firecracker/E0 remains the default. GPU and Windows are separate work. AI assistance: Codex drafted code, tests and this description.
## Summary Check crash opt-in before creating a sandbox and again before fault injection. The standalone guard inspects each running node-ctl process, including its own environment and --config path. The quarantined crash scenario links its recovery issue explicitly. Add typed direct-node recovery exercises for an explicitly opted-in, idle standalone worker. Check machine identity and effective cluster authority before mutation. Fence fault injection with sandbox/execution ownership, cgroup membership, recorded process birth time and a live pidfd. The crash exercise performs repeated VMM termination, including a manager restart, waits for normal cleanup to reach Stopped and release the node lease, then proves a new execution retains the disk marker. Keep it quarantined pending live qualification of #953. Document supervisor-first compact-layout rollout, drain-before-rollback, x86-64 usage and the ARM64 admission gate. ## Validation Combined CPU-stack validation at #960: 35 focused Linux tests passed for containment filesystem contracts, control-peer/protocol handling, authenticated-store publication/removal, install/retry/removal across both directory layouts, and fenced crash recovery with saturated storage capacity. The production-permission registration test, shared-inode output test, and saturated-recovery test failed before their respective fixes and passed afterward. The actual fresh-process launcher passed a disposable privileged Linux probe with the production sidecar-directory mode and console ownership: PID 1, dropped credentials, detached host mount tree, private devices, inherited root-only listener, and refusal of a substituted device directory. This does not qualify KVM, cgroup limits or a CH guest boot. Affected-package Linux ARM64 all-target/all-feature Clippy passed with warnings denied; workspace rustfmt passed. Ruff passed and both embedded smoke programs compile. Live guest and repeated crash/manager-restart qualification has not been repeated and remains required. ## Severity and risk Opt-in disruptive tests, restricted to the owned execution on an authorized standalone worker. The guard is not a lock against concurrent administrators; exclusive operator access is required. Ambiguous ownership refuses fault injection and cleanup. ## Stack CPU execution sequence: #925 → #926 → #928 → #929 → #930 → #931 → #960. Deploy a supervisor binary containing #930 before node-manager and runtime-manager. #929 alone is not an enablement boundary. Drain CH executions before rolling back below #930; retain a supervisor containing #930 while any CH execution exists. Enable CH explicitly only after the complete sequence is deployed. Firecracker/E0 remains the default. GPU and Windows are separate work. AI assistance: Codex drafted code, tests and this description.
## Summary Check crash opt-in before creating a sandbox and again before fault injection. The standalone guard inspects each running node-ctl process, including its own environment and --config path. The quarantined crash scenario links its recovery issue explicitly. Add typed direct-node recovery exercises for an explicitly opted-in, idle standalone worker. Check machine identity and effective cluster authority before mutation. Fence fault injection with sandbox/execution ownership, cgroup membership, recorded process birth time and a live pidfd. The crash exercise performs repeated VMM termination, including a manager restart, waits for normal cleanup to reach Stopped and release the node lease, then proves a new execution retains the disk marker. Keep it quarantined pending live qualification of #953. Document supervisor-first compact-layout rollout, drain-before-rollback, x86-64 usage and the ARM64 admission gate. ## Validation Combined CPU-stack validation at #960: 35 focused Linux tests passed for containment filesystem contracts, control-peer/protocol handling, authenticated-store publication/removal, install/retry/removal across both directory layouts, and fenced crash recovery with saturated storage capacity. The production-permission registration test, shared-inode output test, and saturated-recovery test failed before their respective fixes and passed afterward. The actual fresh-process launcher passed a disposable privileged Linux probe with the production sidecar-directory mode and console ownership: PID 1, dropped credentials, detached host mount tree, private devices, inherited root-only listener, and refusal of a substituted device directory. This does not qualify KVM, cgroup limits or a CH guest boot. Affected-package Linux ARM64 all-target/all-feature Clippy passed with warnings denied; workspace rustfmt passed. Ruff passed and both embedded smoke programs compile. Live guest and repeated crash/manager-restart qualification has not been repeated and remains required. ## Severity and risk Opt-in disruptive tests, restricted to the owned execution on an authorized standalone worker. The guard is not a lock against concurrent administrators; exclusive operator access is required. Ambiguous ownership refuses fault injection and cleanup. ## Stack CPU execution sequence: #925 → #926 → #928 → #929 → #930 → #931 → #960. Deploy a supervisor binary containing #930 before node-manager and runtime-manager. #929 alone is not an enablement boundary. Drain CH executions before rolling back below #930; retain a supervisor containing #930 while any CH execution exists. Enable CH explicitly only after the complete sequence is deployed. Firecracker/E0 remains the default. GPU and Windows are separate work. AI assistance: Codex drafted code, tests and this description.
## Summary Check crash opt-in before creating a sandbox and again before fault injection. The standalone guard inspects each running node-ctl process, including its own environment and --config path. The quarantined crash scenario links its recovery issue explicitly. Add typed direct-node recovery exercises for an explicitly opted-in, idle standalone worker. Check machine identity and effective cluster authority before mutation. Fence fault injection with sandbox/execution ownership, cgroup membership, recorded process birth time and a live pidfd. The crash exercise performs repeated VMM termination, including a manager restart, waits for normal cleanup to reach Stopped and release the node lease, then proves a new execution retains the disk marker. Keep it quarantined pending live qualification of #953. Document supervisor-first compact-layout rollout, drain-before-rollback, x86-64 usage and the ARM64 admission gate. ## Validation Remove the unused fixture memory override: the start CLI uses persisted template resources and does not accept --memory. Ruff and embedded-program syntax checks passed after the helper change. Combined CPU-stack validation at #960: 35 focused Linux tests passed for containment filesystem contracts, control-peer/protocol handling, authenticated-store publication/removal, install/retry/removal across both directory layouts, and fenced crash recovery with saturated storage capacity. The production-permission registration test, shared-inode output test, and saturated-recovery test failed before their respective fixes and passed afterward. The actual fresh-process launcher passed a disposable privileged Linux probe with the production sidecar-directory mode and console ownership: PID 1, dropped credentials, detached host mount tree, private devices, inherited root-only listener, and refusal of a substituted device directory. This does not qualify KVM, cgroup limits or a CH guest boot. Affected-package Linux ARM64 all-target/all-feature Clippy passed with warnings denied; workspace rustfmt passed. Ruff passed and both embedded smoke programs compile. Live guest and repeated crash/manager-restart qualification has not been repeated and remains required. ## Severity and risk Opt-in disruptive tests, restricted to the owned execution on an authorized standalone worker. The guard is not a lock against concurrent administrators; exclusive operator access is required. Ambiguous ownership refuses fault injection and cleanup. ## Stack CPU execution sequence: #925 → #926 → #928 → #929 → #930 → #931 → #960. Deploy a supervisor binary containing #930 before node-manager and runtime-manager. #929 alone is not an enablement boundary. Drain CH executions before rolling back below #930; retain a supervisor containing #930 while any CH execution exists. Enable CH explicitly only after the complete sequence is deployed. Firecracker/E0 remains the default. GPU and Windows are separate work. AI assistance: Codex drafted code, tests and this description.
## Summary Check crash opt-in before creating a sandbox and again before fault injection. The standalone guard inspects each running node-ctl process, including its own environment and --config path. The quarantined crash scenario links its recovery issue explicitly. Add typed direct-node recovery exercises for an explicitly opted-in, idle standalone worker. Check machine identity and effective cluster authority before mutation. Fence fault injection with sandbox/execution ownership, cgroup membership, recorded process birth time and a live pidfd. The crash exercise performs repeated VMM termination, including a manager restart, waits for normal cleanup to reach Stopped and release the node lease, then proves a new execution retains the disk marker. Keep it quarantined pending live qualification of #953. Document supervisor-first compact-layout rollout, drain-before-rollback, x86-64 usage and the ARM64 admission gate. ## Validation Remove the unused fixture memory override: the start CLI uses persisted template resources and does not accept --memory. Ruff and embedded-program syntax checks passed after the helper change. Combined CPU-stack validation at #960: 35 focused Linux tests passed for containment filesystem contracts, control-peer/protocol handling, authenticated-store publication/removal, install/retry/removal across both directory layouts, and fenced crash recovery with saturated storage capacity. The production-permission registration test, shared-inode output test, and saturated-recovery test failed before their respective fixes and passed afterward. The actual fresh-process launcher passed a disposable privileged Linux probe with the production sidecar-directory mode and console ownership: PID 1, dropped credentials, detached host mount tree, private devices, inherited root-only listener, and refusal of a substituted device directory. This does not qualify KVM, cgroup limits or a CH guest boot. Affected-package Linux ARM64 all-target/all-feature Clippy passed with warnings denied; workspace rustfmt passed. Ruff passed and both embedded smoke programs compile. Live guest and repeated crash/manager-restart qualification has not been repeated and remains required. ## Severity and risk Opt-in disruptive tests, restricted to the owned execution on an authorized standalone worker. The guard is not a lock against concurrent administrators; exclusive operator access is required. Ambiguous ownership refuses fault injection and cleanup. ## Stack CPU execution sequence: #925 → #926 → #928 → #929 → #930 → #931 → #960. Deploy a supervisor binary containing #930 before node-manager and runtime-manager. #929 alone is not an enablement boundary. Drain CH executions before rolling back below #930; retain a supervisor containing #930 while any CH execution exists. Enable CH explicitly only after the complete sequence is deployed. Firecracker/E0 remains the default. GPU and Windows are separate work. AI assistance: Codex drafted code, tests and this description.
Review — 6 findingsMedium
Low
Verified against |
the-gigi-pplx
left a comment
There was a problem hiding this comment.
Approved. 6 non-blocking findings in the review comment above.
|
@the-gigi-pplx Reviewed these against the complete seven-PR CPU sequence. The accepted fixes are applied and absorbed locally, not pushed at the author’s request; the GitHub heads do not contain them yet. The later GPU/Windows drafts were left untouched.
I retained acknowledged Stop as the publication barrier for Firecracker too: copying after an uncertain stop can publish an inconsistent image. I did not add an optimistic fallback or speculative retry. A full Firecracker Stop-RPC fault-injection build test remains a validation gap; the targeted tests do not prove that end-to-end case. The version, exit-command and bundled-recipe Linux tests passed. Earlier live template-build evidence predates these fixes. |
## Summary Build and register CH seed and derived templates through the existing services, preserving exact environment, runtime and guest identity. Derive installed guest-seed versions from both executables, reject disagreements, and flush and stop the guest before publishing its disk. CH finalization powers off because a reboot keeps its VMM resident. Run guest-version probes asynchronously with a five-second deadline and kill-on-drop so a broken executable cannot block the builder indefinitely. Resolve base-snapshot and in-node pool requests from the registered template's runtime instead of hardcoding Firecracker. Pin the selected build hash when creating a pool member. Request-construction coverage iterates all runtime kinds; environment qualification and lifecycle admission remain responsible for whether snapshots are supported. Share the architecture-to-boot-format contract, validate bundled recipes without a runtime-directory allowlist, and document the cold-only and snapshot-capable environments. Existing templates are not relabeled to gain capabilities. ## Validation The two builder scratch/version tests and affected-package Linux all-feature Clippy passed after making version probes asynchronous. Complete live base-snapshot/two-member-pool scenarios passed for CH and environment-bound Firecracker, including guest markers and cleanup. The all-runtime base-snapshot request-construction test passed on Linux, including gVisor identity forwarding without claiming gVisor snapshot support. Related Linux clone/admission tests passed. The prior review pass passed affected-package Clippy and 52 targeted Linux tests. The current x86-64 working build created a CH base snapshot and started a usable guest from it without cold fallback. After preserving disk-level clone metadata, a complete live scenario passed two-member pool fill, adoption, resume, guest marker verification, deletion, lease cleanup and policy restoration. Earlier combined-stack qualification built CH seed/derived templates and exercised persisted memory and S3 materialization. These template/pool runs do not qualify cluster placement or encryption; the prerequisite runtime PR records the separate encrypted lifecycle and S3 materialization evidence. ## Severity and risk Opt-in template support; fleet defaults do not change. Workers and builders must share allowed environments and authenticated artifacts. The pool runtime selection change also affects Firecracker and pins the build selected by template-manager. Unsupported or mismatched bindings refuse rather than silently select another runtime. ## Rollout Deploy the complete CPU sequence #925 → #926 → #928 → #929 → #930 → #931 → #960 before enabling CH. Keep compatible services and boot artifacts while CH snapshots exist. ARM64 execution, GPU, Windows and cross-node placement are not qualified here. Encrypted deployments additionally require the runtime PR's encrypted-volume prerequisites and a qualified credential authority. AI assistance: Codex drafted code, tests and this description.
Summary
Build and register CH seed and derived templates through the existing services, preserving exact environment, runtime and guest identity. Derive installed guest-seed versions from both executables, reject disagreements, and flush and stop the guest before publishing its disk. CH finalization powers off because a reboot keeps its VMM resident. Run guest-version probes asynchronously with a five-second deadline and kill-on-drop so a broken executable cannot block the builder indefinitely.
Resolve base-snapshot and in-node pool requests from the registered template's runtime instead of hardcoding Firecracker. Pin the selected build hash when creating a pool member. Request-construction coverage iterates all runtime kinds; environment qualification and lifecycle admission remain responsible for whether snapshots are supported.
Share the architecture-to-boot-format contract, validate bundled recipes without a runtime-directory allowlist, and document the cold-only and snapshot-capable environments. Existing templates are not relabeled to gain capabilities.
Validation
The two builder scratch/version tests and affected-package Linux all-feature Clippy passed after making version probes asynchronous. Complete live base-snapshot/two-member-pool scenarios passed for CH and environment-bound Firecracker, including guest markers and cleanup.
The all-runtime base-snapshot request-construction test passed on Linux, including gVisor identity forwarding without claiming gVisor snapshot support. Related Linux clone/admission tests passed. The prior review pass passed affected-package Clippy and 52 targeted Linux tests.
The current x86-64 working build created a CH base snapshot and started a usable guest from it without cold fallback. After preserving disk-level clone metadata, a complete live scenario passed two-member pool fill, adoption, resume, guest marker verification, deletion, lease cleanup and policy restoration. Earlier combined-stack qualification built CH seed/derived templates and exercised persisted memory and S3 materialization. These template/pool runs do not qualify cluster placement or encryption; the prerequisite runtime PR records the separate encrypted lifecycle and S3 materialization evidence.
Severity and risk
Opt-in template support; fleet defaults do not change. Workers and builders must share allowed environments and authenticated artifacts. The pool runtime selection change also affects Firecracker and pins the build selected by template-manager. Unsupported or mismatched bindings refuse rather than silently select another runtime.
Rollout
Deploy the complete CPU sequence #925 → #926 → #928 → #929 → #930 → #931 → #960 before enabling CH. Keep compatible services and boot artifacts while CH snapshots exist. ARM64 execution, GPU, Windows and cross-node placement are not qualified here. Encrypted deployments additionally require the runtime PR's encrypted-volume prerequisites and a qualified credential authority.
AI assistance: Codex drafted code, tests and this description.