Skip to content

chore(probe): draft-payload probe (throwaway, do not merge) - #270

Closed
kyle-sexton wants to merge 1 commit into
mainfrom
probe/draft-payload
Closed

chore(probe): draft-payload probe (throwaway, do not merge)#270
kyle-sexton wants to merge 1 commit into
mainfrom
probe/draft-payload

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Throwaway Phase 0b probe for docs/topics/claude-review-lanes/PLAN.md: verifies the ready_for_review payload delivers draft=false. Will be closed unmerged and the branch deleted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton marked this pull request as ready for review July 26, 2026 22:31
@claude

claude Bot commented Jul 26, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 27s —— View job


PR Review

  • Gather context
  • Read changed file
  • Review against CLAUDE.md / REVIEW.md guidelines
  • Post findings

Scope: Single added file — .github/workflows/probe-draft.yml

Verdict: No findings. The probe is clean and correctly follows every relevant security constraint.

CLAUDE.md security checklist

Rule Status
pull_request only — no pull_request_target / workflow_run with secrets
No untrusted checkout ahead of any action step
permissions: {} — zero token grants
No uses: steps → SHA-pinning requirement is N/A
No secrets referenced or echoed
display_report / show_full_output / ACTIONS_STEP_DEBUG not present

Injection safety (REVIEW.md §trust-boundaries-and-injection)

The two context values are routed through env: vars rather than being interpolated directly inside the run block:

env:
  EVENT_ACTION: ${{ github.event.action }}
  PR_DRAFT:     ${{ github.event.pull_request.draft }}
steps:
  - run: |
      echo "action=${EVENT_ACTION}"
      echo "draft=${PR_DRAFT}"

This is the recommended pattern — ${{ }} expressions are expanded at YAML-parse time before the shell sees them, so routing through env vars is the correct injection-safe approach. Both values are also GitHub-owned (an action-name enum and a boolean), not user-controlled strings, so the risk is minimal in any case.

Other observations

  • timeout-minutes: 5 is appropriate for a no-op echo job.
  • ubuntu-24.04 is a concrete runner label, not ubuntu-latest. ✅
  • The workflow's own header comment makes the throwaway intent clear, which is good hygiene even for a probe that's never merged.

Summary: Nothing to block or nit. The probe is safe, minimal, and purpose-built correctly.

@claude

claude Bot commented Jul 26, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 52s —— View job


Security Review

  • Gather context
  • Read changed file
  • Analyze for security issues
  • Post findings

No security issues found.

The added workflow (probe-draft.yml) is as minimal a surface as a GitHub Actions workflow can be:

  • Safe trigger: Uses pull_request (not pull_request_target or workflow_run with secrets), so fork PRs run with a read-only token and no org secrets — consistent with the repo's security ground rules.
  • Empty permissions block (permissions: {}): no GITHUB_TOKEN capability granted.
  • No uses: references: zero supply-chain surface.
  • No checkout step: no untrusted code ever enters the workspace.
  • No secrets or credentials touched.
  • Context values are not injection-prone: github.event.action is a server-controlled enum (opened, ready_for_review); github.event.pull_request.draft is a boolean. Both are stored in env vars and expanded as ${VAR} in the shell — the correct pattern even if the values were user-controlled, which they aren't.

Nothing to flag in this lane.

@kyle-sexton

Copy link
Copy Markdown
Contributor Author

Probe complete: opened(draft)=true, ready_for_review=false — recorded in docs/topics/claude-review-lanes/PLAN.md Phase 0. Closing unmerged.

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