🏥 CI Failure Investigation - Run #35768
Summary
js-integration-live-api's frontmatter_hash_github_api.test.cjs cross-language validation now reports two different hashes for .github/workflows/audit-workflows.md (JavaScript = 4d50f091b80261759bdbabc83490e5ed25d3ff07b5bf4a9c989d643f4c5a1a72, Go = bb5cbd9552401591e9476ae803f1736a88dca3f654f725dadffa5a7dbc31d639), so the job fails before it can finish.
canary_go then invokes ./scripts/compare-test-coverage.sh and aborts because it finds 2,763 tests that appear unexecuted (the integration artifact never shipped), which is a downstream symptom of the earlier failure.
Failure Details
Root Cause Analysis
Audit-workflows and its dependency graph changed in the latest commit, so the JavaScript frontmatter hasher now produces a new digest. The Go parser still logs the previous digest (bb5c...), so expect(jsHash).toBe(goHash) in frontmatter_hash_github_api.test.cjs fails immediately and prevents the job from emitting its test JSON. Because the integration JSON never reaches canary_go, the coverage check concludes that thousands of tests were missing and fails with ❌ FAILURE: Found 2763 tests that are NOT being executed in CI.
Failed Jobs and Errors
- js-integration-live-api –
frontmatter_hash_github_api.test.cjs > cross-language validation > should compute same hash as Go implementation when using file system: AssertionError: expected '4d50f091...' to be 'bb5cbd9552...'.
- canary_go –
./scripts/compare-test-coverage.sh all-tests.txt executed-tests.txt surfaced that 2,763 tests were missing; the script first listed names such as TestAIReactionWithCommentEditFunctionality, TestAIReactionWorkflow, TestAPIKeyMaskingNoEmptyDeclaration, TestASCIILogoAlignment, etc., then failed with a broken pipe because no artifact existed.
Investigation Findings
- The JS side now returns a new audit hash while the Go side still reports the old digest, so the cross-language test blocks the workflow before the integration JSON artifact is uploaded.
canary_go’s coverage script naively compares all-tests.txt against the collected JSON files; once the JSON for js-integration-live-api is missing, the script treats every test from that job as unexecuted and fails with a massive missing-test list.
Recommended Actions
Prevention Strategies
- Re-run the
frontmatter_hash_github_api.test.cjs cross-language test whenever workflow or schema files are modified so you catch hash divergences before pushing.
- If an integration job uploads JSON consumed by coverage, guard the downstream job against missing artifacts (skip or emit a targeted error) so a single upstream failure doesn’t flood the log with 2,763 missing-test entries.
AI Team Self-Improvement
When editing workflows or schema files, always recompute or log the current audit hash on both the Go and JS sides and compare them locally before merging; if they diverge, identify what changed in the dependency graph so the cross-language test can be updated in lockstep.
Historical Context
No open [CI Failure Doctor] issue matches this hash-mismatch pattern. The only recent coverage failure issue (#14811) was closed after resolving an artifact upload 403, so this is a new discrepancy between Go and JavaScript frontmatter hashing that must be addressed before rerunning the workflow.
AI generated by CI Failure Doctor
🩺 Diagnosis provided by CI Failure Doctor
To install this workflow, run gh aw add githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d. View source at https://github.com/githubnext/agentics/tree/ea350161ad5dcc9624cf510f134c6a9e39a6f94d/workflows/ci-doctor.md.
🏥 CI Failure Investigation - Run #35768
Summary
js-integration-live-api'sfrontmatter_hash_github_api.test.cjscross-language validation now reports two different hashes for.github/workflows/audit-workflows.md(JavaScript =4d50f091b80261759bdbabc83490e5ed25d3ff07b5bf4a9c989d643f4c5a1a72, Go =bb5cbd9552401591e9476ae803f1736a88dca3f654f725dadffa5a7dbc31d639), so the job fails before it can finish.canary_gothen invokes./scripts/compare-test-coverage.shand aborts because it finds 2,763 tests that appear unexecuted (the integration artifact never shipped), which is a downstream symptom of the earlier failure.Failure Details
Root Cause Analysis
Audit-workflows and its dependency graph changed in the latest commit, so the JavaScript frontmatter hasher now produces a new digest. The Go parser still logs the previous digest (
bb5c...), soexpect(jsHash).toBe(goHash)infrontmatter_hash_github_api.test.cjsfails immediately and prevents the job from emitting its test JSON. Because the integration JSON never reachescanary_go, the coverage check concludes that thousands of tests were missing and fails with❌ FAILURE: Found 2763 tests that are NOT being executed in CI.Failed Jobs and Errors
frontmatter_hash_github_api.test.cjs>cross-language validation>should compute same hash as Go implementation when using file system:AssertionError: expected '4d50f091...' to be 'bb5cbd9552...'../scripts/compare-test-coverage.sh all-tests.txt executed-tests.txtsurfaced that 2,763 tests were missing; the script first listed names such asTestAIReactionWithCommentEditFunctionality,TestAIReactionWorkflow,TestAPIKeyMaskingNoEmptyDeclaration,TestASCIILogoAlignment, etc., then failed with a broken pipe because no artifact existed.Investigation Findings
canary_go’s coverage script naively comparesall-tests.txtagainst the collected JSON files; once the JSON forjs-integration-live-apiis missing, the script treats every test from that job as unexecuted and fails with a massive missing-test list.Recommended Actions
js-integration-live-apiandcanary_goso that the coverage job has the integration JSON it expects and can complete normally.compare-test-coverage.shto detect missing JSON artifacts and fail fast with a clear “artifact missing” message rather than reporting thousands of missing tests via broken pipe.Prevention Strategies
frontmatter_hash_github_api.test.cjscross-language test whenever workflow or schema files are modified so you catch hash divergences before pushing.AI Team Self-Improvement
When editing workflows or schema files, always recompute or log the current audit hash on both the Go and JS sides and compare them locally before merging; if they diverge, identify what changed in the dependency graph so the cross-language test can be updated in lockstep.
Historical Context
No open
[CI Failure Doctor]issue matches this hash-mismatch pattern. The only recent coverage failure issue (#14811) was closed after resolving an artifact upload 403, so this is a new discrepancy between Go and JavaScript frontmatter hashing that must be addressed before rerunning the workflow.