Skip to content

sdd-spec leaks stale CI reverts into spec-only PRs (reverted gominimal/minimal#655 via #658) #333

Description

@norrietaylor

Summary

The sdd-spec workflow opened gominimal/minimal#658 as the spec PR for gominimal/minimal#583. A spec PR must be spec-only (touch docs/specs/** and nothing else), but its single generated commit (061fd00d) bundled a stale revert of CI/release files alongside the spec:

  • .github/workflows/release.yml — dropped the build-libkrun-macos-arm64 job, the informational otool steps, and the bundle dependency (−69 lines)
  • scripts/stage-release.sh — dropped the libkrun artifact staging (−5 lines)

Both blocks had just landed in gominimal/minimal#655 (build + ship libkrun on MacOS). The spec PR effectively reverted #655.

This also violates the standing guardrail that SDD agents are barred from editing .github/workflows — yet an sdd-spec PR shipped a workflow diff.

Impact

Had gominimal/minimal#658 merged as-is, it would have silently reverted #655, removing the shipped macOS libkrun dylib from releases. CodeRabbit mis-read the leak as an intentional "simplified the macOS ARM64 release flow" change, so review signal did not flag it as a regression.

Likely root cause

061fd00d sits directly on top of 29e9f6a4 (#655's merge) yet its diff removes #655's lines. That is consistent with the workflow committing from a stale working tree (a checkout/reset predating #655) and running git add -A / git commit -a, capturing the old release.yml/stage-release.sh as deletions rather than staging only the new spec file.

Fix already applied downstream

In gominimal/minimal#658:

  • Restored both files to main (ci(release): restore libkrun macOS build dropped by spec-PR leak)
  • Net PR diff is now spec-only (the single spec .md)
  • CodeRabbit review addressed in a separate commit

Requested hardening (in sdd-spec)

  1. Stage only the generated spec path (explicit git add docs/specs/<id>/…), never git add -A / git commit -a.
  2. Add a diff guard that fails the run if a spec PR touches any path outside docs/specs/**.
  3. Ensure the workflow checks out main at HEAD (or rebases) before generating, so it never commits from a stale tree.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions