Repository navigation
feat: trace transitive GitHub Actions dependencies with bounded read-only audits - #62
Merged
Merged
Conversation
narenaryan
marked this pull request as ready for review
October 8, 2026 21:58
This was referenced Oct 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Capability
Implements the read-only first increment of #56:
scharf audit <repo> --dependencies --out human|json|sariffollows composite actions and reusable workflows at resolved commits, exposing mutable children hidden behind pinned wrappers. Reports retain each caller chain and immutable metadata locations. Existing direct audit/autofix defaults stay unchanged.Safety and limits
$/, and aliases with caller locations. Ambiguous./in remote composites is unresolved.--raise-errorrejects mutable edges; JSON/SARIF preserve provenance and incomplete status. Policy exceptions/baselines, transitive autofix and combined graph/provenance mode are deliberately unsupported rather than silently weakened.$/needs runner 2.336.0+.Validation
Approved workspace-only Go 1.26.9, archive SHA256 checked against official go.dev metadata. Passed against final code:
gofmton changed/new Go filesgo test ./...(all six packages; 32 new test functions)go vet ./...go test -race ./...go mod verifygit diff --checkIndependent source review found and fixed alias false-clean paths, caller-location loss, unsupported mapping keys, filesystem races/FIFO blocking, diagnostic loss and terminal/log-command injection. Tests use HTTP fakes, not live action execution.
Unavailable and NOT claimed passed: goimports, golangci-lint, govulncheck. No additional tool installation was authorized; exact-head CI results are recorded below. No agentskb MCP operations were available to consult.
Sources/design
Related to #56. Kept draft for human review; no automatic issue closure or merge.
AI bug-pattern reassessment (October 8, 2026)
Used
ai-bug-patternsto review omitted validation, bounded work, cached state and error paths. Reproduced and fixed three boundary failures: run-only/malformed YAML aliases bypassed edge-only accounting; depth-limited traversal contacted children beyond the boundary; byte exhaustion continued reading sibling roots. Structural work now consumes a 5,000-visit budget and global node/byte exhaustion stops traversal; depth is checked before network activity.Seven new tests cover these regressions plus empty documents, defining-repository cache isolation and per-invocation cache lifetime. Full unit tests, race tests, vet, build, module verification, formatting and whitespace checks passed on the revised tree
7c31b9d3b195fe28d0a3b039ea2a41e3e6fd8e24. Local HTTP fixtures only; no live action execution. CI for revised head786be022bc07bc1b1103dec071e3254b80d607c2is successful: GitHub unit tests, Semgrep, binary-size comparison and Semaphore. No additional tools installed.The revised #61/#62 heads also form conflict-free local merge-tree
7d43701bcf888efe312e26ac33c98f436c2cef29, which passed unit tests, race tests and vet, plus an archive build with-buildvcs=false. This is integration evidence only; no PR was merged.