Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
7658ab7
microVM JIT mint on the host and attempt-owned jail staging
Sep 19, 2026
84c6a56
MicroVM controller App-key custody converge: root:root 0400, readback…
Sep 19, 2026
3341ce9
Address review 68117: ByteSize carrier, one JWT claim/header authorit…
Sep 19, 2026
ab34afa
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 19, 2026
bf07613
Regenerate fleet-converge.yml for the microvm_controller_app_key_conv…
Sep 19, 2026
0e26b37
Address review 68156: EpochSecs for the JWT clock, delete planned_jit…
Sep 19, 2026
eb3a189
Placement reads runner_host_file_scope instead of re-minting the /etc…
Sep 19, 2026
acf0509
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 19, 2026
afcc701
extdeps.tools.openssl: import Unit from std.types (floor AmbiguousBar…
Sep 19, 2026
84961be
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 19, 2026
be8da16
runner_attempt_launch: derive the jit device's install mode and readb…
Sep 19, 2026
4830553
App JWT carried as extdeps.auth.jwt JwtCompactSerialization, not a ba…
Sep 19, 2026
2fc768a
github_effect_perform: hoist the brand-shedding note out of the funct…
Sep 19, 2026
e20ac1c
Reconcile the RS256 'cannot sign' rows with the signer this PR lands;…
Sep 19, 2026
bb09595
Merge origin/main (#11674 registration labels) into #11677; drop driv…
Sep 19, 2026
562ffe5
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 19, 2026
da1f422
Merge origin/main (#11547 generic App-token prelude) into #11677; the…
Sep 19, 2026
14f477b
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 19, 2026
3bf4a3a
Merge remote-tracking branch 'origin/main' into session/merry-bear-816
Sep 19, 2026
9580ef2
Model the signer over a key reference (extdeps.auth.jws JwsSigningKey…
Sep 19, 2026
43da036
Merge origin/main (#11671); stage exactly runner_microvm jit_drive_co…
Sep 19, 2026
d959529
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 19, 2026
7ec15a3
Read the controller key path through lifecycle_controller_app_key's s…
Sep 19, 2026
8185db2
Refuse a mint whose App is not the one the controller key belongs to …
Sep 19, 2026
fee614a
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 19, 2026
93c8787
Merge remote-tracking branch 'origin/main' into session/merry-bear-816
Sep 19, 2026
f875cd1
Measure the credential in bytes, and delete the dangling endpoint_pat…
Sep 19, 2026
f8fe885
Merge origin/main (#11671 guest bootstrap, #11675 guest network + wor…
Sep 20, 2026
ea738ca
Merge branches 'main' and 'session/keen-bear-791' of https://github.c…
Sep 20, 2026
e6cef61
Staging admits the jailer only from BOTH stagings, through a sealed r…
Sep 20, 2026
0da0882
Merge origin/main (#11672 microVM shape, #11675 workspace staging, gh…
Sep 20, 2026
46a9c33
stat.dag: restore the brace my keep-both merge resolution cut (floor:…
Sep 20, 2026
7a9a379
Take main's generated workflow projections; my copies were stale gene…
Sep 20, 2026
a6ed2fd
chore: regenerate drifted generated artifacts (ci auto-heal)
gunbai-bot[bot] Sep 20, 2026
12c0ffc
Merge main into the #11677 base for the wet lifecycle controller lane
Sep 20, 2026
8891230
microVM: carry the staged credential device path on InFlightAttempt, …
Sep 20, 2026
ec2973a
Merge origin/main (#11791 fleet witness lane + drift gate) into #11677
Sep 20, 2026
a01a9cc
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 20, 2026
f93e7c1
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 20, 2026
95726a8
Merge remote-tracking branch 'origin/main' into session/merry-bear-816
Sep 20, 2026
217f5af
Merge origin/main into #11677 (recomposition before taking witness ev…
Sep 20, 2026
1d81235
Merge remote-tracking branch 'origin/session/keen-bear-791' into sess…
Sep 20, 2026
5d8b13d
Merge remote-tracking branch 'origin/main' into session/merry-bear-816
Sep 20, 2026
47f5014
Import fleet_converge_expected_host_env_name from its current home
Sep 20, 2026
d8e0141
Merge remote-tracking branch 'origin/main' into session/merry-bear-816
Sep 20, 2026
3fc4d2f
Merge remote-tracking branch 'origin/main' into session/merry-bear-816
Sep 20, 2026
9d5b0bc
Merge origin/main into #11679: roster union of the converge modes
Sep 20, 2026
10c8336
Regenerate fleet-converge.yml from its authority (review 69279)
Sep 20, 2026
e40a855
Merge remote-tracking branch 'origin/main' into mb816fix
Sep 20, 2026
9071ce9
Merge remote-tracking branch 'origin/main' into mb816fix
Sep 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions .github/workflows/fleet-converge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:
mode:
description: plan shows membership hunks; apply executes a prior plan artifact; org_actions_observe validates the org credential and refuses on runner-group drift; org_runner_roster_observe reads the organization's self-hosted runner registrations to exhaustion under the same token and refuses unless the roster is complete; app_control_plane_observe reads the gunbai-ci App registration and webhook config with a short-lived App JWT and refuses on hook-config drift; microvm_host_converge installs the cited Firecracker release on the selected host and refuses the kvm grant by name; guest_image_observe reports the micro-VM base artifacts and their measured digests on the selected host and builds nothing; guest_image_converge builds the runner guest image there; microvm_boot_probe boots that image and reads its serial console; spark_grants and spark_bootstrap prepare the selected Spark; spark_serving_apply applies the promoted fabric groups' pair vLLM units over the password session, workers before heads; spark_native_serving_apply relaunches group B's native four-rank arm as ONE BOUNDED TRANSACTION -- an all-host preflight that mutates nothing and refuses on any unresolved artifact from an earlier run, the incumbent UNIT preserved (plus a diagnostic inspect of the incumbent container -- the container itself cannot outlive its unit, because these run --rm in the foreground under systemd), the head applied BEFORE the workers so every rank joins the head's new rendezvous store, then a readback of the COMPLETE realization through each container's own inspect -- every field the create spec states, the effective --node-rank off that container's argv, and NCCL's typed transport verdict on that incarnation -- plus the head's front door answering with this arm's served model, and then commit or a rollback of the whole arm -- and it is a separate mode because it reloads a 328 GB arm and nobody should reach it by asking for the pair units; spark_runtime_image_probe pulls the pinned runtime image on the selected Spark and reads its capabilities from inside its own digest, changing nothing; host_reset_return drives a rostered reset subject through its controller and measures the return FROM A PEER, and takes reset_observer rather than host because the observer must not be the subject; runner_host_file_observe reads the runner teardown drop-in, the needrestart deferral and the loaded teardown on the selected host as its administrator and writes nothing; runner_host_file_converge writes whichever of those two files differs, reloads systemd only if the drop-in changed, and refuses unless the manager then reports the declared teardown
required: true
options: [plan, launch_environment_plan, allocation_store_plan, apply, org_actions_observe, app_control_plane_observe, microvm_host_converge, guest_image_observe, guest_image_converge, microvm_boot_probe, spark_grants, spark_bootstrap, spark_serving_apply, spark_native_serving_apply, spark_runtime_image_probe, dashboard_deploy, approval_broker_dark_install, rlm_launch_deployment_receipt, host_reset_return, runner_host_file_observe, runner_host_file_converge, site_pxe_edge_observe, site_pxe_edge_converge, runner_password_session_tool_converge, r2_mint_preflight, r2_object_write_mint, org_runner_roster_observe, approval_keyring_converge, mtcollins1_boot, mtcollins1_fan_observe]
options: [plan, launch_environment_plan, allocation_store_plan, apply, org_actions_observe, app_control_plane_observe, microvm_host_converge, guest_image_observe, guest_image_converge, microvm_boot_probe, spark_grants, spark_bootstrap, spark_serving_apply, spark_native_serving_apply, spark_runtime_image_probe, dashboard_deploy, approval_broker_dark_install, rlm_launch_deployment_receipt, host_reset_return, runner_host_file_observe, runner_host_file_converge, site_pxe_edge_observe, site_pxe_edge_converge, runner_password_session_tool_converge, r2_mint_preflight, r2_object_write_mint, org_runner_roster_observe, approval_keyring_converge, mtcollins1_boot, mtcollins1_fan_observe, microvm_controller_app_key_converge]
type: choice
target:
description: "Spark target host for the spark_* modes, naming the administrator credential the run materializes (any rostered Spark: srv5, srv6, srv7, srv8, srv9, srv10, srv11, srv12); apply reads the subject off the plan artifact"
Expand Down Expand Up @@ -227,7 +227,7 @@ jobs:
echo "fleet-key: agent loaded (identity fleet-automation@gunbc; secret versions/1 pinned; fingerprint verified against modeled authority; key file wiped)"
env:
WIF_ACCESS_TOKEN: ${{ steps.wif_auth.outputs.access_token }}
if: github.event.inputs.mode == 'plan' || github.event.inputs.mode == 'launch_environment_plan' || github.event.inputs.mode == 'allocation_store_plan' || github.event.inputs.mode == 'apply' || github.event.inputs.mode == 'app_control_plane_observe' || github.event.inputs.mode == 'microvm_host_converge' || github.event.inputs.mode == 'guest_image_observe' || github.event.inputs.mode == 'guest_image_converge' || github.event.inputs.mode == 'microvm_boot_probe' || github.event.inputs.mode == 'spark_grants' || github.event.inputs.mode == 'spark_bootstrap' || github.event.inputs.mode == 'spark_serving_apply' || github.event.inputs.mode == 'spark_native_serving_apply' || github.event.inputs.mode == 'spark_runtime_image_probe' || github.event.inputs.mode == 'dashboard_deploy' || github.event.inputs.mode == 'approval_broker_dark_install' || github.event.inputs.mode == 'rlm_launch_deployment_receipt' || github.event.inputs.mode == 'host_reset_return' || github.event.inputs.mode == 'runner_host_file_observe' || github.event.inputs.mode == 'runner_host_file_converge' || github.event.inputs.mode == 'site_pxe_edge_observe' || github.event.inputs.mode == 'site_pxe_edge_converge' || github.event.inputs.mode == 'runner_password_session_tool_converge' || github.event.inputs.mode == 'r2_mint_preflight' || github.event.inputs.mode == 'r2_object_write_mint' || github.event.inputs.mode == 'approval_keyring_converge'
if: github.event.inputs.mode == 'plan' || github.event.inputs.mode == 'launch_environment_plan' || github.event.inputs.mode == 'allocation_store_plan' || github.event.inputs.mode == 'apply' || github.event.inputs.mode == 'app_control_plane_observe' || github.event.inputs.mode == 'microvm_host_converge' || github.event.inputs.mode == 'guest_image_observe' || github.event.inputs.mode == 'guest_image_converge' || github.event.inputs.mode == 'microvm_boot_probe' || github.event.inputs.mode == 'spark_grants' || github.event.inputs.mode == 'spark_bootstrap' || github.event.inputs.mode == 'spark_serving_apply' || github.event.inputs.mode == 'spark_native_serving_apply' || github.event.inputs.mode == 'spark_runtime_image_probe' || github.event.inputs.mode == 'dashboard_deploy' || github.event.inputs.mode == 'approval_broker_dark_install' || github.event.inputs.mode == 'rlm_launch_deployment_receipt' || github.event.inputs.mode == 'host_reset_return' || github.event.inputs.mode == 'runner_host_file_observe' || github.event.inputs.mode == 'runner_host_file_converge' || github.event.inputs.mode == 'site_pxe_edge_observe' || github.event.inputs.mode == 'site_pxe_edge_converge' || github.event.inputs.mode == 'runner_password_session_tool_converge' || github.event.inputs.mode == 'r2_mint_preflight' || github.event.inputs.mode == 'r2_object_write_mint' || github.event.inputs.mode == 'approval_keyring_converge' || github.event.inputs.mode == 'microvm_controller_app_key_converge'
timeout-minutes: 5
- name: Fleet converge plan (membership_reconcile → artifact)
id: plan
Expand Down Expand Up @@ -840,6 +840,27 @@ jobs:
retention-days: 30
if: always() && (github.event.inputs.mode == 'runner_password_session_tool_converge')
timeout-minutes: 10
- name: "MicroVM controller App key: deliver root:root 0400 from Secret Manager, read owner, mode, bytes and staging back"
id: microvm_controller_app_key_converge
run: |
ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
"$ROOT/target/release/gunbc" run --source-root "$ROOT/dag" --source-root "$ROOT/src/v2" --entry dag/gunbc/runner/microvm_controller_app_key_converge.dag --function microvm_controller_app_key_converge_ci_wet
cat "$ROOT/target/microvm-controller-app-key-converge-receipt.txt"
env:
FLEET_CONVERGE_EXPECTED_HOST: ${{ github.event.inputs.host }}
WIF_ACCESS_TOKEN: ${{ steps.wif_auth.outputs.access_token }}
if: github.event.inputs.mode == 'microvm_controller_app_key_converge'
timeout-minutes: 15
- name: Upload microVM controller App key custody receipt
id: microvm_controller_app_key_receipt_upload
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with:
name: microvm-controller-app-key-converge-receipt
path: target/microvm-controller-app-key-converge-receipt.txt
if-no-files-found: error
retention-days: 30
if: always() && (github.event.inputs.mode == 'microvm_controller_app_key_converge')
timeout-minutes: 10
- name: Upload runner host file converge receipt
id: runner_host_file_receipt_upload
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
Expand Down
16 changes: 16 additions & 0 deletions dag/gunbc/ci/ci_spec.dag
Original file line number Diff line number Diff line change
Expand Up @@ -855,6 +855,11 @@ data gunbc_ci_runner_password_session_tool_converge_target: GunbcRunStepTarget =
function: "runner_password_session_tool_converge_ci_wet",
}

data gunbc_ci_microvm_controller_app_key_converge_target: GunbcRunStepTarget = GunbcRunStepTarget {
entry: "dag/gunbc/runner/microvm_controller_app_key_converge.dag",
function: "microvm_controller_app_key_converge_ci_wet",
}

// THE OBSERVER SIDE OF ONE RESET ATTEMPT. It takes no arguments: the dispatch names the OBSERVER, the
// step hands that label over by environment, and the subject is derived from the label through the
// modeled assignment. There is no input of any kind through which a caller could name a subject,
Expand Down Expand Up @@ -1097,6 +1102,7 @@ fn gunbc_run_step_targets() -> List<GunbcRunStepTarget> {
gunbc_ci_site_pxe_edge_observe_target,
gunbc_ci_site_pxe_edge_converge_target,
gunbc_ci_runner_password_session_tool_converge_target,
gunbc_ci_microvm_controller_app_key_converge_target,
gunbc_ci_runner_microvm_boot_probe_target,
gunbc_ci_host_reset_return_target,
gunbc_ci_host_reset_dispatch_admission_target,
Expand Down Expand Up @@ -2158,6 +2164,16 @@ fn gunbc_ci_runner_password_session_tool_converge_invoke() -> String {
)
}

fn gunbc_ci_microvm_controller_app_key_converge_invoke() -> String {
gunbc_run_step_script(
source_roots: witness_layer_roots,
entry: gunbc_ci_microvm_controller_app_key_converge_target.entry,
function: gunbc_ci_microvm_controller_app_key_converge_target.function,
claim_run: false,
receipt_rel: "target/microvm-controller-app-key-converge-receipt.txt"
)
}

fn gunbc_ci_host_reset_return_invoke() -> String {
gunbc_run_step_script(
source_roots: witness_layer_roots,
Expand Down
53 changes: 52 additions & 1 deletion dag/gunbc/fleet/fleet_converge_workflow.dag
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ type FleetConvergeWorkflowMode
| SitePxeEdgeObserve
| SitePxeEdgeConverge
| RunnerPasswordSessionToolConverge
| MicrovmControllerAppKeyConverge
| R2MintPreflight
| R2ObjectWriteMint
| ApprovalKeyringConverge
Expand Down Expand Up @@ -237,6 +238,7 @@ fn fleet_converge_workflow_mode_wire(mode: FleetConvergeWorkflowMode) -> String
SitePxeEdgeObserve => "site_pxe_edge_observe"
SitePxeEdgeConverge => "site_pxe_edge_converge"
RunnerPasswordSessionToolConverge => "runner_password_session_tool_converge"
MicrovmControllerAppKeyConverge => "microvm_controller_app_key_converge"
R2MintPreflight => "r2_mint_preflight"
R2ObjectWriteMint => "r2_object_write_mint"
ApprovalKeyringConverge => "approval_keyring_converge"
Expand Down Expand Up @@ -267,7 +269,7 @@ fn fleet_converge_spark_target_description() -> String {
], "")
}

data fleet_converge_workflow_modes: List<FleetConvergeWorkflowMode> = [FullHostPlan, LaunchEnvironmentPlan, AllocationStorePlan, FleetApply, OrgActionsObserve, AppControlPlaneObserve, MicrovmHostConverge, GuestImageObserve, GuestImageConverge, MicrovmBootProbe, SparkGrants, SparkBootstrap, SparkServingApply, SparkNativeServingApply, SparkRuntimeImageProbe, DashboardDeploy, ApprovalBrokerDarkInstall, RlmLaunchDeploymentReceipt, HostResetReturn, RunnerHostFileObserve, RunnerHostFileConverge, SitePxeEdgeObserve, SitePxeEdgeConverge, RunnerPasswordSessionToolConverge, R2MintPreflight, R2ObjectWriteMint, OrgRunnerRosterObserve, ApprovalKeyringConverge, MtCollins1Boot, MtCollins1FanObserve]
data fleet_converge_workflow_modes: List<FleetConvergeWorkflowMode> = [FullHostPlan, LaunchEnvironmentPlan, AllocationStorePlan, FleetApply, OrgActionsObserve, AppControlPlaneObserve, MicrovmHostConverge, GuestImageObserve, GuestImageConverge, MicrovmBootProbe, SparkGrants, SparkBootstrap, SparkServingApply, SparkNativeServingApply, SparkRuntimeImageProbe, DashboardDeploy, ApprovalBrokerDarkInstall, RlmLaunchDeploymentReceipt, HostResetReturn, RunnerHostFileObserve, RunnerHostFileConverge, SitePxeEdgeObserve, SitePxeEdgeConverge, RunnerPasswordSessionToolConverge, R2MintPreflight, R2ObjectWriteMint, OrgRunnerRosterObserve, ApprovalKeyringConverge, MtCollins1Boot, MtCollins1FanObserve, MicrovmControllerAppKeyConverge]

// WHICH SCOPE A MODE SELECTS, WHERE IT SELECTS ONE AT ALL.
//
Expand Down Expand Up @@ -315,6 +317,7 @@ fn fleet_converge_mode_scope(mode: FleetConvergeWorkflowMode) -> FleetConvergeSc
SitePxeEdgeObserve => none
SitePxeEdgeConverge => none
RunnerPasswordSessionToolConverge => none
MicrovmControllerAppKeyConverge => none
R2MintPreflight => none
R2ObjectWriteMint => none
ApprovalKeyringConverge => none
Expand Down Expand Up @@ -371,6 +374,7 @@ fn fleet_converge_mode_fleet_ssh_key_demand(mode: FleetConvergeWorkflowMode) ->
SitePxeEdgeObserve => FleetSshKeyConsumed
SitePxeEdgeConverge => FleetSshKeyConsumed
RunnerPasswordSessionToolConverge => FleetSshKeyConsumed
MicrovmControllerAppKeyConverge => FleetSshKeyConsumed
R2MintPreflight => FleetSshKeyConsumed
R2ObjectWriteMint => FleetSshKeyConsumed
ApprovalKeyringConverge => FleetSshKeyConsumed
Expand Down Expand Up @@ -1136,6 +1140,50 @@ fn fleet_converge_runner_password_session_tool_converge_step() -> Step {
)
}

// THE CONTROLLER APP KEY MODE (gunbc.microvm_controller_app_key_converge). A step in the host-pinned
// job like the password-session mode, but NOT through fleet_converge_runner_host_file_step: it reads
// the key from Secret Manager in-process, so it carries the run's workload-identity token beside the
// host binding. Dispatching it delivers custody only; nothing selects the microVM path for the floor
// job.
data fleet_converge_microvm_controller_app_key_converge_step_if: String = fleet_converge_mode_step_if(mode: MicrovmControllerAppKeyConverge)

fn fleet_converge_microvm_controller_app_key_converge_step() -> Step {
RunStep {
name: Present { value: "MicroVM controller App key: deliver root:root 0400 from Secret Manager, read owner, mode, bytes and staging back" },
id: Present { value: "microvm_controller_app_key_converge" },
run: gunbc_ci_microvm_controller_app_key_converge_invoke(),
shell: none,
env: Present {
value: [
kv(key: fleet_converge_expected_host_env_name, value: yaml_string(s: "${{ github.event.inputs.host }}")),
kv(key: "WIF_ACCESS_TOKEN", value: yaml_string(s: "${{ steps.wif_auth.outputs.access_token }}")),
]
},
working_directory: none,
if_condition: Present { value: fleet_converge_microvm_controller_app_key_converge_step_if },
continue_on_error: none,
timeout_minutes: Present { value: gunbc_ci_runner_host_file_step_timeout_minutes }
}
}

fn fleet_converge_microvm_controller_app_key_receipt_upload_step() -> Step {
UsesStep {
name: Present { value: "Upload microVM controller App key custody receipt" },
id: Present { value: "microvm_controller_app_key_receipt_upload" },
uses: upload_artifact_action,
with: Present { value: [
kv(key: "name", value: yaml_string(s: "microvm-controller-app-key-converge-receipt")),
kv(key: "path", value: yaml_string(s: "target/microvm-controller-app-key-converge-receipt.txt")),
kv(key: "if-no-files-found", value: yaml_string(s: "error")),
kv(key: "retention-days", value: yaml_int(n: 30)),
] },
env: none,
if_condition: Present { value: concat("always() && (", concat(fleet_converge_microvm_controller_app_key_converge_step_if, ")")) },
continue_on_error: none,
timeout_minutes: Present { value: gunbc_ci_artifact_transfer_step_timeout_minutes }
}
}

// THE SITE PXE EDGE (gunbc.site_pxe_edge_converge): the first onboarding segment's ProxyDHCP + TFTP
// daemon on srv4, UEFI ARM64 chainloader only. It reuses the runner-host step shaper for the same
// reason the password-session step does -- same host input binding, same timeout authority, same
Expand Down Expand Up @@ -1177,6 +1225,7 @@ fn fleet_converge_site_pxe_edge_receipt_upload_step() -> Step {
}
}


fn fleet_converge_runner_host_file_receipt_upload_step() -> Step {
UsesStep {
name: Present { value: "Upload runner host file converge receipt" },
Expand Down Expand Up @@ -1991,6 +2040,8 @@ fn fleet_converge_job() -> Job {
fleet_converge_runner_host_file_converge_step(),
fleet_converge_runner_password_session_tool_converge_step(),
fleet_converge_runner_password_session_tool_receipt_upload_step(),
fleet_converge_microvm_controller_app_key_converge_step(),
fleet_converge_microvm_controller_app_key_receipt_upload_step(),
fleet_converge_runner_host_file_receipt_upload_step(),
fleet_converge_site_pxe_edge_observe_step(),
fleet_converge_site_pxe_edge_converge_step(),
Expand Down
10 changes: 10 additions & 0 deletions dag/gunbc/host_convergence_census.dag
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ type HostConvergenceSubject
| SparkRuntimeImage
| RunnerHostFiles
| RunnerPasswordSessionTools
| MicrovmControllerAppKey
| MicrovmHost
| GuestImage
| Srv3InstallMedia
Expand Down Expand Up @@ -683,6 +684,15 @@ data host_convergence_census_rows: List<HostConvergenceCensusRow> = [
disposition: BindToAuthority { target: fleet_plan() },
first_consumer: cite(module_path: "gunbc.runner_password_session_tool_converge", decl_name: "runner_password_session_tool_converge_ci_wet"),
),
census_row(
identity: cite(module_path: "gunbc.microvm_controller_app_key_converge", decl_name: "microvm_controller_app_key_converge_ci_wet"),
subject: MicrovmControllerAppKey,
phases: protocol_phases(false, true, true, true, true, true, false),
current_authority: cite(module_path: "gunbc.microvm_controller_app_key_converge", decl_name: "microvm_controller_app_key_converge_ci_wet"),
persistent_host_effect: ReachesPersistentHostMutation,
disposition: BindToAuthority { target: fleet_plan() },
first_consumer: cite(module_path: "gunbc.fleet_converge_workflow", decl_name: "fleet_converge_workflow_modes"),
),
census_row(
identity: cite(module_path: "gunbc.runner_microvm_host_ready", decl_name: "runner_microvm_host_converge_wet"),
subject: MicrovmHost,
Expand Down
Loading