diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index dfe86379bb8..d6aa5dff151 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: ecdacefedd21b4c7137f4d517cbc6e88cffbcf923d831cf2fdfb11d2c073302a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ecdacefedd21b4c7137f4d517cbc6e88cffbcf923d831cf2fdfb11d2c073302a"} name: "Agent Performance Analyzer - Meta-Orchestrator" "on": diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index 36b3083858a..a6f78fa3470 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: c9406b0651f40a2050732c9e0410d97db0ab7d7aa8be8419f1378124ea468162 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c9406b0651f40a2050732c9e0410d97db0ab7d7aa8be8419f1378124ea468162"} name: "Agent Persona Explorer" "on": diff --git a/.github/workflows/ai-moderator.lock.yml b/.github/workflows/ai-moderator.lock.yml index 64bb4a04721..fbe4f5954f4 100644 --- a/.github/workflows/ai-moderator.lock.yml +++ b/.github/workflows/ai-moderator.lock.yml @@ -22,7 +22,7 @@ # For more information: https://github.github.com/gh-aw/introduction/overview/ # # -# frontmatter-hash: c914e6148e6bd4fd2f3bf55bbf79dcfe6291fbc8c32ea6f9953192c581ac5d3a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c914e6148e6bd4fd2f3bf55bbf79dcfe6291fbc8c32ea6f9953192c581ac5d3a"} name: "AI Moderator" "on": diff --git a/.github/workflows/archie.lock.yml b/.github/workflows/archie.lock.yml index 0eda0e55a44..2e7e9c5cf7b 100644 --- a/.github/workflows/archie.lock.yml +++ b/.github/workflows/archie.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 3b036ef86d73babb36b6cd24527393fd6a9d42d517dd1862b814d4c192ab4cbc +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3b036ef86d73babb36b6cd24527393fd6a9d42d517dd1862b814d4c192ab4cbc"} name: "Archie" "on": diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index 2315a04fc89..1bb21c88594 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -29,7 +29,7 @@ # - shared/reporting.md # - shared/safe-output-app.md # -# frontmatter-hash: 9cce9d60bf1681ff7870108e3245cc6e2a21ae80066f040554a8e7c1a4007ee5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"9cce9d60bf1681ff7870108e3245cc6e2a21ae80066f040554a8e7c1a4007ee5"} name: "Artifacts Summary" "on": diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 1527934c08f..6e5be3c6106 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -30,7 +30,7 @@ # - shared/reporting.md # - shared/trending-charts-simple.md # -# frontmatter-hash: 4d50f091b80261759bdbabc83490e5ed25d3ff07b5bf4a9c989d643f4c5a1a72 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"4d50f091b80261759bdbabc83490e5ed25d3ff07b5bf4a9c989d643f4c5a1a72"} name: "Agentic Workflow Audit Agent" "on": diff --git a/.github/workflows/auto-triage-issues.lock.yml b/.github/workflows/auto-triage-issues.lock.yml index cc5dbfe1744..7c7733916a8 100644 --- a/.github/workflows/auto-triage-issues.lock.yml +++ b/.github/workflows/auto-triage-issues.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 9c6fbb9920281fff3373c0db01b6a5e5fe93b637d2902977763c0634733725be +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"9c6fbb9920281fff3373c0db01b6a5e5fe93b637d2902977763c0634733725be"} name: "Auto-Triage Issues" "on": diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index e3f3a370384..31665133eed 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: b0219ce41905931f588f883bdb616563bb357cc3a07dbf00c33e85729ac1a307 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"b0219ce41905931f588f883bdb616563bb357cc3a07dbf00c33e85729ac1a307"} name: "Blog Auditor" "on": diff --git a/.github/workflows/bot-detection.lock.yml b/.github/workflows/bot-detection.lock.yml index 84f20aaf3bd..b04b892838c 100644 --- a/.github/workflows/bot-detection.lock.yml +++ b/.github/workflows/bot-detection.lock.yml @@ -23,7 +23,7 @@ # # Investigates suspicious repository activity and maintains a single triage issue # -# frontmatter-hash: e4945922152cf00d6e0bfcc4b0b869b00af9e4067e3978ad70218706f4945164 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e4945922152cf00d6e0bfcc4b0b869b00af9e4067e3978ad70218706f4945164"} name: "Bot Detection" "on": diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index 62e3be5a7ef..8abc2f0ac27 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -28,7 +28,7 @@ # - shared/mcp/brave.md # - shared/mood.md # -# frontmatter-hash: 683e68dc826ae90ab36845403914608d2ae16919e3d0956152b061c60167576d +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"683e68dc826ae90ab36845403914608d2ae16919e3d0956152b061c60167576d"} name: "Brave Web Search Agent" "on": diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml index 7794dd995d9..91c332edd85 100644 --- a/.github/workflows/breaking-change-checker.lock.yml +++ b/.github/workflows/breaking-change-checker.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 33baab9b91d7c71d598eae14625757ab0a0ac2be40cb8786bd1c866eeb497d5d +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"33baab9b91d7c71d598eae14625757ab0a0ac2be40cb8786bd1c866eeb497d5d"} name: "Breaking Change Checker" "on": diff --git a/.github/workflows/changeset.lock.yml b/.github/workflows/changeset.lock.yml index 47ec210d0fb..93dbd7a2960 100644 --- a/.github/workflows/changeset.lock.yml +++ b/.github/workflows/changeset.lock.yml @@ -30,7 +30,7 @@ # - shared/mood.md # - shared/safe-output-app.md # -# frontmatter-hash: bd7e980e642e393d5eac39ee0e8725f55831fe46639d839ecd5df22fb3a10fa5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"bd7e980e642e393d5eac39ee0e8725f55831fe46639d839ecd5df22fb3a10fa5"} name: "Changeset Generator" "on": diff --git a/.github/workflows/chroma-issue-indexer.lock.yml b/.github/workflows/chroma-issue-indexer.lock.yml index 0d7a0e137f4..6f69ae9cd63 100644 --- a/.github/workflows/chroma-issue-indexer.lock.yml +++ b/.github/workflows/chroma-issue-indexer.lock.yml @@ -27,7 +27,7 @@ # - shared/mcp/chroma.md # - shared/mood.md # -# frontmatter-hash: 220671e8cf1bf8b27b0d78691d637c2c7f012db6effdd8def4d7940072a79ad2 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"220671e8cf1bf8b27b0d78691d637c2c7f012db6effdd8def4d7940072a79ad2"} name: "Chroma Issue Indexer" "on": diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 7b0dd61d150..602ea5a5e2b 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -31,7 +31,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: db7f1b6d87e68f8ccd4c7ece4c4b77d401c56eafe9cf91763ae92ed9fe09277a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"db7f1b6d87e68f8ccd4c7ece4c4b77d401c56eafe9cf91763ae92ed9fe09277a"} name: "CI Optimization Coach" "on": diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index 7c211dc5626..e142ef3c097 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -29,7 +29,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: f6f3ed85b8cc88a34b75b6b25dc64109e56e188dcafc2b09d8b578783c7cadc5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f6f3ed85b8cc88a34b75b6b25dc64109e56e188dcafc2b09d8b578783c7cadc5","stop_time":"2026-03-03 16:27:58"} # # Effective stop-time: 2026-03-03 16:27:58 diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index 619022c5519..64c135c5fff 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: f42b78e415f58f3f758a94ec1548efee0840966cf12abd6ca76690bf46d0bd28 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f42b78e415f58f3f758a94ec1548efee0840966cf12abd6ca76690bf46d0bd28"} name: "Claude Code User Documentation Review" "on": diff --git a/.github/workflows/cli-consistency-checker.lock.yml b/.github/workflows/cli-consistency-checker.lock.yml index 538580edf28..5941935cfa9 100644 --- a/.github/workflows/cli-consistency-checker.lock.yml +++ b/.github/workflows/cli-consistency-checker.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 8a1f53691b774ea3860e020e3178886bf3a66ba36e1f4fba919df4245ccd1187 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"8a1f53691b774ea3860e020e3178886bf3a66ba36e1f4fba919df4245ccd1187"} name: "CLI Consistency Checker" "on": diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 9f435f4bb6a..7e6ba89cb8f 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 1b10358b8d2f4999ed67f66a35cc17a28187f23df86e9ee09c277566cf9802fb +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"1b10358b8d2f4999ed67f66a35cc17a28187f23df86e9ee09c277566cf9802fb"} name: "CLI Version Checker" "on": diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 938527aeeaa..64dc8a894a0 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -27,7 +27,7 @@ # - shared/jqschema.md # - shared/mood.md # -# frontmatter-hash: 927fd739563c18d6d8775a4314032aa403e28eab12e6e688ae1c2c059b27373e +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"927fd739563c18d6d8775a4314032aa403e28eab12e6e688ae1c2c059b27373e"} name: "/cloclo" "on": diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 7f18d3f67d0..4fad2c412da 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: df4e5ab4fc5119bf995e3fec24af6c53d2784cc75385acdfc307b209ae05b14f +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"df4e5ab4fc5119bf995e3fec24af6c53d2784cc75385acdfc307b209ae05b14f"} name: "Code Scanning Fixer" "on": diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index b5bf645ac5e..17f2dc16a40 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 705a6dad8951578693e72a9fad0af462c327259f5effc63da94c17442df1a2fd +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"705a6dad8951578693e72a9fad0af462c327259f5effc63da94c17442df1a2fd"} name: "Code Simplifier" "on": diff --git a/.github/workflows/codex-github-remote-mcp-test.lock.yml b/.github/workflows/codex-github-remote-mcp-test.lock.yml index dc0cdc28e70..b6cf06a7356 100644 --- a/.github/workflows/codex-github-remote-mcp-test.lock.yml +++ b/.github/workflows/codex-github-remote-mcp-test.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 4a20ced305fc13a621c88fcb860d2fd687bfdf76b64efca648bfe1a6cd0a901d +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"4a20ced305fc13a621c88fcb860d2fd687bfdf76b64efca648bfe1a6cd0a901d"} name: "Codex GitHub Remote MCP Test" "on": diff --git a/.github/workflows/commit-changes-analyzer.lock.yml b/.github/workflows/commit-changes-analyzer.lock.yml index bf30dff63c8..f03a7761fce 100644 --- a/.github/workflows/commit-changes-analyzer.lock.yml +++ b/.github/workflows/commit-changes-analyzer.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 4e6df452f0e9512538c4d63796bee8f915a0e25b266056e9b97c32b699efca07 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"4e6df452f0e9512538c4d63796bee8f915a0e25b266056e9b97c32b699efca07"} name: "Commit Changes Analyzer" "on": diff --git a/.github/workflows/contribution-check.lock.yml b/.github/workflows/contribution-check.lock.yml index 8974d935941..a4aacf4225a 100644 --- a/.github/workflows/contribution-check.lock.yml +++ b/.github/workflows/contribution-check.lock.yml @@ -22,7 +22,7 @@ # For more information: https://github.github.com/gh-aw/introduction/overview/ # # -# frontmatter-hash: e9eb79dab1382ce43224a022cc333e4d6e186932a3b1e49c278e0433035f1764 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e9eb79dab1382ce43224a022cc333e4d6e186932a3b1e49c278e0433035f1764"} name: "Contribution Check" "on": diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 69c4730313c..785af590970 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -30,7 +30,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 49e233a6fddc68b01bfb552844d10705384860956cebc90df11ae53e16d11dc9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"49e233a6fddc68b01bfb552844d10705384860956cebc90df11ae53e16d11dc9"} name: "Copilot Agent PR Analysis" "on": diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index a8774476960..dc56f01dba9 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: f9cef995cc8f830332724217641a080a5063963a70684a8f180332f4adc728c5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f9cef995cc8f830332724217641a080a5063963a70684a8f180332f4adc728c5"} name: "Copilot CLI Deep Research Agent" "on": diff --git a/.github/workflows/copilot-pr-merged-report.lock.yml b/.github/workflows/copilot-pr-merged-report.lock.yml index cb579e98efb..51bbc94c13b 100644 --- a/.github/workflows/copilot-pr-merged-report.lock.yml +++ b/.github/workflows/copilot-pr-merged-report.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 21c2db42dcc980075b13f9e2c95fd5fce54934011d134071fa162e57e9d9d243 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"21c2db42dcc980075b13f9e2c95fd5fce54934011d134071fa162e57e9d9d243"} name: "Daily Copilot PR Merged Report" "on": diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index c520a1f13fb..8f858f7525e 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -31,7 +31,7 @@ # - shared/python-dataviz.md # - shared/reporting.md # -# frontmatter-hash: 62308676b01e01c5df929ca47161b7eb3319529e389f48cbe2cc03c303460682 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"62308676b01e01c5df929ca47161b7eb3319529e389f48cbe2cc03c303460682"} name: "Copilot PR Conversation NLP Analysis" "on": diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 440b80261de..53f9a666bc7 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -30,7 +30,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 4972670408e854d61ea1cef39e96003b6ca7526c2107920ae0c38b000837c6d9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"4972670408e854d61ea1cef39e96003b6ca7526c2107920ae0c38b000837c6d9"} name: "Copilot PR Prompt Pattern Analysis" "on": diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index a1e75d7d4c8..9868eb828fe 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -33,7 +33,7 @@ # - shared/session-analysis-charts.md # - shared/session-analysis-strategies.md # -# frontmatter-hash: 750804c6a2a89dc635b4c6e1216950672e3620fb95c1202f3aa34b1d798cfcca +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"750804c6a2a89dc635b4c6e1216950672e3620fb95c1202f3aa34b1d798cfcca"} name: "Copilot Session Insights" "on": diff --git a/.github/workflows/craft.lock.yml b/.github/workflows/craft.lock.yml index af6b5d7344d..a3eecadd1cb 100644 --- a/.github/workflows/craft.lock.yml +++ b/.github/workflows/craft.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 7e75f3aac83ff50e722194da093b5563a5dc8b91af9e08d2d3fe49e9a84f6fb9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7e75f3aac83ff50e722194da093b5563a5dc8b91af9e08d2d3fe49e9a84f6fb9"} name: "Workflow Craft Agent" "on": diff --git a/.github/workflows/daily-assign-issue-to-user.lock.yml b/.github/workflows/daily-assign-issue-to-user.lock.yml index 33de5601344..b91cc9ce6c8 100644 --- a/.github/workflows/daily-assign-issue-to-user.lock.yml +++ b/.github/workflows/daily-assign-issue-to-user.lock.yml @@ -26,7 +26,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 16b742b68d92065e06d1612cf35998e5deadcd8b624ab48e2912fd1ca04cefaa +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"16b742b68d92065e06d1612cf35998e5deadcd8b624ab48e2912fd1ca04cefaa"} name: "Auto-Assign Issue" "on": diff --git a/.github/workflows/daily-choice-test.lock.yml b/.github/workflows/daily-choice-test.lock.yml index 43347879df5..c5a73b0ca46 100644 --- a/.github/workflows/daily-choice-test.lock.yml +++ b/.github/workflows/daily-choice-test.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 539fce339b1d147f6bc4b1027bcaf931b6b380c3328ab9678aec5fe64741e654 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"539fce339b1d147f6bc4b1027bcaf931b6b380c3328ab9678aec5fe64741e654"} name: "Daily Choice Type Test" "on": diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index 1ad0ccecda3..049f0543dce 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 185e8e9fea9c9af8fff8ab7305985b79a14fcf173b44bccb604bb9cef76117b9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"185e8e9fea9c9af8fff8ab7305985b79a14fcf173b44bccb604bb9cef76117b9"} name: "Daily CLI Performance Agent" "on": diff --git a/.github/workflows/daily-cli-tools-tester.lock.yml b/.github/workflows/daily-cli-tools-tester.lock.yml index f967431f618..8295de37650 100644 --- a/.github/workflows/daily-cli-tools-tester.lock.yml +++ b/.github/workflows/daily-cli-tools-tester.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 66142a570abd73c9369ad0914b9e623a277d6a57179415f8d89d3c3cedaf5fb5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"66142a570abd73c9369ad0914b9e623a277d6a57179415f8d89d3c3cedaf5fb5"} name: "Daily CLI Tools Exploratory Tester" "on": diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index c8ef7567277..db367edaa0e 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -30,7 +30,7 @@ # - shared/reporting.md # - shared/trends.md # -# frontmatter-hash: 90cdc96a45c8d61adb30503e3d00a4cd026b94d383b6f24c9727afd0a2358d48 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"90cdc96a45c8d61adb30503e3d00a4cd026b94d383b6f24c9727afd0a2358d48"} name: "Daily Code Metrics and Trend Tracking Agent" "on": diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index f32c5a060c6..acf7dca2293 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 3de50ec6efe98968b7bc298dbedebd374518c1b8252f78473cb211f79df18092 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3de50ec6efe98968b7bc298dbedebd374518c1b8252f78473cb211f79df18092"} name: "Daily Compiler Quality Check" "on": diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index 329ea6ae34d..3198376e310 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -30,7 +30,7 @@ # - shared/python-dataviz.md # - shared/reporting.md # -# frontmatter-hash: 66d27b9f72933e3a142adc3ee1f31a28d3ef69785a7d91c622d40b2080c494de +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"66d27b9f72933e3a142adc3ee1f31a28d3ef69785a7d91c622d40b2080c494de"} name: "Daily Copilot Token Consumption Report" "on": diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index ef214788a7c..e90c61e1e81 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: d1a2d516f7068ad1b5e4e6b7c3ab516b836f4ac88fa9ae382f618ba4a18a8f31 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"d1a2d516f7068ad1b5e4e6b7c3ab516b836f4ac88fa9ae382f618ba4a18a8f31"} name: "Daily Documentation Updater" "on": diff --git a/.github/workflows/daily-fact.lock.yml b/.github/workflows/daily-fact.lock.yml index b703348c32e..f4b151a175a 100644 --- a/.github/workflows/daily-fact.lock.yml +++ b/.github/workflows/daily-fact.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: e6b7befeee92e59a65fad768672f3717fc7f9824814c87c56f035b11b6c5050c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e6b7befeee92e59a65fad768672f3717fc7f9824814c87c56f035b11b6c5050c"} name: "Daily Fact About gh-aw" "on": diff --git a/.github/workflows/daily-file-diet.lock.yml b/.github/workflows/daily-file-diet.lock.yml index 5b00a4861fb..ca5e7dde81f 100644 --- a/.github/workflows/daily-file-diet.lock.yml +++ b/.github/workflows/daily-file-diet.lock.yml @@ -29,7 +29,7 @@ # - shared/reporting.md # - shared/safe-output-app.md # -# frontmatter-hash: 5eada12972b7a5562e041dca3403cf40d5f9d8c6594c96f2bb1bcbfc51c3017c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"5eada12972b7a5562e041dca3403cf40d5f9d8c6594c96f2bb1bcbfc51c3017c"} name: "Daily File Diet" "on": diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index 84eb9833839..0134fbedb37 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -29,7 +29,7 @@ # - shared/reporting.md # - shared/trending-charts-simple.md # -# frontmatter-hash: 1163f4663b60a8977df68ac8f5e1f1e52a651fa202f7d075c0cbabd43a292816 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"1163f4663b60a8977df68ac8f5e1f1e52a651fa202f7d075c0cbabd43a292816"} name: "Daily Firewall Logs Collector and Reporter" "on": diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index 12e6f01bf6b..c711c8a3e53 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -32,7 +32,7 @@ # - shared/reporting.md # - shared/trends.md # -# frontmatter-hash: 7765f4f5067a411b0061ff0719af32709f6fb36c4617e0d3fb127b356e1afae9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7765f4f5067a411b0061ff0719af32709f6fb36c4617e0d3fb127b356e1afae9"} name: "Daily Issues Report Generator" "on": diff --git a/.github/workflows/daily-malicious-code-scan.lock.yml b/.github/workflows/daily-malicious-code-scan.lock.yml index 3bebb3f212f..77d20797c83 100644 --- a/.github/workflows/daily-malicious-code-scan.lock.yml +++ b/.github/workflows/daily-malicious-code-scan.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 430804aa2b800754e8433a813738ef7b49b0f94802c06aa4aba44839a68c6ee5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"430804aa2b800754e8433a813738ef7b49b0f94802c06aa4aba44839a68c6ee5"} name: "Daily Malicious Code Scan Agent" "on": diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index d4f0e8e60ce..7eb132c6d5f 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -29,7 +29,7 @@ # - shared/reporting.md # - shared/safe-output-app.md # -# frontmatter-hash: bc52631a37fe6785998fcb5a6400ebeb5b4d2da5c838d56fbc3fd624af8c782b +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"bc52631a37fe6785998fcb5a6400ebeb5b4d2da5c838d56fbc3fd624af8c782b"} name: "Daily MCP Tool Concurrency Analysis" "on": diff --git a/.github/workflows/daily-multi-device-docs-tester.lock.yml b/.github/workflows/daily-multi-device-docs-tester.lock.yml index d389ab03b39..c239f3dfda3 100644 --- a/.github/workflows/daily-multi-device-docs-tester.lock.yml +++ b/.github/workflows/daily-multi-device-docs-tester.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 9e6110edfa7c964892ed77f2dc67f6ea1fc0d608c64f7bed5820fd1abd7c14a3 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"9e6110edfa7c964892ed77f2dc67f6ea1fc0d608c64f7bed5820fd1abd7c14a3"} name: "Multi-Device Docs Tester" "on": diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index b6096e7ecd0..0404a2a7588 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -32,7 +32,7 @@ # - shared/reporting.md # - shared/trends.md # -# frontmatter-hash: b12090b88210cf494f0bc14ed1a1af85125d11f351283cc58ac390f156909e05 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"b12090b88210cf494f0bc14ed1a1af85125d11f351283cc58ac390f156909e05"} name: "Daily News" "on": diff --git a/.github/workflows/daily-observability-report.lock.yml b/.github/workflows/daily-observability-report.lock.yml index 8a677ccbbf4..f67a2eceba8 100644 --- a/.github/workflows/daily-observability-report.lock.yml +++ b/.github/workflows/daily-observability-report.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: ea05a2ec77bd0021834069b2684bd9be4e7dc558c53eabb7b6d3f3e5c1ce2ffd +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ea05a2ec77bd0021834069b2684bd9be4e7dc558c53eabb7b6d3f3e5c1ce2ffd"} name: "Daily Observability Report for AWF Firewall and MCP Gateway" "on": diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index eaf6243d22c..7c5be84ca54 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -30,7 +30,7 @@ # - shared/reporting.md # - shared/trending-charts-simple.md # -# frontmatter-hash: 1c376005f6b463470be7e5ed4579c6a8974d5eaf114564c88bd35f498f20e883 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"1c376005f6b463470be7e5ed4579c6a8974d5eaf114564c88bd35f498f20e883"} name: "Daily Project Performance Summary Generator (Using Safe Inputs)" "on": diff --git a/.github/workflows/daily-regulatory.lock.yml b/.github/workflows/daily-regulatory.lock.yml index e4a790a18c0..612cc5ff6ab 100644 --- a/.github/workflows/daily-regulatory.lock.yml +++ b/.github/workflows/daily-regulatory.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 6bc7064192101134f213231bc2126aa30b3211cd5bbdc6bef2cafe81b22aa250 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"6bc7064192101134f213231bc2126aa30b3211cd5bbdc6bef2cafe81b22aa250"} name: "Daily Regulatory Report Generator" "on": diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index ff0bf9c31df..22cba808802 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -30,7 +30,7 @@ # - shared/reporting.md # - shared/trends.md # -# frontmatter-hash: 24c95e05db9b5423bcdcb99e38fa604774d272c1647b66dd4ab4fcf2f5d1feb1 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"24c95e05db9b5423bcdcb99e38fa604774d272c1647b66dd4ab4fcf2f5d1feb1"} name: "The Daily Repository Chronicle" "on": diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index 6e40e170b77..08b706c8abc 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: ee30c910ce1c713101cf700f424b233d4322abfc21dbeb53ef87f6780b7cdb2c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ee30c910ce1c713101cf700f424b233d4322abfc21dbeb53ef87f6780b7cdb2c"} name: "Daily Safe Output Tool Optimizer" "on": diff --git a/.github/workflows/daily-safe-outputs-conformance.lock.yml b/.github/workflows/daily-safe-outputs-conformance.lock.yml index 3752500b06c..79bf4afe63a 100644 --- a/.github/workflows/daily-safe-outputs-conformance.lock.yml +++ b/.github/workflows/daily-safe-outputs-conformance.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 3bf15f7749f2a01de8cc7d76cc31beb24813d2bcf857c5649c630d9dba6a3888 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3bf15f7749f2a01de8cc7d76cc31beb24813d2bcf857c5649c630d9dba6a3888"} name: "Daily Safe Outputs Conformance Checker" "on": diff --git a/.github/workflows/daily-secrets-analysis.lock.yml b/.github/workflows/daily-secrets-analysis.lock.yml index 696a355e713..c7bd1ceb5d0 100644 --- a/.github/workflows/daily-secrets-analysis.lock.yml +++ b/.github/workflows/daily-secrets-analysis.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 879354e7b994d035421d4e0d1c9aaee8374cead52a5161c7b7414875d213a6ec +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"879354e7b994d035421d4e0d1c9aaee8374cead52a5161c7b7414875d213a6ec"} name: "Daily Secrets Analysis Agent" "on": diff --git a/.github/workflows/daily-security-red-team.lock.yml b/.github/workflows/daily-security-red-team.lock.yml index 1cb55ce9bfa..45be6fb3efd 100644 --- a/.github/workflows/daily-security-red-team.lock.yml +++ b/.github/workflows/daily-security-red-team.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: cc633de64b97a33633f5e85772d3fe2f148d66772725296b8bd4b89f776febb3 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"cc633de64b97a33633f5e85772d3fe2f148d66772725296b8bd4b89f776febb3"} name: "Daily Security Red Team Agent" "on": diff --git a/.github/workflows/daily-semgrep-scan.lock.yml b/.github/workflows/daily-semgrep-scan.lock.yml index e4acd5e322d..03fcdbb4ec4 100644 --- a/.github/workflows/daily-semgrep-scan.lock.yml +++ b/.github/workflows/daily-semgrep-scan.lock.yml @@ -28,7 +28,7 @@ # - shared/mcp/semgrep.md # - shared/mood.md # -# frontmatter-hash: bf2dc5ae4b7422012fdb44020461f3632d0c60609a575dce0f43ede2ac85a69f +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"bf2dc5ae4b7422012fdb44020461f3632d0c60609a575dce0f43ede2ac85a69f"} name: "Daily Semgrep Scan" "on": diff --git a/.github/workflows/daily-syntax-error-quality.lock.yml b/.github/workflows/daily-syntax-error-quality.lock.yml index d0fc0c5cc21..bcd8a56e2b6 100644 --- a/.github/workflows/daily-syntax-error-quality.lock.yml +++ b/.github/workflows/daily-syntax-error-quality.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 52a5d98da5b733b46e5cc163ea30944825a3fff0dab605b38d74485d6b61b2a5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"52a5d98da5b733b46e5cc163ea30944825a3fff0dab605b38d74485d6b61b2a5"} name: "Daily Syntax Error Quality Check" "on": diff --git a/.github/workflows/daily-team-evolution-insights.lock.yml b/.github/workflows/daily-team-evolution-insights.lock.yml index b7e2a9a36db..409c8b16a6c 100644 --- a/.github/workflows/daily-team-evolution-insights.lock.yml +++ b/.github/workflows/daily-team-evolution-insights.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 7afc91f37bf94b05555fde089ab5f96e5f62e000d5a3d59eeac27dcdb220505c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7afc91f37bf94b05555fde089ab5f96e5f62e000d5a3d59eeac27dcdb220505c"} name: "Daily Team Evolution Insights" "on": diff --git a/.github/workflows/daily-team-status.lock.yml b/.github/workflows/daily-team-status.lock.yml index 586a97395fe..3963dcf37a5 100644 --- a/.github/workflows/daily-team-status.lock.yml +++ b/.github/workflows/daily-team-status.lock.yml @@ -34,7 +34,7 @@ # - githubnext/agentics/workflows/shared/reporting.md@d3422bf940923ef1d43db5559652b8e1e71869f3 # - shared/mood.md # -# frontmatter-hash: ef044b98d76b213b48ff227e6f13f1a9b57a623dcfab759b1ea5d762b637efd2 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ef044b98d76b213b48ff227e6f13f1a9b57a623dcfab759b1ea5d762b637efd2","stop_time":"2026-02-09 04:24:39"} # # Effective stop-time: 2026-02-09 04:24:39 diff --git a/.github/workflows/daily-testify-uber-super-expert.lock.yml b/.github/workflows/daily-testify-uber-super-expert.lock.yml index 995e948f2e7..207f0782029 100644 --- a/.github/workflows/daily-testify-uber-super-expert.lock.yml +++ b/.github/workflows/daily-testify-uber-super-expert.lock.yml @@ -29,7 +29,7 @@ # - shared/reporting.md # - shared/safe-output-app.md # -# frontmatter-hash: 2d110214c824bb89e0a9a8dbad995e7197afb37fd85f3096ef910aeb4e97b17b +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"2d110214c824bb89e0a9a8dbad995e7197afb37fd85f3096ef910aeb4e97b17b"} name: "Daily Testify Uber Super Expert" "on": diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index 74b5e5cc545..cb6d3cbf52f 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 527962da38b97338dbf8aed74bf7eea3ffb9efb28344bcd77c5e41d83fd67a6e +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"527962da38b97338dbf8aed74bf7eea3ffb9efb28344bcd77c5e41d83fd67a6e"} name: "Daily Workflow Updater" "on": diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index 09fb10ad114..03255afe42e 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -30,7 +30,7 @@ # - shared/reporting.md # - shared/weekly-issues-data-fetch.md # -# frontmatter-hash: ec5f80ed35d36217ef602a57a7a7c5b79beb42045b888888ddc0d8e9dea1deb9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ec5f80ed35d36217ef602a57a7a7c5b79beb42045b888888ddc0d8e9dea1deb9"} name: "DeepReport - Intelligence Gathering Agent" "on": diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml index 3fbaeb50a06..4778daa73af 100644 --- a/.github/workflows/delight.lock.yml +++ b/.github/workflows/delight.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 5d3fa85ee78d735768e3eed71ff9938099cf307d5ce63783fccaaafc79cde722 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"5d3fa85ee78d735768e3eed71ff9938099cf307d5ce63783fccaaafc79cde722"} name: "Delight" "on": diff --git a/.github/workflows/dependabot-burner.lock.yml b/.github/workflows/dependabot-burner.lock.yml index dce873ad3b5..7677b27861b 100644 --- a/.github/workflows/dependabot-burner.lock.yml +++ b/.github/workflows/dependabot-burner.lock.yml @@ -22,7 +22,7 @@ # For more information: https://github.github.com/gh-aw/introduction/overview/ # # -# frontmatter-hash: 6e0fca12f8bed9a8517bf5358ecc83c96dbcf89f2da3aed33ce0d75a66a7695d +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"6e0fca12f8bed9a8517bf5358ecc83c96dbcf89f2da3aed33ce0d75a66a7695d"} name: "Dependabot Burner" "on": diff --git a/.github/workflows/dependabot-go-checker.lock.yml b/.github/workflows/dependabot-go-checker.lock.yml index 3358e9da4dc..0a8032475ed 100644 --- a/.github/workflows/dependabot-go-checker.lock.yml +++ b/.github/workflows/dependabot-go-checker.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: cc1c94747da840c74962f07d39790a155b1e5db82cfdf90d68d66a08c88261bd +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"cc1c94747da840c74962f07d39790a155b1e5db82cfdf90d68d66a08c88261bd"} name: "Dependabot Dependency Checker" "on": diff --git a/.github/workflows/dev-hawk.lock.yml b/.github/workflows/dev-hawk.lock.yml index 6b19fbd0f69..efc556142ca 100644 --- a/.github/workflows/dev-hawk.lock.yml +++ b/.github/workflows/dev-hawk.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 26fbe593cfc5a0684979a0dc435a2235bcf8162ae42bd42b0cc9abd00308c37c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"26fbe593cfc5a0684979a0dc435a2235bcf8162ae42bd42b0cc9abd00308c37c"} name: "Dev Hawk" "on": diff --git a/.github/workflows/dev.lock.yml b/.github/workflows/dev.lock.yml index c754df7d3af..c58007b02cd 100644 --- a/.github/workflows/dev.lock.yml +++ b/.github/workflows/dev.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 49266e50774d7e6a8b1c50f64b2f790c214dcdcf7b75b6bc8478bb43257b9863 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"49266e50774d7e6a8b1c50f64b2f790c214dcdcf7b75b6bc8478bb43257b9863"} name: "Dev" "on": diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 63916a98702..1c104336101 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 52018fcc1971e79d8598808b6fdeab210e06a9d148d2356c2f86e09903365c20 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"52018fcc1971e79d8598808b6fdeab210e06a9d148d2356c2f86e09903365c20"} name: "Developer Documentation Consolidator" "on": diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index ba6fec18158..ff23b5b0ab3 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: c48c689e901f5b88b8fdce48b4a6c3a9435c122fd21b42bda9d1477e59983be5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c48c689e901f5b88b8fdce48b4a6c3a9435c122fd21b42bda9d1477e59983be5"} name: "Dictation Prompt Generator" "on": diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml index 7a966f95581..3af47c3550f 100644 --- a/.github/workflows/discussion-task-miner.lock.yml +++ b/.github/workflows/discussion-task-miner.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: abb087b904ab58685ef91fd3a029f011f3dc02ff9f251ff9f06633819619e582 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"abb087b904ab58685ef91fd3a029f011f3dc02ff9f251ff9f06633819619e582"} name: "Discussion Task Miner - Code Quality Improvement Agent" "on": diff --git a/.github/workflows/docs-noob-tester.lock.yml b/.github/workflows/docs-noob-tester.lock.yml index ec55552b902..b71192fc1ee 100644 --- a/.github/workflows/docs-noob-tester.lock.yml +++ b/.github/workflows/docs-noob-tester.lock.yml @@ -28,7 +28,7 @@ # - shared/docs-server-lifecycle.md # - shared/mood.md # -# frontmatter-hash: 3aa3ed08915a07cfe487bfab52832ff0909901354b2b4df0d48bff93bba5eea5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3aa3ed08915a07cfe487bfab52832ff0909901354b2b4df0d48bff93bba5eea5"} name: "Documentation Noob Tester" "on": diff --git a/.github/workflows/draft-pr-cleanup.lock.yml b/.github/workflows/draft-pr-cleanup.lock.yml index 00ea59195a4..33d688b4d1e 100644 --- a/.github/workflows/draft-pr-cleanup.lock.yml +++ b/.github/workflows/draft-pr-cleanup.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 3eb180640f80ddff447563d5c635ca11913c2cd790726258e0f4f6449c2f6ba1 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3eb180640f80ddff447563d5c635ca11913c2cd790726258e0f4f6449c2f6ba1"} name: "Draft PR Cleanup" "on": diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index 2e6a290d0b3..462e0ded6d0 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: c5be1cf2be142247a13c39ee11de63cdc913ae5a3d2d9ab9fb9394c2ae9cb7b4 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c5be1cf2be142247a13c39ee11de63cdc913ae5a3d2d9ab9fb9394c2ae9cb7b4"} name: "Duplicate Code Detector" "on": diff --git a/.github/workflows/example-custom-error-patterns.lock.yml b/.github/workflows/example-custom-error-patterns.lock.yml index 5e6dfeba72f..d4a4d422757 100644 --- a/.github/workflows/example-custom-error-patterns.lock.yml +++ b/.github/workflows/example-custom-error-patterns.lock.yml @@ -26,7 +26,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 5fb42e71fdea5fafa3ea342aac01e6373a703bf85c191fe80ab16d873ee25131 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"5fb42e71fdea5fafa3ea342aac01e6373a703bf85c191fe80ab16d873ee25131"} name: "Example: Custom Error Patterns" "on": diff --git a/.github/workflows/example-permissions-warning.lock.yml b/.github/workflows/example-permissions-warning.lock.yml index 86d5026c9b4..1f7737501f1 100644 --- a/.github/workflows/example-permissions-warning.lock.yml +++ b/.github/workflows/example-permissions-warning.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 7885ee82ff0bf979506525a90d1f509fafeac200be62ed4d79552baa077a33ee +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7885ee82ff0bf979506525a90d1f509fafeac200be62ed4d79552baa077a33ee"} name: "Example: Properly Provisioned Permissions" "on": diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index 5a61049beda..03c575c416d 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 3aaa27f1007e0f3516fcd49080a0996d71beaf51056e5eeb29429146abfbe24a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3aaa27f1007e0f3516fcd49080a0996d71beaf51056e5eeb29429146abfbe24a"} name: "Weekly Workflow Analysis" "on": diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index 77cc8a4fa42..8757a6dd937 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: fe3a2df8fd1997bea5ed310c527762f76c1e696a8aa649c51e6437865f20e570 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"fe3a2df8fd1997bea5ed310c527762f76c1e696a8aa649c51e6437865f20e570"} name: "The Great Escapi" "on": diff --git a/.github/workflows/firewall.lock.yml b/.github/workflows/firewall.lock.yml index 885def0f6ff..fd0ca707779 100644 --- a/.github/workflows/firewall.lock.yml +++ b/.github/workflows/firewall.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 92f2186cfc3bb66ef47342e0e23abc1ed566cc0dee63d87b741daf49a91d9041 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"92f2186cfc3bb66ef47342e0e23abc1ed566cc0dee63d87b741daf49a91d9041"} name: "Firewall Test Agent" "on": diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index 7e9aec99cb7..cb7644667f8 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: ce74c3e032f512ff328c2bc23406066e1a3e88028d8bd201952252c43d45aa61 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ce74c3e032f512ff328c2bc23406066e1a3e88028d8bd201952252c43d45aa61"} name: "Functional Pragmatist" "on": diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index a3f1700ad75..95562355a1c 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -29,7 +29,7 @@ # - shared/python-dataviz.md # - shared/reporting.md # -# frontmatter-hash: 329406755679f6647c46ccab5fdddc915f5d0c0d8302a577d3a1d948d3507485 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"329406755679f6647c46ccab5fdddc915f5d0c0d8302a577d3a1d948d3507485"} name: "GitHub MCP Structural Analysis" "on": diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index 682b49a113d..fee86063362 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: a1fef3d7f0da48b305c723f3ea2cf88200b8cab572707fb83ca7afb76a0b36aa +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a1fef3d7f0da48b305c723f3ea2cf88200b8cab572707fb83ca7afb76a0b36aa"} name: "GitHub MCP Remote Server Tools Report Generator" "on": diff --git a/.github/workflows/github-remote-mcp-auth-test.lock.yml b/.github/workflows/github-remote-mcp-auth-test.lock.yml index c23e939ce3b..d4350406e4c 100644 --- a/.github/workflows/github-remote-mcp-auth-test.lock.yml +++ b/.github/workflows/github-remote-mcp-auth-test.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: f3b0bd24cb8b3e173ae390adff62e130c6defb4d3868cb491d97cfb032c7f1ab +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f3b0bd24cb8b3e173ae390adff62e130c6defb4d3868cb491d97cfb032c7f1ab"} name: "GitHub Remote MCP Authentication Test" "on": diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 68dd9077856..2d69d42336e 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -29,7 +29,7 @@ # - ../skills/documentation/SKILL.md # - shared/mood.md # -# frontmatter-hash: 6be00c3b09c8b878bc763fb4b2d95a59f1458420d6c2d07c3c0b87b7186032f2 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"6be00c3b09c8b878bc763fb4b2d95a59f1458420d6c2d07c3c0b87b7186032f2"} name: "Glossary Maintainer" "on": diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index 7b39a254820..633686ba20f 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 22e9487ceb9c0505dbd86b1f3b35cd59f51340fc93935de92cbc4aa5f2f83992 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"22e9487ceb9c0505dbd86b1f3b35cd59f51340fc93935de92cbc4aa5f2f83992"} name: "Go Fan" "on": diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index aa23c0ce483..e6699ab9dcf 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -28,7 +28,7 @@ # - shared/go-make.md # - shared/mood.md # -# frontmatter-hash: 1b7a07ffb55ab7777d1b68f610f5787a6c7ec4e6cec45547deb6b87e0e75c5d9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"1b7a07ffb55ab7777d1b68f610f5787a6c7ec4e6cec45547deb6b87e0e75c5d9"} name: "Go Logger Enhancement" "on": diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index 291c14a40ec..7c160937502 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -28,7 +28,7 @@ # - shared/mcp/ast-grep.md # - shared/mood.md # -# frontmatter-hash: 423971fb3b0a7665efe1f8dc67b1370def0ca46f83b64630387f4ce67599cdb8 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"423971fb3b0a7665efe1f8dc67b1370def0ca46f83b64630387f4ce67599cdb8"} name: "Go Pattern Detector" "on": diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index 144fc4ce6ce..064493386a3 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 323dca9e8e64355be221b4a90b7cbe1c0f431a3b02f32eb67ec2d7643e28830e +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"323dca9e8e64355be221b4a90b7cbe1c0f431a3b02f32eb67ec2d7643e28830e"} name: "GPL Dependency Cleaner (gpclean)" "on": diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index f0eadfd1ec3..c81effaa698 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 5ca7d98654eda20f8127f62bff3547e10253af296a8ca719f146f41cc44007ad +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"5ca7d98654eda20f8127f62bff3547e10253af296a8ca719f146f41cc44007ad"} name: "Grumpy Code Reviewer 🔥" "on": diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index d34fe4f5987..5091bdd36a6 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -28,7 +28,7 @@ # - ../agents/ci-cleaner.agent.md # - shared/mood.md # -# frontmatter-hash: a357047a49d2c10cfbbaab657ff9b46b83d17cbe04a033659d38cc572be8b382 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a357047a49d2c10cfbbaab657ff9b46b83d17cbe04a033659d38cc572be8b382"} name: "CI Cleaner" "on": diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 169fca902c5..485d6efc6c1 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: e2e438a39d00b81ff1620cdf156a2ac8bc069c0f48cce484f54df2b0889cb57a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e2e438a39d00b81ff1620cdf156a2ac8bc069c0f48cce484f54df2b0889cb57a"} name: "Instructions Janitor" "on": diff --git a/.github/workflows/issue-arborist.lock.yml b/.github/workflows/issue-arborist.lock.yml index e707854b373..f09dea8203e 100644 --- a/.github/workflows/issue-arborist.lock.yml +++ b/.github/workflows/issue-arborist.lock.yml @@ -28,7 +28,7 @@ # - shared/jqschema.md # - shared/mood.md # -# frontmatter-hash: 3e2e9592039edbceb3148d98dbe9956e03d8e43c76aede673d2bdb751af40cf9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3e2e9592039edbceb3148d98dbe9956e03d8e43c76aede673d2bdb751af40cf9"} name: "Issue Arborist" "on": diff --git a/.github/workflows/issue-classifier.lock.yml b/.github/workflows/issue-classifier.lock.yml index fe7f38a728a..a77b83420f5 100644 --- a/.github/workflows/issue-classifier.lock.yml +++ b/.github/workflows/issue-classifier.lock.yml @@ -28,7 +28,7 @@ # - shared/actions-ai-inference.md # - shared/mood.md # -# frontmatter-hash: 02b7e24d808524620d830fa791b35807c3e603a0307c0b370d87e50cb7d7277b +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"02b7e24d808524620d830fa791b35807c3e603a0307c0b370d87e50cb7d7277b"} name: "Issue Classifier" "on": diff --git a/.github/workflows/issue-monster.lock.yml b/.github/workflows/issue-monster.lock.yml index 8fab8904c46..8a32c631953 100644 --- a/.github/workflows/issue-monster.lock.yml +++ b/.github/workflows/issue-monster.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: dc34e052a20e5b53d141cd9277e9497b52ffebc098737e1b728e4ed3bf5a71bc +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"dc34e052a20e5b53d141cd9277e9497b52ffebc098737e1b728e4ed3bf5a71bc"} name: "Issue Monster" "on": @@ -420,7 +420,7 @@ jobs: "name": "add_comment" }, { - "description": "Assign the GitHub Copilot coding agent to work on an issue or pull request. The agent will analyze the issue/PR and attempt to implement a solution, creating a pull request when complete. Use this to delegate coding tasks to Copilot. Example usage: assign_to_agent(issue_number=123, agent=\"copilot\", model=\"claude-opus-4.6\") or assign_to_agent(pull_number=456, agent=\"copilot\", pull_request_repo=\"owner/repo\") CONSTRAINTS: Maximum 3 issue(s) can be assigned to agent.", + "description": "Assign the GitHub Copilot coding agent to work on an issue or pull request. The agent will analyze the issue/PR and attempt to implement a solution, creating a pull request when complete. Use this to delegate coding tasks to Copilot. Example usage: assign_to_agent(issue_number=123, agent=\"copilot\") or assign_to_agent(pull_number=456, agent=\"copilot\", pull_request_repo=\"owner/repo\") CONSTRAINTS: Maximum 3 issue(s) can be assigned to agent.", "inputSchema": { "additionalProperties": false, "properties": { @@ -428,14 +428,6 @@ jobs: "description": "Agent identifier to assign. Defaults to 'copilot' (the Copilot coding agent) if not specified.", "type": "string" }, - "custom_agent": { - "description": "Custom agent ID to use when assigning a custom agent. Optional. This is used for specialized agent configurations beyond the standard Copilot agent.", - "type": "string" - }, - "custom_instructions": { - "description": "Custom instructions to provide to the agent. Optional. These instructions will guide the agent's behavior when working on the task.", - "type": "string" - }, "issue_number": { "description": "Issue number to assign the Copilot coding agent to. This is the numeric ID from the GitHub URL (e.g., 234 in github.com/owner/repo/issues/234). Can also be a temporary_id (e.g., 'aw_abc123', 'aw_Test123') from an issue created earlier in the same workflow run. The issue should contain clear, actionable requirements. Either issue_number or pull_number must be provided, but not both.", "type": [ @@ -443,10 +435,6 @@ jobs: "string" ] }, - "model": { - "description": "AI model to use for the agent. Optional. Examples: 'auto', 'claude-sonnet-4.5', 'claude-opus-4.5', 'claude-opus-4.6', 'gpt-5.1-codex-max', 'gpt-5.2-codex'. If omitted, defaults to 'auto' (currently Claude Sonnet 4.5). This parameter is only supported when assigning the Copilot coding agent.", - "type": "string" - }, "pull_number": { "description": "Pull request number to assign the Copilot coding agent to. This is the numeric ID from the GitHub URL (e.g., 456 in github.com/owner/repo/pull/456). Either issue_number or pull_number must be provided, but not both.", "type": [ diff --git a/.github/workflows/issue-triage-agent.lock.yml b/.github/workflows/issue-triage-agent.lock.yml index 4fab11c6e76..f81346a81c6 100644 --- a/.github/workflows/issue-triage-agent.lock.yml +++ b/.github/workflows/issue-triage-agent.lock.yml @@ -27,7 +27,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 9dbd3ff61f5a92eac5a99a5c46b452bfe4d91bbca94dc325cc4a4bfc969e005e +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"9dbd3ff61f5a92eac5a99a5c46b452bfe4d91bbca94dc325cc4a4bfc969e005e"} name: "Issue Triage Agent" "on": diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index d914654b979..fc34fa08d24 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 82e16b7b3a0ce0b39dfee5117a7c00bc1872067efe3ea45cd0114ff2165f04d5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"82e16b7b3a0ce0b39dfee5117a7c00bc1872067efe3ea45cd0114ff2165f04d5"} name: "jsweep - JavaScript Unbloater" "on": diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index 0d4cec7b20b..690f25b80be 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 16b65f0e91dbbc230a48657381e9955e83742a9972b9f6a66209b9496390fac3 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"16b65f0e91dbbc230a48657381e9955e83742a9972b9f6a66209b9496390fac3"} name: "Layout Specification Maintainer" "on": diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index b2ed498aa63..2cff2dc2caf 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: e7c02728269fcba4c4f71c4bfbbc8862e65bca98e381597bf3364acd6bc05399 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e7c02728269fcba4c4f71c4bfbbc8862e65bca98e381597bf3364acd6bc05399"} name: "Lockfile Statistics Analysis Agent" "on": diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 11e1ef35caf..bebc7b6cd18 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -42,7 +42,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 0b3a36033c9a5a9f012dcaaadda443842af75df8d790b2999c8be7eb89bdfae6 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"0b3a36033c9a5a9f012dcaaadda443842af75df8d790b2999c8be7eb89bdfae6"} name: "MCP Inspector Agent" "on": diff --git a/.github/workflows/mergefest.lock.yml b/.github/workflows/mergefest.lock.yml index 0c6e539b9a2..9ed956d6080 100644 --- a/.github/workflows/mergefest.lock.yml +++ b/.github/workflows/mergefest.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 946dbc3d5e53e272910bb2afeb49edbe63b3a9afe24498ff1534dbb1cd64fc84 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"946dbc3d5e53e272910bb2afeb49edbe63b3a9afe24498ff1534dbb1cd64fc84"} name: "Mergefest" "on": diff --git a/.github/workflows/metrics-collector.lock.yml b/.github/workflows/metrics-collector.lock.yml index 6025954bd97..441a1e85776 100644 --- a/.github/workflows/metrics-collector.lock.yml +++ b/.github/workflows/metrics-collector.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 646580bd53fc97f9fedd2b71ac1a9cc10d11ad2c6d9baff423d9fff5c28a0efd +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"646580bd53fc97f9fedd2b71ac1a9cc10d11ad2c6d9baff423d9fff5c28a0efd"} name: "Metrics Collector - Infrastructure Agent" "on": diff --git a/.github/workflows/notion-issue-summary.lock.yml b/.github/workflows/notion-issue-summary.lock.yml index d7e58b24377..bf283b95195 100644 --- a/.github/workflows/notion-issue-summary.lock.yml +++ b/.github/workflows/notion-issue-summary.lock.yml @@ -28,7 +28,7 @@ # - shared/mcp/notion.md # - shared/mood.md # -# frontmatter-hash: 88169c6119cdb607ce1030d8324a45bde076facaa8a5ca819e90fcb9e2c5e18e +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"88169c6119cdb607ce1030d8324a45bde076facaa8a5ca819e90fcb9e2c5e18e"} name: "Issue Summary to Notion" "on": diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index ee50c11e722..4d9c917f1c3 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -30,7 +30,7 @@ # - shared/python-dataviz.md # - shared/reporting.md # -# frontmatter-hash: deaabcb488823e11d1ab906ba9ac51c2aaab720c7e08fab115b541b522451fa5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"deaabcb488823e11d1ab906ba9ac51c2aaab720c7e08fab115b541b522451fa5"} name: "Organization Health Report" "on": diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 55fce34903d..80e44953e51 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -28,7 +28,7 @@ # - shared/mcp/markitdown.md # - shared/mood.md # -# frontmatter-hash: f0ff631d24bf99cb08f3741f3d450fdb207c9deb09362f1d8b0196a4464bd7b3 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f0ff631d24bf99cb08f3741f3d450fdb207c9deb09362f1d8b0196a4464bd7b3"} name: "Resource Summarizer Agent" "on": diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index f1f8db756d3..65785437a72 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: c708e2e5820dca7c69da7bdc46db153754c7db5eff5ad659c01dc46a14f311d7 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c708e2e5820dca7c69da7bdc46db153754c7db5eff5ad659c01dc46a14f311d7"} name: "Plan Command" "on": diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 0277fff8ef4..2df5b8331df 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: bea51591fd002f37dca347dc9f8a310ca504787ad90f32fe81ee688a380028f3 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"bea51591fd002f37dca347dc9f8a310ca504787ad90f32fe81ee688a380028f3"} name: "Poem Bot - A Creative Agentic Workflow" "on": diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index cbba21f94bf..be2b4a0463e 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -30,7 +30,7 @@ # - shared/reporting.md # - shared/trending-charts-simple.md # -# frontmatter-hash: 945bc90fd1a142b6a297b172a914edea73161a53ca9ae779267a6972a89524bc +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"945bc90fd1a142b6a297b172a914edea73161a53ca9ae779267a6972a89524bc"} name: "Automated Portfolio Analyst" "on": diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index c6aafaab747..2e3ada003f7 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 997e53e86e214684b33e8b1740a0c16512c093059ab844db0ccce3e932b2151c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"997e53e86e214684b33e8b1740a0c16512c093059ab844db0ccce3e932b2151c"} name: "PR Nitpick Reviewer 🔍" "on": diff --git a/.github/workflows/pr-triage-agent.lock.yml b/.github/workflows/pr-triage-agent.lock.yml index eb358f513dc..77087534b8d 100644 --- a/.github/workflows/pr-triage-agent.lock.yml +++ b/.github/workflows/pr-triage-agent.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 6bffeabbdd66874bb410dc01865464d03144d69bdcb1b9eac3e87ded92ae0cb0 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"6bffeabbdd66874bb410dc01865464d03144d69bdcb1b9eac3e87ded92ae0cb0"} name: "PR Triage Agent" "on": diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index 924f8427e6c..51219b651fa 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -31,7 +31,7 @@ # - shared/reporting.md # - shared/trending-charts-simple.md # -# frontmatter-hash: 5916161eaa3bed8bf2747c838309559e94337286bb6b11175d447c18e0f869a6 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"5916161eaa3bed8bf2747c838309559e94337286bb6b11175d447c18e0f869a6"} name: "Copilot Agent Prompt Clustering Analysis" "on": diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index ab95e0448c8..c5373496453 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -30,7 +30,7 @@ # - shared/trends.md # - shared/charts-with-trending.md # -# frontmatter-hash: 86d56c5df1106cf5af7c52d643d1ddeb70dea4f6aec028a1e7324c9f0f3db65c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"86d56c5df1106cf5af7c52d643d1ddeb70dea4f6aec028a1e7324c9f0f3db65c"} name: "Python Data Visualization Generator" "on": diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 2df04e4b7a7..4072033ee01 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: b62e483e5601e35c59a7d7e4337e705aeac232b879669f48eb40590599d0d4d7 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"b62e483e5601e35c59a7d7e4337e705aeac232b879669f48eb40590599d0d4d7"} name: "Q" "on": diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index 38deef092d6..8699965860b 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: dd5b1cf14d889cff1920700e1c5a7e21da34d3a24a65aa868baf56ae3ee545c5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"dd5b1cf14d889cff1920700e1c5a7e21da34d3a24a65aa868baf56ae3ee545c5"} name: "Code Refiner" "on": diff --git a/.github/workflows/release.lock.yml b/.github/workflows/release.lock.yml index 87dce56a155..04163cc5429 100644 --- a/.github/workflows/release.lock.yml +++ b/.github/workflows/release.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: cc2b8c6b51e275896e8102fe283fdb0e690e468cd8e5693425a35d14bb622645 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"cc2b8c6b51e275896e8102fe283fdb0e690e468cd8e5693425a35d14bb622645"} name: "Release" "on": diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index 64b55a73484..4540f0e86ad 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: c13922bec3785215d9cdbb17ce40255c6e721fa53fa97f16951eb755efedda71 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c13922bec3785215d9cdbb17ce40255c6e721fa53fa97f16951eb755efedda71"} name: "Repository Audit & Agentic Workflow Opportunity Analyzer" "on": diff --git a/.github/workflows/repo-tree-map.lock.yml b/.github/workflows/repo-tree-map.lock.yml index ad89dbf9ba0..8fdc64f1330 100644 --- a/.github/workflows/repo-tree-map.lock.yml +++ b/.github/workflows/repo-tree-map.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 535bced70452811a20772466537cce848374d7c8ea20be88e7e042c00d521a61 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"535bced70452811a20772466537cce848374d7c8ea20be88e7e042c00d521a61"} name: "Repository Tree Map Generator" "on": diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index 1f97d350c29..d3383714940 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: f256013741f67e88eceefb25ee1850aaf8834415cb0f0c02033fe0a8b0c36268 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f256013741f67e88eceefb25ee1850aaf8834415cb0f0c02033fe0a8b0c36268"} name: "Repository Quality Improvement Agent" "on": diff --git a/.github/workflows/research.lock.yml b/.github/workflows/research.lock.yml index 556ad5e6dd0..f9507cb6ec4 100644 --- a/.github/workflows/research.lock.yml +++ b/.github/workflows/research.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 3bc5d7adac1eba642348e556da6fdda43302f69b1feb09a404149133388f1b30 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3bc5d7adac1eba642348e556da6fdda43302f69b1feb09a404149133388f1b30"} name: "Basic Research Agent" "on": diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index a0a3bbca21e..794f07b7516 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: ad8dbc71ec8a8756cc9161024dcf04c143f81797b44acfff063bdfd95d63fb8b +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ad8dbc71ec8a8756cc9161024dcf04c143f81797b44acfff063bdfd95d63fb8b"} name: "Safe Output Health Monitor" "on": diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 52dbb997e3e..1b314ced66f 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: e0c0d60ffc976afffa787b28c44b95390d0d72d04a3845f11b62d8431ed03bf7 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e0c0d60ffc976afffa787b28c44b95390d0d72d04a3845f11b62d8431ed03bf7"} name: "Schema Consistency Checker" "on": diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 0adf3226ac0..509d961a41f 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -34,7 +34,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 5f21df90d95bad88fa40d8a04f659e6cda4363abf33fd54a37fa44884fbb0355 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"5f21df90d95bad88fa40d8a04f659e6cda4363abf33fd54a37fa44884fbb0355"} name: "Scout" "on": diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index 4c8b18651ad..e7fc280eb51 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 82ae4b3cf4a5010cb86430929678ad39a60cea0067dfe56ff65e4a45a0e6cdf2 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"82ae4b3cf4a5010cb86430929678ad39a60cea0067dfe56ff65e4a45a0e6cdf2"} name: "Security Compliance Campaign" "on": diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index d3f8131029d..a609e56cd04 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 7ed05f87d4291aa66da0c27f6ecb72eefa9cbe3a4653046c50372a2b1d08693b +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7ed05f87d4291aa66da0c27f6ecb72eefa9cbe3a4653046c50372a2b1d08693b"} name: "Security Review Agent 🔒" "on": diff --git a/.github/workflows/semantic-function-refactor.lock.yml b/.github/workflows/semantic-function-refactor.lock.yml index 16352de9f96..ceb398015fa 100644 --- a/.github/workflows/semantic-function-refactor.lock.yml +++ b/.github/workflows/semantic-function-refactor.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 924435422df46c5a9975adf255f0a3725fe02c8ae3a8cfc5323ee48a3b7c7680 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"924435422df46c5a9975adf255f0a3725fe02c8ae3a8cfc5323ee48a3b7c7680"} name: "Semantic Function Refactoring" "on": diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index 36661e6988f..e5ebadb464a 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: c113a8ec4b090c3eb66c6bb5b95add3ebc696fc7230fa2573f959b46d8baf0f4 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c113a8ec4b090c3eb66c6bb5b95add3ebc696fc7230fa2573f959b46d8baf0f4"} name: "Sergo - Serena Go Expert" "on": diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index 90446c402d1..62ac0b1686b 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 4614b642fb55e9a1f83d5e81cc452041c394975795ac1d22be4749855e698e45 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"4614b642fb55e9a1f83d5e81cc452041c394975795ac1d22be4749855e698e45"} name: "Slide Deck Maintainer" "on": diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 673c4121d8e..bfa8c1e6cf8 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -33,7 +33,7 @@ # - shared/mcp/tavily.md # - shared/reporting.md # -# frontmatter-hash: 22441496741c536b8d9d809d2e0e13589a1cf6874aa01ae130f90aabfaa11d11 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"22441496741c536b8d9d809d2e0e13589a1cf6874aa01ae130f90aabfaa11d11"} name: "Smoke Claude" "on": diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 7ec15f2e509..136eaea67c3 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -28,7 +28,7 @@ # - shared/gh.md # - shared/reporting.md # -# frontmatter-hash: c7ab5b4cc3b6c39a8af11ce223fd48afce3b7abce2985adb52dc59a7a47e256b +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c7ab5b4cc3b6c39a8af11ce223fd48afce3b7abce2985adb52dc59a7a47e256b"} name: "Smoke Codex" "on": diff --git a/.github/workflows/smoke-copilot-sdk.lock.yml b/.github/workflows/smoke-copilot-sdk.lock.yml index c009930e873..39eca251053 100644 --- a/.github/workflows/smoke-copilot-sdk.lock.yml +++ b/.github/workflows/smoke-copilot-sdk.lock.yml @@ -28,7 +28,7 @@ # - shared/gh.md # - shared/reporting.md # -# frontmatter-hash: 2fe2e88f7c0c250f4af942d0e27adb3a94debf0c772c24b5c18ec17f16b93602 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"2fe2e88f7c0c250f4af942d0e27adb3a94debf0c772c24b5c18ec17f16b93602"} name: "Smoke Copilot SDK" "on": diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 3dd98f46888..a4df7ee9b8b 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -29,7 +29,7 @@ # - shared/github-queries-safe-input.md # - shared/reporting.md # -# frontmatter-hash: 964ca265ed2b756b22be1ba2360d29daf0132df7a3617b7bb0868a88009e123a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"964ca265ed2b756b22be1ba2360d29daf0132df7a3617b7bb0868a88009e123a"} name: "Smoke Copilot" "on": diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index 288ef0375e6..e7b49e24a9a 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -29,7 +29,7 @@ # - shared/github-queries-safe-input.md # - shared/opencode.md # -# frontmatter-hash: 28e9c4039471e8b2fe3bf4891f7597efb7b97942685b566faa9cd57656009e5c +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"28e9c4039471e8b2fe3bf4891f7597efb7b97942685b566faa9cd57656009e5c"} name: "Smoke OpenCode" "on": diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index c8f14dbee57..c7dfbeb8b90 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -23,7 +23,7 @@ # # Smoke Project - Test project operations # -# frontmatter-hash: 2cad4dcef772bd6905657a076d744f34e2b22f6dd3fb7f717e0591ca9fbc8528 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"2cad4dcef772bd6905657a076d744f34e2b22f6dd3fb7f717e0591ca9fbc8528"} name: "Smoke Project" "on": diff --git a/.github/workflows/smoke-temporary-id.lock.yml b/.github/workflows/smoke-temporary-id.lock.yml index d6de5e16862..972cd03093c 100644 --- a/.github/workflows/smoke-temporary-id.lock.yml +++ b/.github/workflows/smoke-temporary-id.lock.yml @@ -23,7 +23,7 @@ # # Test temporary ID functionality for issue chaining and cross-references # -# frontmatter-hash: f46a58f33696edf01bd0c1ccaee894ad70f95bdf8d269b6839744eb8bae08357 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f46a58f33696edf01bd0c1ccaee894ad70f95bdf8d269b6839744eb8bae08357"} name: "Smoke Temporary ID" "on": diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 7aad2e467b6..a570f114689 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -23,7 +23,7 @@ # # Smoke test to validate common development tools are available in the agent container # -# frontmatter-hash: 798e01a94a89407a4b4102b0551de2d8376a5c3b5ef4a3622ab601229694cf78 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"798e01a94a89407a4b4102b0551de2d8376a5c3b5ef4a3622ab601229694cf78"} name: "Agent Container Smoke Test" "on": diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index dcd0ace4f11..1ca930ef305 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -30,7 +30,7 @@ # - shared/python-dataviz.md # - shared/trending-charts-simple.md # -# frontmatter-hash: 0de1f0aac847f2beec40813bebbfb9838730eb23e30f47920ab7ed3b489cfe3e +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"0de1f0aac847f2beec40813bebbfb9838730eb23e30f47920ab7ed3b489cfe3e"} name: "Stale Repository Identifier" "on": diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index df42b52a17c..e4073fab91e 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 63f49f3b848018a7d00297f11333e23ceb641474c6285b58c2b5bb3e36fc1746 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"63f49f3b848018a7d00297f11333e23ceb641474c6285b58c2b5bb3e36fc1746"} name: "Static Analysis Report" "on": diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index bea864be788..9d942c4decb 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: f309fe23c13debe9a3441258ac96fbe446d207aabeb50ecd7e0543a20786d79a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f309fe23c13debe9a3441258ac96fbe446d207aabeb50ecd7e0543a20786d79a"} name: "Step Name Alignment" "on": diff --git a/.github/workflows/sub-issue-closer.lock.yml b/.github/workflows/sub-issue-closer.lock.yml index bdc5874d617..c3cba11d58d 100644 --- a/.github/workflows/sub-issue-closer.lock.yml +++ b/.github/workflows/sub-issue-closer.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 67a1744589def0d89133d581aee4b752753adbdc77f9d76790c1e16ee98b2508 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"67a1744589def0d89133d581aee4b752753adbdc77f9d76790c1e16ee98b2508"} name: "Sub-Issue Closer" "on": diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index b2e0240adb7..44c50bdf6d2 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 658bec814a532760ef7ef68405abfe89dc1288fedc59b11ae7d0610c8e84f3de +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"658bec814a532760ef7ef68405abfe89dc1288fedc59b11ae7d0610c8e84f3de"} name: "Super Linter Report" "on": diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 9af2b2815d4..caa03144814 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -29,7 +29,7 @@ # - ../skills/documentation/SKILL.md # - shared/mood.md # -# frontmatter-hash: b05af1a6909bac94686311648f15c297edc97293271f28e107ab0b16b3846ed3 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"b05af1a6909bac94686311648f15c297edc97293271f28e107ab0b16b3846ed3"} name: "Rebuild the documentation after making changes" "on": diff --git a/.github/workflows/terminal-stylist.lock.yml b/.github/workflows/terminal-stylist.lock.yml index 22c0cc3c7f8..c74b661f4fc 100644 --- a/.github/workflows/terminal-stylist.lock.yml +++ b/.github/workflows/terminal-stylist.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: c99a64c4ce143d7bf55240d81d76c63f88ead024ce63d0b64301207de70b1b44 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c99a64c4ce143d7bf55240d81d76c63f88ead024ce63d0b64301207de70b1b44"} name: "Terminal Stylist" "on": diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index efff7219ec7..34828cbd53b 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: ccda8e38ee3a43619d6ab3ce9db317722d6a78804c4f49a1b4a9117d2ff021c7 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ccda8e38ee3a43619d6ab3ce9db317722d6a78804c4f49a1b4a9117d2ff021c7"} name: "Test Create PR Error Handling" "on": diff --git a/.github/workflows/test-dispatcher.lock.yml b/.github/workflows/test-dispatcher.lock.yml index 4f75c5bbfea..18ea4fb07ed 100644 --- a/.github/workflows/test-dispatcher.lock.yml +++ b/.github/workflows/test-dispatcher.lock.yml @@ -26,7 +26,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 07c26a0fb014466ca768c00f41b46da3610d4a95f012914facf6adfd5775b924 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"07c26a0fb014466ca768c00f41b46da3610d4a95f012914facf6adfd5775b924"} name: "Test Dispatcher Workflow" "on": diff --git a/.github/workflows/test-project-url-default.lock.yml b/.github/workflows/test-project-url-default.lock.yml index f838342ec4e..e1eb21f4026 100644 --- a/.github/workflows/test-project-url-default.lock.yml +++ b/.github/workflows/test-project-url-default.lock.yml @@ -26,7 +26,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 4b8eb1036171f89a3f37409cafdf433cf2dab9a4199718beb62624953b63c1a5 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"4b8eb1036171f89a3f37409cafdf433cf2dab9a4199718beb62624953b63c1a5"} name: "Test Project URL Explicit Requirement" "on": diff --git a/.github/workflows/test-workflow.lock.yml b/.github/workflows/test-workflow.lock.yml index 6db5d367cae..b38cdbd16da 100644 --- a/.github/workflows/test-workflow.lock.yml +++ b/.github/workflows/test-workflow.lock.yml @@ -26,7 +26,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 7e28df1a5884fe8ab7987791066296378c3d879a1c3674706d645017734ec3de +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7e28df1a5884fe8ab7987791066296378c3d879a1c3674706d645017734ec3de"} name: "Test Workflow" "on": diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index 38ed526962c..8dc6d9ef93f 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: 10f5767aeb615529e66a7fb66dd07ef0fee4392bcd3fa804f3684a331544e229 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"10f5767aeb615529e66a7fb66dd07ef0fee4392bcd3fa804f3684a331544e229"} name: "Tidy" "on": diff --git a/.github/workflows/typist.lock.yml b/.github/workflows/typist.lock.yml index 429f2ea57f6..3244a82f887 100644 --- a/.github/workflows/typist.lock.yml +++ b/.github/workflows/typist.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 8bb55e253e13e36b811ff2cfde52d97a0e6c058e4b2ec25fbfba2539f19a17d4 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"8bb55e253e13e36b811ff2cfde52d97a0e6c058e4b2ec25fbfba2539f19a17d4"} name: "Typist - Go Type Analysis" "on": diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 156f9f12ae2..34d6a0784b7 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: a18598e41420825190b0f32d9540815f5aa323b433565455ba2843df8a425878 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a18598e41420825190b0f32d9540815f5aa323b433565455ba2843df8a425878"} name: "Ubuntu Actions Image Analyzer" "on": diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index b5b4f89ffa4..6e8817f55dc 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -29,7 +29,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 3a033f6c1d3cb3b98f326f5cbef7bd65bf5c65496c593df323570deaf055c140 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3a033f6c1d3cb3b98f326f5cbef7bd65bf5c65496c593df323570deaf055c140"} name: "Documentation Unbloat" "on": diff --git a/.github/workflows/video-analyzer.lock.yml b/.github/workflows/video-analyzer.lock.yml index fc8125123ec..11013f2a543 100644 --- a/.github/workflows/video-analyzer.lock.yml +++ b/.github/workflows/video-analyzer.lock.yml @@ -28,7 +28,7 @@ # - shared/ffmpeg.md # - shared/mood.md # -# frontmatter-hash: f2304eadcdad1d6d90cedf29453667ccc710f1775b3ffc0adb9684b85740b9c0 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f2304eadcdad1d6d90cedf29453667ccc710f1775b3ffc0adb9684b85740b9c0"} name: "Video Analysis Agent" "on": diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 1ff23459b69..0d5be141ef0 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -30,7 +30,7 @@ # - shared/reporting.md # - shared/trends.md # -# frontmatter-hash: 8fa081d6f6a77d6b13ab6d803c03b43ddb3cedcacc697fe6db5cf6a2726f1cc2 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"8fa081d6f6a77d6b13ab6d803c03b43ddb3cedcacc697fe6db5cf6a2726f1cc2"} name: "Weekly Issue Summary" "on": diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index ba77292a1da..6790c1c5cb5 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -23,7 +23,7 @@ # # Reviews changes to the Safe Outputs specification and ensures the conformance checker script is up to date # -# frontmatter-hash: 8c2101979950b517597aa3c9a241c7dbe762d2db9cc38c38b4fd4a70faa990a4 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"8c2101979950b517597aa3c9a241c7dbe762d2db9cc38c38b4fd4a70faa990a4"} name: "Weekly Safe Outputs Specification Review" "on": diff --git a/.github/workflows/workflow-generator.lock.yml b/.github/workflows/workflow-generator.lock.yml index 7af5e475c47..fb4953c90b7 100644 --- a/.github/workflows/workflow-generator.lock.yml +++ b/.github/workflows/workflow-generator.lock.yml @@ -27,7 +27,7 @@ # Imports: # - shared/mood.md # -# frontmatter-hash: a050c2eeebe0b225b5e51f8bb7e533314d35f338d1db67669665b1be4b8adfb9 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a050c2eeebe0b225b5e51f8bb7e533314d35f338d1db67669665b1be4b8adfb9"} name: "Workflow Generator" "on": @@ -400,7 +400,7 @@ jobs: cat > /opt/gh-aw/safeoutputs/tools.json << 'GH_AW_SAFE_OUTPUTS_TOOLS_EOF' [ { - "description": "Assign the GitHub Copilot coding agent to work on an issue or pull request. The agent will analyze the issue/PR and attempt to implement a solution, creating a pull request when complete. Use this to delegate coding tasks to Copilot. Example usage: assign_to_agent(issue_number=123, agent=\"copilot\", model=\"claude-opus-4.6\") or assign_to_agent(pull_number=456, agent=\"copilot\", pull_request_repo=\"owner/repo\") CONSTRAINTS: Maximum 1 issue(s) can be assigned to agent.", + "description": "Assign the GitHub Copilot coding agent to work on an issue or pull request. The agent will analyze the issue/PR and attempt to implement a solution, creating a pull request when complete. Use this to delegate coding tasks to Copilot. Example usage: assign_to_agent(issue_number=123, agent=\"copilot\") or assign_to_agent(pull_number=456, agent=\"copilot\", pull_request_repo=\"owner/repo\") CONSTRAINTS: Maximum 1 issue(s) can be assigned to agent.", "inputSchema": { "additionalProperties": false, "properties": { @@ -408,14 +408,6 @@ jobs: "description": "Agent identifier to assign. Defaults to 'copilot' (the Copilot coding agent) if not specified.", "type": "string" }, - "custom_agent": { - "description": "Custom agent ID to use when assigning a custom agent. Optional. This is used for specialized agent configurations beyond the standard Copilot agent.", - "type": "string" - }, - "custom_instructions": { - "description": "Custom instructions to provide to the agent. Optional. These instructions will guide the agent's behavior when working on the task.", - "type": "string" - }, "issue_number": { "description": "Issue number to assign the Copilot coding agent to. This is the numeric ID from the GitHub URL (e.g., 234 in github.com/owner/repo/issues/234). Can also be a temporary_id (e.g., 'aw_abc123', 'aw_Test123') from an issue created earlier in the same workflow run. The issue should contain clear, actionable requirements. Either issue_number or pull_number must be provided, but not both.", "type": [ @@ -423,10 +415,6 @@ jobs: "string" ] }, - "model": { - "description": "AI model to use for the agent. Optional. Examples: 'auto', 'claude-sonnet-4.5', 'claude-opus-4.5', 'claude-opus-4.6', 'gpt-5.1-codex-max', 'gpt-5.2-codex'. If omitted, defaults to 'auto' (currently Claude Sonnet 4.5). This parameter is only supported when assigning the Copilot coding agent.", - "type": "string" - }, "pull_number": { "description": "Pull request number to assign the Copilot coding agent to. This is the numeric ID from the GitHub URL (e.g., 456 in github.com/owner/repo/pull/456). Either issue_number or pull_number must be provided, but not both.", "type": [ diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index abfb485c815..30f5c60669f 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 766a0d320d7f42f719cd210f29f2e5a5598c281d919a261a98aa039d8c567b4a +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"766a0d320d7f42f719cd210f29f2e5a5598c281d919a261a98aa039d8c567b4a"} name: "Workflow Health Manager - Meta-Orchestrator" "on": diff --git a/.github/workflows/workflow-normalizer.lock.yml b/.github/workflows/workflow-normalizer.lock.yml index eb1de2a302a..41698865ba8 100644 --- a/.github/workflows/workflow-normalizer.lock.yml +++ b/.github/workflows/workflow-normalizer.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 8673a900f90be1db556f4d2a8902d74919937b2037e03b2cd6445fd5e78675d4 +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"8673a900f90be1db556f4d2a8902d74919937b2037e03b2cd6445fd5e78675d4"} name: "Workflow Normalizer" "on": diff --git a/.github/workflows/workflow-skill-extractor.lock.yml b/.github/workflows/workflow-skill-extractor.lock.yml index 51613693fc4..3bb98aaf291 100644 --- a/.github/workflows/workflow-skill-extractor.lock.yml +++ b/.github/workflows/workflow-skill-extractor.lock.yml @@ -28,7 +28,7 @@ # - shared/mood.md # - shared/reporting.md # -# frontmatter-hash: 78cb8ee1a41e1061163bed55c1d04a284852cecfca965bbd6eae93b28ed15f4e +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"78cb8ee1a41e1061163bed55c1d04a284852cecfca965bbd6eae93b28ed15f4e"} name: "Workflow Skill Extractor" "on": diff --git a/pkg/workflow/action_sha_checker.go b/pkg/workflow/action_sha_checker.go index 74d8ac7a42e..7705275a8de 100644 --- a/pkg/workflow/action_sha_checker.go +++ b/pkg/workflow/action_sha_checker.go @@ -36,6 +36,11 @@ func ExtractActionsFromLockFile(lockFilePath string) ([]ActionUsage, error) { return nil, fmt.Errorf("failed to read lock file: %w", err) } + // Validate lock file schema compatibility before parsing + if err := ValidateLockSchemaCompatibility(string(content), lockFilePath); err != nil { + return nil, err + } + // Parse YAML to extract actions from "uses" fields var workflowData map[string]any if err := yaml.Unmarshal(content, &workflowData); err != nil { diff --git a/pkg/workflow/action_sha_checker_test.go b/pkg/workflow/action_sha_checker_test.go index 3bfbab018f0..f0117959b19 100644 --- a/pkg/workflow/action_sha_checker_test.go +++ b/pkg/workflow/action_sha_checker_test.go @@ -15,7 +15,7 @@ func TestExtractActionsFromLockFile(t *testing.T) { tmpDir := testutil.TempDir(t, "test-*") lockFile := filepath.Join(tmpDir, "test.lock.yml") - lockContent := ` + lockContent := `# gh-aw-metadata: {"schema_version":"v1"} name: Test Workflow on: push jobs: @@ -76,7 +76,7 @@ func TestExtractActionsFromLockFileNoDuplicates(t *testing.T) { tmpDir := testutil.TempDir(t, "test-*") lockFile := filepath.Join(tmpDir, "test.lock.yml") - lockContent := ` + lockContent := `# gh-aw-metadata: {"schema_version":"v1"} name: Test Workflow on: push jobs: @@ -160,7 +160,7 @@ func TestExtractActionsFromLockFileNoActions(t *testing.T) { tmpDir := testutil.TempDir(t, "test-*") lockFile := filepath.Join(tmpDir, "test.lock.yml") - lockContent := ` + lockContent := `# gh-aw-metadata: {"schema_version":"v1"} name: Test Workflow on: push jobs: @@ -200,7 +200,7 @@ func TestExtractActionsFromLockFileWithVersionComments(t *testing.T) { tmpDir := testutil.TempDir(t, "test-*") lockFile := filepath.Join(tmpDir, "test.lock.yml") - lockContent := ` + lockContent := `# gh-aw-metadata: {"schema_version":"v1"} name: Test Workflow on: push jobs: diff --git a/pkg/workflow/compiler_yaml.go b/pkg/workflow/compiler_yaml.go index b51db73eb19..6150efdad0b 100644 --- a/pkg/workflow/compiler_yaml.go +++ b/pkg/workflow/compiler_yaml.go @@ -102,11 +102,18 @@ func (c *Compiler) generateWorkflowHeader(yaml *strings.Builder, data *WorkflowD } } - // Add frontmatter hash if computed - // Format on a single line to minimize merge conflicts + // Add lock metadata (schema version + frontmatter hash + stop time) as JSON + // Single-line format to minimize merge conflicts and be unaffected by LOC changes if frontmatterHash != "" { yaml.WriteString("#\n") - fmt.Fprintf(yaml, "# frontmatter-hash: %s\n", frontmatterHash) + metadata := GenerateLockMetadata(frontmatterHash, data.StopTime) + metadataJSON, err := metadata.ToJSON() + if err != nil { + // Fallback to legacy format if JSON serialization fails + fmt.Fprintf(yaml, "# frontmatter-hash: %s\n", frontmatterHash) + } else { + fmt.Fprintf(yaml, "# gh-aw-metadata: %s\n", metadataJSON) + } } // Add stop-time comment if configured diff --git a/pkg/workflow/lock_schema.go b/pkg/workflow/lock_schema.go new file mode 100644 index 00000000000..339108dda2f --- /dev/null +++ b/pkg/workflow/lock_schema.go @@ -0,0 +1,133 @@ +package workflow + +import ( + "encoding/json" + "fmt" + "regexp" + "strings" + + "github.com/github/gh-aw/pkg/logger" +) + +var lockSchemaLog = logger.New("workflow:lock_schema") + +// LockSchemaVersion represents a lock file schema version +type LockSchemaVersion string + +const ( + // LockSchemaV1 is the current lock file schema version + LockSchemaV1 LockSchemaVersion = "v1" +) + +// LockMetadata represents the structured metadata embedded in lock files +type LockMetadata struct { + SchemaVersion LockSchemaVersion `json:"schema_version"` + FrontmatterHash string `json:"frontmatter_hash,omitempty"` + StopTime string `json:"stop_time,omitempty"` +} + +// SupportedSchemaVersions lists all schema versions this build can consume +var SupportedSchemaVersions = []LockSchemaVersion{ + LockSchemaV1, +} + +// IsSchemaVersionSupported checks if a schema version is supported +func IsSchemaVersionSupported(version LockSchemaVersion) bool { + for _, v := range SupportedSchemaVersions { + if v == version { + return true + } + } + return false +} + +// ExtractMetadataFromLockFile extracts structured metadata from a lock file's comment header +// Returns metadata and whether legacy format (no metadata) was detected +func ExtractMetadataFromLockFile(content string) (*LockMetadata, bool, error) { + // Look for JSON metadata in comments (format: # gh-aw-metadata: {...}) + // Use .+ to capture to end of line since metadata is single-line JSON + metadataPattern := regexp.MustCompile(`#\s*gh-aw-metadata:\s*(\{.+\})`) + matches := metadataPattern.FindStringSubmatch(content) + + if len(matches) >= 2 { + jsonStr := matches[1] + var metadata LockMetadata + if err := json.Unmarshal([]byte(jsonStr), &metadata); err != nil { + return nil, false, fmt.Errorf("failed to parse lock metadata JSON: %w", err) + } + lockSchemaLog.Printf("Extracted metadata from lock file: schema=%s", metadata.SchemaVersion) + return &metadata, false, nil + } + + // Legacy format: look for frontmatter-hash without JSON metadata + hashPattern := regexp.MustCompile(`#\s*frontmatter-hash:\s*([0-9a-f]{64})`) + if hashPattern.MatchString(content) { + lockSchemaLog.Print("Legacy lock file detected (no schema version)") + return nil, true, nil + } + + // No metadata found at all + return nil, false, nil +} + +// ValidateLockSchemaCompatibility validates that a lock file's schema is compatible +// Returns an error with actionable guidance if incompatible +func ValidateLockSchemaCompatibility(content string, lockFilePath string) error { + metadata, isLegacy, err := ExtractMetadataFromLockFile(content) + if err != nil { + return fmt.Errorf("failed to extract metadata from %s: %w", lockFilePath, err) + } + + // Legacy files (no schema version) are supported for backward compatibility + if isLegacy { + lockSchemaLog.Printf("Legacy lock file accepted: %s", lockFilePath) + return nil + } + + // Missing metadata entirely is suspicious + if metadata == nil { + return fmt.Errorf("lock file %s is missing required metadata. This file may be corrupted or manually edited.\n\nTo fix this, recompile the workflow:\n gh aw compile %s", + lockFilePath, + strings.TrimSuffix(lockFilePath, ".lock.yml")+".md") + } + + // Check schema compatibility + if !IsSchemaVersionSupported(metadata.SchemaVersion) { + // Future version detected + return fmt.Errorf("lock file %s uses unsupported schema version '%s'.\n\nThis file was generated by a newer version of gh-aw that uses incompatible features.\n\nSupported versions: %s\n\nTo fix this:\n 1. Upgrade gh-aw: gh extension upgrade gh-aw\n 2. Or downgrade the lock file by editing the source .md file and recompiling:\n gh aw compile %s", + lockFilePath, + metadata.SchemaVersion, + formatSupportedVersions(), + strings.TrimSuffix(lockFilePath, ".lock.yml")+".md") + } + + lockSchemaLog.Printf("Lock file schema validated: %s (version=%s)", lockFilePath, metadata.SchemaVersion) + return nil +} + +// formatSupportedVersions formats the list of supported versions for error messages +func formatSupportedVersions() string { + versions := make([]string, len(SupportedSchemaVersions)) + for i, v := range SupportedSchemaVersions { + versions[i] = string(v) + } + return strings.Join(versions, ", ") +} + +// GenerateLockMetadata creates a LockMetadata struct for embedding in lock files +func GenerateLockMetadata(frontmatterHash string, stopTime string) *LockMetadata { + return &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: frontmatterHash, + StopTime: stopTime, + } +} + +// ToJSON converts LockMetadata to a compact JSON string for embedding in comments +func (m *LockMetadata) ToJSON() (string, error) { + bytes, err := json.Marshal(m) + if err != nil { + return "", fmt.Errorf("failed to serialize lock metadata: %w", err) + } + return string(bytes), nil +} diff --git a/pkg/workflow/lock_schema_test.go b/pkg/workflow/lock_schema_test.go new file mode 100644 index 00000000000..7af0395b043 --- /dev/null +++ b/pkg/workflow/lock_schema_test.go @@ -0,0 +1,457 @@ +//go:build !integration + +package workflow + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestExtractMetadataFromLockFile(t *testing.T) { + tests := []struct { + name string + content string + expectMetadata *LockMetadata + expectLegacy bool + expectError bool + }{ + { + name: "valid v1 metadata", + content: `# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"abc123"} +name: test +`, + expectMetadata: &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: "abc123", + }, + expectLegacy: false, + expectError: false, + }, + { + name: "valid v1 metadata with spaces", + content: `# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"def456"} +name: test +`, + expectMetadata: &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: "def456", + }, + expectLegacy: false, + expectError: false, + }, + { + name: "legacy format with frontmatter-hash only", + content: `# frontmatter-hash: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef +name: test +`, + expectMetadata: nil, + expectLegacy: true, + expectError: false, + }, + { + name: "no metadata", + content: `name: test +on: push +`, + expectMetadata: nil, + expectLegacy: false, + expectError: false, + }, + { + name: "malformed JSON metadata", + content: `# gh-aw-metadata: {invalid json} +name: test +`, + expectMetadata: nil, + expectLegacy: false, + expectError: true, + }, + { + name: "future version", + content: `# gh-aw-metadata: {"schema_version":"v2","frontmatter_hash":"future"} +name: test +`, + expectMetadata: &LockMetadata{ + SchemaVersion: "v2", + FrontmatterHash: "future", + }, + expectLegacy: false, + expectError: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + metadata, isLegacy, err := ExtractMetadataFromLockFile(tt.content) + + if tt.expectError { + assert.Error(t, err, "Expected error for malformed metadata") + } else { + assert.NoError(t, err, "Should not error on valid or missing metadata") + } + + assert.Equal(t, tt.expectLegacy, isLegacy, "Legacy format detection mismatch") + + if tt.expectMetadata != nil { + require.NotNil(t, metadata, "Expected metadata to be parsed") + assert.Equal(t, tt.expectMetadata.SchemaVersion, metadata.SchemaVersion, "Schema version mismatch") + assert.Equal(t, tt.expectMetadata.FrontmatterHash, metadata.FrontmatterHash, "Frontmatter hash mismatch") + } else if !tt.expectError { + assert.Nil(t, metadata, "Expected nil metadata") + } + }) + } +} + +func TestValidateLockSchemaCompatibility(t *testing.T) { + tests := []struct { + name string + content string + lockPath string + expectError bool + errorText string + }{ + { + name: "valid v1 schema", + content: `# gh-aw-metadata: {"schema_version":"v1"} +name: test +`, + lockPath: "test.lock.yml", + expectError: false, + }, + { + name: "legacy format is accepted", + content: `# frontmatter-hash: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef +name: test +`, + lockPath: "legacy.lock.yml", + expectError: false, + }, + { + name: "unsupported future version fails", + content: `# gh-aw-metadata: {"schema_version":"v2"} +name: test +`, + lockPath: "future.lock.yml", + expectError: true, + errorText: "unsupported schema version 'v2'", + }, + { + name: "missing metadata fails", + content: `name: test +on: push +`, + lockPath: "no-metadata.lock.yml", + expectError: true, + errorText: "missing required metadata", + }, + { + name: "malformed metadata fails", + content: `# gh-aw-metadata: {bad json} +name: test +`, + lockPath: "malformed.lock.yml", + expectError: true, + errorText: "failed to parse lock metadata JSON", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidateLockSchemaCompatibility(tt.content, tt.lockPath) + + if tt.expectError { + require.Error(t, err, "Expected validation error") + if tt.errorText != "" { + assert.Contains(t, err.Error(), tt.errorText, "Error message should contain expected text") + } + } else { + assert.NoError(t, err, "Should not error on compatible schema") + } + }) + } +} + +func TestIsSchemaVersionSupported(t *testing.T) { + tests := []struct { + name string + version LockSchemaVersion + supported bool + }{ + { + name: "v1 is supported", + version: LockSchemaV1, + supported: true, + }, + { + name: "v2 is not supported", + version: "v2", + supported: false, + }, + { + name: "v0 is not supported", + version: "v0", + supported: false, + }, + { + name: "empty version is not supported", + version: "", + supported: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := IsSchemaVersionSupported(tt.version) + assert.Equal(t, tt.supported, result, "Schema version support mismatch") + }) + } +} + +func TestGenerateLockMetadata(t *testing.T) { + hash := "abcd1234" + stopTime := "2026-02-17 20:00:00" + metadata := GenerateLockMetadata(hash, stopTime) + + assert.NotNil(t, metadata, "Metadata should be created") + assert.Equal(t, LockSchemaV1, metadata.SchemaVersion, "Should use current schema version") + assert.Equal(t, hash, metadata.FrontmatterHash, "Should preserve frontmatter hash") + assert.Equal(t, stopTime, metadata.StopTime, "Should preserve stop time") +} + +func TestGenerateLockMetadataWithoutStopTime(t *testing.T) { + hash := "abcd1234" + metadata := GenerateLockMetadata(hash, "") + + assert.NotNil(t, metadata, "Metadata should be created") + assert.Equal(t, LockSchemaV1, metadata.SchemaVersion, "Should use current schema version") + assert.Equal(t, hash, metadata.FrontmatterHash, "Should preserve frontmatter hash") + assert.Equal(t, "", metadata.StopTime, "Stop time should be empty") +} + +func TestLockMetadataToJSON(t *testing.T) { + tests := []struct { + name string + metadata *LockMetadata + contains []string + }{ + { + name: "basic metadata", + metadata: &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: "test123", + }, + contains: []string{ + `"schema_version":"v1"`, + `"frontmatter_hash":"test123"`, + }, + }, + { + name: "metadata with empty hash", + metadata: &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: "", + }, + contains: []string{ + `"schema_version":"v1"`, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + json, err := tt.metadata.ToJSON() + assert.NoError(t, err, "Should serialize to JSON without error") + + for _, expected := range tt.contains { + assert.Contains(t, json, expected, "JSON should contain expected field") + } + }) + } +} + +func TestValidationErrorMessages(t *testing.T) { + tests := []struct { + name string + content string + lockPath string + expectedMessages []string + }{ + { + name: "future version error has remediation", + content: `# gh-aw-metadata: {"schema_version":"v99"} +name: test +`, + lockPath: "future.lock.yml", + expectedMessages: []string{ + "unsupported schema version 'v99'", + "Upgrade gh-aw", + "gh extension upgrade gh-aw", + "gh aw compile future.md", + }, + }, + { + name: "missing metadata error has remediation", + content: `name: test +on: push +`, + lockPath: "missing.lock.yml", + expectedMessages: []string{ + "missing required metadata", + "recompile the workflow", + "gh aw compile missing.md", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := ValidateLockSchemaCompatibility(tt.content, tt.lockPath) + require.Error(t, err, "Should have validation error") + + errMsg := err.Error() + for _, expected := range tt.expectedMessages { + assert.Contains(t, errMsg, expected, "Error message should contain remediation guidance") + } + }) + } +} + +func TestExtractMetadataRealisticLockFile(t *testing.T) { + // Realistic lock file content with metadata + content := `# +# ___ _ _ +# / _ \ | | (_) +# | |_| | __ _ ___ _ __ | |_ _ ___ +# +# This file was automatically generated by gh-aw. DO NOT EDIT. +# +# Daily status report for gh-aw project +# +# Resolved workflow manifest: +# Imports: +# - shared/mood.md +# +# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"49266e50774d7e6a8b1c50f64b2f790c214dcdcf7b75b6bc8478bb43257b9863"} + +name: "Dev" +on: + schedule: + - cron: "0 9 * * *" +` + + metadata, isLegacy, err := ExtractMetadataFromLockFile(content) + assert.NoError(t, err, "Should parse realistic lock file") + assert.False(t, isLegacy, "Should not detect as legacy") + require.NotNil(t, metadata, "Should extract metadata") + assert.Equal(t, LockSchemaV1, metadata.SchemaVersion) + assert.Equal(t, "49266e50774d7e6a8b1c50f64b2f790c214dcdcf7b75b6bc8478bb43257b9863", metadata.FrontmatterHash) +} + +func TestExtractMetadataLegacyLockFile(t *testing.T) { + // Legacy lock file without metadata + content := `# +# This file was automatically generated by gh-aw. DO NOT EDIT. +# +# frontmatter-hash: 49266e50774d7e6a8b1c50f64b2f790c214dcdcf7b75b6bc8478bb43257b9863 + +name: "Legacy" +on: push +` + + metadata, isLegacy, err := ExtractMetadataFromLockFile(content) + assert.NoError(t, err, "Should parse legacy lock file") + assert.True(t, isLegacy, "Should detect as legacy") + assert.Nil(t, metadata, "Should not extract metadata from legacy") + + // Legacy format should validate successfully + err = ValidateLockSchemaCompatibility(content, "legacy.lock.yml") + assert.NoError(t, err, "Legacy lock files should be accepted") +} + +func TestMetadataPreservesHash(t *testing.T) { + // Test that frontmatter hash is preserved in metadata + originalHash := "abc123def456" + content := `# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"` + originalHash + `"} +name: test +` + + metadata, _, err := ExtractMetadataFromLockFile(content) + assert.NoError(t, err) + require.NotNil(t, metadata) + assert.Equal(t, originalHash, metadata.FrontmatterHash, "Should preserve frontmatter hash exactly") +} + +func TestFormatSupportedVersions(t *testing.T) { + formatted := formatSupportedVersions() + assert.NotEmpty(t, formatted, "Should format versions") + assert.Contains(t, formatted, "v1", "Should include v1") +} + +func TestLockMetadataJSONCompact(t *testing.T) { + // Verify JSON is compact (no newlines) for single-line comment embedding + metadata := &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: "test", + } + + json, err := metadata.ToJSON() + assert.NoError(t, err) + assert.NotContains(t, json, "\n", "JSON should be compact without newlines") + assert.NotContains(t, json, " ", "JSON should not have extra spaces") +} + +func TestSchemaVersionAsString(t *testing.T) { + // Verify LockSchemaVersion can be used as string + version := LockSchemaV1 + assert.Equal(t, "v1", string(version)) +} + +func TestExtractMetadataWithStopTime(t *testing.T) { + // Test extracting metadata that includes stop time + stopTime := "2026-02-17 20:00:00" + content := `# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"abc123","stop_time":"` + stopTime + `"} +name: test +` + + metadata, isLegacy, err := ExtractMetadataFromLockFile(content) + assert.NoError(t, err) + assert.False(t, isLegacy) + require.NotNil(t, metadata) + assert.Equal(t, LockSchemaV1, metadata.SchemaVersion) + assert.Equal(t, "abc123", metadata.FrontmatterHash) + assert.Equal(t, stopTime, metadata.StopTime, "Should extract stop time from metadata") +} + +func TestLockMetadataToJSONWithStopTime(t *testing.T) { + // Test JSON serialization includes stop time when present + metadata := &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: "test123", + StopTime: "2026-02-17 20:00:00", + } + + json, err := metadata.ToJSON() + assert.NoError(t, err) + assert.Contains(t, json, `"schema_version":"v1"`) + assert.Contains(t, json, `"frontmatter_hash":"test123"`) + assert.Contains(t, json, `"stop_time":"2026-02-17 20:00:00"`) +} + +func TestLockMetadataToJSONWithoutStopTime(t *testing.T) { + // Test JSON serialization omits stop time when empty (omitempty) + metadata := &LockMetadata{ + SchemaVersion: LockSchemaV1, + FrontmatterHash: "test123", + StopTime: "", + } + + json, err := metadata.ToJSON() + assert.NoError(t, err) + assert.Contains(t, json, `"schema_version":"v1"`) + assert.Contains(t, json, `"frontmatter_hash":"test123"`) + // Should not contain stop_time field when empty due to omitempty + assert.NotContains(t, json, `"stop_time"`) +} diff --git a/pkg/workflow/stop_after.go b/pkg/workflow/stop_after.go index 4e4d48656dd..712fc010399 100644 --- a/pkg/workflow/stop_after.go +++ b/pkg/workflow/stop_after.go @@ -146,14 +146,42 @@ func ExtractStopTimeFromLockFile(lockFilePath string) string { return "" } - lines := strings.Split(string(content), "\n") - for _, line := range lines { - // Look for GH_AW_STOP_TIME: YYYY-MM-DD HH:MM:SS - // This is in the env section of the stop time check job - if strings.Contains(line, "GH_AW_STOP_TIME:") { - prefix := "GH_AW_STOP_TIME:" - if idx := strings.Index(line, prefix); idx != -1 { - return strings.TrimSpace(line[idx+len(prefix):]) + contentStr := string(content) + + // Try to extract from metadata first + metadata, isLegacy, err := ExtractMetadataFromLockFile(contentStr) + + // If metadata extraction failed with an error (malformed JSON), log warning but don't fall back + // This is different from no metadata (which is intentional for legacy files) + if err != nil { + stopAfterLog.Printf("Warning: Failed to parse metadata from %s: %v. Falling back to legacy extraction.", lockFilePath, err) + // Malformed metadata - fall through to legacy extraction as a safety measure + // but this indicates a potential issue with the lock file + } else if metadata != nil && metadata.StopTime != "" { + // Successfully extracted stop time from metadata + stopAfterLog.Printf("Extracted stop time from metadata: %s", metadata.StopTime) + return metadata.StopTime + } + + // Validate lock file schema compatibility before parsing + // Non-critical operation - continue even if validation fails + if err := ValidateLockSchemaCompatibility(contentStr, lockFilePath); err != nil { + stopAfterLog.Printf("Warning: Lock file schema validation failed for %s: %v", lockFilePath, err) + // Continue anyway for legacy compatibility + } + + // Legacy fallback: Look for GH_AW_STOP_TIME in the workflow body + // Use legacy method if: no metadata, legacy format, metadata exists but stop_time is empty, or metadata was malformed + if err != nil || metadata == nil || isLegacy || metadata.StopTime == "" { + lines := strings.Split(contentStr, "\n") + for _, line := range lines { + // Look for GH_AW_STOP_TIME: YYYY-MM-DD HH:MM:SS + // This is in the env section of the stop time check job + if strings.Contains(line, "GH_AW_STOP_TIME:") { + prefix := "GH_AW_STOP_TIME:" + if idx := strings.Index(line, prefix); idx != -1 { + return strings.TrimSpace(line[idx+len(prefix):]) + } } } }