Repository navigation
[3.10] Re-pin the 3.10 candidate to run 40347931480 - #9103
Conversation
|
@elsa-workflows-bot review |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
|
Same CodeRabbit count fix as #9102: rehearsal and full-acceptance instructions in Head is @greptileai |
[Medium impact] No blocking issues were identified. There are no reported issues requiring changes before merging. SummaryRe-pins the 3.10.0 candidate to run
No actionable new issues were found in the changes since the previous review. No previous review threads were supplied. Reviews (3) · Last reviewed commit: "Keep the producer envelope including its..." · Reviewed by Greptile |
There was a problem hiding this comment.
Elsa 3 Code Review: APPROVE + HIGH @ 7f93869
Code Review, Round 1/6
This re-pins the 3.10.0 stable candidate from the Oct 6 placeholder (artifact 11412848210, 225 packages, which fails the guard) to run 40202201744 / artifact 12603436856 (231 packages from release/3.10.0 @ f60c00766b10). It also replaces hard-coded counts with values derived from the pin.
Release-branch patch safety: only CI workflows, Python release tooling, tests, the pin JSON and docs change. No product source, package metadata or build inputs are touched, so the shipped bytes are the pinned artifact and are not rebuilt. I compared this patch with #9102 (cherry-pick -x of eef85f90). It is identical apart from hunk offsets and two lines that already differed between the branches (the per-branch baseline sentence in package-publisher-gates.md, and the 6-vs-8 Studio content entries on the release branch). Both are correct for this branch.
CI: all checks green at this head (ubuntu-latest, import-rehearsal-tests, mapped-source-artifact-proof, selector-and-plan, select-tests, validate-gates, retained-testing-helper, toc, GitGuardian). CLA passes. Greptile scored it 5/5 with no findings. CodeRabbit skipped it because the base is not the default branch.
Not merging: release-candidate pin PRs stay approve-then-Lead-merges.
What I checked
- Pin is real and matches the guard. I downloaded artifact
12603436856and checked it end to end. Archive sha25613241bc1…a0dand size 96,125,850 match. The sealedpreupload-manifest.jsonhashes toac881065…24e6(=MANIFEST_SHA256). The checked-in envelope hashes to417f73ad…5af8(=ENVELOPE_SHA256).inventory_identityhashes to56852c6a…3f73c(= baselineevidence.inventory_sha256). The archive contains 231.nupkg+ 231.snupkg. Its ID set equalsvalidate_packages_id_set.txtexactly, and its 135 exclusions equal the new pin baseline.inventory-diff.jsonin the artifact is empty. - Guard passes on the real bytes, on both branches.
PACKAGES_DIR=<extracted> python3 scripts/validate_packages_id_set.pygives 231 IDs; Studio content passes with 8 entries using main's guard and 6 using the release/3.10.0 guard. - Producer identity. Run
40202201744attempt 1 isworkflow_dispatch,success,prepare-consolidated-release-candidate.yml, headf60c00766b10…onrelease/3.10.0. That commit is the current tip ofrelease/3.10.0. Artifact name, digest, size, expiry andworkflow_runmatch the jq checks in both workflows. - Consistency. Every identity value now comes from
consolidated_candidate_input.pyplus the envelope (ARCHIVE_SIZE,EXPIRES_AT, executorEXPIRY, recoverySOURCE/run/artifact). The new import-time envelope-identity check and the workflow pin test bind the two hard-coded workflow copies to those constants. In the scripts, tests and workflows I found no 224/225/450/668 counts or old pin values left, apart from the intended historicalSTALE_OCT6_MISSINGregression test. - Guards are tighter, not looser. The pin-to-guard test is now an exact
pin_ids == guard_ids(231). Dropping theelsa.samplepackagesentinel in_local_inventoryis correct: that ID is not in the 231 set, and the ID set stays bound throughinventory_sha256→ pin baseline inconsolidated_recovery_inputs. - Tests. I ran
python3 -m unittestfor the touched integration-program tests plus executor-workflow and prepare-candidate (136 OK), and forscripts/test_validate_packages_id_set+test_stage_consolidated_candidate_nupkgs(29 OK, also OK under-O). Results were the same on both PR heads. - Bot findings. CodeRabbit's single outside-diff item (91–93 rehearsal/full-acceptance counts still at 225) is fixed in the docs commit. I verified the cursor[bot] threads and resolved them.
Blockers
None.
Non-blocking follow-ups (could fold into this PR, or into #9016 close-out)
.github/workflows/packages.yml:12(thepublish_nugetdispatch description operators see) and the comments at:377,:459and:481still say stable 3.10.x nuget.org is "blocked until re-pin (#9016)" / "fails the 231-ID guard until #9016". After this merges, that's no longer true. It's harmless in direction, but the dispatch description is what an operator reads before approving.docs/integration-program/consolidated-publisher-handoff.md:63still tells the operator to retain artifact11412848210(shaace85260…, expiry 2026-11-05, 225 pairs). It should point at the current pin, or say "the current pin inconsolidated_candidate_input.py" so it can't go stale again.scripts/integration-program/persisted-workflow-upgrade/README.md:41/43still describes the envelope as the "accepted historical envelope" "accepted through #8635". It's a fresh Oct 25 envelope now, so that wording should be updated.- Readability:
test_consolidated_executor_approval_summary.py:83(packages + 7 + (packages - 7) * 2) andtest_consolidated_package_executor.py:176(2 * PIN_COUNT - PIN_COUNT // 3) encode fixture shape as unexplained numbers. A named constant or a one-line comment (what the 7 are, what the third is) would save the next re-pin some archaeology. - Minor:
scripts/test_validate_packages_id_set.pyimportsconsolidated_candidate_inputagain inside the new test (:290) when it is already imported at:262. It works, but it's redundant. - Operational: the pinned artifact expires 2026-11-24T15:03:46Z. Bytes are frozen at
f60c00766b10, so any product-code pick that lands onrelease/3.10.0after that commit is not in what 3.10.0 publishes unless it is re-pinned again.stage_consolidated_candidate_nupkgs.pychecks only the tag name, not that the tag commit carries the same product sources. That is pre-existing and by design, but worth stating in the release checklist.
— Code Review (Elsa 3), via Elsa Review
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
|
@elsa-workflows-bot review |
There was a problem hiding this comment.
Elsa 3 Code Review: REQUEST_CHANGES + HIGH @ cf9202c
Code Review, Round 2/6
[3.10] pick of the #9102 re-pin to run 40347931480 / artifact 12664519771 / source 5cff67228e550b353b3483eb3b37dfdb73a41c74, plus "Stop listing elsa-studio-v3 as a 3.10 published image". It carries the same envelope blocker as #9102.
Pick fidelity
- The re-pin commit
5119f038has exactly the same added and removed lines aseef85f90..3b867c72on #9102. - The branch is based on
f60c0076and is not rebased onto the currentrelease/3.10.0(5cff6722, which adds #9107 and #9110). A trial merge is clean, and the merged tree's onlydocker-publish.ymlchange is the header comment, because #9107 already removed theelsa-studiomatrix entry. After merge,release/3.10.0is5cff6722plus this pin, so the pinned source is the base the branch merges into.
Studio image wording
Consistent with #9107: in the merged tree no elsa-studio-v3 reference remains except the new docker-publish.yml:7 note that 3.10 does not publish it, and core/docs/wiki/build-run-operate.md:90 now lists only elsa-server-v3 next to elsa-server-and-studio-v3. main still publishes elsa-studio-v3, which is intended, because #9107 was a 3.10-only fallback.
Pin verification
Identical to #9102 and verified against the API and the downloaded bytes: digest sha256:2dd253e1f2946ddcb2b8e75ef397596001757ddbcb0a91f717e9505bbf28b4f6, size 96096205, expiry 2026-11-25T16:05:50Z, run 40347931480 attempt 1 success from release/3.10.0 @ 5cff6722, manifest b6a1750f...2994 matches the archive. The archive holds 231 packages and 135 exclusions, matching the pin baseline exactly; inventory_sha256 recomputes. validate_packages_id_set.py passes on the pinned bytes with this branch's guard (231 IDs, 6 Studio entries). No stale references to the f60c0076 candidate remain.
Blocking
scripts/integration-program/persisted-workflow-upgrade/stable-original-envelope.json:1: same as #9102.retrieved_atis2026-10-27T06:37:49Zinstead of the producer's2026-10-26T16:06:11Z, soENVELOPE_SHA256(consolidated_candidate_input.py:17) and the README "verbatim" claim (persisted-workflow-upgrade/README.md:43) bind a regenerated envelope. Restore the producer's bytes (SHA-2562369a297877ec51b5fc5da4f4f90df65f33dbf03036485109d994b7cae678328) and update both references, the same way as on #9102.
R1 notes
The same notes as #9102, with the same results: the magic 7 is fixed, the runbook now says 231/135 (134 IDs), and packages.yml and the handoff point at the current pin. The duplicate import is only partly fixed (test_validate_packages_id_set.py:288-289 still repeats :260-261), which is non-blocking. build/ConsolidatedPackageProof.targets:9 still has the stale #9016 wording.
Tests (run locally on this head)
test_validate_packages_id_set.py 21 passed. Candidate clock, approval summary, executor, recovery, recovery inputs and stable upgrade fixture: 114 passed.
Advisory bots
- Greptile (5/5 on this head): no findings. Agreed apart from the envelope, which it did not compare against the producer.
- CodeRabbit skips this base branch. The R1 author-note thread on
consolidated-package-recovery.md:93stays resolved.
Verdict: REQUEST_CHANGES, HIGH. Once the envelope matches the producer's bytes, as on #9102, this is an approve.
— Code Review (Elsa 3), via Elsa Review
|
Addendum to the Round 2 review at — Code Review (Elsa 3), via Elsa Review |
Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com> (cherry picked from commit 9f1d704)
The previous pin hashed the committed 565-byte envelope (trailing LF). Match that convention, bind ENVELOPE_SHA256 to those bytes, and fold the 3.10.0 wording, leftover import, and stale #9016 comment nits. Co-authored-by: Sipke Schoorstra <sipkeschoorstra@outlook.com>
|
@elsa-workflows-bot review |
There was a problem hiding this comment.
Elsa 3 Code Review: APPROVE + HIGH @ 067f952
Code Review, Round 3/6
Delta cf9202ce...067f9529 (a5a252d4 restores the producer envelope, 067f9529 keeps its trailing LF) fixes the R2 blocker and the R2 notes. I found nothing actionable.
R2 blocker: fixed
stable-original-envelope.jsonis byte-identical (cmp) toenvelope.jsonin producer artifact12663849532(candidate-transport-40347931480-1, run40347931480, source5cff6722): 565 bytes ending in LF, SHA-25693fdcbd271fe712ab9c96d0ee868528c608e6bd13517c17d319eecd2c2f0be48,retrieved_at2026-10-26T16:06:11Z.- Correction to R2: the
2369a297...value I quoted is the same bytes without the final LF. The file the previous pin committed atf60c0076was also 565 bytes ending in LF, so the committed bytes here follow the existing convention and are the producer's bytes as written. ENVELOPE_SHA256(consolidated_candidate_input.py:17) and README:43 (hash andretrieved_at) match. There are no other references to the old9c1840b8...hash.test_stable_persisted_workflow_upgrade_fixture.py:292binds the constant to the file bytes, and the executor, recovery inputs and the approval summary all hash-check the file at runtime.- The archive pin was verified in R2 and is unchanged: artifact
12664519771,sha256:2dd253e1...b4f6, 96,096,205 bytes, expiring2026-11-25T16:05:50Z. It is still not expired.
Rest of the delta
packages.yml(comments and thepublish_nugetdescription only, no condition changed): "Stable 3.10.0" is now correct, becausestage_consolidated_candidate_nupkgs.py:49accepts onlyrefs/tags/3.10.0, so other stable 3.10.x tags fail closed. This resolves the R2 addendum.ConsolidatedPackageProof.targets:9: the stale#9016wording is replaced. This is a comment-only change.test_validate_packages_id_set.py: the duplicatesys.pathinsert and import are now at module level once. Behaviour is unchanged.- Patch safety: no runtime or product code is touched, and the release-branch workflow logic is unchanged. A trial merge onto
release/3.10.0(5cff6722) is clean.
Tests (run locally on this head)
test_validate_packages_id_set.py: 21 passed. Candidate clock, approval summary, executor, recovery, recovery inputs and stable upgrade fixture: 114 passed. verify-pin against the API and the artifact bytes is clean, including the envelope compared byte for byte with the producer transport (231 IDs, 6 Studio entries on this branch's guard).
Nits (optional, non-blocking)
packages.yml:459: "other tags push this run's pack" is loose for stable 3.10.x tags other than 3.10.0, which fail closed in the stage step. It is fine as is.
Advisory bots
- Greptile: 5/5 with no findings, re-run on
067f9529. CodeRabbit skips this base branch. All review threads are resolved.
CI
Every check run on 067f9529 is complete and green: ubuntu-latest, import-rehearsal-tests, selector-and-plan, prove, mapped-source-artifact-proof, validate-gates, retained-testing-helper, select-tests, docs TOC, CLA, GitGuardian and Greptile. pinned-source-tests, released-artifact-proof and run-affected-tests were skipped by their path filters, and CodeRabbit skips this base branch.
Verdict: APPROVE, HIGH. This targets a release branch, so it is approve-only and the bot does not merge it.
— Code Review (Elsa 3), via Elsa Review
Purpose
In-place re-pin of #9102 onto
release/3.10.0. Replaces run40202201744/ artifact12603436856with the green post-#9108 candidate fromrelease/3.10.0@5cff67228e550b353b3483eb3b37dfdb73a41c74.Main PR: #9102
Scope
Description
Same identity as the main PR:
12664519771consolidated-candidate-5cff67228e550b353b3483eb3b37dfdb73a41c74-40347931480-140347931480, attempt15cff67228e550b353b3483eb3b37dfdb73a41c74sha256:2dd253e1f2946ddcb2b8e75ef397596001757ddbcb0a91f717e9505bbf28b4f6960962052026-11-25T16:05:50Zb6a1750f1f796f68a441bef93f67386b4a862dbca94d498ecf64536b102c299493fdcbd271fe712ab9c96d0ee868528c608e6bd13517c17d319eecd2c2f0be48(565-byte producer transportenvelope.json, trailing LF,retrieved_at2026-10-26T16:06:11Z)12664734747(not a pin constant)Package ID set is unchanged: 231 packages, 135 exclusions (134 IDs).
Folded the same comment nits as #9102. Also dropped the stale
elsa-studio-v3publish claim from thedocker-publish.ymlheader andcore/docs/wiki/build-run-operate.md(3.10 does not publish that image; the matrix row is already gone onrelease/3.10.0).Verification
ID-set, stage, recovery, executor, approval-summary, upgrade-fixture, candidate-clock, and elsa-release tests passed on this branch.
Refs #9016