Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
236 commits
Select commit Hold shift + click to select a range
1926087
Initial commit
don-petry Mar 21, 2026
06ab45c
Install BMad Method v6.2.0 with Claude Code integration
claude Mar 21, 2026
4d595e7
fix: configure CodeQL to scan Python only (#6)
don-petry Mar 24, 2026
c645167
chore: add ECC integration, TEA module, and slim CLAUDE.md
Mar 26, 2026
81ec4ad
Add Claude Code GitHub Action (#15)
don-petry Mar 27, 2026
e37105b
fix: address OpenSSF Scorecard findings (#22)
don-petry Mar 28, 2026
541bda5
chore(deps): bump github/codeql-action from 3.35.1 to 4.35.1 (#27)
dependabot[bot] Apr 1, 2026
86ecf21
chore(deps): bump actions/checkout from 4.3.1 to 6.0.2 (#24)
dependabot[bot] Apr 1, 2026
1828fb9
ci: skip Claude Code reviewer on Dependabot PRs (#28)
don-petry Apr 1, 2026
9c0e024
ci: move Dependabot exclusion to step-level in Claude workflow (#30)
don-petry Apr 1, 2026
585e188
chore(deps): bump anthropics/claude-code-action from 1.0.80 to 1.0.82…
dependabot[bot] Apr 1, 2026
d5deadd
chore(deps): bump anthropics/claude-code-action from 1.0.83 to 1.0.88…
dependabot[bot] Apr 4, 2026
ac2963d
chore: enable Claude issue trigger per org CI standard (#48)
don-petry Apr 5, 2026
0a7463d
fix: add checkout step to Claude workflow for issue-triggered mode (#49)
don-petry Apr 5, 2026
a66eb89
feat: split Claude workflow into interactive + issue automation jobs …
don-petry Apr 6, 2026
15c8562
feat: switch to org-level reusable Claude Code workflow (#62)
don-petry Apr 6, 2026
aa52e2c
chore: add CODEOWNERS file for code review enforcement
github-actions[bot] Apr 6, 2026
3ce87db
fix: rename codeql workflow and add javascript-typescript + actions m…
don-petry Apr 8, 2026
c9a52df
chore(workflows): adopt centralized stubs from petry-projects/.github…
don-petry Apr 8, 2026
b48f721
fix: correct reusable workflow path (remove duplicate .github/) (#135)
don-petry Apr 21, 2026
99042a9
Revert "fix: correct reusable workflow path (remove duplicate .github…
Apr 21, 2026
35e7f32
ci: add auto-rebase workflow and check_run trigger to claude.yml
don-petry Apr 21, 2026
86ff7f2
chore(ci): remove stray codeql.yml workflow (#115)
don-petry Apr 26, 2026
3540720
chore(security): remove drift codeql.yml, enable GitHub-managed defau…
don-petry Apr 26, 2026
dc37206
fix(ci): pin agent-shield reusable workflow to SHA (#126)
don-petry Apr 26, 2026
d20eda9
chore: add bot accounts to CODEOWNERS for auto-merge support
don-petry May 3, 2026
f414e2b
chore: standardize CODEOWNERS on @petry-projects/org-leads (#160)
don-petry May 4, 2026
d8b4ecd
chore(dev-lead): remove claude.yml — replaced by dev-lead.yml (#176)
don-petry May 16, 2026
8cb69ac
feat: implement issue #162 — Compliance: codeowners-no-catchall (#182)
don-petry May 20, 2026
758c675
feat: implement issue #175 — Compliance: non-stub-pr-review-mention.y…
don-petry May 21, 2026
1369a20
feat: implement issue #161 — Compliance: codeowners-org-leads-not-fir…
don-petry May 21, 2026
4133ed5
fix: make copilot setup workflow docs-only for current TalkTerm main
don-petry May 21, 2026
056e914
feat: implement issue #86 — Compliance: unpinned-actions-claude.yml (…
don-petry May 21, 2026
5d79226
feat: implement issue #198 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry May 21, 2026
6e2c451
feat: implement issue #217 — Compliance: codeowners-org-leads-not-fir…
don-petry Jun 20, 2026
a2f9078
feat: implement issue #204 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 20, 2026
927a7c4
feat: implement issue #285 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 23, 2026
9f615aa
fix(pr-review): use moving @pr-review/stable tag (stop Dependabot ver…
don-petry Jun 28, 2026
b8c0559
ci: inline NOSONAR(S7637) markers on first-party caller stubs (#549 c…
don-petry Jun 30, 2026
01447f7
ci(#651): repin add-to-project → @add-to-project/ring1 (#354)
don-petry Jul 11, 2026
dc83bf3
ci: migrate pr-auto-review → @pr-auto-review/ring1 (canary) (#355)
don-petry Jul 11, 2026
d4cd5ed
chore: sync 8 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 13, 2026
7aede49
chore: major-scope repin self-consumer stubs [#657 F5] (#359)
don-petry Jul 14, 2026
a763f5a
feat: implement issue #375 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jul 18, 2026
681f6c8
feat: implement issue #372 — Compliance: stub-surface-drift-pr-auto-r…
don-petry Jul 20, 2026
a7b648e
feat: implement issue #368 — Compliance: ruleset-drift-pr-quality-all…
don-petry Jul 20, 2026
d01428b
feat: implement issue #369 — Compliance: dev-lead-stub-pin (#391)
don-petry Jul 20, 2026
b6d8f1b
feat: implement issue #370 — Compliance: dev-lead-stub-agent-ref (#395)
don-petry Jul 21, 2026
60cb30f
chore: sync 2 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 21, 2026
4024326
chore: sync 1 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 22, 2026
aac6e5b
chore: sync 2 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 22, 2026
dc9393d
feat: implement issue #349 — SonarCloud: shell script hygiene (#396)
don-petry Aug 2, 2026
4265960
feat: implement issue #406 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 2, 2026
7592396
feat: implement issue #371 — Compliance: stub-surface-drift-feature-i…
don-petry Aug 2, 2026
a905672
Initial commit
don-petry Mar 21, 2026
bbe8ef2
Install BMad Method v6.2.0 with Claude Code integration
claude Mar 21, 2026
14dc2ec
Add TalkTerm Product Requirements Document
don-petry Mar 21, 2026
5be462d
Enhance PRD v1.1 with multi-agent review findings
Mar 21, 2026
f41c930
chore: add Dependabot with auto-merge via GitHub App (#3)
don-petry Mar 23, 2026
ca58214
Add UX design spec, architecture, research, and Figma screen mockups
Mar 23, 2026
fc603e0
Enhance UX designs with workspace selection, contextual writeback, pr…
Mar 24, 2026
8c3c754
Address PR review: fix contradictions, remove capture scripts, fix JS…
Mar 24, 2026
e720809
fix: configure CodeQL to scan Python only (#6)
don-petry Mar 24, 2026
57eb476
Add comprehensive story files for all 12 epics (45 stories)
Mar 24, 2026
5de35ef
Address PR review: fix FR references, story count, and installer term…
Mar 25, 2026
272e217
chore: add CodeRabbit config for AI-powered PR reviews (#11)
don-petry Mar 26, 2026
4c78eb1
chore: enable SonarCloud code quality analysis (#10)
don-petry Mar 26, 2026
a7a2453
chore: add ECC integration, TEA module, and slim CLAUDE.md
Mar 26, 2026
d18f979
fix: address PR review comments and SonarCloud exclusions
Mar 26, 2026
de9a725
chore: refine CodeRabbit config to exclude non-code directories (#13)
don-petry Mar 26, 2026
5135a2e
Add Claude Code GitHub Action (#15)
don-petry Mar 27, 2026
c5536bb
fix: address OpenSSF Scorecard findings (#22)
don-petry Mar 28, 2026
63e3f9f
chore(deps): bump github/codeql-action from 3.35.1 to 4.35.1 (#27)
dependabot[bot] Apr 1, 2026
78e5da2
chore(deps): bump SonarSource/sonarqube-scan-action from 6.0.0 to 7.0…
dependabot[bot] Apr 1, 2026
ec52ade
chore(deps): bump actions/checkout from 4.3.1 to 6.0.2 (#24)
dependabot[bot] Apr 1, 2026
fe92903
ci: skip Claude Code reviewer on Dependabot PRs (#28)
don-petry Apr 1, 2026
705d23f
ci: move Dependabot exclusion to step-level in Claude workflow (#30)
don-petry Apr 1, 2026
4f2d816
chore(deps): bump anthropics/claude-code-action from 1.0.80 to 1.0.82…
dependabot[bot] Apr 1, 2026
e1a14df
chore: add Dependabot security-only update config (#32)
don-petry Apr 4, 2026
b0d30ce
chore(deps): bump anthropics/claude-code-action from 1.0.83 to 1.0.88…
dependabot[bot] Apr 4, 2026
66fc3e4
chore(deps): bump SonarSource/sonarqube-scan-action from 7.0.0 to 7.1…
dependabot[bot] Apr 4, 2026
2d82d40
chore: enable Claude issue trigger per org CI standard (#48)
don-petry Apr 5, 2026
baee51d
fix: add checkout step to Claude workflow for issue-triggered mode (#49)
don-petry Apr 5, 2026
2a09bd9
feat: add dependabot update-and-merge workflow (#54)
don-petry Apr 6, 2026
5eee67d
feat: split Claude workflow into interactive + issue automation jobs …
don-petry Apr 6, 2026
412b908
feat: switch to org-level reusable Claude Code workflow (#62)
don-petry Apr 6, 2026
27cbb8a
feat: add BMAD Analyst feature ideation workflow (#60)
don-petry Apr 6, 2026
e90d3d3
debug: enable display_report and show_full_output for test run
Apr 6, 2026
8d0fae1
chore: add CODEOWNERS file for code review enforcement
github-actions[bot] Apr 6, 2026
98ff25a
fix: use workflow GITHUB_TOKEN so discussions:write permission applies
Apr 6, 2026
388d8e5
refactor: use org-wide reusable feature-ideation workflow (#68)
don-petry Apr 7, 2026
451e2f5
fix: sync dependency-audit.yml with org template (closes #42) (#80)
don-petry Apr 8, 2026
c861e1b
fix: rename codeql workflow and add javascript-typescript + actions m…
don-petry Apr 8, 2026
e69aa05
ci: add agent-shield.yml workflow (#78)
don-petry Apr 8, 2026
0691687
chore(workflows): adopt centralized stubs from petry-projects/.github…
don-petry Apr 8, 2026
8e9e61e
fix: correct reusable workflow path (remove duplicate .github/) (#135)
don-petry Apr 21, 2026
3965e93
Revert "fix: correct reusable workflow path (remove duplicate .github…
Apr 21, 2026
48104a2
ci: add auto-rebase workflow and check_run trigger to claude.yml
don-petry Apr 21, 2026
f2ce7ff
fix: update auto-rebase ref to SHA containing the reusable workflow
don-petry Apr 21, 2026
8861f1c
fix: pin auto-rebase.yml to canonical @v1 stub per org standard (#139)
don-petry Apr 25, 2026
8601073
chore(ci): remove stray codeql.yml workflow (#115)
don-petry Apr 26, 2026
38eb79d
fix(compliance): add CI secret-scan job and org .gitignore baseline (…
don-petry Apr 26, 2026
ffa8d47
chore(security): remove drift codeql.yml, enable GitHub-managed defau…
don-petry Apr 26, 2026
4987fd6
fix(ci): align dependabot-rebase with org standard + confirm allow_au…
don-petry Apr 26, 2026
46eb90b
fix(ci): pin dependency-audit reusable workflow to SHA (#120)
don-petry Apr 26, 2026
b046f89
fix(ci): pin feature-ideation reusable workflow to SHA (#122)
don-petry Apr 26, 2026
37808cc
fix(ci): pin agent-shield reusable workflow to SHA (#123)
don-petry Apr 26, 2026
1a32bcb
fix(ci): pin agent-shield reusable workflow to SHA (#126)
don-petry Apr 26, 2026
ea85c8e
chore: add bot accounts to CODEOWNERS for auto-merge support
don-petry May 3, 2026
37ecaff
chore: standardize CODEOWNERS on @petry-projects/org-leads (#160)
don-petry May 4, 2026
cfd2d02
chore(deps): bump SonarSource/sonarqube-scan-action from 7.1.0 to 8.0…
dependabot[bot] May 7, 2026
fa7aa3f
chore(deps): bump petry-projects/.github/.github/workflows/dependency…
dependabot[bot] May 7, 2026
5f862bc
chore(deps): bump petry-projects/.github/.github/workflows/agent-shie…
dependabot[bot] May 7, 2026
9e80f94
chore(deps): bump petry-projects/.github/.github/workflows/feature-id…
dependabot[bot] May 7, 2026
36bca0b
chore: sync org-standard pr-review-mention.yml stub from petry-projec…
don-petry May 11, 2026
352c572
fix: pin pr-review-mention reusable to SHA d3d768d (#173)
don-petry May 13, 2026
92c3764
feat(dev-lead): adopt dev-lead agent (Phase 8 cross-repo rollout)
don-petry May 15, 2026
6b2a371
chore(dev-lead): remove claude.yml — replaced by dev-lead.yml (#176)
don-petry May 16, 2026
aedf862
chore: sync org-standard pr-review-mention.yml stub from petry-projec…
don-petry May 19, 2026
f49bdfa
chore: sync org-standard pr-review-mention.yml stub from petry-projec…
don-petry May 19, 2026
cbfad23
feat: implement issue #171 — Compliance: secret_scanning_ai_detection…
don-petry May 20, 2026
2b7c4ef
feat: implement issue #162 — Compliance: codeowners-no-catchall (#182)
don-petry May 20, 2026
3237128
feat: implement issue #174 — Compliance: unpinned-actions-dev-lead.ym…
don-petry May 20, 2026
0d28603
feat: implement issue #172 — Compliance: secret_scanning_non_provider…
don-petry May 21, 2026
010da8e
feat: implement issue #175 — Compliance: non-stub-pr-review-mention.y…
don-petry May 21, 2026
c3ae67e
feat: implement issue #148 — Compliance: non-stub-dependency-audit.ym…
don-petry May 21, 2026
6885728
feat: implement issue #144 — Compliance: unpinned-actions-auto-rebase…
don-petry May 21, 2026
a827e4c
feat: implement issue #150 — Compliance: non-stub-agent-shield.yml (#…
don-petry May 21, 2026
81dce1a
feat: implement issue #88 — Compliance: unpinned-actions-dependabot-r…
don-petry May 21, 2026
c3a7f2c
feat: implement issue #151 — Compliance: non-stub-feature-ideation.ym…
don-petry May 21, 2026
e539ade
feat: implement issue #161 — Compliance: codeowners-org-leads-not-fir…
don-petry May 21, 2026
a6b62ef
feat: add copilot-setup-steps.yml for Copilot cloud agent
don-petry May 21, 2026
8843a53
fix: correct fork guard and instructions dir check in copilot-setup-s…
don-petry May 21, 2026
672b293
fix: make copilot setup workflow docs-only for current TalkTerm main
don-petry May 21, 2026
114ad7d
feat: implement issue #200 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry May 21, 2026
d307a16
feat: implement issue #86 — Compliance: unpinned-actions-claude.yml (…
don-petry May 21, 2026
3c689a3
feat: implement issue #198 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry May 21, 2026
b5c93bf
feat: implement issue #163 — Compliance: check-suite-auto-trigger-123…
don-petry May 21, 2026
1f4daa7
CI Failure Analyst: Add automated diagnostics (#214)
don-petry May 23, 2026
298107b
rollout: deploy pr-review-mention standard workflow (#236)
don-petry May 31, 2026
bf05b19
feat: add pr-auto-review.yml workflow (compliance automation Phase 2)
don-petry Jun 1, 2026
97cab44
deploy: add pr-review.yml workflow
don-petry Jun 3, 2026
852f320
fix: explicitly map all secrets in pr-review thin stub
don-petry Jun 4, 2026
b078ae8
fix(dev-lead): align to @main — drop broken concurrency + grant statu…
don-petry Jun 8, 2026
4017797
chore: sync org-standard add-to-project.yml stub from petry-projects/…
don-petry Jun 18, 2026
cd0b2b3
chore(deps): bump gitleaks/gitleaks-action from 2.3.9 to 3.0.0 (#238)
dependabot[bot] Jun 20, 2026
f438f10
feat: implement issue #272 — Compliance: dev-lead-stub-pin (#297)
don-petry Jun 20, 2026
68e9e8f
ci(dev-lead): enable dev-lead-issue-retry dispatch type (#781) (#301)
don-petry Jun 20, 2026
f6b5714
feat: implement issue #217 — Compliance: codeowners-org-leads-not-fir…
don-petry Jun 20, 2026
25785e4
feat: implement issue #220 — Compliance: non-stub-auto-rebase.yml (#303)
don-petry Jun 20, 2026
fbda74b
feat: implement issue #296 — Compliance: check-suite-prefs-unreadable…
don-petry Jun 20, 2026
99dd506
feat: implement issue #274 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 20, 2026
93abadb
feat: implement issue #207 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 20, 2026
62cf9e2
feat: implement issue #239 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 20, 2026
94a795b
feat: implement issue #199 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 20, 2026
913b847
feat: implement issue #204 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 20, 2026
764d9e4
chore: sync 6 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jun 20, 2026
d3982a8
chore(deps): bump SonarSource/sonarqube-scan-action from 8.0.0 to 8.1…
dependabot[bot] Jun 20, 2026
0ed5e35
chore(deps): bump petry-projects/.github/.github/workflows/feature-id…
dependabot[bot] Jun 20, 2026
a261261
ci(dev-lead): pin caller to @dev-lead/ring1 (staged canary) (#306)
don-petry Jun 21, 2026
66a93f5
fix(pr-review): bump TalkTerm caller pin from v1.5.5 to pr-review/sta…
don-petry Jun 22, 2026
59fadb0
feat: implement issue #226 — Compliance: check-suite-auto-trigger-123…
don-petry Jun 22, 2026
402d104
feat: implement issue #219 — Compliance: non-stub-dev-lead.yml (#258)
don-petry Jun 22, 2026
8de4a1b
feat: implement issue #227 — Compliance: check-suite-auto-trigger-347…
don-petry Jun 22, 2026
f75feb3
chore(deps): bump petry-projects/.github-private/.github/workflows/ci…
dependabot[bot] Jun 22, 2026
77f086b
chore(deps): bump SonarSource/sonarqube-scan-action from 8.1.0 to 8.2…
dependabot[bot] Jun 22, 2026
2c36f8c
chore(deps): bump petry-projects/.github/.github/workflows/feature-id…
dependabot[bot] Jun 22, 2026
2163062
chore(deps): bump petry-projects/.github-private/.github/workflows/pr…
dependabot[bot] Jun 23, 2026
9629892
chore(deps): bump petry-projects/.github/.github/workflows/agent-shie…
dependabot[bot] Jun 23, 2026
5969210
chore(deps): bump petry-projects/.github/.github/workflows/dependency…
dependabot[bot] Jun 23, 2026
bfcb9cc
feat: implement issue #285 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 23, 2026
a07c43c
feat: implement issue #314 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jun 24, 2026
c6dc473
chore: repin centralized stubs to ring1 ring channel (#870) (#316)
don-petry Jun 25, 2026
633ea18
chore: repin dev-lead stub to dev-lead/stable channel (#482) (#319)
don-petry Jun 25, 2026
15423b2
fix(pr-review): use moving @pr-review/stable tag (stop Dependabot ver…
don-petry Jun 28, 2026
b7f1ac9
ci: inline NOSONAR(S7637) markers on first-party caller stubs (#549 c…
don-petry Jun 30, 2026
6d98d98
chore(deps): bump petry-projects/.github/.github/workflows/feature-id…
dependabot[bot] Jun 30, 2026
088ac47
chore: enroll TalkTerm in idea→initiative pipeline (ring1) (#331)
don-petry Jun 30, 2026
5f32569
chore(deps): bump petry-projects/.github-private/.github/workflows/ci…
dependabot[bot] Jun 30, 2026
e8d659c
chore: re-sync initiative stubs to S7635 inline marker (post .github#…
don-petry Jul 1, 2026
da89c43
feat: implement issue #222 — Compliance: non-stub-feature-ideation.ym…
don-petry Jul 2, 2026
a9daa1e
feat: implement issue #340 — Compliance: non-stub-feature-ideation.ym…
don-petry Jul 3, 2026
7d13e63
feat: implement issue #343 — SonarCloud: misc cleanup (mixed findings…
don-petry Jul 3, 2026
c664081
feat: implement issue #342 — SonarCloud: shell script hygiene cleanup…
don-petry Jul 3, 2026
4d09de0
ci: repin ci-failure-analyst → @ci-failure-analyst/stable (#1159) (#352)
don-petry Jul 11, 2026
2bdc8fa
chore(deps): bump petry-projects/.github/.github/workflows/feature-id…
dependabot[bot] Jul 11, 2026
17563da
ci(#614): repin feature-ideation onto ring channels (#353)
don-petry Jul 11, 2026
84ced76
ci(#651): repin add-to-project → @add-to-project/ring1 (#354)
don-petry Jul 11, 2026
50d4d2e
ci: migrate pr-auto-review → @pr-auto-review/ring1 (canary) (#355)
don-petry Jul 11, 2026
b2c3b48
chore: sync 8 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 13, 2026
d122326
chore: major-scope repin self-consumer stubs [#657 F5] (#359)
don-petry Jul 14, 2026
1e1ebf8
fix: re-pin agent_ref inputs to v-form (missed by #657 uses:-only re-…
don-petry Jul 14, 2026
ddb4bad
ci: inline NOSONAR(S7635) markers on secrets:inherit caller stubs (#362)
don-petry Jul 14, 2026
2996274
feat: implement issue #374 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jul 18, 2026
d02caad
feat: implement issue #375 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jul 18, 2026
b45a9f9
feat: implement issue #380 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jul 19, 2026
4528eda
feat: implement issue #378 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jul 19, 2026
370ef37
chore: insert org secrets baseline in .gitignore (#387)
don-petry Jul 20, 2026
53f2a8d
feat: implement issue #372 — Compliance: stub-surface-drift-pr-auto-r…
don-petry Jul 20, 2026
a2d8ef5
feat: implement issue #368 — Compliance: ruleset-drift-pr-quality-all…
don-petry Jul 20, 2026
d88c52a
chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0 (#389)
dependabot[bot] Jul 20, 2026
c9b49ae
chore(deps): bump SonarSource/sonarqube-scan-action from 8.2.0 to 8.2…
dependabot[bot] Jul 20, 2026
e872f93
feat: implement issue #369 — Compliance: dev-lead-stub-pin (#391)
don-petry Jul 20, 2026
fcfe500
feat: implement issue #370 — Compliance: dev-lead-stub-agent-ref (#395)
don-petry Jul 21, 2026
187aee3
chore: sync 2 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 21, 2026
4368d7d
chore: sync 1 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 22, 2026
332f7f1
feat: implement issue #401 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Jul 22, 2026
9dbeed1
chore: sync 2 org-standard workflow stub(s) from petry-projects/.gith…
don-petry Jul 22, 2026
4eab208
feat: implement issue #412 — Compliance: ci-concurrency-missing-sha (…
don-petry Jul 24, 2026
4d3506d
feat: implement issue #385 — Migrate pr-review.yml caller to `secrets…
don-petry Aug 2, 2026
d173f1a
feat: implement issue #349 — SonarCloud: shell script hygiene (#396)
don-petry Aug 2, 2026
ab01802
feat: implement issue #406 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 2, 2026
bdbef74
feat: implement issue #371 — Compliance: stub-surface-drift-feature-i…
don-petry Aug 2, 2026
3f1c2e1
feat: implement issue #430 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 13, 2026
2b93151
chore(deps): bump actions/setup-java from 5.2.0 to 5.7.0 (#419)
dependabot[bot] Aug 13, 2026
931193c
feat: implement issue #425 — Compliance: ruleset-drift-pr-quality-req…
don-petry Aug 18, 2026
39c8d09
feat: implement issue #424 — Compliance: ruleset-drift-pr-quality-dis…
don-petry Aug 18, 2026
c118079
feat: implement issue #428 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 18, 2026
6b10e99
feat: implement issue #436 — SonarCloud: shell script hygiene (#437)
don-petry Aug 18, 2026
b79d23d
feat: implement issue #438 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 19, 2026
abdb53b
feat: implement issue #439 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 19, 2026
f8648a3
feat: implement issue #445 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 20, 2026
0f24c66
feat: implement issue #447 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 21, 2026
9d34afc
feat: implement issue #466 — [Fleet Monitor] petry-projects/TalkTerm …
donpetry-bot Aug 31, 2026
1bd4b67
feat: implement issue #453 — Compliance: ruleset-drift-pr-quality-dis…
don-petry Aug 31, 2026
560674a
chore(deps): bump actions/setup-java from 5.7.0 to 6.0.0 (#460)
dependabot[bot] Aug 31, 2026
4ba2c3e
feat: implement issue #465 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Aug 31, 2026
dd30cd5
chore: dev-lead update (review-changes) [skip ci-relay]
donpetry-bot Aug 31, 2026
f9572aa
feat: implement issue #470 — [Fleet Monitor] petry-projects/TalkTerm …
don-petry Sep 1, 2026
3f71999
fix(security): add gitleaks ignore entries for commit 63094bda
donpetry-bot Sep 1, 2026
93132ed
Merge branch 'main' into dev-lead/issue-466-20260831-1422
don-petry Sep 4, 2026
7ec7a51
fix(bot): address bot feedback [skip ci-relay]
donpetry-bot Sep 4, 2026
3a4e661
Merge branch 'main' into dev-lead/issue-466-20260831-1422
don-petry Sep 5, 2026
d2d2ef0
Merge branch 'main' into dev-lead/issue-466-20260831-1422
don-petry Sep 6, 2026
7a322e0
Merge branch 'main' into dev-lead/issue-466-20260831-1422
don-petry Sep 7, 2026
88d283e
Merge branch 'main' into dev-lead/issue-466-20260831-1422
don-petry Sep 8, 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
3 changes: 1 addition & 2 deletions .github/workflows/apply-repo-settings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
# compliance audits. Also triggerable manually for out-of-band remediation.
# Reconciles: security_and_analysis settings (secret_scanning_ai_detection, etc.),
# check-suite auto-trigger preferences, and the pr-quality ruleset's
# allowed_merge_methods (squash-only), dismiss_stale_reviews_on_push (true), and
# require_last_push_approval (true).
# allowed_merge_methods (squash-only) and dismiss_stale_reviews_on_push (true).
#
# Token: GH_PAT_WORKFLOWS (classic PAT with repo scope).
# `administration` is not a valid GITHUB_TOKEN scope in Actions; and the
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,5 @@ jobs:
bash scripts/test-copilot-setup-steps-workflow.sh
bash scripts/test-sonarcloud-workflow.sh
bash scripts/test-sonarcloud-workflow.test.sh
bash scripts/apply-repo-settings.test.sh
bash scripts/test-pr-auto-review-workflow.sh
bash scripts/test-pr-auto-review-workflow.test.sh
10 changes: 10 additions & 0 deletions .github/workflows/pr-auto-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,16 @@ permissions: {}

jobs:
pr-auto-review:
# Dependabot-triggered `pull_request` events run against the Dependabot secret
# store, where GH_PAT_WORKFLOWS is unavailable. The secret then arrives empty
# and the reusable's authenticated checkout / gh calls fail at startup with
# "Input required and not supplied: token" — that event can never succeed
# (Fleet Monitor #466). Skip it here (the caller is the only place that can:
# a reusable cannot rescue a run it was handed no secret for). Readiness for
# Dependabot PRs is still evaluated via workflow_run (CI green) and
# check_suite, which run in the base-repo context with the PAT available.
# Guarded by scripts/test-pr-auto-review-workflow.sh.
if: "!(github.event_name == 'pull_request' && github.actor == 'dependabot[bot]')" # NOSONAR(githubactions:S6549)
permissions:
pull-requests: read
checks: read
Expand Down
31 changes: 20 additions & 11 deletions .gitleaksignore
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,16 @@ da36d9b36916087f02c4c367ad6107ab7dbdb152:_bmad/_config/files-manifest.csv:generi
da36d9b36916087f02c4c367ad6107ab7dbdb152:_bmad/_config/files-manifest.csv:generic-api-key:409
da36d9b36916087f02c4c367ad6107ab7dbdb152:_bmad/_config/files-manifest.csv:generic-api-key:433

# Commit 63094bda: same _bmad/_config/files-manifest.csv CSV rows as above
# (SHA256 content checksums of BMAD skill files). Same false-positive rationale;
# file content checksums in CSV, not API keys.
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:281
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:282
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:284
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:300
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:409
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:433

# Commits 3d0fa154, 38957566, 449c717b, f57f0350: same _bmad/_config/files-manifest.csv CSV rows
# as above (SHA256 content checksums of BMAD skill files). Same false-positive rationale;
# file content checksums in CSV, not API keys. These additional commits appear in the full-history
Expand Down Expand Up @@ -262,17 +272,6 @@ b9ad0c5f78bf39d721924e8925c269d85b338735:_bmad/_config/files-manifest.csv:generi
b9ad0c5f78bf39d721924e8925c269d85b338735:_bmad/_config/files-manifest.csv:generic-api-key:409
b9ad0c5f78bf39d721924e8925c269d85b338735:_bmad/_config/files-manifest.csv:generic-api-key:433

# Commit 63094bda: same _bmad/_config/files-manifest.csv CSV rows as above
# (SHA256 content checksums of BMAD skill files). Same false-positive rationale;
# file content checksums in CSV, not API keys. This commit was discovered during
# full-history scan in PR #472 but was not previously suppressed.
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:281
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:282
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:284
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:300
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:409
63094bdaa8533a4ba27533b6ff5a276aaf5f6377:_bmad/_config/files-manifest.csv:generic-api-key:433

# Commit fdbb5983 (PR #472 test-merge commit): same _bmad/_config/files-manifest.csv CSV rows
# (SHA256 content checksums of BMAD skill files) and _bmad/tea/testarch/knowledge/api-testing-patterns.md
# L681 (expired/example token in a test-design knowledge article). Same false-positive rationale as
Expand All @@ -284,3 +283,13 @@ fdbb5983697cf867bf3a08d1483322f2a9476c28:_bmad/_config/files-manifest.csv:generi
fdbb5983697cf867bf3a08d1483322f2a9476c28:_bmad/_config/files-manifest.csv:generic-api-key:409
fdbb5983697cf867bf3a08d1483322f2a9476c28:_bmad/_config/files-manifest.csv:generic-api-key:433
fdbb5983697cf867bf3a08d1483322f2a9476c28:_bmad/tea/testarch/knowledge/api-testing-patterns.md:generic-api-key:681

# Commit a7a24535: same _bmad/_config/files-manifest.csv CSV rows as above
# (SHA256 content checksums of BMAD skill files). Same false-positive rationale;
# file content checksums in CSV, not API keys.
a7a24535a6a70b141ef3f23de6648869d86c5a25:_bmad/_config/files-manifest.csv:generic-api-key:281
a7a24535a6a70b141ef3f23de6648869d86c5a25:_bmad/_config/files-manifest.csv:generic-api-key:282
a7a24535a6a70b141ef3f23de6648869d86c5a25:_bmad/_config/files-manifest.csv:generic-api-key:284
a7a24535a6a70b141ef3f23de6648869d86c5a25:_bmad/_config/files-manifest.csv:generic-api-key:300
a7a24535a6a70b141ef3f23de6648869d86c5a25:_bmad/_config/files-manifest.csv:generic-api-key:409
a7a24535a6a70b141ef3f23de6648869d86c5a25:_bmad/_config/files-manifest.csv:generic-api-key:433
2 changes: 0 additions & 2 deletions scripts/apply-repo-settings.sh
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,6 @@ apply_security_and_analysis() {
}
}
JSON
return
}

# apply_check_suite_prefs <owner/repo>
# Disables auto-trigger for any configured app that currently has it enabled.
Expand Down
88 changes: 37 additions & 51 deletions scripts/apply-repo-settings.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -105,62 +105,48 @@ assert_eq "pr_quality_require_last_push_approval_status: empty string -> missing
"$MISSING" "$(pr_quality_require_last_push_approval_status "")"

# ── pr_quality_reconcile_payload ──────────────────────────────────────────────
# A fully-drifted ruleset: multiple merge methods allowed, both review-safety
# parameters false, plus structural fields and a second (non-pull_request) rule
# that must pass through untouched.
ruleset_drifted_full='{
"name":"pr-quality",
"target":"branch",
"enforcement":"active",
"bypass_actors":[{"actor_id":1,"actor_type":"Team","bypass_mode":"always"}],
"conditions":{"ref_name":{"include":["~DEFAULT_BRANCH"],"exclude":[]}},
"rules":[
{"type":"pull_request","parameters":{"allowed_merge_methods":["merge","rebase","squash"],"require_last_push_approval":false,"dismiss_stale_reviews_on_push":false}},
{"type":"required_status_checks","parameters":{"strict_required_status_checks_policy":true}}
]
}'
# A ruleset whose pull_request rule has drifted on every reconciled parameter,
# alongside a non-pull_request rule and top-level metadata that must survive the
# transform untouched.
ruleset_drifted_full='{"name":"pr-quality","target":"branch","enforcement":"active","bypass_actors":[{"actor_id":5,"actor_type":"Team"}],"conditions":{"ref_name":{"include":["~DEFAULT_BRANCH"],"exclude":[]}},"rules":[{"type":"required_status_checks","parameters":{"strict_required_status_checks_policy":true}},{"type":"pull_request","parameters":{"allowed_merge_methods":["merge","rebase","squash"],"require_last_push_approval":false,"dismiss_stale_reviews_on_push":false}}]}'

payload_drifted=""
payload_drifted="$(pr_quality_reconcile_payload "$ruleset_drifted_full")"
if ! payload_drifted="$(pr_quality_reconcile_payload "$ruleset_drifted_full")"; then
echo "Failed to reconcile payload" >&2
exit 1
fi

assert_eq "pr_quality_reconcile_payload: require_last_push_approval reconciled to true" \
"true" "$(printf '%s' "$payload_drifted" | jq -r '.rules[] | select(.type=="pull_request") | .parameters.require_last_push_approval')"
assert_eq "pr_quality_reconcile_payload: dismiss_stale_reviews_on_push reconciled to true" \
assert_eq "pr_quality_reconcile_payload: dismiss_stale_reviews_on_push drifted -> true" \
"true" "$(printf '%s' "$payload_drifted" | jq -r '.rules[] | select(.type=="pull_request") | .parameters.dismiss_stale_reviews_on_push')"
assert_eq "pr_quality_reconcile_payload: allowed_merge_methods reconciled to squash-only" \
'["squash"]' "$(printf '%s' "$payload_drifted" | jq -c '.rules[] | select(.type=="pull_request") | .parameters.allowed_merge_methods')"
assert_eq "pr_quality_reconcile_payload: preserves ruleset name" \
assert_eq "pr_quality_reconcile_payload: allowed_merge_methods -> squash-only" \
"squash" "$(printf '%s' "$payload_drifted" | jq -r '.rules[] | select(.type=="pull_request") | .parameters.allowed_merge_methods | join(",")')"
assert_eq "pr_quality_reconcile_payload: require_last_push_approval -> true" \
"true" "$(printf '%s' "$payload_drifted" | jq -r '.rules[] | select(.type=="pull_request") | .parameters.require_last_push_approval')"
assert_eq "pr_quality_reconcile_payload: non-pull_request rule preserved unchanged" \
"true" "$(printf '%s' "$payload_drifted" | jq -r '.rules[] | select(.type=="required_status_checks") | .parameters.strict_required_status_checks_policy')"
assert_eq "pr_quality_reconcile_payload: top-level metadata (name) preserved" \
"pr-quality" "$(printf '%s' "$payload_drifted" | jq -r '.name')"
assert_eq "pr_quality_reconcile_payload: preserves target" \
"branch" "$(printf '%s' "$payload_drifted" | jq -r '.target')"
assert_eq "pr_quality_reconcile_payload: preserves enforcement" \
assert_eq "pr_quality_reconcile_payload: enforcement preserved" \
"active" "$(printf '%s' "$payload_drifted" | jq -r '.enforcement')"
assert_eq "pr_quality_reconcile_payload: preserves conditions" \
'{"ref_name":{"include":["~DEFAULT_BRANCH"],"exclude":[]}}' \
"$(printf '%s' "$payload_drifted" | jq -c '.conditions')"
assert_eq "pr_quality_reconcile_payload: preserves bypass_actors" \
'[{"actor_id":1,"actor_type":"Team","bypass_mode":"always"}]' \
"$(printf '%s' "$payload_drifted" | jq -c '.bypass_actors')"
assert_eq "pr_quality_reconcile_payload: non-pull_request rule passes through untouched" \
'{"type":"required_status_checks","parameters":{"strict_required_status_checks_policy":true}}' \
"$(printf '%s' "$payload_drifted" | jq -c '.rules[] | select(.type=="required_status_checks")')"

# Ruleset missing bypass_actors and with the pull_request rule's parameters
# entirely absent: the payload must still add the two review-safety params and
# default bypass_actors to [].
ruleset_minimal='{
"name":"pr-quality","target":"branch","enforcement":"active",
"conditions":{"ref_name":{"include":["~DEFAULT_BRANCH"],"exclude":[]}},
"rules":[{"type":"pull_request"}]
}'
payload_minimal=""
payload_minimal="$(pr_quality_reconcile_payload "$ruleset_minimal")"

assert_eq "pr_quality_reconcile_payload: absent bypass_actors defaults to []" \
'[]' "$(printf '%s' "$payload_minimal" | jq -c '.bypass_actors')"
assert_eq "pr_quality_reconcile_payload: adds require_last_push_approval when params absent" \
"true" "$(printf '%s' "$payload_minimal" | jq -r '.rules[] | select(.type=="pull_request") | .parameters.require_last_push_approval')"
assert_eq "pr_quality_reconcile_payload: adds squash-only when params absent" \
'["squash"]' "$(printf '%s' "$payload_minimal" | jq -c '.rules[] | select(.type=="pull_request") | .parameters.allowed_merge_methods')"
assert_eq "pr_quality_reconcile_payload: conditions preserved" \
"~DEFAULT_BRANCH" "$(printf '%s' "$payload_drifted" | jq -r '.conditions.ref_name.include[0]')"
assert_eq "pr_quality_reconcile_payload: bypass_actors preserved" \
"5" "$(printf '%s' "$payload_drifted" | jq -r '.bypass_actors[0].actor_id')"

# When the ruleset has no bypass_actors key, the payload defaults it to an empty
# array (matching apply_pr_quality_ruleset's original behavior).
ruleset_no_bypass='{"name":"pr-quality","target":"branch","enforcement":"active","conditions":{},"rules":[{"type":"pull_request","parameters":{"dismiss_stale_reviews_on_push":false}}]}'
assert_eq "pr_quality_reconcile_payload: absent bypass_actors -> empty array" \
"0" "$(printf '%s' "$(pr_quality_reconcile_payload "$ruleset_no_bypass")" | jq -r '.bypass_actors | length')"
assert_eq "pr_quality_reconcile_payload: reconciles dismiss even when parameter absent-defaulted" \
"true" "$(printf '%s' "$(pr_quality_reconcile_payload "$ruleset_no_bypass")" | jq -r '.rules[] | select(.type=="pull_request") | .parameters.dismiss_stale_reviews_on_push')"

# Empty input must return a non-zero exit so callers can detect failure.
if pr_quality_reconcile_payload "" >/dev/null 2>&1; then
fail "pr_quality_reconcile_payload: empty input -> non-zero exit"
else
pass "pr_quality_reconcile_payload: empty input -> non-zero exit"
fi

# ── pr_quality_needs_reconcile ────────────────────────────────────────────────
# The reconcile decision: given the three parsed parameter statuses, does the
Expand Down
Loading
Loading