Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions docs/evidence/g01-live-canary.md
Original file line number Diff line number Diff line change
Expand Up @@ -1029,3 +1029,26 @@ These remain synthetic offline proofs. They do not establish live GitHub
workflow stability, Scale Set cleanup, or runner execution. Issue #1 remains
OPEN and Project #2 remains In progress; no live provider, runner, credential,
Docker or host operation was performed.

### Post-merge Public CI G01-core correction — 2026-11-13

Public CI [run 43399911927](https://github.com/1XP-AI/gh-runnerd/actions/runs/43399911927)
completed on merge SHA `4b9b7be9179224f02a87c555d1743ced6652f11a`. G01 core
failed in `TestControllerProcessHandoffV3ActualBrokerChild` for the
`selected-callee`, `changed-callee`, and `forged-receipt` cases; the other eight
jobs passed. The failed trace showed G02's explicit User-Agent and an unset
Accept-Encoding on `/app`, while the fixture incorrectly required `gzip`.
This was a fixture-oracle mismatch: `github.go` sets User-Agent but does not
set Accept-Encoding, and the synthetic RoundTripper records the client request
headers rather than final wire-level transport behavior.

| Check | Result |
|---|---|
| Public CI `TestControllerProcessHandoffV3ActualBrokerChild` | FAIL before fixture correction; three cases rejected the unset Accept-Encoding |
| Go 1.27.3 `go test -race -p=1 -count=1 -tags=g01_pair_fixture -run '^TestControllerProcessHandoffV3ActualBrokerChild$' ./livecanary` | FAIL before correction with the same three cases; PASS after correcting the expected unset header |
| Remaining Public CI jobs on merge SHA `4b9b7be` | PASS (8 jobs); aggregate Go check failed due to G01 core |

Local build/module caches and temporary files remained on `/Volumes/worktree`.
The correction changes only the tagged fixture header expectation. A fresh
fix PR and its exact-head review/CI are still required; no production behavior
or live canary is changed by this correction.
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,9 @@ func assertProcessBrokerTrace(t *testing.T, transport *processBrokerHTTP, want [
requestPath, _, _ := strings.Cut(trace.RequestURI, "?")
g02IdentityRequest := requestPath == "/app" || requestPath == "/orgs/fixture-org/installation"
g01Headers := trace.Accept == "application/vnd.github+json" && trace.APIVersion == "2022-11-28" && trace.ContentType == "application/json" && trace.AcceptEncoding == "identity" && trace.UserAgent == "gh-runnerd-g01-broker-evidence"
g02Headers := trace.Accept == "application/vnd.github+json" && trace.APIVersion == "2022-11-28" && trace.ContentType == "" && trace.AcceptEncoding == "gzip" && trace.UserAgent == "gh-runnerd-g02-evidence"
// The G02 github.go client sets User-Agent but leaves Accept-Encoding
// unset; this synthetic RoundTripper records the client request headers.
g02Headers := trace.Accept == "application/vnd.github+json" && trace.APIVersion == "2022-11-28" && trace.ContentType == "" && trace.AcceptEncoding == "" && trace.UserAgent == "gh-runnerd-g02-evidence"
if (g02IdentityRequest && !g02Headers) || (!g02IdentityRequest && !g01Headers) {
t.Fatalf("broker request headers differ at %d: %+v", index, trace)
}
Expand Down