fix: adopt atomic STEVE metadata publication #486
No reviewers
Labels
No labels
Compat/Breaking
Component/Enclave-Builder
Component/Infrastructure
Deploy/BYOC
Deploy/Full-managed
Deploy/Self-hosted
Interface/API
Interface/CLI
Interface/Git
Interface/Web
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Priority/Critical
Priority/High
Priority/Low
Priority/Medium
Reviewed/Confirmed
Reviewed/Duplicate
Reviewed/Invalid
Reviewed/Won't Fix
Status/Abandoned
Status/Blocked
Status/Need More Info
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
public/platform!486
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/adopt-atomic-steve-metadata"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adopt STEVE's atomic metadata publication fix in normal platform builds.
This PR changes only
DEFAULT_STEVE_COMMIT, from6431612db09899314c7c30bc7ca0b1c54f7bc3c0to landed STEVE main694b5afbd6cf6f9ec743e27266097921d4102b09. The implementation and regression tests live in the linked STEVE PR; this is independent of the E2E-speed optimization.The old writer exposed
/metadata.jsonbefore serialization finished. Normal asynchronous enclave startup lets bootproofd encounter the incomplete file and exit. The fixed writer stages complete JSON on the same filesystem, then publishes it without clobbering an existing destination. No consumer retries, timing workarounds or supervisor changes are included.The new revision is based on current upstream STEVE main, so this default-pin update also includes upstream commits since the previous default. Existing operator
STEVE_COMMITor prebuilt component selections remain explicit overrides; updating this constant does not silently change already-running deployments or already-prepared component images. Deployments with overrides must select and prepare the fixed revision themselves.Landed-pin refresh
The linked fix is now on STEVE main. The default pin has been refreshed to
694b5afbd6cf6f9ec743e27266097921d4102b09rather than the pre-merged070349.python3 -B tests/test_prepare_components.py -v: 18 passed;git diff --checkpassed.da6d1ca85ddf15fec9864c9a588a046d77c32a85: all 92 tracked paths and file bytes match, no differences.Historical validation before the pin refresh
python3 -B tests/test_prepare_components.py: 18 passed.make -j1 build-api-e2e API_IMAGE=caution-api-metadata-e2e: passed.Historical completed live dev validation
The unchanged
make -j1 test-e2e-platform-portspassed: 8 steps, 0 failures, exit 0, on the normal dev host/account. Platformefc9562f9987b8fe0f282dc67818f4c61c370ec5; STEVEd0703497e5c7b04871d43fed8407d1d1a09ea892.make prepare-componentsbuilt STEVE forx86_64-unknown-linux-musl, published the matching dev prebuilt set, and passed the API component preflight. The live Make invocation selected that exact set:139a69cc01ced50ba04b70da515ab4c2676d9c3c576589d75599758b6e91e081.us-west-2,ap-south-1). Prepared component artifacts are intentionally retained.The other component pins were the existing dev selections. This is one successful live correctness run, not a production failure-rate estimate, exhaustive default-pin matrix, full E2E suite, or speed benchmark. The successful Make command took 629.433 seconds, including its setup and test teardown, but excluding separate component qualification and external host restoration; no timing comparison is claimed.
Evidence is preserved locally under
/home/tuna/git/metadata-publication-fix-evidence/:component-preparation.log,qualified-components.lock.json,retry-02/live-ports/ports/{console.log,result.json},retry-02/restoration-independent.json, and the before/after AWS inventories withretry-02/aws-resource-additions.json. Public source archives were independently downloaded and matched to every tracked committed file.The linked STEVE fix has landed and the pin above is refreshed. Requalify the selected prebuilt set for the new commit pair before merging this adoption PR. Already-running deployments and explicit operator component overrides do not change automatically.
Six-worker live E2E recheck — PASS
One complete batch ran on the existing dev host/account, with no overlapping live experiment and no follow-on batch. Both PRs remain unmerged.
Exact inputs and scope
d9a99e00be0a42f49c2c711615cb90817fe2b7fb(published PR #487).694b5afbd6cf6f9ec743e27266097921d4102b09(landed revision, selected through the supported Make override).make -j1 test-e2e E2E_JOBS=6, including build, component preparation, all suites and test teardown. No experimental Makefile and no separate prebuild.Live result
The previous six-worker batch took 841.090 seconds (14m01.1s). This recheck took 310.210 seconds longer. Build/setup before suite launch grew from 51.618 to 372.368 seconds; suites plus teardown took 778.932 seconds. Different framework/component revisions and retained build caches make this a correctness recheck, not a controlled performance comparison. Full Make timing excludes preflight and external original-service restoration.
Component verification
Normal Make component preparation and startup preflight passed. Post-run, read-only verification confirmed the selected canonical S3 manifest matched its accepted local lock and all five source pins. The downloaded STEVE ELF matched its declared size and digest:
03327d5f458efc2e045d46c09cc177bcec42fc3c71ec4e4af171c047dacbc93f.4f6aa867e3a7068904acc0b1a86a8266f4d854e82cbf7f5f1b8595c84919f8bf.6458584.Cleanup and restoration
us-west-2andap-south-1. This inventory is not a claim about every AWS resource class. Immutable component objects remain intentionally retained.Evidence
FINAL-VERIFICATION.json,component-provenance.json,live-ports/ports/result.json,live-ports/result.json,live-ports/restored.json,restoration-independent.json, sixsource/tests/e2e/logs/*.logfiles, AWS before/after inventories, andcompletion-sha256.json.The historical
live-ports/portsfolder name is retained by the reused runner; its receipt records the full six-suite Make command, not a standalone platform-ports run.Evidence SHA-256 receipts:
FINAL-VERIFICATION.json:355646dbb62564098d5dbe84af2d3f471a347c5fc132c10db880120dd647444acomponent-provenance.json:25cf0e66c458e66e97435c8348b7da8733d274ca4f83924fb8f2ae12a46e3ccdRESULTS.md:c362f4a1406106b2f98afd44806a7c2680c5de581403c935d48ebb750f3020a0c28ab8cd84tof1cef7a621