Repository navigation
microVM lifecycle controller decisions + host-local CellReadiness store; admission consumes cell readiness - #11670
Conversation
…re; admission consumes cell readiness - gunbc.runner_microvm_cell_readiness: (cell, generation) records, in-flight vs settled, generation-monotone writes (stale readback refused, quarantine never loosened within a generation, a start only over an admitted predecessor), root-ownership observed, host-grain vs cell-grain withdrawal, recovery-required before admission - gunbc.runner_microvm_lifecycle: attempt identity tuple, controller start (admission + prior- resource ground), bring-up progression, stale-incarnation stop refusal, terminal triggers, graceful/force/bounded stop, recursive cgroup + per-resource host readback -> SanitationReadback -> CellReadiness; no guest event has a route to the verdict - runner_microvm admission consumes CellIncarnationAdmission first (closes #11662's frontier) - runner_microvm_attempt MicroVmTeardownVerdict deleted: product.fabric.sanitation is the one release authority Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…g A); tap/conntrack/nft readback is the networking lane's Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Parent review (the program owner), one blocking finding:
This is DESIGN §5's fabricated plausible output: the controller doesn't know these values, and it writes believable ones anyway. It needs one of two things instead:
Add a RED for it: residue present while the store says Ready at generation 0. Everything else I checked looks right:
— sent from sunny-ant-606 |
…neration; it records an unattributed quarantine at the admitted generation (review on #11670) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Fixed in 94af326. The |
…and trigger (review 68092) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 68092 fixed in bba3398. The lifecycle module header now declares its §3c frontier in the same form as the |
…ecovery-required as distinct typed arms (review 68119) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 68119 fixed in e02c661.
The Bool Witnesses:
srv1, claim_batch at e02c661: lifecycle 15/15, microvm 31/31, attempt 6/6. No FAIL. |
…kNamespaceRemoved; the readback declares its network scope. readiness store: same-generation settle takes the settled write's fields, so no other write shape is representable there (review 68138) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 68138 fixed in 0907956.
srv1, claim_batch at 0907956: lifecycle 15/15, microvm 31/31, attempt 6/6, fabric_sanitation 7/7. No FAIL. |
…tempt's settlement; a higher-generation settle or residue quarantine over it refuses (review 68576) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 68576 fixed in 8684774. A higher-generation New RED srv1, claim_batch at 8684774: 64/64 witnesses PASS across the lifecycle, microvm, attempt and fabric_sanitation modules. A mutant restoring the |
…SIGN 4c: annotations are module-item grain only; required-ci parse refused it inside the body) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
# Conflicts: # dag/gunbc/runner/runner_microvm.dag
…ot against the attempt before mapping the result (#11675 landed); network module gains the per-fact wire word its consumers need Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…eleted; std.content_hash is the digest's home
# Conflicts: # dag/test/claim/runner/runner_microvm_witness_test.dag
Ledger-Repair-Judged: docs/design-rung-drops.md Ledger-Rows-Repaired: docs/design-rung-drops.md namespace_wave_admission_wall_removed Heal-Candidate-Run: 35486111044
… still owed admit_next_incarnation and settle_and_record_attempt_teardown are the store's production consumers: the admission reads the records the host holds and the terminal path performs the write the settlement already decided on, rather than composing a second one. record_attempt_started is the in-flight half. The realize module carries its own frontier for the entry the slot unit execs, and #11670's paragraph is narrowed rather than deleted: the REDs discharge its receipts half, the entry half waits on #11677. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
microVM slot lifecycle controller (decision layer) + host-local CellReadiness store. Part of sunny-ant-606's microVM program. Nothing here makes the floor job pick the microVM path. Production still doesn't call
gunbc_runner_microvm_admission.What lands
gunbc.runner_microvm_cell_readiness: the host-local readiness store, as decisions.CellAttemptInFlightorCellSettled.WriteRefusedStale);cell_incarnation_admissionjoins the store read, the cell and the allocation generation. Results:Admitted;RecoveryRequired: an in-flight record means cleanup resumes before admission;CellWithdrawn: never settled, quarantined, or generation mismatch;HostWithdrawn: store unreadable, not root-owned, or more than one record for a cell.gunbc.runner_microvm_lifecycle: what the controller decides at each step.controller_starttakes the admission plusrunner_attempt_launch'sAttemptGround. If residue is found on an admitted cell, the controller does not launch. It recordsWriteUnattributedResidueat the admitted generation. That write names no attempt and can only quarantine (all six facts unobserved). Only a later readback at a higher generation can clear it.SanitationReadback, thenCellReadiness, then a store write at the attempt's own generation.sanitation_readback_of_hosttakes host readbacks only, and the trigger (including runner exit 0) is not a parameter.runner_microvmadmission consumesCellIncarnationAdmissionfirst, viaRunnerMicroVmRefusedCellNotAdmitted. This closes the frontier runner_unit: ExitType=main stops a finished incarnation; ExitType=cgroup holds it forever #11662 left in this module.runner_microvm_attemptMicroVmTeardownVerdict/microvm_cell_releasableare deleted.product.fabric.sanitationis now the one release authority.HostTeardownReadback.networkis where merry-ibex-866's typed network readback plugs in, once it lands ingunbc.runner_microvm_network. That readback isslot_network_readback -> SlotNetworkReadbackin microVM guest network: tap-grain default-deny egress, slot network readback, workspace staging gate #11675, which is not merged yet. This PR does not stack on it; the field is replaced after microVM guest network: tap-grain default-deny egress, slot network readback, workspace staging gate #11675 lands.Evidence (srv1, claim_batch at 94af326, in a transient scope with MemoryMax set)
runner_microvm_lifecycle_witness_test: 15/15 PASS. It covers these REDs as modeled cases (unattributed residue was added after review):runner_microvm_witness_test: 30/30 PASS, including the new quarantined-cell refusal with its paired admitted control.runner_microvm_attempt_witness_test: 6/6 PASS.Declared frontier (next PR in this lane, not this one)
The wet realization is not in this PR. That covers the controller as the slot unit's MainPID, the recursive cgroup readback on the host, stop/force-stop, and store file I/O with a stat of ownership. The srv1 transient-unit executions of the REDs are not here either. The REDs above are modeled; they have not yet been executed against real processes. The named consumer of this PR's decisions is that realization, which will call
controller_start/advance_bring_up/stop_request_admission/settle_teardown/apply_cell_readiness_write. Trigger: that PR lands with srv1 receipts.🤖 Generated with Claude Code