v1: the dispatch-only v1-staging job (registry_base made real) - #411
Merged
Merged
Conversation
…ict, and the guide's staging section Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes the
registry_baseinput ofv1.yml'sworkflow_dispatchreal: a dispatch with a staging base runs each enrolled binding's own conformance runner against that host. Needs the lead's clearance (.github,scripts). Not dispatched here.Design
v1-staging(matrix, one leg per binding) plusv1-staging-verdict. Both areworkflow_dispatchonly and run only whenregistry_baseis non-empty. Neither is a required context, neither is inv1-parity'sneeds, and reports upload asstaging-report-*, whichv1-parity'sreport-*download does not match. A binding with no enrollment marker or no runner file skips loudly.scripts/fetch-v1/staging.py emitwrites a fixtures directory (symlinks to the real one, plus a derivedcases.jsonholding only the applicable cases, withtransports: ["registry"], and a sidecar the runners never read). The runner is pointed at it with the existingCHTYPES_V1_CONFORMANCE. The derived table is schema-checked.basic(the only staged tree), no http script, empty cache, no lock or hook or env, one{base}, plain online resolve, test-key trust, no request-log assertion. Today that is 7 of 81:line-ok,patch-float-ok,exact-ok,exact-older-version,two-builds-newest,unpublished-line,missing-platform. The other 74 are listed with their rule in the summary. Of the five cases that already listregistry, three run over trees the host does not hold and are excluded.missing-platformasks for darwin-arm64 on26.6; the host answers a 404 where the fixture tree serves a partial 200 index. A tag 404 on the only base isCHTYPES_ARTIFACT_UNPUBLISHED(guide §7), so the expected code is unchanged (inferred; the host's 404 ismeasured2026-10-03). It is recorded as a note next to the verdict.OVERRIDESinstaging.pyis the mechanism for a case whose expected outcome does differ; it is empty and a change there is visible in the summary.emitrefuses unless given the test key's own public hex (--trust-test-key, checked againsttests/fixtures/fetch-v1/test-key/public.hex); only the staging job passes it. Selftested: a wrong or missing key writes nothing.26.7,26.7.10,26.7.10.3,26.7.15,26.7.15.5,26.8,26.8.15,26.8.15.10,26.9,26.9.3,26.9.3.38);26.8/26.8.15.10index digest differs from the fixture's, but its linux-arm64 platform manifest digest equalsline-ok's expected manifest.26.6is a 404MANIFEST_UNKNOWN. The other tags' platform digests areunverifieduntil a run.Runner changes per binding (not in this PR)
The contract is three env vars:
CHTYPES_V1_CONFORMANCE,CHTYPES_V1_REGISTRY_BASE,CHTYPES_V1_REPORT.CHTYPES_V1_REGISTRY_BASEfor{base}on theregistrytransport and skips registry pairs when it is unset.CHTYPES_V1_REGISTRY_BASE; on theregistrytransport expand{base}to it; skipregistrypairs when it is unset (so the ordinary matrix is unchanged). Grep of the three heads: none mentions it today.Local checks
scripts/fetch-v1/staging.py --selftest,emitagainst the real fixtures (7 cases, schema-valid),lint-actions.sh(actionlint and shellcheck),check-selftests-wired.py,lint-public.sh,lint-spelling.sh,lint-cited-paths.sh,policy-merge-check.py --check-carve-out,gen-constants.py --check, markdownlint-cli2 on the guide. Only CI proves the job's YAML on a hosted runner, and only a dispatch (the PM's) proves it against the host.🤖 Generated with Claude Code
https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb