Skip to content

Census image 0B/0C: the mtcollins1_census_image_publish fleet-converge mode builds and publishes the census image on srv2 - #11904

Merged
gunbai-bot[bot] merged 6 commits into
mainfrom
session/eager-owl-205-census-image-publish-mode
Sep 21, 2026
Merged

gunbai-bot[bot] merged 6 commits into
mainfrom
session/eager-owl-205-census-image-publish-mode

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Census stages 0B/0C, consuming the frontier #11731 declared (mtcollins1_census_image_publish named this as its landing consumer). No host action in this PR; the mode is dispatched by hand afterwards.

What it adds. FleetConvergeWorkflowMode gains MtCollins1CensusImagePublish (wire mtcollins1_census_image_publish; scope none; fleet key NOT consumed — the build touches only the runner's own host). gunbc.machine_intake_mtcollins1_census_image mtcollins1_census_image_publish_wet calls publish_seeded_image over the stock medium in /srv/bmc and writes the receipt (image_name, output_digest, build_key, published_path) to target/mtcollins1-census-image.txt; already-published is a success (create-only, the name is the digest). gunbc.ci_spec carries the target and a prelude-free invoke; gunbc.fleet_converge_workflow the step and the receipt upload; fleet-converge.yml regenerated (+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's image_name/output_digest are what census 0D (#11898's mtcollins1_boot_medium census arm) binds.

Executed at head: mtcollins1_census_image_witness_test 24/24 (two host-admission claims added at 4b8b163); workflow_dispatch_input_witness_test 19/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

… srv2, receipt of name and digest; fleet-converge.yml regenerated

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

  1. The mode is not bound to srv2. The generic fleet-converge job runs on whichever host input is selected; this new step has env: none, and mtcollins1_census_image_publish_wet performs no expected-host admission. mode=mtcollins1_census_image_publish -f host=srv1|srv3|srv4 therefore executes the publish against that runner's local /srv/bmc, contradicting the #11731 frontier ('built where it is served on srv2'). Pass FLEET_CONVERGE_EXPECTED_HOST, require srv2 before calling publish_seeded_image, and add positive/negative host controls. The refusal must happen before any build or filesystem write.

  2. The generated workflow is not in the PR. GitHub reports only three changed files, and .github/workflows/fleet-converge.yml at this head has neither the mtcollins1_census_image_publish option 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.

  3. The declared 0D frontier and the proposed handoff disagree. This file says mtcollins1_census_image_resolve remains 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 leave mtcollins1_census_image_resolve as 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>
@gunbai-bot

gunbai-bot Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor Author

Review 69371, both findings real and fixed at 0dca7ab: (1) the regenerated fleet-converge.yml had been caught in a git stash --keep-index I used to isolate a witness run, so the commit that named it did not carry it — restored from that stash and committed (+19/−1: the mode option, the two steps); (2) mtcollins1_census_image_publish_wet now declares uses fs: std.resources.Filesystem, the grant it exercises, instead of Network. Census witness re-executed at head: 22/22.

… shared aux 5m (review 69382)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor Author

Review 69382 addressed at 71a5cf4: the publish step now carries gunbc.fleet_workflow_steps gunbc_ci_mtcollins1_census_image_step_timeout_minutes (30, stated as an envelope beside the guest-image sibling, dissolving on the first run's measured receipt) instead of the shared aux 5m; regenerated YAML shows timeout-minutes: 30 on that step. The staging-dir-left-in-the-export failure mode is what the envelope exists to avoid.

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

  1. 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.

  2. 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>
@gunbai-bot

gunbai-bot Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor Author

Side-chat hold 5261870012 addressed at 4b8b163: (1) the step passes FLEET_CONVERGE_EXPECTED_HOST and mtcollins1_census_image_publish_wet admits only srv2 via mtcollins1_census_publish_host_admission before the build, the publication or the receipt write — claims: srv2 admitted; srv1/srv3/empty refused naming the host; (2) the receipt annotation now states it is publication-time evidence 0D authors into the medium row, and that the boot-time proof the served bytes still match stays with mtcollins1_census_image_resolve (or an equally strong srv2-side remeasurement) — the frontier text and the receipt no longer disagree. Census witness 24/24; YAML regenerated (+2: the env on the publish step).

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE on exact head 4b8b163, superseding my SOURCE HOLD 5261870012.

Both held walls are closed.

  1. 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.

  2. 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.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 20, 2026
…-census-image-publish-mode

# Conflicts:
#	.github/workflows/fleet-converge.yml
#	dag/gunbc/fleet/fleet_converge_workflow.dag
@gunbai-bot
gunbai-bot Bot removed this pull request from the merge queue due to a manual request Sep 20, 2026
…icrovmControllerAppKeyConverge and AppKeyVersionVerify)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 21, 2026
Merged via the queue into main with commit b92355e Sep 21, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/eager-owl-205-census-image-publish-mode branch September 21, 2026 00:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant