Skip to content

v1.0 tag-cut: CI gates — e2e wiring, tag-lineage, SLSA sdist (Day 2)#18

Closed
tachyon-beep wants to merge 1 commit into
v1.0/05-smoke-automationfrom
v1.0/08-ci-gates
Closed

v1.0 tag-cut: CI gates — e2e wiring, tag-lineage, SLSA sdist (Day 2)#18
tachyon-beep wants to merge 1 commit into
v1.0/05-smoke-automationfrom
v1.0/08-ci-gates

Conversation

@tachyon-beep

Copy link
Copy Markdown
Collaborator

Summary

Closes four Day 2 CI gaps from the v1.0 gap register.

  • TEST-01 (clarion-23e78a6e75): sprint_2_mcp_surface.sh wired into walking-skeleton (ci.yml) and verify (release.yml). Uses CARGO_BUILD=0 — binary built earlier in the same job by sprint_1_walking_skeleton.sh.
  • TEST-02 (clarion-fdc0d695f4): phase3_subsystems.sh wired with the same pattern.
  • CI-01 (clarion-6a622d5f7e): Tag-lineage ancestor check added as the first step after checkout in release.yml verify. Guarded by if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') so workflow_dispatch dry-runs from feature branches are no-ops.
  • CI-03 (clarion-f530101222): SLSA release-subjects glob extended from clarion-*.tar.gz to also match clarion_plugin_python*.tar.gz. Output variable renamed release-subjects (was rust-subjects) and provenance file renamed clarion-release-artifacts.intoto.jsonl (was clarion-rust-binaries.intoto.jsonl) to reflect the broader scope.

Verification

  • YAML syntax: python -c "import yaml; yaml.safe_load(open(...))" passes both files.
  • sprint_2_mcp_surface.sh: PASS locally with CARGO_BUILD=0.
  • phase3_subsystems.sh: PASS locally.
  • CI-01 ancestor check: git merge-base --is-ancestor HEAD origin/main correctly returns exit 1 on this feature branch (non-ancestor), confirming the check fires; the if: guard makes it a no-op except on real tag pushes.

Architectural notes

  • The sprint_2_mcp_surface.sh failure observed during the initial local run was a transient partial pip installation (~larion-plugin-python invalid distribution) in the local venv — not a script or CI bug. The script is clean; CI environments get a fresh install.
  • CI-03 uses -o alternation in find rather than a second find | cat pipeline, so the sort order is deterministic and the base64 subject list is stable across runs.
  • The if: guard on CI-01 is the mechanism that makes workflow_dispatch safe on non-main branches; removing it would break the standard dry-run pattern documented in release.yml line 15.

🤖 Generated with Claude Code

TEST-01 (clarion-23e78a6e75): Add sprint_2_mcp_surface.sh to the
walking-skeleton job in ci.yml and the verify job in release.yml.
CARGO_BUILD=0 so the binary built earlier in the same job is reused.

TEST-02 (clarion-fdc0d695f4): Add phase3_subsystems.sh to the same
jobs with the same CARGO_BUILD=0 pattern.

CI-01 (clarion-6a622d5f7e): Add an "Assert tagged commit is on main"
step at the top of the release.yml verify job, guarded by
`if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')`
so workflow_dispatch dry-runs from feature branches are unaffected.

CI-03 (clarion-f530101222): Extend the release-subjects glob to
include clarion_plugin_python*.tar.gz alongside clarion-*.tar.gz,
covering the Python sdist in SLSA provenance. Rename the output
variable to release-subjects and provenance file to
clarion-release-artifacts.intoto.jsonl to reflect the broader scope.

Verified locally:
- YAML syntax: python yaml.safe_load passes both files
- sprint_2_mcp_surface.sh: PASS (CARGO_BUILD=0 with existing binary)
- phase3_subsystems.sh: PASS
- CI-01 ancestor check: git merge-base --is-ancestor HEAD origin/main
  correctly returns 1 on this feature branch (expected)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 23, 2026 00:48
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Closes several “Day 2” CI/release gating gaps for the v1.0 tag-cut workflows by wiring additional E2E checks into CI/release verify, enforcing tag lineage against main, and broadening SLSA provenance subjects to include the Python plugin sdist.

Changes:

  • Add a release-time guard to assert v* tags point to a commit reachable from origin/main.
  • Wire sprint_2_mcp_surface.sh and phase3_subsystems.sh into both CI and release verify gates (with CARGO_BUILD=0 reuse).
  • Expand SLSA subject derivation from Rust archives only to “release artifacts” (Rust + Python plugin sdist), and rename provenance/outputs accordingly.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
.github/workflows/release.yml Adds tag-lineage check in verify, wires new E2E gates, and broadens/renames SLSA subject/provenance inputs/outputs.
.github/workflows/ci.yml Adds Sprint 2 MCP-surface and Phase 3 subsystem determinism E2E steps to the walking-skeleton job.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +36 to +40
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
run: |
git fetch --no-tags origin main
git merge-base --is-ancestor "$GITHUB_SHA" origin/main || \
{ echo "::error::tag $GITHUB_REF does not point to a commit on main"; exit 1; }
@tachyon-beep

Copy link
Copy Markdown
Collaborator Author

Superseded by the Day-2 consolidation onto v1.0/05-smoke-automation (PR #17). All of this branch's work is now carried on v1.0/05: STO-01 (fs2 lock), STO-02+ADR-035 (application_id/user_version — cherry-picked from this branch's 09f9a88), STO-04 (integrity_check), and the CI gates (e2e wiring, tag-lineage, SLSA sdist) — plus broader CI-04 (verify-published job) + GOV-02 (tag-protection) and the http_read.rs fmt fix the separate-branch line was missing. Verified green: cargo fmt/clippy/build, nextest 512 passed/2 skipped. Closing as superseded; branch will be deleted (recoverable from this closed PR or tag backup/v1.0-05-local).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants