diff --git a/docs/azure-validation.md b/docs/azure-validation.md index 92f7930d16c..7398b8fa8a2 100644 --- a/docs/azure-validation.md +++ b/docs/azure-validation.md @@ -397,4 +397,6 @@ The exact failed leg, retained resources, and recovery action must be reported. The first complete no-mistakes pipeline run inside an isolated Azure `validation-standard` cell executed on 2026-08-14 against this repository: run `01M00YX1QS5H608DPH6DFV7CDN`, validation generation `azv-stage-c-013`, lease task `azure-stage-c-validation`, task generation `spawn:558423dc544ebe5c`, validating exact head `126b60419613938c055b41447f9a65c76c31923a` through the pushed `codex/azure-stage-c-validation` branch. Generations `azv-stage-c-014` and `azv-stage-c-015` (same head, branch, and lease coordinates) then ground-truthed the guest's outcome derivation until the authenticated result recorded that success end to end. -Those cells validated an already-merged head, so their pipeline completed at pre-push with nothing to publish; this section, submitted on the `fm/stage-c-live-acceptance` branch under the same lease coordinates in one isolated Azure `validation-standard` cell, is itself the first change validated by a cell through the full push, pull request, and CI-green proof path. +Those cells validated an already-merged head, so their pipeline completed at pre-push with nothing to publish; the original submission of this section on the `fm/stage-c-live-acceptance` branch under the same lease coordinates became the first change validated by one isolated Azure `validation-standard` cell through the full push, pull request, and CI-green proof path. +The full publish path then completed live across generations `azv-stage-c-044` through `azv-stage-c-046` at head `0fc9ff4f7537536aa2efd4cc81b757411b751e64`: generation 044 pushed this branch and opened its pull request from inside the cell, generation 046 executed every pipeline step through the CI poll, and the pull requests were merged on fully green checks (13 of 13, including the behavior shards) on 2026-08-16. +This paragraph, submitted after the branch was reconciled onto the merged mainline, records that acceptance and is itself the documentation change validated by the closing cell. diff --git a/tests/fm-azure-validation.test.sh b/tests/fm-azure-validation.test.sh index 1fd5902fc8e..b35bd680484 100755 --- a/tests/fm-azure-validation.test.sh +++ b/tests/fm-azure-validation.test.sh @@ -343,7 +343,7 @@ PY [ "$rc" -ne 0 ] || fail "submit accepted broad GitHub authority" assert_contains "$out" "must declare only" "broad GitHub authority refusal was not explicit" # The fine-grained UI's successor pair for checks:read is accepted as an - # equally minimal declaration; validate_credential_lease alone proves it + # equally minimal declaration; load_credential_lease alone proves it # (submit would next require the live disk). make_lease "$tmp/lease.json" task-one generation-one "fixture/repository" python3 - "$tmp/lease.json" "$ROOT/bin/fm-azure-validation.py" <<'PY' @@ -355,7 +355,7 @@ spec=importlib.util.spec_from_file_location("v", sys.argv[2]) m=importlib.util.module_from_spec(spec); spec.loader.exec_module(m) import os os.chmod(p, 0o600) -m.validate_credential_lease(p, "task-one", "generation-one") +m.load_credential_lease(p, "task-one", "generation-one", "fixture/repository") print("successor authority pair accepted") PY # A modified file whose stale manifest digest remains otherwise structurally @@ -465,7 +465,7 @@ PY retail_price_transport_contract() { python3 - "$HOST" <<'PY' || fail "validation retail-price transport contract failed" -import importlib.util,io,json,sys +import importlib.util,io,json,pathlib,sys,tempfile spec=importlib.util.spec_from_file_location("validation",sys.argv[1]); m=importlib.util.module_from_spec(spec); spec.loader.exec_module(m) payload={"Items":[{"productName":"Virtual Machines Dasv6 Series","meterName":"D8as v6","unitOfMeasure":"1 Hour","retailPrice":0.4}]} class Reply(io.BytesIO): @@ -476,7 +476,8 @@ def urlopen(request,timeout): seen.append((request.full_url,request.headers,timeout)); return Reply(json.dumps(payload).encode()) m.urllib.request.urlopen=urlopen m.az_command=lambda *_args,**_kwargs: (_ for _ in ()).throw(AssertionError("Azure CLI must not proxy the public retail API")) -assert m.retail_rate({},"Standard_D8as_v6")==0.4 +state_dir=pathlib.Path(tempfile.mkdtemp()) +assert m.retail_rate({"state_dir":state_dir},"Standard_D8as_v6")==0.4 assert seen[0][2]==20 and seen[0][1]["User-agent"]=="firstmate-azure-validation/1" PY pass "validation reads the public retail API directly with a bounded identified request"