Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
5b825b2
fix(onboard): honor rerun cohort and volume ownership
prekshivyas Aug 27, 2026
0754f90
Merge remote-tracking branch 'upstream/main' into fix/managed-image-c…
prekshivyas Aug 27, 2026
d922961
fix(onboard): complete cohort and volume follow-up
prekshivyas Aug 27, 2026
2ee2baa
fix(onboard): retain recovery-bound Hermes state
prekshivyas Aug 27, 2026
ca20a33
merge: resolve conflicts with main
github-actions[bot] Aug 27, 2026
147e521
merge: resolve conflicts with main
github-actions[bot] Aug 27, 2026
cd909d0
merge: resolve conflicts with main
github-actions[bot] Aug 27, 2026
b03fe85
merge: resolve conflicts with main
github-actions[bot] Aug 27, 2026
b051b2a
merge: refresh from main
prekshivyas Aug 28, 2026
9354b23
fix(onboard): repair post-merge compensation state
prekshivyas Aug 28, 2026
73c3435
merge: refresh from main
prekshivyas Aug 28, 2026
8f8efc6
test(onboard): split Hermes volume coverage
prekshivyas Aug 28, 2026
9758fac
fix(onboard): bind Hermes volume recovery authority
cv Sep 1, 2026
d5c9989
fix(onboard): complete Hermes volume migration
cv Sep 1, 2026
bdd412e
refactor(onboard): reduce Hermes volume scope
cv Sep 1, 2026
2bd6bbc
Merge remote-tracking branch 'origin/main' into pr-10450-advisor
prekshivyas Sep 2, 2026
7a65297
Merge remote-tracking branch 'origin/main' into pr-10450-advisor-2
prekshivyas Sep 2, 2026
81d402a
fix(images): stabilize rerun publication cohort
prekshivyas Sep 2, 2026
f830302
test(images): keep cohort checks behavior-owned
prekshivyas Sep 2, 2026
c107a76
refactor(images): reuse validated cohort references
prekshivyas Sep 2, 2026
eb15e7f
refactor(e2e): return cohort receipt directly
prekshivyas Sep 2, 2026
7ea4c76
refactor(e2e): inline cohort attempt validation
prekshivyas Sep 2, 2026
d74f9dc
Merge branch 'main' into fix/managed-image-cohort-attempt-hermes-cleanup
prekshivyas Sep 2, 2026
90aaada
fix(images): make rerun cohorts retry-safe
prekshivyas Sep 3, 2026
4be961b
merge: refresh from main
prekshivyas Sep 3, 2026
7344b81
merge: refresh managed-image rerun fix from main
prekshivyas Sep 5, 2026
a58ff65
merge: refresh PR #10450 from main
prekshivyas Sep 6, 2026
b308a78
test(ci): prove managed-image workflow handoffs
prekshivyas Sep 6, 2026
94062e5
test(ci): verify promoted cohort receipts
prekshivyas Sep 6, 2026
1d3c879
test(ci): model managed image pointer state
prekshivyas Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions .github/workflows/managed-images.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1581,6 +1581,8 @@ jobs:
set -euo pipefail
[[ "$GITHUB_RUN_ID" =~ ^[1-9][0-9]{0,19}$ ]]
[[ "$GITHUB_RUN_ATTEMPT" =~ ^[1-9][0-9]{0,9}$ ]]
# Failed-job reruns retain this successful job's original output,
# while rerun-all executes it again and must mint fresh immutable aliases.
printf 'cohort=ghrun-%s-%s\n' "$GITHUB_RUN_ID" "$GITHUB_RUN_ATTEMPT" >> "$GITHUB_OUTPUT"

reviewed-npm-audit:
Expand Down Expand Up @@ -2935,6 +2937,7 @@ jobs:
digest,
reference,
baseReference,
run,
publicationEvidence
}
}) | from_entries)
Expand All @@ -2943,7 +2946,11 @@ jobs:

cohort_manifests="$RUNNER_TEMP/managed-image-cohort-manifests.json"
jq -s 'sort_by(.agent)' "$manifests" > "$cohort_manifests"
if ! jq -e '
if ! jq -e \
--arg repository "$GITHUB_REPOSITORY" \
--argjson runAttempt "$GITHUB_RUN_ATTEMPT" \
--argjson runId "$GITHUB_RUN_ID" \
'
length == 3
and ([.[].agent] | sort) == [
"hermes",
Expand All @@ -2964,6 +2971,12 @@ jobs:
and all(.platforms[];
(.digest | test("^sha256:[0-9a-f]{64}$"))
and (.baseReference | test("@sha256:[0-9a-f]{64}$"))
and (.run | keys | sort) == ["attempt", "id"]
and .run.id == $runId
and (.run.attempt | type) == "number"
and .run.attempt >= 1
and (.run.attempt | floor) == .run.attempt
and .run.attempt <= $runAttempt
and .publicationEvidence.candidateDescriptor.digest == .digest
and .publicationEvidence.attestations.manifestDescriptor.annotations[
"vnd.docker.reference.digest"
Expand All @@ -2972,6 +2985,9 @@ jobs:
.publicationEvidence.workloadDescriptor.digest
and .publicationEvidence.attestations.spdx.statement.subject.digest ==
.publicationEvidence.workloadDescriptor.digest
and .publicationEvidence.attestations.slsa.statement.builderId ==
("https://github.com/" + $repository + "/actions/runs/" +
($runId | tostring) + "/attempts/" + (.run.attempt | tostring))
)
)
' "$cohort_manifests" >/dev/null; then
Expand Down Expand Up @@ -3117,6 +3133,7 @@ jobs:
}' > "$cohort_contract"
jq -e \
--arg cohort "$cohort" \
--arg repository "$GITHUB_REPOSITORY" \
--arg revision "$GITHUB_SHA" \
--argjson runAttempt "$GITHUB_RUN_ATTEMPT" \
--argjson runId "$GITHUB_RUN_ID" \
Expand Down Expand Up @@ -3151,10 +3168,19 @@ jobs:
and .alias == (.image + ":cohort-" + $cohort)
and (.platforms | keys | sort) == ["linux/amd64", "linux/arm64"]
and all(.platforms[];
.publicationEvidence.candidateDescriptor.digest == .digest
(.run | keys | sort) == ["attempt", "id"]
and .run.id == $runId
and (.run.attempt | type) == "number"
and .run.attempt >= 1
and (.run.attempt | floor) == .run.attempt
and .run.attempt <= $runAttempt
and .publicationEvidence.candidateDescriptor.digest == .digest
and .publicationEvidence.attestations.manifestDescriptor.annotations[
"vnd.docker.reference.digest"
] == .publicationEvidence.workloadDescriptor.digest
and .publicationEvidence.attestations.slsa.statement.builderId ==
("https://github.com/" + $repository + "/actions/runs/" +
($runId | tostring) + "/attempts/" + (.run.attempt | tostring))
)
)' "$cohort_contract" >/dev/null

Expand Down
Loading
Loading