Fix stale frontmatter hash in design-decision-gate.lock.yml#41390
Conversation
…ecision-gate.lock.yml Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
|
✅ PR Code Quality Reviewer completed the code quality review. |
|
✅ Test Quality Sentinel completed test quality analysis. No test files were added or modified in this PR. Test Quality Sentinel skipped. Only .github/workflows/design-decision-gate.lock.yml was changed (stale frontmatter hash fix). |
|
🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅ |
There was a problem hiding this comment.
Pull request overview
This PR updates the generated workflow lock file for design-decision-gate to bring its embedded gh-aw-metadata hashes back in sync with the current markdown source workflow frontmatter (including the newly specified Claude model), unblocking CI (TestHashConsistencyAcrossLockFiles).
Changes:
- Recompiled
.github/workflows/design-decision-gate.lock.ymlsofrontmatter_hashandbody_hashmatch the current.mdsource. - Captured the configured agent model (
claude-sonnet-4-6) in the lock metadata and the generated run-info environment (GH_AW_INFO_MODEL).
Show a summary per file
| File | Description |
|---|---|
.github/workflows/design-decision-gate.lock.yml |
Regenerates the lock metadata and run-info env to reflect the current source workflow frontmatter and content hashes. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 1/1 changed files
- Comments generated: 0
|
✅ Design Decision Gate 🏗️ completed the design decision gate check. No ADR enforcement needed: PR #41390 does not have the 'implementation' label and has 0 new lines of code in business logic directories (threshold: 100). |
There was a problem hiding this comment.
Skills-Based Review 🧠
Applied /diagnose — the fix correctly addresses the root cause and the existing regression test confirms it.
📋 Analysis Summary
Root Cause Verified
- The source workflow (
.github/workflows/design-decision-gate.md) explicitly declaresmodel: claude-sonnet-4-6at line 25. - The lock file was recompiled from that source, producing the correct
frontmatter_hashandbody_hash. - The
GH_AW_INFO_MODELchange from a dynamic variable fallback chain to"claude-sonnet-4-6"is the expected compiled output when a model is pinned in the source frontmatter.
Regression Safety
TestHashConsistencyAcrossLockFilesalready existed and caught this drift — good CI hygiene.- No new test needed; the existing test is the regression guard.
Positive Highlights
- ✅ PR description clearly traces the root cause
- ✅ Single-file, minimal-scope fix — no collateral changes
- ✅ Auto-generated lock file updated via the correct recompile workflow
🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · 33.4 AIC · ⌖ 7.34 AIC · ⊞ 6.5K
There was a problem hiding this comment.
✅ Correct fix, no blocking issues
This correctly recompiles the lock file from the actual committed markdown source, which had model: claude-sonnet-4-6 in its frontmatter but was never re-locked after that change.
What was verified
frontmatter_hashchange — expected; the frontmatter now includesmodel: claude-sonnet-4-6, which was missing from the stale hash.body_hashchange — the lock file was introduced infbee0bccompiled from an older markdown version; the new hash reflects the current body. One inline comment notes the test gap here.agent_model: "claude-sonnet-4-6"added to metadata — correct output for a model-pinned compilation.GH_AW_INFO_MODELhardcoded — this is the expected compilation output whenmodel:is explicitly set in the frontmatter; the dynamic vars fallback only applies when no model is specified.
No logic errors, security issues, or broken behavior found.
🔎 Code quality review by PR Code Quality Reviewer · 74.7 AIC · ⌖ 6.94 AIC · ⊞ 5.2K
| @@ -1,4 +1,4 @@ | |||
| # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"bcea13dbcc6ec5edb5025d41abcb04667abce480a7ea5471bd2511a1a2486f94","body_hash":"612b66124f96bd70a5cae3dbac21601aa4503f7592f72300a1b25e9e106fe184","strict":true,"agent_id":"claude","engine_versions":{"claude":"2.1.191"}} | |||
| # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"f9b7689b25bfd2258e1244d47179c99e2373461d1611ef70ac604a6bbb81d0bd","body_hash":"7e583643f095382493209c5ecbcb97e582f922d97b58574d6cfdacdf33fbf79b","strict":true,"agent_id":"claude","agent_model":"claude-sonnet-4-6","engine_versions":{"claude":"2.1.191"}} | |||
There was a problem hiding this comment.
body_hash was also stale (not just frontmatter_hash) — and there is currently no test that would have caught it.
💡 Details
The lock file was introduced in fbee0bc compiled from an older markdown version (pre-model: claude-sonnet-4-6). The body_hash has been stale since day one — silently, because TestHashConsistencyAcrossLockFiles only validates frontmatter_hash, never body_hash, even though LockSchemaV4 added body_hash explicitly for "full stale-check coverage".
A future change that modifies the workflow body without updating the lock file would go undetected.
This PR correctly refreshes both hashes so it is not a blocker here — but closing the test gap (adding body_hash validation to TestHashConsistencyAcrossLockFiles) would make the guarantee complete.
|
Hey One minor note from the checklist:
The PR is focused, minimal (4 lines), and the description clearly explains the failing test, its root cause, and the fix. Looks ready for merge.
|
TestHashConsistencyAcrossLockFileswas failing in CI becausedesign-decision-gate.lock.ymlcontained a stalefrontmatter_hash— the source workflow hadmodel: claude-sonnet-4-6added to its frontmatter, the lock file was recompiled locally, but the updated lock file was never committed.Change
design-decision-gate.lock.ymlwith the correctfrontmatter_hashandbody_hashmatching the current markdown source.