Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
379 commits
Select commit Hold shift + click to select a range
08fdf58
style(ci): remove trailing blank line to fix yamllint recurring failure
don-petry May 20, 2026
82443e4
feat: implement issue #183 — Compliance: non-stub-claude.yml (#328)
don-petry May 20, 2026
8923d18
feat: implement issue #135 — Compliance: unpinned-actions-claude.yml …
don-petry May 21, 2026
515ef38
feat: token cost observatory — ET metric + JSONL logging (#334)
don-petry May 21, 2026
6b3d930
feat: implement issue #184 — Compliance: non-stub-dependency-audit.ym…
don-petry May 21, 2026
913bfad
chore(deps): bump petry-projects/.github/.github/workflows/dependency…
dependabot[bot] May 21, 2026
c0956f4
feat(fleet-monitor): summarize token usage by workflow (#343)
don-petry May 21, 2026
c4b19c9
feat(dev-lead): harden agent instructions with Plan→TDD→Verify→Rubber…
don-petry May 23, 2026
f09644c
feat: implement issue #365 — dev-lead: preserve session output in Act…
don-petry May 23, 2026
059839b
fix(dev-lead): visible no-changes comments, ACTOR strip, full secret …
don-petry May 23, 2026
e2fd1b8
add: force-deploy-pr-review workflow for branch-protection bypass
Jun 3, 2026
ba62e3b
add: pr-review-reusable.yml wrapper for workflow_call pattern
Jun 4, 2026
3bc7d6f
fix: explicitly pass secrets in pr-review-reusable.yml workflow_call
Jun 4, 2026
f704077
feat: implement issue #425 — dev-lead: Incomplete issue resolution - …
don-petry Jun 4, 2026
26d7115
debug: pr-review enumeration logging (#410)
don-petry Jun 4, 2026
a657b32
chore(deps): bump actions/checkout from 4 to 6 (#433)
dependabot[bot] Jun 4, 2026
0093160
merge: PR #353 - PR Review Agent diagnostics and transient failure ha…
Jun 4, 2026
1a4afa4
merge: PR #422 - Add deploy-pr-review.yml workflow for branch protect…
Jun 4, 2026
22c7639
fix(ci): strip trailing whitespace from deploy-pr-review workflows (#…
don-petry Jun 6, 2026
11bc730
fix: support fine-grained tokens in pr-review scope validation (#443)
don-petry Jun 6, 2026
66380d1
fix(dev-lead): auto-resolve outdated bot threads and treat unresolved…
don-petry Jun 6, 2026
6669087
feat(dev-lead): enable auto-merge (squash) by default on every PR it …
don-petry Jun 6, 2026
1031dbf
fix(dev-lead): check out PR branches in an isolated worktree (#448) (…
don-petry Jun 7, 2026
2283caf
feat(token-report): org-wide weekly Token Cost Observatory report (#456)
don-petry Jun 7, 2026
1c1307f
fix(token-metrics): key usage sidecar per-call, not by $$ (concurrenc…
don-petry Jun 7, 2026
63e40c6
fix(dev-lead): hold auto-merge while working a PR + push defensively …
don-petry Jun 7, 2026
1e3c07e
fix(dev-lead): stop false "rate-limited" claims; dedupe superseded ch…
don-petry Jun 7, 2026
fcc74ab
fix(engine): handle gemini quota exhaustion and capture stderr (#226)
don-petry Jun 8, 2026
0e506c6
feat: implement issue #396 — Compliance: non-stub-dependency-audit.ym…
don-petry Jun 8, 2026
2af6e24
feat: implement issue #438 — Compliance: unpinned-actions-deploy-pr-r…
don-petry Jun 8, 2026
cd15eac
feat: implement issue #400 — petry-projects — workflow failures detec…
don-petry Jun 8, 2026
c826c1b
feat: implement issue #402 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 8, 2026
2d9b590
feat: implement issue #404 — PR Review Agent — failures detected 2026…
don-petry Jun 8, 2026
1a3f925
feat: implement issue #407 — PR Review Agent — failures detected 2026…
don-petry Jun 9, 2026
ef0d326
feat: implement issue #511 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 10, 2026
6eda8ef
feat: implement issue #272 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 10, 2026
0f908d9
feat: implement issue #512 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 10, 2026
e0ab3c5
feat: implement issue #140 — Compliance: non-stub-dependabot-automerg…
don-petry Jun 10, 2026
0232e25
feat: implement issue #408 — petry-projects — workflow failures detec…
don-petry Jun 10, 2026
98f4900
feat: implement issue #395 — Compliance: non-stub-dev-lead.yml (#488)
don-petry Jun 10, 2026
7712c5f
chore: retire deploy-pr-review, force-deploy, and pr-review-reusable …
don-petry Jun 10, 2026
a660475
feat: implement issue #545 — Compliance: non-stub-dependency-audit.ym…
don-petry Jun 10, 2026
48e6736
feat: implement issue #195 — bug(dev-lead): engine.sh defines multi-t…
don-petry Jun 11, 2026
3fe339b
chore(frameworks): vendor BMAD Method v6.8.0 + Test Architect v1.19.0…
don-petry Jun 11, 2026
5e1b236
feat: implement issue #244 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 11, 2026
50274b7
fix(engine): reorder cross-provider fallback to claude → copilot → ge…
don-petry Jun 12, 2026
296c1d7
feat: implement issue #574 — pr-review: PRs with >300 changed files h…
don-petry Jun 12, 2026
5866cf2
chore(deps): bump the actions group across 1 directory with 8 updates…
dependabot[bot] Jun 13, 2026
4b97ec7
fix(initiative-planner): restore discussion→workflow_dispatch redispa…
don-petry Jun 13, 2026
a2113ed
feat: implement issue #677 — [Phase 1] Thread an optional MCP config …
don-petry Jun 14, 2026
ed01649
feat: implement issue #678 — [Phase 1] Graceful degradation: warn (ne…
don-petry Jun 14, 2026
dcb86f8
feat: implement issue #582 — [Phase 1] Define held-out eval-case form…
don-petry Jun 14, 2026
1549f1c
feat: implement issue #691 — Held-out hygiene: dev/holdout eval split…
don-petry Jun 14, 2026
a2173e4
feat: implement issue #583 — deterministic eval scorer (triage) over …
don-petry Jun 14, 2026
c1577e4
feat: implement issue #382 — Enhance dev-lead and pr-review engines f…
don-petry Jun 15, 2026
a799888
feat: implement issue #547 — Compliance: secret_scan_ci_job_present (…
don-petry Jun 16, 2026
e25f3ed
feat: implement issue #143 — Compliance: secret_scanning_non_provider…
don-petry Jun 16, 2026
0ed1a8b
feat: implement issue #695 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 17, 2026
70c503b
feat: implement issue #796 — Compliance: non-stub-dependency-audit.ym…
don-petry Jun 19, 2026
8e20b2e
feat: implement issue #797 — Compliance: non-stub-dependabot-automerg…
don-petry Jun 19, 2026
0192de4
feat(dev-lead): retry failed initial issue implementations, never sil…
don-petry Jun 20, 2026
909496a
test(dogfood): comment-only touch to exercise downstream-impact on ne…
don-petry Jun 21, 2026
4ffc3ff
revert(dogfood): remove ci-status.sh dogfood comment + re-prove downs…
don-petry Jun 21, 2026
876a9a6
docs(release): document live dev-lead next/ring channels + staged-rol…
don-petry Jun 21, 2026
3f7a22e
Add MCP/Context7 connectivity assertion to daily PR-review health che…
don-petry Jun 22, 2026
6a110fe
Add scheduled PR review agent
Apr 8, 2026
6c1f8b4
Use Claude Code OAuth token instead of API key
Apr 9, 2026
29d2c36
Enforce single-PR scope and default to dry-run
Apr 9, 2026
a85c5e0
Add 3-model council + commit-SHA-aware iterative review
Apr 9, 2026
65ddad2
Upgrade maintainability lens from Haiku 4.5 to Sonnet 4.6
Apr 9, 2026
4f4e747
Go-live improvements for PR review agent (#2)
don-petry Apr 9, 2026
a400363
Add Claude delegation, auto-merge, and rebase handling (#3)
don-petry Apr 10, 2026
effce01
Optimize review: small-PR and incremental fast paths (#4)
don-petry Apr 10, 2026
67ad552
Add Claude Code workflow (#8)
don-petry Apr 16, 2026
1e34726
feat: add Copilot engine support via REVIEW_ENGINE toggle (#5)
don-petry Apr 16, 2026
1f0471e
feat: inline Claude Code workflow to access repo secrets directly (#9)
don-petry Apr 16, 2026
92bab79
feat: cross-engine adversarial rubber duck review (#11)
don-petry Apr 16, 2026
3b141ec
docs: clarify PR review batching issue
Apr 16, 2026
3a01b7e
fix: complete PR #10 fix - don't count no-ops toward MAX_PRS budget
Apr 16, 2026
cb8aafe
feat: CI gate + poll-loop rebase wait across all review prompts (#14)
don-petry Apr 18, 2026
38415d8
docs: update repo references from self to pr-review-agent
Apr 21, 2026
9860acb
feat: add car-hunt skill for used vehicle research and ranking
Apr 25, 2026
172a832
fix: fix FB Marketplace links, improve AutoTrader fetch, add Sheets e…
Apr 25, 2026
7825aa7
fix: add Craigslist as explicit source, enforce real-URL-only link rule
Apr 25, 2026
b453a72
fix: split zip/radius questions, rename MAX_MILES to MAX_ODOMETER
Apr 25, 2026
67bac30
fix: include self-authored PRs awaiting review in agent enumeration (…
don-petry Apr 25, 2026
9848cfb
feat: add doors/transmission fields, update-mode sheet, fix CarGurus/…
Apr 25, 2026
982da8b
feat: add hard disqualification filters for finance-speak, title issu…
Apr 25, 2026
5a22334
feat: add Distance to Car field using Nominatim geocoding + Haversine…
Apr 25, 2026
9643dc2
fix: address low result count — batch URL extraction, preview-filter …
Apr 25, 2026
f16e0a2
fix: make cascade-action prompt explicit about gh pr review --approve
Apr 25, 2026
d294e70
add: cleanup script to fix PRs with comment approvals instead of revi…
Apr 25, 2026
ff02718
fix: cleanup script now requires bot account token
Apr 25, 2026
b0c0b6e
add: workflow to fix stuck PRs using bot account token
Apr 25, 2026
531c762
fix: pass GH_PAT to checkout action so workflow uses bot account
Apr 25, 2026
1026541
debug: simplify account check, add authentication debug output
Apr 25, 2026
205c13e
docs: add comprehensive petry-review-bot setup instructions
Apr 25, 2026
1c3bb09
docs: add GitHub App setup guide (recommended approach)
Apr 26, 2026
4f76b02
docs: add comprehensive GitHub App setup documentation
Apr 26, 2026
d0e698e
fix: silence auth check in fix-stuck-prs when using GitHub App token
Apr 26, 2026
0e1fe4f
fix: use explicit author instead of @me in stuck PR search
Apr 26, 2026
00cf0ee
fix: avoid subshell in while loop to preserve variable state
Apr 26, 2026
7e0f87b
docs: add comprehensive status report for GitHub App setup
Apr 27, 2026
6b2cfda
docs: document stuck PR cleanup status and script fixes
Apr 28, 2026
542b012
fix: update list-prs.sh to search all repos by owner instead of @me
Apr 28, 2026
c9f81a1
docs: add investigation report for PR review agent workflow failures
Apr 28, 2026
8ffd74a
fix: move env section before steps in workflow to fix YAML structure
Apr 28, 2026
a97443d
script: add backfill-approvals to retroactively apply real approvals
Apr 28, 2026
596f09c
feat: add backfill-approvals workflow to run as GitHub App bot
Apr 28, 2026
543078b
fix: convert inner while loop to process substitution to preserve cou…
Apr 28, 2026
1c29859
car-hunt: add VIN-deep-dive flow, printable checklists, location-tier…
Apr 28, 2026
42387e0
fix: re-approve PRs where approval predates last commit (stale approval)
Apr 28, 2026
183f0aa
Enforce MAX_REVIEW_CYCLES cap before running the cascade (#18)
don-petry Apr 29, 2026
b87496f
Remove car-hunt skill and scheduled tasks (moved to don-petry/don-pet…
don-petry Apr 30, 2026
f8fbd44
fix: apply Copilot fallback hardening and reuse GH_PAT for Copilot auth
don-petry May 3, 2026
61d3acb
fix: switch Copilot engine to gh built-in and fix app-id deprecation
don-petry May 3, 2026
f60854c
fix: harden Copilot fallback path and remove stale worktrees (#25)
claude[bot] May 3, 2026
ff47a27
ci: add pre-flight dedup check to prevent duplicate claude-issue PRs …
don-petry May 3, 2026
fd3f342
refactor: migrate to machine user PAT auth (closes #27) (#28)
don-petry May 5, 2026
556bcdd
refactor: merge approval repair scripts into single automation
don-petry May 5, 2026
8508135
feat: add @mention trigger for on-demand PR reviews (#30)
don-petry May 6, 2026
99cfaf1
refactor: migrate to org-wide .github-private convention (#41)
don-petry May 7, 2026
2e8dcf0
ci: add dependabot-automerge.yml workflow (#73)
don-petry May 10, 2026
cf2f370
fix(pr-review): unblock queue starvation from self-authored PRs (#96)…
don-petry May 10, 2026
4ab0635
chore: rename GH_PAT_WORKFLOWS secret to DON_PETRY_BOT_GH_PAT (#99)
don-petry May 10, 2026
d5c935f
chore: remove frameworks directory (#101)
don-petry May 10, 2026
589d466
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
1395a28
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
a9c4e61
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
cb77168
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
5bb8521
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
1737288
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
e987832
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
4977e00
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
66aa993
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
f69235c
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
be1d3aa
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
4b2477c
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
23c3df6
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
9459739
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
e43b1ab
chore: deprecate pr-review-agent — remove all traces
don-petry May 11, 2026
4bb3e9c
revert: restore all erroneously deleted files (items 4-34) (#104)
don-petry May 11, 2026
b860fff
feat: add Gemini Pro support and optimize PR review fallback chain (#…
don-petry May 11, 2026
d610164
fix(claude): sync inlined workflow with org standard (#109)
don-petry May 11, 2026
9c9bde4
ci: replace inlined claude.yml with standard thin-caller stub
don-petry May 11, 2026
e7b595f
ci: pin dependabot-automerge reusable workflow to SHA (#130)
don-petry May 12, 2026
df9d960
feat: prioritise .github/.github-private PRs, oldest-first within tie…
don-petry May 13, 2026
c6c1c2c
fix: restore pr-review.yml content (accidentally emptied in revert)
don-petry May 13, 2026
dc4c163
fix: restore pr-review.yml (file was accidentally emptied)
don-petry May 13, 2026
3ffa22b
chore(deps): bump petry-projects/.github/.github/workflows/dependency…
dependabot[bot] May 13, 2026
6551584
chore(deps): bump petry-projects/.github/.github/workflows/claude-cod…
dependabot[bot] May 13, 2026
0190b17
chore(deps): bump petry-projects/.github/.github/workflows/dependabot…
dependabot[bot] May 13, 2026
6cf6bb5
chore(deps): bump petry-projects/.github/.github/workflows/dependabot…
dependabot[bot] May 14, 2026
b458e14
feat(prompts/dev-lead): add human prompt template
don-petry May 15, 2026
89438b3
feat(prompts/dev-lead): add human-pr prompt template
don-petry May 15, 2026
c7f98b4
feat(dev-lead): implement dev-lead agent Phases 0-6
don-petry May 15, 2026
bc9fe63
feat(dev-lead): Phase 1.5 — reusable workflow for cross-repo adoption…
don-petry May 15, 2026
ea7f4d0
fix(dev-lead): rate-limit detection, separate status, and retry cron …
don-petry May 16, 2026
f3058ca
fix(pr-review): handle Gemini trust-mode failure and properly route e…
don-petry May 17, 2026
e5d1ccd
fix: resolve YAML syntax error in dev-lead-reusable workflow
May 17, 2026
c0d0945
chore: remove Phase 7 shadow period comment from dev-lead.yml
don-petry May 17, 2026
76b055f
test: bypass CI check
May 17, 2026
957cb8a
fix(pr-review): remove CI bypass hack
May 17, 2026
32b1ed2
fix(dev-lead): use heredoc for multiline environment variables (#224)
don-petry May 17, 2026
f448bf1
fix(dev-lead): detect engine-committed changes and remove commit inst…
May 18, 2026
9f066c7
fix(dev-lead): address PR review findings — untracked files, upstream…
May 18, 2026
b3e3127
fix(pr-review): robust engine fallback and context optimization (#227)
don-petry May 18, 2026
ec08fd3
fix(dev-lead): handle SonarQube Quality Gate failures (issue #279) (#…
don-petry May 19, 2026
8ae842c
fix(dev-lead): configure git identity, surface commit/push failures, …
don-petry May 19, 2026
fa8c86f
fix(dev-lead): resolve review threads after fixing + notify CodeRabbi…
don-petry May 19, 2026
770a621
ci: add required ci.yml workflow
don-petry May 20, 2026
f824210
fix: address open review findings from PR #102 (#108)
don-petry May 20, 2026
44807e3
fix(ci): move shopt before yamllint call (fixes syntax error)
don-petry May 20, 2026
b4f916e
fix(dev-lead): configure git user identity in fix-issue script (#326)
don-petry May 20, 2026
c230ae5
feat: implement issue #232 — Phase 1: Issue Triage gh-aw workflow (#284)
don-petry May 20, 2026
f04d77b
style(ci): remove trailing blank line to fix yamllint recurring failure
don-petry May 20, 2026
e00d7c4
feat: implement issue #183 — Compliance: non-stub-claude.yml (#328)
don-petry May 20, 2026
0e8cb6f
feat: implement issue #135 — Compliance: unpinned-actions-claude.yml …
don-petry May 21, 2026
4b0240d
feat: token cost observatory — ET metric + JSONL logging (#334)
don-petry May 21, 2026
246005b
feat: implement issue #184 — Compliance: non-stub-dependency-audit.ym…
don-petry May 21, 2026
a386c10
chore(deps): bump petry-projects/.github/.github/workflows/dependency…
dependabot[bot] May 21, 2026
67d2395
feat(fleet-monitor): summarize token usage by workflow (#343)
don-petry May 21, 2026
905bcca
feat(dev-lead): harden agent instructions with Plan→TDD→Verify→Rubber…
don-petry May 23, 2026
41128ac
feat: implement issue #365 — dev-lead: preserve session output in Act…
don-petry May 23, 2026
4676deb
fix(dev-lead): visible no-changes comments, ACTOR strip, full secret …
don-petry May 23, 2026
c2a01c0
add: force-deploy-pr-review workflow for branch-protection bypass
Jun 3, 2026
95ca661
add: pr-review-reusable.yml wrapper for workflow_call pattern
Jun 4, 2026
1862307
fix: explicitly pass secrets in pr-review-reusable.yml workflow_call
Jun 4, 2026
aa532f9
feat: implement issue #425 — dev-lead: Incomplete issue resolution - …
don-petry Jun 4, 2026
980b9cf
debug: pr-review enumeration logging (#410)
don-petry Jun 4, 2026
18119bf
chore(deps): bump actions/checkout from 4 to 6 (#433)
dependabot[bot] Jun 4, 2026
8d51f7a
merge: PR #353 - PR Review Agent diagnostics and transient failure ha…
Jun 4, 2026
dd862e4
merge: PR #422 - Add deploy-pr-review.yml workflow for branch protect…
Jun 4, 2026
3efe686
fix(ci): strip trailing whitespace from deploy-pr-review workflows (#…
don-petry Jun 6, 2026
1f6d009
fix(dev-lead): auto-resolve outdated bot threads and treat unresolved…
don-petry Jun 6, 2026
a1fb931
feat(token-report): org-wide weekly Token Cost Observatory report (#456)
don-petry Jun 7, 2026
fb0444e
fix(token-metrics): key usage sidecar per-call, not by $$ (concurrenc…
don-petry Jun 7, 2026
2986daa
fix(engine): handle gemini quota exhaustion and capture stderr (#226)
don-petry Jun 8, 2026
8594422
feat: implement issue #396 — Compliance: non-stub-dependency-audit.ym…
don-petry Jun 8, 2026
b70953c
feat: implement issue #438 — Compliance: unpinned-actions-deploy-pr-r…
don-petry Jun 8, 2026
a2eb271
feat: implement issue #400 — petry-projects — workflow failures detec…
don-petry Jun 8, 2026
4877c46
feat: implement issue #404 — PR Review Agent — failures detected 2026…
don-petry Jun 8, 2026
c49a725
feat: implement issue #511 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 10, 2026
2cb2afb
feat: implement issue #272 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 10, 2026
0ca6301
feat: implement issue #512 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 10, 2026
910323b
feat: implement issue #140 — Compliance: non-stub-dependabot-automerg…
don-petry Jun 10, 2026
74a8abd
feat: implement issue #408 — petry-projects — workflow failures detec…
don-petry Jun 10, 2026
cad26a9
feat: implement issue #395 — Compliance: non-stub-dev-lead.yml (#488)
don-petry Jun 10, 2026
dd84e8f
chore: retire deploy-pr-review, force-deploy, and pr-review-reusable …
don-petry Jun 10, 2026
e4b2c26
feat: implement issue #545 — Compliance: non-stub-dependency-audit.ym…
don-petry Jun 10, 2026
190999f
feat: implement issue #195 — bug(dev-lead): engine.sh defines multi-t…
don-petry Jun 11, 2026
ff67875
chore(frameworks): vendor BMAD Method v6.8.0 + Test Architect v1.19.0…
don-petry Jun 11, 2026
8c09168
feat: implement issue #244 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 11, 2026
f1a7fb5
fix(engine): reorder cross-provider fallback to claude → copilot → ge…
don-petry Jun 12, 2026
2ebbccb
feat: implement issue #574 — pr-review: PRs with >300 changed files h…
don-petry Jun 12, 2026
f3392a3
chore(deps): bump the actions group across 1 directory with 8 updates…
dependabot[bot] Jun 13, 2026
24a0f5a
fix(initiative-planner): restore discussion→workflow_dispatch redispa…
don-petry Jun 13, 2026
b4495f0
feat: implement issue #582 — [Phase 1] Define held-out eval-case form…
don-petry Jun 14, 2026
fa1ffc9
feat: implement issue #691 — Held-out hygiene: dev/holdout eval split…
don-petry Jun 14, 2026
b6b3975
feat: implement issue #583 — deterministic eval scorer (triage) over …
don-petry Jun 14, 2026
48e5c81
feat: implement issue #382 — Enhance dev-lead and pr-review engines f…
don-petry Jun 15, 2026
ffb2929
feat: implement issue #547 — Compliance: secret_scan_ci_job_present (…
don-petry Jun 16, 2026
2d261c1
feat: implement issue #143 — Compliance: secret_scanning_non_provider…
don-petry Jun 16, 2026
d7dfda4
feat: implement issue #695 — [Fleet Monitor] petry-projects/.github-p…
don-petry Jun 17, 2026
3c266ea
feat: implement issue #796 — Compliance: non-stub-dependency-audit.ym…
don-petry Jun 19, 2026
8bda560
feat: implement issue #797 — Compliance: non-stub-dependabot-automerg…
don-petry Jun 19, 2026
bb3773c
feat(dev-lead): retry failed initial issue implementations, never sil…
don-petry Jun 20, 2026
d92696a
test(dogfood): comment-only touch to exercise downstream-impact on ne…
don-petry Jun 21, 2026
9ac0d52
revert(dogfood): remove ci-status.sh dogfood comment + re-prove downs…
don-petry Jun 21, 2026
916a94a
feat: implement issue #846 — [Phase 2] Cache the LSP index and enforc…
Jun 21, 2026
7b02277
fix(reviews): address review comments [skip ci-relay]
donpetry-bot Jun 21, 2026
8d383a6
chore: apply manual instructions [skip ci-relay]
donpetry-bot Jun 21, 2026
505ffd9
fix(bot): address bot feedback [skip ci-relay]
donpetry-bot Jun 21, 2026
006b9ae
resolve: replace lsp-verification with lsp-coldstart-sla approach [sk…
donpetry-bot Jun 21, 2026
c026a8f
fix: align token-metrics and token_report with PR intent [skip ci-relay]
donpetry-bot Jun 21, 2026
f3b931a
fix(bot): address bot feedback [skip ci-relay]
donpetry-bot Jun 21, 2026
6adec53
chore: apply manual instructions [skip ci-relay]
donpetry-bot Jun 21, 2026
d3c782c
fix(reviews): address review comments [skip ci-relay]
donpetry-bot Jun 21, 2026
ee76dea
fix(reviews): address review comments [skip ci-relay]
donpetry-bot Jun 21, 2026
798fbff
docs(lsp-pilot): update §2 to reflect actual implementation scope
donpetry-bot Jun 21, 2026
cfade83
chore: apply manual instructions [skip ci-relay]
donpetry-bot Jun 23, 2026
a2db1d5
Fix CI failures: remove duplicate documentation section and test defi…
Jun 23, 2026
aed1c80
feat: implement issue #903 — Add MCP/Context7 connectivity assertion …
don-petry Jun 23, 2026
edb4e14
fix: resolve session output persistence and duplicate function defini…
Jun 23, 2026
a350ed7
chore: reconcile rebase conflict resolutions
donpetry-bot Jun 23, 2026
e069a26
Merge branch 'main' into dev-lead/issue-846-20260621-0727
don-petry Jun 24, 2026
7cdccbb
Merge branch 'main' into dev-lead/issue-846-20260621-0727
don-petry Jun 25, 2026
ebb9a0e
fix(reviews): address review comments [skip ci-relay]
donpetry-bot Jun 25, 2026
d42a879
Merge branch 'main' into dev-lead/issue-846-20260621-0727
don-petry Jun 25, 2026
55e2cb0
fix(reviews): address review comments [skip ci-relay]
donpetry-bot Jun 25, 2026
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
1 change: 0 additions & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
version: 2
updates:
# GitHub Actions — version updates (keep actions current)
- package-ecosystem: "github-actions"
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/pr-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -367,12 +367,38 @@ jobs:
# threads the deep/audit-only MCP knobs into $GITHUB_ENV. A missing tool
# degrades gracefully (::warning:: + skip) — it never fails the workflow.
# Pins/candidate are overridable via repo variables; see docs/lsp-pilot.md.
#
# ── LSP index cache (epic #839, story #846, AC #1) ───────────────────
# Restore/save the LSP toolchain + index across ephemeral runs so a warm
# run skips re-indexing and stays inside the 30s P95 cold-start SLA. Keyed
# on runner OS + the pinned candidate/server versions + a hash of the
# indexed shell sources (the "relevant lockfile" for a Shell-only index):
# a source or version bump misses the exact key and rebuilds, while the
# restore-keys fallback still restores the binaries on a source-only
# change. Mirrors the Claude CLI binary cache pattern above and is
# SHA-pinned per the org standard (same actions/cache SHA as that step).
# Opt-in only (LSP_PILOT_ENABLED) — no cache work for off-pilot runs. The
# cache-hit outcome feeds setup-lsp-pilot.sh's cold-start instrumentation.
- name: Cache LSP index
id: lsp-index-cache
if: ${{ vars.LSP_PILOT_ENABLED == 'true' }}
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: |
~/.local
~/.cache/agent-lsp
key: lsp-index-${{ runner.os }}-${{ vars.LSP_CANDIDATE || 'agent-lsp' }}-${{ vars.AGENT_LSP_VERSION || 'v0.15.0' }}-bls${{ vars.BASH_LANGUAGE_SERVER_VERSION || '5.6.0' }}-${{ hashFiles('**/package-lock.json', 'scripts/**/*.sh') }}

- name: Set up LSP pilot servers (opt-in)
if: ${{ vars.LSP_PILOT_ENABLED == 'true' }}
env:
LSP_CANDIDATE: ${{ vars.LSP_CANDIDATE || 'agent-lsp' }}
AGENT_LSP_VERSION: ${{ vars.AGENT_LSP_VERSION || 'v0.15.0' }}
BASH_LANGUAGE_SERVER_VERSION: ${{ vars.BASH_LANGUAGE_SERVER_VERSION || '5.6.0' }}
# 'true' on an exact index-cache hit, 'false' otherwise (a miss or a
# restore-keys partial). setup-lsp-pilot.sh's cold-start record turns
# this into hit/miss so story #5 can report the cache hit-rate.
LSP_INDEX_CACHE_HIT: ${{ steps.lsp-index-cache.outputs.cache-hit == 'true' && 'true' || 'false' }}
run: bash scripts/setup-lsp-pilot.sh

- name: Enumerate candidate PRs
Expand Down
33 changes: 15 additions & 18 deletions docs/lsp-pilot.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,19 @@ see §2).

## 2. In-scope vs out-of-scope agent actions

**In scope — finding-verification in the deep/audit tiers.** LSP is used as a
*grounding/verification* step: before the reviewer posts a cross-file claim, it confirms the
claim against real semantic context via:
**In scope — LSP cold-start instrumentation and auto-skip in the deep/audit tiers.** This
pilot phases in LSP by first establishing the cold-start infrastructure (timing, caching,
and graceful degradation) so the agent can measure feasibility:

- **find-references** (`textDocument/references`) — confirm "this breaks N callers" /
"this symbol is unused" against the actual reference set, not a textual `grep` match.
- **diagnostics** (`textDocument/publishDiagnostics`) — confirm "this is undefined / this is
a type or syntax error" against the language server's own diagnostics.
- **Cold-start SLA** — baseline cold-start time for the server's bring-up (target ≤30s P95).
- **Index caching** — cache the language index across runs so only the first CI run (or after
source changes) incurs cold-start.
- **Auto-skip on SLA miss** — if cold-start exceeds the SLA, gracefully skip LSP (warn, never
fail) and proceed with the review on base capabilities.

This directly attacks the false-positive problem (textual `grep` matches a name in a string
or comment; LSP resolves the *semantic* reference), which is what erodes trust in an
auto-approving reviewer.
Finding-verification (references, diagnostics) is considered as a *future* enhancement
(epic Phase 2, [#843](https://github.com/petry-projects/.github-private/issues/843))
once cold-start is established as viable.

**Explicitly OUT of scope for this pilot:**

Expand Down Expand Up @@ -215,7 +216,8 @@ rebuild the gating, the graceful-degradation path, or the Token Cost Observatory
`--mcp-config <file> --strict-mcp-config` and the merged `--allowed-tools` into the
agentic tiers (`run_agentic` — deep/audit) and the rubber-duck tier (`run_duck`) via
`REVIEW_MCP_CONFIG` / `REVIEW_MCP_ALLOWED_TOOLS`; the fast triage tier is intentionally
excluded. This pilot scopes LSP *use* to the deep/audit finding-verification surface (§2).
excluded. This pilot scopes LSP *use* to cold-start instrumentation in the deep/audit
tiers (§2); finding-verification is deferred to Phase 2 (epic #843).
The LSP server is added as another entry in the same MCP config and its tools as another
`REVIEW_MCP_ALLOWED_TOOLS` glob. See
[`docs/initiatives/mcp-powered-review.md`](./initiatives/mcp-powered-review.md) §3 for the
Expand All @@ -226,13 +228,8 @@ rebuild the gating, the graceful-degradation path, or the Token Cost Observatory
into a single `::warning::[mcp]` annotation while the review completes on base
capabilities. The §3 SLA auto-skip is layered on top of this, not a parallel mechanism.
See [`docs/initiatives/mcp-powered-review.md`](./initiatives/mcp-powered-review.md) §4.
- **What is genuinely new in this initiative:** (a) the cold-start SLA + index-caching +
auto-skip on the LSP server's launch budget (#846), and (b) the finding-verification step
that calls find-references / diagnostics before posting a cross-file finding (#843 —
shipped: the deep/audit prompts ask the model to annotate each grounded finding with
`lsp_verification`, and [`scripts/lib/lsp-verification.sh`](../scripts/lib/lsp-verification.sh)
enforces it — downgrading + annotating `unverifiable` findings and emitting each outcome to
the Token Cost Observatory JSONL. It is inert when LSP is unwired or degraded).
- **What is genuinely new in this initiative:** the cold-start SLA + index-caching +
auto-skip on the LSP server's launch budget (#846).

---

Expand Down
26 changes: 1 addition & 25 deletions prompts/deep-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,26 +66,6 @@ enumeration. No actions on other PRs.
review because MCP was unavailable, and never fabricate a scan result.
6. Fetch linked issues if any.
7. Check `statusCheckRollup` for CI status.
8. **LSP finding-verification (only when the `mcp__lsp__*` navigation tools are
available).** These tools are exposed only when the LSP pilot is enabled; if
they are not present, skip this step entirely and review as usual. When they
are present, before you report any finding that makes a **cross-file or
semantic claim** — e.g. "X is undefined", "this breaks N callers", "this
symbol is unused", "this is a type/syntax error" — ground the claim against
real semantic context instead of a textual `grep` match:
- use `mcp__lsp__find_references` to confirm a "breaks N callers" / "unused
symbol" claim against the actual reference set;
- use `mcp__lsp__get_diagnostics` to confirm an "undefined" / "type or syntax
error" claim against the language server's own diagnostics.
Then annotate that finding with an `"lsp_verification"` field:
- `"verified"` — LSP confirmed the claim;
- `"unverifiable"` — LSP could not ground the claim. **Do not drop it and do
not post it as confident**: lower its `severity` one level; the
verification step also tags it `[lsp: unverifiable]` so the outcome is
auditable.
Findings that make no cross-file/semantic claim (style, docs, etc.) need no
`lsp_verification` field. Never fail or block a review because an LSP tool was
unavailable, and never fabricate a verification result.

## Risk classification

Expand Down Expand Up @@ -133,14 +113,10 @@ Write a JSON object to `$OUTPUT_FILE`:
"category": "...",
"message": "...",
"file": "path or null",
"line": "number or null",
"lsp_verification": "verified|unverifiable (OMIT unless step 8 applied)"
"line": "number or null"
}
]
}
```

Include `lsp_verification` **only** on a finding you grounded via the LSP tools
in step 8 (`verified` or `unverifiable`); omit it otherwise.

Write with `cat > "$OUTPUT_FILE" <<'JSON' ... JSON`. Ensure it parses with `jq`.
21 changes: 1 addition & 20 deletions prompts/security-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,21 +34,6 @@ reviewer, called only for PRs with real concerns.
4. Fetch linked issues if any.
5. Read any CONTRIBUTING.md, AGENTS.md, CODEOWNERS in the repo to check
standards compliance (fetch via `gh api`).
6. **LSP finding-verification (only when the `mcp__lsp__*` navigation tools are
available).** These tools are exposed only when the LSP pilot is enabled; if
they are not present, skip this step entirely and audit as usual. When they
are present, before you report any finding that makes a **cross-file or
semantic claim** — e.g. "X is undefined", "this breaks N callers", "this
symbol is unused", "this is a type/syntax error" — ground it against real
semantic context with `mcp__lsp__find_references` (reference set) or
`mcp__lsp__get_diagnostics` (language-server diagnostics) rather than a textual
`grep` match. Annotate that finding with an `"lsp_verification"` field:
`"verified"` if LSP confirmed it, or `"unverifiable"` if LSP could not ground
it — and for `unverifiable` lower its `severity` one level rather than dropping
it (the verification step also tags it `[lsp: unverifiable]` so the outcome is
auditable). Findings with no cross-file/semantic claim need no field. Never
fail the audit because an LSP tool was unavailable, and never fabricate a
verification result.

## Your focus

Expand Down Expand Up @@ -86,16 +71,12 @@ Write a JSON object to `$OUTPUT_FILE`:
"category": "...",
"message": "...",
"file": "path or null",
"line": "number or null",
"lsp_verification": "verified|unverifiable (OMIT unless step 6 applied)"
"line": "number or null"
}
],
"sonnet_findings_confirmed": ["<indices of deep review findings you agree with>"],
"sonnet_findings_dismissed": ["<indices you disagree with, with reason>"]
}
```

Include `lsp_verification` **only** on a finding you grounded via the LSP tools
in step 6 (`verified` or `unverifiable`); omit it otherwise.

Write with `cat > "$OUTPUT_FILE" <<'JSON' ... JSON`. Ensure it parses with `jq`.
Loading
Loading