@@ -6,8 +6,12 @@ import (
66 "fmt"
77 "sort"
88 "strings"
9+
10+ "github.com/github/gh-aw/pkg/logger"
911)
1012
13+ var cacheIntegrityLog = logger .New ("workflow:cache_integrity" )
14+
1115// integrityLevelOrder defines integrity levels from highest to lowest.
1216// Used to determine which branches to merge down from when setting up cache.
1317var integrityLevelOrder = []string {"merged" , "approved" , "unapproved" , "none" }
@@ -27,12 +31,15 @@ const noPolicySentinel = "nopolicy"
2731// - Workflows without policy → sentinel value "nopolicy" (consistent key format)
2832func computePolicyHash (github * GitHubToolConfig ) string {
2933 if github == nil || github .MinIntegrity == "" {
34+ cacheIntegrityLog .Print ("No guard policy configured, using nopolicy sentinel" )
3035 return noPolicySentinel
3136 }
3237
3338 canonical := buildCanonicalPolicy (github )
3439 hash := sha256 .Sum256 ([]byte (canonical ))
35- return hex .EncodeToString (hash [:])[:8 ]
40+ result := hex .EncodeToString (hash [:])[:8 ]
41+ cacheIntegrityLog .Printf ("Computed policy hash: %s (min-integrity=%s)" , result , github .MinIntegrity )
42+ return result
3643}
3744
3845// buildCanonicalPolicy builds the normalized string representation of the allow-only policy.
@@ -183,16 +190,20 @@ func cacheIntegrityLevel(github *GitHubToolConfig) string {
183190// memory-unapproved-7e4d9f12-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-${{ github.run_id }}
184191// memory-none-nopolicy-session-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-${{ github.run_id }}
185192func generateIntegrityAwareCacheKey (cacheID , integrityLevel , policyHash string ) string {
193+ var key string
186194 if cacheID == "default" || cacheID == "" {
187- return fmt .Sprintf (
195+ key = fmt .Sprintf (
188196 "memory-%s-%s-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-${{ github.run_id }}" ,
189197 integrityLevel , policyHash ,
190198 )
199+ } else {
200+ key = fmt .Sprintf (
201+ "memory-%s-%s-%s-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-${{ github.run_id }}" ,
202+ integrityLevel , policyHash , cacheID ,
203+ )
191204 }
192- return fmt .Sprintf (
193- "memory-%s-%s-%s-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-${{ github.run_id }}" ,
194- integrityLevel , policyHash , cacheID ,
195- )
205+ cacheIntegrityLog .Printf ("Generated integrity-aware cache key: cacheID=%s, integrityLevel=%s, policyHash=%s" , cacheID , integrityLevel , policyHash )
206+ return key
196207}
197208
198209// higherIntegrityLevels returns the integrity levels that are higher than the given level,
@@ -206,5 +217,6 @@ func higherIntegrityLevels(level string) []string {
206217 }
207218 result = append (result , l )
208219 }
220+ cacheIntegrityLog .Printf ("Higher integrity levels than %q: %v" , level , result )
209221 return result
210222}
0 commit comments