diff --git a/.github/workflows/design-decision-gate.lock.yml b/.github/workflows/design-decision-gate.lock.yml index fb690c9b65a..88f1b3a2fb3 100644 --- a/.github/workflows/design-decision-gate.lock.yml +++ b/.github/workflows/design-decision-gate.lock.yml @@ -1,4 +1,4 @@ -# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"bdaadbd17a4c3c9801690ce02aa1e0387eb5fc871c9ec6c5f86fe5a31f54d135","body_hash":"fcb9ba0256cf3041f26dd886a424b8f20ae3d7d298375d39600dd67a8be6ea15","strict":true,"agent_id":"claude","agent_model":"claude-sonnet-4-6","engine_versions":{"claude":"2.1.223"}} +# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"bdaadbd17a4c3c9801690ce02aa1e0387eb5fc871c9ec6c5f86fe5a31f54d135","body_hash":"28bd2dc16a82dddbee122a1a18d913ba2d8f227971b544aa384fb0ecef04a165","strict":true,"agent_id":"claude","agent_model":"claude-sonnet-4-6","engine_versions":{"claude":"2.1.223"}} # gh-aw-manifest: {"version":1,"secrets":["ANTHROPIC_API_KEY","COPILOT_GITHUB_TOKEN","GH_AW_CI_TRIGGER_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GH_AW_OTEL_GRAFANA_AUTHORIZATION","GH_AW_OTEL_GRAFANA_ENDPOINT","GH_AW_OTEL_SENTRY_AUTHORIZATION","GH_AW_OTEL_SENTRY_ENDPOINT","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache/restore","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/cache/save","sha":"55cc8345863c7cc4c66a329aec7e433d2d1c52a9","version":"v6.1.0"},{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"820762786026740c76f36085b0efc47a31fe5020","version":"v7.0.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.44","digest":"sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.27.44@sha256:0d727725c737b58c7bdf51f640cffb928385ec46517e0917c7f1a02f1bada8b4"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44","digest":"sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.44@sha256:b50fbadba138f6e9aba94aca09711335c489bb3b15861220cb66f6092e042dc7"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.44","digest":"sha256:c064d15974f7c933ec7d3f7b4038f4fd203547b3154bdc821afd379144887eff","pinned_image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.44@sha256:c064d15974f7c933ec7d3f7b4038f4fd203547b3154bdc821afd379144887eff"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.44","digest":"sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.27.44@sha256:83e48bbe12c634be8c228a576832fe45f66c529ac3659db92bddbcf2eeb6d627"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.4.8","digest":"sha256:38bbea36cdb46a3c9d04d1db05e672966f5239b431a2022eb35881688e5721d8","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.4.8@sha256:38bbea36cdb46a3c9d04d1db05e672966f5239b431a2022eb35881688e5721d8"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:0d9f1fb5fd6610c0ac1f5194a38e45a8a1e81f8a390d5142d8e4e6f26a4b3196","pinned_image":"ghcr.io/github/gh-aw-node@sha256:0d9f1fb5fd6610c0ac1f5194a38e45a8a1e81f8a390d5142d8e4e6f26a4b3196"},{"image":"ghcr.io/github/github-mcp-server:v1.8.0","digest":"sha256:d5a18c04b92714c309eb46a2305087e91a4dbd80420f6e462656699f95093520","pinned_image":"ghcr.io/github/github-mcp-server:v1.8.0@sha256:d5a18c04b92714c309eb46a2305087e91a4dbd80420f6e462656699f95093520"}],"has_pull_request":true} # This file was automatically generated by gh-aw. DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md # diff --git a/.github/workflows/design-decision-gate.md b/.github/workflows/design-decision-gate.md index b30b464b8ae..c19e32f5ce0 100644 --- a/.github/workflows/design-decision-gate.md +++ b/.github/workflows/design-decision-gate.md @@ -344,7 +344,55 @@ mkdir -p ${{ github.workspace }}/docs/adr ### Post a Blocking Comment -Post a comment using `add-comment` explaining the requirement: +Read the `adr-report-templates` skill and post a comment using `add-comment` with the **ADR Required** template. + +### Report Formatting + +- Use h3 (###) or lower for all headers in your report to maintain proper document hierarchy. +- Apply **progressive disclosure**: keep the immediately visible text as brief as possible; wrap all verbose sections (next steps, background, reference material) in `
` tags. +- Required structure for blocking comments: headline + one-line status (always visible) → "What to do next" (in `
`) → "Why ADRs Matter" (in `
`) → ADR format reference (in `
`) → blocking notice (always visible) + +## Step 4b: If ADR Found — Verify Implementation Matches + +If an ADR **is** found (either in the PR body, on the PR branch, or in a linked issue), verify that the implementation aligns with the stated decision. + +### Read the ADR + +Load and parse the ADR content. Extract: +- The **Decision** section (what was decided) +- The **Context** section (constraints and forces) +- The **Consequences** section (expected outcomes) + +### Analyze Alignment + +Compare the ADR's stated decision against the actual code changes in the PR diff. Look for: + +1. **Divergences** — Code that contradicts the stated decision (e.g., ADR says "use PostgreSQL" but code connects to MongoDB) +2. **Missing implementation** — Key aspects of the decision not reflected in the code +3. **Scope creep** — Significant architectural changes not covered by the ADR +4. **Full alignment** — Code faithfully implements the stated decision + +### Report Findings + +Read the `adr-report-templates` skill and post a comment using `add-comment` with the template matching the outcome: + +- **If the implementation MATCHES the ADR**: use the **ADR Verified** template. +- **If there are DIVERGENCES**: use the **Implementation Diverges** template. + +## Important: Always Call a Safe Output + +**You MUST always call at least one safe output tool.** If none of the above steps result in an action, call `noop` with an explanation: + +```json +{"noop": {"message": "No action needed: [brief explanation of what was found and why no action was required]"}} +``` + +## skill: `adr-report-templates` +--- +description: PR comment templates for the Design Decision Gate (ADR Required, ADR Verified, and Implementation Diverges). +--- + +**ADR Required** template (no ADR found — blocking comment): ```markdown ### 🏗️ Design Decision Gate — ADR Required @@ -392,37 +440,8 @@ All ADRs are stored in `docs/adr/` as Markdown files numbered by PR number (e.g.
``` -### Report Formatting - -- Use h3 (###) or lower for all headers in your report to maintain proper document hierarchy. -- Apply **progressive disclosure**: keep the immediately visible text as brief as possible; wrap all verbose sections (next steps, background, reference material) in `
` tags. -- Required structure for blocking comments: headline + one-line status (always visible) → "What to do next" (in `
`) → "Why ADRs Matter" (in `
`) → ADR format reference (in `
`) → blocking notice (always visible) - -## Step 4b: If ADR Found — Verify Implementation Matches - -If an ADR **is** found (either in the PR body, on the PR branch, or in a linked issue), verify that the implementation aligns with the stated decision. - -### Read the ADR - -Load and parse the ADR content. Extract: -- The **Decision** section (what was decided) -- The **Context** section (constraints and forces) -- The **Consequences** section (expected outcomes) - -### Analyze Alignment - -Compare the ADR's stated decision against the actual code changes in the PR diff. Look for: - -1. **Divergences** — Code that contradicts the stated decision (e.g., ADR says "use PostgreSQL" but code connects to MongoDB) -2. **Missing implementation** — Key aspects of the decision not reflected in the code -3. **Scope creep** — Significant architectural changes not covered by the ADR -4. **Full alignment** — Code faithfully implements the stated decision +**ADR Verified** template (implementation matches the ADR): -### Report Findings - -**If the implementation MATCHES the ADR**: - -Post an approving comment: ```markdown ### ✅ Design Decision Gate — ADR Verified @@ -436,9 +455,8 @@ Post an approving comment:
``` -**If there are DIVERGENCES**: +**Implementation Diverges** template (implementation contradicts the ADR): -Post a comment describing the discrepancies: ```markdown ### ⚠️ Design Decision Gate — Implementation Diverges from ADR @@ -464,11 +482,3 @@ The ADR and implementation must be in sync before this PR can merge.
``` - -## Important: Always Call a Safe Output - -**You MUST always call at least one safe output tool.** If none of the above steps result in an action, call `noop` with an explanation: - -```json -{"noop": {"message": "No action needed: [brief explanation of what was found and why no action was required]"}} -``` \ No newline at end of file