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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Your code is under new management. Agents that review your code - locally or on

**Two ways to run.** CLI catches issues before you push. GitHub Action reviews every PR automatically.

**GitHub-native.** Findings appear as inline PR comments with suggested fixes.
**GitHub-native.** Eligible findings appear as inline PR comments with suggested fixes, and every finding is reported in Checks.

## Quick Start

Expand Down
6 changes: 4 additions & 2 deletions packages/docs/public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -520,7 +520,7 @@ Most review skills only need `Read`, `Grep`, and `Glob` for exploring context.

## Pull Request Reviews

Warden runs automatically on pull requests via GitHub Actions, posting findings as review comments.
Warden runs automatically on pull requests via GitHub Actions and reports findings in Checks. When findings can be tied to the current pull request diff, Warden also posts inline review comments.

### Organization Setup

Expand All @@ -546,10 +546,12 @@ Creates `warden.toml` and `.github/workflows/warden.yml`.
1. PR is opened or updated
2. GitHub Actions runs the Warden workflow
3. Warden analyzes changed files against configured triggers
4. Findings are posted as inline review comments
4. Findings are reported in Checks. Eligible findings are also posted as inline review comments
5. If `requestChanges` is enabled, the review requests changes when findings exceed `failOn`
6. If `failCheck` is enabled, the check run fails when findings exceed `failOn`

Warden skips PR review feedback when the workflow run is no longer analyzing the current PR head. If the current head cannot be verified, Warden skips the write and fails the run rather than silently dropping a blocking review. Non-blocking findings without an inline diff location stay in Checks instead of creating timeline comments that cannot be resolved later.

### GitHub Actions Workflow

```yaml
Expand Down
13 changes: 10 additions & 3 deletions packages/docs/src/content/docs/github.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ description: Run Warden automatically on pull requests.
editUrl: false
---

Warden runs on pull requests through GitHub Actions and posts findings as
review comments.
Warden runs on pull requests through GitHub Actions and reports findings in
Checks. When findings can be tied to the current pull request diff, Warden also
posts inline review comments.

This page explains the pull request behavior. Setup lives in
[Repository Setup](/github/repository/), and action inputs live in
Expand All @@ -16,10 +17,16 @@ This page explains the pull request behavior. Setup lives in
1. A pull request is opened or updated.
2. GitHub Actions runs the Warden workflow.
3. Warden analyzes changed files against configured triggers.
4. Findings are posted as inline review comments.
4. Findings are reported in Checks. Eligible findings are also posted as inline review comments.
5. If `requestChanges` is enabled, Warden requests changes when findings exceed `failOn`.
6. If `failCheck` is enabled, the check run fails when findings exceed `failOn`.

Warden skips PR review feedback when the workflow run is no longer analyzing
the current PR head. If the current head cannot be verified, Warden skips the
write and fails the run rather than silently dropping a blocking review.
Non-blocking findings without an inline diff location stay in Checks instead
of creating timeline comments that cannot be resolved later.

## What Comes From `warden.toml`

Pull request behavior is still driven by `warden.toml`:
Expand Down
4 changes: 2 additions & 2 deletions packages/warden/src/action/reporting/outcomes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export type FindingOutcome =

export type DedupeSource = 'warden' | 'external';
export type DedupeMatchType = 'hash' | 'semantic';
export type SkippedReason = 'max_findings' | 'duplicate_in_batch';
export type SkippedReason = 'max_findings' | 'duplicate_in_batch' | 'no_inline_location';
export type ResolvedReason = 'fix_evaluation' | 'stale_check';

export const DedupeDetailSchema = z.object({
Expand Down Expand Up @@ -77,7 +77,7 @@ export const FindingObservationSchema = z.discriminatedUnion('outcome', [
outcome: z.literal('skipped'),
finding: FindingSchema,
skill: z.string().optional(),
skippedReason: z.enum(['max_findings', 'duplicate_in_batch']),
skippedReason: z.enum(['max_findings', 'duplicate_in_batch', 'no_inline_location']),
}),
z.object({
outcome: z.literal('resolved'),
Expand Down
Loading
Loading