Conversation
publish.yml verified the candidate's lineage in a `run:` step (gh api + jq). The fleet policy forbids shell steps and reported shell-step and pypi-shape on it, but removing the step would reopen the tag-named-`main` bypass. The proof now runs in hseshadr/ci's portfolio-foundation `release-lineage` function, pinned at a literal commit, before the artifact is downloaded. It checks the same facts from GitHub's run records (successful release-candidate.yml dispatch here for exactly HEAD_SHA, main contains HEAD_SHA) plus the publish run's own identity. The publisher is now Dagger -> download -> official PyPI, with no shell. Pinned at the hseshadr/ci#50 head; re-pin to its merge SHA after it merges. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oBArfm762nN1r4F4Fst5a
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015oBArfm762nN1r4F4Fst5a
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.
TL;DR
Draft on purpose. This pins
hseshadr/ciat the head of hseshadr/ci#50 (3de1c4b). That commit isn't on cimainuntil #50 merges. After it merges, re-pin to the merge SHA, then mark this ready.publish.ymlproved the candidate's lineage in arun:step (gh api+jq). The fleet policy forbids shell steps and reportedshell-stepandpypi-shapeon it. Deleting the step to get green would reopen the tag-named-mainbypass (#56). The proof now runs in the centralportfolio-foundationrelease-lineagefunction, before the artifact is downloaded. It checks the same facts from GitHub's run records: a successfulrelease-candidate.ymldispatch in this repo for exactlyHEAD_SHA, andmaincontainsHEAD_SHA. It also checks the publish run's own identity. The publisher is now Dagger → download → official PyPI, with no shell.Claim touched: "only a candidate built from
mainis published to PyPI".Tests
The shell-specific tests (jq clauses,
set -euo pipefail) are replaced, not inverted. They described a shell step that no longer exists. The behavior they guarded is now tested in hseshadr/ci#50 (test_lineage.py: tag namedmain, tag not on main, mismatched SHA, wrong workflow/event/repo). Here the tests pin the exact central call, its env binding to the triggering run, and that no${{ }}reaches a Dagger input.Evidence
uv run poe gate--run-id=${{ github.event.workflow_run.id }}pasted into argspublish.yml,dagger.yml,security-audit.ymlrelease-candidate.ymlmainalone it still reports #59'sshell-step/candidate-order, which #59 fixes)git merge-treevs #58 and #59Merge order
module:SHA here to ci#50's merge SHA and mark ready.Not verified
A real publish. That needs a tag dispatch of
release-candidate.yml, which this PR does not do. The function was driven live against real privacy-core runs (see ci#50), but its success path needs an in-progress publish run.🤖 Generated with Claude Code
https://claude.ai/code/session_015oBArfm762nN1r4F4Fst5a