Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,14 @@
description: Trigger Claude Code automation
color: "b41d8f"

- name: claude:review:passed
description: Automated Claude PR review found no blocking issues on the current head commit
color: "0e8a16"

- name: claude:review:failed
description: Automated Claude PR review found blocking issues on the current head commit
color: "b60205"

- name: copilot
description: GitHub Copilot related
color: "e6dac6"
Expand Down
43 changes: 43 additions & 0 deletions .github/workflows/claude-code-automation-pr-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,49 @@ jobs:

Use `gh pr comment` with your Bash tool to leave your comprehensive review as a comment on the PR.

## Machine-Readable Verdict (MANDATORY)

After posting your review comment, you MUST emit a single-label verdict on the PR. This label is consumed by branch-protection rules to gate auto-merge — it is the only deterministic signal of your review outcome.

Comment on lines 214 to +220
**Verdict criteria** (all must hold for PASS):

- No blocking findings under "CRITICAL CHECKS" — i.e. no missing test markers, no coverage drop below 85%, no `make lint` failures, no conventional-commit violations.
- No blocking architecture or security violations under "Repository-Specific Review Areas".
- Suggestions / nice-to-haves do NOT block the verdict.

If any blocking finding remains: verdict is **FAIL**.
Otherwise: verdict is **PASS**.

**Apply the label** (the two labels are mutually exclusive — always remove the opposite one):

```bash
# PASS:
gh pr edit ${{ github.event.pull_request.number }} \
--add-label "claude:review:passed" \
--remove-label "claude:review:failed"

# FAIL:
gh pr edit ${{ github.event.pull_request.number }} \
--add-label "claude:review:failed" \
--remove-label "claude:review:passed"
```
Comment on lines +230 to +242

Note: `--remove-label` is a no-op if the label is not present, so it is safe to always include it.

Also include the verdict as the final line of your sticky review comment, formatted exactly as:

```
**Verdict**: ✅ claude:review:passed
```

or

```
**Verdict**: ❌ claude:review:failed
```

This makes the verdict visible to humans without scrolling through all findings.

---

**Remember**: This is medical device software. Insist on highest standards. Be thorough, actionable, and kind.
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ dependencies = [
"lxml>=6.1.0", # CVE-2026-41066 (Renovate #556); also required for python 3.14 pre-built wheels
"filelock>=3.20.3", # CVE-2025-68146 (>=3.20.1); CVE-2026-22701 (>=3.20.3, Renovate #387)
"marshmallow>=3.26.2", # CVE-2025-68480
"pygments>=2.20.0", # CVE-2026-4539 (>=2.20.0); transitive via rich
"cryptography>=46.0.7", # CVE-2026-39892 (>=46.0.7); transitive via pyjwt[crypto]
"pydicom>=3.0.2", # CVE-2026-32711 (>=3.0.2); transitive via dicomweb-client/wsidicom/highdicom
"pyasn1>=0.6.3", # CVE-2026-30922 (>=0.6.3); transitive via cryptography
Expand Down
2 changes: 2 additions & 0 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading