Skip to content

ci: the three SDLC gates (decisions, verification, review) - #475

Open
rita-aga wants to merge 9 commits into
mainfrom
claude/sdlc-gates
Open

ci: the three SDLC gates (decisions, verification, review)#475
rita-aga wants to merge 9 commits into
mainfrom
claude/sdlc-gates

Conversation

@rita-aga

@rita-aga rita-aga commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Vendors the enforced SDLC-loop gates into temperpaw as required CI checks. This is the pilot that runs all three gates on a real PR (ARN-411).

  • sdlc-decisions — no PR without a shaped `## Decisions & Tradeoffs` section.
  • sdlc-verification — no merge without proof of implementation; skips PRs that change no app code (this PR is workflow-only, so it skips).
  • sdlc-review — no merge without a review record; cost-tiered, the computer runs the fixed panel (grok/codex/fable) on flat subscriptions, Greptile folded in or recorded skipped.

Decisions & Tradeoffs

  • Decision: vendor the gate logic by cloning arni-labs/stack in each workflow rather than copying the scripts into the repo. Came up because the gates must stay in sync across four repos. Options: copy scripts per repo (drifts) vs clone stack at run time (one source). Chose clone-stack because one source of truth is the whole point; the cost is a shallow clone per run. Where: .github/workflows/sdlc-*.yml.
  • Decision: the verification gate skips PRs touching no app code. Came up because a workflow/docs PR has no behavior to prove. Options: require proof always (forces a meaningless proof) vs scope-aware skip. Chose scope-aware. Where: sdlc-verification.yml scope step.

Verification

Workflow-only change — the verification gate skips by design. The decisions gate reads this PR body (this section satisfies it). The review gate runs the computer panel on the diff. Watching the checks on this PR is the proof.

Authored by Fable 5 via Claude Code.

Greptile Summary

The PR adds three GitHub Actions workflows enforcing decision records, implementation proof, and review records.

  • Adds a decision-log validator backed by the shared stack toolkit.
  • Adds tiered local or cloud review-record generation and validation.
  • Adds scope-aware proof validation, report rendering, artifact upload, and optional Vercel deployment.

Confidence Score: 3/5

The PR is not yet safe to merge because application changes can bypass proof validation and configured Vercel report deployments are still skipped.

The verification workflow suppresses failures when diffing against a base commit absent from its shallow checkout, classifying application changes as not requiring proof. Its deployment condition also reads a token unavailable at that evaluation scope, preventing the configured protected report deployment.

Files Needing Attention: .github/workflows/sdlc-verification.yml

Important Files Changed

Filename Overview
.github/workflows/sdlc-decisions.yml Adds the decision-log gate and validates the pull-request body using the shared toolkit.
.github/workflows/sdlc-review.yml Adds tiered review-record generation and validation; the previously reported direct metadata interpolation has been removed.
.github/workflows/sdlc-verification.yml Adds proof scoping, validation, and reporting, but the outstanding shallow-diff bypass and ineffective Vercel condition still break intended gate behavior.

Reviews (6): Last reviewed commit: "ci: re-trigger review (all reviewers lea..." | Re-trigger Greptile

rita-aga and others added 4 commits August 26, 2026 21:52
The enforced stages of the loop as required CI checks:
- sdlc-decisions: no PR without a shaped decision log
- sdlc-verification: no merge without proof (skips PRs that change no app code)
- sdlc-review: no merge without a review record; cost-tiered (computer > cursor
  > model APIs), the computer runs the panel on flat subscriptions

Pilot on temperpaw. All three fetch their gate logic from arni-labs/stack.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLPhB9kjLeE48kLUyAXXq2
Comment thread .github/workflows/sdlc-review.yml Outdated
Comment on lines +38 to +39
CODE=$(git diff --name-only "${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }}" | grep -vE '^(\.github/|docs/|\.agents/|\.claude/|\.cursor/|README|.*\.md$)' || true)
if [ -z "$CODE" ]; then echo "needs=false" >> "$GITHUB_OUTPUT"; echo "No app code changed - proof not required."; else echo "needs=true" >> "$GITHUB_OUTPUT"; fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Diff failures bypass proof

When the base commit is absent from the default depth-one checkout, git diff fails, but the pipeline suppresses the error and leaves CODE empty. The workflow then sets needs=false, allowing an application-code PR to pass without requiring or validating proof.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/sdlc-verification.yml
Line: 38-39

Comment:
**Diff failures bypass proof**

When the base commit is absent from the default depth-one checkout, `git diff` fails, but the pipeline suppresses the error and leaves `CODE` empty. The workflow then sets `needs=false`, allowing an application-code PR to pass without requiring or validating proof.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Claude Code Fix in Codex Fix in Cursor

Comment on lines +57 to +61
if: ${{ env.VERCEL_TOKEN != '' }}
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Deployment condition always skips

When the documented Vercel secrets are configured, this condition still sees an empty VERCEL_TOKEN because the variable is defined only in the same step's env block. The deployment is therefore always skipped, and the PR comment incorrectly falls back to the artifact while reporting that Vercel secrets are unset.

Prompt To Fix With AI
This is a comment left during a code review.
Path: .github/workflows/sdlc-verification.yml
Line: 57-61

Comment:
**Deployment condition always skips**

When the documented Vercel secrets are configured, this condition still sees an empty `VERCEL_TOKEN` because the variable is defined only in the same step's `env` block. The deployment is therefore always skipped, and the PR comment incorrectly falls back to the artifact while reporting that Vercel secrets are unset.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Claude Code Fix in Codex Fix in Cursor

@github-actions

github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown

Review — ci the three SDLC gates decisions verification review: FAIL

Panel: grok, codex, fable, greptile
Open act-on findings: 15 · synthesis by: panel-runner (non-author) · tier: cloud-sandbox

Full effort report (proof + review) linked from the verification comment.

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.

1 participant