Repository navigation
Census image 0B/0C: the mtcollins1_census_image_publish fleet-converge mode builds and publishes the census image on srv2 - #11904
Conversation
… srv2, receipt of name and digest; fleet-converge.yml regenerated Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
SOURCE HOLD on exact head 325f55a.
The publish fold itself consumes #11731's 0B/0C frontier in the right place: build and create-only publish occur on the serving host, and the receipt retains image_name/output_digest/build_key/published_path. The mode vocabulary, wire, scope and FleetSshKeyNotConsumed arms are present. Three integration walls remain:
-
The mode is not bound to srv2. The generic fleet-converge job runs on whichever
hostinput is selected; this new step hasenv: none, andmtcollins1_census_image_publish_wetperforms no expected-host admission.mode=mtcollins1_census_image_publish -f host=srv1|srv3|srv4therefore executes the publish against that runner's local/srv/bmc, contradicting the #11731 frontier ('built where it is served on srv2'). PassFLEET_CONVERGE_EXPECTED_HOST, require srv2 before callingpublish_seeded_image, and add positive/negative host controls. The refusal must happen before any build or filesystem write. -
The generated workflow is not in the PR. GitHub reports only three changed files, and
.github/workflows/fleet-converge.ymlat this head has neither themtcollins1_census_image_publishoption nor its run/upload steps. The body says '+19/-1 regenerated', but those bytes are absent. After #11903 lands/remerge, commit the exact regenerated YAML and byte-check the full mode union. -
The declared 0D frontier and the proposed handoff disagree. This file says
mtcollins1_census_image_resolveremains a frontier consumed by the boot run, remeasuring the export before the signed subject is minted. The new receipt comment instead says 0D binds from the artifact 'without re-measuring the export', and #11898's current medium row calls neither resolver. Choose and model one authority. Recommended: preserve the #11731 resolver/readback property (or an explicit remote srv2 equivalent), then construct the census medium from that successful standing. Do not leavemtcollins1_census_image_resolveas a promised consumer while 0D manually copies two strings.
Once host identity, generated YAML, and the 0D authority are reconciled, FleetSshKeyNotConsumed is the right arm.
…the earlier commit named but did not carry; the wet entry declares the Filesystem grant it exercises, not Network (review 69371) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 69371, both findings real and fixed at 0dca7ab: (1) the regenerated fleet-converge.yml had been caught in a |
… shared aux 5m (review 69382) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Review 69382 addressed at 71a5cf4: the publish step now carries |
briansrls
left a comment
There was a problem hiding this comment.
SOURCE HOLD on exact head 71a5cf4.
The new repairs are real: the generated fleet-converge.yml is now committed; mtcollins1_census_image_publish_wet declares the Filesystem capability it exercises; and the remaster step has its own 30-minute envelope in both the authority and the projection. Those close the missing-YAML, wrong-effect declaration, and five-minute-timeout findings.
Two walls from review 5261662738 remain:
-
WRONG-HOST PUBLISH IS STILL ADMITTED. The workflow's host input still selects any of srv1/srv2/srv3/srv4. The new publish RunStep has env: none, and mtcollins1_census_image_publish_wet performs no expected-host admission before calling publish_seeded_image. Therefore mode=mtcollins1_census_image_publish with host=srv1, srv3, or srv4 still builds and writes that runner's local /srv/bmc, contradicting #11731's 'built where it is served on srv2' frontier. Pass FLEET_CONVERGE_EXPECTED_HOST into the step, require exactly srv2 before any build/filesystem effect, and add positive srv2 + negative wrong-host controls.
-
THE 0D AUTHORITY IS STILL CONTRADICTORY. mtcollins1_census_image_resolve remains declared as the 0D consumer that remeasures the export before the signed subject is minted, while the new receipt annotation says the boot lane binds from the run artifact without remeasuring. #11898's approved head deliberately does not retire that frontier. Choose one authority: preferably make this receipt the candidate identity and preserve an explicit srv2-side resolve/readback for 0D; otherwise replace the frontier with a modeled equivalent and delete the obsolete promise. Publication-time bytes alone are not boot-time evidence that the served path still holds those bytes.
#11908 may be the current floor-infrastructure blocker, but landing that projection does not close either source wall above.
…receipt is publication-time, not boot-time, evidence (side-chat hold 5261870012) The step now passes FLEET_CONVERGE_EXPECTED_HOST and mtcollins1_census_image_publish_wet refuses any host but srv2 before the build, the publication or the receipt write -- a dispatch at another host would have remastered into that runner's own /srv/bmc, a file no controller reads. Two claims: srv2 admitted; srv1/srv3/empty refused with the host named. The receipt annotation no longer claims 0D can bind the run artifact without remeasuring the export: the boot-time proof stays with mtcollins1_census_image_resolve (or an equally strong srv2-side remeasurement), as that frontier declares. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Side-chat hold 5261870012 addressed at 4b8b163: (1) the step passes |
briansrls
left a comment
There was a problem hiding this comment.
APPROVE on exact head 4b8b163, superseding my SOURCE HOLD 5261870012.
Both held walls are closed.
-
The workflow passes FLEET_CONVERGE_EXPECTED_HOST into the publish step, and mtcollins1_census_image_publish_wet reads it before reaching mtcollins1_census_image_publish_admitted. Only srv2 is admitted; srv1/srv3/empty are refused with a located reason before the image build, create-only publication, or receipt write. The exact generated YAML carries the env binding and the dedicated 30-minute remaster envelope.
-
The publication receipt is now stated at its actual strength: publication-time evidence carrying image_name/output_digest/build_key/published_path. The source separately retains mtcollins1_census_image_resolve (or an equally strong srv2-side remeasurement) as the boot-time proof that the served file still holds those bytes. This reconciles the receipt handoff with the #11731 0D frontier rather than allowing the artifact to stand in for remeasurement.
The new mode remains total across wire/scope/fleet-SSH demand, FleetSshKeyNotConsumed is correct, and the committed workflow contains the dispatch option, publish step, expected-host env, 30-minute bound, and receipt upload.
This approval covers the model and generated workflow only. It does not authorize the host dispatch by itself, and it does not approve a later 0D digest switch unless that switch consumes the admitted publication digest and retires mtcollins1_census_image_resolve or provides an equally strong srv2-side readback.
…-census-image-publish-mode # Conflicts: # .github/workflows/fleet-converge.yml # dag/gunbc/fleet/fleet_converge_workflow.dag
…icrovmControllerAppKeyConverge and AppKeyVersionVerify) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
Exact-head rebind of APPROVE 5261969167 to 085cc3d. The intervening change is the main merge plus regeneration over the composed mode union: MtCollins1CensusImagePublish remains intact, and main's MicrovmControllerAppKeyConverge and AppKeyVersionVerify are preserved. No new census-publication source defect found; normal exact-head green checks remain the landing condition.
Census stages 0B/0C, consuming the frontier #11731 declared (
mtcollins1_census_image_publishnamed this as its landing consumer). No host action in this PR; the mode is dispatched by hand afterwards.What it adds.
FleetConvergeWorkflowModegainsMtCollins1CensusImagePublish(wiremtcollins1_census_image_publish; scope none; fleet key NOT consumed — the build touches only the runner's own host).gunbc.machine_intake_mtcollins1_census_imagemtcollins1_census_image_publish_wetcallspublish_seeded_imageover the stock medium in/srv/bmcand writes the receipt (image_name,output_digest,build_key,published_path) totarget/mtcollins1-census-image.txt; already-published is a success (create-only, the name is the digest).gunbc.ci_speccarries the target and a prelude-free invoke;gunbc.fleet_converge_workflowthe step and the receipt upload;fleet-converge.ymlregenerated (+19/−1: the option, two steps).Dispatch shape (after merge):
gh workflow run fleet-converge.yml --ref main -f mode=mtcollins1_census_image_publish -f host=srv2. The receipt'simage_name/output_digestare what census 0D (#11898'smtcollins1_boot_mediumcensus arm) binds.Executed at head:
mtcollins1_census_image_witness_test24/24 (two host-admission claims added at 4b8b163);workflow_dispatch_input_witness_test19/20 with the one failure being main's stale six-job oracle, repaired separately (see the companion main-repair PR). All three variant matches over the mode coproduct carry the new arm (wire/scope/fleet-key).🤖 Generated with Claude Code