From d44598c5669a7ef71b742f6dfbf3186fd7e016ff Mon Sep 17 00:00:00 2001 From: Joshua Temple Date: Sat, 4 Jul 2026 21:46:36 -0400 Subject: [PATCH 1/3] fix(ci): target the failure region when parsing the pin guard from job logs The PR Failure Report companion parsed the action-pins consistency guard from the last 30 lines of a failed job log. For a Go test failure the guard signature and its want/got rows print in the middle of the log; the trailing lines are post-job git-config cleanup ending at "Cleaning up orphan processes". parsePinGuard therefore saw no signature and dropped the manifest remediation, leaving only a generic exit-code annotation. Feed the full job log to parsePinGuard so the signature and rows are found wherever they land, and display a failure-anchored region instead of the cleanup tail. Adds a node unit test that extracts the shipped helpers verbatim from the workflow and runs them against a real captured failing job log. Signed-off-by: Joshua Temple --- .../fixtures/unit-tests-pin-guard-fail.log | 6218 +++++++++++++++++ .github/workflows/__tests__/pin-guard.test.js | 90 + .github/workflows/drift-comment.yaml | 54 +- 3 files changed, 6352 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log create mode 100644 .github/workflows/__tests__/pin-guard.test.js diff --git a/.github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log b/.github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log new file mode 100644 index 00000000..92f9a273 --- /dev/null +++ b/.github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log @@ -0,0 +1,6218 @@ +2026-07-05T01:35:48.1793346Z Current runner version: '2.335.1' +2026-07-05T01:35:48.1818764Z ##[group]Runner Image Provisioner +2026-07-05T01:35:48.1819637Z Hosted Compute Agent +2026-07-05T01:35:48.1820632Z Version: 20260624.560 +2026-07-05T01:35:48.1821378Z Commit: 925d229a51159bc391ae97e54a2dd1fe20af789d +2026-07-05T01:35:48.1822127Z Build Date: 2026-06-24T18:26:47Z +2026-07-05T01:35:48.1822818Z Worker ID: {e3722a72-c67a-4016-9b2c-d923dff204aa} +2026-07-05T01:35:48.1823611Z Azure Region: eastus2 +2026-07-05T01:35:48.1824200Z ##[endgroup] +2026-07-05T01:35:48.1825813Z ##[group]Operating System +2026-07-05T01:35:48.1826611Z Ubuntu +2026-07-05T01:35:48.1827156Z 24.04.4 +2026-07-05T01:35:48.1827737Z LTS +2026-07-05T01:35:48.1828273Z ##[endgroup] +2026-07-05T01:35:48.1828867Z ##[group]Runner Image +2026-07-05T01:35:48.1829563Z Image: ubuntu-24.04 +2026-07-05T01:35:48.1830461Z Version: 20260628.225.1 +2026-07-05T01:35:48.1831772Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260628.225/images/ubuntu/Ubuntu2404-Readme.md +2026-07-05T01:35:48.1833340Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260628.225 +2026-07-05T01:35:48.1834352Z ##[endgroup] +2026-07-05T01:35:48.1835505Z ##[group]GITHUB_TOKEN Permissions +2026-07-05T01:35:48.1837894Z Contents: read +2026-07-05T01:35:48.1838686Z Metadata: read +2026-07-05T01:35:48.1839238Z ##[endgroup] +2026-07-05T01:35:48.1841660Z Secret source: Actions +2026-07-05T01:35:48.1842414Z Prepare workflow directory +2026-07-05T01:35:48.2260758Z Prepare all required actions +2026-07-05T01:35:48.2314036Z Getting action download info +2026-07-05T01:35:48.4592869Z Download action repository 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' (SHA:9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0) +2026-07-05T01:35:48.5318030Z Download action repository 'actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16' (SHA:924ae3a1cded613372ab5595356fb5720e22ba16) +2026-07-05T01:35:48.8394846Z Complete job name: Unit Tests +2026-07-05T01:35:48.9114377Z ##[group]Run actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 +2026-07-05T01:35:48.9115385Z with: +2026-07-05T01:35:48.9115821Z repository: stablekernel/cascade +2026-07-05T01:35:48.9119970Z token: *** +2026-07-05T01:35:48.9120822Z ssh-strict: true +2026-07-05T01:35:48.9121271Z ssh-user: git +2026-07-05T01:35:48.9121716Z persist-credentials: true +2026-07-05T01:35:48.9122213Z clean: true +2026-07-05T01:35:48.9122655Z sparse-checkout-cone-mode: true +2026-07-05T01:35:48.9123173Z fetch-depth: 1 +2026-07-05T01:35:48.9123600Z fetch-tags: false +2026-07-05T01:35:48.9124046Z show-progress: true +2026-07-05T01:35:48.9124489Z lfs: false +2026-07-05T01:35:48.9124893Z submodules: false +2026-07-05T01:35:48.9125331Z set-safe-directory: true +2026-07-05T01:35:48.9125840Z allow-unsafe-pr-checkout: false +2026-07-05T01:35:48.9126632Z ##[endgroup] +2026-07-05T01:35:49.0086793Z Syncing repository: stablekernel/cascade +2026-07-05T01:35:49.0089261Z ##[group]Getting Git version info +2026-07-05T01:35:49.0090240Z Working directory is '/home/runner/work/cascade/cascade' +2026-07-05T01:35:49.0091465Z [command]/usr/bin/git version +2026-07-05T01:35:49.0140930Z git version 2.54.0 +2026-07-05T01:35:49.0159790Z ##[endgroup] +2026-07-05T01:35:49.0170391Z Temporarily overriding HOME='/home/runner/work/_temp/2f6a9f23-9b4b-41ca-b04d-30eca3e5ebd1' before making global git config changes +2026-07-05T01:35:49.0172184Z Adding repository directory to the temporary git global config as a safe directory +2026-07-05T01:35:49.0174710Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/cascade/cascade +2026-07-05T01:35:49.0219096Z Deleting the contents of '/home/runner/work/cascade/cascade' +2026-07-05T01:35:49.0222589Z ##[group]Determining repository object format +2026-07-05T01:35:49.0224201Z ##[endgroup] +2026-07-05T01:35:49.0225157Z ##[group]Initializing the repository +2026-07-05T01:35:49.0228804Z [command]/usr/bin/git init /home/runner/work/cascade/cascade +2026-07-05T01:35:49.0331836Z hint: Using 'master' as the name for the initial branch. This default branch name +2026-07-05T01:35:49.0333580Z hint: will change to "main" in Git 3.0. To configure the initial branch name +2026-07-05T01:35:49.0334812Z hint: to use in all of your new repositories, which will suppress this warning, +2026-07-05T01:35:49.0335648Z hint: call: +2026-07-05T01:35:49.0336342Z hint: +2026-07-05T01:35:49.0337188Z hint: git config --global init.defaultBranch +2026-07-05T01:35:49.0338135Z hint: +2026-07-05T01:35:49.0338829Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +2026-07-05T01:35:49.0340346Z hint: 'development'. The just-created branch can be renamed via this command: +2026-07-05T01:35:49.0341269Z hint: +2026-07-05T01:35:49.0341683Z hint: git branch -m +2026-07-05T01:35:49.0342331Z hint: +2026-07-05T01:35:49.0342947Z hint: Disable this message with "git config set advice.defaultBranchName false" +2026-07-05T01:35:49.0343941Z Initialized empty Git repository in /home/runner/work/cascade/cascade/.git/ +2026-07-05T01:35:49.0346775Z [command]/usr/bin/git remote add origin https://github.com/stablekernel/cascade +2026-07-05T01:35:49.0392433Z ##[endgroup] +2026-07-05T01:35:49.0393222Z ##[group]Disabling automatic garbage collection +2026-07-05T01:35:49.0395512Z [command]/usr/bin/git config --local gc.auto 0 +2026-07-05T01:35:49.0424848Z ##[endgroup] +2026-07-05T01:35:49.0425574Z ##[group]Setting up auth +2026-07-05T01:35:49.0426119Z Removing SSH command configuration +2026-07-05T01:35:49.0429618Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2026-07-05T01:35:49.0462522Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2026-07-05T01:35:49.0798874Z Removing HTTP extra header +2026-07-05T01:35:49.0803750Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2026-07-05T01:35:49.0834905Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2026-07-05T01:35:49.1058334Z Removing includeIf entries pointing to credentials config files +2026-07-05T01:35:49.1063779Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: +2026-07-05T01:35:49.1094238Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url +2026-07-05T01:35:49.1324366Z [command]/usr/bin/git config --file /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config http.https://github.com/.extraheader AUTHORIZATION: basic *** +2026-07-05T01:35:49.1361736Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/cascade/cascade/.git.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:35:49.1393225Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:35:49.1425031Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:35:49.1456875Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:35:49.1491240Z ##[endgroup] +2026-07-05T01:35:49.1492383Z ##[group]Fetching the repository +2026-07-05T01:35:49.1499181Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +b024238c620d93c491ab183cc6f7ec8f2963c356:refs/remotes/pull/452/merge +2026-07-05T01:35:49.6471432Z From https://github.com/stablekernel/cascade +2026-07-05T01:35:49.6473262Z * [new ref] b024238c620d93c491ab183cc6f7ec8f2963c356 -> pull/452/merge +2026-07-05T01:35:49.6515775Z ##[endgroup] +2026-07-05T01:35:49.6517009Z ##[group]Determining the checkout info +2026-07-05T01:35:49.6518343Z ##[endgroup] +2026-07-05T01:35:49.6519148Z [command]/usr/bin/git sparse-checkout disable +2026-07-05T01:35:49.6571087Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig +2026-07-05T01:35:49.6602623Z ##[group]Checking out the ref +2026-07-05T01:35:49.6605553Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/452/merge +2026-07-05T01:35:49.7044423Z Note: switching to 'refs/remotes/pull/452/merge'. +2026-07-05T01:35:49.7045198Z +2026-07-05T01:35:49.7045756Z You are in 'detached HEAD' state. You can look around, make experimental +2026-07-05T01:35:49.7047401Z changes and commit them, and you can discard any commits you make in this +2026-07-05T01:35:49.7049276Z state without impacting any branches by switching back to a branch. +2026-07-05T01:35:49.7050550Z +2026-07-05T01:35:49.7051370Z If you want to create a new branch to retain commits you create, you may +2026-07-05T01:35:49.7053102Z do so (now or later) by using -c with the switch command. Example: +2026-07-05T01:35:49.7054128Z +2026-07-05T01:35:49.7054637Z git switch -c +2026-07-05T01:35:49.7055397Z +2026-07-05T01:35:49.7055924Z Or undo this operation with: +2026-07-05T01:35:49.7056709Z +2026-07-05T01:35:49.7057185Z git switch - +2026-07-05T01:35:49.7057807Z +2026-07-05T01:35:49.7059228Z Turn off this advice by setting config variable advice.detachedHead to false +2026-07-05T01:35:49.7060967Z +2026-07-05T01:35:49.7062531Z HEAD is now at b024238 Merge c364f954dd1815e62e72600d98bc1ae919d95e06 into a6d6bd696e35d2ac0af607ed555c868a34daf22e +2026-07-05T01:35:49.7067068Z ##[endgroup] +2026-07-05T01:35:49.7098362Z [command]/usr/bin/git log -1 --format=%H +2026-07-05T01:35:49.7123727Z b024238c620d93c491ab183cc6f7ec8f2963c356 +2026-07-05T01:35:49.7468338Z ##[group]Run actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 +2026-07-05T01:35:49.7469845Z with: +2026-07-05T01:35:49.7470976Z go-version-file: go.mod +2026-07-05T01:35:49.7471996Z cache: true +2026-07-05T01:35:49.7472925Z check-latest: false +2026-07-05T01:35:49.7482092Z token: *** +2026-07-05T01:35:49.7483020Z ##[endgroup] +2026-07-05T01:35:49.8746799Z Setup go version spec 1.26.4 +2026-07-05T01:35:49.8773335Z Found in cache @ /opt/hostedtoolcache/go/1.26.4/x64 +2026-07-05T01:35:49.8775327Z Added go to the path +2026-07-05T01:35:49.8779049Z Successfully set up Go version 1.26.4 +2026-07-05T01:35:50.5839793Z [command]/opt/hostedtoolcache/go/1.26.4/x64/bin/go env GOMODCACHE +2026-07-05T01:35:50.5881025Z [command]/opt/hostedtoolcache/go/1.26.4/x64/bin/go env GOCACHE +2026-07-05T01:35:50.5897914Z /home/runner/go/pkg/mod +2026-07-05T01:35:50.5920930Z /home/runner/.cache/go-build +2026-07-05T01:35:50.6643259Z Cache hit for: setup-go-Linux-x64-ubuntu24-go-1.26.4-8ecf01efaeac13250b9a827ef268af101e565dba8eab4caab864655d9c9788af +2026-07-05T01:35:51.0261803Z Received 47820336 of 47820336 (100.0%), 151.5 MBs/sec +2026-07-05T01:35:51.0263579Z Cache Size: ~46 MB (47820336 B) +2026-07-05T01:35:51.0297459Z [command]/usr/bin/tar -xf /home/runner/work/_temp/3c60a08c-9816-49e6-a574-8203a53bacc0/cache.tzst -P -C /home/runner/work/cascade/cascade --use-compress-program unzstd +2026-07-05T01:35:51.4322324Z Cache restored successfully +2026-07-05T01:35:51.4361444Z Cache restored from key: setup-go-Linux-x64-ubuntu24-go-1.26.4-8ecf01efaeac13250b9a827ef268af101e565dba8eab4caab864655d9c9788af +2026-07-05T01:35:51.4387386Z go version go1.26.4 linux/amd64 +2026-07-05T01:35:51.4387630Z +2026-07-05T01:35:51.4388046Z ##[group]go env +2026-07-05T01:35:51.4729468Z AR='ar' +2026-07-05T01:35:51.4729933Z CC='gcc' +2026-07-05T01:35:51.4730528Z CGO_CFLAGS='-O2 -g' +2026-07-05T01:35:51.4730869Z CGO_CPPFLAGS='' +2026-07-05T01:35:51.4731207Z CGO_CXXFLAGS='-O2 -g' +2026-07-05T01:35:51.4731566Z CGO_ENABLED='1' +2026-07-05T01:35:51.4731976Z CGO_FFLAGS='-O2 -g' +2026-07-05T01:35:51.4732321Z CGO_LDFLAGS='-O2 -g' +2026-07-05T01:35:51.4732651Z CXX='g++' +2026-07-05T01:35:51.4732957Z GCCGO='gccgo' +2026-07-05T01:35:51.4733656Z GO111MODULE='' +2026-07-05T01:35:51.4733957Z GOAMD64='v1' +2026-07-05T01:35:51.4734320Z GOARCH='amd64' +2026-07-05T01:35:51.4734631Z GOAUTH='netrc' +2026-07-05T01:35:51.4734921Z GOBIN='' +2026-07-05T01:35:51.4735245Z GOCACHE='/home/runner/.cache/go-build' +2026-07-05T01:35:51.4735695Z GOCACHEPROG='' +2026-07-05T01:35:51.4736024Z GODEBUG='' +2026-07-05T01:35:51.4736353Z GOENV='/home/runner/.config/go/env' +2026-07-05T01:35:51.4736746Z GOEXE='' +2026-07-05T01:35:51.4737030Z GOEXPERIMENT='' +2026-07-05T01:35:51.4737368Z GOFIPS140='off' +2026-07-05T01:35:51.4737683Z GOFLAGS='' +2026-07-05T01:35:51.4738769Z GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build591313320=/tmp/go-build -gno-record-gcc-switches' +2026-07-05T01:35:51.4739779Z GOHOSTARCH='amd64' +2026-07-05T01:35:51.4740312Z GOHOSTOS='linux' +2026-07-05T01:35:51.4740639Z GOINSECURE='' +2026-07-05T01:35:51.4741037Z GOMOD='/home/runner/work/cascade/cascade/go.mod' +2026-07-05T01:35:51.4741522Z GOMODCACHE='/home/runner/go/pkg/mod' +2026-07-05T01:35:51.4741950Z GONOPROXY='' +2026-07-05T01:35:51.4742252Z GONOSUMDB='' +2026-07-05T01:35:51.4742545Z GOOS='linux' +2026-07-05T01:35:51.4742880Z GOPATH='/home/runner/go' +2026-07-05T01:35:51.4743239Z GOPRIVATE='' +2026-07-05T01:35:51.4743685Z GOPROXY='https://proxy.golang.org,direct' +2026-07-05T01:35:51.4744257Z GOROOT='/opt/hostedtoolcache/go/1.26.4/x64' +2026-07-05T01:35:51.4744710Z GOSUMDB='sum.golang.org' +2026-07-05T01:35:51.4745080Z GOTELEMETRY='local' +2026-07-05T01:35:51.4745488Z GOTELEMETRYDIR='/home/runner/.config/go/telemetry' +2026-07-05T01:35:51.4745990Z GOTMPDIR='' +2026-07-05T01:35:51.4746294Z GOTOOLCHAIN='local' +2026-07-05T01:35:51.4746778Z GOTOOLDIR='/opt/hostedtoolcache/go/1.26.4/x64/pkg/tool/linux_amd64' +2026-07-05T01:35:51.4747327Z GOVCS='' +2026-07-05T01:35:51.4747622Z GOVERSION='go1.26.4' +2026-07-05T01:35:51.4748200Z GOWORK='' +2026-07-05T01:35:51.4748509Z PKG_CONFIG='pkg-config' +2026-07-05T01:35:51.4748746Z +2026-07-05T01:35:51.4749298Z ##[endgroup] +2026-07-05T01:35:51.4922997Z ##[group]Run go list ./... | grep -v /e2e \ +2026-07-05T01:35:51.4923432Z go list ./... | grep -v /e2e \ +2026-07-05T01:35:51.4923856Z  | xargs go test -v -race -coverprofile=coverage.out +2026-07-05T01:35:51.5065239Z shell: /usr/bin/bash -e {0} +2026-07-05T01:35:51.5065541Z env: +2026-07-05T01:35:51.5065761Z GOTOOLCHAIN: local +2026-07-05T01:35:51.5066012Z ##[endgroup] +2026-07-05T01:35:51.7561883Z go: downloading github.com/stretchr/testify v1.11.1 +2026-07-05T01:35:51.7715083Z go: downloading github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 +2026-07-05T01:35:51.9135434Z go: downloading golang.org/x/text v0.14.0 +2026-07-05T01:35:51.9427988Z go: downloading github.com/davecgh/go-spew v1.1.1 +2026-07-05T01:36:24.8361402Z === RUN TestVersionCommand +2026-07-05T01:36:24.8378909Z --- PASS: TestVersionCommand (0.00s) +2026-07-05T01:36:24.8410922Z === RUN TestHelpCommand +2026-07-05T01:36:24.8440524Z --- PASS: TestHelpCommand (0.00s) +2026-07-05T01:36:24.8450791Z === RUN TestParseConfigCommand +2026-07-05T01:36:24.8470807Z --- PASS: TestParseConfigCommand (0.00s) +2026-07-05T01:36:24.8551029Z === RUN TestParseConfigCommand_InvalidConfig +2026-07-05T01:36:24.8560754Z --- PASS: TestParseConfigCommand_InvalidConfig (0.00s) +2026-07-05T01:36:24.8580713Z === RUN TestParseConfigCommand_FileNotFound +2026-07-05T01:36:24.8601796Z --- PASS: TestParseConfigCommand_FileNotFound (0.00s) +2026-07-05T01:36:24.8620453Z === RUN TestDetectChangesCommand_MissingFlags +2026-07-05T01:36:24.8640532Z --- PASS: TestDetectChangesCommand_MissingFlags (0.00s) +2026-07-05T01:36:24.8670793Z === RUN TestGenerateChangelogCommand_MissingFlags +2026-07-05T01:36:24.8680878Z --- PASS: TestGenerateChangelogCommand_MissingFlags (0.00s) +2026-07-05T01:36:24.8710438Z === RUN TestUnknownCommand +2026-07-05T01:36:24.8730604Z --- PASS: TestUnknownCommand (0.00s) +2026-07-05T01:36:24.8760797Z === RUN TestGraphCommand_EmitsMermaid +2026-07-05T01:36:24.8770843Z --- PASS: TestGraphCommand_EmitsMermaid (0.00s) +2026-07-05T01:36:24.8790509Z === RUN TestGraphCommand_JSONWrapsDiagram +2026-07-05T01:36:24.8820500Z --- PASS: TestGraphCommand_JSONWrapsDiagram (0.00s) +2026-07-05T01:36:24.8830797Z === RUN TestGraphCommand_RejectsUnknownFormat +2026-07-05T01:36:24.8831413Z --- PASS: TestGraphCommand_RejectsUnknownFormat (0.00s) +2026-07-05T01:36:24.8831987Z === RUN TestGraphCommand_MissingManifest +2026-07-05T01:36:24.8832521Z --- PASS: TestGraphCommand_MissingManifest (0.00s) +2026-07-05T01:36:24.8833142Z === RUN TestGraphCommand_EnvGranularityEmitsStateMachine +2026-07-05T01:36:24.8833908Z --- PASS: TestGraphCommand_EnvGranularityEmitsStateMachine (0.00s) +2026-07-05T01:36:24.8834639Z === RUN TestGraphCommand_StagesGranularityEmitsFlowchart +2026-07-05T01:36:24.8835338Z --- PASS: TestGraphCommand_StagesGranularityEmitsFlowchart (0.00s) +2026-07-05T01:36:24.8835959Z === RUN TestStatusCommand_AllEnvs +2026-07-05T01:36:24.8836426Z --- PASS: TestStatusCommand_AllEnvs (0.00s) +2026-07-05T01:36:24.8836953Z === RUN TestStatusCommand_AllEnvs_JSON +2026-07-05T01:36:24.8837483Z --- PASS: TestStatusCommand_AllEnvs_JSON (0.00s) +2026-07-05T01:36:24.8838056Z === RUN TestStatusCommand_EnvSubcommand +2026-07-05T01:36:24.8842040Z --- PASS: TestStatusCommand_EnvSubcommand (0.00s) +2026-07-05T01:36:24.8842758Z === RUN TestStatusCommand_EnvSubcommand_JSON +2026-07-05T01:36:24.8843612Z --- PASS: TestStatusCommand_EnvSubcommand_JSON (0.00s) +2026-07-05T01:36:24.8844143Z === RUN TestStatusCommand_BuildSubcommand +2026-07-05T01:36:24.8844681Z --- PASS: TestStatusCommand_BuildSubcommand (0.00s) +2026-07-05T01:36:24.8845253Z === RUN TestStatusCommand_BuildSubcommand_JSON +2026-07-05T01:36:24.8845829Z --- PASS: TestStatusCommand_BuildSubcommand_JSON (0.00s) +2026-07-05T01:36:24.8846391Z === RUN TestStatusCommand_DeploySubcommand +2026-07-05T01:36:24.8846874Z --- PASS: TestStatusCommand_DeploySubcommand (0.00s) +2026-07-05T01:36:24.8847497Z === RUN TestStatusCommand_DeploySubcommand_JSON +2026-07-05T01:36:24.8883156Z --- PASS: TestStatusCommand_DeploySubcommand_JSON (0.00s) +2026-07-05T01:36:24.8883941Z === RUN TestStatusCommand_EmptyState_NoPanic +2026-07-05T01:36:24.8884544Z --- PASS: TestStatusCommand_EmptyState_NoPanic (0.00s) +2026-07-05T01:36:24.8885119Z === RUN TestStatusCommand_MissingManifest +2026-07-05T01:36:24.8885676Z --- PASS: TestStatusCommand_MissingManifest (0.00s) +2026-07-05T01:36:24.8886256Z === RUN TestStatusCommand_BuildMissingEnvFlag +2026-07-05T01:36:24.8886845Z --- PASS: TestStatusCommand_BuildMissingEnvFlag (0.00s) +2026-07-05T01:36:24.8887443Z === RUN TestStatusCommand_DeployMissingEnvFlag +2026-07-05T01:36:24.8888045Z --- PASS: TestStatusCommand_DeployMissingEnvFlag (0.00s) +2026-07-05T01:36:24.8888675Z === RUN TestStatusCommand_Consistency_JSON +2026-07-05T01:36:24.8889609Z --- PASS: TestStatusCommand_Consistency_JSON (0.39s) +2026-07-05T01:36:24.8890425Z === RUN TestStatusCommand_Consistency_HumanReadable +2026-07-05T01:36:24.8891077Z --- PASS: TestStatusCommand_Consistency_HumanReadable (0.16s) +2026-07-05T01:36:24.8891813Z === RUN TestGenerateWorkflow_Output_WritesCustomOrchestratePath +2026-07-05T01:36:24.8892636Z --- PASS: TestGenerateWorkflow_Output_WritesCustomOrchestratePath (0.01s) +2026-07-05T01:36:24.8893471Z === RUN TestGenerateWorkflow_PromoteOutput_WritesCustomPromotePath +2026-07-05T01:36:24.8894314Z --- PASS: TestGenerateWorkflow_PromoteOutput_WritesCustomPromotePath (0.02s) +2026-07-05T01:36:24.8895102Z === RUN TestGenerateWorkflow_OrchestrateOnly_OmitsPromote +2026-07-05T01:36:24.8895833Z --- PASS: TestGenerateWorkflow_OrchestrateOnly_OmitsPromote (0.02s) +2026-07-05T01:36:24.8896571Z === RUN TestGenerateWorkflow_PromoteOnly_OmitsOrchestrate +2026-07-05T01:36:24.8897281Z --- PASS: TestGenerateWorkflow_PromoteOnly_OmitsOrchestrate (0.01s) +2026-07-05T01:36:24.8898044Z === RUN TestGenerateWorkflow_ActionFolder_NamesCompositeActionDir +2026-07-05T01:36:24.8898906Z --- PASS: TestGenerateWorkflow_ActionFolder_NamesCompositeActionDir (0.02s) +2026-07-05T01:36:24.8899688Z === RUN TestVersionCommand_ContainsVersionString +2026-07-05T01:36:24.8900813Z --- PASS: TestVersionCommand_ContainsVersionString (0.01s) +2026-07-05T01:36:24.8901448Z === RUN TestSchemaCommand_EmitsEmbeddedJSONSchema +2026-07-05T01:36:24.8902080Z --- PASS: TestSchemaCommand_EmitsEmbeddedJSONSchema (0.03s) +2026-07-05T01:36:24.8902799Z === RUN TestBranchProtectionCommand_EmitsProtectionAndOperatorTodo +2026-07-05T01:36:24.8913575Z --- PASS: TestBranchProtectionCommand_EmitsProtectionAndOperatorTodo (0.02s) +2026-07-05T01:36:24.8914721Z === RUN TestVerifyCommand_QuietClean_NoStdoutExitZero +2026-07-05T01:36:24.8915545Z --- PASS: TestVerifyCommand_QuietClean_NoStdoutExitZero (0.09s) +2026-07-05T01:36:24.8916473Z === RUN TestVerifyCommand_QuietDrift_NoReportBodyExitNonZero +2026-07-05T01:36:24.8917405Z --- PASS: TestVerifyCommand_QuietDrift_NoReportBodyExitNonZero (0.01s) +2026-07-05T01:36:24.8918200Z === RUN TestGraphCommand_BlandThemeStylesNodes +2026-07-05T01:36:24.8918990Z --- PASS: TestGraphCommand_BlandThemeStylesNodes (0.01s) +2026-07-05T01:36:24.8919797Z === RUN TestGraphCommand_CustomThemeFileStylesNodes +2026-07-05T01:36:24.8920691Z --- PASS: TestGraphCommand_CustomThemeFileStylesNodes (0.01s) +2026-07-05T01:36:24.8921495Z === RUN TestGraphCommand_MalformedThemeFileErrors +2026-07-05T01:36:24.8922281Z --- PASS: TestGraphCommand_MalformedThemeFileErrors (0.01s) +2026-07-05T01:36:24.8923073Z === RUN TestSimulateCommand_PromoteEmitsDiffAndEffects +2026-07-05T01:36:24.8923898Z --- PASS: TestSimulateCommand_PromoteEmitsDiffAndEffects (0.01s) +2026-07-05T01:36:24.8924776Z === RUN TestSimulateCommand_PromoteJSONMatchesHumanRender +2026-07-05T01:36:24.8925661Z --- PASS: TestSimulateCommand_PromoteJSONMatchesHumanRender (0.02s) +2026-07-05T01:36:24.8926485Z === RUN TestSimulateCommand_DeployResultGatesFinalize +2026-07-05T01:36:24.8927255Z --- PASS: TestSimulateCommand_DeployResultGatesFinalize (0.01s) +2026-07-05T01:36:24.8928085Z === RUN TestSimulateCommand_RollbackEmitsRevert +2026-07-05T01:36:24.8928816Z --- PASS: TestSimulateCommand_RollbackEmitsRevert (0.01s) +2026-07-05T01:36:24.8930146Z === RUN TestSimulateCommand_RollbackMissingEnv +2026-07-05T01:36:24.8930956Z --- PASS: TestSimulateCommand_RollbackMissingEnv (0.01s) +2026-07-05T01:36:24.8931689Z === RUN TestSimulateCommand_HotfixMissingEnv +2026-07-05T01:36:24.8932426Z --- PASS: TestSimulateCommand_HotfixMissingEnv (0.01s) +2026-07-05T01:36:24.8932918Z PASS +2026-07-05T01:36:24.8933425Z coverage: 0.0% of statements +2026-07-05T01:36:24.8934274Z ok github.com/stablekernel/cascade/cmd/cascade 6.473s coverage: 0.0% of statements +2026-07-05T01:36:24.8935172Z === RUN TestCommand_Apply_PutsProtectionBody +2026-07-05T01:36:24.8935907Z --- PASS: TestCommand_Apply_PutsProtectionBody (0.01s) +2026-07-05T01:36:24.8936700Z === RUN TestCommand_Apply_SurfacesForbidden +2026-07-05T01:36:24.8937420Z --- PASS: TestCommand_Apply_SurfacesForbidden (0.00s) +2026-07-05T01:36:24.8938107Z === RUN TestCommand_Apply_RequiresToken +2026-07-05T01:36:24.8938644Z --- PASS: TestCommand_Apply_RequiresToken (0.00s) +2026-07-05T01:36:24.8939365Z === RUN TestCommand_Apply_RequiresRepo +2026-07-05T01:36:24.8940309Z --- PASS: TestCommand_Apply_RequiresRepo (0.00s) +2026-07-05T01:36:24.8940844Z === RUN TestCommand_NoApply_MakesNoRequest +2026-07-05T01:36:24.8941543Z --- PASS: TestCommand_NoApply_MakesNoRequest (0.00s) +2026-07-05T01:36:24.8942221Z === RUN TestCommand_EmitsSafePayloadToStdout +2026-07-05T01:36:24.8942802Z --- PASS: TestCommand_EmitsSafePayloadToStdout (0.00s) +2026-07-05T01:36:24.8943357Z === RUN TestCommand_WritesToOutputFile +2026-07-05T01:36:24.8943863Z --- PASS: TestCommand_WritesToOutputFile (0.00s) +2026-07-05T01:36:24.8944438Z === RUN TestBuild_Contexts_MatchGeneratorSafeChecks +2026-07-05T01:36:24.8945088Z --- PASS: TestBuild_Contexts_MatchGeneratorSafeChecks (0.00s) +2026-07-05T01:36:24.8945694Z === RUN TestBuild_Safety_NoBareDisplayNameRequired +2026-07-05T01:36:24.8946300Z --- PASS: TestBuild_Safety_NoBareDisplayNameRequired (0.00s) +2026-07-05T01:36:24.8946910Z === RUN TestBuild_NoCallbacks_EmptyTodoStable +2026-07-05T01:36:24.8947769Z --- PASS: TestBuild_NoCallbacks_EmptyTodoStable (0.00s) +2026-07-05T01:36:24.8948342Z === RUN TestMarshal_Deterministic +2026-07-05T01:36:24.8948822Z --- PASS: TestMarshal_Deterministic (0.00s) +2026-07-05T01:36:24.8949319Z === RUN TestMarshal_RoundTrips +2026-07-05T01:36:24.8949769Z --- PASS: TestMarshal_RoundTrips (0.00s) +2026-07-05T01:36:24.8950405Z === RUN TestBuild_DefaultsWellFormed +2026-07-05T01:36:24.8950909Z --- PASS: TestBuild_DefaultsWellFormed (0.00s) +2026-07-05T01:36:24.8951445Z === RUN TestMarshal_RestrictionsNullPresent +2026-07-05T01:36:24.8952006Z --- PASS: TestMarshal_RestrictionsNullPresent (0.00s) +2026-07-05T01:36:24.8952489Z PASS +2026-07-05T01:36:24.8952804Z coverage: 83.5% of statements +2026-07-05T01:36:24.8953602Z ok github.com/stablekernel/cascade/internal/branchprotection 1.083s coverage: 83.5% of statements +2026-07-05T01:36:24.8954454Z === RUN TestChangelogNewCommand_Structure +2026-07-05T01:36:24.8955012Z --- PASS: TestChangelogNewCommand_Structure (0.00s) +2026-07-05T01:36:24.8955626Z === RUN TestChangelogNewCommand_RunE_EmptySHARange +2026-07-05T01:36:24.8956106Z { +2026-07-05T01:36:24.8956416Z "changelog": "", +2026-07-05T01:36:24.8956783Z "has_breaking": false, +2026-07-05T01:36:24.8957189Z "has_features": false, +2026-07-05T01:36:24.8957564Z "has_fixes": false +2026-07-05T01:36:24.8957880Z } +2026-07-05T01:36:24.8958392Z --- PASS: TestChangelogNewCommand_RunE_EmptySHARange (0.01s) +2026-07-05T01:36:24.8959047Z === RUN TestChangelogNewCommand_RunE_WithExcludePaths +2026-07-05T01:36:24.8959555Z { +2026-07-05T01:36:24.8959865Z "changelog": "", +2026-07-05T01:36:24.8960609Z "has_breaking": false, +2026-07-05T01:36:24.8961191Z "has_features": false, +2026-07-05T01:36:24.8961566Z "has_fixes": false +2026-07-05T01:36:24.8962055Z } +2026-07-05T01:36:24.8962506Z --- PASS: TestChangelogNewCommand_RunE_WithExcludePaths (0.03s) +2026-07-05T01:36:24.8963326Z === RUN TestChangelogNewCommand_RunE_WithContributors +2026-07-05T01:36:24.8963944Z { +2026-07-05T01:36:24.8964642Z "changelog": "", +2026-07-05T01:36:24.8965040Z "has_breaking": false, +2026-07-05T01:36:24.8969731Z "has_features": false, +2026-07-05T01:36:24.8970324Z "has_fixes": false +2026-07-05T01:36:24.8970654Z } +2026-07-05T01:36:24.8971125Z --- PASS: TestChangelogNewCommand_RunE_WithContributors (0.01s) +2026-07-05T01:36:24.8972009Z === RUN TestChangelogNewCommand_MissingRequiredFlags +2026-07-05T01:36:24.8972666Z --- PASS: TestChangelogNewCommand_MissingRequiredFlags (0.00s) +2026-07-05T01:36:24.8973303Z === RUN TestLookupAuthorsBatch_EmptyEmails +2026-07-05T01:36:24.8973767Z --- PASS: TestLookupAuthorsBatch_EmptyEmails (0.00s) +2026-07-05T01:36:24.8974673Z === RUN TestLookupAuthorsBatch_EmptyEmailSlice +2026-07-05T01:36:24.8975285Z --- PASS: TestLookupAuthorsBatch_EmptyEmailSlice (0.00s) +2026-07-05T01:36:24.8980591Z === RUN TestLookupAuthorsBatch_InvalidRepoFormat +2026-07-05T01:36:24.8981239Z --- PASS: TestLookupAuthorsBatch_InvalidRepoFormat (0.00s) +2026-07-05T01:36:24.8981900Z === RUN TestUnmarshalJSON_InvalidEntrySkipped +2026-07-05T01:36:24.8996243Z --- PASS: TestUnmarshalJSON_InvalidEntrySkipped (0.00s) +2026-07-05T01:36:24.8996916Z === RUN TestUnmarshalJSON_TopLevelError +2026-07-05T01:36:24.8997479Z --- PASS: TestUnmarshalJSON_TopLevelError (0.00s) +2026-07-05T01:36:24.8998123Z === RUN TestLookupConventionalCommitUsernames_WithCommits +2026-07-05T01:36:24.8998882Z --- PASS: TestLookupConventionalCommitUsernames_WithCommits (0.35s) +2026-07-05T01:36:24.8999604Z === RUN TestLookupGitHubUsernames_InvalidRepoFormat +2026-07-05T01:36:24.9000410Z --- PASS: TestLookupGitHubUsernames_InvalidRepoFormat (0.00s) +2026-07-05T01:36:24.9001029Z === RUN TestLookupGitHubUsernames_EmptyInputs +2026-07-05T01:36:24.9001664Z === RUN TestLookupGitHubUsernames_EmptyInputs/empty_commits +2026-07-05T01:36:24.9002349Z === RUN TestLookupGitHubUsernames_EmptyInputs/nil_commits +2026-07-05T01:36:24.9003005Z === RUN TestLookupGitHubUsernames_EmptyInputs/empty_repo +2026-07-05T01:36:24.9003657Z --- PASS: TestLookupGitHubUsernames_EmptyInputs (0.00s) +2026-07-05T01:36:24.9004792Z --- PASS: TestLookupGitHubUsernames_EmptyInputs/empty_commits (0.00s) +2026-07-05T01:36:24.9005717Z --- PASS: TestLookupGitHubUsernames_EmptyInputs/nil_commits (0.00s) +2026-07-05T01:36:24.9006615Z --- PASS: TestLookupGitHubUsernames_EmptyInputs/empty_repo (0.00s) +2026-07-05T01:36:24.9007331Z === RUN TestLookupGitHubUsernames_DeduplicationByEmail +2026-07-05T01:36:24.9008043Z --- PASS: TestLookupGitHubUsernames_DeduplicationByEmail (0.00s) +2026-07-05T01:36:24.9008677Z === RUN TestGraphQLResponseUnmarshal +2026-07-05T01:36:24.9009201Z --- PASS: TestGraphQLResponseUnmarshal (0.00s) +2026-07-05T01:36:24.9009799Z === RUN TestGraphQLResponseUnmarshal_EmptyRepository +2026-07-05T01:36:24.9022990Z --- PASS: TestGraphQLResponseUnmarshal_EmptyRepository (0.00s) +2026-07-05T01:36:24.9023746Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs +2026-07-05T01:36:24.9024547Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs/empty_commits +2026-07-05T01:36:24.9025451Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs/nil_commits +2026-07-05T01:36:24.9026288Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs/empty_repo +2026-07-05T01:36:24.9027113Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs (0.00s) +2026-07-05T01:36:24.9028175Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs/empty_commits (0.00s) +2026-07-05T01:36:24.9029324Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs/nil_commits (0.00s) +2026-07-05T01:36:24.9030563Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs/empty_repo (0.00s) +2026-07-05T01:36:24.9031424Z === RUN TestLookupGitHubUsernames_NoEmails +2026-07-05T01:36:24.9032143Z --- PASS: TestLookupGitHubUsernames_NoEmails (0.00s) +2026-07-05T01:36:24.9032731Z === RUN TestParseCommit_WithPRNumber +2026-07-05T01:36:24.9033292Z --- PASS: TestParseCommit_WithPRNumber (0.00s) +2026-07-05T01:36:24.9033919Z === RUN TestParseCommit_WithOrgRepoPRRef +2026-07-05T01:36:24.9034820Z --- PASS: TestParseCommit_WithOrgRepoPRRef (0.00s) +2026-07-05T01:36:24.9035507Z === RUN TestCategorizeCommits_NonRoutineNonFeatFix +2026-07-05T01:36:24.9036222Z --- PASS: TestCategorizeCommits_NonRoutineNonFeatFix (0.00s) +2026-07-05T01:36:24.9036971Z === RUN TestFormatMarkdown_CollapsibleFeatureSection +2026-07-05T01:36:24.9037643Z --- PASS: TestFormatMarkdown_CollapsibleFeatureSection (0.00s) +2026-07-05T01:36:24.9038355Z === RUN TestFormatMarkdown_CollapsibleOtherSection +2026-07-05T01:36:24.9039030Z --- PASS: TestFormatMarkdown_CollapsibleOtherSection (0.00s) +2026-07-05T01:36:24.9039641Z === RUN TestFormatMarkdown_WithScopedCommits +2026-07-05T01:36:24.9040354Z --- PASS: TestFormatMarkdown_WithScopedCommits (0.00s) +2026-07-05T01:36:24.9040997Z === RUN TestFormatMarkdown_MixedScopedAndUnscopedCommits +2026-07-05T01:36:24.9041721Z --- PASS: TestFormatMarkdown_MixedScopedAndUnscopedCommits (0.00s) +2026-07-05T01:36:24.9042381Z === RUN TestFormatCommitLine_WithPRNumber +2026-07-05T01:36:24.9042951Z --- PASS: TestFormatCommitLine_WithPRNumber (0.00s) +2026-07-05T01:36:24.9043514Z === RUN TestFormatCommitLine_WithoutPRNumber +2026-07-05T01:36:24.9044109Z --- PASS: TestFormatCommitLine_WithoutPRNumber (0.00s) +2026-07-05T01:36:24.9044712Z === RUN TestFormatOtherCommitLine_WithUsername +2026-07-05T01:36:24.9045316Z --- PASS: TestFormatOtherCommitLine_WithUsername (0.00s) +2026-07-05T01:36:24.9045930Z === RUN TestFormatOtherCommitLine_WithoutUsername +2026-07-05T01:36:24.9046557Z --- PASS: TestFormatOtherCommitLine_WithoutUsername (0.00s) +2026-07-05T01:36:24.9047157Z === RUN TestParseCommit +2026-07-05T01:36:24.9047572Z === RUN TestParseCommit/feat_with_scope +2026-07-05T01:36:24.9048070Z === RUN TestParseCommit/fix_without_scope +2026-07-05T01:36:24.9048612Z === RUN TestParseCommit/breaking_change_with_! +2026-07-05T01:36:24.9049150Z === RUN TestParseCommit/breaking_change_in_body +2026-07-05T01:36:24.9049744Z === RUN TestParseCommit/breaking_change_case_insensitive +2026-07-05T01:36:24.9067711Z === RUN TestParseCommit/non-conventional_commit +2026-07-05T01:36:24.9068562Z === RUN TestParseCommit/chore_commit +2026-07-05T01:36:24.9069060Z === RUN TestParseCommit/docs_with_scope +2026-07-05T01:36:24.9069651Z === RUN TestParseCommit/fix_with_breaking_bang_no_scope +2026-07-05T01:36:24.9070753Z === RUN TestParseCommit/narrative_referencing_BREAKING_CHANGE_wrapped_across_lines_is_not_a_footer +2026-07-05T01:36:24.9071713Z === RUN TestParseCommit/BREAKING_CHANGE_footer_at_body_start_matches +2026-07-05T01:36:24.9072556Z === RUN TestParseCommit/BREAKING_CHANGE_footer_mid-body_on_its_own_line_matches +2026-07-05T01:36:24.9073253Z --- PASS: TestParseCommit (0.00s) +2026-07-05T01:36:24.9073854Z --- PASS: TestParseCommit/feat_with_scope (0.00s) +2026-07-05T01:36:24.9074780Z --- PASS: TestParseCommit/fix_without_scope (0.00s) +2026-07-05T01:36:24.9075498Z --- PASS: TestParseCommit/breaking_change_with_! (0.00s) +2026-07-05T01:36:24.9076242Z --- PASS: TestParseCommit/breaking_change_in_body (0.00s) +2026-07-05T01:36:24.9077069Z --- PASS: TestParseCommit/breaking_change_case_insensitive (0.00s) +2026-07-05T01:36:24.9077873Z --- PASS: TestParseCommit/non-conventional_commit (0.00s) +2026-07-05T01:36:24.9078547Z --- PASS: TestParseCommit/chore_commit (0.00s) +2026-07-05T01:36:24.9079208Z --- PASS: TestParseCommit/docs_with_scope (0.00s) +2026-07-05T01:36:24.9079967Z --- PASS: TestParseCommit/fix_with_breaking_bang_no_scope (0.00s) +2026-07-05T01:36:24.9081258Z --- PASS: TestParseCommit/narrative_referencing_BREAKING_CHANGE_wrapped_across_lines_is_not_a_footer (0.00s) +2026-07-05T01:36:24.9082480Z --- PASS: TestParseCommit/BREAKING_CHANGE_footer_at_body_start_matches (0.00s) +2026-07-05T01:36:24.9083589Z --- PASS: TestParseCommit/BREAKING_CHANGE_footer_mid-body_on_its_own_line_matches (0.00s) +2026-07-05T01:36:24.9084339Z === RUN TestIsRoutineType +2026-07-05T01:36:24.9084780Z --- PASS: TestIsRoutineType (0.00s) +2026-07-05T01:36:24.9085240Z === RUN TestCategorizeCommits +2026-07-05T01:36:24.9085959Z --- PASS: TestCategorizeCommits (0.01s) +2026-07-05T01:36:24.9086439Z === RUN TestFormatMarkdown +2026-07-05T01:36:24.9086862Z --- PASS: TestFormatMarkdown (0.00s) +2026-07-05T01:36:24.9087318Z === RUN TestFormatMarkdown_Empty +2026-07-05T01:36:24.9087783Z --- PASS: TestFormatMarkdown_Empty (0.00s) +2026-07-05T01:36:24.9088297Z === RUN TestFormatMarkdown_WithContributors +2026-07-05T01:36:24.9088869Z --- PASS: TestFormatMarkdown_WithContributors (0.00s) +2026-07-05T01:36:24.9089406Z === RUN TestShortHash +2026-07-05T01:36:24.9089786Z --- PASS: TestShortHash (0.00s) +2026-07-05T01:36:24.9090379Z === RUN TestEscapeBranchMentions +2026-07-05T01:36:24.9090952Z === RUN TestEscapeBranchMentions/use_@master_for_setup-cli_action +2026-07-05T01:36:24.9091586Z === RUN TestEscapeBranchMentions/use_@main_ref +2026-07-05T01:36:24.9092133Z === RUN TestEscapeBranchMentions/reset_to_@HEAD +2026-07-05T01:36:24.9092744Z === RUN TestEscapeBranchMentions/fetch_from_@origin/master +2026-07-05T01:36:24.9093368Z === RUN TestEscapeBranchMentions/update_to_@v1 +2026-07-05T01:36:24.9093944Z === RUN TestEscapeBranchMentions/update_to_@v1.0.0 +2026-07-05T01:36:24.9094567Z === RUN TestEscapeBranchMentions/update_to_@v1.0.0-rc.0 +2026-07-05T01:36:24.9095173Z === RUN TestEscapeBranchMentions/use_@v2.3.4-beta.1 +2026-07-05T01:36:24.9095762Z === RUN TestEscapeBranchMentions/by_@octocat +2026-07-05T01:36:24.9096292Z === RUN TestEscapeBranchMentions/thanks_@alice123 +2026-07-05T01:36:24.9096848Z === RUN TestEscapeBranchMentions/cc_@bob_smith +2026-07-05T01:36:24.9097415Z === RUN TestEscapeBranchMentions/use_@master_ref_by_@octocat +2026-07-05T01:36:24.9098113Z === RUN TestEscapeBranchMentions/update_@v1.0.0_and_@v2.0.0 +2026-07-05T01:36:24.9098708Z === RUN TestEscapeBranchMentions/simple_description +2026-07-05T01:36:24.9099351Z === RUN TestEscapeBranchMentions/email_user@example.com +2026-07-05T01:36:24.9099922Z --- PASS: TestEscapeBranchMentions (0.00s) +2026-07-05T01:36:24.9100927Z --- PASS: TestEscapeBranchMentions/use_@master_for_setup-cli_action (0.00s) +2026-07-05T01:36:24.9102032Z --- PASS: TestEscapeBranchMentions/use_@main_ref (0.00s) +2026-07-05T01:36:24.9102753Z --- PASS: TestEscapeBranchMentions/reset_to_@HEAD (0.00s) +2026-07-05T01:36:24.9103530Z --- PASS: TestEscapeBranchMentions/fetch_from_@origin/master (0.00s) +2026-07-05T01:36:24.9104312Z --- PASS: TestEscapeBranchMentions/update_to_@v1 (0.00s) +2026-07-05T01:36:24.9105072Z --- PASS: TestEscapeBranchMentions/update_to_@v1.0.0 (0.00s) +2026-07-05T01:36:24.9105856Z --- PASS: TestEscapeBranchMentions/update_to_@v1.0.0-rc.0 (0.00s) +2026-07-05T01:36:24.9106667Z --- PASS: TestEscapeBranchMentions/use_@v2.3.4-beta.1 (0.00s) +2026-07-05T01:36:24.9107408Z --- PASS: TestEscapeBranchMentions/by_@octocat (0.00s) +2026-07-05T01:36:24.9108090Z --- PASS: TestEscapeBranchMentions/thanks_@alice123 (0.00s) +2026-07-05T01:36:24.9109183Z --- PASS: TestEscapeBranchMentions/cc_@bob_smith (0.00s) +2026-07-05T01:36:24.9109949Z --- PASS: TestEscapeBranchMentions/use_@master_ref_by_@octocat (0.00s) +2026-07-05T01:36:24.9110969Z --- PASS: TestEscapeBranchMentions/update_@v1.0.0_and_@v2.0.0 (0.00s) +2026-07-05T01:36:24.9111727Z --- PASS: TestEscapeBranchMentions/simple_description (0.00s) +2026-07-05T01:36:24.9112481Z --- PASS: TestEscapeBranchMentions/email_user@example.com (0.00s) +2026-07-05T01:36:24.9112991Z PASS +2026-07-05T01:36:24.9113289Z coverage: 93.2% of statements +2026-07-05T01:36:24.9113957Z ok github.com/stablekernel/cascade/internal/changelog 1.499s coverage: 93.2% of statements +2026-07-05T01:36:24.9114641Z === RUN TestMatchGlob +2026-07-05T01:36:24.9115105Z === RUN TestMatchGlob/*.go_main.go +2026-07-05T01:36:24.9115554Z === RUN TestMatchGlob/*.go_main.txt +2026-07-05T01:36:24.9116025Z === RUN TestMatchGlob/src/*.go_src/main.go +2026-07-05T01:36:24.9116557Z === RUN TestMatchGlob/src/*.go_src/sub/main.go +2026-07-05T01:36:24.9117059Z === RUN TestMatchGlob/src/**_src/main.go +2026-07-05T01:36:24.9117700Z === RUN TestMatchGlob/src/**_src/sub/main.go +2026-07-05T01:36:24.9118200Z === RUN TestMatchGlob/src/**/*.go_src/main.go +2026-07-05T01:36:24.9118665Z === RUN TestMatchGlob/src/**/*.go_src/sub/main.go +2026-07-05T01:36:24.9119195Z === RUN TestMatchGlob/src/**/*.go_src/sub/deep/main.go +2026-07-05T01:36:24.9119691Z === RUN TestMatchGlob/**/*.go_main.go +2026-07-05T01:36:24.9120353Z === RUN TestMatchGlob/**/*.go_src/main.go +2026-07-05T01:36:24.9120827Z === RUN TestMatchGlob/**_anything/at/all.txt +2026-07-05T01:36:24.9121316Z === RUN TestMatchGlob/?.go_a.go +2026-07-05T01:36:24.9121700Z === RUN TestMatchGlob/?.go_ab.go +2026-07-05T01:36:24.9122124Z === RUN TestMatchGlob/src/**_other/main.go +2026-07-05T01:36:24.9122564Z === RUN TestMatchGlob/*.yaml_config.json +2026-07-05T01:36:24.9122995Z --- PASS: TestMatchGlob (0.00s) +2026-07-05T01:36:24.9123513Z --- PASS: TestMatchGlob/*.go_main.go (0.00s) +2026-07-05T01:36:24.9124101Z --- PASS: TestMatchGlob/*.go_main.txt (0.00s) +2026-07-05T01:36:24.9124715Z --- PASS: TestMatchGlob/src/*.go_src/main.go (0.00s) +2026-07-05T01:36:24.9125387Z --- PASS: TestMatchGlob/src/*.go_src/sub/main.go (0.00s) +2026-07-05T01:36:24.9126015Z --- PASS: TestMatchGlob/src/**_src/main.go (0.00s) +2026-07-05T01:36:24.9126693Z --- PASS: TestMatchGlob/src/**_src/sub/main.go (0.00s) +2026-07-05T01:36:24.9127384Z --- PASS: TestMatchGlob/src/**/*.go_src/main.go (0.00s) +2026-07-05T01:36:24.9128128Z --- PASS: TestMatchGlob/src/**/*.go_src/sub/main.go (0.00s) +2026-07-05T01:36:24.9128927Z --- PASS: TestMatchGlob/src/**/*.go_src/sub/deep/main.go (0.00s) +2026-07-05T01:36:24.9129689Z --- PASS: TestMatchGlob/**/*.go_main.go (0.00s) +2026-07-05T01:36:24.9130517Z --- PASS: TestMatchGlob/**/*.go_src/main.go (0.00s) +2026-07-05T01:36:24.9131193Z --- PASS: TestMatchGlob/**_anything/at/all.txt (0.00s) +2026-07-05T01:36:24.9131830Z --- PASS: TestMatchGlob/?.go_a.go (0.00s) +2026-07-05T01:36:24.9132417Z --- PASS: TestMatchGlob/?.go_ab.go (0.00s) +2026-07-05T01:36:24.9133080Z --- PASS: TestMatchGlob/src/**_other/main.go (0.00s) +2026-07-05T01:36:24.9133965Z --- PASS: TestMatchGlob/*.yaml_config.json (0.00s) +2026-07-05T01:36:24.9134478Z === RUN TestIsTriggered +2026-07-05T01:36:24.9134979Z === RUN TestIsTriggered/no_triggers_means_always_triggered +2026-07-05T01:36:24.9135530Z === RUN TestIsTriggered/matching_trigger +2026-07-05T01:36:24.9136036Z === RUN TestIsTriggered/no_matching_trigger +2026-07-05T01:36:24.9136550Z === RUN TestIsTriggered/multiple_triggers,_one_matches +2026-07-05T01:36:24.9137148Z === RUN TestIsTriggered/multiple_files,_one_matches +2026-07-05T01:36:24.9137883Z === RUN TestIsTriggered/docs-only_change_excluded_by_negation_does_not_trigger +2026-07-05T01:36:24.9138696Z === RUN TestIsTriggered/source_change_triggers_despite_negation +2026-07-05T01:36:24.9139522Z === RUN TestIsTriggered/mixed_changeset_triggers_when_a_non-excluded_file_is_present +2026-07-05T01:36:24.9140637Z === RUN TestIsTriggered/negation_excludes_a_file_that_matches_a_positive_pattern +2026-07-05T01:36:24.9141541Z === RUN TestIsTriggered/negation-only_list_triggers_any_non-excluded_file +2026-07-05T01:36:24.9142352Z === RUN TestIsTriggered/negation-only_list_excludes_a_matching_file +2026-07-05T01:36:24.9143266Z === RUN TestIsTriggered/ordering_does_not_matter:_negation_before_positive_still_excludes +2026-07-05T01:36:24.9144244Z === RUN TestIsTriggered/positive-only_behaviour_is_unchanged_by_negation_support +2026-07-05T01:36:24.9144950Z --- PASS: TestIsTriggered (0.00s) +2026-07-05T01:36:24.9145664Z --- PASS: TestIsTriggered/no_triggers_means_always_triggered (0.00s) +2026-07-05T01:36:24.9146448Z --- PASS: TestIsTriggered/matching_trigger (0.00s) +2026-07-05T01:36:24.9147128Z --- PASS: TestIsTriggered/no_matching_trigger (0.00s) +2026-07-05T01:36:24.9147910Z --- PASS: TestIsTriggered/multiple_triggers,_one_matches (0.00s) +2026-07-05T01:36:24.9148735Z --- PASS: TestIsTriggered/multiple_files,_one_matches (0.00s) +2026-07-05T01:36:24.9149933Z --- PASS: TestIsTriggered/docs-only_change_excluded_by_negation_does_not_trigger (0.00s) +2026-07-05T01:36:24.9151161Z --- PASS: TestIsTriggered/source_change_triggers_despite_negation (0.00s) +2026-07-05T01:36:24.9152315Z --- PASS: TestIsTriggered/mixed_changeset_triggers_when_a_non-excluded_file_is_present (0.00s) +2026-07-05T01:36:24.9153569Z --- PASS: TestIsTriggered/negation_excludes_a_file_that_matches_a_positive_pattern (0.00s) +2026-07-05T01:36:24.9154747Z --- PASS: TestIsTriggered/negation-only_list_triggers_any_non-excluded_file (0.00s) +2026-07-05T01:36:24.9155824Z --- PASS: TestIsTriggered/negation-only_list_excludes_a_matching_file (0.00s) +2026-07-05T01:36:24.9157033Z --- PASS: TestIsTriggered/ordering_does_not_matter:_negation_before_positive_still_excludes (0.00s) +2026-07-05T01:36:24.9158367Z --- PASS: TestIsTriggered/positive-only_behaviour_is_unchanged_by_negation_support (0.00s) +2026-07-05T01:36:24.9159145Z PASS +2026-07-05T01:36:24.9159467Z coverage: 5.7% of statements +2026-07-05T01:36:24.9160307Z ok github.com/stablekernel/cascade/internal/changes 1.044s coverage: 5.7% of statements +2026-07-05T01:36:24.9161083Z === RUN TestAppTokenManifestE2E +2026-07-05T01:36:24.9161567Z --- PASS: TestAppTokenManifestE2E (0.00s) +2026-07-05T01:36:24.9162063Z === RUN TestHasReleaseTokenApp +2026-07-05T01:36:24.9162567Z === RUN TestHasReleaseTokenApp/false_when_unset +2026-07-05T01:36:24.9163134Z === RUN TestHasReleaseTokenApp/true_when_set +2026-07-05T01:36:24.9163661Z --- PASS: TestHasReleaseTokenApp (0.00s) +2026-07-05T01:36:24.9164360Z --- PASS: TestHasReleaseTokenApp/false_when_unset (0.00s) +2026-07-05T01:36:24.9165110Z --- PASS: TestHasReleaseTokenApp/true_when_set (0.00s) +2026-07-05T01:36:24.9165653Z === RUN TestHasStateTokenApp +2026-07-05T01:36:24.9166120Z === RUN TestHasStateTokenApp/false_when_unset +2026-07-05T01:36:24.9166690Z === RUN TestHasStateTokenApp/true_when_set +2026-07-05T01:36:24.9167206Z --- PASS: TestHasStateTokenApp (0.00s) +2026-07-05T01:36:24.9168154Z --- PASS: TestHasStateTokenApp/false_when_unset (0.00s) +2026-07-05T01:36:24.9169150Z --- PASS: TestHasStateTokenApp/true_when_set (0.00s) +2026-07-05T01:36:24.9169717Z === RUN TestReleaseTokenAppAccessors +2026-07-05T01:36:24.9170424Z === RUN TestReleaseTokenAppAccessors/nil_source_returns_empty +2026-07-05T01:36:24.9171158Z === RUN TestReleaseTokenAppAccessors/bare_names_wrap_as_secrets +2026-07-05T01:36:24.9171926Z === RUN TestReleaseTokenAppAccessors/full_expression_passes_through +2026-07-05T01:36:24.9172620Z --- PASS: TestReleaseTokenAppAccessors (0.00s) +2026-07-05T01:36:24.9173460Z --- PASS: TestReleaseTokenAppAccessors/nil_source_returns_empty (0.00s) +2026-07-05T01:36:24.9174470Z --- PASS: TestReleaseTokenAppAccessors/bare_names_wrap_as_secrets (0.00s) +2026-07-05T01:36:24.9175527Z --- PASS: TestReleaseTokenAppAccessors/full_expression_passes_through (0.00s) +2026-07-05T01:36:24.9176246Z === RUN TestStateTokenAppAccessors +2026-07-05T01:36:24.9176838Z === RUN TestStateTokenAppAccessors/nil_source_returns_empty +2026-07-05T01:36:24.9177538Z === RUN TestStateTokenAppAccessors/bare_names_wrap_as_secrets +2026-07-05T01:36:24.9178158Z --- PASS: TestStateTokenAppAccessors (0.00s) +2026-07-05T01:36:24.9178963Z --- PASS: TestStateTokenAppAccessors/nil_source_returns_empty (0.00s) +2026-07-05T01:36:24.9179921Z --- PASS: TestStateTokenAppAccessors/bare_names_wrap_as_secrets (0.00s) +2026-07-05T01:36:24.9180722Z === RUN TestValidateAppTokenSource +2026-07-05T01:36:24.9181269Z === RUN TestValidateAppTokenSource/nil_is_accepted +2026-07-05T01:36:24.9181929Z === RUN TestValidateAppTokenSource/valid_bare_names_accepted +2026-07-05T01:36:24.9182679Z === RUN TestValidateAppTokenSource/valid_secret_expressions_accepted +2026-07-05T01:36:24.9183482Z === RUN TestValidateAppTokenSource/missing_private_key_rejected +2026-07-05T01:36:24.9184182Z === RUN TestValidateAppTokenSource/missing_app_id_rejected +2026-07-05T01:36:24.9185161Z === RUN TestValidateAppTokenSource/raw_key_material_with_newline_rejected +2026-07-05T01:36:24.9185982Z === RUN TestValidateAppTokenSource/PRIVATE_KEY_marker_rejected +2026-07-05T01:36:24.9186710Z === RUN TestValidateAppTokenSource/malformed_bare_name_rejected +2026-07-05T01:36:24.9187353Z --- PASS: TestValidateAppTokenSource (0.00s) +2026-07-05T01:36:24.9188075Z --- PASS: TestValidateAppTokenSource/nil_is_accepted (0.00s) +2026-07-05T01:36:24.9188962Z --- PASS: TestValidateAppTokenSource/valid_bare_names_accepted (0.00s) +2026-07-05T01:36:24.9190120Z --- PASS: TestValidateAppTokenSource/valid_secret_expressions_accepted (0.00s) +2026-07-05T01:36:24.9191158Z --- PASS: TestValidateAppTokenSource/missing_private_key_rejected (0.00s) +2026-07-05T01:36:24.9192119Z --- PASS: TestValidateAppTokenSource/missing_app_id_rejected (0.00s) +2026-07-05T01:36:24.9193153Z --- PASS: TestValidateAppTokenSource/raw_key_material_with_newline_rejected (0.00s) +2026-07-05T01:36:24.9194212Z --- PASS: TestValidateAppTokenSource/PRIVATE_KEY_marker_rejected (0.00s) +2026-07-05T01:36:24.9195208Z --- PASS: TestValidateAppTokenSource/malformed_bare_name_rejected (0.00s) +2026-07-05T01:36:24.9195872Z === RUN TestParseDriftCheck +2026-07-05T01:36:24.9196327Z --- PASS: TestParseDriftCheck (0.00s) +2026-07-05T01:36:24.9196905Z === RUN TestDriftCheckValidatesAtCurrentSchemaVersion +2026-07-05T01:36:24.9197637Z --- PASS: TestDriftCheckValidatesAtCurrentSchemaVersion (0.00s) +2026-07-05T01:36:24.9198311Z === RUN TestEnvState_DivergenceFields_RoundTrip +2026-07-05T01:36:24.9198892Z === RUN TestEnvState_DivergenceFields_RoundTrip/yaml +2026-07-05T01:36:24.9199480Z === RUN TestEnvState_DivergenceFields_RoundTrip/json +2026-07-05T01:36:24.9200233Z --- PASS: TestEnvState_DivergenceFields_RoundTrip (0.00s) +2026-07-05T01:36:24.9200989Z --- PASS: TestEnvState_DivergenceFields_RoundTrip/yaml (0.00s) +2026-07-05T01:36:24.9201808Z --- PASS: TestEnvState_DivergenceFields_RoundTrip/json (0.00s) +2026-07-05T01:36:24.9202460Z === RUN TestEnvState_AbsentFieldsMeanTrackingTrunk +2026-07-05T01:36:24.9203315Z --- PASS: TestEnvState_AbsentFieldsMeanTrackingTrunk (0.00s) +2026-07-05T01:36:24.9203900Z === RUN TestEnvState_IsDiverged +2026-07-05T01:36:24.9204350Z === RUN TestEnvState_IsDiverged/empty +2026-07-05T01:36:24.9204835Z === RUN TestEnvState_IsDiverged/ref_only +2026-07-05T01:36:24.9205341Z === RUN TestEnvState_IsDiverged/patches_only +2026-07-05T01:36:24.9205865Z === RUN TestEnvState_IsDiverged/both +2026-07-05T01:36:24.9206440Z === RUN TestEnvState_IsDiverged/base_sha_only_does_not_diverge +2026-07-05T01:36:24.9207042Z --- PASS: TestEnvState_IsDiverged (0.00s) +2026-07-05T01:36:24.9207648Z --- PASS: TestEnvState_IsDiverged/empty (0.00s) +2026-07-05T01:36:24.9208304Z --- PASS: TestEnvState_IsDiverged/ref_only (0.00s) +2026-07-05T01:36:24.9208988Z --- PASS: TestEnvState_IsDiverged/patches_only (0.00s) +2026-07-05T01:36:24.9209652Z --- PASS: TestEnvState_IsDiverged/both (0.00s) +2026-07-05T01:36:24.9210629Z --- PASS: TestEnvState_IsDiverged/base_sha_only_does_not_diverge (0.00s) +2026-07-05T01:36:24.9211463Z === RUN TestPushPreviousSnapshot_PrependsPriorOnTransition +2026-07-05T01:36:24.9212229Z --- PASS: TestPushPreviousSnapshot_PrependsPriorOnTransition (0.00s) +2026-07-05T01:36:24.9212945Z === RUN TestPushPreviousSnapshot_BoundedToMax +2026-07-05T01:36:24.9213539Z --- PASS: TestPushPreviousSnapshot_BoundedToMax (0.00s) +2026-07-05T01:36:24.9214153Z === RUN TestPushPreviousSnapshot_SkipsNoOpSameSHA +2026-07-05T01:36:24.9214804Z --- PASS: TestPushPreviousSnapshot_SkipsNoOpSameSHA (0.00s) +2026-07-05T01:36:24.9215462Z === RUN TestPushPreviousSnapshot_SkipsWhenNoPriorSHA +2026-07-05T01:36:24.9216223Z --- PASS: TestPushPreviousSnapshot_SkipsWhenNoPriorSHA (0.00s) +2026-07-05T01:36:24.9247365Z === RUN TestPreviousRing_YAMLRoundTrip +2026-07-05T01:36:24.9247866Z --- PASS: TestPreviousRing_YAMLRoundTrip (0.00s) +2026-07-05T01:36:24.9248323Z === RUN TestParseDeployments +2026-07-05T01:36:24.9248722Z --- PASS: TestParseDeployments (0.00s) +2026-07-05T01:36:24.9249326Z === RUN TestDeploymentsValidatesAtCurrentSchemaVersion +2026-07-05T01:36:24.9249787Z --- PASS: TestDeploymentsValidatesAtCurrentSchemaVersion (0.00s) +2026-07-05T01:36:24.9250415Z === RUN TestParse +2026-07-05T01:36:24.9250654Z --- PASS: TestParse (0.00s) +2026-07-05T01:36:24.9250918Z === RUN TestParse_WithInputs +2026-07-05T01:36:24.9251184Z --- PASS: TestParse_WithInputs (0.00s) +2026-07-05T01:36:24.9251469Z === RUN TestParse_FileNotFound +2026-07-05T01:36:24.9251743Z --- PASS: TestParse_FileNotFound (0.00s) +2026-07-05T01:36:24.9252028Z === RUN TestParse_InvalidYAML +2026-07-05T01:36:24.9252298Z --- PASS: TestParse_InvalidYAML (0.00s) +2026-07-05T01:36:24.9252564Z === RUN TestValidate +2026-07-05T01:36:24.9252798Z === RUN TestValidate/valid_config +2026-07-05T01:36:24.9253191Z === RUN TestValidate/empty_environments_(valid_-_no-environment_setup) +2026-07-05T01:36:24.9253639Z === RUN TestValidate/missing_build_name +2026-07-05T01:36:24.9253946Z === RUN TestValidate/missing_build_workflow +2026-07-05T01:36:24.9254259Z === RUN TestValidate/duplicate_build_names +2026-07-05T01:36:24.9254567Z === RUN TestValidate/missing_deploy_name +2026-07-05T01:36:24.9254867Z === RUN TestValidate/missing_deploy_workflow +2026-07-05T01:36:24.9255172Z === RUN TestValidate/duplicate_deploy_names +2026-07-05T01:36:24.9255525Z === RUN TestValidate/valid_env_inputs_matching_environments +2026-07-05T01:36:24.9255933Z === RUN TestValidate/invalid_env_inputs_key_not_in_environments +2026-07-05T01:36:24.9256281Z --- PASS: TestValidate (0.00s) +2026-07-05T01:36:24.9256606Z --- PASS: TestValidate/valid_config (0.00s) +2026-07-05T01:36:24.9257116Z --- PASS: TestValidate/empty_environments_(valid_-_no-environment_setup) (0.00s) +2026-07-05T01:36:24.9257604Z --- PASS: TestValidate/missing_build_name (0.00s) +2026-07-05T01:36:24.9257997Z --- PASS: TestValidate/missing_build_workflow (0.00s) +2026-07-05T01:36:24.9258436Z --- PASS: TestValidate/duplicate_build_names (0.00s) +2026-07-05T01:36:24.9258830Z --- PASS: TestValidate/missing_deploy_name (0.00s) +2026-07-05T01:36:24.9259379Z --- PASS: TestValidate/missing_deploy_workflow (0.00s) +2026-07-05T01:36:24.9259786Z --- PASS: TestValidate/duplicate_deploy_names (0.00s) +2026-07-05T01:36:24.9261891Z --- PASS: TestValidate/valid_env_inputs_matching_environments (0.00s) +2026-07-05T01:36:24.9262699Z --- PASS: TestValidate/invalid_env_inputs_key_not_in_environments (0.00s) +2026-07-05T01:36:24.9263306Z === RUN TestGetBuildNames +2026-07-05T01:36:24.9263722Z --- PASS: TestGetBuildNames (0.00s) +2026-07-05T01:36:24.9264133Z === RUN TestGetDeployNames +2026-07-05T01:36:24.9264535Z --- PASS: TestGetDeployNames (0.00s) +2026-07-05T01:36:24.9264948Z === RUN TestParse_NewSchemaFields +2026-07-05T01:36:24.9265371Z --- PASS: TestParse_NewSchemaFields (0.00s) +2026-07-05T01:36:24.9265863Z === RUN TestParse_ReleaseAndChangelogConfig +2026-07-05T01:36:24.9266399Z --- PASS: TestParse_ReleaseAndChangelogConfig (0.00s) +2026-07-05T01:36:24.9266913Z === RUN TestParse_ReleaseDisabled +2026-07-05T01:36:24.9267366Z --- PASS: TestParse_ReleaseDisabled (0.00s) +2026-07-05T01:36:24.9267821Z === RUN TestValidate_NewFields +2026-07-05T01:36:24.9268303Z === RUN TestValidate_NewFields/valid_run_policy_values +2026-07-05T01:36:24.9269163Z === RUN TestValidate_NewFields/invalid_run_policy +2026-07-05T01:36:24.9269738Z === RUN TestValidate_NewFields/invalid_on_failure +2026-07-05T01:36:24.9270449Z === RUN TestValidate_NewFields/retries_out_of_range +2026-07-05T01:36:24.9271038Z === RUN TestValidate_NewFields/invalid_depends_on_reference +2026-07-05T01:36:24.9271820Z === RUN TestValidate_NewFields/build_env_inputs_key_not_in_environments +2026-07-05T01:36:24.9272481Z === RUN TestValidate_NewFields/circular_dependency +2026-07-05T01:36:24.9272967Z --- PASS: TestValidate_NewFields (0.00s) +2026-07-05T01:36:24.9273595Z --- PASS: TestValidate_NewFields/valid_run_policy_values (0.00s) +2026-07-05T01:36:24.9274334Z --- PASS: TestValidate_NewFields/invalid_run_policy (0.00s) +2026-07-05T01:36:24.9275273Z --- PASS: TestValidate_NewFields/invalid_on_failure (0.00s) +2026-07-05T01:36:24.9276032Z --- PASS: TestValidate_NewFields/retries_out_of_range (0.00s) +2026-07-05T01:36:24.9276905Z --- PASS: TestValidate_NewFields/invalid_depends_on_reference (0.00s) +2026-07-05T01:36:24.9277909Z --- PASS: TestValidate_NewFields/build_env_inputs_key_not_in_environments (0.00s) +2026-07-05T01:36:24.9278757Z --- PASS: TestValidate_NewFields/circular_dependency (0.00s) +2026-07-05T01:36:24.9279287Z === RUN TestHasExternalRelease +2026-07-05T01:36:24.9279726Z === RUN TestHasExternalRelease/nil_release +2026-07-05T01:36:24.9280321Z === RUN TestHasExternalRelease/no_tag +2026-07-05T01:36:24.9280762Z === RUN TestHasExternalRelease/with_tag +2026-07-05T01:36:24.9281223Z --- PASS: TestHasExternalRelease (0.00s) +2026-07-05T01:36:24.9281818Z --- PASS: TestHasExternalRelease/nil_release (0.00s) +2026-07-05T01:36:24.9282434Z --- PASS: TestHasExternalRelease/no_tag (0.00s) +2026-07-05T01:36:24.9283070Z --- PASS: TestHasExternalRelease/with_tag (0.00s) +2026-07-05T01:36:24.9283577Z === RUN TestHasCustomChangelog +2026-07-05T01:36:24.9284015Z === RUN TestHasCustomChangelog/nil_changelog +2026-07-05T01:36:24.9284516Z === RUN TestHasCustomChangelog/empty_workflow +2026-07-05T01:36:24.9285008Z === RUN TestHasCustomChangelog/with_workflow +2026-07-05T01:36:24.9285465Z --- PASS: TestHasCustomChangelog (0.00s) +2026-07-05T01:36:24.9286067Z --- PASS: TestHasCustomChangelog/nil_changelog (0.00s) +2026-07-05T01:36:24.9286747Z --- PASS: TestHasCustomChangelog/empty_workflow (0.00s) +2026-07-05T01:36:24.9287427Z --- PASS: TestHasCustomChangelog/with_workflow (0.00s) +2026-07-05T01:36:24.9287934Z === RUN TestChangelogEnabled +2026-07-05T01:36:24.9288442Z === RUN TestChangelogEnabled/nil_changelog_-_enabled_by_default +2026-07-05T01:36:24.9289051Z === RUN TestChangelogEnabled/disabled_false_-_enabled +2026-07-05T01:36:24.9289698Z === RUN TestChangelogEnabled/disabled_true_-_explicitly_disabled +2026-07-05T01:36:24.9290720Z === RUN TestChangelogEnabled/with_workflow_-_custom_enabled +2026-07-05T01:36:24.9291926Z --- PASS: TestChangelogEnabled (0.00s) +2026-07-05T01:36:24.9292788Z --- PASS: TestChangelogEnabled/nil_changelog_-_enabled_by_default (0.00s) +2026-07-05T01:36:24.9293613Z --- PASS: TestChangelogEnabled/disabled_false_-_enabled (0.00s) +2026-07-05T01:36:24.9294479Z --- PASS: TestChangelogEnabled/disabled_true_-_explicitly_disabled (0.00s) +2026-07-05T01:36:24.9295381Z --- PASS: TestChangelogEnabled/with_workflow_-_custom_enabled (0.00s) +2026-07-05T01:36:24.9295977Z === RUN TestReleaseEnabled +2026-07-05T01:36:24.9296461Z === RUN TestReleaseEnabled/nil_release_-_enabled_by_default +2026-07-05T01:36:24.9297176Z === RUN TestReleaseEnabled/disabled_false_-_enabled +2026-07-05T01:36:24.9297800Z === RUN TestReleaseEnabled/disabled_true_-_explicitly_disabled +2026-07-05T01:36:24.9298484Z === RUN TestReleaseEnabled/with_tag_-_external_release_enabled +2026-07-05T01:36:24.9299127Z --- PASS: TestReleaseEnabled (0.00s) +2026-07-05T01:36:24.9299873Z --- PASS: TestReleaseEnabled/nil_release_-_enabled_by_default (0.00s) +2026-07-05T01:36:24.9300999Z --- PASS: TestReleaseEnabled/disabled_false_-_enabled (0.00s) +2026-07-05T01:36:24.9301893Z --- PASS: TestReleaseEnabled/disabled_true_-_explicitly_disabled (0.00s) +2026-07-05T01:36:24.9302812Z --- PASS: TestReleaseEnabled/with_tag_-_external_release_enabled (0.00s) +2026-07-05T01:36:24.9303446Z === RUN TestValidate_ReleaseTag +2026-07-05T01:36:24.9303962Z === RUN TestValidate_ReleaseTag/valid_release.tag_reference +2026-07-05T01:36:24.9304675Z === RUN TestValidate_ReleaseTag/invalid_release.tag_-_unknown_callback +2026-07-05T01:36:24.9305428Z === RUN TestValidate_ReleaseTag/invalid_release.tag_-_bad_format +2026-07-05T01:36:24.9306095Z === RUN TestValidate_ReleaseTag/release.tag_with_deploy_callback +2026-07-05T01:36:24.9306801Z === RUN TestValidate_ReleaseTag/deploy_depends_on_references_valid_build +2026-07-05T01:36:24.9307835Z === RUN TestValidate_ReleaseTag/deploy_depends_on_references_unknown_build +2026-07-05T01:36:24.9308557Z --- PASS: TestValidate_ReleaseTag (0.00s) +2026-07-05T01:36:24.9309318Z --- PASS: TestValidate_ReleaseTag/valid_release.tag_reference (0.00s) +2026-07-05T01:36:24.9310473Z --- PASS: TestValidate_ReleaseTag/invalid_release.tag_-_unknown_callback (0.00s) +2026-07-05T01:36:24.9311506Z --- PASS: TestValidate_ReleaseTag/invalid_release.tag_-_bad_format (0.00s) +2026-07-05T01:36:24.9312454Z --- PASS: TestValidate_ReleaseTag/release.tag_with_deploy_callback (0.00s) +2026-07-05T01:36:24.9313498Z --- PASS: TestValidate_ReleaseTag/deploy_depends_on_references_valid_build (0.00s) +2026-07-05T01:36:24.9314353Z --- PASS: TestValidate_ReleaseTag/deploy_depends_on_references_unknown_build (0.00s) +2026-07-05T01:36:24.9315148Z === RUN TestValidate_JobIDSafeNames +2026-07-05T01:36:24.9315759Z === RUN TestValidate_JobIDSafeNames/build_name_with_dot_rejected +2026-07-05T01:36:24.9316548Z === RUN TestValidate_JobIDSafeNames/build_name_with_space_rejected +2026-07-05T01:36:24.9317298Z === RUN TestValidate_JobIDSafeNames/deploy_name_with_slash_rejected +2026-07-05T01:36:24.9318089Z === RUN TestValidate_JobIDSafeNames/external_deploy_name_with_dot_rejected +2026-07-05T01:36:24.9318912Z === RUN TestValidate_JobIDSafeNames/environment_name_with_dot_rejected +2026-07-05T01:36:24.9319853Z === RUN TestValidate_JobIDSafeNames/valid_names:_hyphen,_uppercase,_leading_digit,_underscore +2026-07-05T01:36:24.9321153Z --- PASS: TestValidate_JobIDSafeNames (0.00s) +2026-07-05T01:36:24.9322128Z --- PASS: TestValidate_JobIDSafeNames/build_name_with_dot_rejected (0.00s) +2026-07-05T01:36:24.9323103Z --- PASS: TestValidate_JobIDSafeNames/build_name_with_space_rejected (0.00s) +2026-07-05T01:36:24.9323895Z --- PASS: TestValidate_JobIDSafeNames/deploy_name_with_slash_rejected (0.00s) +2026-07-05T01:36:24.9324636Z --- PASS: TestValidate_JobIDSafeNames/external_deploy_name_with_dot_rejected (0.00s) +2026-07-05T01:36:24.9325391Z --- PASS: TestValidate_JobIDSafeNames/environment_name_with_dot_rejected (0.00s) +2026-07-05T01:36:24.9326421Z --- PASS: TestValidate_JobIDSafeNames/valid_names:_hyphen,_uppercase,_leading_digit,_underscore (0.00s) +2026-07-05T01:36:24.9327033Z === RUN TestExternalDeployOnUpdate_Parse +2026-07-05T01:36:24.9327377Z --- PASS: TestExternalDeployOnUpdate_Parse (0.00s) +2026-07-05T01:36:24.9327819Z === RUN TestExternalDeployOnUpdate_Validation +2026-07-05T01:36:24.9328292Z === RUN TestExternalDeployOnUpdate_Validation/absent_on_update_is_record-only_and_valid +2026-07-05T01:36:24.9329031Z === RUN TestExternalDeployOnUpdate_Validation/on_update.deploy_without_workflow_is_rejected +2026-07-05T01:36:24.9329750Z === RUN TestExternalDeployOnUpdate_Validation/on_update.deploy_with_workflow_is_valid +2026-07-05T01:36:24.9330449Z --- PASS: TestExternalDeployOnUpdate_Validation (0.00s) +2026-07-05T01:36:24.9331171Z --- PASS: TestExternalDeployOnUpdate_Validation/absent_on_update_is_record-only_and_valid (0.00s) +2026-07-05T01:36:24.9332087Z --- PASS: TestExternalDeployOnUpdate_Validation/on_update.deploy_without_workflow_is_rejected (0.00s) +2026-07-05T01:36:24.9332978Z --- PASS: TestExternalDeployOnUpdate_Validation/on_update.deploy_with_workflow_is_valid (0.00s) +2026-07-05T01:36:24.9333585Z === RUN TestFullSurfaceManifestE2E +2026-07-05T01:36:24.9334074Z --- PASS: TestFullSurfaceManifestE2E (0.07s) +2026-07-05T01:36:24.9334599Z === RUN TestParseSecretsUnion +2026-07-05T01:36:24.9335079Z === RUN TestParseSecretsUnion/inherit_scalar +2026-07-05T01:36:24.9335565Z === RUN TestParseSecretsUnion/explicit_map +2026-07-05T01:36:24.9335922Z === RUN TestParseSecretsUnion/inherit_mapping +2026-07-05T01:36:24.9336519Z === RUN TestParseSecretsUnion/inherit_false_mapping_treated_as_unset +2026-07-05T01:36:24.9337177Z === RUN TestParseSecretsUnion/mixed_inherit_and_secret_keys_rejected +2026-07-05T01:36:24.9337997Z === RUN TestParseSecretsUnion/invalid_scalar_rejected +2026-07-05T01:36:24.9338911Z --- PASS: TestParseSecretsUnion (0.00s) +2026-07-05T01:36:24.9339601Z --- PASS: TestParseSecretsUnion/inherit_scalar (0.00s) +2026-07-05T01:36:24.9340363Z --- PASS: TestParseSecretsUnion/explicit_map (0.00s) +2026-07-05T01:36:24.9340931Z --- PASS: TestParseSecretsUnion/inherit_mapping (0.00s) +2026-07-05T01:36:24.9341875Z --- PASS: TestParseSecretsUnion/inherit_false_mapping_treated_as_unset (0.00s) +2026-07-05T01:36:24.9342921Z --- PASS: TestParseSecretsUnion/mixed_inherit_and_secret_keys_rejected (0.00s) +2026-07-05T01:36:24.9343836Z --- PASS: TestParseSecretsUnion/invalid_scalar_rejected (0.00s) +2026-07-05T01:36:24.9344431Z === RUN TestParseRunsOnUnion +2026-07-05T01:36:24.9344865Z --- PASS: TestParseRunsOnUnion (0.00s) +2026-07-05T01:36:24.9345333Z === RUN TestParseMatrixAndRollout +2026-07-05T01:36:24.9345807Z --- PASS: TestParseMatrixAndRollout (0.00s) +2026-07-05T01:36:24.9346315Z === RUN TestParseConfigLevelFields +2026-07-05T01:36:24.9346802Z --- PASS: TestParseConfigLevelFields (0.00s) +2026-07-05T01:36:24.9347314Z === RUN TestParsePerCallbackExtras +2026-07-05T01:36:24.9347810Z --- PASS: TestParsePerCallbackExtras (0.00s) +2026-07-05T01:36:24.9348295Z === RUN TestParseInlineRunCallback +2026-07-05T01:36:24.9348784Z --- PASS: TestParseInlineRunCallback (0.00s) +2026-07-05T01:36:24.9349348Z === RUN TestParseDeployStateVersionAndPreviousRing +2026-07-05T01:36:24.9350383Z --- PASS: TestParseDeployStateVersionAndPreviousRing (0.00s) +2026-07-05T01:36:24.9350841Z === RUN TestValidateWorkflowRunXOR +2026-07-05T01:36:24.9351286Z === RUN TestValidateWorkflowRunXOR/run_set,_no_workflow +2026-07-05T01:36:24.9351697Z === RUN TestValidateWorkflowRunXOR/workflow_and_run_both_set +2026-07-05T01:36:24.9352226Z === RUN TestValidateWorkflowRunXOR/shell_set,_no_workflow,_no_run +2026-07-05T01:36:24.9352708Z === RUN TestValidateWorkflowRunXOR/neither_run_nor_workflow +2026-07-05T01:36:24.9353191Z === RUN TestValidateWorkflowRunXOR/workflow_only_is_clean +2026-07-05T01:36:24.9353649Z --- PASS: TestValidateWorkflowRunXOR (0.00s) +2026-07-05T01:36:24.9354309Z --- PASS: TestValidateWorkflowRunXOR/run_set,_no_workflow (0.00s) +2026-07-05T01:36:24.9354972Z --- PASS: TestValidateWorkflowRunXOR/workflow_and_run_both_set (0.00s) +2026-07-05T01:36:24.9355680Z --- PASS: TestValidateWorkflowRunXOR/shell_set,_no_workflow,_no_run (0.00s) +2026-07-05T01:36:24.9356361Z --- PASS: TestValidateWorkflowRunXOR/neither_run_nor_workflow (0.00s) +2026-07-05T01:36:24.9357019Z --- PASS: TestValidateWorkflowRunXOR/workflow_only_is_clean (0.00s) +2026-07-05T01:36:24.9357463Z === RUN TestValidateRunsOnRejectedOnReusableWorkflow +2026-07-05T01:36:24.9358151Z --- PASS: TestValidateRunsOnRejectedOnReusableWorkflow (0.00s) +2026-07-05T01:36:24.9358835Z === RUN TestValidateRunRejected +2026-07-05T01:36:24.9359338Z === RUN TestValidateRunRejected/run-only_rejected +2026-07-05T01:36:24.9359958Z === RUN TestValidateRunRejected/shell-only_rejected +2026-07-05T01:36:24.9360738Z === RUN TestValidateRunRejected/workflow-only_clean +2026-07-05T01:36:24.9361302Z --- PASS: TestValidateRunRejected (0.00s) +2026-07-05T01:36:24.9362011Z --- PASS: TestValidateRunRejected/run-only_rejected (0.00s) +2026-07-05T01:36:24.9362830Z --- PASS: TestValidateRunRejected/shell-only_rejected (0.00s) +2026-07-05T01:36:24.9363670Z --- PASS: TestValidateRunRejected/workflow-only_clean (0.00s) +2026-07-05T01:36:24.9364349Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected +2026-07-05T01:36:24.9365068Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected/build_callback +2026-07-05T01:36:24.9365881Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected/deploy_callback +2026-07-05T01:36:24.9366698Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected/validate_callback +2026-07-05T01:36:24.9367493Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected (0.00s) +2026-07-05T01:36:24.9368467Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected/build_callback (0.00s) +2026-07-05T01:36:24.9369749Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected/deploy_callback (0.00s) +2026-07-05T01:36:24.9371014Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected/validate_callback (0.00s) +2026-07-05T01:36:24.9371813Z === RUN TestValidate_CallbackWithoutTimeout_Clean +2026-07-05T01:36:24.9372639Z === RUN TestValidate_CallbackWithoutTimeout_Clean/callback_without_timeout_minutes_clean +2026-07-05T01:36:24.9373735Z === RUN TestValidate_CallbackWithoutTimeout_Clean/config.job_timeout_minutes_not_rejected +2026-07-05T01:36:24.9374609Z --- PASS: TestValidate_CallbackWithoutTimeout_Clean (0.00s) +2026-07-05T01:36:24.9375696Z --- PASS: TestValidate_CallbackWithoutTimeout_Clean/callback_without_timeout_minutes_clean (0.00s) +2026-07-05T01:36:24.9377104Z --- PASS: TestValidate_CallbackWithoutTimeout_Clean/config.job_timeout_minutes_not_rejected (0.00s) +2026-07-05T01:36:24.9378076Z === RUN TestValidateConcurrencyRejectedOnReusableWorkflow +2026-07-05T01:36:24.9378869Z --- PASS: TestValidateConcurrencyRejectedOnReusableWorkflow (0.00s) +2026-07-05T01:36:24.9379551Z === RUN TestValidatePermissions +2026-07-05T01:36:24.9380233Z === RUN TestValidatePermissions/unknown_scope_rejected +2026-07-05T01:36:24.9380848Z === RUN TestValidatePermissions/bad_value_rejected +2026-07-05T01:36:24.9381413Z --- PASS: TestValidatePermissions (0.00s) +2026-07-05T01:36:24.9382165Z --- PASS: TestValidatePermissions/unknown_scope_rejected (0.00s) +2026-07-05T01:36:24.9383002Z --- PASS: TestValidatePermissions/bad_value_rejected (0.00s) +2026-07-05T01:36:24.9383611Z === RUN TestValidateRolloutEnvGating +2026-07-05T01:36:24.9384264Z === RUN TestValidateRolloutEnvGating/canary_requires_environments +2026-07-05T01:36:24.9384988Z === RUN TestValidateRolloutEnvGating/bad_type_rejected +2026-07-05T01:36:24.9385603Z --- PASS: TestValidateRolloutEnvGating (0.00s) +2026-07-05T01:36:24.9386470Z --- PASS: TestValidateRolloutEnvGating/canary_requires_environments (0.00s) +2026-07-05T01:36:24.9387430Z --- PASS: TestValidateRolloutEnvGating/bad_type_rejected (0.00s) +2026-07-05T01:36:24.9388277Z === RUN TestValidateDeployTargetMode +2026-07-05T01:36:24.9388808Z --- PASS: TestValidateDeployTargetMode (0.00s) +2026-07-05T01:36:24.9389340Z === RUN TestValidateConfigLevelRules +2026-07-05T01:36:24.9389944Z === RUN TestValidateConfigLevelRules/pin_mode_rejected +2026-07-05T01:36:24.9390798Z === RUN TestValidateConfigLevelRules/cli_version_sha_non-hex_rejected +2026-07-05T01:36:24.9391655Z === RUN TestValidateConfigLevelRules/cli_version_sha_short_hex_rejected +2026-07-05T01:36:24.9392504Z === RUN TestValidateConfigLevelRules/cli_version_sha_valid_40-hex_accepted +2026-07-05T01:36:24.9393405Z === RUN TestValidateConfigLevelRules/reserved_dispatch_input_shadow_rejected +2026-07-05T01:36:24.9394260Z === RUN TestValidateConfigLevelRules/choice_input_needs_options +2026-07-05T01:36:24.9395077Z === RUN TestValidateConfigLevelRules/environment_config_unknown_env_rejected +2026-07-05T01:36:24.9395819Z --- PASS: TestValidateConfigLevelRules (0.00s) +2026-07-05T01:36:24.9396583Z --- PASS: TestValidateConfigLevelRules/pin_mode_rejected (0.00s) +2026-07-05T01:36:24.9397584Z --- PASS: TestValidateConfigLevelRules/cli_version_sha_non-hex_rejected (0.00s) +2026-07-05T01:36:24.9398670Z --- PASS: TestValidateConfigLevelRules/cli_version_sha_short_hex_rejected (0.00s) +2026-07-05T01:36:24.9399824Z --- PASS: TestValidateConfigLevelRules/cli_version_sha_valid_40-hex_accepted (0.00s) +2026-07-05T01:36:24.9401135Z --- PASS: TestValidateConfigLevelRules/reserved_dispatch_input_shadow_rejected (0.00s) +2026-07-05T01:36:24.9402233Z --- PASS: TestValidateConfigLevelRules/choice_input_needs_options (0.00s) +2026-07-05T01:36:24.9403347Z --- PASS: TestValidateConfigLevelRules/environment_config_unknown_env_rejected (0.00s) +2026-07-05T01:36:24.9404179Z === RUN TestValidateOptionalDependsOnResolution +2026-07-05T01:36:24.9404941Z === RUN TestValidateOptionalDependsOnResolution/resolves_like_depends_on +2026-07-05T01:36:24.9405837Z === RUN TestValidateOptionalDependsOnResolution/unresolved_rejected +2026-07-05T01:36:24.9406787Z --- PASS: TestValidateOptionalDependsOnResolution (0.00s) +2026-07-05T01:36:24.9407818Z --- PASS: TestValidateOptionalDependsOnResolution/resolves_like_depends_on (0.00s) +2026-07-05T01:36:24.9408940Z --- PASS: TestValidateOptionalDependsOnResolution/unresolved_rejected (0.00s) +2026-07-05T01:36:24.9409701Z === RUN TestValidateValidateCallbackRules +2026-07-05T01:36:24.9410598Z === RUN TestValidateValidateCallbackRules/workflow_and_run_mutually_exclusive +2026-07-05T01:36:24.9411540Z === RUN TestValidateValidateCallbackRules/runs_on_rejected_on_reusable_workflow +2026-07-05T01:36:24.9412544Z === RUN TestValidateValidateCallbackRules/concurrency_rejected_on_reusable_workflow +2026-07-05T01:36:24.9413485Z === RUN TestValidateValidateCallbackRules/run-only_validate_rejected +2026-07-05T01:36:24.9414210Z --- PASS: TestValidateValidateCallbackRules (0.00s) +2026-07-05T01:36:24.9415202Z --- PASS: TestValidateValidateCallbackRules/workflow_and_run_mutually_exclusive (0.00s) +2026-07-05T01:36:24.9416450Z --- PASS: TestValidateValidateCallbackRules/runs_on_rejected_on_reusable_workflow (0.00s) +2026-07-05T01:36:24.9417783Z --- PASS: TestValidateValidateCallbackRules/concurrency_rejected_on_reusable_workflow (0.00s) +2026-07-05T01:36:24.9418968Z --- PASS: TestValidateValidateCallbackRules/run-only_validate_rejected (0.00s) +2026-07-05T01:36:24.9419706Z === RUN TestSecretsNullTreatedAsUnset +2026-07-05T01:36:24.9420394Z --- PASS: TestSecretsNullTreatedAsUnset (0.00s) +2026-07-05T01:36:24.9420941Z === RUN TestRunsOnEmptyMappingRejected +2026-07-05T01:36:24.9421485Z --- PASS: TestRunsOnEmptyMappingRejected (0.00s) +2026-07-05T01:36:24.9422147Z === RUN TestOptionalDependsOnParticipatesInCycleDetection +2026-07-05T01:36:24.9422956Z --- PASS: TestOptionalDependsOnParticipatesInCycleDetection (0.00s) +2026-07-05T01:36:24.9423629Z === RUN TestGetPinModeNilReceiver +2026-07-05T01:36:24.9424113Z --- PASS: TestGetPinModeNilReceiver (0.00s) +2026-07-05T01:36:24.9424677Z === RUN TestParseExternalDeployReservedFields +2026-07-05T01:36:24.9425483Z --- PASS: TestParseExternalDeployReservedFields (0.00s) +2026-07-05T01:36:24.9426079Z === RUN TestValidateExternalDeployRules +2026-07-05T01:36:24.9426854Z === RUN TestValidateExternalDeployRules/runs_on_rejected_on_reusable_external_workflow +2026-07-05T01:36:24.9427780Z === RUN TestValidateExternalDeployRules/missing_workflow_rejected +2026-07-05T01:36:24.9428601Z === RUN TestValidateExternalDeployRules/run_rejected_on_external_deploy +2026-07-05T01:36:24.9429477Z === RUN TestValidateExternalDeployRules/shell_rejected_on_external_deploy +2026-07-05T01:36:24.9430361Z --- PASS: TestValidateExternalDeployRules (0.00s) +2026-07-05T01:36:24.9431412Z --- PASS: TestValidateExternalDeployRules/runs_on_rejected_on_reusable_external_workflow (0.00s) +2026-07-05T01:36:24.9432569Z --- PASS: TestValidateExternalDeployRules/missing_workflow_rejected (0.00s) +2026-07-05T01:36:24.9433665Z --- PASS: TestValidateExternalDeployRules/run_rejected_on_external_deploy (0.00s) +2026-07-05T01:36:24.9434808Z --- PASS: TestValidateExternalDeployRules/shell_rejected_on_external_deploy (0.00s) +2026-07-05T01:36:24.9435747Z === RUN TestComponentsShapeParseAndValidate +2026-07-05T01:36:24.9436489Z === RUN TestComponentsShapeParseAndValidate/valid_components_block_passes +2026-07-05T01:36:24.9437448Z === RUN TestComponentsShapeParseAndValidate/non-job-id-safe_component_name_rejected +2026-07-05T01:36:24.9438365Z === RUN TestComponentsShapeParseAndValidate/path_with_dotdot_rejected +2026-07-05T01:36:24.9439186Z === RUN TestComponentsShapeParseAndValidate/absolute_path_rejected +2026-07-05T01:36:24.9440229Z === RUN TestComponentsShapeParseAndValidate/omitting_components_is_nil_and_zero_errors +2026-07-05T01:36:24.9441086Z --- PASS: TestComponentsShapeParseAndValidate (0.00s) +2026-07-05T01:36:24.9442059Z --- PASS: TestComponentsShapeParseAndValidate/valid_components_block_passes (0.00s) +2026-07-05T01:36:24.9443531Z --- PASS: TestComponentsShapeParseAndValidate/non-job-id-safe_component_name_rejected (0.00s) +2026-07-05T01:36:24.9444759Z --- PASS: TestComponentsShapeParseAndValidate/path_with_dotdot_rejected (0.00s) +2026-07-05T01:36:24.9445848Z --- PASS: TestComponentsShapeParseAndValidate/absolute_path_rejected (0.00s) +2026-07-05T01:36:24.9447074Z --- PASS: TestComponentsShapeParseAndValidate/omitting_components_is_nil_and_zero_errors (0.00s) +2026-07-05T01:36:24.9447920Z === RUN TestSchemaVersionE2E +2026-07-05T01:36:24.9448582Z === RUN TestSchemaVersionE2E/valid_current_schema_version_parses_and_validates +2026-07-05T01:36:24.9449461Z === RUN TestSchemaVersionE2E/omitted_schema_version_parses_with_a_warning +2026-07-05T01:36:24.9450500Z === RUN TestSchemaVersionE2E/incompatible_(too_new)_schema_version_is_rejected +2026-07-05T01:36:24.9451212Z --- PASS: TestSchemaVersionE2E (0.01s) +2026-07-05T01:36:24.9452104Z --- PASS: TestSchemaVersionE2E/valid_current_schema_version_parses_and_validates (0.00s) +2026-07-05T01:36:24.9453276Z --- PASS: TestSchemaVersionE2E/omitted_schema_version_parses_with_a_warning (0.00s) +2026-07-05T01:36:24.9454434Z --- PASS: TestSchemaVersionE2E/incompatible_(too_new)_schema_version_is_rejected (0.00s) +2026-07-05T01:36:24.9455209Z === RUN TestGetSchemaVersion +2026-07-05T01:36:24.9455725Z === RUN TestGetSchemaVersion/omitted_defaults_to_current +2026-07-05T01:36:24.9456319Z === RUN TestGetSchemaVersion/explicit_current +2026-07-05T01:36:24.9456934Z === RUN TestGetSchemaVersion/explicit_value_passes_through +2026-07-05T01:36:24.9457562Z --- PASS: TestGetSchemaVersion (0.00s) +2026-07-05T01:36:24.9458288Z --- PASS: TestGetSchemaVersion/omitted_defaults_to_current (0.00s) +2026-07-05T01:36:24.9459172Z --- PASS: TestGetSchemaVersion/explicit_current (0.00s) +2026-07-05T01:36:24.9460204Z --- PASS: TestGetSchemaVersion/explicit_value_passes_through (0.00s) +2026-07-05T01:36:24.9460880Z === RUN TestValidateSchemaVersionHelper +2026-07-05T01:36:24.9461584Z === RUN TestValidateSchemaVersionHelper/omitted_(0)_warns_and_is_accepted +2026-07-05T01:36:24.9462690Z === RUN TestValidateSchemaVersionHelper/negative_is_rejected +2026-07-05T01:36:24.9463408Z === RUN TestValidateSchemaVersionHelper/below_min_is_rejected +2026-07-05T01:36:24.9464274Z === RUN TestValidateSchemaVersionHelper/at_min_(older_supported)_warns_and_is_accepted +2026-07-05T01:36:24.9465312Z === RUN TestValidateSchemaVersionHelper/between_min_and_current_warns_and_is_accepted +2026-07-05T01:36:24.9466344Z === RUN TestValidateSchemaVersionHelper/current_minus_one_warns_and_is_accepted +2026-07-05T01:36:24.9467273Z === RUN TestValidateSchemaVersionHelper/exactly_current_is_accepted_silently +2026-07-05T01:36:24.9468136Z === RUN TestValidateSchemaVersionHelper/above_current_is_rejected +2026-07-05T01:36:24.9468831Z --- PASS: TestValidateSchemaVersionHelper (0.00s) +2026-07-05T01:36:24.9469773Z --- PASS: TestValidateSchemaVersionHelper/omitted_(0)_warns_and_is_accepted (0.00s) +2026-07-05T01:36:24.9471378Z --- PASS: TestValidateSchemaVersionHelper/negative_is_rejected (0.00s) +2026-07-05T01:36:24.9472377Z --- PASS: TestValidateSchemaVersionHelper/below_min_is_rejected (0.00s) +2026-07-05T01:36:24.9473599Z --- PASS: TestValidateSchemaVersionHelper/at_min_(older_supported)_warns_and_is_accepted (0.00s) +2026-07-05T01:36:24.9474939Z --- PASS: TestValidateSchemaVersionHelper/between_min_and_current_warns_and_is_accepted (0.00s) +2026-07-05T01:36:24.9476208Z --- PASS: TestValidateSchemaVersionHelper/current_minus_one_warns_and_is_accepted (0.00s) +2026-07-05T01:36:24.9477414Z --- PASS: TestValidateSchemaVersionHelper/exactly_current_is_accepted_silently (0.00s) +2026-07-05T01:36:24.9478543Z --- PASS: TestValidateSchemaVersionHelper/above_current_is_rejected (0.00s) +2026-07-05T01:36:24.9479247Z === RUN TestValidateSchemaVersion +2026-07-05T01:36:24.9479867Z === RUN TestValidateSchemaVersion/current_version_accepted_silently +2026-07-05T01:36:24.9480838Z === RUN TestValidateSchemaVersion/omitted_version_warns_and_is_accepted +2026-07-05T01:36:24.9481815Z === RUN TestValidateSchemaVersion/newer_than_CLI_is_rejected +2026-07-05T01:36:24.9482676Z === RUN TestValidateSchemaVersion/negative_version_is_rejected +2026-07-05T01:36:24.9483389Z --- PASS: TestValidateSchemaVersion (0.00s) +2026-07-05T01:36:24.9484395Z --- PASS: TestValidateSchemaVersion/current_version_accepted_silently (0.00s) +2026-07-05T01:36:24.9485759Z --- PASS: TestValidateSchemaVersion/omitted_version_warns_and_is_accepted (0.00s) +2026-07-05T01:36:24.9486869Z --- PASS: TestValidateSchemaVersion/newer_than_CLI_is_rejected (0.00s) +2026-07-05T01:36:24.9487932Z --- PASS: TestValidateSchemaVersion/negative_version_is_rejected (0.00s) +2026-07-05T01:36:24.9488805Z === RUN TestValidateRejectsIncompatibleSchemaVersion +2026-07-05T01:36:24.9489650Z --- PASS: TestValidateRejectsIncompatibleSchemaVersion (0.00s) +2026-07-05T01:36:24.9490562Z === RUN TestValidateAcceptsCurrentSchemaVersion +2026-07-05T01:36:24.9491225Z --- PASS: TestValidateAcceptsCurrentSchemaVersion (0.00s) +2026-07-05T01:36:24.9491925Z === RUN TestValidateOmittedSchemaVersionIsNotFatal +2026-07-05T01:36:24.9492631Z --- PASS: TestValidateOmittedSchemaVersionIsNotFatal (0.00s) +2026-07-05T01:36:24.9493342Z === RUN TestWriteManifestState_PreservesUnmodeledKeys +2026-07-05T01:36:24.9494042Z --- PASS: TestWriteManifestState_PreservesUnmodeledKeys (0.00s) +2026-07-05T01:36:24.9494836Z === RUN TestWriteManifestState_EmptyStateRemovesKeyButKeepsConfig +2026-07-05T01:36:24.9495713Z --- PASS: TestWriteManifestState_EmptyStateRemovesKeyButKeepsConfig (0.00s) +2026-07-05T01:36:24.9496478Z === RUN TestWriteManifestState_WritesLatestRelease +2026-07-05T01:36:24.9497127Z --- PASS: TestWriteManifestState_WritesLatestRelease (0.00s) +2026-07-05T01:36:24.9497761Z === RUN TestWriteManifestState_CustomManifestKey +2026-07-05T01:36:24.9498380Z --- PASS: TestWriteManifestState_CustomManifestKey (0.00s) +2026-07-05T01:36:24.9498988Z === RUN TestMatchTrigger +2026-07-05T01:36:24.9499411Z === RUN TestMatchTrigger/positive_match +2026-07-05T01:36:24.9500270Z === RUN TestMatchTrigger/positive_no_match +2026-07-05T01:36:24.9500843Z === RUN TestMatchTrigger/multiple_positives_one_matches +2026-07-05T01:36:24.9501499Z === RUN TestMatchTrigger/negation_excludes_md_under_wildcard +2026-07-05T01:36:24.9502114Z === RUN TestMatchTrigger/negation_excludes_docs_dir +2026-07-05T01:36:24.9502769Z === RUN TestMatchTrigger/positive_survives_unrelated_negation +2026-07-05T01:36:24.9503456Z === RUN TestMatchTrigger/negation_listed_first_still_excludes +2026-07-05T01:36:24.9504166Z === RUN TestMatchTrigger/negation_listed_first_allows_non-excluded +2026-07-05T01:36:24.9504862Z === RUN TestMatchTrigger/negation-only_excludes_match +2026-07-05T01:36:24.9505478Z === RUN TestMatchTrigger/negation-only_allows_non-match +2026-07-05T01:36:24.9506125Z === RUN TestMatchTrigger/scoped_negation_excludes_md_in_src +2026-07-05T01:36:24.9506773Z === RUN TestMatchTrigger/scoped_negation_keeps_go_in_src +2026-07-05T01:36:24.9507334Z --- PASS: TestMatchTrigger (0.00s) +2026-07-05T01:36:24.9507940Z --- PASS: TestMatchTrigger/positive_match (0.00s) +2026-07-05T01:36:24.9508659Z --- PASS: TestMatchTrigger/positive_no_match (0.00s) +2026-07-05T01:36:24.9509447Z --- PASS: TestMatchTrigger/multiple_positives_one_matches (0.00s) +2026-07-05T01:36:24.9510500Z --- PASS: TestMatchTrigger/negation_excludes_md_under_wildcard (0.00s) +2026-07-05T01:36:24.9511376Z --- PASS: TestMatchTrigger/negation_excludes_docs_dir (0.00s) +2026-07-05T01:36:24.9512256Z --- PASS: TestMatchTrigger/positive_survives_unrelated_negation (0.00s) +2026-07-05T01:36:24.9513216Z --- PASS: TestMatchTrigger/negation_listed_first_still_excludes (0.00s) +2026-07-05T01:36:24.9514209Z --- PASS: TestMatchTrigger/negation_listed_first_allows_non-excluded (0.00s) +2026-07-05T01:36:24.9515134Z --- PASS: TestMatchTrigger/negation-only_excludes_match (0.00s) +2026-07-05T01:36:24.9516022Z --- PASS: TestMatchTrigger/negation-only_allows_non-match (0.00s) +2026-07-05T01:36:24.9517120Z --- PASS: TestMatchTrigger/scoped_negation_excludes_md_in_src (0.00s) +2026-07-05T01:36:24.9518031Z --- PASS: TestMatchTrigger/scoped_negation_keeps_go_in_src (0.00s) +2026-07-05T01:36:24.9518648Z === RUN TestMatchAnyTrigger +2026-07-05T01:36:24.9519171Z === RUN TestMatchAnyTrigger/empty_patterns_always_trigger +2026-07-05T01:36:24.9519811Z === RUN TestMatchAnyTrigger/positive_matches_one_file +2026-07-05T01:36:24.9520616Z === RUN TestMatchAnyTrigger/positive_matches_no_file +2026-07-05T01:36:24.9521281Z === RUN TestMatchAnyTrigger/docs-only_change_does_not_trigger +2026-07-05T01:36:24.9521924Z === RUN TestMatchAnyTrigger/source_change_triggers +2026-07-05T01:36:24.9522631Z === RUN TestMatchAnyTrigger/mixed_change_triggers_via_non-excluded_file +2026-07-05T01:36:24.9523321Z --- PASS: TestMatchAnyTrigger (0.00s) +2026-07-05T01:36:24.9524046Z --- PASS: TestMatchAnyTrigger/empty_patterns_always_trigger (0.00s) +2026-07-05T01:36:24.9524975Z --- PASS: TestMatchAnyTrigger/positive_matches_one_file (0.00s) +2026-07-05T01:36:24.9525822Z --- PASS: TestMatchAnyTrigger/positive_matches_no_file (0.00s) +2026-07-05T01:36:24.9526714Z --- PASS: TestMatchAnyTrigger/docs-only_change_does_not_trigger (0.00s) +2026-07-05T01:36:24.9527583Z --- PASS: TestMatchAnyTrigger/source_change_triggers (0.00s) +2026-07-05T01:36:24.9528578Z --- PASS: TestMatchAnyTrigger/mixed_change_triggers_via_non-excluded_file (0.00s) +2026-07-05T01:36:24.9529315Z === RUN TestIsNegationPattern +2026-07-05T01:36:24.9529801Z --- PASS: TestIsNegationPattern (0.00s) +2026-07-05T01:36:24.9530488Z === RUN TestMatchGlobPattern_SlashBoundary +2026-07-05T01:36:24.9531202Z === RUN TestMatchGlobPattern_SlashBoundary/single_star_does_not_cross_slash +2026-07-05T01:36:24.9532121Z === RUN TestMatchGlobPattern_SlashBoundary/single_star_matches_one_segment +2026-07-05T01:36:24.9532956Z === RUN TestMatchGlobPattern_SlashBoundary/dir_star_does_not_descend +2026-07-05T01:36:24.9533781Z === RUN TestMatchGlobPattern_SlashBoundary/dir_star_matches_direct_child +2026-07-05T01:36:24.9534928Z === RUN TestMatchGlobPattern_SlashBoundary/doublestar_still_matches_nested_files +2026-07-05T01:36:24.9535710Z --- PASS: TestMatchGlobPattern_SlashBoundary (0.00s) +2026-07-05T01:36:24.9536707Z --- PASS: TestMatchGlobPattern_SlashBoundary/single_star_does_not_cross_slash (0.00s) +2026-07-05T01:36:24.9537846Z --- PASS: TestMatchGlobPattern_SlashBoundary/single_star_matches_one_segment (0.00s) +2026-07-05T01:36:24.9538937Z --- PASS: TestMatchGlobPattern_SlashBoundary/dir_star_does_not_descend (0.00s) +2026-07-05T01:36:24.9540195Z --- PASS: TestMatchGlobPattern_SlashBoundary/dir_star_matches_direct_child (0.00s) +2026-07-05T01:36:24.9541391Z --- PASS: TestMatchGlobPattern_SlashBoundary/doublestar_still_matches_nested_files (0.00s) +2026-07-05T01:36:24.9542238Z === RUN TestMatchGlobPattern_StripsNegation +2026-07-05T01:36:24.9542833Z --- PASS: TestMatchGlobPattern_StripsNegation (0.00s) +2026-07-05T01:36:24.9543380Z === RUN TestGetPromotionModes +2026-07-05T01:36:24.9543853Z --- PASS: TestGetPromotionModes (0.00s) +2026-07-05T01:36:24.9544340Z === RUN TestGetCascadeTargets +2026-07-05T01:36:24.9544786Z --- PASS: TestGetCascadeTargets (0.00s) +2026-07-05T01:36:24.9545284Z === RUN TestGetAllDirectPromotionOptions +2026-07-05T01:36:24.9545852Z --- PASS: TestGetAllDirectPromotionOptions (0.00s) +2026-07-05T01:36:24.9546450Z === RUN TestGetAllDirectPromotionOptions_TwoEnvs +2026-07-05T01:36:24.9547084Z --- PASS: TestGetAllDirectPromotionOptions_TwoEnvs (0.00s) +2026-07-05T01:36:24.9547734Z === RUN TestGetAllDirectPromotionOptions_SingleEnv +2026-07-05T01:36:24.9548391Z --- PASS: TestGetAllDirectPromotionOptions_SingleEnv (0.00s) +2026-07-05T01:36:24.9548997Z === RUN TestIsSingleEnvironment +2026-07-05T01:36:24.9549472Z --- PASS: TestIsSingleEnvironment (0.00s) +2026-07-05T01:36:24.9549969Z === RUN TestIsFirstEnvironment +2026-07-05T01:36:24.9550580Z --- PASS: TestIsFirstEnvironment (0.00s) +2026-07-05T01:36:24.9551074Z === RUN TestIsLastEnvironment +2026-07-05T01:36:24.9551707Z --- PASS: TestIsLastEnvironment (0.00s) +2026-07-05T01:36:24.9552192Z === RUN TestGetEnvironmentIndex +2026-07-05T01:36:24.9552660Z --- PASS: TestGetEnvironmentIndex (0.00s) +2026-07-05T01:36:24.9553155Z === RUN TestGetNextEnvironment +2026-07-05T01:36:24.9553609Z --- PASS: TestGetNextEnvironment (0.00s) +2026-07-05T01:36:24.9554096Z === RUN TestGetEnvironmentsInRange +2026-07-05T01:36:24.9554615Z === RUN TestGetEnvironmentsInRange/dev_to_uat +2026-07-05T01:36:24.9555195Z === RUN TestGetEnvironmentsInRange/staging_to_perf +2026-07-05T01:36:24.9555837Z === RUN TestGetEnvironmentsInRange/single_environment +2026-07-05T01:36:24.9556424Z === RUN TestGetEnvironmentsInRange/full_range +2026-07-05T01:36:24.9556991Z === RUN TestGetEnvironmentsInRange/invalid_start +2026-07-05T01:36:24.9557560Z === RUN TestGetEnvironmentsInRange/invalid_end +2026-07-05T01:36:24.9558120Z === RUN TestGetEnvironmentsInRange/reverse_order +2026-07-05T01:36:24.9558739Z --- PASS: TestGetEnvironmentsInRange (0.00s) +2026-07-05T01:36:24.9559444Z --- PASS: TestGetEnvironmentsInRange/dev_to_uat (0.00s) +2026-07-05T01:36:24.9560393Z --- PASS: TestGetEnvironmentsInRange/staging_to_perf (0.00s) +2026-07-05T01:36:24.9561230Z --- PASS: TestGetEnvironmentsInRange/single_environment (0.00s) +2026-07-05T01:36:24.9562023Z --- PASS: TestGetEnvironmentsInRange/full_range (0.00s) +2026-07-05T01:36:24.9562779Z --- PASS: TestGetEnvironmentsInRange/invalid_start (0.00s) +2026-07-05T01:36:24.9563558Z --- PASS: TestGetEnvironmentsInRange/invalid_end (0.00s) +2026-07-05T01:36:24.9564333Z --- PASS: TestGetEnvironmentsInRange/reverse_order (0.00s) +2026-07-05T01:36:24.9564933Z === RUN TestGetTriggersForDeploy +2026-07-05T01:36:24.9565433Z === RUN TestGetTriggersForDeploy/app-deploy +2026-07-05T01:36:24.9565960Z === RUN TestGetTriggersForDeploy/cdk +2026-07-05T01:36:24.9566447Z === RUN TestGetTriggersForDeploy/notify +2026-07-05T01:36:24.9566977Z === RUN TestGetTriggersForDeploy/nonexistent +2026-07-05T01:36:24.9567517Z --- PASS: TestGetTriggersForDeploy (0.00s) +2026-07-05T01:36:24.9568367Z --- PASS: TestGetTriggersForDeploy/app-deploy (0.00s) +2026-07-05T01:36:24.9569066Z --- PASS: TestGetTriggersForDeploy/cdk (0.00s) +2026-07-05T01:36:24.9569734Z --- PASS: TestGetTriggersForDeploy/notify (0.00s) +2026-07-05T01:36:24.9570605Z --- PASS: TestGetTriggersForDeploy/nonexistent (0.00s) +2026-07-05T01:36:24.9571258Z === RUN TestGetTriggersForDeploy_MultipleBuildsFirstMatch +2026-07-05T01:36:24.9572010Z --- PASS: TestGetTriggersForDeploy_MultipleBuildsFirstMatch (0.00s) +2026-07-05T01:36:24.9572766Z === RUN TestGetTriggersForDeploy_MultipleDependsOnUsesFirst +2026-07-05T01:36:24.9573535Z --- PASS: TestGetTriggersForDeploy_MultipleDependsOnUsesFirst (0.00s) +2026-07-05T01:36:24.9574284Z === RUN TestGetTriggersForDeploy_DependsOnNonexistentBuild +2026-07-05T01:36:24.9575035Z --- PASS: TestGetTriggersForDeploy_DependsOnNonexistentBuild (0.00s) +2026-07-05T01:36:24.9575726Z === RUN TestGetTriggersForDeploy_EmptyDependsOn +2026-07-05T01:36:24.9576368Z --- PASS: TestGetTriggersForDeploy_EmptyDependsOn (0.00s) +2026-07-05T01:36:24.9577087Z === RUN TestGetTriggersForDeploy_TriggersPreferredOverDependsOn +2026-07-05T01:36:24.9577957Z --- PASS: TestGetTriggersForDeploy_TriggersPreferredOverDependsOn (0.00s) +2026-07-05T01:36:24.9578709Z === RUN TestGetTriggersForDeploy_EmptyTriggers +2026-07-05T01:36:24.9579326Z --- PASS: TestGetTriggersForDeploy_EmptyTriggers (0.00s) +2026-07-05T01:36:24.9580133Z === RUN TestGetTriggersForDeploy_MultipleTriggerPatterns +2026-07-05T01:36:24.9580864Z --- PASS: TestGetTriggersForDeploy_MultipleTriggerPatterns (0.00s) +2026-07-05T01:36:24.9581575Z === RUN TestGetTriggersForDeploy_BuildWithNoTriggers +2026-07-05T01:36:24.9582246Z --- PASS: TestGetTriggersForDeploy_BuildWithNoTriggers (0.00s) +2026-07-05T01:36:24.9582832Z === RUN TestGetCLIVersion +2026-07-05T01:36:24.9583270Z --- PASS: TestGetCLIVersion (0.00s) +2026-07-05T01:36:24.9583716Z === RUN TestGetTagPrefix +2026-07-05T01:36:24.9584322Z --- PASS: TestGetTagPrefix (0.00s) +2026-07-05T01:36:24.9584777Z === RUN TestGetReleaseToken +2026-07-05T01:36:24.9585325Z === RUN TestGetReleaseToken/both_unset_defaults_to_GITHUB_TOKEN +2026-07-05T01:36:24.9586109Z === RUN TestGetReleaseToken/release_token_full_expression_passes_through +2026-07-05T01:36:24.9586926Z === RUN TestGetReleaseToken/release_token_bare_name_normalizes_to_secret +2026-07-05T01:36:24.9587689Z === RUN TestGetReleaseToken/release_token_context_form_wraps +2026-07-05T01:36:24.9588536Z === RUN TestGetReleaseToken/state_token_set_release_token_unset_falls_back_to_state_token +2026-07-05T01:36:24.9589517Z === RUN TestGetReleaseToken/bare_state_token_name_normalizes_on_fallback +2026-07-05T01:36:24.9590466Z === RUN TestGetReleaseToken/release_token_wins_over_state_token +2026-07-05T01:36:24.9591368Z === RUN TestGetReleaseToken/app-backed_state_with_static_state_token_falls_back_to_static +2026-07-05T01:36:24.9592429Z === RUN TestGetReleaseToken/app-only_state_without_static_token_keeps_GITHUB_TOKEN_default +2026-07-05T01:36:24.9593240Z --- PASS: TestGetReleaseToken (0.00s) +2026-07-05T01:36:24.9594053Z --- PASS: TestGetReleaseToken/both_unset_defaults_to_GITHUB_TOKEN (0.00s) +2026-07-05T01:36:24.9595121Z --- PASS: TestGetReleaseToken/release_token_full_expression_passes_through (0.00s) +2026-07-05T01:36:24.9596221Z --- PASS: TestGetReleaseToken/release_token_bare_name_normalizes_to_secret (0.00s) +2026-07-05T01:36:24.9597244Z --- PASS: TestGetReleaseToken/release_token_context_form_wraps (0.00s) +2026-07-05T01:36:24.9598404Z --- PASS: TestGetReleaseToken/state_token_set_release_token_unset_falls_back_to_state_token (0.00s) +2026-07-05T01:36:24.9599611Z --- PASS: TestGetReleaseToken/bare_state_token_name_normalizes_on_fallback (0.00s) +2026-07-05T01:36:24.9600791Z --- PASS: TestGetReleaseToken/release_token_wins_over_state_token (0.00s) +2026-07-05T01:36:24.9601988Z --- PASS: TestGetReleaseToken/app-backed_state_with_static_state_token_falls_back_to_static (0.00s) +2026-07-05T01:36:24.9603590Z --- PASS: TestGetReleaseToken/app-only_state_without_static_token_keeps_GITHUB_TOKEN_default (0.00s) +2026-07-05T01:36:24.9604426Z === RUN TestGetStateToken +2026-07-05T01:36:24.9604855Z --- PASS: TestGetStateToken (0.00s) +2026-07-05T01:36:24.9605332Z === RUN TestNotifyConfigGetToken +2026-07-05T01:36:24.9605821Z --- PASS: TestNotifyConfigGetToken (0.00s) +2026-07-05T01:36:24.9606335Z === RUN TestNormalizeTokenExpression +2026-07-05T01:36:24.9606934Z === RUN TestNormalizeTokenExpression/full_secrets_expression +2026-07-05T01:36:24.9607625Z === RUN TestNormalizeTokenExpression/full_vars_expression +2026-07-05T01:36:24.9608296Z === RUN TestNormalizeTokenExpression/bare_secret_name +2026-07-05T01:36:24.9608972Z === RUN TestNormalizeTokenExpression/unwrapped_secrets_context +2026-07-05T01:36:24.9609684Z === RUN TestNormalizeTokenExpression/unwrapped_vars_context +2026-07-05T01:36:24.9610594Z === RUN TestNormalizeTokenExpression/surrounding_whitespace_trimmed +2026-07-05T01:36:24.9611341Z === RUN TestNormalizeTokenExpression/empty_stays_empty +2026-07-05T01:36:24.9611947Z --- PASS: TestNormalizeTokenExpression (0.00s) +2026-07-05T01:36:24.9612756Z --- PASS: TestNormalizeTokenExpression/full_secrets_expression (0.00s) +2026-07-05T01:36:24.9613687Z --- PASS: TestNormalizeTokenExpression/full_vars_expression (0.00s) +2026-07-05T01:36:24.9614566Z --- PASS: TestNormalizeTokenExpression/bare_secret_name (0.00s) +2026-07-05T01:36:24.9615496Z --- PASS: TestNormalizeTokenExpression/unwrapped_secrets_context (0.00s) +2026-07-05T01:36:24.9616467Z --- PASS: TestNormalizeTokenExpression/unwrapped_vars_context (0.00s) +2026-07-05T01:36:24.9617479Z --- PASS: TestNormalizeTokenExpression/surrounding_whitespace_trimmed (0.00s) +2026-07-05T01:36:24.9618481Z --- PASS: TestNormalizeTokenExpression/empty_stays_empty (0.00s) +2026-07-05T01:36:24.9619075Z === RUN TestGetGitMode +2026-07-05T01:36:24.9619476Z --- PASS: TestGetGitMode (0.00s) +2026-07-05T01:36:24.9620295Z === RUN TestGetGitUserName +2026-07-05T01:36:24.9620745Z --- PASS: TestGetGitUserName (0.00s) +2026-07-05T01:36:24.9621208Z === RUN TestGetGitUserEmail +2026-07-05T01:36:24.9621638Z --- PASS: TestGetGitUserEmail (0.00s) +2026-07-05T01:36:24.9622089Z === RUN TestHasGPGSigning +2026-07-05T01:36:24.9622506Z --- PASS: TestHasGPGSigning (0.00s) +2026-07-05T01:36:24.9622964Z === RUN TestHasReleaseArtifacts +2026-07-05T01:36:24.9623428Z --- PASS: TestHasReleaseArtifacts (0.00s) +2026-07-05T01:36:24.9623936Z === RUN TestGetAllReleaseArtifacts +2026-07-05T01:36:24.9624455Z --- PASS: TestGetAllReleaseArtifacts (0.00s) +2026-07-05T01:36:24.9624933Z === RUN TestJobID +2026-07-05T01:36:24.9625285Z --- PASS: TestJobID (0.00s) +2026-07-05T01:36:24.9625705Z === RUN TestOutputKey +2026-07-05T01:36:24.9626090Z --- PASS: TestOutputKey (0.00s) +2026-07-05T01:36:24.9626498Z === RUN TestDisplayName +2026-07-05T01:36:24.9626905Z --- PASS: TestDisplayName (0.00s) +2026-07-05T01:36:24.9627361Z === RUN TestResolveDependency +2026-07-05T01:36:24.9627892Z === RUN TestResolveDependency/build:app_from_deploy +2026-07-05T01:36:24.9628513Z === RUN TestResolveDependency/build:worker_from_deploy +2026-07-05T01:36:24.9629123Z === RUN TestResolveDependency/deploy:infra_from_deploy +2026-07-05T01:36:24.9629771Z === RUN TestResolveDependency/validate:anything_from_build +2026-07-05T01:36:24.9630622Z === RUN TestResolveDependency/build:nonexistent_from_deploy +2026-07-05T01:36:24.9631313Z === RUN TestResolveDependency/deploy:nonexistent_from_deploy +2026-07-05T01:36:24.9631968Z === RUN TestResolveDependency/unknown:app_from_deploy +2026-07-05T01:36:24.9632554Z === RUN TestResolveDependency/app_from_deploy +2026-07-05T01:36:24.9633111Z === RUN TestResolveDependency/infra_from_deploy +2026-07-05T01:36:24.9633665Z === RUN TestResolveDependency/worker_from_build +2026-07-05T01:36:24.9634315Z === RUN TestResolveDependency/nonexistent_from_deploy +2026-07-05T01:36:24.9634875Z --- PASS: TestResolveDependency (0.00s) +2026-07-05T01:36:24.9635591Z --- PASS: TestResolveDependency/build:app_from_deploy (0.00s) +2026-07-05T01:36:24.9636746Z --- PASS: TestResolveDependency/build:worker_from_deploy (0.00s) +2026-07-05T01:36:24.9637604Z --- PASS: TestResolveDependency/deploy:infra_from_deploy (0.00s) +2026-07-05T01:36:24.9638458Z --- PASS: TestResolveDependency/validate:anything_from_build (0.00s) +2026-07-05T01:36:24.9639405Z --- PASS: TestResolveDependency/build:nonexistent_from_deploy (0.00s) +2026-07-05T01:36:24.9640471Z --- PASS: TestResolveDependency/deploy:nonexistent_from_deploy (0.00s) +2026-07-05T01:36:24.9641374Z --- PASS: TestResolveDependency/unknown:app_from_deploy (0.00s) +2026-07-05T01:36:24.9642159Z --- PASS: TestResolveDependency/app_from_deploy (0.00s) +2026-07-05T01:36:24.9642924Z --- PASS: TestResolveDependency/infra_from_deploy (0.00s) +2026-07-05T01:36:24.9643691Z --- PASS: TestResolveDependency/worker_from_build (0.00s) +2026-07-05T01:36:24.9644492Z --- PASS: TestResolveDependency/nonexistent_from_deploy (0.00s) +2026-07-05T01:36:24.9645193Z === RUN TestResolveDependency_SameNamePrefersBuilds +2026-07-05T01:36:24.9645849Z --- PASS: TestResolveDependency_SameNamePrefersBuilds (0.00s) +2026-07-05T01:36:24.9646492Z === RUN TestResolveDependency_NoValidate +2026-07-05T01:36:24.9647046Z --- PASS: TestResolveDependency_NoValidate (0.00s) +2026-07-05T01:36:24.9647563Z === RUN TestIsPrimary +2026-07-05T01:36:24.9647968Z === RUN TestIsPrimary/no_external_repos +2026-07-05T01:36:24.9648459Z === RUN TestIsPrimary/with_external_repos +2026-07-05T01:36:24.9648956Z === RUN TestIsPrimary/with_empty_external +2026-07-05T01:36:24.9649433Z --- PASS: TestIsPrimary (0.00s) +2026-07-05T01:36:24.9650158Z --- PASS: TestIsPrimary/no_external_repos (0.00s) +2026-07-05T01:36:24.9650836Z --- PASS: TestIsPrimary/with_external_repos (0.00s) +2026-07-05T01:36:24.9651510Z --- PASS: TestIsPrimary/with_empty_external (0.00s) +2026-07-05T01:36:24.9652030Z === RUN TestIsSatellite +2026-07-05T01:36:24.9652643Z === RUN TestIsSatellite/no_notify_config +2026-07-05T01:36:24.9653150Z === RUN TestIsSatellite/with_notify_config +2026-07-05T01:36:24.9653644Z === RUN TestIsSatellite/with_nil_notify +2026-07-05T01:36:24.9654103Z --- PASS: TestIsSatellite (0.00s) +2026-07-05T01:36:24.9654700Z --- PASS: TestIsSatellite/no_notify_config (0.00s) +2026-07-05T01:36:24.9655385Z --- PASS: TestIsSatellite/with_notify_config (0.00s) +2026-07-05T01:36:24.9656070Z --- PASS: TestIsSatellite/with_nil_notify (0.00s) +2026-07-05T01:36:24.9656591Z === RUN TestGetExternalDeploy +2026-07-05T01:36:24.9657044Z --- PASS: TestGetExternalDeploy (0.00s) +2026-07-05T01:36:24.9657537Z === RUN TestGetAllExternalDeploys +2026-07-05T01:36:24.9658030Z --- PASS: TestGetAllExternalDeploys (0.00s) +2026-07-05T01:36:24.9658617Z === RUN TestGetAllExternalDeployNames +2026-07-05T01:36:24.9659145Z --- PASS: TestGetAllExternalDeployNames (0.00s) +2026-07-05T01:36:24.9659680Z === RUN TestNotifyConfig_GetWorkflow +2026-07-05T01:36:24.9660392Z === RUN TestNotifyConfig_GetWorkflow/default_workflow +2026-07-05T01:36:24.9661002Z === RUN TestNotifyConfig_GetWorkflow/custom_workflow +2026-07-05T01:36:24.9661579Z --- PASS: TestNotifyConfig_GetWorkflow (0.00s) +2026-07-05T01:36:24.9662335Z --- PASS: TestNotifyConfig_GetWorkflow/default_workflow (0.00s) +2026-07-05T01:36:24.9663172Z --- PASS: TestNotifyConfig_GetWorkflow/custom_workflow (0.00s) +2026-07-05T01:36:24.9663771Z === RUN TestNotifyConfig_GetToken +2026-07-05T01:36:24.9664271Z === RUN TestNotifyConfig_GetToken/default_token +2026-07-05T01:36:24.9664846Z === RUN TestNotifyConfig_GetToken/custom_token +2026-07-05T01:36:24.9665381Z --- PASS: TestNotifyConfig_GetToken (0.00s) +2026-07-05T01:36:24.9666065Z --- PASS: TestNotifyConfig_GetToken/default_token (0.00s) +2026-07-05T01:36:24.9666800Z --- PASS: TestNotifyConfig_GetToken/custom_token (0.00s) +2026-07-05T01:36:24.9667541Z === RUN TestNotifyConfig_DeployNameAndEnvironmentOverrides_RoundTrip +2026-07-05T01:36:24.9668430Z --- PASS: TestNotifyConfig_DeployNameAndEnvironmentOverrides_RoundTrip (0.00s) +2026-07-05T01:36:24.9669426Z === RUN TestNotifyConfig_Overrides_OmittedWhenUnset +2026-07-05T01:36:24.9670223Z --- PASS: TestNotifyConfig_Overrides_OmittedWhenUnset (0.00s) +2026-07-05T01:36:24.9670832Z === RUN TestExternalRepoConfig_GetRef +2026-07-05T01:36:24.9672301Z === RUN TestExternalRepoConfig_GetRef/explicit_ref +2026-07-05T01:36:24.9672960Z === RUN TestExternalRepoConfig_GetRef/no_ref_uses_trunk_branch +2026-07-05T01:36:24.9673600Z --- PASS: TestExternalRepoConfig_GetRef (0.00s) +2026-07-05T01:36:24.9674333Z --- PASS: TestExternalRepoConfig_GetRef/explicit_ref (0.00s) +2026-07-05T01:36:24.9675185Z --- PASS: TestExternalRepoConfig_GetRef/no_ref_uses_trunk_branch (0.00s) +2026-07-05T01:36:24.9675853Z === RUN TestResolveDependency_External +2026-07-05T01:36:24.9676428Z --- PASS: TestResolveDependency_External (0.00s) +2026-07-05T01:36:24.9676964Z === RUN TestComponentsRoundTrip +2026-07-05T01:36:24.9677168Z --- PASS: TestComponentsRoundTrip (0.01s) +2026-07-05T01:36:24.9677406Z === RUN TestComponentsOmittedChangesNothing +2026-07-05T01:36:24.9677655Z --- PASS: TestComponentsOmittedChangesNothing (0.00s) +2026-07-05T01:36:24.9677836Z === RUN TestValidateCanaryFields +2026-07-05T01:36:24.9678040Z === PAUSE TestValidateCanaryFields +2026-07-05T01:36:24.9678277Z === RUN TestValidateDeployTargetReservedFields +2026-07-05T01:36:24.9678530Z === PAUSE TestValidateDeployTargetReservedFields +2026-07-05T01:36:24.9678851Z === RUN TestValidateDeployTargetReservedFieldsViaManifest +2026-07-05T01:36:24.9679156Z === PAUSE TestValidateDeployTargetReservedFieldsViaManifest +2026-07-05T01:36:24.9679375Z === RUN TestValidateEnvironmentConfigFields +2026-07-05T01:36:24.9679583Z === PAUSE TestValidateEnvironmentConfigFields +2026-07-05T01:36:24.9679831Z === RUN TestParseEnvironmentConfigReservedFields +2026-07-05T01:36:24.9680247Z === PAUSE TestParseEnvironmentConfigReservedFields +2026-07-05T01:36:24.9680466Z === RUN TestValidateLocalCallbackWorkflowPath +2026-07-05T01:36:24.9680929Z === PAUSE TestValidateLocalCallbackWorkflowPath +2026-07-05T01:36:24.9681191Z === RUN TestValidate_RollbackRepositoryDispatch_Valid +2026-07-05T01:36:24.9681509Z --- PASS: TestValidate_RollbackRepositoryDispatch_Valid (0.00s) +2026-07-05T01:36:24.9681796Z === RUN TestValidate_RollbackRepositoryDispatch_NilIsValid +2026-07-05T01:36:24.9682136Z --- PASS: TestValidate_RollbackRepositoryDispatch_NilIsValid (0.00s) +2026-07-05T01:36:24.9682467Z === RUN TestValidate_RollbackRepositoryDispatch_EmptyTypesRejected +2026-07-05T01:36:24.9682899Z --- PASS: TestValidate_RollbackRepositoryDispatch_EmptyTypesRejected (0.00s) +2026-07-05T01:36:24.9683233Z === RUN TestValidate_RollbackRepositoryDispatch_BlankTypeRejected +2026-07-05T01:36:24.9683619Z --- PASS: TestValidate_RollbackRepositoryDispatch_BlankTypeRejected (0.00s) +2026-07-05T01:36:24.9683936Z === RUN TestValidate_RollbackRepositoryDispatch_UnsafeTypeRejected +2026-07-05T01:36:24.9684332Z --- PASS: TestValidate_RollbackRepositoryDispatch_UnsafeTypeRejected (0.00s) +2026-07-05T01:36:24.9684702Z === RUN TestValidate_RollbackRepositoryDispatch_SchemaVersionUnchanged +2026-07-05T01:36:24.9685122Z --- PASS: TestValidate_RollbackRepositoryDispatch_SchemaVersionUnchanged (0.00s) +2026-07-05T01:36:24.9685338Z === RUN TestValidateTelemetryReservedFields +2026-07-05T01:36:24.9685546Z === PAUSE TestValidateTelemetryReservedFields +2026-07-05T01:36:24.9685758Z === RUN TestParseTelemetryReservedFields +2026-07-05T01:36:24.9685958Z === PAUSE TestParseTelemetryReservedFields +2026-07-05T01:36:24.9686211Z === RUN TestParseTelemetryJobSummaryUnsetVsFalse +2026-07-05T01:36:24.9686449Z === PAUSE TestParseTelemetryJobSummaryUnsetVsFalse +2026-07-05T01:36:24.9686733Z === RUN TestValidateVersionOverridesReservedField +2026-07-05T01:36:24.9686988Z === PAUSE TestValidateVersionOverridesReservedField +2026-07-05T01:36:24.9687215Z === RUN TestParseVersionOverridesReservedField +2026-07-05T01:36:24.9687449Z === PAUSE TestParseVersionOverridesReservedField +2026-07-05T01:36:24.9687694Z === RUN TestParseVersionOverridesAbsentStaysValid +2026-07-05T01:36:24.9688117Z === PAUSE TestParseVersionOverridesAbsentStaysValid +2026-07-05T01:36:24.9688352Z === CONT TestValidateDeployTargetReservedFields +2026-07-05T01:36:24.9688847Z === RUN TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid +2026-07-05T01:36:24.9689345Z === PAUSE TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid +2026-07-05T01:36:24.9689788Z === RUN TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected +2026-07-05T01:36:24.9690254Z === CONT TestParseVersionOverridesAbsentStaysValid +2026-07-05T01:36:24.9690563Z --- PASS: TestParseVersionOverridesAbsentStaysValid (0.00s) +2026-07-05T01:36:24.9690788Z === CONT TestParseVersionOverridesReservedField +2026-07-05T01:36:24.9691070Z --- PASS: TestParseVersionOverridesReservedField (0.00s) +2026-07-05T01:36:24.9691308Z === CONT TestValidateVersionOverridesReservedField +2026-07-05T01:36:24.9691698Z === RUN TestValidateVersionOverridesReservedField/nil_release_is_valid +2026-07-05T01:36:24.9691950Z === CONT TestParseTelemetryJobSummaryUnsetVsFalse +2026-07-05T01:36:24.9692247Z === CONT TestValidateDeployTargetReservedFieldsViaManifest +2026-07-05T01:36:24.9692615Z --- PASS: TestValidateDeployTargetReservedFieldsViaManifest (0.00s) +2026-07-05T01:36:24.9692836Z === CONT TestValidateTelemetryReservedFields +2026-07-05T01:36:24.9693181Z === RUN TestValidateTelemetryReservedFields/nil_telemetry_is_valid +2026-07-05T01:36:24.9693525Z === PAUSE TestValidateTelemetryReservedFields/nil_telemetry_is_valid +2026-07-05T01:36:24.9693925Z === RUN TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid +2026-07-05T01:36:24.9694335Z === PAUSE TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid +2026-07-05T01:36:24.9694899Z === RUN TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) +2026-07-05T01:36:24.9695648Z === PAUSE TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) +2026-07-05T01:36:24.9696255Z === RUN TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid +2026-07-05T01:36:24.9696833Z === PAUSE TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid +2026-07-05T01:36:24.9697171Z === RUN TestValidateTelemetryReservedFields/http_url_is_accepted +2026-07-05T01:36:24.9697496Z === PAUSE TestValidateTelemetryReservedFields/http_url_is_accepted +2026-07-05T01:36:24.9697850Z === RUN TestValidateTelemetryReservedFields/non-http_url_is_rejected +2026-07-05T01:36:24.9698193Z === PAUSE TestValidateTelemetryReservedFields/non-http_url_is_rejected +2026-07-05T01:36:24.9698721Z === RUN TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected +2026-07-05T01:36:24.9699248Z === PAUSE TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected +2026-07-05T01:36:24.9699739Z === RUN TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected +2026-07-05T01:36:24.9700480Z === PAUSE TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected +2026-07-05T01:36:24.9700974Z === RUN TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) +2026-07-05T01:36:24.9701446Z === PAUSE TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) +2026-07-05T01:36:24.9701789Z === CONT TestValidateLocalCallbackWorkflowPath +2026-07-05T01:36:24.9702201Z === RUN TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted +2026-07-05T01:36:24.9702671Z === PAUSE TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted +2026-07-05T01:36:24.9703219Z === RUN TestValidateLocalCallbackWorkflowPath/bare_filename_accepted +2026-07-05T01:36:24.9703629Z === PAUSE TestValidateLocalCallbackWorkflowPath/bare_filename_accepted +2026-07-05T01:36:24.9704238Z === RUN TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted +2026-07-05T01:36:24.9704795Z === PAUSE TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted +2026-07-05T01:36:24.9705544Z === RUN TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted +2026-07-05T01:36:24.9706065Z === PAUSE TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted +2026-07-05T01:36:24.9706567Z === RUN TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted +2026-07-05T01:36:24.9707165Z === PAUSE TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted +2026-07-05T01:36:24.9707696Z === RUN TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected +2026-07-05T01:36:24.9708236Z === PAUSE TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected +2026-07-05T01:36:24.9708689Z === RUN TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected +2026-07-05T01:36:24.9709172Z === PAUSE TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected +2026-07-05T01:36:24.9709749Z === RUN TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected +2026-07-05T01:36:24.9710487Z === PAUSE TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected +2026-07-05T01:36:24.9710808Z === CONT TestParseTelemetryReservedFields +2026-07-05T01:36:24.9711126Z --- PASS: TestParseTelemetryReservedFields (0.00s) +2026-07-05T01:36:24.9711447Z === CONT TestParseEnvironmentConfigReservedFields +2026-07-05T01:36:24.9712016Z === PAUSE TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected +2026-07-05T01:36:24.9712795Z === RUN TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected +2026-07-05T01:36:24.9713493Z === PAUSE TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected +2026-07-05T01:36:24.9714052Z === RUN TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected +2026-07-05T01:36:24.9714667Z === PAUSE TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected +2026-07-05T01:36:24.9715659Z === RUN TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected +2026-07-05T01:36:24.9716184Z === PAUSE TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected +2026-07-05T01:36:24.9716753Z === RUN TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected +2026-07-05T01:36:24.9717263Z === PAUSE TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected +2026-07-05T01:36:24.9717780Z === RUN TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected +2026-07-05T01:36:24.9718470Z === PAUSE TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected +2026-07-05T01:36:24.9719030Z === RUN TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid +2026-07-05T01:36:24.9719633Z === PAUSE TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid +2026-07-05T01:36:24.9720319Z === CONT TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid +2026-07-05T01:36:24.9720896Z === CONT TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) +2026-07-05T01:36:24.9736997Z === CONT TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected +2026-07-05T01:36:24.9737452Z === CONT TestValidateTelemetryReservedFields/non-http_url_is_rejected +2026-07-05T01:36:24.9738020Z === CONT TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected +2026-07-05T01:36:24.9738632Z === CONT TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid +2026-07-05T01:36:24.9739224Z === CONT TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) +2026-07-05T01:36:24.9739581Z === CONT TestValidateTelemetryReservedFields/http_url_is_accepted +2026-07-05T01:36:24.9739938Z === CONT TestValidateTelemetryReservedFields/nil_telemetry_is_valid +2026-07-05T01:36:24.9740523Z === CONT TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted +2026-07-05T01:36:24.9741215Z === CONT TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected +2026-07-05T01:36:24.9741406Z === CONT TestValidateCanaryFields +2026-07-05T01:36:24.9743609Z === RUN TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion +2026-07-05T01:36:24.9744069Z === PAUSE TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion +2026-07-05T01:36:24.9744330Z === RUN TestValidateCanaryFields/percent_valid_range +2026-07-05T01:36:24.9744594Z --- PASS: TestValidateTelemetryReservedFields (0.00s) +2026-07-05T01:36:24.9745214Z --- PASS: TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid (0.00s) +2026-07-05T01:36:24.9745932Z --- PASS: TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) (0.00s) +2026-07-05T01:36:24.9746678Z --- PASS: TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected (0.00s) +2026-07-05T01:36:24.9747280Z --- PASS: TestValidateTelemetryReservedFields/non-http_url_is_rejected (0.00s) +2026-07-05T01:36:24.9748063Z --- PASS: TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected (0.00s) +2026-07-05T01:36:24.9748873Z --- PASS: TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid (0.00s) +2026-07-05T01:36:24.9749688Z --- PASS: TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) (0.00s) +2026-07-05T01:36:24.9750362Z --- PASS: TestValidateTelemetryReservedFields/http_url_is_accepted (0.00s) +2026-07-05T01:36:24.9750891Z --- PASS: TestValidateTelemetryReservedFields/nil_telemetry_is_valid (0.00s) +2026-07-05T01:36:24.9751139Z === PAUSE TestValidateCanaryFields/percent_valid_range +2026-07-05T01:36:24.9751459Z === RUN TestValidateCanaryFields/percent_zero_is_unset_and_valid +2026-07-05T01:36:24.9751776Z === PAUSE TestValidateCanaryFields/percent_zero_is_unset_and_valid +2026-07-05T01:36:24.9752241Z === RUN TestValidateCanaryFields/percent_101_rejected +2026-07-05T01:36:24.9752496Z === PAUSE TestValidateCanaryFields/percent_101_rejected +2026-07-05T01:36:24.9752727Z === RUN TestValidateCanaryFields/percent_-1_rejected +2026-07-05T01:36:24.9752968Z === PAUSE TestValidateCanaryFields/percent_-1_rejected +2026-07-05T01:36:24.9753243Z === RUN TestValidateCanaryFields/bake_time_valid_durations +2026-07-05T01:36:24.9753512Z === PAUSE TestValidateCanaryFields/bake_time_valid_durations +2026-07-05T01:36:24.9753791Z === RUN TestValidateCanaryFields/bake_time_invalid_rejected +2026-07-05T01:36:24.9754065Z === PAUSE TestValidateCanaryFields/bake_time_invalid_rejected +2026-07-05T01:36:24.9754354Z === RUN TestValidateCanaryFields/promote_callback_valid_paths +2026-07-05T01:36:24.9754650Z === PAUSE TestValidateCanaryFields/promote_callback_valid_paths +2026-07-05T01:36:24.9755007Z === RUN TestValidateCanaryFields/promote_callback_invalid_paths_rejected +2026-07-05T01:36:24.9755373Z === PAUSE TestValidateCanaryFields/promote_callback_invalid_paths_rejected +2026-07-05T01:36:24.9755680Z === RUN TestValidateCanaryFields/rollback_callback_valid_paths +2026-07-05T01:36:24.9755973Z === PAUSE TestValidateCanaryFields/rollback_callback_valid_paths +2026-07-05T01:36:24.9756342Z === RUN TestValidateCanaryFields/rollback_callback_invalid_paths_rejected +2026-07-05T01:36:24.9756752Z === PAUSE TestValidateCanaryFields/rollback_callback_invalid_paths_rejected +2026-07-05T01:36:24.9756978Z === CONT TestValidateEnvironmentConfigFields +2026-07-05T01:36:24.9757377Z === RUN TestValidateEnvironmentConfigFields/nil_environment_config_is_valid +2026-07-05T01:36:24.9757809Z === PAUSE TestValidateEnvironmentConfigFields/nil_environment_config_is_valid +2026-07-05T01:36:24.9758277Z === RUN TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) +2026-07-05T01:36:24.9758803Z === PAUSE TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) +2026-07-05T01:36:24.9759108Z === RUN TestValidateEnvironmentConfigFields/full_valid_block +2026-07-05T01:36:24.9759589Z === PAUSE TestValidateEnvironmentConfigFields/full_valid_block +2026-07-05T01:36:24.9759940Z === RUN TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid +2026-07-05T01:36:24.9760461Z === PAUSE TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid +2026-07-05T01:36:24.9760845Z === RUN TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid +2026-07-05T01:36:24.9761227Z === PAUSE TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid +2026-07-05T01:36:24.9761645Z === RUN TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected +2026-07-05T01:36:24.9762099Z === PAUSE TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected +2026-07-05T01:36:24.9762493Z === RUN TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected +2026-07-05T01:36:24.9762895Z === PAUSE TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected +2026-07-05T01:36:24.9763319Z === RUN TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid +2026-07-05T01:36:24.9763728Z === PAUSE TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid +2026-07-05T01:36:24.9764094Z === RUN TestValidateEnvironmentConfigFields/all_branch_policy_is_valid +2026-07-05T01:36:24.9764464Z === PAUSE TestValidateEnvironmentConfigFields/all_branch_policy_is_valid +2026-07-05T01:36:24.9764834Z === PAUSE TestValidateVersionOverridesReservedField/nil_release_is_valid +2026-07-05T01:36:24.9765245Z === RUN TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected +2026-07-05T01:36:24.9765646Z === PAUSE TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected +2026-07-05T01:36:24.9766193Z === RUN TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected +2026-07-05T01:36:24.9766713Z === RUN TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid +2026-07-05T01:36:24.9767237Z === PAUSE TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected +2026-07-05T01:36:24.9767951Z === PAUSE TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid +2026-07-05T01:36:24.9768425Z === RUN TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected +2026-07-05T01:36:24.9768936Z === RUN TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid +2026-07-05T01:36:24.9769435Z === PAUSE TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected +2026-07-05T01:36:24.9769825Z === RUN TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected +2026-07-05T01:36:24.9770389Z === PAUSE TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected +2026-07-05T01:36:24.9770908Z === PAUSE TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid +2026-07-05T01:36:24.9771500Z === RUN TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid +2026-07-05T01:36:24.9771941Z === RUN TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected +2026-07-05T01:36:24.9772358Z === PAUSE TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected +2026-07-05T01:36:24.9772871Z === RUN TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected +2026-07-05T01:36:24.9773469Z === PAUSE TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid +2026-07-05T01:36:24.9773861Z === RUN TestValidateVersionOverridesReservedField/absolute_dir_is_rejected +2026-07-05T01:36:24.9774373Z === PAUSE TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected +2026-07-05T01:36:24.9774762Z === PAUSE TestValidateVersionOverridesReservedField/absolute_dir_is_rejected +2026-07-05T01:36:24.9775248Z === RUN TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected +2026-07-05T01:36:24.9775734Z === PAUSE TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected +2026-07-05T01:36:24.9776204Z === RUN TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected +2026-07-05T01:36:24.9776855Z === RUN TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected +2026-07-05T01:36:24.9777321Z === PAUSE TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected +2026-07-05T01:36:24.9777787Z === PAUSE TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected +2026-07-05T01:36:24.9778271Z === RUN TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected +2026-07-05T01:36:24.9778723Z === PAUSE TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected +2026-07-05T01:36:24.9779214Z === CONT TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid +2026-07-05T01:36:24.9779651Z === CONT TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected +2026-07-05T01:36:24.9780272Z === CONT TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected +2026-07-05T01:36:24.9780738Z === CONT TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected +2026-07-05T01:36:24.9781162Z === CONT TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected +2026-07-05T01:36:24.9781751Z === CONT TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected +2026-07-05T01:36:24.9782244Z === CONT TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid +2026-07-05T01:36:24.9782693Z === CONT TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected +2026-07-05T01:36:24.9783125Z === CONT TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion +2026-07-05T01:36:24.9783421Z --- PASS: TestParseEnvironmentConfigReservedFields (0.00s) +2026-07-05T01:36:24.9783727Z === CONT TestValidateCanaryFields/rollback_callback_valid_paths +2026-07-05T01:36:24.9784174Z === RUN TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml +2026-07-05T01:36:24.9784833Z === PAUSE TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml +2026-07-05T01:36:24.9785170Z === RUN TestValidateCanaryFields/rollback_callback_valid_paths/x.yml +2026-07-05T01:36:24.9785509Z === PAUSE TestValidateCanaryFields/rollback_callback_valid_paths/x.yml +2026-07-05T01:36:24.9785880Z === CONT TestValidateCanaryFields/promote_callback_invalid_paths_rejected +2026-07-05T01:36:24.9786312Z === RUN TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml +2026-07-05T01:36:24.9786783Z === PAUSE TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml +2026-07-05T01:36:24.9787160Z === CONT TestValidateCanaryFields/rollback_callback_invalid_paths_rejected +2026-07-05T01:36:24.9787588Z === RUN TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml +2026-07-05T01:36:24.9788033Z === PAUSE TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml +2026-07-05T01:36:24.9788467Z === RUN TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml +2026-07-05T01:36:24.9788753Z === CONT TestValidateCanaryFields/bake_time_invalid_rejected +2026-07-05T01:36:24.9789053Z === CONT TestValidateCanaryFields/promote_callback_valid_paths +2026-07-05T01:36:24.9789483Z === RUN TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml +2026-07-05T01:36:24.9789926Z === PAUSE TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml +2026-07-05T01:36:24.9790508Z === PAUSE TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml +2026-07-05T01:36:24.9790801Z --- PASS: TestParseTelemetryJobSummaryUnsetVsFalse (0.01s) +2026-07-05T01:36:24.9791236Z === RUN TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml +2026-07-05T01:36:24.9791670Z === PAUSE TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml +2026-07-05T01:36:24.9791999Z === RUN TestValidateCanaryFields/promote_callback_valid_paths/x.yml +2026-07-05T01:36:24.9792594Z === PAUSE TestValidateCanaryFields/promote_callback_valid_paths/x.yml +2026-07-05T01:36:24.9792874Z --- PASS: TestValidateDeployTargetReservedFields (0.00s) +2026-07-05T01:36:24.9793543Z --- PASS: TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected (0.00s) +2026-07-05T01:36:24.9794222Z --- PASS: TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected (0.00s) +2026-07-05T01:36:24.9794896Z --- PASS: TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected (0.00s) +2026-07-05T01:36:24.9795581Z --- PASS: TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid (0.00s) +2026-07-05T01:36:24.9796394Z --- PASS: TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected (0.00s) +2026-07-05T01:36:24.9797106Z --- PASS: TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid (0.00s) +2026-07-05T01:36:24.9797778Z --- PASS: TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected (0.00s) +2026-07-05T01:36:24.9798419Z --- PASS: TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected (0.00s) +2026-07-05T01:36:24.9798697Z === CONT TestValidateCanaryFields/bake_time_valid_durations +2026-07-05T01:36:24.9798989Z === RUN TestValidateCanaryFields/bake_time_valid_durations/30s +2026-07-05T01:36:24.9799295Z === PAUSE TestValidateCanaryFields/bake_time_valid_durations/30s +2026-07-05T01:36:24.9799578Z === RUN TestValidateCanaryFields/bake_time_valid_durations/5m +2026-07-05T01:36:24.9799874Z === PAUSE TestValidateCanaryFields/bake_time_valid_durations/5m +2026-07-05T01:36:24.9800287Z === CONT TestValidateCanaryFields/percent_101_rejected +2026-07-05T01:36:24.9800694Z === CONT TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected +2026-07-05T01:36:24.9801077Z === CONT TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected +2026-07-05T01:36:24.9801720Z === CONT TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted +2026-07-05T01:36:24.9802092Z === CONT TestValidateLocalCallbackWorkflowPath/bare_filename_accepted +2026-07-05T01:36:24.9802568Z === CONT TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted +2026-07-05T01:36:24.9802802Z === CONT TestValidateCanaryFields/percent_-1_rejected +2026-07-05T01:36:24.9803172Z === CONT TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted +2026-07-05T01:36:24.9803566Z === CONT TestValidateEnvironmentConfigFields/nil_environment_config_is_valid +2026-07-05T01:36:24.9804074Z === CONT TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid +2026-07-05T01:36:24.9804534Z === CONT TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected +2026-07-05T01:36:24.9804771Z === CONT TestValidateCanaryFields/percent_valid_range +2026-07-05T01:36:24.9805033Z === RUN TestValidateCanaryFields/percent_valid_range/#00 +2026-07-05T01:36:24.9805354Z === CONT TestValidateCanaryFields/percent_zero_is_unset_and_valid +2026-07-05T01:36:24.9805875Z === CONT TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected +2026-07-05T01:36:24.9806145Z --- PASS: TestValidateLocalCallbackWorkflowPath (0.00s) +2026-07-05T01:36:24.9806759Z --- PASS: TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted (0.00s) +2026-07-05T01:36:24.9807422Z --- PASS: TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected (0.00s) +2026-07-05T01:36:24.9808015Z --- PASS: TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected (0.00s) +2026-07-05T01:36:24.9808583Z --- PASS: TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected (0.00s) +2026-07-05T01:36:24.9809216Z --- PASS: TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted (0.00s) +2026-07-05T01:36:24.9809783Z --- PASS: TestValidateLocalCallbackWorkflowPath/bare_filename_accepted (0.00s) +2026-07-05T01:36:24.9810664Z --- PASS: TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted (0.00s) +2026-07-05T01:36:24.9811425Z --- PASS: TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted (0.00s) +2026-07-05T01:36:24.9811901Z === CONT TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected +2026-07-05T01:36:24.9812333Z === CONT TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected +2026-07-05T01:36:24.9812605Z === PAUSE TestValidateCanaryFields/percent_valid_range/#00 +2026-07-05T01:36:24.9813101Z === CONT TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected +2026-07-05T01:36:24.9813622Z === CONT TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected +2026-07-05T01:36:24.9813890Z === RUN TestValidateCanaryFields/percent_valid_range/#01 +2026-07-05T01:36:24.9814271Z === CONT TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected +2026-07-05T01:36:24.9814637Z === CONT TestValidateEnvironmentConfigFields/all_branch_policy_is_valid +2026-07-05T01:36:24.9815037Z === CONT TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected +2026-07-05T01:36:24.9815445Z === CONT TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected +2026-07-05T01:36:24.9815871Z === CONT TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected +2026-07-05T01:36:24.9816266Z === CONT TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid +2026-07-05T01:36:24.9816667Z === CONT TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid +2026-07-05T01:36:24.9817192Z === CONT TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected +2026-07-05T01:36:24.9817656Z === CONT TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) +2026-07-05T01:36:24.9817962Z === CONT TestValidateEnvironmentConfigFields/full_valid_block +2026-07-05T01:36:24.9818322Z === CONT TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid +2026-07-05T01:36:24.9818785Z === PAUSE TestValidateCanaryFields/percent_valid_range/#01 +2026-07-05T01:36:24.9819405Z === CONT TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid +2026-07-05T01:36:24.9819665Z === RUN TestValidateCanaryFields/percent_valid_range/#02 +2026-07-05T01:36:24.9819925Z === PAUSE TestValidateCanaryFields/percent_valid_range/#02 +2026-07-05T01:36:24.9820443Z === CONT TestValidateVersionOverridesReservedField/nil_release_is_valid +2026-07-05T01:36:24.9820725Z --- PASS: TestValidateEnvironmentConfigFields (0.00s) +2026-07-05T01:36:24.9821329Z --- PASS: TestValidateEnvironmentConfigFields/nil_environment_config_is_valid (0.00s) +2026-07-05T01:36:24.9821999Z --- PASS: TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected (0.00s) +2026-07-05T01:36:24.9822747Z --- PASS: TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected (0.00s) +2026-07-05T01:36:24.9823441Z --- PASS: TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected (0.00s) +2026-07-05T01:36:24.9824081Z --- PASS: TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected (0.00s) +2026-07-05T01:36:24.9824807Z --- PASS: TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected (0.00s) +2026-07-05T01:36:24.9825540Z --- PASS: TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected (0.00s) +2026-07-05T01:36:24.9826126Z --- PASS: TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected (0.00s) +2026-07-05T01:36:24.9826702Z --- PASS: TestValidateEnvironmentConfigFields/all_branch_policy_is_valid (0.00s) +2026-07-05T01:36:24.9827287Z --- PASS: TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected (0.00s) +2026-07-05T01:36:24.9827910Z --- PASS: TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected (0.00s) +2026-07-05T01:36:24.9828558Z --- PASS: TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected (0.00s) +2026-07-05T01:36:24.9829344Z --- PASS: TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid (0.00s) +2026-07-05T01:36:24.9829974Z --- PASS: TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid (0.00s) +2026-07-05T01:36:24.9830811Z --- PASS: TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) (0.00s) +2026-07-05T01:36:24.9831577Z --- PASS: TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected (0.00s) +2026-07-05T01:36:24.9832059Z --- PASS: TestValidateEnvironmentConfigFields/full_valid_block (0.00s) +2026-07-05T01:36:24.9832601Z --- PASS: TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid (0.00s) +2026-07-05T01:36:24.9833077Z === CONT TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected +2026-07-05T01:36:24.9833544Z === CONT TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml +2026-07-05T01:36:24.9833966Z === CONT TestValidateVersionOverridesReservedField/absolute_dir_is_rejected +2026-07-05T01:36:24.9834270Z === CONT TestValidateCanaryFields/bake_time_valid_durations/5m +2026-07-05T01:36:24.9834594Z === CONT TestValidateCanaryFields/bake_time_valid_durations/30s +2026-07-05T01:36:24.9835039Z === CONT TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml +2026-07-05T01:36:24.9835477Z === CONT TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml +2026-07-05T01:36:24.9836004Z === CONT TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid +2026-07-05T01:36:24.9836446Z === CONT TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml +2026-07-05T01:36:24.9836877Z === CONT TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml +2026-07-05T01:36:24.9837211Z === CONT TestValidateCanaryFields/promote_callback_valid_paths/x.yml +2026-07-05T01:36:24.9837478Z === CONT TestValidateCanaryFields/percent_valid_range/#02 +2026-07-05T01:36:24.9837912Z === CONT TestValidateCanaryFields/percent_valid_range/#00 +2026-07-05T01:36:24.9838262Z === CONT TestValidateCanaryFields/rollback_callback_valid_paths/x.yml +2026-07-05T01:36:24.9838695Z === CONT TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml +2026-07-05T01:36:24.9838991Z --- PASS: TestValidateVersionOverridesReservedField (0.01s) +2026-07-05T01:36:24.9839787Z --- PASS: TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid (0.00s) +2026-07-05T01:36:24.9840730Z --- PASS: TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid (0.00s) +2026-07-05T01:36:24.9841214Z --- PASS: TestValidateVersionOverridesReservedField/nil_release_is_valid (0.00s) +2026-07-05T01:36:24.9841883Z --- PASS: TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected (0.00s) +2026-07-05T01:36:24.9842477Z --- PASS: TestValidateVersionOverridesReservedField/absolute_dir_is_rejected (0.00s) +2026-07-05T01:36:24.9843260Z --- PASS: TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid (0.00s) +2026-07-05T01:36:24.9843527Z === CONT TestValidateCanaryFields/percent_valid_range/#01 +2026-07-05T01:36:24.9843733Z --- PASS: TestValidateCanaryFields (0.00s) +2026-07-05T01:36:24.9844180Z --- PASS: TestValidateCanaryFields/bake_time_invalid_rejected (0.00s) +2026-07-05T01:36:24.9844834Z --- PASS: TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion (0.00s) +2026-07-05T01:36:24.9845236Z --- PASS: TestValidateCanaryFields/percent_-1_rejected (0.00s) +2026-07-05T01:36:24.9845729Z --- PASS: TestValidateCanaryFields/percent_zero_is_unset_and_valid (0.00s) +2026-07-05T01:36:24.9846174Z --- PASS: TestValidateCanaryFields/bake_time_valid_durations (0.00s) +2026-07-05T01:36:24.9846772Z --- PASS: TestValidateCanaryFields/bake_time_valid_durations/5m (0.00s) +2026-07-05T01:36:24.9847426Z --- PASS: TestValidateCanaryFields/bake_time_valid_durations/30s (0.00s) +2026-07-05T01:36:24.9848186Z --- PASS: TestValidateCanaryFields/rollback_callback_invalid_paths_rejected (0.00s) +2026-07-05T01:36:24.9849018Z --- PASS: TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml (0.00s) +2026-07-05T01:36:24.9849850Z --- PASS: TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml (0.00s) +2026-07-05T01:36:24.9850698Z --- PASS: TestValidateCanaryFields/rollback_callback_valid_paths (0.00s) +2026-07-05T01:36:24.9851564Z --- PASS: TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml (0.00s) +2026-07-05T01:36:24.9852212Z --- PASS: TestValidateCanaryFields/rollback_callback_valid_paths/x.yml (0.00s) +2026-07-05T01:36:24.9852686Z --- PASS: TestValidateCanaryFields/promote_callback_valid_paths (0.00s) +2026-07-05T01:36:24.9853513Z --- PASS: TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml (0.00s) +2026-07-05T01:36:24.9854158Z --- PASS: TestValidateCanaryFields/promote_callback_valid_paths/x.yml (0.00s) +2026-07-05T01:36:24.9854564Z --- PASS: TestValidateCanaryFields/percent_valid_range (0.00s) +2026-07-05T01:36:24.9855109Z --- PASS: TestValidateCanaryFields/percent_valid_range/#02 (0.00s) +2026-07-05T01:36:24.9855641Z --- PASS: TestValidateCanaryFields/percent_valid_range/#00 (0.00s) +2026-07-05T01:36:24.9856158Z --- PASS: TestValidateCanaryFields/percent_valid_range/#01 (0.00s) +2026-07-05T01:36:24.9856708Z --- PASS: TestValidateCanaryFields/promote_callback_invalid_paths_rejected (0.00s) +2026-07-05T01:36:24.9857536Z --- PASS: TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml (0.00s) +2026-07-05T01:36:24.9858351Z --- PASS: TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml (0.00s) +2026-07-05T01:36:24.9858848Z --- PASS: TestValidateCanaryFields/percent_101_rejected (0.00s) +2026-07-05T01:36:24.9859218Z === RUN FuzzLoadManifest +2026-07-05T01:36:24.9859404Z === RUN FuzzLoadManifest/seed#0 +2026-07-05T01:36:24.9859571Z === RUN FuzzLoadManifest/seed#1 +2026-07-05T01:36:24.9859743Z === RUN FuzzLoadManifest/seed#2 +2026-07-05T01:36:24.9859902Z === RUN FuzzLoadManifest/seed#3 +2026-07-05T01:36:24.9860228Z === RUN FuzzLoadManifest/seed#4 +2026-07-05T01:36:24.9860427Z --- PASS: FuzzLoadManifest (0.00s) +2026-07-05T01:36:24.9860700Z --- PASS: FuzzLoadManifest/seed#0 (0.00s) +2026-07-05T01:36:24.9860962Z --- PASS: FuzzLoadManifest/seed#1 (0.00s) +2026-07-05T01:36:24.9861213Z --- PASS: FuzzLoadManifest/seed#2 (0.00s) +2026-07-05T01:36:24.9861457Z --- PASS: FuzzLoadManifest/seed#3 (0.00s) +2026-07-05T01:36:24.9861703Z --- PASS: FuzzLoadManifest/seed#4 (0.00s) +2026-07-05T01:36:24.9861834Z PASS +2026-07-05T01:36:24.9861994Z coverage: 83.2% of statements +2026-07-05T01:36:24.9862470Z ok github.com/stablekernel/cascade/internal/config 1.243s coverage: 83.2% of statements +2026-07-05T01:36:24.9862713Z === RUN TestCommand_EmitsPayloadToStdout +2026-07-05T01:36:24.9862951Z --- PASS: TestCommand_EmitsPayloadToStdout (0.01s) +2026-07-05T01:36:24.9863137Z === RUN TestCommand_WritesToOutputFile +2026-07-05T01:36:24.9863353Z --- PASS: TestCommand_WritesToOutputFile (0.00s) +2026-07-05T01:36:24.9863537Z === RUN TestCommand_StdoutAndFileMatch +2026-07-05T01:36:24.9863748Z --- PASS: TestCommand_StdoutAndFileMatch (0.01s) +2026-07-05T01:36:24.9863960Z === RUN TestBuild_OrdersByManifestAndDefaults +2026-07-05T01:36:24.9864177Z === PAUSE TestBuild_OrdersByManifestAndDefaults +2026-07-05T01:36:24.9864370Z === RUN TestBuild_NoEnvironmentConfigBlock +2026-07-05T01:36:24.9864571Z === PAUSE TestBuild_NoEnvironmentConfigBlock +2026-07-05T01:36:24.9864756Z === RUN TestBuild_AllBranchPolicyIsNull +2026-07-05T01:36:24.9864937Z === PAUSE TestBuild_AllBranchPolicyIsNull +2026-07-05T01:36:24.9865116Z === RUN TestMarshal_Deterministic +2026-07-05T01:36:24.9865282Z === PAUSE TestMarshal_Deterministic +2026-07-05T01:36:24.9865513Z === RUN TestMarshal_ValidJSONAndTrailingNewline +2026-07-05T01:36:24.9865930Z === PAUSE TestMarshal_ValidJSONAndTrailingNewline +2026-07-05T01:36:24.9866173Z === RUN TestMarshal_SecretsAndVariablesAreNamesOnly +2026-07-05T01:36:24.9866427Z === PAUSE TestMarshal_SecretsAndVariablesAreNamesOnly +2026-07-05T01:36:24.9866643Z === CONT TestBuild_OrdersByManifestAndDefaults +2026-07-05T01:36:24.9866902Z --- PASS: TestBuild_OrdersByManifestAndDefaults (0.00s) +2026-07-05T01:36:24.9867143Z === CONT TestMarshal_SecretsAndVariablesAreNamesOnly +2026-07-05T01:36:24.9867435Z --- PASS: TestMarshal_SecretsAndVariablesAreNamesOnly (0.00s) +2026-07-05T01:36:24.9867670Z === CONT TestMarshal_ValidJSONAndTrailingNewline +2026-07-05T01:36:24.9867865Z === CONT TestBuild_AllBranchPolicyIsNull +2026-07-05T01:36:24.9868083Z --- PASS: TestBuild_AllBranchPolicyIsNull (0.00s) +2026-07-05T01:36:24.9868263Z === CONT TestMarshal_Deterministic +2026-07-05T01:36:24.9868529Z --- PASS: TestMarshal_ValidJSONAndTrailingNewline (0.00s) +2026-07-05T01:36:24.9868741Z === CONT TestBuild_NoEnvironmentConfigBlock +2026-07-05T01:36:24.9868990Z --- PASS: TestBuild_NoEnvironmentConfigBlock (0.00s) +2026-07-05T01:36:24.9869183Z --- PASS: TestMarshal_Deterministic (0.01s) +2026-07-05T01:36:24.9869312Z PASS +2026-07-05T01:36:24.9869473Z coverage: 83.7% of statements +2026-07-05T01:36:24.9870153Z ok github.com/stablekernel/cascade/internal/environments 1.041s coverage: 83.7% of statements +2026-07-05T01:36:28.9373299Z === RUN TestNewCommand +2026-07-05T01:36:28.9374052Z --- PASS: TestNewCommand (0.00s) +2026-07-05T01:36:28.9374780Z === RUN TestNewUpdateCommand +2026-07-05T01:36:28.9375351Z --- PASS: TestNewUpdateCommand (0.00s) +2026-07-05T01:36:28.9375968Z === RUN TestWriteManifest +2026-07-05T01:36:28.9376517Z --- PASS: TestWriteManifest (0.00s) +2026-07-05T01:36:28.9377145Z === RUN TestWriteManifest_PreservesFullConfig +2026-07-05T01:36:28.9378531Z --- PASS: TestWriteManifest_PreservesFullConfig (0.00s) +2026-07-05T01:36:28.9379253Z === RUN TestUpdateCommand_RequiredFlags +2026-07-05T01:36:28.9380720Z Error: required flag(s) "deploy-name", "environment", "sha", "source-repo" not set +2026-07-05T01:36:28.9381538Z Usage: +2026-07-05T01:36:28.9382017Z external update [flags] +2026-07-05T01:36:28.9382397Z +2026-07-05T01:36:28.9382667Z Flags: +2026-07-05T01:36:28.9383310Z --artifacts string Artifacts JSON (optional) +2026-07-05T01:36:28.9384113Z --deploy-name string Deploy name (e.g., cdk) +2026-07-05T01:36:28.9384947Z --environment string Target environment (e.g., dev) +2026-07-05T01:36:28.9385682Z -h, --help help for update +2026-07-05T01:36:28.9386516Z --sha string Commit SHA from source repo +2026-07-05T01:36:28.9387480Z --source-repo string Source repository (e.g., org/cdk-infra) +2026-07-05T01:36:28.9388520Z --version string Version from source repo (optional) +2026-07-05T01:36:28.9389087Z +2026-07-05T01:36:28.9389362Z Global Flags: +2026-07-05T01:36:28.9390344Z --config string Path to CI/CD config file +2026-07-05T01:36:28.9391243Z --gha-output Write outputs to $GITHUB_OUTPUT +2026-07-05T01:36:28.9392193Z --manifest-key string Key in manifest file (default "ci") +2026-07-05T01:36:28.9392764Z +2026-07-05T01:36:28.9393128Z --- PASS: TestUpdateCommand_RequiredFlags (0.00s) +2026-07-05T01:36:28.9393803Z === RUN TestUpdateCommand_InvalidArtifactsJSON +2026-07-05T01:36:28.9394956Z ───� External Update ───� +2026-07-05T01:36:28.9395636Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9396271Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9396839Z [INFO] Environment: dev +2026-07-05T01:36:28.9397402Z [INFO] SHA: sha123 +2026-07-05T01:36:28.9398019Z --- PASS: TestUpdateCommand_InvalidArtifactsJSON (0.00s) +2026-07-05T01:36:28.9398720Z === RUN TestUpdateCommand_NotPrimaryRepo +2026-07-05T01:36:28.9399413Z ───� External Update ───� +2026-07-05T01:36:28.9400239Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9400874Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9401818Z [INFO] Environment: dev +2026-07-05T01:36:28.9402474Z [INFO] SHA: sha123 +2026-07-05T01:36:28.9403051Z --- PASS: TestUpdateCommand_NotPrimaryRepo (0.00s) +2026-07-05T01:36:28.9403730Z === RUN TestUpdateCommand_ExternalDeployNotFound +2026-07-05T01:36:28.9404436Z ───� External Update ───� +2026-07-05T01:36:28.9405066Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9405701Z [INFO] Deploy: nonexistent +2026-07-05T01:36:28.9406311Z [INFO] Environment: dev +2026-07-05T01:36:28.9406899Z [INFO] SHA: sha123 +2026-07-05T01:36:28.9407545Z --- PASS: TestUpdateCommand_ExternalDeployNotFound (0.00s) +2026-07-05T01:36:28.9408281Z === RUN TestUpdateCommand_SourceRepoMismatch +2026-07-05T01:36:28.9408947Z ───� External Update ───� +2026-07-05T01:36:28.9409584Z [INFO] Source repo: org/wrong-repo +2026-07-05T01:36:28.9410716Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9411337Z [INFO] Environment: dev +2026-07-05T01:36:28.9411847Z [INFO] SHA: sha123 +2026-07-05T01:36:28.9412360Z --- PASS: TestUpdateCommand_SourceRepoMismatch (0.00s) +2026-07-05T01:36:28.9412967Z === RUN TestUpdateCommand_EnvironmentNotFound +2026-07-05T01:36:28.9413589Z ───� External Update ───� +2026-07-05T01:36:28.9414141Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9414674Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9415182Z [INFO] Environment: nonexistent +2026-07-05T01:36:28.9415709Z [INFO] SHA: sha123 +2026-07-05T01:36:28.9416218Z --- PASS: TestUpdateCommand_EnvironmentNotFound (0.00s) +2026-07-05T01:36:28.9416947Z === RUN TestCommitWithApplicationRetry_PushFailureIncludesOutput +2026-07-05T01:36:28.9417951Z --- PASS: TestCommitWithApplicationRetry_PushFailureIncludesOutput (3.29s) +2026-07-05T01:36:28.9418763Z === RUN TestUpdateCommand_RecoversFromConcurrentUpdate +2026-07-05T01:36:28.9419441Z ───� External Update ───� +2026-07-05T01:36:28.9420420Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9420996Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9421461Z [INFO] Environment: dev +2026-07-05T01:36:28.9421925Z [INFO] SHA: cdksha +2026-07-05T01:36:28.9422370Z [INFO] Version: v1.0.0 +2026-07-05T01:36:28.9422932Z [INFO] Updated external state for cdk in dev +2026-07-05T01:36:28.9423561Z [INFO] State committed and pushed +2026-07-05T01:36:28.9424119Z ───� External Update ───� +2026-07-05T01:36:28.9424656Z [INFO] Source repo: org/lambda-svc +2026-07-05T01:36:28.9425200Z [INFO] Deploy: lambda +2026-07-05T01:36:28.9425680Z [INFO] Environment: dev +2026-07-05T01:36:28.9426153Z [INFO] SHA: lambdasha +2026-07-05T01:36:28.9426628Z [INFO] Version: v2.0.0 +2026-07-05T01:36:28.9427209Z [INFO] Updated external state for lambda in dev +2026-07-05T01:36:28.9427831Z [INFO] State committed and pushed +2026-07-05T01:36:28.9428478Z --- PASS: TestUpdateCommand_RecoversFromConcurrentUpdate (1.32s) +2026-07-05T01:36:28.9429174Z === RUN TestUpdateCommand_SequentialStaleCheckout +2026-07-05T01:36:28.9429785Z ───� External Update ───� +2026-07-05T01:36:28.9430507Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9431032Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9431501Z [INFO] Environment: dev +2026-07-05T01:36:28.9431975Z [INFO] SHA: cdksha +2026-07-05T01:36:28.9432414Z [INFO] Version: v1.0.0 +2026-07-05T01:36:28.9432987Z [INFO] Updated external state for cdk in dev +2026-07-05T01:36:28.9433697Z [INFO] State committed and pushed +2026-07-05T01:36:28.9434245Z ───� External Update ───� +2026-07-05T01:36:28.9434807Z [INFO] Source repo: org/lambda-svc +2026-07-05T01:36:28.9435362Z [INFO] Deploy: lambda +2026-07-05T01:36:28.9435857Z [INFO] Environment: dev +2026-07-05T01:36:28.9436324Z [INFO] SHA: lambdasha +2026-07-05T01:36:28.9436777Z [INFO] Version: v2.0.0 +2026-07-05T01:36:28.9437664Z [INFO] Updated external state for lambda in dev +2026-07-05T01:36:28.9438304Z [INFO] State committed and pushed +2026-07-05T01:36:28.9438898Z --- PASS: TestUpdateCommand_SequentialStaleCheckout (1.27s) +2026-07-05T01:36:28.9439532Z === RUN TestUpdateCommand_IdempotentReapply +2026-07-05T01:36:28.9469188Z ───� External Update ───� +2026-07-05T01:36:28.9469868Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9470587Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9471064Z [INFO] Environment: dev +2026-07-05T01:36:28.9471540Z [INFO] SHA: sha1 +2026-07-05T01:36:28.9471976Z [INFO] Version: v1.0.0 +2026-07-05T01:36:28.9472556Z [INFO] Updated external state for cdk in dev +2026-07-05T01:36:28.9473176Z [INFO] State committed and pushed +2026-07-05T01:36:28.9473741Z ───� External Update ───� +2026-07-05T01:36:28.9474308Z [INFO] Source repo: org/cdk-infra +2026-07-05T01:36:28.9474827Z [INFO] Deploy: cdk +2026-07-05T01:36:28.9475301Z [INFO] Environment: dev +2026-07-05T01:36:28.9475808Z [INFO] SHA: sha2 +2026-07-05T01:36:28.9476253Z [INFO] Version: v2.0.0 +2026-07-05T01:36:28.9476819Z [INFO] Updated external state for cdk in dev +2026-07-05T01:36:28.9477425Z [INFO] State committed and pushed +2026-07-05T01:36:28.9478014Z --- PASS: TestUpdateCommand_IdempotentReapply (0.21s) +2026-07-05T01:36:28.9478501Z PASS +2026-07-05T01:36:28.9478839Z coverage: 80.7% of statements +2026-07-05T01:36:28.9479589Z ok github.com/stablekernel/cascade/internal/external 7.132s coverage: 80.7% of statements +2026-07-05T01:36:28.9480666Z === RUN TestEnumerateRuns_BoundaryClusterFullyCaptured +2026-07-05T01:36:28.9481313Z === PAUSE TestEnumerateRuns_BoundaryClusterFullyCaptured +2026-07-05T01:36:28.9481926Z === RUN TestEnumerateRuns_CapOverflowFailsClosed +2026-07-05T01:36:28.9482505Z === PAUSE TestEnumerateRuns_CapOverflowFailsClosed +2026-07-05T01:36:28.9483393Z === RUN TestEnumerateRuns_DedupesAcrossPages +2026-07-05T01:36:28.9484142Z === PAUSE TestEnumerateRuns_DedupesAcrossPages +2026-07-05T01:36:28.9484745Z === RUN TestEnumerateRuns_UnpageableClusterFailsClosed +2026-07-05T01:36:28.9485367Z === PAUSE TestEnumerateRuns_UnpageableClusterFailsClosed +2026-07-05T01:36:28.9485944Z === RUN TestEnumerateRuns_StopsAtWindowStart +2026-07-05T01:36:28.9486462Z === PAUSE TestEnumerateRuns_StopsAtWindowStart +2026-07-05T01:36:28.9486949Z === RUN TestReconcile +2026-07-05T01:36:28.9487315Z === PAUSE TestReconcile +2026-07-05T01:36:28.9487727Z === RUN TestFormatReport_FailIsLoud +2026-07-05T01:36:28.9488206Z === PAUSE TestFormatReport_FailIsLoud +2026-07-05T01:36:28.9488759Z === CONT TestEnumerateRuns_BoundaryClusterFullyCaptured +2026-07-05T01:36:28.9489462Z --- PASS: TestEnumerateRuns_BoundaryClusterFullyCaptured (0.00s) +2026-07-05T01:36:28.9520968Z === CONT TestEnumerateRuns_StopsAtWindowStart +2026-07-05T01:36:28.9521519Z === CONT TestReconcile +2026-07-05T01:36:28.9522055Z --- PASS: TestEnumerateRuns_StopsAtWindowStart (0.00s) +2026-07-05T01:36:28.9522753Z === CONT TestEnumerateRuns_CapOverflowFailsClosed +2026-07-05T01:36:28.9523371Z === RUN TestReconcile/all_registered_and_matched_passes +2026-07-05T01:36:28.9524012Z === PAUSE TestReconcile/all_registered_and_matched_passes +2026-07-05T01:36:28.9524657Z === CONT TestEnumerateRuns_UnpageableClusterFailsClosed +2026-07-05T01:36:28.9525282Z === RUN TestReconcile/unregistered_failure_fails_the_gate +2026-07-05T01:36:28.9525904Z === PAUSE TestReconcile/unregistered_failure_fails_the_gate +2026-07-05T01:36:28.9526570Z --- PASS: TestEnumerateRuns_UnpageableClusterFailsClosed (0.00s) +2026-07-05T01:36:28.9527372Z === RUN TestReconcile/registered_expected-failure_that_failed_passes +2026-07-05T01:36:28.9528048Z === CONT TestEnumerateRuns_DedupesAcrossPages +2026-07-05T01:36:28.9528736Z === PAUSE TestReconcile/registered_expected-failure_that_failed_passes +2026-07-05T01:36:28.9529530Z === RUN TestReconcile/registered_expected-success_that_failed_fails +2026-07-05T01:36:28.9530741Z --- PASS: TestEnumerateRuns_DedupesAcrossPages (0.00s) +2026-07-05T01:36:28.9531450Z === PAUSE TestReconcile/registered_expected-success_that_failed_fails +2026-07-05T01:36:28.9532095Z === CONT TestFormatReport_FailIsLoud +2026-07-05T01:36:28.9532743Z === RUN TestReconcile/registered_expected-failure_that_succeeded_fails +2026-07-05T01:36:28.9533565Z === PAUSE TestReconcile/registered_expected-failure_that_succeeded_fails +2026-07-05T01:36:28.9534350Z === RUN TestReconcile/unregistered_success_and_skipped_are_benign +2026-07-05T01:36:28.9534993Z --- PASS: TestFormatReport_FailIsLoud (0.00s) +2026-07-05T01:36:28.9535648Z === PAUSE TestReconcile/unregistered_success_and_skipped_are_benign +2026-07-05T01:36:28.9536475Z === RUN TestReconcile/cancelled_superseded_by_later_registered_run_is_benign +2026-07-05T01:36:28.9537365Z === PAUSE TestReconcile/cancelled_superseded_by_later_registered_run_is_benign +2026-07-05T01:36:28.9538108Z === RUN TestReconcile/cancelled_with_no_superseder_fails +2026-07-05T01:36:28.9538737Z === PAUSE TestReconcile/cancelled_with_no_superseder_fails +2026-07-05T01:36:28.9539356Z === RUN TestReconcile/failure_is_never_treated_as_superseded +2026-07-05T01:36:28.9540205Z --- PASS: TestEnumerateRuns_CapOverflowFailsClosed (0.00s) +2026-07-05T01:36:28.9540917Z === PAUSE TestReconcile/failure_is_never_treated_as_superseded +2026-07-05T01:36:28.9541693Z === RUN TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored +2026-07-05T01:36:28.9542565Z === PAUSE TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored +2026-07-05T01:36:28.9543343Z === RUN TestReconcile/in-flight_unregistered_run_is_not_a_gap +2026-07-05T01:36:28.9544046Z === PAUSE TestReconcile/in-flight_unregistered_run_is_not_a_gap +2026-07-05T01:36:28.9544723Z === CONT TestReconcile/all_registered_and_matched_passes +2026-07-05T01:36:28.9545493Z === CONT TestReconcile/cancelled_superseded_by_later_registered_run_is_benign +2026-07-05T01:36:28.9546621Z === CONT TestReconcile/registered_expected-failure_that_succeeded_fails +2026-07-05T01:36:28.9547444Z === CONT TestReconcile/registered_expected-success_that_failed_fails +2026-07-05T01:36:28.9548211Z === CONT TestReconcile/in-flight_unregistered_run_is_not_a_gap +2026-07-05T01:36:28.9549039Z === CONT TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored +2026-07-05T01:36:28.9549812Z === CONT TestReconcile/failure_is_never_treated_as_superseded +2026-07-05T01:36:28.9570648Z === CONT TestReconcile/registered_expected-failure_that_failed_passes +2026-07-05T01:36:28.9571398Z === CONT TestReconcile/cancelled_with_no_superseder_fails +2026-07-05T01:36:28.9572115Z === CONT TestReconcile/unregistered_success_and_skipped_are_benign +2026-07-05T01:36:28.9572822Z === CONT TestReconcile/unregistered_failure_fails_the_gate +2026-07-05T01:36:28.9573386Z --- PASS: TestReconcile (0.00s) +2026-07-05T01:36:28.9574211Z --- PASS: TestReconcile/registered_expected-failure_that_succeeded_fails (0.00s) +2026-07-05T01:36:28.9575328Z --- PASS: TestReconcile/cancelled_superseded_by_later_registered_run_is_benign (0.00s) +2026-07-05T01:36:28.9576306Z --- PASS: TestReconcile/all_registered_and_matched_passes (0.00s) +2026-07-05T01:36:28.9577228Z --- PASS: TestReconcile/registered_expected-success_that_failed_fails (0.00s) +2026-07-05T01:36:28.9578216Z --- PASS: TestReconcile/in-flight_unregistered_run_is_not_a_gap (0.00s) +2026-07-05T01:36:28.9579091Z --- PASS: TestReconcile/failure_is_never_treated_as_superseded (0.00s) +2026-07-05T01:36:28.9580317Z --- PASS: TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored (0.00s) +2026-07-05T01:36:28.9581315Z --- PASS: TestReconcile/cancelled_with_no_superseder_fails (0.00s) +2026-07-05T01:36:28.9582264Z --- PASS: TestReconcile/unregistered_success_and_skipped_are_benign (0.00s) +2026-07-05T01:36:28.9583173Z --- PASS: TestReconcile/unregistered_failure_fails_the_gate (0.00s) +2026-07-05T01:36:28.9584110Z --- PASS: TestReconcile/registered_expected-failure_that_failed_passes (0.00s) +2026-07-05T01:36:28.9585091Z PASS +2026-07-05T01:36:28.9585418Z coverage: 91.4% of statements +2026-07-05T01:36:28.9586212Z ok github.com/stablekernel/cascade/internal/fleetreconcile 1.027s coverage: 91.4% of statements +2026-07-05T01:36:28.9587431Z github.com/stablekernel/cascade/internal/fleetreconcile/cmd coverage: 0.0% of statements +2026-07-05T01:36:31.2641908Z === RUN TestActionPinsAnchorCoversManifest +2026-07-05T01:36:31.2642666Z action_pins_anchor_test.go:39: +2026-07-05T01:36:31.2643702Z Error Trace: /home/runner/work/cascade/cascade/internal/generate/action_pins_anchor_test.go:39 +2026-07-05T01:36:31.2645627Z Error: Should be empty, but was [workflows/action-pins.yml:49 actions/checkout want 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 got 9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc # v7.0.0] +2026-07-05T01:36:31.2647228Z Test: TestActionPinsAnchorCoversManifest +2026-07-05T01:36:31.2649656Z Messages: dependabot anchor refs diverge from action_pins.yaml: [workflows/action-pins.yml:49 actions/checkout want 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 got 9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc # v7.0.0] +2026-07-05T01:36:31.2651327Z --- FAIL: TestActionPinsAnchorCoversManifest (0.00s) +2026-07-05T01:36:31.2651734Z === RUN TestDefaultActionPins_MatchesPriorHardcodedTable +2026-07-05T01:36:31.2652184Z --- PASS: TestDefaultActionPins_MatchesPriorHardcodedTable (0.00s) +2026-07-05T01:36:31.2652588Z === RUN TestActionPinsManifest_EmitFlags +2026-07-05T01:36:31.2653106Z --- PASS: TestActionPinsManifest_EmitFlags (0.00s) +2026-07-05T01:36:31.2653456Z === RUN TestActionRef_DefaultTagModeUnchanged +2026-07-05T01:36:31.2653818Z --- PASS: TestActionRef_DefaultTagModeUnchanged (0.00s) +2026-07-05T01:36:31.2654199Z === RUN TestActionRef_ExplicitTagModeMatchesDefault +2026-07-05T01:36:31.2654596Z --- PASS: TestActionRef_ExplicitTagModeMatchesDefault (0.00s) +2026-07-05T01:36:31.2655002Z === RUN TestActionRef_SHAModePinsEveryActionWithComment +2026-07-05T01:36:31.2655705Z --- PASS: TestActionRef_SHAModePinsEveryActionWithComment (0.00s) +2026-07-05T01:36:31.2656149Z === RUN TestActionRef_ActionPinsOverrideRegardlessOfMode +2026-07-05T01:36:31.2656570Z --- PASS: TestActionRef_ActionPinsOverrideRegardlessOfMode (0.00s) +2026-07-05T01:36:31.2656969Z === RUN TestActionRef_EmptyOverrideFallsThrough +2026-07-05T01:36:31.2657334Z --- PASS: TestActionRef_EmptyOverrideFallsThrough (0.00s) +2026-07-05T01:36:31.2657697Z === RUN TestActionRef_UnknownActionPassthrough +2026-07-05T01:36:31.2658074Z --- PASS: TestActionRef_UnknownActionPassthrough (0.00s) +2026-07-05T01:36:31.2658420Z === RUN TestActionRef_NilConfigSafe +2026-07-05T01:36:31.2658730Z --- PASS: TestActionRef_NilConfigSafe (0.00s) +2026-07-05T01:36:31.2659037Z === RUN TestCLISetupRef +2026-07-05T01:36:31.2659341Z === RUN TestCLISetupRef/tag_default_when_cli_version_unset +2026-07-05T01:36:31.2659709Z === RUN TestCLISetupRef/explicit_tag_in_tag_mode +2026-07-05T01:36:31.2660617Z === RUN TestCLISetupRef/sha_mode_with_sha_set_emits_sha_and_version_comment +2026-07-05T01:36:31.2661099Z === RUN TestCLISetupRef/sha_mode_without_sha_falls_back_to_tag +2026-07-05T01:36:31.2661476Z === RUN TestCLISetupRef/tag_mode_ignores_a_set_sha +2026-07-05T01:36:31.2661891Z === RUN TestCLISetupRef/beta_opts_into_master_regardless_of_pin_mode +2026-07-05T01:36:31.2662274Z --- PASS: TestCLISetupRef (0.00s) +2026-07-05T01:36:31.2662707Z --- PASS: TestCLISetupRef/tag_default_when_cli_version_unset (0.00s) +2026-07-05T01:36:31.2663208Z --- PASS: TestCLISetupRef/explicit_tag_in_tag_mode (0.00s) +2026-07-05T01:36:31.2663767Z --- PASS: TestCLISetupRef/sha_mode_with_sha_set_emits_sha_and_version_comment (0.00s) +2026-07-05T01:36:31.2664367Z --- PASS: TestCLISetupRef/sha_mode_without_sha_falls_back_to_tag (0.00s) +2026-07-05T01:36:31.2664877Z --- PASS: TestCLISetupRef/tag_mode_ignores_a_set_sha (0.00s) +2026-07-05T01:36:31.2665416Z --- PASS: TestCLISetupRef/beta_opts_into_master_regardless_of_pin_mode (0.00s) +2026-07-05T01:36:31.2666052Z === RUN TestPinPolicy_E2E_SelfActionSHAPinned +2026-07-05T01:36:31.2666416Z --- PASS: TestPinPolicy_E2E_SelfActionSHAPinned (0.01s) +2026-07-05T01:36:31.2666792Z === RUN TestPinPolicy_E2E_OrchestrateEmitsPinnedRefs +2026-07-05T01:36:31.2667193Z --- PASS: TestPinPolicy_E2E_OrchestrateEmitsPinnedRefs (0.01s) +2026-07-05T01:36:31.2667579Z === RUN TestGetCLIRef_DefaultIsPinnedNotMutable +2026-07-05T01:36:31.2667970Z --- PASS: TestGetCLIRef_DefaultIsPinnedNotMutable (0.01s) +2026-07-05T01:36:31.2668335Z === RUN TestPinPolicy_E2E_Deterministic +2026-07-05T01:36:31.2668652Z --- PASS: TestPinPolicy_E2E_Deterministic (0.01s) +2026-07-05T01:36:31.2669012Z === RUN TestPinPolicy_E2E_TagModeDefaultUnchanged +2026-07-05T01:36:31.2669396Z --- PASS: TestPinPolicy_E2E_TagModeDefaultUnchanged (0.01s) +2026-07-05T01:36:31.2669781Z === RUN TestReleaseGenerator_NoAppTokenByDefault +2026-07-05T01:36:31.2670368Z --- PASS: TestReleaseGenerator_NoAppTokenByDefault (0.00s) +2026-07-05T01:36:31.2670795Z === RUN TestReleaseGenerator_ReleaseAppTokenMints +2026-07-05T01:36:31.2671176Z --- PASS: TestReleaseGenerator_ReleaseAppTokenMints (0.00s) +2026-07-05T01:36:31.2671546Z === RUN TestReleaseGenerator_StateAppTokenMints +2026-07-05T01:36:31.2671907Z --- PASS: TestReleaseGenerator_StateAppTokenMints (0.00s) +2026-07-05T01:36:31.2672315Z === RUN TestMintStep_FallbackPrefersConfiguredStaticToken +2026-07-05T01:36:31.2672775Z --- PASS: TestMintStep_FallbackPrefersConfiguredStaticToken (0.00s) +2026-07-05T01:36:31.2673185Z === RUN TestResolveTokenRef_OffStateIdentity +2026-07-05T01:36:31.2673545Z --- PASS: TestResolveTokenRef_OffStateIdentity (0.00s) +2026-07-05T01:36:31.2673940Z === RUN TestReleaseGenerator_ReleaseTokenDefaultsToStateToken +2026-07-05T01:36:31.2674405Z --- PASS: TestReleaseGenerator_ReleaseTokenDefaultsToStateToken (0.00s) +2026-07-05T01:36:31.2674873Z === RUN TestReleaseGenerator_BothTokensUnsetKeepsGithubToken +2026-07-05T01:36:31.2675322Z --- PASS: TestReleaseGenerator_BothTokensUnsetKeepsGithubToken (0.00s) +2026-07-05T01:36:31.2675872Z === RUN TestMintStepIndentation +2026-07-05T01:36:31.2676182Z --- PASS: TestMintStepIndentation (0.00s) +2026-07-05T01:36:31.2676510Z === RUN TestAppTokenSource_Actionlint +2026-07-05T01:36:31.2676939Z app_token_source_test.go:164: actionlint not installed +2026-07-05T01:36:31.2677303Z --- SKIP: TestAppTokenSource_Actionlint (0.00s) +2026-07-05T01:36:31.2677621Z === RUN TestAnyAutoCommits_Build +2026-07-05T01:36:31.2677909Z --- PASS: TestAnyAutoCommits_Build (0.00s) +2026-07-05T01:36:31.2678218Z === RUN TestAnyAutoCommits_Deploy +2026-07-05T01:36:31.2678505Z --- PASS: TestAnyAutoCommits_Deploy (0.00s) +2026-07-05T01:36:31.2678818Z === RUN TestAnyAutoCommits_None +2026-07-05T01:36:31.2679097Z --- PASS: TestAnyAutoCommits_None (0.00s) +2026-07-05T01:36:31.2679460Z === RUN TestManifestUpdateStep_AutoCommitsReResolvesHEAD +2026-07-05T01:36:31.2679896Z --- PASS: TestManifestUpdateStep_AutoCommitsReResolvesHEAD (0.00s) +2026-07-05T01:36:31.2680515Z === RUN TestManifestUpdateStep_NoAutoCommits_NoReResolve +2026-07-05T01:36:31.2680948Z --- PASS: TestManifestUpdateStep_NoAutoCommits_NoReResolve (0.00s) +2026-07-05T01:36:31.2681405Z === RUN TestOrchestrate_TopLevelPermissions_ExcludesCallbackScopes +2026-07-05T01:36:31.2681903Z --- PASS: TestOrchestrate_TopLevelPermissions_ExcludesCallbackScopes (0.00s) +2026-07-05T01:36:31.2682409Z === RUN TestOrchestrate_CallbackJobPermissions_CarryDeclaredScopes +2026-07-05T01:36:31.2682888Z --- PASS: TestOrchestrate_CallbackJobPermissions_CarryDeclaredScopes (0.03s) +2026-07-05T01:36:31.2683394Z === RUN TestOrchestrate_TopLevelPermissions_NoCallbackPermsByteIdentical +2026-07-05T01:36:31.2683940Z --- PASS: TestOrchestrate_TopLevelPermissions_NoCallbackPermsByteIdentical (0.00s) +2026-07-05T01:36:31.2684442Z === RUN TestPromote_TopLevelPermissions_ExcludesCallbackScopes +2026-07-05T01:36:31.2684897Z --- PASS: TestPromote_TopLevelPermissions_ExcludesCallbackScopes (0.00s) +2026-07-05T01:36:31.2685366Z === RUN TestRollback_TopLevelPermissions_ExcludesCallbackScopes +2026-07-05T01:36:31.2686017Z --- PASS: TestRollback_TopLevelPermissions_ExcludesCallbackScopes (0.00s) +2026-07-05T01:36:31.2686454Z === RUN TestFinalizeRunsOnCancelledPredecessor +2026-07-05T01:36:31.2686842Z --- PASS: TestFinalizeRunsOnCancelledPredecessor (0.00s) +2026-07-05T01:36:31.2687200Z === RUN TestFailureCheckMatchesCancelled +2026-07-05T01:36:31.2687528Z --- PASS: TestFailureCheckMatchesCancelled (0.00s) +2026-07-05T01:36:31.2687892Z === RUN TestOnFailureContinueEmitsContinueOnError +2026-07-05T01:36:31.2688289Z --- PASS: TestOnFailureContinueEmitsContinueOnError (0.00s) +2026-07-05T01:36:31.2688684Z === RUN TestDefaultCallbackOmitsContinueOnError +2026-07-05T01:36:31.2689059Z --- PASS: TestDefaultCallbackOmitsContinueOnError (0.00s) +2026-07-05T01:36:31.2689441Z === RUN TestGeneratedWorkflow_PreflightCommandValid +2026-07-05T01:36:31.2689830Z --- PASS: TestGeneratedWorkflow_PreflightCommandValid (0.00s) +2026-07-05T01:36:31.2690485Z === RUN TestGeneratedWorkflow_FinalizeCommandValid +2026-07-05T01:36:31.2690881Z --- PASS: TestGeneratedWorkflow_FinalizeCommandValid (0.00s) +2026-07-05T01:36:31.2691286Z === RUN TestGeneratedWorkflow_PromoteJobNoDirectCLICall +2026-07-05T01:36:31.2691701Z --- PASS: TestGeneratedWorkflow_PromoteJobNoDirectCLICall (0.00s) +2026-07-05T01:36:31.2692090Z === RUN TestGeneratedWorkflow_ValidCLISubcommands +2026-07-05T01:36:31.2692457Z --- PASS: TestGeneratedWorkflow_ValidCLISubcommands (0.00s) +2026-07-05T01:36:31.2692798Z === RUN TestPromoteJobStepName +2026-07-05T01:36:31.2693082Z --- PASS: TestPromoteJobStepName (0.00s) +2026-07-05T01:36:31.2693521Z === RUN TestGeneratedWorkflow_NoOrphanedFlags +2026-07-05T01:36:31.2693955Z --- PASS: TestGeneratedWorkflow_NoOrphanedFlags (0.00s) +2026-07-05T01:36:31.2694459Z === RUN TestGeneratedWorkflow_PromotePreflightStructure +2026-07-05T01:36:31.2695147Z --- PASS: TestGeneratedWorkflow_PromotePreflightStructure (0.00s) +2026-07-05T01:36:31.2695818Z === RUN TestGeneratedWorkflow_PromoteFinalizeStructure +2026-07-05T01:36:31.2696675Z --- PASS: TestGeneratedWorkflow_PromoteFinalizeStructure (0.00s) +2026-07-05T01:36:31.2697374Z === RUN TestGeneratedWorkflow_PreflightNoInvalidFlags +2026-07-05T01:36:31.2697772Z --- PASS: TestGeneratedWorkflow_PreflightNoInvalidFlags (0.00s) +2026-07-05T01:36:31.2698417Z === RUN TestGeneratedWorkflow_ChangelogCommandValid +2026-07-05T01:36:31.2698917Z --- PASS: TestGeneratedWorkflow_ChangelogCommandValid (0.00s) +2026-07-05T01:36:31.2699261Z === RUN TestNewCommand +2026-07-05T01:36:31.2699553Z --- PASS: TestNewCommand (0.00s) +2026-07-05T01:36:31.2699893Z === RUN TestRunGenerateWorkflow_ValidateOnly +2026-07-05T01:36:31.2701396Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2702452Z Config is valid +2026-07-05T01:36:31.2702774Z --- PASS: TestRunGenerateWorkflow_ValidateOnly (0.00s) +2026-07-05T01:36:31.2703217Z === RUN TestRunGenerateWorkflow_DryRun +2026-07-05T01:36:31.2704229Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2705243Z === orchestrate.yaml === +2026-07-05T01:36:31.2705600Z # AUTO-GENERATED by cascade - DO NOT EDIT MANUALLY +2026-07-05T01:36:31.2706309Z # Regenerate with: cascade generate-workflow --config /tmp/TestRunGenerateWorkflow_DryRun921523106/001/manifest.yaml +2026-07-05T01:36:31.2706752Z +2026-07-05T01:36:31.2706919Z name: Orchestrate CI/CD +2026-07-05T01:36:31.2707118Z +2026-07-05T01:36:31.2707207Z on: +2026-07-05T01:36:31.2707405Z push: +2026-07-05T01:36:31.2707625Z branches: [main] +2026-07-05T01:36:31.2707961Z paths: +2026-07-05T01:36:31.2708180Z - 'src/**' +2026-07-05T01:36:31.2708409Z workflow_dispatch: +2026-07-05T01:36:31.2708734Z inputs: +2026-07-05T01:36:31.2708969Z environment: +2026-07-05T01:36:31.2709654Z description: 'Target environment' +2026-07-05T01:36:31.2709968Z type: choice +2026-07-05T01:36:31.2710407Z options: +2026-07-05T01:36:31.2710636Z - dev +2026-07-05T01:36:31.2710934Z default: 'dev' +2026-07-05T01:36:31.2711228Z dry_run: +2026-07-05T01:36:31.2711507Z description: 'Dry run mode' +2026-07-05T01:36:31.2711919Z type: boolean +2026-07-05T01:36:31.2712171Z default: false +2026-07-05T01:36:31.2712302Z +2026-07-05T01:36:31.2712405Z concurrency: +2026-07-05T01:36:31.2712807Z group: orchestrate-${{ github.ref }} +2026-07-05T01:36:31.2713110Z cancel-in-progress: true +2026-07-05T01:36:31.2713270Z +2026-07-05T01:36:31.2713361Z permissions: +2026-07-05T01:36:31.2713573Z contents: read +2026-07-05T01:36:31.2713794Z actions: read +2026-07-05T01:36:31.2713918Z +2026-07-05T01:36:31.2714002Z jobs: +2026-07-05T01:36:31.2714194Z setup: +2026-07-05T01:36:31.2714407Z name: Setup +2026-07-05T01:36:31.2714655Z runs-on: ubuntu-latest +2026-07-05T01:36:31.2714924Z timeout-minutes: 30 +2026-07-05T01:36:31.2715160Z outputs: +2026-07-05T01:36:31.2715512Z run_build_app: ${{ steps.setup.outputs.run_build_app }} +2026-07-05T01:36:31.2715959Z head_sha: ${{ steps.setup.outputs.head_sha }} +2026-07-05T01:36:31.2716380Z version: ${{ steps.setup.outputs.version }} +2026-07-05T01:36:31.2716836Z previous_tag: ${{ steps.setup.outputs.previous_tag }} +2026-07-05T01:36:31.2717358Z changelog_base_sha: ${{ steps.setup.outputs.changelog_base_sha }} +2026-07-05T01:36:31.2717886Z base_build_app: ${{ steps.setup.outputs.base_build_app }} +2026-07-05T01:36:31.2718224Z steps: +2026-07-05T01:36:31.2718482Z - uses: actions/checkout@v7 +2026-07-05T01:36:31.2718755Z with: +2026-07-05T01:36:31.2719019Z fetch-depth: 0 +2026-07-05T01:36:31.2719284Z - name: Setup CLI +2026-07-05T01:36:31.2719716Z uses: stablekernel/cascade/.github/actions/setup-cli@v0.1.0 +2026-07-05T01:36:31.2720508Z with: +2026-07-05T01:36:31.2720830Z token: ${{ secrets.GITHUB_TOKEN }} +2026-07-05T01:36:31.2721168Z version: v0.1.0 +2026-07-05T01:36:31.2721431Z - name: Run Setup +2026-07-05T01:36:31.2721675Z id: setup +2026-07-05T01:36:31.2721907Z env: +2026-07-05T01:36:31.2722344Z ENVIRONMENT: ${{ github.event.inputs.environment || 'dev' }} +2026-07-05T01:36:31.2722712Z run: | +2026-07-05T01:36:31.2723008Z cascade orchestrate setup \ +2026-07-05T01:36:31.2723393Z --environment "$ENVIRONMENT" \ +2026-07-05T01:36:31.2723763Z --config manifest.yaml \ +2026-07-05T01:36:31.2724080Z --gha-output +2026-07-05T01:36:31.2724229Z +2026-07-05T01:36:31.2724329Z build-app: +2026-07-05T01:36:31.2724554Z name: Build (app) +2026-07-05T01:36:31.2724789Z needs: [setup] +2026-07-05T01:36:31.2725006Z if: | +2026-07-05T01:36:31.2725309Z needs.setup.outputs.run_build_app == 'true' +2026-07-05T01:36:31.2725676Z uses: ./.github/workflows/build.yaml +2026-07-05T01:36:31.2725954Z with: +2026-07-05T01:36:31.2726325Z environment: ${{ github.event.inputs.environment || 'dev' }} +2026-07-05T01:36:31.2726584Z +2026-07-05T01:36:31.2726679Z finalize: +2026-07-05T01:36:31.2726895Z name: Finalize +2026-07-05T01:36:31.2727148Z needs: [setup, build-app] +2026-07-05T01:36:31.2727485Z if: always() && needs.setup.result == 'success' +2026-07-05T01:36:31.2727826Z runs-on: ubuntu-latest +2026-07-05T01:36:31.2728093Z timeout-minutes: 30 +2026-07-05T01:36:31.2728342Z permissions: +2026-07-05T01:36:31.2728595Z contents: write +2026-07-05T01:36:31.2728827Z outputs: +2026-07-05T01:36:31.2729180Z app_image_tag: ${{ needs.build-app.outputs.image_tag }} +2026-07-05T01:36:31.2729510Z steps: +2026-07-05T01:36:31.2729766Z - uses: actions/checkout@v7 +2026-07-05T01:36:31.2730249Z with: +2026-07-05T01:36:31.2730505Z fetch-depth: 0 +2026-07-05T01:36:31.2730793Z - name: Generate Summary +2026-07-05T01:36:31.2731197Z run: | +2026-07-05T01:36:31.2731631Z echo "## Orchestration Complete" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2732075Z echo "" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2732572Z echo "### Callback Results" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2733150Z echo "| Callback | Result | On Failure |" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2733748Z echo "|----------|--------|------------|" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2734442Z echo "| Build (app) | ${{ needs.build-app.result }} | abort |" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2734969Z echo "" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2735404Z echo "### Outputs" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2735760Z HAS_OUTPUTS=false +2026-07-05T01:36:31.2736253Z if [[ -n "${{ needs.build-app.outputs.image_tag }}" ]]; then +2026-07-05T01:36:31.2736757Z if [[ "$HAS_OUTPUTS" == "false" ]]; then +2026-07-05T01:36:31.2737303Z echo "| Output | Value |" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2737852Z echo "|--------|-------|" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2738229Z HAS_OUTPUTS=true +2026-07-05T01:36:31.2738503Z fi +2026-07-05T01:36:31.2739155Z echo "| app_image_tag | ${{ needs.build-app.outputs.image_tag }} |" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2739608Z fi +2026-07-05T01:36:31.2739939Z if [[ "$HAS_OUTPUTS" == "false" ]]; then +2026-07-05T01:36:31.2740652Z echo "_No outputs produced_" >> "$GITHUB_STEP_SUMMARY" +2026-07-05T01:36:31.2740988Z fi +2026-07-05T01:36:31.2741231Z - name: Setup CLI +2026-07-05T01:36:31.2741683Z uses: stablekernel/cascade/.github/actions/setup-cli@v0.1.0 +2026-07-05T01:36:31.2742035Z with: +2026-07-05T01:36:31.2742348Z token: ${{ secrets.GITHUB_TOKEN }} +2026-07-05T01:36:31.2742830Z version: v0.1.0 +2026-07-05T01:36:31.2743132Z - name: Generate Changelog +2026-07-05T01:36:31.2743414Z id: changelog +2026-07-05T01:36:31.2743643Z env: +2026-07-05T01:36:31.2743961Z GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} +2026-07-05T01:36:31.2744268Z run: | +2026-07-05T01:36:31.2744696Z # Use changelog_base_sha which compares this env to next env +2026-07-05T01:36:31.2745396Z # This shows commits in this env NOT yet promoted to next env +2026-07-05T01:36:31.2745910Z RESULT=$(cascade generate-changelog \ +2026-07-05T01:36:31.2746530Z --base-sha "${{ needs.setup.outputs.changelog_base_sha }}" \ +2026-07-05T01:36:31.2747105Z --head-sha "${{ needs.setup.outputs.head_sha }}" \ +2026-07-05T01:36:31.2747556Z --repo "${{ github.repository }}") +2026-07-05T01:36:31.2747985Z echo "changelog<> "$GITHUB_OUTPUT" +2026-07-05T01:36:31.2748474Z echo "$RESULT" | jq -r '.changelog' >> "$GITHUB_OUTPUT" +2026-07-05T01:36:31.2748900Z echo "EOF" >> "$GITHUB_OUTPUT" +2026-07-05T01:36:31.2749214Z - name: Manage Release +2026-07-05T01:36:31.2749559Z uses: ./.github/actions/manage-release +2026-07-05T01:36:31.2749845Z with: +2026-07-05T01:36:31.2750388Z repo: ${{ github.repository }} +2026-07-05T01:36:31.2750729Z action: update +2026-07-05T01:36:31.2751093Z tag: ${{ needs.setup.outputs.version }} +2026-07-05T01:36:31.2751441Z create_tag: 'true' +2026-07-05T01:36:31.2751912Z environment: ${{ github.event.inputs.environment || 'dev' }} +2026-07-05T01:36:31.2752392Z sha: ${{ needs.setup.outputs.head_sha }} +2026-07-05T01:36:31.2752879Z changelog: ${{ steps.changelog.outputs.changelog }} +2026-07-05T01:36:31.2753401Z previous_tag: ${{ needs.setup.outputs.previous_tag }} +2026-07-05T01:36:31.2753838Z token: ${{ secrets.GITHUB_TOKEN }} +2026-07-05T01:36:31.2754158Z - name: Update Manifest +2026-07-05T01:36:31.2754494Z env: +2026-07-05T01:36:31.2755079Z GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} +2026-07-05T01:36:31.2755635Z HEAD_SHA: ${{ needs.setup.outputs.head_sha }} +2026-07-05T01:36:31.2767877Z VERSION: ${{ needs.setup.outputs.version }} +2026-07-05T01:36:31.2768454Z ENVIRONMENT: ${{ github.event.inputs.environment || 'dev' }} +2026-07-05T01:36:31.2768824Z run: | +2026-07-05T01:36:31.2769132Z MANIFEST_FILE="manifest.yaml" +2026-07-05T01:36:31.2769455Z MANIFEST_KEY="ci" +2026-07-05T01:36:31.2769806Z if [[ ! -f "$MANIFEST_FILE" ]]; then +2026-07-05T01:36:31.2770549Z echo "No $MANIFEST_FILE found - skipping state update" +2026-07-05T01:36:31.2770911Z exit 0 +2026-07-05T01:36:31.2771130Z fi +2026-07-05T01:36:31.2771339Z +2026-07-05T01:36:31.2771681Z git config user.name "github-actions[bot]" +2026-07-05T01:36:31.2772251Z git config user.email "github-actions[bot]@users.noreply.github.com" +2026-07-05T01:36:31.2772762Z BRANCH="${GITHUB_REF##refs/heads/}" +2026-07-05T01:36:31.2773043Z +2026-07-05T01:36:31.2773297Z apply_state_edits() { +2026-07-05T01:36:31.2773693Z TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ) +2026-07-05T01:36:31.2774233Z # Update environment-level state (committed, not deployed) +2026-07-05T01:36:31.2774959Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.sha = \"$HEAD_SHA\"" "$MANIFEST_FILE" +2026-07-05T01:36:31.2775754Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.version = \"$VERSION\"" "$MANIFEST_FILE" +2026-07-05T01:36:31.2776850Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.committed_at = \"$TIMESTAMP\"" "$MANIFEST_FILE" +2026-07-05T01:36:31.2777773Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.committed_by = \"${{ github.actor }}\"" "$MANIFEST_FILE" +2026-07-05T01:36:31.2778242Z } +2026-07-05T01:36:31.2778440Z +2026-07-05T01:36:31.2779049Z if [[ "$GITHUB_SERVER_URL" != "https://github.com" ]]; then +2026-07-05T01:36:31.2779699Z # act/gitea e2e: no GitHub API, and the trunk is neither protected nor +2026-07-05T01:36:31.2780568Z # signature-checked, so push the state commit directly with retries. +2026-07-05T01:36:31.2781044Z for attempt in 1 2 3 4 5; do +2026-07-05T01:36:31.2781417Z git fetch origin "$BRANCH" +2026-07-05T01:36:31.2781815Z git reset --hard "origin/$BRANCH" +2026-07-05T01:36:31.2782172Z apply_state_edits +2026-07-05T01:36:31.2782602Z if git diff --quiet "$MANIFEST_FILE"; then +2026-07-05T01:36:31.2783025Z echo "No state changes" +2026-07-05T01:36:31.2783333Z exit 0 +2026-07-05T01:36:31.2783575Z fi +2026-07-05T01:36:31.2783893Z git add "$MANIFEST_FILE" +2026-07-05T01:36:31.2784470Z git commit -m "chore: update state for $ENVIRONMENT [skip ci]" +2026-07-05T01:36:31.2785119Z if git push origin "HEAD:$BRANCH"; then +2026-07-05T01:36:31.2785724Z echo "Pushed state on attempt $attempt" +2026-07-05T01:36:31.2786077Z exit 0 +2026-07-05T01:36:31.2786317Z fi +2026-07-05T01:36:31.2786931Z echo "Push attempt $attempt rejected (likely concurrent run); retrying..." >&2 +2026-07-05T01:36:31.2787445Z sleep $((RANDOM % 5 + 2)) +2026-07-05T01:36:31.2787728Z done +2026-07-05T01:36:31.2788232Z echo "::error::Failed to push state after 5 attempts" >&2 +2026-07-05T01:36:31.2788594Z exit 1 +2026-07-05T01:36:31.2788818Z fi +2026-07-05T01:36:31.2789027Z +2026-07-05T01:36:31.2789514Z # Real GitHub: write state through the Contents REST API. API commits are +2026-07-05T01:36:31.2790350Z # signed by GitHub (Verified) and, with a bypass-capable token, update the +2026-07-05T01:36:31.2790929Z # trunk even when a required status check protects it. +2026-07-05T01:36:31.2791346Z for attempt in 1 2 3 4 5; do +2026-07-05T01:36:31.2791868Z git fetch origin "$BRANCH" +2026-07-05T01:36:31.2792243Z git reset --hard "origin/$BRANCH" +2026-07-05T01:36:31.2792595Z apply_state_edits +2026-07-05T01:36:31.2792995Z if git diff --quiet "$MANIFEST_FILE"; then +2026-07-05T01:36:31.2793389Z echo "No state changes" +2026-07-05T01:36:31.2793681Z exit 0 +2026-07-05T01:36:31.2793912Z fi +2026-07-05T01:36:31.2794561Z CONTENT_B64=$(base64 -w0 "$MANIFEST_FILE" 2>/dev/null || base64 "$MANIFEST_FILE" | tr -d '\n') +2026-07-05T01:36:31.2795629Z CURRENT_SHA=$(gh api "repos/${{ github.repository }}/contents/$MANIFEST_FILE?ref=$BRANCH" --jq '.sha' 2>/dev/null || true) +2026-07-05T01:36:31.2796481Z API_ARGS=("repos/${{ github.repository }}/contents/$MANIFEST_FILE" -X PUT +2026-07-05T01:36:31.2797147Z -f "message=chore: update state for $ENVIRONMENT [skip ci]" +2026-07-05T01:36:31.2797621Z -f "content=$CONTENT_B64" +2026-07-05T01:36:31.2797975Z -f "branch=$BRANCH" +2026-07-05T01:36:31.2798397Z -f "author[name]=github-actions[bot]" +2026-07-05T01:36:31.2799000Z -f "author[email]=github-actions[bot]@users.noreply.github.com" +2026-07-05T01:36:31.2799542Z -f "committer[name]=github-actions[bot]" +2026-07-05T01:36:31.2800338Z -f "committer[email]=github-actions[bot]@users.noreply.github.com") +2026-07-05T01:36:31.2800836Z if [[ -n "$CURRENT_SHA" ]]; then +2026-07-05T01:36:31.2801252Z API_ARGS+=(-f "sha=$CURRENT_SHA") +2026-07-05T01:36:31.2801547Z fi +2026-07-05T01:36:31.2801912Z if gh api "${API_ARGS[@]}" >/dev/null; then +2026-07-05T01:36:31.2802419Z echo "Pushed state via API on attempt $attempt" +2026-07-05T01:36:31.2802763Z exit 0 +2026-07-05T01:36:31.2802996Z fi +2026-07-05T01:36:31.2803728Z echo "State write attempt $attempt failed (likely concurrent run); retrying..." >&2 +2026-07-05T01:36:31.2804294Z sleep $((RANDOM % 5 + 2)) +2026-07-05T01:36:31.2804570Z done +2026-07-05T01:36:31.2805036Z echo "::error::Failed to write state via API after 5 attempts" >&2 +2026-07-05T01:36:31.2805406Z exit 1 +2026-07-05T01:36:31.2805662Z - name: Check for Failures +2026-07-05T01:36:31.2806179Z if: contains(fromJSON('["failure", "cancelled"]'), needs.build-app.result) +2026-07-05T01:36:31.2806570Z run: | +2026-07-05T01:36:31.2807002Z echo "One or more critical callbacks failed or were cancelled" +2026-07-05T01:36:31.2807360Z exit 1 +2026-07-05T01:36:31.2807608Z --- PASS: TestRunGenerateWorkflow_DryRun (0.00s) +2026-07-05T01:36:31.2807937Z === RUN TestRunGenerateWorkflow_FileExists +2026-07-05T01:36:31.2808857Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2810514Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2811508Z Generated workflow: /tmp/TestRunGenerateWorkflow_FileExists3822894224/001/output.yaml +2026-07-05T01:36:31.2812405Z Generated action: /tmp/TestRunGenerateWorkflow_FileExists3822894224/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.2813051Z --- PASS: TestRunGenerateWorkflow_FileExists (0.01s) +2026-07-05T01:36:31.2813398Z === RUN TestRunGenerateWorkflow_InvalidConfig +2026-07-05T01:36:31.2813717Z Error: builds[0]: workflow is required +2026-07-05T01:36:31.2814049Z --- PASS: TestRunGenerateWorkflow_InvalidConfig (0.00s) +2026-07-05T01:36:31.2814403Z === RUN TestRunGenerateWorkflow_ConfigNotFound +2026-07-05T01:36:31.2814773Z --- PASS: TestRunGenerateWorkflow_ConfigNotFound (0.00s) +2026-07-05T01:36:31.2815288Z === RUN TestRunGenerateWorkflow_WithCommit +2026-07-05T01:36:31.2816172Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2817254Z Generated workflow: /tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/workflows/orchestrate.yaml +2026-07-05T01:36:31.2818024Z Generated action: /tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.2819129Z Committed: [/tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/workflows/orchestrate.yaml /tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/actions/manage-release/action.yaml] +2026-07-05T01:36:31.2820138Z --- PASS: TestRunGenerateWorkflow_WithCommit (0.03s) +2026-07-05T01:36:31.2820525Z === RUN TestRunGenerateWorkflow_CommitNoChanges +2026-07-05T01:36:31.2821421Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2822503Z Generated workflow: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/workflows/orchestrate.yaml +2026-07-05T01:36:31.2823308Z Generated action: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.2824464Z Committed: [/tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/workflows/orchestrate.yaml /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/actions/manage-release/action.yaml] +2026-07-05T01:36:31.2826099Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2827197Z Generated workflow: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/workflows/orchestrate.yaml +2026-07-05T01:36:31.2828267Z Generated action: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.2828900Z No changes to commit +2026-07-05T01:36:31.2829199Z --- PASS: TestRunGenerateWorkflow_CommitNoChanges (0.04s) +2026-07-05T01:36:31.2829558Z === RUN TestRunGenerateWorkflow_WithPush +2026-07-05T01:36:31.2830695Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2831787Z Generated workflow: /tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/workflows/orchestrate.yaml +2026-07-05T01:36:31.2832582Z Generated action: /tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.2833671Z Committed: [/tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/workflows/orchestrate.yaml /tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/actions/manage-release/action.yaml] +2026-07-05T01:36:31.2834513Z --- PASS: TestRunGenerateWorkflow_WithPush (0.03s) +2026-07-05T01:36:31.2834859Z === RUN TestRunGenerateWorkflow_ExtraTriggers +2026-07-05T01:36:31.2835748Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.2836769Z Generated workflow: /tmp/TestRunGenerateWorkflow_ExtraTriggers1558086455/001/orchestrate.yaml +2026-07-05T01:36:31.2837511Z Generated action: /tmp/TestRunGenerateWorkflow_ExtraTriggers1558086455/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.2838110Z --- PASS: TestRunGenerateWorkflow_ExtraTriggers (0.01s) +2026-07-05T01:36:31.2838683Z === RUN TestCrossRepoBuildCallback_GeneratesWithoutLocalRead +2026-07-05T01:36:31.2839147Z --- PASS: TestCrossRepoBuildCallback_GeneratesWithoutLocalRead (0.00s) +2026-07-05T01:36:31.2839601Z === RUN TestCrossRepoCallback_OperatorInputsPassThrough +2026-07-05T01:36:31.2840192Z --- PASS: TestCrossRepoCallback_OperatorInputsPassThrough (0.00s) +2026-07-05T01:36:31.2840617Z === RUN TestCustomChangelog_Actionlint +2026-07-05T01:36:31.2841082Z custom_changelog_test.go:124: actionlint not installed +2026-07-05T01:36:31.2841455Z --- SKIP: TestCustomChangelog_Actionlint (0.00s) +2026-07-05T01:36:31.2841814Z === RUN TestWriteDeployStrategyOptions_NilRollout +2026-07-05T01:36:31.2842340Z --- PASS: TestWriteDeployStrategyOptions_NilRollout (0.00s) +2026-07-05T01:36:31.2842736Z === RUN TestWriteDeployStrategyOptions_MaxParallelSet +2026-07-05T01:36:31.2843133Z --- PASS: TestWriteDeployStrategyOptions_MaxParallelSet (0.00s) +2026-07-05T01:36:31.2843547Z === RUN TestWriteDeployStrategyOptions_MaxParallelUnset +2026-07-05T01:36:31.2843962Z --- PASS: TestWriteDeployStrategyOptions_MaxParallelUnset (0.00s) +2026-07-05T01:36:31.2844361Z === RUN TestWriteDeployStrategyOptions_FailFastTrue +2026-07-05T01:36:31.2844745Z --- PASS: TestWriteDeployStrategyOptions_FailFastTrue (0.00s) +2026-07-05T01:36:31.2845139Z === RUN TestWriteDeployStrategyOptions_FailFastFalse +2026-07-05T01:36:31.2845534Z --- PASS: TestWriteDeployStrategyOptions_FailFastFalse (0.00s) +2026-07-05T01:36:31.2845913Z === RUN TestWriteDeployStrategyOptions_BothSet +2026-07-05T01:36:31.2846282Z --- PASS: TestWriteDeployStrategyOptions_BothSet (0.00s) +2026-07-05T01:36:31.2846648Z === RUN TestDeployStrategy_DefaultBehaviour +2026-07-05T01:36:31.2846985Z --- PASS: TestDeployStrategy_DefaultBehaviour (0.00s) +2026-07-05T01:36:31.2847327Z === RUN TestDeployStrategy_MaxParallelEmitted +2026-07-05T01:36:31.2847671Z --- PASS: TestDeployStrategy_MaxParallelEmitted (0.00s) +2026-07-05T01:36:31.2848163Z === RUN TestDeployStrategy_RollingOneAtATime +2026-07-05T01:36:31.2848524Z --- PASS: TestDeployStrategy_RollingOneAtATime (0.00s) +2026-07-05T01:36:31.2848873Z === RUN TestDeployStrategy_FailFastTrue +2026-07-05T01:36:31.2849196Z --- PASS: TestDeployStrategy_FailFastTrue (0.00s) +2026-07-05T01:36:31.2849547Z === RUN TestDeployStrategy_FailFastFalseExplicit +2026-07-05T01:36:31.2849923Z --- PASS: TestDeployStrategy_FailFastFalseExplicit (0.00s) +2026-07-05T01:36:31.2850617Z === RUN TestDeployStrategy_MaxParallelAndFailFastCombined +2026-07-05T01:36:31.2851062Z --- PASS: TestDeployStrategy_MaxParallelAndFailFastCombined (0.00s) +2026-07-05T01:36:31.2851480Z === RUN TestDeployStrategy_MaxParallelZeroOmitted +2026-07-05T01:36:31.2851860Z --- PASS: TestDeployStrategy_MaxParallelZeroOmitted (0.00s) +2026-07-05T01:36:31.2852451Z === RUN TestDeployTargetReservedFieldsAreByteIdentical +2026-07-05T01:36:31.2852994Z === PAUSE TestDeployTargetReservedFieldsAreByteIdentical +2026-07-05T01:36:31.2853507Z === RUN TestGeneration_Deterministic_MultiEnv +2026-07-05T01:36:31.2853871Z --- PASS: TestGeneration_Deterministic_MultiEnv (0.30s) +2026-07-05T01:36:31.2854221Z === RUN TestGenerator_DefaultEmitsPushTrigger +2026-07-05T01:36:31.2854570Z --- PASS: TestGenerator_DefaultEmitsPushTrigger (0.00s) +2026-07-05T01:36:31.2854935Z === RUN TestGenerator_DispatchOnlyOmitsPushTrigger +2026-07-05T01:36:31.2855326Z --- PASS: TestGenerator_DispatchOnlyOmitsPushTrigger (0.00s) +2026-07-05T01:36:31.2855688Z === RUN TestDriftCheckGenerator_Enabled +2026-07-05T01:36:31.2856036Z === RUN TestDriftCheckGenerator_Enabled/nil_drift_check +2026-07-05T01:36:31.2856432Z === RUN TestDriftCheckGenerator_Enabled/present_but_disabled +2026-07-05T01:36:31.2856809Z === RUN TestDriftCheckGenerator_Enabled/enabled +2026-07-05T01:36:31.2857152Z --- PASS: TestDriftCheckGenerator_Enabled (0.00s) +2026-07-05T01:36:31.2857607Z --- PASS: TestDriftCheckGenerator_Enabled/nil_drift_check (0.00s) +2026-07-05T01:36:31.2858152Z --- PASS: TestDriftCheckGenerator_Enabled/present_but_disabled (0.00s) +2026-07-05T01:36:31.2858829Z --- PASS: TestDriftCheckGenerator_Enabled/enabled (0.00s) +2026-07-05T01:36:31.2859208Z === RUN TestDriftCheckGenerator_Generate_Disabled +2026-07-05T01:36:31.2859582Z --- PASS: TestDriftCheckGenerator_Generate_Disabled (0.00s) +2026-07-05T01:36:31.2859954Z === RUN TestDriftCheckGenerator_CheckJob_ReadOnly +2026-07-05T01:36:31.2860636Z --- PASS: TestDriftCheckGenerator_CheckJob_ReadOnly (0.00s) +2026-07-05T01:36:31.2861033Z === RUN TestDriftCheckGenerator_NoComment_OmitsArtifact +2026-07-05T01:36:31.2861447Z --- PASS: TestDriftCheckGenerator_NoComment_OmitsArtifact (0.00s) +2026-07-05T01:36:31.2861859Z === RUN TestDriftCheckGenerator_Comment_TrustedMetadata +2026-07-05T01:36:31.2862254Z --- PASS: TestDriftCheckGenerator_Comment_TrustedMetadata (0.00s) +2026-07-05T01:36:31.2862635Z === RUN TestDriftCheckGenerator_Deterministic +2026-07-05T01:36:31.2862988Z --- PASS: TestDriftCheckGenerator_Deterministic (0.00s) +2026-07-05T01:36:31.2863362Z === RUN TestDriftCheckGenerator_SetupCLIPassesToken +2026-07-05T01:36:31.2863769Z --- PASS: TestDriftCheckGenerator_SetupCLIPassesToken (0.00s) +2026-07-05T01:36:31.2864138Z === RUN TestDriftCheckGenerator_PinModeSHA +2026-07-05T01:36:31.2864474Z --- PASS: TestDriftCheckGenerator_PinModeSHA (0.00s) +2026-07-05T01:36:31.2864807Z === RUN TestDriftCheckGenerator_Actionlint +2026-07-05T01:36:31.2865211Z drift_check_test.go:169: actionlint not installed +2026-07-05T01:36:31.2865553Z --- SKIP: TestDriftCheckGenerator_Actionlint (0.00s) +2026-07-05T01:36:31.2865896Z === RUN TestPromote_SupportsDryRun_SingleDeploy +2026-07-05T01:36:31.2866266Z --- PASS: TestPromote_SupportsDryRun_SingleDeploy (0.00s) +2026-07-05T01:36:31.2866620Z === RUN TestPromote_NoSupportsDryRun_SingleDeploy +2026-07-05T01:36:31.2866987Z --- PASS: TestPromote_NoSupportsDryRun_SingleDeploy (0.00s) +2026-07-05T01:36:31.2867345Z === RUN TestPromote_SupportsDryRun_ProdDeploy +2026-07-05T01:36:31.2867685Z --- PASS: TestPromote_SupportsDryRun_ProdDeploy (0.00s) +2026-07-05T01:36:31.2868212Z === RUN TestPromote_SupportsDryRun_NormalRunUnaffected +2026-07-05T01:36:31.2868616Z --- PASS: TestPromote_SupportsDryRun_NormalRunUnaffected (0.00s) +2026-07-05T01:36:31.2869043Z === RUN TestOrchestrate_SupportsDryRun_WithInputPassthrough +2026-07-05T01:36:31.2869477Z --- PASS: TestOrchestrate_SupportsDryRun_WithInputPassthrough (0.00s) +2026-07-05T01:36:31.2869898Z === RUN TestOrchestrate_NoSupportsDryRun_NoDryRunInput +2026-07-05T01:36:31.2870437Z --- PASS: TestOrchestrate_NoSupportsDryRun_NoDryRunInput (0.00s) +2026-07-05T01:36:31.2870830Z === RUN TestOrchestrate_SupportsDryRun_CoercedNotBare +2026-07-05T01:36:31.2871225Z --- PASS: TestOrchestrate_SupportsDryRun_CoercedNotBare (0.00s) +2026-07-05T01:36:31.2871636Z === RUN TestOrchestrate_DispatchInputs_BooleanCoercion +2026-07-05T01:36:31.2872030Z --- PASS: TestOrchestrate_DispatchInputs_BooleanCoercion (0.00s) +2026-07-05T01:36:31.2872481Z === RUN TestEnvGate_Orchestrate_ExternalDeploy_NoJobLevelEnvironment +2026-07-05T01:36:31.2873006Z --- PASS: TestEnvGate_Orchestrate_ExternalDeploy_NoJobLevelEnvironment (0.00s) +2026-07-05T01:36:31.2873520Z === RUN TestEnvGate_Promote_ExternalSingleDeploy_NoJobLevelEnvironment +2026-07-05T01:36:31.2874037Z --- PASS: TestEnvGate_Promote_ExternalSingleDeploy_NoJobLevelEnvironment (0.00s) +2026-07-05T01:36:31.2874536Z === RUN TestEnvGate_Promote_ExternalProdDeploy_NoJobLevelEnvironment +2026-07-05T01:36:31.2875030Z --- PASS: TestEnvGate_Promote_ExternalProdDeploy_NoJobLevelEnvironment (0.00s) +2026-07-05T01:36:31.2875781Z === RUN TestEnvGate_Warning_ExternalDeployWithGHAEnvironment +2026-07-05T01:36:31.2876341Z --- PASS: TestEnvGate_Warning_ExternalDeployWithGHAEnvironment (0.00s) +2026-07-05T01:36:31.2876849Z === RUN TestEnvGate_Warning_InlineDeployWithGHAEnvironment +2026-07-05T01:36:31.2877286Z --- PASS: TestEnvGate_Warning_InlineDeployWithGHAEnvironment (0.00s) +2026-07-05T01:36:31.2877743Z === RUN TestEnvGate_Actionlint_ExternalDeployWithGHAEnvironment +2026-07-05T01:36:31.2878241Z env_gate_reusable_test.go:244: actionlint not installed +2026-07-05T01:36:31.2878849Z --- SKIP: TestEnvGate_Actionlint_ExternalDeployWithGHAEnvironment (0.00s) +2026-07-05T01:36:31.2879313Z === RUN TestEnvGates_Orchestrate_DeployJob_WithGHAEnvironment +2026-07-05T01:36:31.2879771Z --- PASS: TestEnvGates_Orchestrate_DeployJob_WithGHAEnvironment (0.00s) +2026-07-05T01:36:31.2880410Z === RUN TestEnvGates_Orchestrate_DeployJob_WithoutGHAEnvironment +2026-07-05T01:36:31.2880890Z --- PASS: TestEnvGates_Orchestrate_DeployJob_WithoutGHAEnvironment (0.00s) +2026-07-05T01:36:31.2881350Z === RUN TestEnvGates_Orchestrate_BuildJob_NoEnvironmentKey +2026-07-05T01:36:31.2881789Z --- PASS: TestEnvGates_Orchestrate_BuildJob_NoEnvironmentKey (0.00s) +2026-07-05T01:36:31.2882233Z === RUN TestEnvGates_Promote_SingleDeployJob_WithGHAEnvironment +2026-07-05T01:36:31.2882689Z --- PASS: TestEnvGates_Promote_SingleDeployJob_WithGHAEnvironment (0.00s) +2026-07-05T01:36:31.2883160Z === RUN TestEnvGates_Promote_SingleDeployJob_WithoutGHAEnvironment +2026-07-05T01:36:31.2883642Z --- PASS: TestEnvGates_Promote_SingleDeployJob_WithoutGHAEnvironment (0.00s) +2026-07-05T01:36:31.2884104Z === RUN TestEnvGates_Promote_ProdDeployJob_WithGHAEnvironment +2026-07-05T01:36:31.2884549Z --- PASS: TestEnvGates_Promote_ProdDeployJob_WithGHAEnvironment (0.00s) +2026-07-05T01:36:31.2885171Z === RUN TestEnvGates_Promote_ProdDeployJob_WithoutGHAEnvironment +2026-07-05T01:36:31.2885670Z --- PASS: TestEnvGates_Promote_ProdDeployJob_WithoutGHAEnvironment (0.00s) +2026-07-05T01:36:31.2886268Z === RUN TestEnvGates_Promote_ProdDeployJob_OnlyFinalEnvGated +2026-07-05T01:36:31.2886706Z --- PASS: TestEnvGates_Promote_ProdDeployJob_OnlyFinalEnvGated (0.00s) +2026-07-05T01:36:31.2887092Z === RUN TestEnvGates_Helper_envGHAName +2026-07-05T01:36:31.2887415Z --- PASS: TestEnvGates_Helper_envGHAName (0.00s) +2026-07-05T01:36:31.2887758Z === RUN TestEnvGates_Helper_anyEnvHasGHAConfig +2026-07-05T01:36:31.2888111Z --- PASS: TestEnvGates_Helper_anyEnvHasGHAConfig (0.00s) +2026-07-05T01:36:31.2888614Z === RUN TestClassifyInputValue +2026-07-05T01:36:31.2888913Z === RUN TestClassifyInputValue/plain_literal +2026-07-05T01:36:31.2889225Z === RUN TestClassifyInputValue/empty +2026-07-05T01:36:31.2889541Z === RUN TestClassifyInputValue/vars_passthrough +2026-07-05T01:36:31.2889899Z === RUN TestClassifyInputValue/secrets_passthrough +2026-07-05T01:36:31.2890468Z === RUN TestClassifyInputValue/env_passthrough +2026-07-05T01:36:31.2890847Z === RUN TestClassifyInputValue/dispatch_inputs_passthrough +2026-07-05T01:36:31.2891352Z === RUN TestClassifyInputValue/matrix_env_is_literal/matrix +2026-07-05T01:36:31.2891747Z === RUN TestClassifyInputValue/matrix_sha_is_literal/matrix +2026-07-05T01:36:31.2892091Z === RUN TestClassifyInputValue/state_ref +2026-07-05T01:36:31.2892407Z === RUN TestClassifyInputValue/state_version_ref +2026-07-05T01:36:31.2892755Z === RUN TestClassifyInputValue/state_nested_build_tag +2026-07-05T01:36:31.2893161Z === RUN TestClassifyInputValue/mixed_template_not_passthrough +2026-07-05T01:36:31.2893585Z === RUN TestClassifyInputValue/two_expressions_not_passthrough +2026-07-05T01:36:31.2894116Z === RUN TestClassifyInputValue/whitespace_tolerant +2026-07-05T01:36:31.2894546Z --- PASS: TestClassifyInputValue (0.00s) +2026-07-05T01:36:31.2895040Z --- PASS: TestClassifyInputValue/plain_literal (0.00s) +2026-07-05T01:36:31.2895447Z --- PASS: TestClassifyInputValue/empty (0.00s) +2026-07-05T01:36:31.2895864Z --- PASS: TestClassifyInputValue/vars_passthrough (0.00s) +2026-07-05T01:36:31.2896328Z --- PASS: TestClassifyInputValue/secrets_passthrough (0.00s) +2026-07-05T01:36:31.2896781Z --- PASS: TestClassifyInputValue/env_passthrough (0.00s) +2026-07-05T01:36:31.2897280Z --- PASS: TestClassifyInputValue/dispatch_inputs_passthrough (0.00s) +2026-07-05T01:36:31.2897824Z --- PASS: TestClassifyInputValue/matrix_env_is_literal/matrix (0.00s) +2026-07-05T01:36:31.2898356Z --- PASS: TestClassifyInputValue/matrix_sha_is_literal/matrix (0.00s) +2026-07-05T01:36:31.2898997Z --- PASS: TestClassifyInputValue/state_ref (0.00s) +2026-07-05T01:36:31.2899426Z --- PASS: TestClassifyInputValue/state_version_ref (0.00s) +2026-07-05T01:36:31.2899900Z --- PASS: TestClassifyInputValue/state_nested_build_tag (0.00s) +2026-07-05T01:36:31.2900691Z --- PASS: TestClassifyInputValue/mixed_template_not_passthrough (0.00s) +2026-07-05T01:36:31.2901271Z --- PASS: TestClassifyInputValue/two_expressions_not_passthrough (0.00s) +2026-07-05T01:36:31.2901783Z --- PASS: TestClassifyInputValue/whitespace_tolerant (0.00s) +2026-07-05T01:36:31.2902139Z === RUN TestResolveStateExpression +2026-07-05T01:36:31.2902465Z === RUN TestResolveStateExpression/state.prod.sha +2026-07-05T01:36:31.2902834Z === RUN TestResolveStateExpression/state.prod.version +2026-07-05T01:36:31.2903239Z === RUN TestResolveStateExpression/state.prod.builds.image.sha +2026-07-05T01:36:31.2903708Z === RUN TestResolveStateExpression/state.prod.builds.image.artifact_id +2026-07-05T01:36:31.2904224Z === RUN TestResolveStateExpression/state.prod.builds.image.tags.image_tag +2026-07-05T01:36:31.2904702Z === RUN TestResolveStateExpression/state.prod.deploys.app.sha +2026-07-05T01:36:31.2905136Z === RUN TestResolveStateExpression/state.prod.deploys.app.version +2026-07-05T01:36:31.2905599Z === RUN TestResolveStateExpression/state.prod.deploys.app.tags.chart +2026-07-05T01:36:31.2906024Z === RUN TestResolveStateExpression/state.missing.sha +2026-07-05T01:36:31.2906408Z === RUN TestResolveStateExpression/state.prod.builds.nope.sha +2026-07-05T01:36:31.2906847Z === RUN TestResolveStateExpression/state.prod.deploys.app.tags.nope +2026-07-05T01:36:31.2907263Z === RUN TestResolveStateExpression/state.prod.unknown +2026-07-05T01:36:31.2907611Z --- PASS: TestResolveStateExpression (0.00s) +2026-07-05T01:36:31.2908029Z --- PASS: TestResolveStateExpression/state.prod.sha (0.00s) +2026-07-05T01:36:31.2908502Z --- PASS: TestResolveStateExpression/state.prod.version (0.00s) +2026-07-05T01:36:31.2909197Z --- PASS: TestResolveStateExpression/state.prod.builds.image.sha (0.00s) +2026-07-05T01:36:31.2909832Z --- PASS: TestResolveStateExpression/state.prod.builds.image.artifact_id (0.00s) +2026-07-05T01:36:31.2910621Z --- PASS: TestResolveStateExpression/state.prod.builds.image.tags.image_tag (0.00s) +2026-07-05T01:36:31.2911247Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.sha (0.00s) +2026-07-05T01:36:31.2911843Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.version (0.00s) +2026-07-05T01:36:31.2912477Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.tags.chart (0.00s) +2026-07-05T01:36:31.2913035Z --- PASS: TestResolveStateExpression/state.missing.sha (0.00s) +2026-07-05T01:36:31.2913566Z --- PASS: TestResolveStateExpression/state.prod.builds.nope.sha (0.00s) +2026-07-05T01:36:31.2914158Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.tags.nope (0.00s) +2026-07-05T01:36:31.2914717Z --- PASS: TestResolveStateExpression/state.prod.unknown (0.00s) +2026-07-05T01:36:31.2915091Z === RUN TestResolveInputValue +2026-07-05T01:36:31.2915373Z --- PASS: TestResolveInputValue (0.00s) +2026-07-05T01:36:31.2915683Z === RUN TestLooksLikeUnwrappedExpression +2026-07-05T01:36:31.2916034Z --- PASS: TestLooksLikeUnwrappedExpression (0.00s) +2026-07-05T01:36:31.2916382Z === RUN TestExternalUpdateWorkflow_Generation +2026-07-05T01:36:31.2916747Z --- PASS: TestExternalUpdateWorkflow_Generation (0.00s) +2026-07-05T01:36:31.2917361Z === RUN TestSatelliteNotifyPrimary_Generation +2026-07-05T01:36:31.2917762Z --- PASS: TestSatelliteNotifyPrimary_Generation (0.00s) +2026-07-05T01:36:31.2918239Z === RUN TestPromoteExternalDeploys_Generation +2026-07-05T01:36:31.2918577Z --- PASS: TestPromoteExternalDeploys_Generation (0.00s) +2026-07-05T01:36:31.2918929Z === RUN TestExternalDeployStateTracking +2026-07-05T01:36:31.2919265Z --- PASS: TestExternalDeployStateTracking (0.00s) +2026-07-05T01:36:31.2919600Z === RUN TestMixedLocalAndExternalDeploys +2026-07-05T01:36:31.2919947Z --- PASS: TestMixedLocalAndExternalDeploys (0.01s) +2026-07-05T01:36:31.2920594Z === RUN TestSatelliteConfigNoExternal +2026-07-05T01:36:31.2920907Z --- PASS: TestSatelliteConfigNoExternal (0.00s) +2026-07-05T01:36:31.2921227Z === RUN TestPrimaryWithoutExternal +2026-07-05T01:36:31.2921534Z --- PASS: TestPrimaryWithoutExternal (0.00s) +2026-07-05T01:36:31.2921851Z === RUN TestExternalWorkflowResolution +2026-07-05T01:36:31.2922280Z === RUN TestExternalWorkflowResolution/workflow_with_repo_path_gets_ref_appended +2026-07-05T01:36:31.2922818Z === RUN TestExternalWorkflowResolution/workflow_already_with_ref_unchanged +2026-07-05T01:36:31.2923324Z === RUN TestExternalWorkflowResolution/local_workflow_path_uses_relative +2026-07-05T01:36:31.2923752Z --- PASS: TestExternalWorkflowResolution (0.00s) +2026-07-05T01:36:31.2924335Z --- PASS: TestExternalWorkflowResolution/workflow_with_repo_path_gets_ref_appended (0.00s) +2026-07-05T01:36:31.2925039Z --- PASS: TestExternalWorkflowResolution/workflow_already_with_ref_unchanged (0.00s) +2026-07-05T01:36:31.2925700Z --- PASS: TestExternalWorkflowResolution/local_workflow_path_uses_relative (0.00s) +2026-07-05T01:36:31.2926142Z === RUN TestRollbackJobConditions +2026-07-05T01:36:31.2926441Z --- PASS: TestRollbackJobConditions (0.00s) +2026-07-05T01:36:31.2926769Z === RUN TestExternalUpdateGenerator_NotPrimary +2026-07-05T01:36:31.2927133Z --- PASS: TestExternalUpdateGenerator_NotPrimary (0.00s) +2026-07-05T01:36:31.2927521Z === RUN TestExternalUpdateGenerator_HasConcurrencyBlock +2026-07-05T01:36:31.2927951Z --- PASS: TestExternalUpdateGenerator_HasConcurrencyBlock (0.00s) +2026-07-05T01:36:31.2928433Z === RUN TestExternalUpdateGenerator_DistinctComponentsGetDistinctGroups +2026-07-05T01:36:31.2928981Z --- PASS: TestExternalUpdateGenerator_DistinctComponentsGetDistinctGroups (0.00s) +2026-07-05T01:36:31.2929511Z === RUN TestExternalUpdateGenerator_InputsAreNotInterpolatedIntoRun +2026-07-05T01:36:31.2930263Z --- PASS: TestExternalUpdateGenerator_InputsAreNotInterpolatedIntoRun (0.00s) +2026-07-05T01:36:31.2930747Z === RUN TestExternalUpdateGenerator_ConcurrencyOverride +2026-07-05T01:36:31.2931161Z --- PASS: TestExternalUpdateGenerator_ConcurrencyOverride (0.00s) +2026-07-05T01:36:31.2931584Z === RUN TestExternalUpdateGenerator_CheckoutUsesStateToken +2026-07-05T01:36:31.2932077Z === RUN TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_configured +2026-07-05T01:36:31.2932779Z === RUN TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_unset_uses_GITHUB_TOKEN_back-compat +2026-07-05T01:36:31.2933396Z --- PASS: TestExternalUpdateGenerator_CheckoutUsesStateToken (0.00s) +2026-07-05T01:36:31.2934043Z --- PASS: TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_configured (0.00s) +2026-07-05T01:36:31.2934899Z --- PASS: TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_unset_uses_GITHUB_TOKEN_back-compat (0.00s) +2026-07-05T01:36:31.2935559Z === RUN TestExternalUpdateGenerator_DefaultConcurrencyIsPerComponent +2026-07-05T01:36:31.2936090Z --- PASS: TestExternalUpdateGenerator_DefaultConcurrencyIsPerComponent (0.00s) +2026-07-05T01:36:31.2936592Z === RUN TestNotifyPrimaryStep_BuildOnlySatellite_EmitsDeployName +2026-07-05T01:36:31.2937064Z --- PASS: TestNotifyPrimaryStep_BuildOnlySatellite_EmitsDeployName (0.00s) +2026-07-05T01:36:31.2937518Z === RUN TestNotifyPrimaryStep_OverridesEmitParentNames +2026-07-05T01:36:31.2937937Z --- PASS: TestNotifyPrimaryStep_OverridesEmitParentNames (0.00s) +2026-07-05T01:36:31.2938370Z === RUN TestNotifyPrimaryStep_OverridesOffStateByteIdentical +2026-07-05T01:36:31.2938819Z --- PASS: TestNotifyPrimaryStep_OverridesOffStateByteIdentical (0.01s) +2026-07-05T01:36:31.2939247Z === RUN TestNotifyPrimaryStep_NoStrayDotInJobsAccessor +2026-07-05T01:36:31.2939643Z --- PASS: TestNotifyPrimaryStep_NoStrayDotInJobsAccessor (0.00s) +2026-07-05T01:36:31.2940303Z === RUN TestExternalUpdateGenerator_OnUpdateDeploy_ScopedJob +2026-07-05T01:36:31.2940785Z --- PASS: TestExternalUpdateGenerator_OnUpdateDeploy_ScopedJob (0.00s) +2026-07-05T01:36:31.2941419Z === RUN TestExternalUpdateGenerator_NoOnUpdate_RecordOnlyByteIdentical +2026-07-05T01:36:31.2941953Z --- PASS: TestExternalUpdateGenerator_NoOnUpdate_RecordOnlyByteIdentical (0.00s) +2026-07-05T01:36:31.2942457Z === RUN TestExternalUpdateGenerator_OnUpdateDeploy_Deterministic +2026-07-05T01:36:31.2943090Z --- PASS: TestExternalUpdateGenerator_OnUpdateDeploy_Deterministic (0.00s) +2026-07-05T01:36:31.2943589Z === RUN TestExternalUpdateGenerator_OnUpdateDeploy_LocalWorkflowPath +2026-07-05T01:36:31.2944114Z --- PASS: TestExternalUpdateGenerator_OnUpdateDeploy_LocalWorkflowPath (0.00s) +2026-07-05T01:36:31.2944580Z === RUN TestExternalUpdateGenerator_EmitsRunName +2026-07-05T01:36:31.2944958Z --- PASS: TestExternalUpdateGenerator_EmitsRunName (0.00s) +2026-07-05T01:36:31.2945307Z === RUN TestNormalizeWorkflowPath +2026-07-05T01:36:31.2945598Z === PAUSE TestNormalizeWorkflowPath +2026-07-05T01:36:31.2945908Z === RUN TestNormalizeWorkflowPath_ActionlintClean +2026-07-05T01:36:31.2946526Z generator_normalize_test.go:128: actionlint not found; skipping actionlint integration test +2026-07-05T01:36:31.2947047Z --- SKIP: TestNormalizeWorkflowPath_ActionlintClean (0.00s) +2026-07-05T01:36:31.2947441Z === RUN TestNormalizeWorkflowPath_ActionlintHermetic +2026-07-05T01:36:31.2948010Z generator_normalize_test.go:171: actionlint not found; skipping actionlint integration test +2026-07-05T01:36:31.2948521Z --- SKIP: TestNormalizeWorkflowPath_ActionlintHermetic (0.00s) +2026-07-05T01:36:31.2948907Z === RUN TestGenerator_OrchestrateHasConcurrencyBlock +2026-07-05T01:36:31.2949291Z --- PASS: TestGenerator_OrchestrateHasConcurrencyBlock (0.00s) +2026-07-05T01:36:31.2949694Z === RUN TestGenerator_ReleaseTokenBareSecretNameIsWrapped +2026-07-05T01:36:31.2950235Z --- PASS: TestGenerator_ReleaseTokenBareSecretNameIsWrapped (0.01s) +2026-07-05T01:36:31.2950672Z === RUN TestGenerator_DefaultReleaseTokenIsGitHubToken +2026-07-05T01:36:31.2951216Z --- PASS: TestGenerator_DefaultReleaseTokenIsGitHubToken (0.01s) +2026-07-05T01:36:31.2951633Z === RUN TestGenerator_OrchestrateConcurrencyOverride +2026-07-05T01:36:31.2952026Z --- PASS: TestGenerator_OrchestrateConcurrencyOverride (0.00s) +2026-07-05T01:36:31.2952379Z === RUN TestGenerator_Generate +2026-07-05T01:36:31.2952660Z --- PASS: TestGenerator_Generate (0.00s) +2026-07-05T01:36:31.2952976Z === RUN TestGenerator_CallbackTimeoutMinutes +2026-07-05T01:36:31.2953320Z --- PASS: TestGenerator_CallbackTimeoutMinutes (0.00s) +2026-07-05T01:36:31.2953763Z === RUN TestGenerator_CallbackTimeoutOmittedWhenZero +2026-07-05T01:36:31.2954379Z --- PASS: TestGenerator_CallbackTimeoutOmittedWhenZero (0.00s) +2026-07-05T01:36:31.2954756Z === RUN TestGenerator_GenerateWithRetries +2026-07-05T01:36:31.2955088Z --- PASS: TestGenerator_GenerateWithRetries (0.00s) +2026-07-05T01:36:31.2955432Z === RUN TestGenerator_GenerateWithRunPolicies +2026-07-05T01:36:31.2955789Z --- PASS: TestGenerator_GenerateWithRunPolicies (0.00s) +2026-07-05T01:36:31.2956162Z === RUN TestGenerator_GenerateWithOnFailureContinue +2026-07-05T01:36:31.2956554Z --- PASS: TestGenerator_GenerateWithOnFailureContinue (0.00s) +2026-07-05T01:36:31.2956919Z === RUN TestGenerator_GenerateWithAllContinue +2026-07-05T01:36:31.2957261Z --- PASS: TestGenerator_GenerateWithAllContinue (0.00s) +2026-07-05T01:36:31.2957600Z === RUN TestGenerator_GenerateManifestUpdate +2026-07-05T01:36:31.2957933Z --- PASS: TestGenerator_GenerateManifestUpdate (0.00s) +2026-07-05T01:36:31.2958310Z === RUN TestGenerator_ManifestUpdate_PushRetriesOnConflict +2026-07-05T01:36:31.2958749Z --- PASS: TestGenerator_ManifestUpdate_PushRetriesOnConflict (0.00s) +2026-07-05T01:36:31.2959201Z === RUN TestGenerator_ManifestUpdate_NoEnvPushRetriesOnConflict +2026-07-05T01:36:31.2959667Z --- PASS: TestGenerator_ManifestUpdate_NoEnvPushRetriesOnConflict (0.00s) +2026-07-05T01:36:31.2960235Z === RUN TestGenerator_GenerateSummaryWithOutputs +2026-07-05T01:36:31.2960610Z --- PASS: TestGenerator_GenerateSummaryWithOutputs (0.00s) +2026-07-05T01:36:31.2961123Z === RUN TestGenerator_ValidateMissingInputs +2026-07-05T01:36:31.2961465Z --- PASS: TestGenerator_ValidateMissingInputs (0.00s) +2026-07-05T01:36:31.2961821Z === RUN TestGenerator_FinalizeJob_ReleaseDisabled +2026-07-05T01:36:31.2962186Z --- PASS: TestGenerator_FinalizeJob_ReleaseDisabled (0.00s) +2026-07-05T01:36:31.2962549Z === RUN TestGenerator_FinalizeJob_ExternalRelease +2026-07-05T01:36:31.2962906Z --- PASS: TestGenerator_FinalizeJob_ExternalRelease (0.00s) +2026-07-05T01:36:31.2963256Z === RUN TestGenerator_FinalizeJob_CustomChangelog +2026-07-05T01:36:31.2963603Z --- PASS: TestGenerator_FinalizeJob_CustomChangelog (0.00s) +2026-07-05T01:36:31.2963974Z === RUN TestGenerator_FinalizeJob_FrameworkManagedRelease +2026-07-05T01:36:31.2964389Z --- PASS: TestGenerator_FinalizeJob_FrameworkManagedRelease (0.00s) +2026-07-05T01:36:31.2964772Z === RUN TestGenerator_DeployChangeDetection +2026-07-05T01:36:31.2965117Z --- PASS: TestGenerator_DeployChangeDetection (0.01s) +2026-07-05T01:36:31.2965505Z === RUN TestGenerator_HyphenatedNameOutputKeysConsistent +2026-07-05T01:36:31.2965935Z --- PASS: TestGenerator_HyphenatedNameOutputKeysConsistent (0.00s) +2026-07-05T01:36:31.2966337Z === RUN TestGenerator_BuildLinkedDeployCondition +2026-07-05T01:36:31.2966712Z --- PASS: TestGenerator_BuildLinkedDeployCondition (0.00s) +2026-07-05T01:36:31.2967066Z === RUN TestGenerator_PerDeployManifestUpdate +2026-07-05T01:36:31.2967424Z --- PASS: TestGenerator_PerDeployManifestUpdate (0.00s) +2026-07-05T01:36:31.2967776Z === RUN TestGenerator_MixedDeployTypesInSetup +2026-07-05T01:36:31.2968113Z --- PASS: TestGenerator_MixedDeployTypesInSetup (0.00s) +2026-07-05T01:36:31.2968484Z === RUN TestGenerator_EmptyDeploysGeneratesValidWorkflow +2026-07-05T01:36:31.2968901Z --- PASS: TestGenerator_EmptyDeploysGeneratesValidWorkflow (0.00s) +2026-07-05T01:36:31.2969307Z === RUN TestGenerator_BuildLinkedDeployNeedsArray +2026-07-05T01:36:31.2969683Z --- PASS: TestGenerator_BuildLinkedDeployNeedsArray (0.00s) +2026-07-05T01:36:31.2970307Z === RUN TestGenerator_TriggerBasedDeployNeedsOnlySetup +2026-07-05T01:36:31.2970722Z --- PASS: TestGenerator_TriggerBasedDeployNeedsOnlySetup (0.00s) +2026-07-05T01:36:31.2971118Z === RUN TestGenerator_UnconstrainedDeployAlwaysRuns +2026-07-05T01:36:31.2971506Z --- PASS: TestGenerator_UnconstrainedDeployAlwaysRuns (0.00s) +2026-07-05T01:36:31.2971882Z === RUN TestGenerator_DeployNameEnvVarConversion +2026-07-05T01:36:31.2972247Z --- PASS: TestGenerator_DeployNameEnvVarConversion (0.00s) +2026-07-05T01:36:31.2972601Z === RUN TestGenerator_FinalizeNeedsAllDeployJobs +2026-07-05T01:36:31.2972955Z --- PASS: TestGenerator_FinalizeNeedsAllDeployJobs (0.00s) +2026-07-05T01:36:31.2973351Z === RUN TestGenerator_PerDeployManifestUpdateSkipsOnFailure +2026-07-05T01:36:31.2973801Z --- PASS: TestGenerator_PerDeployManifestUpdateSkipsOnFailure (0.00s) +2026-07-05T01:36:31.2974210Z === RUN TestGenerator_MultipleTriggerPatterns +2026-07-05T01:36:31.2974554Z --- PASS: TestGenerator_MultipleTriggerPatterns (0.00s) +2026-07-05T01:36:31.2974919Z === RUN TestGenerator_SingleDeployNoArrayBrackets +2026-07-05T01:36:31.2975287Z --- PASS: TestGenerator_SingleDeployNoArrayBrackets (0.00s) +2026-07-05T01:36:31.2975648Z === RUN TestGenerator_DeployWithBuildOutputs +2026-07-05T01:36:31.2975992Z --- PASS: TestGenerator_DeployWithBuildOutputs (0.00s) +2026-07-05T01:36:31.2976392Z === RUN TestGenerator_BuildLinkedDeployDoesNotCheckSetupOutput +2026-07-05T01:36:31.2976869Z --- PASS: TestGenerator_BuildLinkedDeployDoesNotCheckSetupOutput (0.00s) +2026-07-05T01:36:31.2977286Z === RUN TestGenerator_BuildArtifactIDTracked +2026-07-05T01:36:31.2977629Z --- PASS: TestGenerator_BuildArtifactIDTracked (0.00s) +2026-07-05T01:36:31.2978012Z === RUN TestGenerator_BuildArtifactIDSkippedWhenNotDeclared +2026-07-05T01:36:31.2978450Z --- PASS: TestGenerator_BuildArtifactIDSkippedWhenNotDeclared (0.00s) +2026-07-05T01:36:31.2978849Z === RUN TestGenerator_ExtraTriggers_None +2026-07-05T01:36:31.2979177Z --- PASS: TestGenerator_ExtraTriggers_None (0.00s) +2026-07-05T01:36:31.2979691Z === RUN TestGenerator_ExtraTriggers_Schedule +2026-07-05T01:36:31.2980226Z --- PASS: TestGenerator_ExtraTriggers_Schedule (0.00s) +2026-07-05T01:36:31.2980666Z === RUN TestGenerator_ExtraTriggers_RepositoryDispatch +2026-07-05T01:36:31.2981064Z --- PASS: TestGenerator_ExtraTriggers_RepositoryDispatch (0.00s) +2026-07-05T01:36:31.2981480Z === RUN TestGenerator_ExtraTriggers_RepositoryDispatch_NoTypes +2026-07-05T01:36:31.2981924Z --- PASS: TestGenerator_ExtraTriggers_RepositoryDispatch_NoTypes (0.00s) +2026-07-05T01:36:31.2982330Z === RUN TestGenerator_ExtraTriggers_WorkflowRun +2026-07-05T01:36:31.2982716Z --- PASS: TestGenerator_ExtraTriggers_WorkflowRun (0.00s) +2026-07-05T01:36:31.2983068Z === RUN TestGenerator_ExtraTriggers_MergeGroup +2026-07-05T01:36:31.2983426Z --- PASS: TestGenerator_ExtraTriggers_MergeGroup (0.00s) +2026-07-05T01:36:31.2983769Z === RUN TestGenerator_ExtraTriggers_AllCombined +2026-07-05T01:36:31.2984124Z --- PASS: TestGenerator_ExtraTriggers_AllCombined (0.00s) +2026-07-05T01:36:31.2984475Z === RUN TestGenerator_BuildMatrix_TwoDimensions +2026-07-05T01:36:31.2984817Z --- PASS: TestGenerator_BuildMatrix_TwoDimensions (0.00s) +2026-07-05T01:36:31.2985205Z === RUN TestGenerator_BuildMatrix_MaxParallelOmittedWhenZero +2026-07-05T01:36:31.2985651Z --- PASS: TestGenerator_BuildMatrix_MaxParallelOmittedWhenZero (0.00s) +2026-07-05T01:36:31.2986070Z === RUN TestGenerator_BuildMatrix_NoMatrixNoStrategy +2026-07-05T01:36:31.2986440Z --- PASS: TestGenerator_BuildMatrix_NoMatrixNoStrategy (0.00s) +2026-07-05T01:36:31.2986840Z === RUN TestGenerator_PassthroughArtifact_NoArtifactNoSteps +2026-07-05T01:36:31.2987267Z --- PASS: TestGenerator_PassthroughArtifact_NoArtifactNoSteps (0.00s) +2026-07-05T01:36:31.2987722Z === RUN TestGenerator_PassthroughArtifact_ReusableWorkflowUploadJob +2026-07-05T01:36:31.2988212Z --- PASS: TestGenerator_PassthroughArtifact_ReusableWorkflowUploadJob (0.00s) +2026-07-05T01:36:31.2988878Z === RUN TestGenerator_PassthroughArtifact_ReusableWorkflowDownloadJob +2026-07-05T01:36:31.2989397Z --- PASS: TestGenerator_PassthroughArtifact_ReusableWorkflowDownloadJob (0.00s) +2026-07-05T01:36:31.2989896Z === RUN TestGenerator_PassthroughArtifact_DownloadNeedsUploadJob +2026-07-05T01:36:31.2990511Z --- PASS: TestGenerator_PassthroughArtifact_DownloadNeedsUploadJob (0.00s) +2026-07-05T01:36:31.2991295Z === RUN TestGenerator_PassthroughArtifact_MatrixUploadCollectsLegs +2026-07-05T01:36:31.2991926Z --- PASS: TestGenerator_PassthroughArtifact_MatrixUploadCollectsLegs (0.00s) +2026-07-05T01:36:31.2992432Z === RUN TestGenerator_PassthroughArtifact_NonMatrixUploadNoCollect +2026-07-05T01:36:31.2992911Z --- PASS: TestGenerator_PassthroughArtifact_NonMatrixUploadNoCollect (0.00s) +2026-07-05T01:36:31.2993342Z === RUN TestGenerator_DispatchInputs_StringType +2026-07-05T01:36:31.2993712Z --- PASS: TestGenerator_DispatchInputs_StringType (0.00s) +2026-07-05T01:36:31.2994080Z === RUN TestGenerator_DispatchInputs_BooleanType +2026-07-05T01:36:31.2994465Z --- PASS: TestGenerator_DispatchInputs_BooleanType (0.00s) +2026-07-05T01:36:31.2994836Z === RUN TestGenerator_DispatchInputs_ChoiceType +2026-07-05T01:36:31.2995194Z --- PASS: TestGenerator_DispatchInputs_ChoiceType (0.00s) +2026-07-05T01:36:31.2995553Z === RUN TestGenerator_DispatchInputs_RequiredFlag +2026-07-05T01:36:31.2995926Z --- PASS: TestGenerator_DispatchInputs_RequiredFlag (0.00s) +2026-07-05T01:36:31.2996310Z === RUN TestGenerator_DispatchInputs_OmittedWhenEmpty +2026-07-05T01:36:31.2996703Z --- PASS: TestGenerator_DispatchInputs_OmittedWhenEmpty (0.00s) +2026-07-05T01:36:31.2997093Z === RUN TestGenerator_DispatchInputs_RoutedToCallback +2026-07-05T01:36:31.2997471Z --- PASS: TestGenerator_DispatchInputs_RoutedToCallback (0.00s) +2026-07-05T01:36:31.2997904Z === RUN TestGenerator_DispatchInputs_NotRoutedWhenCallbackOmitsIt +2026-07-05T01:36:31.2998395Z --- PASS: TestGenerator_DispatchInputs_NotRoutedWhenCallbackOmitsIt (0.00s) +2026-07-05T01:36:31.2998853Z === RUN TestGenerator_DispatchInputs_SortedDeterministic +2026-07-05T01:36:31.2999427Z --- PASS: TestGenerator_DispatchInputs_SortedDeterministic (0.00s) +2026-07-05T01:36:31.2999801Z === RUN TestBuildDependencyGraph +2026-07-05T01:36:31.3000242Z --- PASS: TestBuildDependencyGraph (0.00s) +2026-07-05T01:36:31.3000567Z === RUN TestTopologicalSort +2026-07-05T01:36:31.3000853Z --- PASS: TestTopologicalSort (0.00s) +2026-07-05T01:36:31.3001141Z === RUN TestGetAllDependencies +2026-07-05T01:36:31.3001429Z --- PASS: TestGetAllDependencies (0.00s) +2026-07-05T01:36:31.3001736Z === RUN TestGetDirectDependencies +2026-07-05T01:36:31.3002037Z --- PASS: TestGetDirectDependencies (0.00s) +2026-07-05T01:36:31.3002366Z === RUN TestBuildDependencyGraph_WithValidate +2026-07-05T01:36:31.3002725Z --- PASS: TestBuildDependencyGraph_WithValidate (0.00s) +2026-07-05T01:36:31.3003074Z === RUN TestBuildDependencyGraph_CallbackInfo +2026-07-05T01:36:31.3003432Z --- PASS: TestBuildDependencyGraph_CallbackInfo (0.00s) +2026-07-05T01:36:31.3003790Z === RUN TestBuildDependencyGraph_DefaultValues +2026-07-05T01:36:31.3004158Z --- PASS: TestBuildDependencyGraph_DefaultValues (0.00s) +2026-07-05T01:36:31.3004489Z === RUN TestHotfixGenerator_Enabled +2026-07-05T01:36:31.3004791Z --- PASS: TestHotfixGenerator_Enabled (0.00s) +2026-07-05T01:36:31.3005168Z === RUN TestHotfixGenerator_Threshold_EmitsNothingBelowTwoEnvs +2026-07-05T01:36:31.3005633Z --- PASS: TestHotfixGenerator_Threshold_EmitsNothingBelowTwoEnvs (0.00s) +2026-07-05T01:36:31.3006038Z === RUN TestHotfixGenerator_Triggers +2026-07-05T01:36:31.3006364Z --- PASS: TestHotfixGenerator_Triggers (0.00s) +2026-07-05T01:36:31.3006732Z === RUN TestHotfixGenerator_CommitInputAcceptsMultiple +2026-07-05T01:36:31.3007135Z --- PASS: TestHotfixGenerator_CommitInputAcceptsMultiple (0.00s) +2026-07-05T01:36:31.3007522Z === RUN TestHotfixGenerator_PlanJobChainOutputs +2026-07-05T01:36:31.3007887Z --- PASS: TestHotfixGenerator_PlanJobChainOutputs (0.00s) +2026-07-05T01:36:31.3008261Z === RUN TestHotfixGenerator_ApplyLoopsEnvSequence +2026-07-05T01:36:31.3008785Z --- PASS: TestHotfixGenerator_ApplyLoopsEnvSequence (0.00s) +2026-07-05T01:36:31.3009160Z === RUN TestHotfixGenerator_ConflictHaltsChain +2026-07-05T01:36:31.3009508Z --- PASS: TestHotfixGenerator_ConflictHaltsChain (0.00s) +2026-07-05T01:36:31.3009845Z === RUN TestHotfixGenerator_Concurrency +2026-07-05T01:36:31.3010283Z --- PASS: TestHotfixGenerator_Concurrency (0.00s) +2026-07-05T01:36:31.3010600Z === RUN TestHotfixGenerator_Permissions +2026-07-05T01:36:31.3010909Z --- PASS: TestHotfixGenerator_Permissions (0.00s) +2026-07-05T01:36:31.3011222Z === RUN TestHotfixGenerator_Jobs +2026-07-05T01:36:31.3011506Z --- PASS: TestHotfixGenerator_Jobs (0.00s) +2026-07-05T01:36:31.3011812Z === RUN TestHotfixGenerator_ConflictPath +2026-07-05T01:36:31.3012132Z --- PASS: TestHotfixGenerator_ConflictPath (0.00s) +2026-07-05T01:36:31.3012525Z === RUN TestHotfixGenerator_SourceTrailerCarriesFullCommitSet +2026-07-05T01:36:31.3012988Z --- PASS: TestHotfixGenerator_SourceTrailerCarriesFullCommitSet (0.00s) +2026-07-05T01:36:31.3013403Z === RUN TestHotfixGenerator_CleanPath +2026-07-05T01:36:31.3013720Z --- PASS: TestHotfixGenerator_CleanPath (0.00s) +2026-07-05T01:36:31.3014046Z === RUN TestHotfixGenerator_CleanPathPATMerge +2026-07-05T01:36:31.3014392Z --- PASS: TestHotfixGenerator_CleanPathPATMerge (0.00s) +2026-07-05T01:36:31.3014801Z === RUN TestHotfixGenerator_CleanPathMergeDefaultsToGitHubToken +2026-07-05T01:36:31.3015276Z --- PASS: TestHotfixGenerator_CleanPathMergeDefaultsToGitHubToken (0.00s) +2026-07-05T01:36:31.3015735Z === RUN TestHotfixGenerator_ApplyCreatesPRWithStateToken +2026-07-05T01:36:31.3016435Z --- PASS: TestHotfixGenerator_ApplyCreatesPRWithStateToken (0.01s) +2026-07-05T01:36:31.3016971Z === RUN TestHotfixGenerator_ApplyTokenDefaultsToGitHubToken +2026-07-05T01:36:31.3017439Z --- PASS: TestHotfixGenerator_ApplyTokenDefaultsToGitHubToken (0.01s) +2026-07-05T01:36:31.3017833Z === RUN TestHotfixGenerator_SeedsLabels +2026-07-05T01:36:31.3018158Z --- PASS: TestHotfixGenerator_SeedsLabels (0.00s) +2026-07-05T01:36:31.3018664Z === RUN TestHotfixGenerator_Q2BranchProtectionWarn +2026-07-05T01:36:31.3019044Z --- PASS: TestHotfixGenerator_Q2BranchProtectionWarn (0.00s) +2026-07-05T01:36:31.3019429Z === RUN TestHotfixGenerator_Q6ProtectionSuggestions +2026-07-05T01:36:31.3019814Z --- PASS: TestHotfixGenerator_Q6ProtectionSuggestions (0.00s) +2026-07-05T01:36:31.3020407Z === RUN TestHotfixGenerator_ProdGatingEnvironment +2026-07-05T01:36:31.3020783Z --- PASS: TestHotfixGenerator_ProdGatingEnvironment (0.00s) +2026-07-05T01:36:31.3021135Z === RUN TestHotfixGenerator_DryRunSafety +2026-07-05T01:36:31.3021457Z --- PASS: TestHotfixGenerator_DryRunSafety (0.00s) +2026-07-05T01:36:31.3021791Z === RUN TestHotfixGenerator_MergedLabelGate +2026-07-05T01:36:31.3022130Z --- PASS: TestHotfixGenerator_MergedLabelGate (0.00s) +2026-07-05T01:36:31.3022460Z === RUN TestHotfixGenerator_ValidYAML +2026-07-05T01:36:31.3022764Z --- PASS: TestHotfixGenerator_ValidYAML (0.01s) +2026-07-05T01:36:31.3023105Z === RUN TestHotfixGenerator_SetupCLIPassesToken +2026-07-05T01:36:31.3023474Z --- PASS: TestHotfixGenerator_SetupCLIPassesToken (0.00s) +2026-07-05T01:36:31.3023812Z === RUN TestHotfixGenerator_PinModeSHA +2026-07-05T01:36:31.3024126Z --- PASS: TestHotfixGenerator_PinModeSHA (0.00s) +2026-07-05T01:36:31.3024441Z === RUN TestHotfixGeneratorE2E +2026-07-05T01:36:31.3024726Z --- PASS: TestHotfixGeneratorE2E (0.00s) +2026-07-05T01:36:31.3025079Z === RUN TestHotfixGenerator_ContextEmitsNonEmptyRollbackSHA +2026-07-05T01:36:31.3025519Z --- PASS: TestHotfixGenerator_ContextEmitsNonEmptyRollbackSHA (0.00s) +2026-07-05T01:36:31.3025944Z === RUN TestHotfixGenerator_RollbackJobGatedCorrectly +2026-07-05T01:36:31.3026340Z --- PASS: TestHotfixGenerator_RollbackJobGatedCorrectly (0.00s) +2026-07-05T01:36:31.3026747Z === RUN TestHotfixGenerator_EmittedFlagsExistOnCommands +2026-07-05T01:36:31.3027157Z --- PASS: TestHotfixGenerator_EmittedFlagsExistOnCommands (0.00s) +2026-07-05T01:36:31.3027718Z === RUN TestHotfixGenerator_FinalizeRequiredFlags +2026-07-05T01:36:31.3028104Z --- PASS: TestHotfixGenerator_FinalizeRequiredFlags (0.00s) +2026-07-05T01:36:31.3028515Z === RUN TestHotfixGenerator_PlanJobOutputsMatchPlannerKeys +2026-07-05T01:36:31.3028962Z --- PASS: TestHotfixGenerator_PlanJobOutputsMatchPlannerKeys (0.00s) +2026-07-05T01:36:31.3029350Z === RUN TestHotfixGenerator_Actionlint +2026-07-05T01:36:31.3029732Z hotfix_test.go:749: actionlint not installed +2026-07-05T01:36:31.3030180Z --- SKIP: TestHotfixGenerator_Actionlint (0.00s) +2026-07-05T01:36:31.3030540Z === RUN TestHotfixGenerator_PlanAndFinalizePassConfig +2026-07-05T01:36:31.3030942Z --- PASS: TestHotfixGenerator_PlanAndFinalizePassConfig (0.00s) +2026-07-05T01:36:31.3031380Z === RUN TestHotfixGenerator_ApplyMaterializesAbsentEnvBranch +2026-07-05T01:36:31.3031845Z --- PASS: TestHotfixGenerator_ApplyMaterializesAbsentEnvBranch (0.00s) +2026-07-05T01:36:31.3032274Z === RUN TestHotfixGenerator_ApplySkippedOnNoOp +2026-07-05T01:36:31.3032675Z --- PASS: TestHotfixGenerator_ApplySkippedOnNoOp (0.00s) +2026-07-05T01:36:31.3033089Z === RUN TestHotfixGenerator_FinalizeWritesStateWithStateToken +2026-07-05T01:36:31.3033545Z --- PASS: TestHotfixGenerator_FinalizeWritesStateWithStateToken (0.00s) +2026-07-05T01:36:31.3034038Z === RUN TestHotfixGenerator_FinalizeStateTokenDefaultsToGitHubToken +2026-07-05T01:36:31.3034555Z --- PASS: TestHotfixGenerator_FinalizeStateTokenDefaultsToGitHubToken (0.00s) +2026-07-05T01:36:31.3035023Z === RUN TestHotfixGenerator_FinalizeFetchesEnvBranches +2026-07-05T01:36:31.3035431Z --- PASS: TestHotfixGenerator_FinalizeFetchesEnvBranches (0.00s) +2026-07-05T01:36:31.3035818Z === RUN TestInputExpressionPassthroughE2E +2026-07-05T01:36:31.3036175Z --- PASS: TestInputExpressionPassthroughE2E (0.00s) +2026-07-05T01:36:31.3036547Z === RUN TestOrchestrateInputExpressionPassthrough +2026-07-05T01:36:31.3036937Z --- PASS: TestOrchestrateInputExpressionPassthrough (0.00s) +2026-07-05T01:36:31.3037322Z === RUN TestOrchestrateStateReferenceResolves +2026-07-05T01:36:31.3037836Z --- PASS: TestOrchestrateStateReferenceResolves (0.00s) +2026-07-05T01:36:31.3038198Z === RUN TestPromoteVarsExpressionPassthrough +2026-07-05T01:36:31.3038567Z --- PASS: TestPromoteVarsExpressionPassthrough (0.00s) +2026-07-05T01:36:31.3038923Z === RUN TestPromoteStateReferenceResolves +2026-07-05T01:36:31.3039256Z --- PASS: TestPromoteStateReferenceResolves (0.00s) +2026-07-05T01:36:31.3039591Z === RUN TestPromoteLiteralInputsUnchanged +2026-07-05T01:36:31.3039922Z --- PASS: TestPromoteLiteralInputsUnchanged (0.00s) +2026-07-05T01:36:31.3040402Z === RUN TestValidateWarnsUnwrappedExpression +2026-07-05T01:36:31.3040756Z --- PASS: TestValidateWarnsUnwrappedExpression (0.00s) +2026-07-05T01:36:31.3041241Z === RUN TestReusableWorkflowCallbackRendersPermissionsNotForbiddenAttributes +2026-07-05T01:36:31.3041879Z --- PASS: TestReusableWorkflowCallbackRendersPermissionsNotForbiddenAttributes (0.00s) +2026-07-05T01:36:31.3042448Z === RUN TestReusableWorkflowCallbackRendersOIDCPermissions +2026-07-05T01:36:31.3042930Z --- PASS: TestReusableWorkflowCallbackRendersOIDCPermissions (0.00s) +2026-07-05T01:36:31.3043467Z === RUN TestValidationRejectsJobAttributesOnReusableCallback +2026-07-05T01:36:31.3044118Z --- PASS: TestValidationRejectsJobAttributesOnReusableCallback (0.00s) +2026-07-05T01:36:31.3044803Z === RUN TestGenerator_OwnedJobsGetDefaultTimeout +2026-07-05T01:36:31.3045309Z --- PASS: TestGenerator_OwnedJobsGetDefaultTimeout (0.00s) +2026-07-05T01:36:31.3045693Z === RUN TestGenerator_OwnedJobTimeoutConfigurable +2026-07-05T01:36:31.3046068Z --- PASS: TestGenerator_OwnedJobTimeoutConfigurable (0.00s) +2026-07-05T01:36:31.3046443Z === RUN TestGenerator_TimeoutNotOnReusableCallback +2026-07-05T01:36:31.3046827Z --- PASS: TestGenerator_TimeoutNotOnReusableCallback (0.00s) +2026-07-05T01:36:31.3047241Z === RUN TestGenerator_OptionalDependsOnAddsNeedsWithoutGating +2026-07-05T01:36:31.3047705Z --- PASS: TestGenerator_OptionalDependsOnAddsNeedsWithoutGating (0.00s) +2026-07-05T01:36:31.3048347Z === RUN TestGenerator_OptionalDependsOnHonorsImplicitRunOnSkip +2026-07-05T01:36:31.3048845Z --- PASS: TestGenerator_OptionalDependsOnHonorsImplicitRunOnSkip (0.00s) +2026-07-05T01:36:31.3049279Z === RUN TestGenerator_BothFieldsUnsetNonBreaking +2026-07-05T01:36:31.3049657Z --- PASS: TestGenerator_BothFieldsUnsetNonBreaking (0.00s) +2026-07-05T01:36:31.3050174Z === RUN TestGenerator_ExplicitTimeoutNotOnReusableCallback +2026-07-05T01:36:31.3050628Z --- PASS: TestGenerator_ExplicitTimeoutNotOnReusableCallback (0.00s) +2026-07-05T01:36:31.3051043Z === RUN TestOrchestrate_TopLevelLeastPrivilege +2026-07-05T01:36:31.3051414Z --- PASS: TestOrchestrate_TopLevelLeastPrivilege (0.00s) +2026-07-05T01:36:31.3051836Z === RUN TestOrchestrate_NativeDeployments_JobLevelDeploymentsWrite +2026-07-05T01:36:31.3052327Z --- PASS: TestOrchestrate_NativeDeployments_JobLevelDeploymentsWrite (0.00s) +2026-07-05T01:36:31.3052756Z === RUN TestPromote_TopLevelLeastPrivilege +2026-07-05T01:36:31.3053092Z --- PASS: TestPromote_TopLevelLeastPrivilege (0.00s) +2026-07-05T01:36:31.3053504Z === RUN TestPromote_NativeDeployments_JobLevelDeploymentsWrite +2026-07-05T01:36:31.3053962Z --- PASS: TestPromote_NativeDeployments_JobLevelDeploymentsWrite (0.00s) +2026-07-05T01:36:31.3054370Z === RUN TestHotfix_TopLevelLeastPrivilege +2026-07-05T01:36:31.3054709Z --- PASS: TestHotfix_TopLevelLeastPrivilege (0.00s) +2026-07-05T01:36:31.3055157Z === RUN TestRollback_TopLevelLeastPrivilege +2026-07-05T01:36:31.3055699Z --- PASS: TestRollback_TopLevelLeastPrivilege (0.00s) +2026-07-05T01:36:31.3056157Z === RUN TestMatrixRetry_RetryJobCarriesStrategy +2026-07-05T01:36:31.3056528Z --- PASS: TestMatrixRetry_RetryJobCarriesStrategy (0.00s) +2026-07-05T01:36:31.3056888Z === RUN TestMatrixRetry_MatrixWithoutRetries +2026-07-05T01:36:31.3057242Z --- PASS: TestMatrixRetry_MatrixWithoutRetries (0.00s) +2026-07-05T01:36:31.3057583Z === RUN TestMatrixRetry_RetriesWithoutMatrix +2026-07-05T01:36:31.3057915Z --- PASS: TestMatrixRetry_RetriesWithoutMatrix (0.00s) +2026-07-05T01:36:31.3058252Z === RUN TestMergeQueueGenerator_Enabled +2026-07-05T01:36:31.3058917Z --- PASS: TestMergeQueueGenerator_Enabled (0.00s) +2026-07-05T01:36:31.3059360Z === RUN TestMergeQueueGenerator_TriggersAndPermissions +2026-07-05T01:36:31.3059881Z --- PASS: TestMergeQueueGenerator_TriggersAndPermissions (0.00s) +2026-07-05T01:36:31.3060464Z === RUN TestMergeQueueGenerator_Steps +2026-07-05T01:36:31.3060780Z --- PASS: TestMergeQueueGenerator_Steps (0.00s) +2026-07-05T01:36:31.3061128Z === RUN TestMergeQueueGenerator_SetupCLIPassesToken +2026-07-05T01:36:31.3061514Z --- PASS: TestMergeQueueGenerator_SetupCLIPassesToken (0.00s) +2026-07-05T01:36:31.3061881Z === RUN TestMergeQueueGenerator_PinModeSHA +2026-07-05T01:36:31.3062211Z --- PASS: TestMergeQueueGenerator_PinModeSHA (0.00s) +2026-07-05T01:36:31.3062547Z === RUN TestMergeQueueGenerator_ValidYAML +2026-07-05T01:36:31.3062878Z --- PASS: TestMergeQueueGenerator_ValidYAML (0.00s) +2026-07-05T01:36:31.3079515Z === RUN TestMergeQueueGeneratorE2E +2026-07-05T01:36:31.3080326Z --- PASS: TestMergeQueueGeneratorE2E (0.00s) +2026-07-05T01:36:31.3080851Z === RUN TestNativeDeployments_Enabled +2026-07-05T01:36:31.3081386Z --- PASS: TestNativeDeployments_Enabled (0.00s) +2026-07-05T01:36:31.3081913Z === RUN TestNativeDeployments_Disabled +2026-07-05T01:36:31.3082415Z --- PASS: TestNativeDeployments_Disabled (0.00s) +2026-07-05T01:36:31.3082988Z === RUN TestNativeDeployments_Deterministic +2026-07-05T01:36:31.3083556Z --- PASS: TestNativeDeployments_Deterministic (0.00s) +2026-07-05T01:36:31.3084091Z === RUN TestNativeDeployments_Actionlint +2026-07-05T01:36:31.3084846Z native_deployments_test.go:110: actionlint not installed +2026-07-05T01:36:31.3085481Z --- SKIP: TestNativeDeployments_Actionlint (0.00s) +2026-07-05T01:36:31.3086029Z === RUN TestEmit_NegativePathsAppearVerbatim +2026-07-05T01:36:31.3086588Z --- PASS: TestEmit_NegativePathsAppearVerbatim (0.00s) +2026-07-05T01:36:31.3087129Z === RUN TestEmit_PositiveOnlyUnchanged +2026-07-05T01:36:31.3087862Z --- PASS: TestEmit_PositiveOnlyUnchanged (0.00s) +2026-07-05T01:36:31.3088418Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded +2026-07-05T01:36:31.3089111Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded/docs-only_change_is_excluded +2026-07-05T01:36:31.3089968Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded/source_change_triggers +2026-07-05T01:36:31.3091006Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded/mixed_change_triggers_via_source_file +2026-07-05T01:36:31.3091838Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded (0.00s) +2026-07-05T01:36:31.3092800Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded/docs-only_change_is_excluded (0.00s) +2026-07-05T01:36:31.3093917Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded/source_change_triggers (0.00s) +2026-07-05T01:36:31.3095102Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded/mixed_change_triggers_via_source_file (0.00s) +2026-07-05T01:36:31.3095931Z === RUN TestPlan_MatchesGeneratedBytes +2026-07-05T01:36:31.3097485Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.3099269Z Generated workflow: .github/workflows/orchestrate.yaml +2026-07-05T01:36:31.3103284Z Generated workflow: .github/workflows/promote.yaml +2026-07-05T01:36:31.3103992Z Generated workflow: .github/workflows/external-update.yaml +2026-07-05T01:36:31.3104655Z Generated workflow: .github/workflows/cascade-hotfix.yaml +2026-07-05T01:36:31.3105351Z Generated workflow: .github/workflows/cascade-rollback.yaml +2026-07-05T01:36:31.3106433Z Generated action: /tmp/TestPlan_MatchesGeneratedBytes2284640914/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.3107427Z --- PASS: TestPlan_MatchesGeneratedBytes (0.05s) +2026-07-05T01:36:31.3107946Z === RUN TestPlan_Deterministic +2026-07-05T01:36:31.3108366Z --- PASS: TestPlan_Deterministic (0.21s) +2026-07-05T01:36:31.3108974Z === RUN TestPRPreviewGenerator_PRFieldsAreNotInterpolatedIntoRun +2026-07-05T01:36:31.3109736Z --- PASS: TestPRPreviewGenerator_PRFieldsAreNotInterpolatedIntoRun (0.00s) +2026-07-05T01:36:31.3110430Z === RUN TestPRPreviewGenerator_DryRunResolvesEnvironment +2026-07-05T01:36:31.3110947Z === RUN TestPRPreviewGenerator_DryRunResolvesEnvironment/multi-env_passes_first_environment +2026-07-05T01:36:31.3111577Z === RUN TestPRPreviewGenerator_DryRunResolvesEnvironment/no-env_omits_the_environment_flag +2026-07-05T01:36:31.3112112Z --- PASS: TestPRPreviewGenerator_DryRunResolvesEnvironment (0.00s) +2026-07-05T01:36:31.3112794Z --- PASS: TestPRPreviewGenerator_DryRunResolvesEnvironment/multi-env_passes_first_environment (0.00s) +2026-07-05T01:36:31.3113591Z --- PASS: TestPRPreviewGenerator_DryRunResolvesEnvironment/no-env_omits_the_environment_flag (0.00s) +2026-07-05T01:36:31.3114087Z === RUN TestPRPreviewGenerator_Disabled +2026-07-05T01:36:31.3114406Z --- PASS: TestPRPreviewGenerator_Disabled (0.00s) +2026-07-05T01:36:31.3114728Z === RUN TestPRPreviewGenerator_Enabled +2026-07-05T01:36:31.3115043Z --- PASS: TestPRPreviewGenerator_Enabled (0.00s) +2026-07-05T01:36:31.3115374Z === RUN TestPRPreviewGenerator_DryRunEnforced +2026-07-05T01:36:31.3115718Z --- PASS: TestPRPreviewGenerator_DryRunEnforced (0.00s) +2026-07-05T01:36:31.3116118Z === RUN TestPRPreviewGenerator_CommentAddsScriptAndPermission +2026-07-05T01:36:31.3116578Z --- PASS: TestPRPreviewGenerator_CommentAddsScriptAndPermission (0.00s) +2026-07-05T01:36:31.3117003Z === RUN TestPRPreviewGenerator_SetupCLIPassesToken +2026-07-05T01:36:31.3117378Z --- PASS: TestPRPreviewGenerator_SetupCLIPassesToken (0.00s) +2026-07-05T01:36:31.3117764Z === RUN TestPRPreviewGenerator_ActionRefsPinUnderSHAMode +2026-07-05T01:36:31.3118177Z --- PASS: TestPRPreviewGenerator_ActionRefsPinUnderSHAMode (0.00s) +2026-07-05T01:36:31.3118551Z === RUN TestPRPreviewGenerator_ValidYAML +2026-07-05T01:36:31.3118885Z --- PASS: TestPRPreviewGenerator_ValidYAML (0.00s) +2026-07-05T01:36:31.3119366Z === RUN TestRunGenerateWorkflow_PRPreview +2026-07-05T01:36:31.3120509Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.3121611Z Generated workflow: /tmp/TestRunGenerateWorkflow_PRPreview983531756/001/.github/workflows/orchestrate.yaml +2026-07-05T01:36:31.3122201Z Generated workflow: .github/workflows/cascade-pr-preview.yaml +2026-07-05T01:36:31.3122815Z Generated action: /tmp/TestRunGenerateWorkflow_PRPreview983531756/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.3123384Z --- PASS: TestRunGenerateWorkflow_PRPreview (0.01s) +2026-07-05T01:36:31.3123756Z === RUN TestRunGenerateWorkflow_NoPRPreviewWhenAbsent +2026-07-05T01:36:31.3124676Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. +2026-07-05T01:36:31.3125792Z Generated workflow: /tmp/TestRunGenerateWorkflow_NoPRPreviewWhenAbsent356267059/001/.github/workflows/orchestrate.yaml +2026-07-05T01:36:31.3126653Z Generated action: /tmp/TestRunGenerateWorkflow_NoPRPreviewWhenAbsent356267059/001/.github/actions/manage-release/action.yaml +2026-07-05T01:36:31.3127302Z --- PASS: TestRunGenerateWorkflow_NoPRPreviewWhenAbsent (0.01s) +2026-07-05T01:36:31.3127746Z === RUN TestPromoteGenerator_ModeInputNotInterpolatedIntoRun +2026-07-05T01:36:31.3128202Z --- PASS: TestPromoteGenerator_ModeInputNotInterpolatedIntoRun (0.00s) +2026-07-05T01:36:31.3128596Z === RUN TestPromoteGenerator_Generate +2026-07-05T01:36:31.3128927Z === RUN TestPromoteGenerator_Generate/two_environments +2026-07-05T01:36:31.3129298Z === RUN TestPromoteGenerator_Generate/three_environments +2026-07-05T01:36:31.3129676Z === RUN TestPromoteGenerator_Generate/four_environments +2026-07-05T01:36:31.3130209Z === RUN TestPromoteGenerator_Generate/five_environments +2026-07-05T01:36:31.3130703Z --- PASS: TestPromoteGenerator_Generate (0.00s) +2026-07-05T01:36:31.3131158Z --- PASS: TestPromoteGenerator_Generate/two_environments (0.00s) +2026-07-05T01:36:31.3131664Z --- PASS: TestPromoteGenerator_Generate/three_environments (0.00s) +2026-07-05T01:36:31.3132160Z --- PASS: TestPromoteGenerator_Generate/four_environments (0.00s) +2026-07-05T01:36:31.3132680Z --- PASS: TestPromoteGenerator_Generate/five_environments (0.00s) +2026-07-05T01:36:31.3133061Z === RUN TestPromoteGenerator_EnvironmentCases +2026-07-05T01:36:31.3133408Z --- PASS: TestPromoteGenerator_EnvironmentCases (0.00s) +2026-07-05T01:36:31.3133738Z === RUN TestPromoteGenerator_ValidYAML +2026-07-05T01:36:31.3134050Z --- PASS: TestPromoteGenerator_ValidYAML (0.00s) +2026-07-05T01:36:31.3134376Z === RUN TestPromoteGenerator_OrphanCleanup +2026-07-05T01:36:31.3134712Z --- PASS: TestPromoteGenerator_OrphanCleanup (0.00s) +2026-07-05T01:36:31.3135051Z === RUN TestPromoteGenerator_PublishOnProd +2026-07-05T01:36:31.3135392Z --- PASS: TestPromoteGenerator_PublishOnProd (0.00s) +2026-07-05T01:36:31.3135772Z === RUN TestPromoteGenerator_PreflightDeclaresSourceImageTag +2026-07-05T01:36:31.3136219Z --- PASS: TestPromoteGenerator_PreflightDeclaresSourceImageTag (0.00s) +2026-07-05T01:36:31.3136694Z === RUN TestPromoteGenerator_PreflightDeclaresSourceImageDigest +2026-07-05T01:36:31.3137174Z --- PASS: TestPromoteGenerator_PreflightDeclaresSourceImageDigest (0.00s) +2026-07-05T01:36:31.3137665Z === RUN TestPromoteGenerator_DeployThreadsImageDigestWhenDeclared +2026-07-05T01:36:31.3138171Z --- PASS: TestPromoteGenerator_DeployThreadsImageDigestWhenDeclared (0.00s) +2026-07-05T01:36:31.3138676Z === RUN TestPromoteGenerator_DeployOmitsImageDigestWhenNotDeclared +2026-07-05T01:36:31.3139175Z --- PASS: TestPromoteGenerator_DeployOmitsImageDigestWhenNotDeclared (0.00s) +2026-07-05T01:36:31.3139603Z === RUN TestPromoteGenerator_DryRunSupport +2026-07-05T01:36:31.3140226Z --- PASS: TestPromoteGenerator_DryRunSupport (0.00s) +2026-07-05T01:36:31.3140588Z === RUN TestPromoteGenerator_DeployCheckboxes +2026-07-05T01:36:31.3140938Z --- PASS: TestPromoteGenerator_DeployCheckboxes (0.00s) +2026-07-05T01:36:31.3141311Z === RUN TestPromoteGenerator_DeployDetectionOutputs +2026-07-05T01:36:31.3141695Z --- PASS: TestPromoteGenerator_DeployDetectionOutputs (0.00s) +2026-07-05T01:36:31.3142077Z === RUN TestPromoteGenerator_ConditionalDeployJobs +2026-07-05T01:36:31.3142451Z --- PASS: TestPromoteGenerator_ConditionalDeployJobs (0.00s) +2026-07-05T01:36:31.3142833Z === RUN TestPromoteGenerator_FinalizeNeedsAllDeploys +2026-07-05T01:36:31.3143223Z --- PASS: TestPromoteGenerator_FinalizeNeedsAllDeploys (0.00s) +2026-07-05T01:36:31.3143608Z === RUN TestPromoteGenerator_PerDeployManifestUpdate +2026-07-05T01:36:31.3143991Z --- PASS: TestPromoteGenerator_PerDeployManifestUpdate (0.00s) +2026-07-05T01:36:31.3144504Z === RUN TestPromoteGenerator_MixedDeployTypes +2026-07-05T01:36:31.3144865Z --- PASS: TestPromoteGenerator_MixedDeployTypes (0.00s) +2026-07-05T01:36:31.3145252Z === RUN TestPromoteGenerator_DeployCheckboxEnvVarPassing +2026-07-05T01:36:31.3145678Z --- PASS: TestPromoteGenerator_DeployCheckboxEnvVarPassing (0.00s) +2026-07-05T01:36:31.3146062Z === RUN TestPromoteGenerator_EmptyDeploys +2026-07-05T01:36:31.3146387Z --- PASS: TestPromoteGenerator_EmptyDeploys (0.00s) +2026-07-05T01:36:31.3146723Z === RUN TestPromoteGenerator_SingleDeploy +2026-07-05T01:36:31.3147041Z --- PASS: TestPromoteGenerator_SingleDeploy (0.00s) +2026-07-05T01:36:31.3147424Z === RUN TestPromoteGenerator_DeployNameWithSpecialChars +2026-07-05T01:36:31.3147845Z --- PASS: TestPromoteGenerator_DeployNameWithSpecialChars (0.00s) +2026-07-05T01:36:31.3148033Z === RUN TestPromoteGenerator_DeployJobPassesEnvironmentAndSHA +2026-07-05T01:36:31.3148247Z --- PASS: TestPromoteGenerator_DeployJobPassesEnvironmentAndSHA (0.00s) +2026-07-05T01:36:31.3148387Z === RUN TestPromoteGenerator_DeployResultEnvVars +2026-07-05T01:36:31.3148550Z --- PASS: TestPromoteGenerator_DeployResultEnvVars (0.00s) +2026-07-05T01:36:31.3148870Z === RUN TestPromoteGenerator_DeployManifestUpdateTimestamp +2026-07-05T01:36:31.3149080Z --- PASS: TestPromoteGenerator_DeployManifestUpdateTimestamp (0.00s) +2026-07-05T01:36:31.3149249Z === RUN TestPromoteGenerator_PreflightOutputsDeploysToRun +2026-07-05T01:36:31.3149453Z --- PASS: TestPromoteGenerator_PreflightOutputsDeploysToRun (0.00s) +2026-07-05T01:36:31.3149693Z === RUN TestPromoteGenerator_BuildLinkedDeployInheritsTriggersForDetection +2026-07-05T01:36:31.3149970Z --- PASS: TestPromoteGenerator_BuildLinkedDeployInheritsTriggersForDetection (0.00s) +2026-07-05T01:36:31.3150362Z === RUN TestPromoteGenerator_TriggerBasedDeployUsesOwnTriggers +2026-07-05T01:36:31.3150582Z --- PASS: TestPromoteGenerator_TriggerBasedDeployUsesOwnTriggers (0.00s) +2026-07-05T01:36:31.3150762Z === RUN TestPromoteGenerator_UnconstrainedDeployAlwaysInList +2026-07-05T01:36:31.3150964Z --- PASS: TestPromoteGenerator_UnconstrainedDeployAlwaysInList (0.00s) +2026-07-05T01:36:31.3151135Z === RUN TestPromoteGenerator_NeverDeployedEnvHandling +2026-07-05T01:36:31.3151324Z --- PASS: TestPromoteGenerator_NeverDeployedEnvHandling (0.00s) +2026-07-05T01:36:31.3151468Z === RUN TestPromoteGenerator_DeployDryRunCondition +2026-07-05T01:36:31.3151639Z --- PASS: TestPromoteGenerator_DeployDryRunCondition (0.00s) +2026-07-05T01:36:31.3151797Z === RUN TestPromoteGenerator_ManifestCommitOnlyIfChanged +2026-07-05T01:36:31.3151994Z --- PASS: TestPromoteGenerator_ManifestCommitOnlyIfChanged (0.00s) +2026-07-05T01:36:31.3152114Z === RUN TestResolveDeployInputs +2026-07-05T01:36:31.3152238Z --- PASS: TestResolveDeployInputs (0.00s) +2026-07-05T01:36:31.3152367Z === RUN TestPreflightDeployMatrixOutputs +2026-07-05T01:36:31.3152515Z --- PASS: TestPreflightDeployMatrixOutputs (0.00s) +2026-07-05T01:36:31.3152658Z === RUN TestPreflightNoMatrixStepWhenNoInputs +2026-07-05T01:36:31.3152817Z --- PASS: TestPreflightNoMatrixStepWhenNoInputs (0.00s) +2026-07-05T01:36:31.3153115Z === RUN TestDeployJobsMatrixStrategy +2026-07-05T01:36:31.3153369Z === RUN TestDeployJobsMatrixStrategy/deploy_with_inputs_uses_matrix_strategy +2026-07-05T01:36:31.3153605Z === RUN TestDeployJobsMatrixStrategy/deploy_without_inputs_uses_single_deploy +2026-07-05T01:36:31.3153768Z === RUN TestDeployJobsMatrixStrategy/mixed_deploy_types +2026-07-05T01:36:31.3153979Z === RUN TestDeployJobsMatrixStrategy/deploy_with_multiple_custom_inputs +2026-07-05T01:36:31.3154116Z --- PASS: TestDeployJobsMatrixStrategy (0.00s) +2026-07-05T01:36:31.3154471Z --- PASS: TestDeployJobsMatrixStrategy/deploy_with_inputs_uses_matrix_strategy (0.00s) +2026-07-05T01:36:31.3154822Z --- PASS: TestDeployJobsMatrixStrategy/deploy_without_inputs_uses_single_deploy (0.00s) +2026-07-05T01:36:31.3155079Z --- PASS: TestDeployJobsMatrixStrategy/mixed_deploy_types (0.00s) +2026-07-05T01:36:31.3155395Z --- PASS: TestDeployJobsMatrixStrategy/deploy_with_multiple_custom_inputs (0.00s) +2026-07-05T01:36:31.3155525Z === RUN TestPromoteGenerator_APIQueryStep +2026-07-05T01:36:31.3155759Z === RUN TestPromoteGenerator_APIQueryStep/Finalize_using_CLI_instead_of_bash +2026-07-05T01:36:31.3155990Z === RUN TestPromoteGenerator_APIQueryStep/Finalize_with_single_deploy_uses_CLI +2026-07-05T01:36:31.3156137Z --- PASS: TestPromoteGenerator_APIQueryStep (0.00s) +2026-07-05T01:36:31.3156466Z --- PASS: TestPromoteGenerator_APIQueryStep/Finalize_using_CLI_instead_of_bash (0.00s) +2026-07-05T01:36:31.3156815Z --- PASS: TestPromoteGenerator_APIQueryStep/Finalize_with_single_deploy_uses_CLI (0.00s) +2026-07-05T01:36:31.3156969Z === RUN TestPromoteGenerator_CascadeDeployStateUpdate +2026-07-05T01:36:31.3157151Z --- PASS: TestPromoteGenerator_CascadeDeployStateUpdate (0.00s) +2026-07-05T01:36:31.3157286Z === RUN TestPromoteGenerator_PreflightUsesCLI +2026-07-05T01:36:31.3157433Z --- PASS: TestPromoteGenerator_PreflightUsesCLI (0.00s) +2026-07-05T01:36:31.3157561Z === RUN TestPromoteGenerator_FinalizeUsesCLI +2026-07-05T01:36:31.3157717Z --- PASS: TestPromoteGenerator_FinalizeUsesCLI (0.00s) +2026-07-05T01:36:31.3157924Z === RUN TestPromoteGenerator_RollbackJobs +2026-07-05T01:36:31.3158065Z --- PASS: TestPromoteGenerator_RollbackJobs (0.00s) +2026-07-05T01:36:31.3158228Z === RUN TestPromoteGenerator_NoRollbackWhenNoEnvironments +2026-07-05T01:36:31.3158431Z --- PASS: TestPromoteGenerator_NoRollbackWhenNoEnvironments (0.01s) +2026-07-05T01:36:31.3158579Z === RUN TestPromoteGenerator_RollbackOnFailureInput +2026-07-05T01:36:31.3158753Z --- PASS: TestPromoteGenerator_RollbackOnFailureInput (0.00s) +2026-07-05T01:36:31.3158918Z === RUN TestPromoteGenerator_ExternalDeployRollbackJobs +2026-07-05T01:36:31.3159107Z --- PASS: TestPromoteGenerator_ExternalDeployRollbackJobs (0.00s) +2026-07-05T01:36:31.3159221Z === RUN TestBuildDeployMatrix +2026-07-05T01:36:31.3159447Z === RUN TestBuildDeployMatrix/multiple_promotions_with_env_inputs_overrides +2026-07-05T01:36:31.3159585Z === RUN TestBuildDeployMatrix/single_promotion +2026-07-05T01:36:31.3159790Z === RUN TestBuildDeployMatrix/deploy_not_found_returns_empty_matrix +2026-07-05T01:36:31.3160189Z === RUN TestBuildDeployMatrix/empty_promotions_returns_empty_matrix +2026-07-05T01:36:31.3160379Z === RUN TestBuildDeployMatrix/version_substitution +2026-07-05T01:36:31.3160496Z --- PASS: TestBuildDeployMatrix (0.00s) +2026-07-05T01:36:31.3160845Z --- PASS: TestBuildDeployMatrix/multiple_promotions_with_env_inputs_overrides (0.00s) +2026-07-05T01:36:31.3161066Z --- PASS: TestBuildDeployMatrix/single_promotion (0.00s) +2026-07-05T01:36:31.3161367Z --- PASS: TestBuildDeployMatrix/deploy_not_found_returns_empty_matrix (0.00s) +2026-07-05T01:36:31.3161661Z --- PASS: TestBuildDeployMatrix/empty_promotions_returns_empty_matrix (0.00s) +2026-07-05T01:36:31.3161887Z --- PASS: TestBuildDeployMatrix/version_substitution (0.00s) +2026-07-05T01:36:31.3162039Z === RUN TestPromoteGenerator_PublishCallbackEmitted +2026-07-05T01:36:31.3162217Z --- PASS: TestPromoteGenerator_PublishCallbackEmitted (0.00s) +2026-07-05T01:36:31.3162535Z === RUN TestPromoteGenerator_NoPublishCallbackWhenNotConfigured +2026-07-05T01:36:31.3162774Z --- PASS: TestPromoteGenerator_NoPublishCallbackWhenNotConfigured (0.00s) +2026-07-05T01:36:31.3162913Z === RUN TestPromoteGenerator_HasConcurrencyBlock +2026-07-05T01:36:31.3163078Z --- PASS: TestPromoteGenerator_HasConcurrencyBlock (0.00s) +2026-07-05T01:36:31.3163211Z === RUN TestPromoteGenerator_ConcurrencyOverride +2026-07-05T01:36:31.3163363Z --- PASS: TestPromoteGenerator_ConcurrencyOverride (0.00s) +2026-07-05T01:36:31.3163561Z === RUN TestPromoteGenerator_SelectiveDeploysAndForcePassthrough +2026-07-05T01:36:31.3163785Z --- PASS: TestPromoteGenerator_SelectiveDeploysAndForcePassthrough (0.00s) +2026-07-05T01:36:31.3163927Z === RUN TestPromoteGenerator_ReleaseBuildDispatch +2026-07-05T01:36:31.3164230Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/no_release_workflow_configured_omits_the_step +2026-07-05T01:36:31.3164530Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/release_config_without_workflow_omits_the_step +2026-07-05T01:36:31.3164854Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/release_workflow_configured_emits_a_dispatch_to_it +2026-07-05T01:36:31.3165141Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/bare_release_workflow_filename_is_normalized +2026-07-05T01:36:31.3165315Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch (0.00s) +2026-07-05T01:36:31.3165754Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/no_release_workflow_configured_omits_the_step (0.00s) +2026-07-05T01:36:31.3166185Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/release_config_without_workflow_omits_the_step (0.00s) +2026-07-05T01:36:31.3166639Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/release_workflow_configured_emits_a_dispatch_to_it (0.00s) +2026-07-05T01:36:31.3167067Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/bare_release_workflow_filename_is_normalized (0.00s) +2026-07-05T01:36:31.3167193Z === RUN TestReleaseGenerator_NoRollbackJob +2026-07-05T01:36:31.3167346Z --- PASS: TestReleaseGenerator_NoRollbackJob (0.00s) +2026-07-05T01:36:31.3167582Z === RUN TestReleaseGenerator_Generate +2026-07-05T01:36:31.3167721Z --- PASS: TestReleaseGenerator_Generate (0.00s) +2026-07-05T01:36:31.3167846Z === RUN TestReleaseGenerator_ReleaseActions +2026-07-05T01:36:31.3167998Z --- PASS: TestReleaseGenerator_ReleaseActions (0.00s) +2026-07-05T01:36:31.3168116Z === RUN TestReleaseGenerator_ValidYAML +2026-07-05T01:36:31.3168249Z --- PASS: TestReleaseGenerator_ValidYAML (0.00s) +2026-07-05T01:36:31.3168405Z === RUN TestReleaseGenerator_LatestReleaseStateUpdate +2026-07-05T01:36:31.3168589Z --- PASS: TestReleaseGenerator_LatestReleaseStateUpdate (0.00s) +2026-07-05T01:36:31.3168830Z === RUN TestReleaseGenerator_LatestReleaseStateUpdate_PushRetriesOnConflict +2026-07-05T01:36:31.3169097Z --- PASS: TestReleaseGenerator_LatestReleaseStateUpdate_PushRetriesOnConflict (0.00s) +2026-07-05T01:36:31.3169221Z === RUN TestReleaseGenerator_DryRunSupport +2026-07-05T01:36:31.3169378Z --- PASS: TestReleaseGenerator_DryRunSupport (0.00s) +2026-07-05T01:36:31.3169522Z === RUN TestReleaseGenerator_SemverTagCalculation +2026-07-05T01:36:31.3169697Z --- PASS: TestReleaseGenerator_SemverTagCalculation (0.00s) +2026-07-05T01:36:31.3169847Z === RUN TestReleaseGenerator_ChangelogGeneration +2026-07-05T01:36:31.3170166Z --- PASS: TestReleaseGenerator_ChangelogGeneration (0.00s) +2026-07-05T01:36:31.3170290Z === RUN TestReleaseGenerator_Summary +2026-07-05T01:36:31.3170420Z --- PASS: TestReleaseGenerator_Summary (0.00s) +2026-07-05T01:36:31.3170563Z === RUN TestReleaseGenerator_UsesCorrectActions +2026-07-05T01:36:31.3170729Z --- PASS: TestReleaseGenerator_UsesCorrectActions (0.00s) +2026-07-05T01:36:31.3170850Z === RUN TestReleaseGenerator_WithCLIVersion +2026-07-05T01:36:31.3170999Z --- PASS: TestReleaseGenerator_WithCLIVersion (0.00s) +2026-07-05T01:36:31.3171132Z === RUN TestReleaseGenerator_HasConcurrencyBlock +2026-07-05T01:36:31.3171296Z --- PASS: TestReleaseGenerator_HasConcurrencyBlock (0.00s) +2026-07-05T01:36:31.3171570Z === RUN TestReleaseGenerator_ConcurrencyOverride +2026-07-05T01:36:31.3171729Z --- PASS: TestReleaseGenerator_ConcurrencyOverride (0.00s) +2026-07-05T01:36:31.3171885Z === RUN TestRollbackGenerator_Enabled_FalseWithOneEnv +2026-07-05T01:36:31.3172060Z --- PASS: TestRollbackGenerator_Enabled_FalseWithOneEnv (0.00s) +2026-07-05T01:36:31.3172210Z === RUN TestRollbackGenerator_Enabled_TrueWithTwoEnvs +2026-07-05T01:36:31.3172388Z --- PASS: TestRollbackGenerator_Enabled_TrueWithTwoEnvs (0.00s) +2026-07-05T01:36:31.3172540Z === RUN TestRollbackGenerator_Enabled_FalseWithZeroEnv +2026-07-05T01:36:31.3172730Z --- PASS: TestRollbackGenerator_Enabled_FalseWithZeroEnv (0.00s) +2026-07-05T01:36:31.3172917Z === RUN TestRollbackGenerator_EnvironmentChoices_ExcludeFirstEnv +2026-07-05T01:36:31.3173142Z --- PASS: TestRollbackGenerator_EnvironmentChoices_ExcludeFirstEnv (0.00s) +2026-07-05T01:36:31.3173266Z === RUN TestRollbackGenerator_DispatchInputs +2026-07-05T01:36:31.3173427Z --- PASS: TestRollbackGenerator_DispatchInputs (0.00s) +2026-07-05T01:36:31.3173570Z === RUN TestRollbackGenerator_PreflightResolves +2026-07-05T01:36:31.3173729Z --- PASS: TestRollbackGenerator_PreflightResolves (0.00s) +2026-07-05T01:36:31.3173892Z === RUN TestRollbackGenerator_DeployJobsKeyedOnTargetSha +2026-07-05T01:36:31.3174081Z --- PASS: TestRollbackGenerator_DeployJobsKeyedOnTargetSha (0.00s) +2026-07-05T01:36:31.3174223Z === RUN TestRollbackGenerator_FinalizeNeedsWiring +2026-07-05T01:36:31.3174390Z --- PASS: TestRollbackGenerator_FinalizeNeedsWiring (0.00s) +2026-07-05T01:36:31.3174557Z === RUN TestRollbackGenerator_FinalizeThreadsDeployResults +2026-07-05T01:36:31.3174766Z --- PASS: TestRollbackGenerator_FinalizeThreadsDeployResults (0.00s) +2026-07-05T01:36:31.3174939Z === RUN TestRollbackGenerator_FinalizeThreadsDeployableScope +2026-07-05T01:36:31.3175156Z --- PASS: TestRollbackGenerator_FinalizeThreadsDeployableScope (0.00s) +2026-07-05T01:36:31.3175362Z === RUN TestRollbackGenerator_PreflightBeforeDeployBeforeFinalize +2026-07-05T01:36:31.3175726Z --- PASS: TestRollbackGenerator_PreflightBeforeDeployBeforeFinalize (0.00s) +2026-07-05T01:36:31.3175877Z === RUN TestRollbackGenerator_OffStateByteIdentical +2026-07-05T01:36:31.3176050Z --- PASS: TestRollbackGenerator_OffStateByteIdentical (0.00s) +2026-07-05T01:36:31.3176199Z === RUN TestRollbackGenerator_DispatchTriggerEmitted +2026-07-05T01:36:31.3176376Z --- PASS: TestRollbackGenerator_DispatchTriggerEmitted (0.00s) +2026-07-05T01:36:31.3176521Z === RUN TestRollbackGenerator_PreflightCoalescesReads +2026-07-05T01:36:31.3176699Z --- PASS: TestRollbackGenerator_PreflightCoalescesReads (0.00s) +2026-07-05T01:36:31.3176831Z === RUN TestRollbackGenerator_GuardsCoalesceReads +2026-07-05T01:36:31.3176997Z --- PASS: TestRollbackGenerator_GuardsCoalesceReads (0.00s) +2026-07-05T01:36:31.3177134Z === RUN TestRollbackGenerator_DispatchActionlint +2026-07-05T01:36:31.3177350Z rollback_test.go:265: actionlint not installed +2026-07-05T01:36:31.3177527Z --- SKIP: TestRollbackGenerator_DispatchActionlint (0.00s) +2026-07-05T01:36:31.3177675Z === RUN TestRolloutReservedFieldsAreByteIdentical +2026-07-05T01:36:31.3177831Z === PAUSE TestRolloutReservedFieldsAreByteIdentical +2026-07-05T01:36:31.3177946Z === RUN TestWriteSecretsBlock_NilNoOp +2026-07-05T01:36:31.3178086Z --- PASS: TestWriteSecretsBlock_NilNoOp (0.00s) +2026-07-05T01:36:31.3178199Z === RUN TestWriteSecretsBlock_Inherit +2026-07-05T01:36:31.3178325Z --- PASS: TestWriteSecretsBlock_Inherit (0.00s) +2026-07-05T01:36:31.3178453Z === RUN TestWriteSecretsBlock_ExplicitMap +2026-07-05T01:36:31.3178591Z --- PASS: TestWriteSecretsBlock_ExplicitMap (0.00s) +2026-07-05T01:36:31.3178744Z === RUN TestOrchestrateCallbackJob_NoSecretsByDefault +2026-07-05T01:36:31.3178926Z --- PASS: TestOrchestrateCallbackJob_NoSecretsByDefault (0.00s) +2026-07-05T01:36:31.3179057Z === RUN TestOrchestrateCallbackJob_InheritSecrets +2026-07-05T01:36:31.3179222Z --- PASS: TestOrchestrateCallbackJob_InheritSecrets (0.00s) +2026-07-05T01:36:31.3179458Z === RUN TestOrchestrateCallbackJob_ExplicitSecretsMap +2026-07-05T01:36:31.3179651Z --- PASS: TestOrchestrateCallbackJob_ExplicitSecretsMap (0.00s) +2026-07-05T01:36:31.3179827Z === RUN TestOrchestrateDeployCallbackJob_NoSecretsByDefault +2026-07-05T01:36:31.3180144Z --- PASS: TestOrchestrateDeployCallbackJob_NoSecretsByDefault (0.00s) +2026-07-05T01:36:31.3180310Z === RUN TestOrchestrateDeployCallbackJob_InheritSecrets +2026-07-05T01:36:31.3180496Z --- PASS: TestOrchestrateDeployCallbackJob_InheritSecrets (0.00s) +2026-07-05T01:36:31.3180671Z === RUN TestOrchestrateDeployCallbackJob_ExplicitSecretsMap +2026-07-05T01:36:31.3180877Z --- PASS: TestOrchestrateDeployCallbackJob_ExplicitSecretsMap (0.00s) +2026-07-05T01:36:31.3181014Z === RUN TestPromoteDeployJob_ExplicitSecretsMap +2026-07-05T01:36:31.3181176Z --- PASS: TestPromoteDeployJob_ExplicitSecretsMap (0.00s) +2026-07-05T01:36:31.3181305Z === RUN TestPromoteDeployJob_NoSecretsByDefault +2026-07-05T01:36:31.3181472Z --- PASS: TestPromoteDeployJob_NoSecretsByDefault (0.00s) +2026-07-05T01:36:31.3181609Z === RUN TestPromoteDeployJob_InheritSecrets +2026-07-05T01:36:31.3181752Z --- PASS: TestPromoteDeployJob_InheritSecrets (0.00s) +2026-07-05T01:36:31.3181880Z === RUN TestHotfixBuildJob_NoSecretsByDefault +2026-07-05T01:36:31.3182023Z --- PASS: TestHotfixBuildJob_NoSecretsByDefault (0.00s) +2026-07-05T01:36:31.3182148Z === RUN TestHotfixBuildJob_InheritSecrets +2026-07-05T01:36:31.3182281Z --- PASS: TestHotfixBuildJob_InheritSecrets (0.00s) +2026-07-05T01:36:31.3182410Z === RUN TestHotfixBuildJob_ExplicitSecretsMap +2026-07-05T01:36:31.3182560Z --- PASS: TestHotfixBuildJob_ExplicitSecretsMap (0.00s) +2026-07-05T01:36:31.3182687Z === RUN TestOrchestrateFinalizeDualStateWrite +2026-07-05T01:36:31.3182845Z --- PASS: TestOrchestrateFinalizeDualStateWrite (0.00s) +2026-07-05T01:36:31.3182982Z === RUN TestOrchestrateFinalizeStateTokenOverride +2026-07-05T01:36:31.3183158Z --- PASS: TestOrchestrateFinalizeStateTokenOverride (0.00s) +2026-07-05T01:36:31.3183285Z === RUN TestReleaseFinalizeDualStateWrite +2026-07-05T01:36:31.3183576Z --- PASS: TestReleaseFinalizeDualStateWrite (0.00s) +2026-07-05T01:36:31.3183700Z === RUN TestPromoteFinalizeStateTokenAuth +2026-07-05T01:36:31.3183836Z --- PASS: TestPromoteFinalizeStateTokenAuth (0.00s) +2026-07-05T01:36:31.3183980Z === RUN TestOrchestrateFinalizeStampsBotAuthor +2026-07-05T01:36:31.3184151Z --- PASS: TestOrchestrateFinalizeStampsBotAuthor (0.00s) +2026-07-05T01:36:31.3184278Z === RUN TestReleaseFinalizeStampsBotAuthor +2026-07-05T01:36:31.3184430Z --- PASS: TestReleaseFinalizeStampsBotAuthor (0.00s) +2026-07-05T01:36:31.3184558Z === RUN TestStateWriteHonorsCustomGitIdentity +2026-07-05T01:36:31.3184718Z --- PASS: TestStateWriteHonorsCustomGitIdentity (0.00s) +2026-07-05T01:36:31.3184827Z === RUN TestStateWriteNoEmDash +2026-07-05T01:36:31.3184952Z --- PASS: TestStateWriteNoEmDash (0.00s) +2026-07-05T01:36:31.3185107Z === RUN TestTelemetryReservedFieldsAreByteIdentical +2026-07-05T01:36:31.3185288Z --- PASS: TestTelemetryReservedFieldsAreByteIdentical (0.04s) +2026-07-05T01:36:31.3185416Z === RUN TestValidateCheckGenerator_Enabled +2026-07-05T01:36:31.3185555Z --- PASS: TestValidateCheckGenerator_Enabled (0.00s) +2026-07-05T01:36:31.3185721Z === RUN TestValidateCheckGenerator_TriggersAndPermissions +2026-07-05T01:36:31.3185926Z --- PASS: TestValidateCheckGenerator_TriggersAndPermissions (0.00s) +2026-07-05T01:36:31.3186047Z === RUN TestValidateCheckGenerator_Steps +2026-07-05T01:36:31.3186191Z --- PASS: TestValidateCheckGenerator_Steps (0.00s) +2026-07-05T01:36:31.3186344Z === RUN TestValidateCheckGenerator_SetupCLIPassesToken +2026-07-05T01:36:31.3186537Z --- PASS: TestValidateCheckGenerator_SetupCLIPassesToken (0.00s) +2026-07-05T01:36:31.3186665Z === RUN TestValidateCheckGenerator_PinModeSHA +2026-07-05T01:36:31.3186809Z --- PASS: TestValidateCheckGenerator_PinModeSHA (0.00s) +2026-07-05T01:36:31.3186942Z === RUN TestValidateCheckGenerator_ValidYAML +2026-07-05T01:36:31.3187087Z --- PASS: TestValidateCheckGenerator_ValidYAML (0.00s) +2026-07-05T01:36:31.3187340Z === RUN TestValidateCheckGeneratorE2E +2026-07-05T01:36:31.3187472Z --- PASS: TestValidateCheckGeneratorE2E (0.00s) +2026-07-05T01:36:31.3187651Z === RUN TestVersionOverridesReservedFieldIsByteIdentical +2026-07-05T01:36:31.3187833Z === PAUSE TestVersionOverridesReservedFieldIsByteIdentical +2026-07-05T01:36:31.3187962Z === RUN TestWorkflowsConsistentWithActionPins +2026-07-05T01:36:31.3188408Z workflow_consistency_test.go:162: governed uses: refs diverge from internal/generate/action_pins.yaml: +2026-07-05T01:36:31.3189342Z .github/workflows/action-pins.yml:49 actions/checkout want 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 got 9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc # v7.0.0 +2026-07-05T01:36:31.3189673Z update the workflow/composite file or the manifest so they agree. +2026-07-05T01:36:31.3189848Z --- FAIL: TestWorkflowsConsistentWithActionPins (0.02s) +2026-07-05T01:36:31.3190161Z === RUN TestWorkflowConsistencyLint_DetectsDivergence +2026-07-05T01:36:31.3190364Z --- PASS: TestWorkflowConsistencyLint_DetectsDivergence (0.00s) +2026-07-05T01:36:31.3190479Z === RUN TestParseWorkflowOutputs +2026-07-05T01:36:31.3190610Z --- PASS: TestParseWorkflowOutputs (0.00s) +2026-07-05T01:36:31.3190739Z === RUN TestParseWorkflowOutputs_NoOutputs +2026-07-05T01:36:31.3190881Z --- PASS: TestParseWorkflowOutputs_NoOutputs (0.00s) +2026-07-05T01:36:31.3191012Z === RUN TestParseWorkflowOutputs_NotReusable +2026-07-05T01:36:31.3191157Z --- PASS: TestParseWorkflowOutputs_NotReusable (0.00s) +2026-07-05T01:36:31.3191276Z === RUN TestParseWorkflowInputs +2026-07-05T01:36:31.3191399Z --- PASS: TestParseWorkflowInputs (0.00s) +2026-07-05T01:36:31.3191544Z === CONT TestRolloutReservedFieldsAreByteIdentical +2026-07-05T01:36:31.3191663Z === CONT TestNormalizeWorkflowPath +2026-07-05T01:36:31.3191918Z === RUN TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir +2026-07-05T01:36:31.3192179Z === PAUSE TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir +2026-07-05T01:36:31.3192524Z === CONT TestDeployTargetReservedFieldsAreByteIdentical +2026-07-05T01:36:31.3192696Z === CONT TestVersionOverridesReservedFieldIsByteIdentical +2026-07-05T01:36:31.3192938Z === RUN TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix +2026-07-05T01:36:31.3193167Z === PAUSE TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix +2026-07-05T01:36:31.3193372Z === RUN TestNormalizeWorkflowPath/already_normalized_path_unchanged +2026-07-05T01:36:31.3193573Z === PAUSE TestNormalizeWorkflowPath/already_normalized_path_unchanged +2026-07-05T01:36:31.3193761Z === RUN TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged +2026-07-05T01:36:31.3193960Z === PAUSE TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged +2026-07-05T01:36:31.3194172Z === RUN TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged +2026-07-05T01:36:31.3194390Z === PAUSE TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged +2026-07-05T01:36:31.3194654Z === CONT TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir +2026-07-05T01:36:31.3194862Z === CONT TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged +2026-07-05T01:36:31.3195061Z === CONT TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged +2026-07-05T01:36:31.3195255Z === CONT TestNormalizeWorkflowPath/already_normalized_path_unchanged +2026-07-05T01:36:31.3195488Z === CONT TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix +2026-07-05T01:36:31.3195620Z --- PASS: TestNormalizeWorkflowPath (0.00s) +2026-07-05T01:36:31.3195998Z --- PASS: TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir (0.00s) +2026-07-05T01:36:31.3196326Z --- PASS: TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged (0.00s) +2026-07-05T01:36:31.3196626Z --- PASS: TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged (0.00s) +2026-07-05T01:36:31.3197047Z --- PASS: TestNormalizeWorkflowPath/already_normalized_path_unchanged (0.00s) +2026-07-05T01:36:31.3197415Z --- PASS: TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix (0.00s) +2026-07-05T01:36:31.3197621Z --- PASS: TestDeployTargetReservedFieldsAreByteIdentical (0.00s) +2026-07-05T01:36:31.3197806Z --- PASS: TestRolloutReservedFieldsAreByteIdentical (0.00s) +2026-07-05T01:36:31.3198016Z --- PASS: TestVersionOverridesReservedFieldIsByteIdentical (0.00s) +2026-07-05T01:36:31.3198102Z FAIL +2026-07-05T01:36:31.3198213Z coverage: 92.6% of statements +2026-07-05T01:36:31.3198404Z FAIL github.com/stablekernel/cascade/internal/generate 1.324s +2026-07-05T01:36:31.3198508Z === RUN TestWriter_Set +2026-07-05T01:36:31.3198617Z --- PASS: TestWriter_Set (0.00s) +2026-07-05T01:36:31.3198723Z === RUN TestWriter_SetBool +2026-07-05T01:36:31.3198833Z --- PASS: TestWriter_SetBool (0.00s) +2026-07-05T01:36:31.3198937Z === RUN TestWriter_SetJSON +2026-07-05T01:36:31.3199052Z --- PASS: TestWriter_SetJSON (0.00s) +2026-07-05T01:36:31.3199161Z === RUN TestWriter_SetMultiline +2026-07-05T01:36:31.3199286Z --- PASS: TestWriter_SetMultiline (0.00s) +2026-07-05T01:36:31.3199386Z === RUN TestWriter_FlushToFile +2026-07-05T01:36:31.3199507Z --- PASS: TestWriter_FlushToFile (0.00s) +2026-07-05T01:36:31.3199621Z === RUN TestWriter_FlushMultilineToFile +2026-07-05T01:36:31.3199773Z --- PASS: TestWriter_FlushMultilineToFile (0.00s) +2026-07-05T01:36:31.3199858Z PASS +2026-07-05T01:36:31.3199957Z coverage: 72.4% of statements +2026-07-05T01:36:31.3200412Z ok github.com/stablekernel/cascade/internal/ghaoutput 1.018s coverage: 72.4% of statements +2026-07-05T01:36:34.2239640Z === RUN TestDeleteRemoteBranch +2026-07-05T01:36:34.2240381Z --- PASS: TestDeleteRemoteBranch (0.07s) +2026-07-05T01:36:34.2240833Z === RUN TestDeleteRemoteTag +2026-07-05T01:36:34.2241246Z --- PASS: TestDeleteRemoteTag (0.07s) +2026-07-05T01:36:34.2241677Z === RUN TestListRemoteBranches +2026-07-05T01:36:34.2242113Z --- PASS: TestListRemoteBranches (0.05s) +2026-07-05T01:36:34.2242480Z === RUN TestParseCommits +2026-07-05T01:36:34.2243208Z === RUN TestParseCommits/single_commit +2026-07-05T01:36:34.2243654Z === RUN TestParseCommits/multiple_commits +2026-07-05T01:36:34.2244144Z === RUN TestParseCommits/commit_without_body +2026-07-05T01:36:34.2244714Z === RUN TestParseCommits/empty_input +2026-07-05T01:36:34.2245223Z === RUN TestParseCommits/multiline_body +2026-07-05T01:36:34.2245680Z === RUN TestParseCommits/whitespace_handling +2026-07-05T01:36:34.2246211Z === RUN TestParseCommits/same_author_multiple_commits +2026-07-05T01:36:34.2246706Z --- PASS: TestParseCommits (0.00s) +2026-07-05T01:36:34.2247241Z --- PASS: TestParseCommits/single_commit (0.00s) +2026-07-05T01:36:34.2247849Z --- PASS: TestParseCommits/multiple_commits (0.00s) +2026-07-05T01:36:34.2248487Z --- PASS: TestParseCommits/commit_without_body (0.00s) +2026-07-05T01:36:34.2249076Z --- PASS: TestParseCommits/empty_input (0.00s) +2026-07-05T01:36:34.2249679Z --- PASS: TestParseCommits/multiline_body (0.00s) +2026-07-05T01:36:34.2250534Z --- PASS: TestParseCommits/whitespace_handling (0.00s) +2026-07-05T01:36:34.2251309Z --- PASS: TestParseCommits/same_author_multiple_commits (0.00s) +2026-07-05T01:36:34.2251988Z === RUN TestGetCommits_UnknownBaseSHAReturnsError +2026-07-05T01:36:34.2252627Z --- PASS: TestGetCommits_UnknownBaseSHAReturnsError (0.02s) +2026-07-05T01:36:34.2253242Z === RUN TestGetCommits_EmptyRangeIsNotAnError +2026-07-05T01:36:34.2253827Z --- PASS: TestGetCommits_EmptyRangeIsNotAnError (0.02s) +2026-07-05T01:36:34.2254341Z === RUN TestParseLines +2026-07-05T01:36:34.2254748Z === RUN TestParseLines/multiple_lines +2026-07-05T01:36:34.2255218Z === RUN TestParseLines/trailing_newline +2026-07-05T01:36:34.2255711Z === RUN TestParseLines/empty_lines_filtered +2026-07-05T01:36:34.2256214Z === RUN TestParseLines/whitespace_trimmed +2026-07-05T01:36:34.2256673Z === RUN TestParseLines/empty_input +2026-07-05T01:36:34.2257097Z === RUN TestParseLines/single_file +2026-07-05T01:36:34.2257757Z --- PASS: TestParseLines (0.00s) +2026-07-05T01:36:34.2258302Z --- PASS: TestParseLines/multiple_lines (0.00s) +2026-07-05T01:36:34.2258962Z --- PASS: TestParseLines/trailing_newline (0.00s) +2026-07-05T01:36:34.2259700Z --- PASS: TestParseLines/empty_lines_filtered (0.00s) +2026-07-05T01:36:34.2260709Z --- PASS: TestParseLines/whitespace_trimmed (0.00s) +2026-07-05T01:36:34.2261344Z --- PASS: TestParseLines/empty_input (0.00s) +2026-07-05T01:36:34.2261941Z --- PASS: TestParseLines/single_file (0.00s) +2026-07-05T01:36:34.2262443Z === RUN TestIsAncestor_TrueFalseAndError +2026-07-05T01:36:34.2262977Z === RUN TestIsAncestor_TrueFalseAndError/is_ancestor +2026-07-05T01:36:34.2263562Z === RUN TestIsAncestor_TrueFalseAndError/not_ancestor +2026-07-05T01:36:34.2264154Z === RUN TestIsAncestor_TrueFalseAndError/bad_sha_errors +2026-07-05T01:36:34.2264736Z --- PASS: TestIsAncestor_TrueFalseAndError (0.03s) +2026-07-05T01:36:34.2265473Z --- PASS: TestIsAncestor_TrueFalseAndError/is_ancestor (0.00s) +2026-07-05T01:36:34.2266320Z --- PASS: TestIsAncestor_TrueFalseAndError/not_ancestor (0.00s) +2026-07-05T01:36:34.2267150Z --- PASS: TestIsAncestor_TrueFalseAndError/bad_sha_errors (0.00s) +2026-07-05T01:36:34.2267736Z === RUN TestBranchExists +2026-07-05T01:36:34.2268152Z === RUN TestBranchExists/existing_branch +2026-07-05T01:36:34.2268649Z === RUN TestBranchExists/missing_branch +2026-07-05T01:36:34.2269116Z --- PASS: TestBranchExists (0.05s) +2026-07-05T01:36:34.2269687Z --- PASS: TestBranchExists/existing_branch (0.00s) +2026-07-05T01:36:34.2270493Z --- PASS: TestBranchExists/missing_branch (0.00s) +2026-07-05T01:36:34.2271003Z === RUN TestRemoteBranchSHA +2026-07-05T01:36:34.2271445Z === RUN TestRemoteBranchSHA/existing_branch +2026-07-05T01:36:34.2271954Z === RUN TestRemoteBranchSHA/missing_branch +2026-07-05T01:36:34.2272444Z --- PASS: TestRemoteBranchSHA (0.05s) +2026-07-05T01:36:34.2273050Z --- PASS: TestRemoteBranchSHA/existing_branch (0.00s) +2026-07-05T01:36:34.2273735Z --- PASS: TestRemoteBranchSHA/missing_branch (0.00s) +2026-07-05T01:36:34.2274518Z === RUN TestGetLatestTag_IgnoresNonVersionTags +2026-07-05T01:36:34.2275154Z --- PASS: TestGetLatestTag_IgnoresNonVersionTags (0.03s) +2026-07-05T01:36:34.2275779Z === RUN TestGetLatestReleaseTag_IgnoresNonVersionTags +2026-07-05T01:36:34.2276473Z --- PASS: TestGetLatestReleaseTag_IgnoresNonVersionTags (0.03s) +2026-07-05T01:36:34.2277218Z === RUN TestGetLatestReleaseTag_SkipsRCButKeepsValidRelease +2026-07-05T01:36:34.2277987Z --- PASS: TestGetLatestReleaseTag_SkipsRCButKeepsValidRelease (0.03s) +2026-07-05T01:36:34.2278694Z === RUN TestGetLatestTag_ScopesToDir +2026-07-05T01:36:34.2279238Z --- PASS: TestGetLatestTag_ScopesToDir (0.05s) +2026-07-05T01:36:34.2279803Z === RUN TestGetLatestReleaseTag_ScopesToDir +2026-07-05T01:36:34.2280551Z --- PASS: TestGetLatestReleaseTag_ScopesToDir (0.04s) +2026-07-05T01:36:34.2281111Z === RUN TestIsValidVersionTag +2026-07-05T01:36:34.2281532Z === RUN TestIsValidVersionTag/v1.2.3 +2026-07-05T01:36:34.2282001Z === RUN TestIsValidVersionTag/v0.5.1 +2026-07-05T01:36:34.2282471Z === RUN TestIsValidVersionTag/v1.0.1-rc.0 +2026-07-05T01:36:34.2282995Z === RUN TestIsValidVersionTag/v1.0.1-rc.4.hotfix.5 +2026-07-05T01:36:34.2283500Z === RUN TestIsValidVersionTag/1.2.3 +2026-07-05T01:36:34.2283971Z === RUN TestIsValidVersionTag/release1.2.3 +2026-07-05T01:36:34.2284461Z === RUN TestIsValidVersionTag/v0.6.0-dryrun.1 +2026-07-05T01:36:34.2284957Z === RUN TestIsValidVersionTag/vnightly +2026-07-05T01:36:34.2285416Z === RUN TestIsValidVersionTag/nightly +2026-07-05T01:36:34.2285868Z === RUN TestIsValidVersionTag/latest +2026-07-05T01:36:34.2286307Z === RUN TestIsValidVersionTag/v1.2 +2026-07-05T01:36:34.2286759Z === RUN TestIsValidVersionTag/v1.2.3-rc +2026-07-05T01:36:34.2287225Z === RUN TestIsValidVersionTag/#00 +2026-07-05T01:36:34.2287674Z --- PASS: TestIsValidVersionTag (0.00s) +2026-07-05T01:36:34.2288220Z --- PASS: TestIsValidVersionTag/v1.2.3 (0.00s) +2026-07-05T01:36:34.2289041Z --- PASS: TestIsValidVersionTag/v0.5.1 (0.00s) +2026-07-05T01:36:34.2289654Z --- PASS: TestIsValidVersionTag/v1.0.1-rc.0 (0.00s) +2026-07-05T01:36:34.2290547Z --- PASS: TestIsValidVersionTag/v1.0.1-rc.4.hotfix.5 (0.00s) +2026-07-05T01:36:34.2291200Z --- PASS: TestIsValidVersionTag/1.2.3 (0.00s) +2026-07-05T01:36:34.2291844Z --- PASS: TestIsValidVersionTag/release1.2.3 (0.00s) +2026-07-05T01:36:34.2292557Z --- PASS: TestIsValidVersionTag/v0.6.0-dryrun.1 (0.00s) +2026-07-05T01:36:34.2293226Z --- PASS: TestIsValidVersionTag/vnightly (0.00s) +2026-07-05T01:36:34.2293870Z --- PASS: TestIsValidVersionTag/nightly (0.00s) +2026-07-05T01:36:34.2294477Z --- PASS: TestIsValidVersionTag/latest (0.00s) +2026-07-05T01:36:34.2295055Z --- PASS: TestIsValidVersionTag/v1.2 (0.00s) +2026-07-05T01:36:34.2295633Z --- PASS: TestIsValidVersionTag/v1.2.3-rc (0.00s) +2026-07-05T01:36:34.2296197Z --- PASS: TestIsValidVersionTag/#00 (0.00s) +2026-07-05T01:36:34.2296788Z === RUN TestCommitAndPushWithRetry_RecoversFromNonFastForward +2026-07-05T01:36:34.2297529Z --- PASS: TestCommitAndPushWithRetry_RecoversFromNonFastForward (2.17s) +2026-07-05T01:36:34.2298231Z === RUN TestIsValidVersionTag_InSyncWithVersionParse +2026-07-05T01:36:34.2298880Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3 +2026-07-05T01:36:34.2299515Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.5.1 +2026-07-05T01:36:34.2300349Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.0.0 +2026-07-05T01:36:34.2301028Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v10.20.30 +2026-07-05T01:36:34.2301728Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.0 +2026-07-05T01:36:34.2302433Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.42 +2026-07-05T01:36:34.2303178Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.4.hotfix.5 +2026-07-05T01:36:34.2303882Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/1.2.3 +2026-07-05T01:36:34.2304573Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/release1.2.3 +2026-07-05T01:36:34.2305504Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.1 +2026-07-05T01:36:34.2306302Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.10 +2026-07-05T01:36:34.2307034Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/vnightly +2026-07-05T01:36:34.2307602Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/nightly +2026-07-05T01:36:34.2308063Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/latest +2026-07-05T01:36:34.2308715Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2 +2026-07-05T01:36:34.2309387Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3.4 +2026-07-05T01:36:34.2310247Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc +2026-07-05T01:36:34.2310955Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc.x +2026-07-05T01:36:34.2311680Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-hotfix.1 +2026-07-05T01:36:34.2312402Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v-1.2.3 +2026-07-05T01:36:34.2313045Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/#00 +2026-07-05T01:36:34.2313684Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/vlatest +2026-07-05T01:36:34.2314343Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse (0.00s) +2026-07-05T01:36:34.2315172Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3 (0.00s) +2026-07-05T01:36:34.2316043Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.5.1 (0.00s) +2026-07-05T01:36:34.2316900Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.0.0 (0.00s) +2026-07-05T01:36:34.2317760Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v10.20.30 (0.00s) +2026-07-05T01:36:34.2318683Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.0 (0.00s) +2026-07-05T01:36:34.2319609Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.42 (0.00s) +2026-07-05T01:36:34.2321074Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.4.hotfix.5 (0.00s) +2026-07-05T01:36:34.2322044Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/1.2.3 (0.00s) +2026-07-05T01:36:34.2322964Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/release1.2.3 (0.00s) +2026-07-05T01:36:34.2323951Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.1 (0.00s) +2026-07-05T01:36:34.2324934Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.10 (0.00s) +2026-07-05T01:36:34.2325914Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/vnightly (0.00s) +2026-07-05T01:36:34.2326860Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/nightly (0.00s) +2026-07-05T01:36:34.2327762Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/latest (0.00s) +2026-07-05T01:36:34.2328650Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2 (0.00s) +2026-07-05T01:36:34.2329551Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3.4 (0.00s) +2026-07-05T01:36:34.2330694Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc (0.00s) +2026-07-05T01:36:34.2331646Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc.x (0.00s) +2026-07-05T01:36:34.2332637Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-hotfix.1 (0.00s) +2026-07-05T01:36:34.2333618Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v-1.2.3 (0.00s) +2026-07-05T01:36:34.2334516Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/#00 (0.00s) +2026-07-05T01:36:34.2335418Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/vlatest (0.00s) +2026-07-05T01:36:34.2336008Z PASS +2026-07-05T01:36:34.2336329Z coverage: 66.9% of statements +2026-07-05T01:36:34.2337009Z ok github.com/stablekernel/cascade/internal/git 3.750s coverage: 66.9% of statements +2026-07-05T01:36:34.2337725Z === RUN TestParseJobResults_SimpleJobs +2026-07-05T01:36:34.2338231Z --- PASS: TestParseJobResults_SimpleJobs (0.00s) +2026-07-05T01:36:34.2338739Z === RUN TestParseJobResults_MatrixJobs +2026-07-05T01:36:34.2339495Z --- PASS: TestParseJobResults_MatrixJobs (0.00s) +2026-07-05T01:36:34.2340179Z === RUN TestParseJobResults_MissingDeploys +2026-07-05T01:36:34.2340723Z --- PASS: TestParseJobResults_MissingDeploys (0.00s) +2026-07-05T01:36:34.2341266Z === RUN TestParseJobResults_EmptyResponse +2026-07-05T01:36:34.2341811Z --- PASS: TestParseJobResults_EmptyResponse (0.00s) +2026-07-05T01:36:34.2342350Z === RUN TestParseJobResults_InvalidJSON +2026-07-05T01:36:34.2342860Z --- PASS: TestParseJobResults_InvalidJSON (0.00s) +2026-07-05T01:36:34.2343411Z === RUN TestParseJobResults_CascadeWithTargetEnv +2026-07-05T01:36:34.2344010Z --- PASS: TestParseJobResults_CascadeWithTargetEnv (0.00s) +2026-07-05T01:36:34.2344584Z === RUN TestParseJobResults_NullConclusion +2026-07-05T01:36:34.2345127Z --- PASS: TestParseJobResults_NullConclusion (0.00s) +2026-07-05T01:36:34.2345599Z PASS +2026-07-05T01:36:34.2345913Z coverage: 76.7% of statements +2026-07-05T01:36:34.2346604Z ok github.com/stablekernel/cascade/internal/github 1.014s coverage: 76.7% of statements +2026-07-05T01:36:34.2347300Z === RUN TestDryRun +2026-07-05T01:36:34.2347657Z --- PASS: TestDryRun (0.00s) +2026-07-05T01:36:34.2348027Z === RUN TestJSON +2026-07-05T01:36:34.2348363Z --- PASS: TestJSON (0.00s) +2026-07-05T01:36:34.2348744Z === RUN TestConcurrentAccess +2026-07-05T01:36:34.2349165Z --- PASS: TestConcurrentAccess (0.01s) +2026-07-05T01:36:34.2349572Z PASS +2026-07-05T01:36:34.2349870Z coverage: 66.7% of statements +2026-07-05T01:36:34.2350707Z ok github.com/stablekernel/cascade/internal/globals 1.019s coverage: 66.7% of statements +2026-07-05T01:36:34.2351446Z === RUN TestRun_JobsDefault_EmitsMermaid +2026-07-05T01:36:34.2351945Z --- PASS: TestRun_JobsDefault_EmitsMermaid (0.00s) +2026-07-05T01:36:34.2352458Z === RUN TestRun_UnknownFormat_Errors +2026-07-05T01:36:34.2352936Z --- PASS: TestRun_UnknownFormat_Errors (0.00s) +2026-07-05T01:36:34.2353469Z === RUN TestRun_StagesGranularity_EmitsFlowchart +2026-07-05T01:36:34.2354247Z --- PASS: TestRun_StagesGranularity_EmitsFlowchart (0.00s) +2026-07-05T01:36:34.2354840Z === RUN TestRun_EnvGranularity_EmitsStateMachine +2026-07-05T01:36:34.2355409Z --- PASS: TestRun_EnvGranularity_EmitsStateMachine (0.00s) +2026-07-05T01:36:34.2356017Z === RUN TestRun_CrossRepoGranularity_EmitsLanesAndEdges +2026-07-05T01:36:34.2356680Z --- PASS: TestRun_CrossRepoGranularity_EmitsLanesAndEdges (0.00s) +2026-07-05T01:36:34.2357352Z === RUN TestRun_CrossRepoGranularity_NoExternals_RendersPrimary +2026-07-05T01:36:34.2358088Z --- PASS: TestRun_CrossRepoGranularity_NoExternals_RendersPrimary (0.00s) +2026-07-05T01:36:34.2358733Z === RUN TestRun_UnknownGranularity_Errors +2026-07-05T01:36:34.2359263Z --- PASS: TestRun_UnknownGranularity_Errors (0.00s) +2026-07-05T01:36:34.2359839Z === RUN TestRun_UnknownTheme_Errors +2026-07-05T01:36:34.2360488Z --- PASS: TestRun_UnknownTheme_Errors (0.00s) +2026-07-05T01:36:34.2360984Z === RUN TestRun_BlandTheme_StylesOutput +2026-07-05T01:36:34.2361502Z --- PASS: TestRun_BlandTheme_StylesOutput (0.00s) +2026-07-05T01:36:34.2362022Z === RUN TestRun_CascadeAndBland_Differ +2026-07-05T01:36:34.2362520Z --- PASS: TestRun_CascadeAndBland_Differ (0.00s) +2026-07-05T01:36:34.2363023Z === RUN TestRun_DefaultAliasesCascade +2026-07-05T01:36:34.2363515Z --- PASS: TestRun_DefaultAliasesCascade (0.00s) +2026-07-05T01:36:34.2364039Z === RUN TestRun_FileTheme_Applied +2026-07-05T01:36:34.2364498Z --- PASS: TestRun_FileTheme_Applied (0.00s) +2026-07-05T01:36:34.2364979Z === RUN TestRun_FileTheme_JSONReportsName +2026-07-05T01:36:34.2365490Z --- PASS: TestRun_FileTheme_JSONReportsName (0.00s) +2026-07-05T01:36:34.2366014Z === RUN TestRun_MalformedThemeFile_Errors +2026-07-05T01:36:34.2366503Z --- PASS: TestRun_MalformedThemeFile_Errors (0.00s) +2026-07-05T01:36:34.2366981Z === RUN TestRun_MissingManifest_Errors +2026-07-05T01:36:34.2367436Z --- PASS: TestRun_MissingManifest_Errors (0.00s) +2026-07-05T01:36:34.2367911Z === RUN TestRun_JSON_WrapsDiagram +2026-07-05T01:36:34.2368347Z --- PASS: TestRun_JSON_WrapsDiagram (0.00s) +2026-07-05T01:36:34.2369020Z === RUN TestRun_EmptyDefaults_AutoFills +2026-07-05T01:36:34.2369530Z --- PASS: TestRun_EmptyDefaults_AutoFills (0.00s) +2026-07-05T01:36:34.2370265Z === RUN TestNewCommand_Defaults +2026-07-05T01:36:34.2370720Z --- PASS: TestNewCommand_Defaults (0.00s) +2026-07-05T01:36:34.2371199Z === RUN TestNewCommand_RunEmitsMermaid +2026-07-05T01:36:34.2371719Z --- PASS: TestNewCommand_RunEmitsMermaid (0.00s) +2026-07-05T01:36:34.2372249Z === RUN TestNewCommand_RejectsUnknownFormat +2026-07-05T01:36:34.2372807Z --- PASS: TestNewCommand_RejectsUnknownFormat (0.00s) +2026-07-05T01:36:34.2373279Z PASS +2026-07-05T01:36:34.2373603Z coverage: 86.4% of statements +2026-07-05T01:36:34.2374257Z ok github.com/stablekernel/cascade/internal/graph 1.055s coverage: 86.4% of statements +2026-07-05T01:36:34.9700512Z === RUN TestParseCommitRefs +2026-07-05T01:36:34.9701039Z === RUN TestParseCommitRefs/single_ref +2026-07-05T01:36:34.9701547Z === RUN TestParseCommitRefs/two_refs +2026-07-05T01:36:34.9702067Z === RUN TestParseCommitRefs/trims_whitespace +2026-07-05T01:36:34.9702574Z === RUN TestParseCommitRefs/preserves_order +2026-07-05T01:36:34.9703059Z === RUN TestParseCommitRefs/empty_input +2026-07-05T01:36:34.9703541Z === RUN TestParseCommitRefs/whitespace_only +2026-07-05T01:36:34.9703970Z === RUN TestParseCommitRefs/empty_entry +2026-07-05T01:36:34.9704352Z === RUN TestParseCommitRefs/trailing_comma +2026-07-05T01:36:34.9704826Z === RUN TestParseCommitRefs/duplicate_entry +2026-07-05T01:36:34.9705286Z --- PASS: TestParseCommitRefs (0.00s) +2026-07-05T01:36:34.9705860Z --- PASS: TestParseCommitRefs/single_ref (0.00s) +2026-07-05T01:36:34.9706471Z --- PASS: TestParseCommitRefs/two_refs (0.00s) +2026-07-05T01:36:34.9707235Z --- PASS: TestParseCommitRefs/trims_whitespace (0.00s) +2026-07-05T01:36:34.9707897Z --- PASS: TestParseCommitRefs/preserves_order (0.00s) +2026-07-05T01:36:34.9708534Z --- PASS: TestParseCommitRefs/empty_input (0.00s) +2026-07-05T01:36:34.9709463Z --- PASS: TestParseCommitRefs/whitespace_only (0.00s) +2026-07-05T01:36:34.9710348Z --- PASS: TestParseCommitRefs/empty_entry (0.00s) +2026-07-05T01:36:34.9710979Z --- PASS: TestParseCommitRefs/trailing_comma (0.00s) +2026-07-05T01:36:34.9711627Z --- PASS: TestParseCommitRefs/duplicate_entry (0.00s) +2026-07-05T01:36:34.9712122Z === RUN TestExpandTargetEnvs +2026-07-05T01:36:34.9712615Z === RUN TestExpandTargetEnvs/staging_stops_at_staging +2026-07-05T01:36:34.9713294Z === RUN TestExpandTargetEnvs/prod_includes_whole_chain_above_first +2026-07-05T01:36:34.9713964Z === RUN TestExpandTargetEnvs/second_env_alone +2026-07-05T01:36:34.9714508Z === RUN TestExpandTargetEnvs/first_env_rejected +2026-07-05T01:36:34.9715060Z === RUN TestExpandTargetEnvs/unknown_env_rejected +2026-07-05T01:36:34.9715585Z --- PASS: TestExpandTargetEnvs (0.00s) +2026-07-05T01:36:34.9716284Z --- PASS: TestExpandTargetEnvs/staging_stops_at_staging (0.00s) +2026-07-05T01:36:34.9717394Z --- PASS: TestExpandTargetEnvs/prod_includes_whole_chain_above_first (0.00s) +2026-07-05T01:36:34.9718228Z --- PASS: TestExpandTargetEnvs/second_env_alone (0.00s) +2026-07-05T01:36:34.9718944Z --- PASS: TestExpandTargetEnvs/first_env_rejected (0.00s) +2026-07-05T01:36:34.9719673Z --- PASS: TestExpandTargetEnvs/unknown_env_rejected (0.00s) +2026-07-05T01:36:34.9720460Z === RUN TestPlan_SkipsCommitAlreadyInPatches +2026-07-05T01:36:34.9721047Z --- PASS: TestPlan_SkipsCommitAlreadyInPatches (0.04s) +2026-07-05T01:36:34.9721628Z === RUN TestPlan_SkipsCommitAlreadyInStateSHA +2026-07-05T01:36:34.9722210Z --- PASS: TestPlan_SkipsCommitAlreadyInStateSHA (0.05s) +2026-07-05T01:36:34.9722749Z === RUN TestPlanChain_CleanSet +2026-07-05T01:36:34.9723196Z --- PASS: TestPlanChain_CleanSet (0.06s) +2026-07-05T01:36:34.9723698Z === RUN TestPlanChain_FullyPresentEnvIsNoOp +2026-07-05T01:36:34.9724256Z --- PASS: TestPlanChain_FullyPresentEnvIsNoOp (0.05s) +2026-07-05T01:36:34.9724807Z === RUN TestPlanChain_MixedSetSkipsPerEnv +2026-07-05T01:36:34.9725612Z --- PASS: TestPlanChain_MixedSetSkipsPerEnv (0.05s) +2026-07-05T01:36:34.9726163Z === RUN TestChainGHAOutputs_CarriesSequence +2026-07-05T01:36:34.9726715Z --- PASS: TestChainGHAOutputs_CarriesSequence (0.00s) +2026-07-05T01:36:34.9727265Z === RUN TestPlanChain_RejectsNonTrunkCommit +2026-07-05T01:36:34.9727803Z --- PASS: TestPlanChain_RejectsNonTrunkCommit (0.05s) +2026-07-05T01:36:34.9728437Z === RUN TestPlanChain_RemoteEnvTipDiverged_FailsWithGuidance +2026-07-05T01:36:34.9729186Z --- PASS: TestPlanChain_RemoteEnvTipDiverged_FailsWithGuidance (0.05s) +2026-07-05T01:36:34.9729896Z === RUN TestPlanChain_RemoteEnvTipInSync_PlansCleanly +2026-07-05T01:36:34.9731377Z --- PASS: TestPlanChain_RemoteEnvTipInSync_PlansCleanly (0.04s) +2026-07-05T01:36:34.9731956Z === RUN TestNewCommand +2026-07-05T01:36:34.9732357Z --- PASS: TestNewCommand (0.00s) +2026-07-05T01:36:34.9732788Z === RUN TestNewPlanCommand_Flags +2026-07-05T01:36:34.9733249Z --- PASS: TestNewPlanCommand_Flags (0.00s) +2026-07-05T01:36:34.9733750Z === RUN TestNewFinalizeCommand_Flags +2026-07-05T01:36:34.9734258Z --- PASS: TestNewFinalizeCommand_Flags (0.00s) +2026-07-05T01:36:34.9734763Z === RUN TestSplitResultFlag +2026-07-05T01:36:34.9735225Z === RUN TestSplitResultFlag/app=success +2026-07-05T01:36:34.9735746Z === RUN TestSplitResultFlag/svc.api=failure +2026-07-05T01:36:34.9736278Z === RUN TestSplitResultFlag/a=b=c +2026-07-05T01:36:34.9736758Z === RUN TestSplitResultFlag/#00 +2026-07-05T01:36:34.9737229Z === RUN TestSplitResultFlag/=success +2026-07-05T01:36:34.9737697Z === RUN TestSplitResultFlag/app= +2026-07-05T01:36:34.9738166Z === RUN TestSplitResultFlag/noequals +2026-07-05T01:36:34.9738666Z --- PASS: TestSplitResultFlag (0.00s) +2026-07-05T01:36:34.9739283Z --- PASS: TestSplitResultFlag/app=success (0.00s) +2026-07-05T01:36:34.9740157Z --- PASS: TestSplitResultFlag/svc.api=failure (0.00s) +2026-07-05T01:36:34.9740868Z --- PASS: TestSplitResultFlag/a=b=c (0.00s) +2026-07-05T01:36:34.9741682Z --- PASS: TestSplitResultFlag/#00 (0.00s) +2026-07-05T01:36:34.9742266Z --- PASS: TestSplitResultFlag/=success (0.00s) +2026-07-05T01:36:34.9742846Z --- PASS: TestSplitResultFlag/app= (0.00s) +2026-07-05T01:36:34.9743427Z --- PASS: TestSplitResultFlag/noequals (0.00s) +2026-07-05T01:36:34.9743907Z === RUN TestNewRestPRChecker +2026-07-05T01:36:34.9744327Z --- PASS: TestNewRestPRChecker (0.00s) +2026-07-05T01:36:34.9744750Z === RUN TestPrintPlan_FullPlan +2026-07-05T01:36:34.9745179Z --- PASS: TestPrintPlan_FullPlan (0.00s) +2026-07-05T01:36:34.9745630Z === RUN TestPrintPlan_NoOp +2026-07-05T01:36:34.9746031Z --- PASS: TestPrintPlan_NoOp (0.00s) +2026-07-05T01:36:34.9746470Z === RUN TestPrintPlan_ExistingBranch +2026-07-05T01:36:34.9746931Z --- PASS: TestPrintPlan_ExistingBranch (0.00s) +2026-07-05T01:36:34.9747413Z === RUN TestPrintPlanChain +2026-07-05T01:36:34.9747818Z --- PASS: TestPrintPlanChain (0.00s) +2026-07-05T01:36:34.9748228Z === RUN TestOutputJSON +2026-07-05T01:36:34.9748598Z --- PASS: TestOutputJSON (0.00s) +2026-07-05T01:36:34.9749002Z === RUN TestWritePlanGHAOutput +2026-07-05T01:36:34.9749426Z --- PASS: TestWritePlanGHAOutput (0.00s) +2026-07-05T01:36:34.9749886Z === RUN TestWritePlanChainGHAOutput +2026-07-05T01:36:34.9750543Z --- PASS: TestWritePlanChainGHAOutput (0.00s) +2026-07-05T01:36:34.9751116Z === RUN TestFinalize_Integration_PlanThenMergeThenFinalize +2026-07-05T01:36:34.9751814Z --- PASS: TestFinalize_Integration_PlanThenMergeThenFinalize (0.06s) +2026-07-05T01:36:34.9752404Z === RUN TestWithFinalizeDryRun +2026-07-05T01:36:34.9752854Z --- PASS: TestWithFinalizeDryRun (0.00s) +2026-07-05T01:36:34.9753333Z === RUN TestWithTipReader +2026-07-05T01:36:34.9753744Z --- PASS: TestWithTipReader (0.00s) +2026-07-05T01:36:34.9754179Z === RUN TestFinalizeOptions_NilSafety +2026-07-05T01:36:34.9754656Z --- PASS: TestFinalizeOptions_NilSafety (0.00s) +2026-07-05T01:36:34.9755168Z === RUN TestGitIdentity +2026-07-05T01:36:34.9755541Z --- PASS: TestGitIdentity (0.00s) +2026-07-05T01:36:34.9755933Z === RUN TestIsRealGitHub +2026-07-05T01:36:34.9756513Z --- PASS: TestIsRealGitHub (0.00s) +2026-07-05T01:36:34.9756893Z === RUN TestAllocateVersion +2026-07-05T01:36:34.9757355Z === RUN TestAllocateVersion/rc_base_allocates_nested_hotfix +2026-07-05T01:36:34.9757970Z === RUN TestAllocateVersion/rc_base_skips_existing_hotfix_tag +2026-07-05T01:36:34.9758589Z === RUN TestAllocateVersion/published_base_patch_bump +2026-07-05T01:36:34.9759199Z === RUN TestAllocateVersion/published_base_skips_taken_patches +2026-07-05T01:36:34.9759853Z === RUN TestAllocateVersion/empty_prior_version_errors +2026-07-05T01:36:34.9760681Z === RUN TestAllocateVersion/unparseable_prior_version_errors +2026-07-05T01:36:34.9761298Z --- PASS: TestAllocateVersion (0.00s) +2026-07-05T01:36:34.9762160Z --- PASS: TestAllocateVersion/rc_base_allocates_nested_hotfix (0.00s) +2026-07-05T01:36:34.9763107Z --- PASS: TestAllocateVersion/rc_base_skips_existing_hotfix_tag (0.00s) +2026-07-05T01:36:34.9763976Z --- PASS: TestAllocateVersion/published_base_patch_bump (0.00s) +2026-07-05T01:36:34.9764816Z --- PASS: TestAllocateVersion/published_base_skips_taken_patches (0.00s) +2026-07-05T01:36:34.9765636Z --- PASS: TestAllocateVersion/empty_prior_version_errors (0.00s) +2026-07-05T01:36:34.9766457Z --- PASS: TestAllocateVersion/unparseable_prior_version_errors (0.00s) +2026-07-05T01:36:34.9767055Z === RUN TestIsPrereleaseEnv +2026-07-05T01:36:34.9767460Z --- PASS: TestIsPrereleaseEnv (0.00s) +2026-07-05T01:36:34.9767948Z === RUN TestApplyHotfixState_NoOpWhenSHAUnchanged +2026-07-05T01:36:34.9768639Z --- PASS: TestApplyHotfixState_NoOpWhenSHAUnchanged (0.00s) +2026-07-05T01:36:34.9769227Z === RUN TestApplyHotfixState_WritesDivergedState +2026-07-05T01:36:34.9769662Z --- PASS: TestApplyHotfixState_WritesDivergedState (0.00s) +2026-07-05T01:36:34.9770270Z === RUN TestFinalizeHotfixMutatePreservesUntouchedEnv +2026-07-05T01:36:34.9770817Z --- PASS: TestFinalizeHotfixMutatePreservesUntouchedEnv (0.00s) +2026-07-05T01:36:34.9771642Z === RUN TestFinalize_WritesDivergedState +2026-07-05T01:36:34.9772173Z --- PASS: TestFinalize_WritesDivergedState (0.05s) +2026-07-05T01:36:34.9772519Z === RUN TestFinalize_PreviousRingSnapshot +2026-07-05T01:36:34.9772896Z --- PASS: TestFinalize_PreviousRingSnapshot (0.05s) +2026-07-05T01:36:34.9773427Z === RUN TestFinalize_PreviousRingBounded +2026-07-05T01:36:34.9773931Z --- PASS: TestFinalize_PreviousRingBounded (0.06s) +2026-07-05T01:36:34.9774502Z === RUN TestFinalize_RecordsAllCommitsOfMultiCommitSet +2026-07-05T01:36:34.9775157Z --- PASS: TestFinalize_RecordsAllCommitsOfMultiCommitSet (0.07s) +2026-07-05T01:36:34.9775739Z === RUN TestFinalize_StacksSecondHotfix +2026-07-05T01:36:34.9776252Z --- PASS: TestFinalize_StacksSecondHotfix (0.08s) +2026-07-05T01:36:34.9776789Z === RUN TestFinalize_MergeSHATipMismatch_Fails +2026-07-05T01:36:34.9777347Z --- PASS: TestFinalize_MergeSHATipMismatch_Fails (0.06s) +2026-07-05T01:36:34.9777860Z === RUN TestFinalize_Idempotent_Rerun +2026-07-05T01:36:34.9778329Z --- PASS: TestFinalize_Idempotent_Rerun (0.07s) +2026-07-05T01:36:34.9809473Z === RUN TestFinalize_StateWriteTargetsTrunkBranch +2026-07-05T01:36:34.9810348Z --- PASS: TestFinalize_StateWriteTargetsTrunkBranch (0.06s) +2026-07-05T01:36:34.9810982Z === RUN TestFinalize_ReadsPriorStateFromTrunk +2026-07-05T01:36:34.9811565Z --- PASS: TestFinalize_ReadsPriorStateFromTrunk (0.05s) +2026-07-05T01:36:34.9812161Z === RUN TestFinalize_TrunkIsSourceOfPriorState +2026-07-05T01:36:34.9812754Z --- PASS: TestFinalize_TrunkIsSourceOfPriorState (0.06s) +2026-07-05T01:36:34.9813371Z === RUN TestFinalize_DoesNotClobberOtherEnvsTrunkState +2026-07-05T01:36:34.9814017Z --- PASS: TestFinalize_DoesNotClobberOtherEnvsTrunkState (0.07s) +2026-07-05T01:36:34.9814642Z === RUN TestFinalize_TrunkStateAbsent_Errors +2026-07-05T01:36:34.9815189Z --- PASS: TestFinalize_TrunkStateAbsent_Errors (0.05s) +2026-07-05T01:36:34.9815762Z === RUN TestReleaseToken_FallsBackThroughEnvVars +2026-07-05T01:36:34.9816401Z === RUN TestReleaseToken_FallsBackThroughEnvVars/release_token_wins +2026-07-05T01:36:34.9817367Z === RUN TestReleaseToken_FallsBackThroughEnvVars/github_token_next +2026-07-05T01:36:34.9818079Z === RUN TestReleaseToken_FallsBackThroughEnvVars/gh_token_fallback +2026-07-05T01:36:34.9818750Z === RUN TestReleaseToken_FallsBackThroughEnvVars/none_set +2026-07-05T01:36:34.9819379Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars (0.00s) +2026-07-05T01:36:34.9819930Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/release_token_wins (0.00s) +2026-07-05T01:36:34.9820813Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/github_token_next (0.00s) +2026-07-05T01:36:34.9821389Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/gh_token_fallback (0.00s) +2026-07-05T01:36:34.9822209Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/none_set (0.00s) +2026-07-05T01:36:34.9822929Z === RUN TestFinalize_VersionAllocation_SkipsExistingTags +2026-07-05T01:36:34.9823385Z --- PASS: TestFinalize_VersionAllocation_SkipsExistingTags (0.05s) +2026-07-05T01:36:34.9823804Z === RUN TestFinalize_PublishedBase_PatchBump_NoCollision +2026-07-05T01:36:34.9824205Z --- PASS: TestFinalize_PublishedBase_PatchBump_NoCollision (0.05s) +2026-07-05T01:36:34.9824593Z === RUN TestFinalize_PrereleaseEnv_ReplacesPrerelease +2026-07-05T01:36:34.9824984Z --- PASS: TestFinalize_PrereleaseEnv_ReplacesPrerelease (0.05s) +2026-07-05T01:36:34.9825377Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs +2026-07-05T01:36:34.9825765Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs/local_ref +2026-07-05T01:36:34.9826234Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs/origin-tracking_ref_only +2026-07-05T01:36:34.9826751Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs/missing_ref_errors +2026-07-05T01:36:34.9827212Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs (0.07s) +2026-07-05T01:36:34.9827731Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs/local_ref (0.02s) +2026-07-05T01:36:34.9828548Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs/origin-tracking_ref_only (0.02s) +2026-07-05T01:36:34.9829207Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs/missing_ref_errors (0.02s) +2026-07-05T01:36:34.9829644Z === RUN TestOrphanEnvBranches +2026-07-05T01:36:34.9830150Z === RUN TestOrphanEnvBranches/no_branches_yields_no_orphans +2026-07-05T01:36:34.9830697Z === RUN TestOrphanEnvBranches/branch_with_matching_divergence_is_not_an_orphan +2026-07-05T01:36:34.9831234Z === RUN TestOrphanEnvBranches/branch_without_matching_divergence_is_an_orphan +2026-07-05T01:36:34.9831773Z === RUN TestOrphanEnvBranches/branch_for_an_env_absent_from_state_is_an_orphan +2026-07-05T01:36:34.9832261Z === RUN TestOrphanEnvBranches/non_env-prefixed_branches_are_ignored +2026-07-05T01:36:34.9832708Z === RUN TestOrphanEnvBranches/mixed_orphan_and_healthy_branches +2026-07-05T01:36:34.9833082Z --- PASS: TestOrphanEnvBranches (0.00s) +2026-07-05T01:36:34.9833532Z --- PASS: TestOrphanEnvBranches/no_branches_yields_no_orphans (0.00s) +2026-07-05T01:36:34.9834169Z --- PASS: TestOrphanEnvBranches/branch_with_matching_divergence_is_not_an_orphan (0.00s) +2026-07-05T01:36:34.9834860Z --- PASS: TestOrphanEnvBranches/branch_without_matching_divergence_is_an_orphan (0.00s) +2026-07-05T01:36:34.9835535Z --- PASS: TestOrphanEnvBranches/branch_for_an_env_absent_from_state_is_an_orphan (0.00s) +2026-07-05T01:36:34.9836169Z --- PASS: TestOrphanEnvBranches/non_env-prefixed_branches_are_ignored (0.00s) +2026-07-05T01:36:34.9836747Z --- PASS: TestOrphanEnvBranches/mixed_orphan_and_healthy_branches (0.00s) +2026-07-05T01:36:34.9837147Z === RUN TestHealOrphanEnvBranches +2026-07-05T01:36:34.9837602Z === RUN TestHealOrphanEnvBranches/deletes_only_orphans_and_leaves_diverged_branches_intact +2026-07-05T01:36:34.9838177Z === RUN TestHealOrphanEnvBranches/idempotent_when_an_orphan_is_already_absent +2026-07-05T01:36:34.9838656Z === RUN TestHealOrphanEnvBranches/no_orphans_is_a_clean_no-op +2026-07-05T01:36:34.9839177Z === RUN TestHealOrphanEnvBranches/propagates_a_delete_error_with_the_healed-so-far_set +2026-07-05T01:36:34.9839802Z --- PASS: TestHealOrphanEnvBranches (0.00s) +2026-07-05T01:36:34.9840607Z --- PASS: TestHealOrphanEnvBranches/deletes_only_orphans_and_leaves_diverged_branches_intact (0.00s) +2026-07-05T01:36:34.9841337Z --- PASS: TestHealOrphanEnvBranches/idempotent_when_an_orphan_is_already_absent (0.00s) +2026-07-05T01:36:34.9841948Z --- PASS: TestHealOrphanEnvBranches/no_orphans_is_a_clean_no-op (0.00s) +2026-07-05T01:36:34.9842666Z --- PASS: TestHealOrphanEnvBranches/propagates_a_delete_error_with_the_healed-so-far_set (0.00s) +2026-07-05T01:36:34.9843151Z === RUN TestHotfixTagsForBase +2026-07-05T01:36:34.9843528Z === RUN TestHotfixTagsForBase/rc_base_matches_its_dotted_hotfix_tags_only +2026-07-05T01:36:34.9844029Z === RUN TestHotfixTagsForBase/no_hotfix_tags_yields_empty +2026-07-05T01:36:34.9844618Z === RUN TestHotfixTagsForBase/hotfix_base_version_normalizes_to_its_rc_base +2026-07-05T01:36:34.9845091Z === RUN TestHotfixTagsForBase/unparseable_base_yields_empty +2026-07-05T01:36:34.9845591Z --- PASS: TestHotfixTagsForBase (0.00s) +2026-07-05T01:36:34.9846106Z --- PASS: TestHotfixTagsForBase/rc_base_matches_its_dotted_hotfix_tags_only (0.00s) +2026-07-05T01:36:34.9846751Z --- PASS: TestHotfixTagsForBase/no_hotfix_tags_yields_empty (0.00s) +2026-07-05T01:36:34.9847408Z --- PASS: TestHotfixTagsForBase/hotfix_base_version_normalizes_to_its_rc_base (0.00s) +2026-07-05T01:36:34.9847999Z --- PASS: TestHotfixTagsForBase/unparseable_base_yields_empty (0.00s) +2026-07-05T01:36:34.9848381Z === RUN TestPlan_Integration_FullFlow +2026-07-05T01:36:34.9848686Z --- PASS: TestPlan_Integration_FullFlow (0.04s) +2026-07-05T01:36:34.9849028Z === RUN TestPlan_Integration_DryRunMutatesNothing +2026-07-05T01:36:34.9849401Z --- PASS: TestPlan_Integration_DryRunMutatesNothing (0.04s) +2026-07-05T01:36:34.9849752Z === RUN TestPlan_RejectsNonTrunkCommit +2026-07-05T01:36:34.9850274Z --- PASS: TestPlan_RejectsNonTrunkCommit (0.04s) +2026-07-05T01:36:34.9850750Z === RUN TestPlan_RejectsFirstEnv +2026-07-05T01:36:34.9851051Z --- PASS: TestPlan_RejectsFirstEnv (0.03s) +2026-07-05T01:36:34.9851343Z === RUN TestPlan_RejectsUnknownEnv +2026-07-05T01:36:34.9851635Z --- PASS: TestPlan_RejectsUnknownEnv (0.03s) +2026-07-05T01:36:34.9851956Z === RUN TestPlan_NoOpWhenFixAlreadyInTarget +2026-07-05T01:36:34.9852402Z --- PASS: TestPlan_NoOpWhenFixAlreadyInTarget (0.04s) +2026-07-05T01:36:34.9852969Z === RUN TestPlan_CreatesEnvBranchAtStateSHA +2026-07-05T01:36:34.9853302Z --- PASS: TestPlan_CreatesEnvBranchAtStateSHA (0.04s) +2026-07-05T01:36:34.9853624Z === RUN TestPlan_DryRunMutatesNothing +2026-07-05T01:36:34.9853927Z --- PASS: TestPlan_DryRunMutatesNothing (0.04s) +2026-07-05T01:36:34.9854343Z === RUN TestPlan_ExistingBranchTipMismatch_FailsClosedWithoutRealChecker +2026-07-05T01:36:34.9854886Z --- PASS: TestPlan_ExistingBranchTipMismatch_FailsClosedWithoutRealChecker (0.05s) +2026-07-05T01:36:34.9855393Z === RUN TestPlan_ExistingBranchTipMatch_OK +2026-07-05T01:36:34.9855786Z --- PASS: TestPlan_ExistingBranchTipMatch_OK (0.04s) +2026-07-05T01:36:34.9856145Z === RUN TestPlan_SingleFlight_OpenPRBlocks +2026-07-05T01:36:34.9856478Z --- PASS: TestPlan_SingleFlight_OpenPRBlocks (0.04s) +2026-07-05T01:36:34.9856808Z === RUN TestPlan_SingleFlight_NoOpenPRAllows +2026-07-05T01:36:34.9857152Z --- PASS: TestPlan_SingleFlight_NoOpenPRAllows (0.04s) +2026-07-05T01:36:34.9857481Z === RUN TestPlan_ProdTargetAllowed +2026-07-05T01:36:34.9857783Z --- PASS: TestPlan_ProdTargetAllowed (0.04s) +2026-07-05T01:36:34.9858155Z === RUN TestPlan_VersionCandidateAndProtectionSuggestions +2026-07-05T01:36:34.9858658Z --- PASS: TestPlan_VersionCandidateAndProtectionSuggestions (0.04s) +2026-07-05T01:36:34.9859260Z === RUN TestPlan_JSONOutputGolden +2026-07-05T01:36:34.9859557Z --- PASS: TestPlan_JSONOutputGolden (0.05s) +2026-07-05T01:36:34.9859879Z === RUN TestRestPRChecker_MatchingPRReturned +2026-07-05T01:36:34.9860470Z --- PASS: TestRestPRChecker_MatchingPRReturned (0.00s) +2026-07-05T01:36:34.9860843Z === RUN TestRestPRChecker_WrongBaseBranchFiltered +2026-07-05T01:36:34.9861412Z --- PASS: TestRestPRChecker_WrongBaseBranchFiltered (0.00s) +2026-07-05T01:36:34.9861787Z === RUN TestRestPRChecker_MissingLabelFiltered +2026-07-05T01:36:34.9862145Z --- PASS: TestRestPRChecker_MissingLabelFiltered (0.00s) +2026-07-05T01:36:34.9862506Z === RUN TestRestPRChecker_PaginatedMatchOnPageTwo +2026-07-05T01:36:34.9862871Z --- PASS: TestRestPRChecker_PaginatedMatchOnPageTwo (0.00s) +2026-07-05T01:36:34.9863249Z === RUN TestRestPRChecker_NonOKResponseReturnsError +2026-07-05T01:36:34.9863637Z --- PASS: TestRestPRChecker_NonOKResponseReturnsError (0.00s) +2026-07-05T01:36:34.9864017Z === RUN TestRestPRChecker_ConflictLabelPRReturned +2026-07-05T01:36:34.9864374Z --- PASS: TestRestPRChecker_ConflictLabelPRReturned (0.00s) +2026-07-05T01:36:34.9864724Z === RUN TestNextPageURL_ExtractsNext +2026-07-05T01:36:34.9865028Z --- PASS: TestNextPageURL_ExtractsNext (0.00s) +2026-07-05T01:36:34.9865365Z === RUN TestNextPageURL_EmptyLinkReturnsEmpty +2026-07-05T01:36:34.9865726Z --- PASS: TestNextPageURL_EmptyLinkReturnsEmpty (0.00s) +2026-07-05T01:36:34.9866070Z === RUN TestNextPageURL_NoNextReturnsEmpty +2026-07-05T01:36:34.9866409Z --- PASS: TestNextPageURL_NoNextReturnsEmpty (0.00s) +2026-07-05T01:36:34.9866797Z === RUN TestReconcileBranch_OrphanNotDivergedCheckedResets +2026-07-05T01:36:34.9867240Z --- PASS: TestReconcileBranch_OrphanNotDivergedCheckedResets (0.00s) +2026-07-05T01:36:34.9867665Z === RUN TestReconcileBranch_OrphanDryRunDoesNotReset +2026-07-05T01:36:34.9868053Z --- PASS: TestReconcileBranch_OrphanDryRunDoesNotReset (0.00s) +2026-07-05T01:36:34.9868501Z === RUN TestReconcileBranch_NotCheckedFailsClosedNoReset +2026-07-05T01:36:34.9868926Z --- PASS: TestReconcileBranch_NotCheckedFailsClosedNoReset (0.00s) +2026-07-05T01:36:34.9869360Z === RUN TestReconcileBranch_DivergedFailsClosedNoReset +2026-07-05T01:36:34.9869911Z --- PASS: TestReconcileBranch_DivergedFailsClosedNoReset (0.00s) +2026-07-05T01:36:34.9870634Z === RUN TestReconcileBranch_TipMatchesBaseUntouched +2026-07-05T01:36:34.9871173Z --- PASS: TestReconcileBranch_TipMatchesBaseUntouched (0.00s) +2026-07-05T01:36:34.9871680Z === RUN TestReconcileBranch_SelfHealReportsResetError +2026-07-05T01:36:34.9872079Z --- PASS: TestReconcileBranch_SelfHealReportsResetError (0.00s) +2026-07-05T01:36:34.9872509Z === RUN TestVerifyRemoteEnvTip_OrphanNotDivergedCheckedResets +2026-07-05T01:36:34.9873086Z --- PASS: TestVerifyRemoteEnvTip_OrphanNotDivergedCheckedResets (0.00s) +2026-07-05T01:36:34.9873578Z === RUN TestVerifyRemoteEnvTip_NotCheckedFailsClosedNoReset +2026-07-05T01:36:34.9874032Z --- PASS: TestVerifyRemoteEnvTip_NotCheckedFailsClosedNoReset (0.00s) +2026-07-05T01:36:34.9874477Z === RUN TestVerifyRemoteEnvTip_DivergedFailsClosedNoReset +2026-07-05T01:36:34.9874911Z --- PASS: TestVerifyRemoteEnvTip_DivergedFailsClosedNoReset (0.00s) +2026-07-05T01:36:34.9875322Z === RUN TestVerifyRemoteEnvTip_AbsentRemoteIsClean +2026-07-05T01:36:34.9875795Z --- PASS: TestVerifyRemoteEnvTip_AbsentRemoteIsClean (0.00s) +2026-07-05T01:36:34.9876490Z === RUN TestPlanChain_OrphanRemoteTipSelfHealsWithRealChecker +2026-07-05T01:36:34.9876975Z --- PASS: TestPlanChain_OrphanRemoteTipSelfHealsWithRealChecker (0.05s) +2026-07-05T01:36:34.9877438Z === RUN TestPlanChain_OrphanRemoteTipNoopCheckerFailsClosed +2026-07-05T01:36:34.9877883Z --- PASS: TestPlanChain_OrphanRemoteTipNoopCheckerFailsClosed (0.05s) +2026-07-05T01:36:34.9878291Z === RUN TestPlanChain_AbortsOnOpenConflictPR +2026-07-05T01:36:34.9878644Z --- PASS: TestPlanChain_AbortsOnOpenConflictPR (0.05s) +2026-07-05T01:36:34.9878991Z === RUN TestPlanChain_AbortsOnOpenHotfixPR +2026-07-05T01:36:34.9879325Z --- PASS: TestPlanChain_AbortsOnOpenHotfixPR (0.05s) +2026-07-05T01:36:34.9879617Z PASS +2026-07-05T01:36:34.9879829Z coverage: 73.6% of statements +2026-07-05T01:36:34.9880458Z ok github.com/stablekernel/cascade/internal/hotfix 3.235s coverage: 73.6% of statements +2026-07-05T01:36:34.9880927Z === RUN TestResolveEnvs_TopologyPreset +2026-07-05T01:36:34.9881438Z === RUN TestResolveEnvs_TopologyPreset/no-env +2026-07-05T01:36:34.9881778Z === RUN TestResolveEnvs_TopologyPreset/two-env +2026-07-05T01:36:34.9882115Z === RUN TestResolveEnvs_TopologyPreset/three-env +2026-07-05T01:36:34.9882455Z === RUN TestResolveEnvs_TopologyPreset/four-env +2026-07-05T01:36:34.9882790Z --- PASS: TestResolveEnvs_TopologyPreset (0.00s) +2026-07-05T01:36:34.9883206Z --- PASS: TestResolveEnvs_TopologyPreset/no-env (0.00s) +2026-07-05T01:36:34.9883657Z --- PASS: TestResolveEnvs_TopologyPreset/two-env (0.00s) +2026-07-05T01:36:34.9884101Z --- PASS: TestResolveEnvs_TopologyPreset/three-env (0.00s) +2026-07-05T01:36:34.9884548Z --- PASS: TestResolveEnvs_TopologyPreset/four-env (0.00s) +2026-07-05T01:36:34.9884895Z === RUN TestResolveEnvs_DefaultsToTwoEnv +2026-07-05T01:36:34.9885221Z --- PASS: TestResolveEnvs_DefaultsToTwoEnv (0.00s) +2026-07-05T01:36:34.9885541Z === RUN TestResolveEnvs_CustomList +2026-07-05T01:36:34.9885838Z --- PASS: TestResolveEnvs_CustomList (0.00s) +2026-07-05T01:36:34.9886192Z === RUN TestResolveEnvs_EnvsOverridesTopology +2026-07-05T01:36:34.9886648Z --- PASS: TestResolveEnvs_EnvsOverridesTopology (0.00s) +2026-07-05T01:36:34.9887058Z === RUN TestResolveEnvs_UnknownTopology +2026-07-05T01:36:34.9887388Z --- PASS: TestResolveEnvs_UnknownTopology (0.00s) +2026-07-05T01:36:34.9887710Z === RUN TestResolveEnvs_EmptyEnvsValue +2026-07-05T01:36:34.9888120Z --- PASS: TestResolveEnvs_EmptyEnvsValue (0.00s) +2026-07-05T01:36:34.9888536Z === RUN TestResolveName_DefaultsToDirBase +2026-07-05T01:36:34.9888867Z --- PASS: TestResolveName_DefaultsToDirBase (0.00s) +2026-07-05T01:36:34.9889191Z === RUN TestResolveName_ExplicitWins +2026-07-05T01:36:34.9889493Z --- PASS: TestResolveName_ExplicitWins (0.00s) +2026-07-05T01:36:34.9889810Z === RUN TestRun_SuccessWritesValidScaffold +2026-07-05T01:36:34.9890444Z --- PASS: TestRun_SuccessWritesValidScaffold (0.03s) +2026-07-05T01:36:34.9890772Z === RUN TestRun_NoEnvOmitsDeployStub +2026-07-05T01:36:34.9891241Z --- PASS: TestRun_NoEnvOmitsDeployStub (0.01s) +2026-07-05T01:36:34.9891571Z === RUN TestRun_RefusesOnExistingWithoutForce +2026-07-05T01:36:34.9891913Z --- PASS: TestRun_RefusesOnExistingWithoutForce (0.02s) +2026-07-05T01:36:34.9892229Z === RUN TestRun_ForceOverwrites +2026-07-05T01:36:34.9892510Z --- PASS: TestRun_ForceOverwrites (0.02s) +2026-07-05T01:36:34.9892800Z === RUN TestRun_DryRunWritesNothing +2026-07-05T01:36:34.9893200Z --- PASS: TestRun_DryRunWritesNothing (0.02s) +2026-07-05T01:36:34.9893546Z === RUN TestRun_CustomEnvsListedAndReleaseStageLast +2026-07-05T01:36:34.9894173Z --- PASS: TestRun_CustomEnvsListedAndReleaseStageLast (0.02s) +2026-07-05T01:36:34.9894531Z === RUN TestRun_CLIVersionOverride +2026-07-05T01:36:34.9894820Z --- PASS: TestRun_CLIVersionOverride (0.02s) +2026-07-05T01:36:34.9895144Z === RUN TestRun_AllTopologiesOrderedManifestEnvs +2026-07-05T01:36:34.9895520Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/no-env +2026-07-05T01:36:34.9895918Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/two-env +2026-07-05T01:36:34.9896316Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/three-env +2026-07-05T01:36:34.9896707Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/four-env +2026-07-05T01:36:34.9897095Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs (0.11s) +2026-07-05T01:36:34.9897568Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/no-env (0.01s) +2026-07-05T01:36:34.9898086Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/two-env (0.03s) +2026-07-05T01:36:34.9898605Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/three-env (0.03s) +2026-07-05T01:36:34.9899134Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/four-env (0.03s) +2026-07-05T01:36:34.9899514Z === RUN TestRun_DirLandsFilesInTargetDir +2026-07-05T01:36:34.9899834Z --- PASS: TestRun_DirLandsFilesInTargetDir (0.02s) +2026-07-05T01:36:34.9900341Z === RUN TestRun_NameWovenIntoStubs +2026-07-05T01:36:34.9900633Z === RUN TestRun_NameWovenIntoStubs/explicit +2026-07-05T01:36:34.9900981Z === RUN TestRun_NameWovenIntoStubs/defaults-to-dir-base +2026-07-05T01:36:34.9901482Z --- PASS: TestRun_NameWovenIntoStubs (0.04s) +2026-07-05T01:36:34.9901871Z --- PASS: TestRun_NameWovenIntoStubs/explicit (0.02s) +2026-07-05T01:36:34.9902318Z --- PASS: TestRun_NameWovenIntoStubs/defaults-to-dir-base (0.02s) +2026-07-05T01:36:34.9902696Z === RUN TestRun_ScaffoldFailureWritesNothing +2026-07-05T01:36:34.9903040Z --- PASS: TestRun_ScaffoldFailureWritesNothing (0.00s) +2026-07-05T01:36:34.9903485Z === RUN TestVerifyClean_NoEnv +2026-07-05T01:36:34.9903771Z --- PASS: TestVerifyClean_NoEnv (0.02s) +2026-07-05T01:36:34.9904053Z === RUN TestVerifyClean_FourEnv +2026-07-05T01:36:34.9904328Z --- PASS: TestVerifyClean_FourEnv (0.05s) +2026-07-05T01:36:34.9904586Z PASS +2026-07-05T01:36:34.9904886Z coverage: 92.6% of statements +2026-07-05T01:36:34.9905380Z ok github.com/stablekernel/cascade/internal/initcmd 1.373s coverage: 92.6% of statements +2026-07-05T01:36:34.9905824Z === RUN TestLevelFiltering +2026-07-05T01:36:34.9906112Z === RUN TestLevelFiltering/info_at_info_level +2026-07-05T01:36:34.9906448Z === RUN TestLevelFiltering/debug_at_info_level +2026-07-05T01:36:34.9906764Z === RUN TestLevelFiltering/trace_at_info_level +2026-07-05T01:36:34.9907072Z === RUN TestLevelFiltering/info_at_debug_level +2026-07-05T01:36:34.9907496Z === RUN TestLevelFiltering/debug_at_debug_level +2026-07-05T01:36:34.9907816Z === RUN TestLevelFiltering/trace_at_debug_level +2026-07-05T01:36:34.9908126Z === RUN TestLevelFiltering/info_at_trace_level +2026-07-05T01:36:34.9908443Z === RUN TestLevelFiltering/debug_at_trace_level +2026-07-05T01:36:34.9908761Z === RUN TestLevelFiltering/trace_at_trace_level +2026-07-05T01:36:34.9909062Z --- PASS: TestLevelFiltering (0.00s) +2026-07-05T01:36:34.9909440Z --- PASS: TestLevelFiltering/info_at_info_level (0.00s) +2026-07-05T01:36:34.9909867Z --- PASS: TestLevelFiltering/debug_at_info_level (0.00s) +2026-07-05T01:36:34.9910650Z --- PASS: TestLevelFiltering/trace_at_info_level (0.00s) +2026-07-05T01:36:34.9911298Z --- PASS: TestLevelFiltering/info_at_debug_level (0.00s) +2026-07-05T01:36:34.9911728Z --- PASS: TestLevelFiltering/debug_at_debug_level (0.00s) +2026-07-05T01:36:34.9912162Z --- PASS: TestLevelFiltering/trace_at_debug_level (0.00s) +2026-07-05T01:36:34.9912590Z --- PASS: TestLevelFiltering/info_at_trace_level (0.00s) +2026-07-05T01:36:34.9913025Z --- PASS: TestLevelFiltering/debug_at_trace_level (0.00s) +2026-07-05T01:36:34.9913451Z --- PASS: TestLevelFiltering/trace_at_trace_level (0.00s) +2026-07-05T01:36:34.9913772Z === RUN TestParseLevel +2026-07-05T01:36:34.9914020Z === RUN TestParseLevel/info +2026-07-05T01:36:34.9914268Z === RUN TestParseLevel/INFO +2026-07-05T01:36:34.9914520Z === RUN TestParseLevel/debug +2026-07-05T01:36:34.9914774Z === RUN TestParseLevel/DEBUG +2026-07-05T01:36:34.9915017Z === RUN TestParseLevel/trace +2026-07-05T01:36:34.9915257Z === RUN TestParseLevel/TRACE +2026-07-05T01:36:34.9915507Z === RUN TestParseLevel/unknown +2026-07-05T01:36:34.9915774Z === RUN TestParseLevel/#00 +2026-07-05T01:36:34.9916023Z --- PASS: TestParseLevel (0.00s) +2026-07-05T01:36:34.9916333Z --- PASS: TestParseLevel/info (0.00s) +2026-07-05T01:36:34.9916668Z --- PASS: TestParseLevel/INFO (0.00s) +2026-07-05T01:36:34.9916991Z --- PASS: TestParseLevel/debug (0.00s) +2026-07-05T01:36:34.9917312Z --- PASS: TestParseLevel/DEBUG (0.00s) +2026-07-05T01:36:34.9917628Z --- PASS: TestParseLevel/trace (0.00s) +2026-07-05T01:36:34.9917946Z --- PASS: TestParseLevel/TRACE (0.00s) +2026-07-05T01:36:34.9918274Z --- PASS: TestParseLevel/unknown (0.00s) +2026-07-05T01:36:34.9918603Z --- PASS: TestParseLevel/#00 (0.00s) +2026-07-05T01:36:34.9918879Z === RUN TestLogFormatting +2026-07-05T01:36:34.9919145Z --- PASS: TestLogFormatting (0.00s) +2026-07-05T01:36:34.9919415Z === RUN TestWarnAndError +2026-07-05T01:36:34.9919668Z --- PASS: TestWarnAndError (0.00s) +2026-07-05T01:36:34.9919934Z === RUN TestDryRunPrefix +2026-07-05T01:36:34.9920383Z --- PASS: TestDryRunPrefix (0.00s) +2026-07-05T01:36:34.9920792Z === RUN TestDryRunPrefixWithColors +2026-07-05T01:36:34.9921098Z --- PASS: TestDryRunPrefixWithColors (0.00s) +2026-07-05T01:36:34.9921394Z === RUN TestEnableTrace +2026-07-05T01:36:34.9921640Z --- PASS: TestEnableTrace (0.00s) +2026-07-05T01:36:34.9921895Z === RUN TestSection +2026-07-05T01:36:34.9922124Z --- PASS: TestSection (0.00s) +2026-07-05T01:36:34.9922393Z === RUN TestSectionNotShownAtInfoLevel +2026-07-05T01:36:34.9922714Z --- PASS: TestSectionNotShownAtInfoLevel (0.00s) +2026-07-05T01:36:34.9923027Z === RUN TestSectionWithColors +2026-07-05T01:36:34.9923300Z --- PASS: TestSectionWithColors (0.00s) +2026-07-05T01:36:34.9923588Z === RUN TestLogWithColors +2026-07-05T01:36:34.9923835Z --- PASS: TestLogWithColors (0.00s) +2026-07-05T01:36:34.9924077Z PASS +2026-07-05T01:36:34.9924281Z coverage: 100.0% of statements +2026-07-05T01:36:34.9924693Z ok github.com/stablekernel/cascade/internal/log 1.015s coverage: 100.0% of statements +2026-07-05T01:36:34.9925207Z === RUN TestNoChangeReDispatch_ProvesUnfixedBugAndFix +2026-07-05T01:36:34.9926354Z [DEBUG] Loading config from /tmp/TestNoChangeReDispatch_ProvesUnfixedBugAndFix3054102833/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:34.9927024Z [DEBUG] Environments: [] +2026-07-05T01:36:34.9927680Z [DEBUG] Base directory: /tmp/TestNoChangeReDispatch_ProvesUnfixedBugAndFix3054102833/001 +2026-07-05T01:36:34.9928473Z nochange_proof_test.go:75: OBSERVED headSHA = b8708df584106fa33beffc4b24c97587a2d93c77 +2026-07-05T01:36:34.9929171Z nochange_proof_test.go:76: OBSERVED HEAD~1 = 5f50682e43ec1db279736e707710702e822cf76f +2026-07-05T01:36:34.9929844Z nochange_proof_test.go:77: OBSERVED envState.SHA = b8708df584106fa33beffc4b24c97587a2d93c77 +2026-07-05T01:36:34.9931056Z nochange_proof_test.go:84: UNFIXED base=5f50682e43ec1db279736e707710702e822cf76f detectChanges(base..HEAD)=true +2026-07-05T01:36:34.9932145Z nochange_proof_test.go:92: PROVEN: unfixed code RE-RUNS the build on a genuine no-change dispatch (RunBuilds[app]=true) +2026-07-05T01:36:34.9932946Z ───� Setup Phase ───� +2026-07-05T01:36:34.9933370Z [INFO] Head SHA: b8708df584106fa33beffc4b24c97587a2d93c77 +2026-07-05T01:36:34.9934530Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} +2026-07-05T01:36:34.9935605Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] +2026-07-05T01:36:34.9936102Z [DEBUG] Build app: needs_run=false (base=b8708df) +2026-07-05T01:36:34.9936624Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = +2026-07-05T01:36:34.9937123Z [DEBUG] Current prerelease version: v0.1.0-rc.0 +2026-07-05T01:36:34.9937494Z [DEBUG] Next env version: (SHA: ) +2026-07-05T01:36:34.9937927Z [DEBUG] Found 0 conventional commits for version calculation +2026-07-05T01:36:34.9938363Z [INFO] Calculated version: v0.1.0-rc.1 +2026-07-05T01:36:34.9938718Z [DEBUG] Changelog base SHA: 5f50682 +2026-07-05T01:36:34.9939040Z [DEBUG] Previous tag: +2026-07-05T01:36:34.9939940Z nochange_proof_test.go:101: FIXED base=b8708df584106fa33beffc4b24c97587a2d93c77 RunBuilds[app]=false +2026-07-05T01:36:34.9941300Z nochange_proof_test.go:109: PROVEN: fixed code SKIPS the build on a genuine no-change dispatch (RunBuilds[app]=false) +2026-07-05T01:36:34.9942177Z --- PASS: TestNoChangeReDispatch_ProvesUnfixedBugAndFix (0.04s) +2026-07-05T01:36:34.9942763Z === RUN TestReconcile_StateCommitAtHead_UnfixedAlsoSkips +2026-07-05T01:36:34.9943996Z [DEBUG] Loading config from /tmp/TestReconcile_StateCommitAtHead_UnfixedAlsoSkips2101060474/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:34.9945061Z [DEBUG] Environments: [] +2026-07-05T01:36:34.9945706Z [DEBUG] Base directory: /tmp/TestReconcile_StateCommitAtHead_UnfixedAlsoSkips2101060474/001 +2026-07-05T01:36:34.9946750Z nochange_reconcile_test.go:47: OBSERVED stateHead (HEAD) = a9613ce6e097c064b9b62b1b5cdfe97510c1421d +2026-07-05T01:36:34.9947489Z nochange_reconcile_test.go:48: OBSERVED HEAD~1 (srcHead) = b8708df584106fa33beffc4b24c97587a2d93c77 +2026-07-05T01:36:34.9948183Z nochange_reconcile_test.go:52: OBSERVED diff(HEAD~1..HEAD) files = ".github/manifest.yaml" +2026-07-05T01:36:34.9949008Z nochange_reconcile_test.go:57: UNFIXED base=b8708df584106fa33beffc4b24c97587a2d93c77 detectChanges(base..stateHead)=false +2026-07-05T01:36:34.9950508Z nochange_reconcile_test.go:65: RECONCILED: with a state commit at HEAD, the UNFIXED code ALSO skips (diff is manifest-only). The bug is masked whenever finalize pushed a state commit before re-dispatch. +2026-07-05T01:36:34.9951370Z --- PASS: TestReconcile_StateCommitAtHead_UnfixedAlsoSkips (0.04s) +2026-07-05T01:36:34.9951774Z === RUN TestSetup_NoChangeReDispatch_SkipsBuild +2026-07-05T01:36:34.9952494Z [DEBUG] Loading config from /tmp/TestSetup_NoChangeReDispatch_SkipsBuild3491086626/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:34.9953080Z [DEBUG] Environments: [] +2026-07-05T01:36:34.9953570Z [DEBUG] Base directory: /tmp/TestSetup_NoChangeReDispatch_SkipsBuild3491086626/001 +2026-07-05T01:36:34.9954057Z ───� Setup Phase ───� +2026-07-05T01:36:34.9954449Z [INFO] Head SHA: b8708df584106fa33beffc4b24c97587a2d93c77 +2026-07-05T01:36:34.9955576Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} +2026-07-05T01:36:34.9956624Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] +2026-07-05T01:36:34.9957116Z [DEBUG] Build app: needs_run=false (base=b8708df) +2026-07-05T01:36:34.9957771Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = +2026-07-05T01:36:34.9958290Z [DEBUG] Current prerelease version: v0.1.0-rc.0 +2026-07-05T01:36:34.9958655Z [DEBUG] Next env version: (SHA: ) +2026-07-05T01:36:34.9959075Z [DEBUG] Found 0 conventional commits for version calculation +2026-07-05T01:36:34.9959498Z [INFO] Calculated version: v0.1.0-rc.1 +2026-07-05T01:36:34.9959852Z [DEBUG] Changelog base SHA: 5f50682 +2026-07-05T01:36:34.9960439Z [DEBUG] Previous tag: +2026-07-05T01:36:34.9960783Z --- PASS: TestSetup_NoChangeReDispatch_SkipsBuild (0.04s) +2026-07-05T01:36:34.9961144Z === RUN TestSetup_NewCommit_RunsBuild +2026-07-05T01:36:34.9961780Z [DEBUG] Loading config from /tmp/TestSetup_NewCommit_RunsBuild200608070/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:34.9962333Z [DEBUG] Environments: [] +2026-07-05T01:36:34.9962778Z [DEBUG] Base directory: /tmp/TestSetup_NewCommit_RunsBuild200608070/001 +2026-07-05T01:36:34.9963211Z ───� Setup Phase ───� +2026-07-05T01:36:34.9963599Z [INFO] Head SHA: 7196b63cc2916f1153f3fc113a5fd7daf8efc91e +2026-07-05T01:36:34.9964730Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} +2026-07-05T01:36:34.9965807Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] +2026-07-05T01:36:34.9966296Z [DEBUG] Build app: needs_run=true (base=b8708df) +2026-07-05T01:36:34.9966811Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = +2026-07-05T01:36:34.9967312Z [DEBUG] Current prerelease version: v0.1.0-rc.0 +2026-07-05T01:36:34.9967675Z [DEBUG] Next env version: (SHA: ) +2026-07-05T01:36:34.9968098Z [DEBUG] Found 0 conventional commits for version calculation +2026-07-05T01:36:34.9968563Z [INFO] Calculated version: v0.1.0-rc.1 +2026-07-05T01:36:34.9969059Z [DEBUG] Changelog base SHA: 5f50682 +2026-07-05T01:36:34.9969377Z [DEBUG] Previous tag: +2026-07-05T01:36:34.9969664Z --- PASS: TestSetup_NewCommit_RunsBuild (0.05s) +2026-07-05T01:36:34.9970211Z === RUN TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc +2026-07-05T01:36:34.9971023Z [DEBUG] Loading config from /tmp/TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc3168605837/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:34.9971674Z [DEBUG] Environments: [] +2026-07-05T01:36:34.9972215Z [DEBUG] Base directory: /tmp/TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc3168605837/001 +2026-07-05T01:36:34.9972728Z ───� Setup Phase ───� +2026-07-05T01:36:34.9973116Z [INFO] Head SHA: b8708df584106fa33beffc4b24c97587a2d93c77 +2026-07-05T01:36:34.9974261Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} +2026-07-05T01:36:34.9975465Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] +2026-07-05T01:36:34.9976183Z [DEBUG] Build app: needs_run=false (base=b8708df) +2026-07-05T01:36:34.9976920Z [DEBUG] Using latest published release as base: v0.5.1 (SHA: b8708df) +2026-07-05T01:36:34.9977680Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = v0.5.1 +2026-07-05T01:36:34.9978207Z [DEBUG] Current prerelease version: v0.1.0-rc.0 +2026-07-05T01:36:34.9978604Z [DEBUG] Next env version: v0.5.1 (SHA: b8708df) +2026-07-05T01:36:34.9979036Z [DEBUG] Found 0 conventional commits for version calculation +2026-07-05T01:36:34.9979463Z [INFO] Calculated version: v0.5.1-rc.0 +2026-07-05T01:36:34.9979820Z [DEBUG] Changelog base SHA: 5f50682 +2026-07-05T01:36:34.9980414Z [DEBUG] Previous tag: +2026-07-05T01:36:34.9980961Z --- PASS: TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc (0.04s) +2026-07-05T01:36:34.9981364Z === RUN TestFinalize_RecordsPerBuildSHA +2026-07-05T01:36:34.9982004Z [DEBUG] Loading config from /tmp/TestFinalize_RecordsPerBuildSHA161203975/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:34.9982572Z [DEBUG] Environments: [] +2026-07-05T01:36:34.9983034Z [DEBUG] Base directory: /tmp/TestFinalize_RecordsPerBuildSHA161203975/001 +2026-07-05T01:36:34.9983480Z ───� Finalize Phase ───� +2026-07-05T01:36:34.9983903Z [INFO] Updated prerelease state: SHA=b8708df, Version=v0.1.0-rc.0 +2026-07-05T01:36:34.9984358Z [INFO] Updated prerelease.builds.app state +2026-07-05T01:36:34.9984977Z [DEBUG] Wrote updated config to /tmp/TestFinalize_RecordsPerBuildSHA161203975/001/.github/manifest.yaml +2026-07-05T01:36:34.9985792Z [main 69c4946] chore: update state for prerelease [skip ci] +2026-07-05T01:36:34.9986171Z 1 file changed, 21 insertions(+) +2026-07-05T01:36:34.9986482Z create mode 100644 .github/manifest.yaml +2026-07-05T01:36:34.9986828Z To /tmp/TestFinalize_RecordsPerBuildSHA161203975/002 +2026-07-05T01:36:34.9987176Z b8708df..69c4946 main -> main +2026-07-05T01:36:34.9987522Z [INFO] Committed and pushed state changes +2026-07-05T01:36:34.9987867Z --- PASS: TestFinalize_RecordsPerBuildSHA (0.08s) +2026-07-05T01:36:34.9988185Z === RUN TestNewCommand_Structure +2026-07-05T01:36:34.9988474Z --- PASS: TestNewCommand_Structure (0.00s) +2026-07-05T01:36:34.9988836Z === RUN TestNewCommand_PersistentPreRunE_AutoDetectsConfig +2026-07-05T01:36:34.9989267Z --- PASS: TestNewCommand_PersistentPreRunE_AutoDetectsConfig (0.00s) +2026-07-05T01:36:34.9989648Z === RUN TestNewSetupCommand_Structure +2026-07-05T01:36:34.9989959Z --- PASS: TestNewSetupCommand_Structure (0.00s) +2026-07-05T01:36:34.9990561Z === RUN TestNewFinalizeCommand_Structure +2026-07-05T01:36:34.9990887Z --- PASS: TestNewFinalizeCommand_Structure (0.00s) +2026-07-05T01:36:34.9991200Z === RUN TestRunSetup_InitError +2026-07-05T01:36:34.9991708Z ───� Orchestrate Setup ───� +2026-07-05T01:36:34.9992027Z [INFO] Environment: dev +2026-07-05T01:36:34.9992409Z [DEBUG] Config path: /nonexistent/path/manifest.yaml +2026-07-05T01:36:34.9992922Z [DEBUG] Loading config from /nonexistent/path/manifest.yaml (key: ci) +2026-07-05T01:36:34.9993333Z --- PASS: TestRunSetup_InitError (0.00s) +2026-07-05T01:36:34.9993633Z === RUN TestRunFinalize_InitError +2026-07-05T01:36:34.9994164Z ───� Orchestrate Finalize ───� +2026-07-05T01:36:34.9994620Z [INFO] Environment: dev +2026-07-05T01:36:34.9995143Z [DEBUG] Config path: /nonexistent/path/manifest.yaml +2026-07-05T01:36:34.9995899Z [DEBUG] Loading config from /nonexistent/path/manifest.yaml (key: ci) +2026-07-05T01:36:34.9996521Z --- PASS: TestRunFinalize_InitError (0.00s) +2026-07-05T01:36:34.9997077Z === RUN TestNewOrchestrator_NoEnvUsesDefaultStateKey +2026-07-05T01:36:34.9998346Z [DEBUG] Loading config from /tmp/TestNewOrchestrator_NoEnvUsesDefaultStateKey2788723090/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:34.9999738Z [DEBUG] No environment specified and no environments configured - using state key: prerelease +2026-07-05T01:36:35.0000765Z [DEBUG] Environments: [] +2026-07-05T01:36:35.0001619Z [DEBUG] Base directory: /tmp/TestNewOrchestrator_NoEnvUsesDefaultStateKey2788723090/001 +2026-07-05T01:36:35.0002512Z --- PASS: TestNewOrchestrator_NoEnvUsesDefaultStateKey (0.00s) +2026-07-05T01:36:35.0003150Z === RUN TestNewOrchestrator_MissingConfigSection +2026-07-05T01:36:35.0004284Z [DEBUG] Loading config from /tmp/TestNewOrchestrator_MissingConfigSection2106015813/001/manifest.yaml (key: ci) +2026-07-05T01:36:35.0005284Z --- PASS: TestNewOrchestrator_MissingConfigSection (0.00s) +2026-07-05T01:36:35.0005849Z === RUN TestCalculateBaseSHAs_Priorities +2026-07-05T01:36:35.0006371Z --- PASS: TestCalculateBaseSHAs_Priorities (0.03s) +2026-07-05T01:36:35.0006886Z === RUN TestDetectChanges +2026-07-05T01:36:35.0007857Z [WARN] Failed to detect changes: exit status 128 - assuming changes needed +2026-07-05T01:36:35.0008561Z --- PASS: TestDetectChanges (0.03s) +2026-07-05T01:36:35.0009079Z === RUN TestCalculateVersion_EnvironmentNotFound +2026-07-05T01:36:35.0009711Z --- PASS: TestCalculateVersion_EnvironmentNotFound (0.00s) +2026-07-05T01:36:35.0010508Z === RUN TestCalculateVersion_MultiEnv +2026-07-05T01:36:35.0011040Z [DEBUG] Current dev version: v1.0.0-rc.0 +2026-07-05T01:36:35.0011442Z [DEBUG] Next env version: v0.9.0 (SHA: b8708df) +2026-07-05T01:36:35.0011890Z [DEBUG] Found 0 conventional commits for version calculation +2026-07-05T01:36:35.0012276Z --- PASS: TestCalculateVersion_MultiEnv (0.02s) +2026-07-05T01:36:35.0012586Z === RUN TestWriteConfig_ReadError +2026-07-05T01:36:35.0012873Z --- PASS: TestWriteConfig_ReadError (0.00s) +2026-07-05T01:36:35.0013173Z === RUN TestWriteConfig_CustomManifestKey +2026-07-05T01:36:35.0013767Z [DEBUG] Wrote updated config to /tmp/TestWriteConfig_CustomManifestKey3489757259/001/manifest.yaml +2026-07-05T01:36:35.0014321Z --- PASS: TestWriteConfig_CustomManifestKey (0.00s) +2026-07-05T01:36:35.0014658Z === RUN TestCommitAndPush_NoChanges +2026-07-05T01:36:35.0014971Z [DEBUG] No changes to commit +2026-07-05T01:36:35.0015268Z --- PASS: TestCommitAndPush_NoChanges (0.03s) +2026-07-05T01:36:35.0015576Z === RUN TestGitOutput_Error +2026-07-05T01:36:35.0015848Z --- PASS: TestGitOutput_Error (0.02s) +2026-07-05T01:36:35.0016125Z === RUN TestParseResults +2026-07-05T01:36:35.0016386Z === RUN TestParseResults/empty_string +2026-07-05T01:36:35.0016681Z === RUN TestParseResults/single_result +2026-07-05T01:36:35.0016981Z === RUN TestParseResults/multiple_results +2026-07-05T01:36:35.0017338Z === RUN TestParseResults/with_spaces +2026-07-05T01:36:35.0017793Z === RUN TestParseResults/three_results +2026-07-05T01:36:35.0018123Z --- PASS: TestParseResults (0.00s) +2026-07-05T01:36:35.0018494Z --- PASS: TestParseResults/empty_string (0.00s) +2026-07-05T01:36:35.0019099Z --- PASS: TestParseResults/single_result (0.00s) +2026-07-05T01:36:35.0019497Z --- PASS: TestParseResults/multiple_results (0.00s) +2026-07-05T01:36:35.0019883Z --- PASS: TestParseResults/with_spaces (0.00s) +2026-07-05T01:36:35.0020567Z --- PASS: TestParseResults/three_results (0.00s) +2026-07-05T01:36:35.0020862Z === RUN TestSplitTrim +2026-07-05T01:36:35.0021101Z === RUN TestSplitTrim/empty_string +2026-07-05T01:36:35.0021381Z === RUN TestSplitTrim/single_item +2026-07-05T01:36:35.0021669Z === RUN TestSplitTrim/multiple_items +2026-07-05T01:36:35.0021947Z === RUN TestSplitTrim/with_spaces +2026-07-05T01:36:35.0022216Z === RUN TestSplitTrim/colon_separator +2026-07-05T01:36:35.0022492Z --- PASS: TestSplitTrim (0.00s) +2026-07-05T01:36:35.0022819Z --- PASS: TestSplitTrim/empty_string (0.00s) +2026-07-05T01:36:35.0023179Z --- PASS: TestSplitTrim/single_item (0.00s) +2026-07-05T01:36:35.0023554Z --- PASS: TestSplitTrim/multiple_items (0.00s) +2026-07-05T01:36:35.0023928Z --- PASS: TestSplitTrim/with_spaces (0.00s) +2026-07-05T01:36:35.0024288Z --- PASS: TestSplitTrim/colon_separator (0.00s) +2026-07-05T01:36:35.0024583Z === RUN TestMatchGlob +2026-07-05T01:36:35.0024817Z === RUN TestMatchGlob/exact_match +2026-07-05T01:36:35.0025084Z === RUN TestMatchGlob/exact_no_match +2026-07-05T01:36:35.0025376Z === RUN TestMatchGlob/star_extension_root_only +2026-07-05T01:36:35.0025726Z === RUN TestMatchGlob/star_extension_does_not_cross_slash +2026-07-05T01:36:35.0026075Z === RUN TestMatchGlob/star_extension_no_match +2026-07-05T01:36:35.0026368Z === RUN TestMatchGlob/star_prefix +2026-07-05T01:36:35.0026640Z === RUN TestMatchGlob/star_single_segment +2026-07-05T01:36:35.0026975Z === RUN TestMatchGlob/star_single_segment_no_cross_slash +2026-07-05T01:36:35.0027338Z === RUN TestMatchGlob/star_anchored_no_leading_garbage +2026-07-05T01:36:35.0027660Z === RUN TestMatchGlob/star_anchored_match +2026-07-05T01:36:35.0028081Z === RUN TestMatchGlob/double_star +2026-07-05T01:36:35.0028367Z === RUN TestMatchGlob/double_star_nested +2026-07-05T01:36:35.0028671Z === RUN TestMatchGlob/double_star_no_match +2026-07-05T01:36:35.0028977Z === RUN TestMatchGlob/recursive_glob_extension +2026-07-05T01:36:35.0029306Z === RUN TestMatchGlob/recursive_glob_extension_deep +2026-07-05T01:36:35.0029657Z === RUN TestMatchGlob/recursive_glob_extension_no_match +2026-07-05T01:36:35.0030195Z === RUN TestMatchGlob/recursive_glob_mid_pattern +2026-07-05T01:36:35.0030586Z === RUN TestMatchGlob/recursive_glob_mid_pattern_wrong_prefix +2026-07-05T01:36:35.0030935Z === RUN TestMatchGlob/infra_pattern +2026-07-05T01:36:35.0031216Z === RUN TestMatchGlob/go.mod_pattern +2026-07-05T01:36:35.0031496Z === RUN TestMatchGlob/workflow_pattern +2026-07-05T01:36:35.0031775Z --- PASS: TestMatchGlob (0.00s) +2026-07-05T01:36:35.0032090Z --- PASS: TestMatchGlob/exact_match (0.00s) +2026-07-05T01:36:35.0032451Z --- PASS: TestMatchGlob/exact_no_match (0.00s) +2026-07-05T01:36:35.0032873Z --- PASS: TestMatchGlob/star_extension_root_only (0.00s) +2026-07-05T01:36:35.0033351Z --- PASS: TestMatchGlob/star_extension_does_not_cross_slash (0.00s) +2026-07-05T01:36:35.0033820Z --- PASS: TestMatchGlob/star_extension_no_match (0.00s) +2026-07-05T01:36:35.0034196Z --- PASS: TestMatchGlob/star_prefix (0.00s) +2026-07-05T01:36:35.0034565Z --- PASS: TestMatchGlob/star_single_segment (0.00s) +2026-07-05T01:36:35.0035009Z --- PASS: TestMatchGlob/star_single_segment_no_cross_slash (0.00s) +2026-07-05T01:36:35.0035503Z --- PASS: TestMatchGlob/star_anchored_no_leading_garbage (0.00s) +2026-07-05T01:36:35.0035942Z --- PASS: TestMatchGlob/star_anchored_match (0.00s) +2026-07-05T01:36:35.0036314Z --- PASS: TestMatchGlob/double_star (0.00s) +2026-07-05T01:36:35.0036701Z --- PASS: TestMatchGlob/double_star_nested (0.00s) +2026-07-05T01:36:35.0037094Z --- PASS: TestMatchGlob/double_star_no_match (0.00s) +2026-07-05T01:36:35.0037516Z --- PASS: TestMatchGlob/recursive_glob_extension (0.00s) +2026-07-05T01:36:35.0038118Z --- PASS: TestMatchGlob/recursive_glob_extension_deep (0.00s) +2026-07-05T01:36:35.0038626Z --- PASS: TestMatchGlob/recursive_glob_extension_no_match (0.00s) +2026-07-05T01:36:35.0039119Z --- PASS: TestMatchGlob/recursive_glob_mid_pattern (0.00s) +2026-07-05T01:36:35.0039620Z --- PASS: TestMatchGlob/recursive_glob_mid_pattern_wrong_prefix (0.00s) +2026-07-05T01:36:35.0040628Z --- PASS: TestMatchGlob/infra_pattern (0.00s) +2026-07-05T01:36:35.0041014Z --- PASS: TestMatchGlob/go.mod_pattern (0.00s) +2026-07-05T01:36:35.0041397Z --- PASS: TestMatchGlob/workflow_pattern (0.00s) +2026-07-05T01:36:35.0041702Z === RUN TestTruncateSHA +2026-07-05T01:36:35.0041961Z === RUN TestTruncateSHA/abcdef1234567890 +2026-07-05T01:36:35.0042246Z === RUN TestTruncateSHA/abc +2026-07-05T01:36:35.0042499Z === RUN TestTruncateSHA/#00 +2026-07-05T01:36:35.0042756Z === RUN TestTruncateSHA/1234567 +2026-07-05T01:36:35.0043034Z === RUN TestTruncateSHA/12345678 +2026-07-05T01:36:35.0043313Z --- PASS: TestTruncateSHA (0.00s) +2026-07-05T01:36:35.0043660Z --- PASS: TestTruncateSHA/abcdef1234567890 (0.00s) +2026-07-05T01:36:35.0044014Z --- PASS: TestTruncateSHA/abc (0.00s) +2026-07-05T01:36:35.0044336Z --- PASS: TestTruncateSHA/#00 (0.00s) +2026-07-05T01:36:35.0044665Z --- PASS: TestTruncateSHA/1234567 (0.00s) +2026-07-05T01:36:35.0045016Z --- PASS: TestTruncateSHA/12345678 (0.00s) +2026-07-05T01:36:35.0045299Z === RUN TestContains +2026-07-05T01:36:35.0045532Z --- PASS: TestContains (0.00s) +2026-07-05T01:36:35.0045780Z === RUN TestIndexOf +2026-07-05T01:36:35.0046004Z === RUN TestIndexOf/dev +2026-07-05T01:36:35.0046239Z === RUN TestIndexOf/test +2026-07-05T01:36:35.0046473Z === RUN TestIndexOf/uat +2026-07-05T01:36:35.0046707Z === RUN TestIndexOf/prod +2026-07-05T01:36:35.0046948Z === RUN TestIndexOf/staging +2026-07-05T01:36:35.0047202Z === RUN TestIndexOf/#00 +2026-07-05T01:36:35.0047451Z --- PASS: TestIndexOf (0.00s) +2026-07-05T01:36:35.0047903Z --- PASS: TestIndexOf/dev (0.00s) +2026-07-05T01:36:35.0048229Z --- PASS: TestIndexOf/test (0.00s) +2026-07-05T01:36:35.0048561Z --- PASS: TestIndexOf/uat (0.00s) +2026-07-05T01:36:35.0048869Z --- PASS: TestIndexOf/prod (0.00s) +2026-07-05T01:36:35.0049182Z --- PASS: TestIndexOf/staging (0.00s) +2026-07-05T01:36:35.0049503Z --- PASS: TestIndexOf/#00 (0.00s) +2026-07-05T01:36:35.0049771Z === RUN TestNewOrchestrator +2026-07-05T01:36:35.0050675Z [DEBUG] Loading config from /tmp/TestNewOrchestrator2764414671/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:35.0051263Z [DEBUG] Environments: [dev test prod] +2026-07-05T01:36:35.0051727Z [DEBUG] Base directory: /tmp/TestNewOrchestrator2764414671/001 +2026-07-05T01:36:35.0052110Z --- PASS: TestNewOrchestrator (0.00s) +2026-07-05T01:36:35.0052406Z === RUN TestNewOrchestratorInvalidPath +2026-07-05T01:36:35.0052841Z [DEBUG] Loading config from /nonexistent/path/cicd.yaml (key: ) +2026-07-05T01:36:35.0053275Z --- PASS: TestNewOrchestratorInvalidPath (0.00s) +2026-07-05T01:36:35.0053615Z === RUN TestNewOrchestratorInvalidYAML +2026-07-05T01:36:35.0054197Z [DEBUG] Loading config from /tmp/TestNewOrchestratorInvalidYAML2459592650/001/cicd.yaml (key: ) +2026-07-05T01:36:35.0054723Z --- PASS: TestNewOrchestratorInvalidYAML (0.00s) +2026-07-05T01:36:35.0055039Z === RUN TestCalculateChangelogRefs +2026-07-05T01:36:35.0055441Z === RUN TestCalculateChangelogRefs/intermediate_env_uses_next_env's_state +2026-07-05T01:36:35.0056063Z === RUN TestCalculateChangelogRefs/intermediate_env_with_empty_next-env_state_falls_through_to_release +2026-07-05T01:36:35.0056696Z === RUN TestCalculateChangelogRefs/no-env_library_uses_state[release]_when_present +2026-07-05T01:36:35.0057339Z === RUN TestCalculateChangelogRefs/no-env_library_falls_back_to_latest_release_when_state[release]_absent +2026-07-05T01:36:35.0057973Z === RUN TestCalculateChangelogRefs/terminal_env_in_multi-env_uses_state[release] +2026-07-05T01:36:35.0058700Z === RUN TestCalculateChangelogRefs/state[release]_with_empty_SHA_is_treated_as_absent +2026-07-05T01:36:35.0059165Z --- PASS: TestCalculateChangelogRefs (0.00s) +2026-07-05T01:36:35.0059696Z --- PASS: TestCalculateChangelogRefs/intermediate_env_uses_next_env's_state (0.00s) +2026-07-05T01:36:35.0060654Z --- PASS: TestCalculateChangelogRefs/intermediate_env_with_empty_next-env_state_falls_through_to_release (0.00s) +2026-07-05T01:36:35.0061459Z --- PASS: TestCalculateChangelogRefs/no-env_library_uses_state[release]_when_present (0.00s) +2026-07-05T01:36:35.0062269Z --- PASS: TestCalculateChangelogRefs/no-env_library_falls_back_to_latest_release_when_state[release]_absent (0.00s) +2026-07-05T01:36:35.0063052Z --- PASS: TestCalculateChangelogRefs/terminal_env_in_multi-env_uses_state[release] (0.00s) +2026-07-05T01:36:35.0063782Z --- PASS: TestCalculateChangelogRefs/state[release]_with_empty_SHA_is_treated_as_absent (0.00s) +2026-07-05T01:36:35.0064296Z === RUN TestWriteConfig_PreservesFullManifest +2026-07-05T01:36:35.0064996Z [DEBUG] Loading config from /tmp/TestWriteConfig_PreservesFullManifest1061590019/001/.github/manifest.yaml (key: ci) +2026-07-05T01:36:35.0065593Z [DEBUG] Environments: [dev] +2026-07-05T01:36:35.0066085Z [DEBUG] Base directory: /tmp/TestWriteConfig_PreservesFullManifest1061590019/001 +2026-07-05T01:36:35.0066836Z [DEBUG] Wrote updated config to /tmp/TestWriteConfig_PreservesFullManifest1061590019/001/.github/manifest.yaml +2026-07-05T01:36:35.0067408Z --- PASS: TestWriteConfig_PreservesFullManifest (0.00s) +2026-07-05T01:36:35.0067793Z === RUN TestWriteConfig_TopLevelCliVersionSHA_Preserved +2026-07-05T01:36:35.0068204Z --- PASS: TestWriteConfig_TopLevelCliVersionSHA_Preserved (0.00s) +2026-07-05T01:36:35.0068648Z === RUN TestTypedRemarshal_UnmodeledConfig_IsDropped +2026-07-05T01:36:35.0069041Z --- PASS: TestTypedRemarshal_UnmodeledConfig_IsDropped (0.00s) +2026-07-05T01:36:35.0069589Z === RUN TestWriteManifestState_UnmodeledConfig_IsPreserved +2026-07-05T01:36:35.0070191Z --- PASS: TestWriteManifestState_UnmodeledConfig_IsPreserved (0.00s) +2026-07-05T01:36:35.0070547Z PASS +2026-07-05T01:36:35.0070762Z coverage: 77.6% of statements +2026-07-05T01:36:35.0071208Z ok github.com/stablekernel/cascade/internal/orchestrate 1.461s coverage: 77.6% of statements +2026-07-05T01:36:35.0071663Z === RUN TestGitHubOutput +2026-07-05T01:36:35.0071920Z --- PASS: TestGitHubOutput (0.00s) +2026-07-05T01:36:35.0072202Z === RUN TestGitHubOutputMultiline +2026-07-05T01:36:35.0072498Z --- PASS: TestGitHubOutputMultiline (0.00s) +2026-07-05T01:36:35.0072802Z === RUN TestGitHubOutputMultiple +2026-07-05T01:36:35.0073095Z --- PASS: TestGitHubOutputMultiple (0.00s) +2026-07-05T01:36:35.0073375Z === RUN TestJSON +2026-07-05T01:36:35.0073601Z --- PASS: TestJSON (0.00s) +2026-07-05T01:36:35.0073852Z === RUN TestNoticeWarningError +2026-07-05T01:36:35.0074104Z [NOTICE] test notice +2026-07-05T01:36:35.0074325Z [WARNING] test warning +2026-07-05T01:36:35.0074557Z [ERROR] test error +2026-07-05T01:36:35.0074805Z --- PASS: TestNoticeWarningError (0.00s) +2026-07-05T01:36:35.0075103Z === RUN TestNoticeInGitHubActions +2026-07-05T01:36:35.0075392Z --- PASS: TestNoticeInGitHubActions (0.00s) +2026-07-05T01:36:35.0075697Z === RUN TestWarningInGitHubActions +2026-07-05T01:36:35.0075996Z --- PASS: TestWarningInGitHubActions (0.00s) +2026-07-05T01:36:35.0076300Z === RUN TestErrorInGitHubActions +2026-07-05T01:36:35.0076581Z --- PASS: TestErrorInGitHubActions (0.00s) +2026-07-05T01:36:35.0076871Z === RUN TestGitHubStepSummary +2026-07-05T01:36:35.0077147Z --- PASS: TestGitHubStepSummary (0.00s) +2026-07-05T01:36:35.0077451Z === RUN TestGitHubStepSummaryNoEnvVar +2026-07-05T01:36:35.0077715Z test content +2026-07-05T01:36:35.0077965Z --- PASS: TestGitHubStepSummaryNoEnvVar (0.00s) +2026-07-05T01:36:35.0078285Z === RUN TestGitHubOutputNoEnvVar +2026-07-05T01:36:35.0078540Z [OUTPUT] key=value +2026-07-05T01:36:35.0078786Z --- PASS: TestGitHubOutputNoEnvVar (0.00s) +2026-07-05T01:36:35.0079214Z === RUN TestResult +2026-07-05T01:36:35.0079441Z === RUN TestResult/text_mode +2026-07-05T01:36:35.0079691Z === RUN TestResult/JSON_mode +2026-07-05T01:36:35.0079938Z --- PASS: TestResult (0.00s) +2026-07-05T01:36:35.0080458Z --- PASS: TestResult/text_mode (0.00s) +2026-07-05T01:36:35.0080783Z --- PASS: TestResult/JSON_mode (0.00s) +2026-07-05T01:36:35.0081036Z PASS +2026-07-05T01:36:35.0081237Z coverage: 71.2% of statements +2026-07-05T01:36:35.0081657Z ok github.com/stablekernel/cascade/internal/output 1.016s coverage: 71.2% of statements +2026-07-05T01:36:35.2935693Z === RUN TestRun_CleanRepo_NoPendingChanges +2026-07-05T01:36:35.2936281Z === PAUSE TestRun_CleanRepo_NoPendingChanges +2026-07-05T01:36:35.2936777Z === RUN TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff +2026-07-05T01:36:35.2937178Z === PAUSE TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff +2026-07-05T01:36:35.2937532Z === RUN TestRun_MissingFile_RendersWholeFileAdd +2026-07-05T01:36:35.2937898Z === PAUSE TestRun_MissingFile_RendersWholeFileAdd +2026-07-05T01:36:35.2938238Z === RUN TestRun_Deterministic_SameStdoutTwice +2026-07-05T01:36:35.2938742Z === PAUSE TestRun_Deterministic_SameStdoutTwice +2026-07-05T01:36:35.2939267Z === RUN TestRun_ReadOnly_NothingChangesOnDisk +2026-07-05T01:36:35.2939596Z === PAUSE TestRun_ReadOnly_NothingChangesOnDisk +2026-07-05T01:36:35.2939919Z === RUN TestRun_ManifestAbsent_OperationalError +2026-07-05T01:36:35.2940502Z === PAUSE TestRun_ManifestAbsent_OperationalError +2026-07-05T01:36:35.2940853Z === CONT TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff +2026-07-05T01:36:35.2941211Z === CONT TestRun_Deterministic_SameStdoutTwice +2026-07-05T01:36:35.2941534Z === CONT TestRun_MissingFile_RendersWholeFileAdd +2026-07-05T01:36:35.2941853Z === CONT TestRun_CleanRepo_NoPendingChanges +2026-07-05T01:36:35.2942235Z --- PASS: TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff (0.03s) +2026-07-05T01:36:35.2942788Z === CONT TestRun_ManifestAbsent_OperationalError +2026-07-05T01:36:35.2943374Z --- PASS: TestRun_CleanRepo_NoPendingChanges (0.03s) +2026-07-05T01:36:35.2943722Z === CONT TestRun_ReadOnly_NothingChangesOnDisk +2026-07-05T01:36:35.2944067Z --- PASS: TestRun_ManifestAbsent_OperationalError (0.00s) +2026-07-05T01:36:35.2944443Z --- PASS: TestRun_MissingFile_RendersWholeFileAdd (0.03s) +2026-07-05T01:36:35.2944802Z --- PASS: TestRun_Deterministic_SameStdoutTwice (0.03s) +2026-07-05T01:36:35.2945162Z --- PASS: TestRun_ReadOnly_NothingChangesOnDisk (0.02s) +2026-07-05T01:36:35.2945451Z PASS +2026-07-05T01:36:35.2945661Z coverage: 67.4% of statements +2026-07-05T01:36:35.2946071Z ok github.com/stablekernel/cascade/internal/plan 1.063s coverage: 67.4% of statements +2026-07-05T01:36:47.9657246Z === RUN TestFinalizer_AutoCommits_RefreshesEnvSHA +2026-07-05T01:36:47.9658085Z --- PASS: TestFinalizer_AutoCommits_RefreshesEnvSHA (0.00s) +2026-07-05T01:36:47.9658873Z === RUN TestFinalizer_NoAutoCommits_KeepsPromotionSHA +2026-07-05T01:36:47.9659701Z --- PASS: TestFinalizer_NoAutoCommits_KeepsPromotionSHA (0.00s) +2026-07-05T01:36:47.9660849Z === RUN TestFinalizer_AutoCommits_EmptySHA_FallsBackToPromotion +2026-07-05T01:36:47.9661710Z --- PASS: TestFinalizer_AutoCommits_EmptySHA_FallsBackToPromotion (0.00s) +2026-07-05T01:36:47.9673233Z === RUN TestReadDeployResultsFromEnv +2026-07-05T01:36:47.9674006Z --- PASS: TestReadDeployResultsFromEnv (0.00s) +2026-07-05T01:36:47.9675091Z === RUN TestFinalizeCommand_UpdatesState +2026-07-05T01:36:47.9675911Z Dry run - state would be updated but not written to disk +2026-07-05T01:36:47.9676747Z --- PASS: TestFinalizeCommand_UpdatesState (0.00s) +2026-07-05T01:36:47.9677650Z === RUN TestFinalizeCommand_RealUpdate +2026-07-05T01:36:47.9678200Z State updated for test (not committed) +2026-07-05T01:36:47.9678754Z --- PASS: TestFinalizeCommand_RealUpdate (0.00s) +2026-07-05T01:36:47.9679349Z === RUN TestFinalizeCommand_RequiresPromotionResult +2026-07-05T01:36:47.9679949Z Error: required flag(s) "promotion-result" not set +2026-07-05T01:36:47.9680631Z Usage: +2026-07-05T01:36:47.9680988Z promote finalize [flags] +2026-07-05T01:36:47.9681544Z +2026-07-05T01:36:47.9681674Z Flags: +2026-07-05T01:36:47.9682246Z --commit-push Commit and push state changes +2026-07-05T01:36:47.9682879Z -h, --help help for finalize +2026-07-05T01:36:47.9683688Z --promotion-result string JSON from preflight output (required) +2026-07-05T01:36:47.9684650Z --repo string GitHub repository (owner/name) for job query +2026-07-05T01:36:47.9685524Z --run-id string GitHub Actions run ID for job query +2026-07-05T01:36:47.9685935Z +2026-07-05T01:36:47.9686079Z Global Flags: +2026-07-05T01:36:47.9686781Z --actor string Actor performing action (default: from GITHUB_ACTOR) +2026-07-05T01:36:47.9687778Z --config string Path to manifest file (default: .github/manifest.yaml) +2026-07-05T01:36:47.9688637Z --dry-run Preview changes without modifying state +2026-07-05T01:36:47.9689330Z --gha-output Write to $GITHUB_OUTPUT +2026-07-05T01:36:47.9689939Z --json Output result as JSON +2026-07-05T01:36:47.9690500Z +2026-07-05T01:36:47.9690807Z --- PASS: TestFinalizeCommand_RequiresPromotionResult (0.00s) +2026-07-05T01:36:47.9691381Z === RUN TestFinalizeCommand_WithJobQuery +2026-07-05T01:36:47.9691922Z Dry run - state would be updated but not written to disk +2026-07-05T01:36:47.9692511Z --- PASS: TestFinalizeCommand_WithJobQuery (0.03s) +2026-07-05T01:36:47.9693065Z === RUN TestPreflightCommand_WithCIKeyManifest +2026-07-05T01:36:47.9693523Z Mode: default +2026-07-05T01:36:47.9693838Z Source: dev (abc123d) +2026-07-05T01:36:47.9694325Z Final Env: test +2026-07-05T01:36:47.9694666Z Deploys to run: [infra app] +2026-07-05T01:36:47.9695033Z Can proceed: true +2026-07-05T01:36:47.9695485Z --- PASS: TestPreflightCommand_WithCIKeyManifest (0.00s) +2026-07-05T01:36:47.9696069Z === RUN TestPreflightCommand_WithEmptyDeploys +2026-07-05T01:36:47.9696522Z Mode: default +2026-07-05T01:36:47.9696851Z Source: dev (abc123) +2026-07-05T01:36:47.9697458Z Final Env: test +2026-07-05T01:36:47.9697771Z Deploys to run: [] +2026-07-05T01:36:47.9698090Z Can proceed: true +2026-07-05T01:36:47.9698514Z --- PASS: TestPreflightCommand_WithEmptyDeploys (0.00s) +2026-07-05T01:36:47.9699076Z === RUN TestPreflightCommand_AllPromotionModes +2026-07-05T01:36:47.9699635Z === RUN TestPreflightCommand_AllPromotionModes/default +2026-07-05T01:36:47.9700294Z Mode: default +2026-07-05T01:36:47.9700598Z Source: dev (abc123) +2026-07-05T01:36:47.9700916Z Final Env: release +2026-07-05T01:36:47.9701224Z Deploys to run: [] +2026-07-05T01:36:47.9701550Z Can proceed: true +2026-07-05T01:36:47.9702005Z === RUN TestPreflightCommand_AllPromotionModes/dev-to-test +2026-07-05T01:36:47.9702523Z Mode: cascade +2026-07-05T01:36:47.9702841Z Target: dev-to-test +2026-07-05T01:36:47.9703178Z Source: dev (abc123) +2026-07-05T01:36:47.9703508Z Final Env: test +2026-07-05T01:36:47.9703841Z Deploys to run: [app] +2026-07-05T01:36:47.9704184Z Can proceed: true +2026-07-05T01:36:47.9704632Z === RUN TestPreflightCommand_AllPromotionModes/dev-to-uat +2026-07-05T01:36:47.9705137Z Mode: cascade +2026-07-05T01:36:47.9705432Z Target: dev-to-uat +2026-07-05T01:36:47.9705742Z Source: dev (abc123) +2026-07-05T01:36:47.9706072Z Final Env: uat +2026-07-05T01:36:47.9706400Z Deploys to run: [app] +2026-07-05T01:36:47.9706757Z Can proceed: true +2026-07-05T01:36:47.9707212Z === RUN TestPreflightCommand_AllPromotionModes/test-to-uat +2026-07-05T01:36:47.9707729Z Mode: cascade +2026-07-05T01:36:47.9708041Z Target: test-to-uat +2026-07-05T01:36:47.9708386Z Source: test (def456) +2026-07-05T01:36:47.9708722Z Final Env: uat +2026-07-05T01:36:47.9709042Z Deploys to run: [app] +2026-07-05T01:36:47.9709382Z Can proceed: true +2026-07-05T01:36:47.9709845Z === RUN TestPreflightCommand_AllPromotionModes/uat-to-prod +2026-07-05T01:36:47.9710583Z Mode: cascade +2026-07-05T01:36:47.9710901Z Target: uat-to-prod +2026-07-05T01:36:47.9711235Z Source: uat (ghi789) +2026-07-05T01:36:47.9711577Z Final Env: prod +2026-07-05T01:36:47.9711917Z Deploys to run: [app] +2026-07-05T01:36:47.9712511Z Can proceed: true +2026-07-05T01:36:47.9712962Z --- PASS: TestPreflightCommand_AllPromotionModes (0.01s) +2026-07-05T01:36:47.9713786Z --- PASS: TestPreflightCommand_AllPromotionModes/default (0.00s) +2026-07-05T01:36:47.9714682Z --- PASS: TestPreflightCommand_AllPromotionModes/dev-to-test (0.00s) +2026-07-05T01:36:47.9715561Z --- PASS: TestPreflightCommand_AllPromotionModes/dev-to-uat (0.00s) +2026-07-05T01:36:47.9716408Z --- PASS: TestPreflightCommand_AllPromotionModes/test-to-uat (0.00s) +2026-07-05T01:36:47.9717306Z --- PASS: TestPreflightCommand_AllPromotionModes/uat-to-prod (0.00s) +2026-07-05T01:36:47.9717964Z === RUN TestPreflightCommand_DefaultMode +2026-07-05T01:36:47.9718412Z Mode: default +2026-07-05T01:36:47.9718740Z Source: dev (abc123) +2026-07-05T01:36:47.9719081Z Final Env: release +2026-07-05T01:36:47.9719413Z Deploys to run: [] +2026-07-05T01:36:47.9719743Z Can proceed: true +2026-07-05T01:36:47.9720361Z --- PASS: TestPreflightCommand_DefaultMode (0.00s) +2026-07-05T01:36:47.9720906Z === RUN TestPreflightCommand_InvalidConfig +2026-07-05T01:36:47.9721747Z Error: failed to parse config: parsing manifest YAML: yaml: mapping values are not allowed in this context +2026-07-05T01:36:47.9722499Z Usage: +2026-07-05T01:36:47.9722833Z promote preflight [flags] +2026-07-05T01:36:47.9723077Z +2026-07-05T01:36:47.9723203Z Flags: +2026-07-05T01:36:47.9723685Z --allow-breaking Allow breaking changes +2026-07-05T01:36:47.9725078Z --allow-downgrade Permit promoting an older version onto an env (downgrade); prod always requires this even if a lower env allowed it +2026-07-05T01:36:47.9726585Z --deploys string Deploys to promote (comma-separated names or 'all') (default "all") +2026-07-05T01:36:47.9727554Z --force Continue on failure (default mode only) +2026-07-05T01:36:47.9728202Z -h, --help help for preflight +2026-07-05T01:36:47.9729551Z --mode string Promotion mode: 'default' or cascade target (e.g., dev-to-prod) (default "default") +2026-07-05T01:36:47.9731049Z --rollback-on-failure Revert successful deploys if any fails (default true) +2026-07-05T01:36:47.9731584Z +2026-07-05T01:36:47.9731722Z Global Flags: +2026-07-05T01:36:47.9732406Z --actor string Actor performing action (default: from GITHUB_ACTOR) +2026-07-05T01:36:47.9733390Z --config string Path to manifest file (default: .github/manifest.yaml) +2026-07-05T01:36:47.9734251Z --dry-run Preview changes without modifying state +2026-07-05T01:36:47.9734927Z --gha-output Write to $GITHUB_OUTPUT +2026-07-05T01:36:47.9735534Z --json Output result as JSON +2026-07-05T01:36:47.9735845Z +2026-07-05T01:36:47.9736100Z --- PASS: TestPreflightCommand_InvalidConfig (0.00s) +2026-07-05T01:36:47.9736682Z === RUN TestPreflightCommand_NonexistentConfig +2026-07-05T01:36:47.9737646Z Error: failed to parse config: reading manifest file: open /nonexistent/path/manifest.yaml: no such file or directory +2026-07-05T01:36:47.9738434Z Usage: +2026-07-05T01:36:47.9738788Z promote preflight [flags] +2026-07-05T01:36:47.9739036Z +2026-07-05T01:36:47.9739163Z Flags: +2026-07-05T01:36:47.9739644Z --allow-breaking Allow breaking changes +2026-07-05T01:36:47.9741214Z --allow-downgrade Permit promoting an older version onto an env (downgrade); prod always requires this even if a lower env allowed it +2026-07-05T01:36:47.9742678Z --deploys string Deploys to promote (comma-separated names or 'all') (default "all") +2026-07-05T01:36:47.9743680Z --force Continue on failure (default mode only) +2026-07-05T01:36:47.9744321Z -h, --help help for preflight +2026-07-05T01:36:47.9745406Z --mode string Promotion mode: 'default' or cascade target (e.g., dev-to-prod) (default "default") +2026-07-05T01:36:47.9746588Z --rollback-on-failure Revert successful deploys if any fails (default true) +2026-07-05T01:36:47.9747109Z +2026-07-05T01:36:47.9747477Z Global Flags: +2026-07-05T01:36:47.9748158Z --actor string Actor performing action (default: from GITHUB_ACTOR) +2026-07-05T01:36:47.9749112Z --config string Path to manifest file (default: .github/manifest.yaml) +2026-07-05T01:36:47.9749962Z --dry-run Preview changes without modifying state +2026-07-05T01:36:47.9750871Z --gha-output Write to $GITHUB_OUTPUT +2026-07-05T01:36:47.9751481Z --json Output result as JSON +2026-07-05T01:36:47.9751788Z +2026-07-05T01:36:47.9752063Z --- PASS: TestPreflightCommand_NonexistentConfig (0.00s) +2026-07-05T01:36:47.9752640Z === RUN TestPreflightCommand_GHAOutput +2026-07-05T01:36:47.9753162Z --- PASS: TestPreflightCommand_GHAOutput (0.00s) +2026-07-05T01:36:47.9753730Z === RUN TestPreflightCommand_GHAOutput_ImageDigest +2026-07-05T01:36:47.9754366Z --- PASS: TestPreflightCommand_GHAOutput_ImageDigest (0.00s) +2026-07-05T01:36:47.9754963Z === RUN TestPreflightCommand_AllowBreaking +2026-07-05T01:36:47.9755433Z Mode: default +2026-07-05T01:36:47.9755752Z Source: dev (abc123) +2026-07-05T01:36:47.9756089Z Final Env: test +2026-07-05T01:36:47.9756413Z Deploys to run: [app] +2026-07-05T01:36:47.9756764Z Can proceed: true +2026-07-05T01:36:47.9757196Z --- PASS: TestPreflightCommand_AllowBreaking (0.00s) +2026-07-05T01:36:47.9757744Z === RUN TestPreflightCommand_JSONOutput +2026-07-05T01:36:47.9758168Z { +2026-07-05T01:36:47.9758475Z "mode": "default", +2026-07-05T01:36:47.9758855Z "rollback_on_failure": true, +2026-07-05T01:36:47.9759259Z "source_env": "dev", +2026-07-05T01:36:47.9759625Z "target_env": "test", +2026-07-05T01:36:47.9760244Z "source_sha": "abc123", +2026-07-05T01:36:47.9760666Z "source_version": "v1.0.0-rc.1", +2026-07-05T01:36:47.9761118Z "changelog_base_sha": "", +2026-07-05T01:36:47.9761519Z "envs_to_update": [ +2026-07-05T01:36:47.9761875Z "test" +2026-07-05T01:36:47.9762157Z ], +2026-07-05T01:36:47.9762483Z "skipped_envs": null, +2026-07-05T01:36:47.9763114Z "deploys_to_run": [ +2026-07-05T01:36:47.9763345Z "app" +2026-07-05T01:36:47.9763525Z ], +2026-07-05T01:36:47.9763743Z "external_deploys_to_run": null, +2026-07-05T01:36:47.9764036Z "is_prerelease_env": false, +2026-07-05T01:36:47.9764294Z "is_final_env": false, +2026-07-05T01:36:47.9764546Z "is_cascade": false, +2026-07-05T01:36:47.9764777Z "release_action": "", +2026-07-05T01:36:47.9765026Z "has_prod_deployment": false, +2026-07-05T01:36:47.9765282Z "prod_sha": "", +2026-07-05T01:36:47.9765506Z "prod_version": "", +2026-07-05T01:36:47.9765746Z "has_breaking": false, +2026-07-05T01:36:47.9765984Z "can_proceed": true, +2026-07-05T01:36:47.9766222Z "promotion_result": { +2026-07-05T01:36:47.9766453Z "success": true, +2026-07-05T01:36:47.9766685Z "mode": "default", +2026-07-05T01:36:47.9766922Z "is_cascade": false, +2026-07-05T01:36:47.9767159Z "promotions": [ +2026-07-05T01:36:47.9767378Z { +2026-07-05T01:36:47.9767632Z "environment": "test", +2026-07-05T01:36:47.9767940Z "source_env": "dev", +2026-07-05T01:36:47.9768233Z "sha": "abc123", +2026-07-05T01:36:47.9768524Z "version": "v1.0.0-rc.1", +2026-07-05T01:36:47.9768828Z "needs_deploy": true +2026-07-05T01:36:47.9769064Z } +2026-07-05T01:36:47.9769250Z ], +2026-07-05T01:36:47.9769460Z "skipped_envs": [ +2026-07-05T01:36:47.9769692Z "uat", +2026-07-05T01:36:47.9769898Z "prod" +2026-07-05T01:36:47.9770341Z ], +2026-07-05T01:36:47.9770550Z "final_env": "test" +2026-07-05T01:36:47.9770763Z } +2026-07-05T01:36:47.9770938Z } +2026-07-05T01:36:47.9771179Z --- PASS: TestPreflightCommand_JSONOutput (0.00s) +2026-07-05T01:36:47.9771527Z === RUN TestPreflightCommand_DeployEnvVars +2026-07-05T01:36:47.9771810Z Mode: default +2026-07-05T01:36:47.9772016Z Source: dev (abc123) +2026-07-05T01:36:47.9772229Z Final Env: test +2026-07-05T01:36:47.9772446Z Deploys to run: [app] +2026-07-05T01:36:47.9772664Z Can proceed: true +2026-07-05T01:36:47.9772922Z --- PASS: TestPreflightCommand_DeployEnvVars (0.00s) +2026-07-05T01:36:47.9773443Z === RUN TestPreflightCommand_RealWorldManifest +2026-07-05T01:36:47.9773730Z Mode: default +2026-07-05T01:36:47.9773931Z Source: dev (5cb540d) +2026-07-05T01:36:47.9774143Z Final Env: test +2026-07-05T01:36:47.9774354Z Deploys to run: [infra app] +2026-07-05T01:36:47.9774595Z Can proceed: true +2026-07-05T01:36:47.9774867Z --- PASS: TestPreflightCommand_RealWorldManifest (0.00s) +2026-07-05T01:36:47.9775220Z === RUN TestPreflightCommand_TwoEnvCascade +2026-07-05T01:36:47.9775490Z Mode: cascade +2026-07-05T01:36:47.9775691Z Target: dev-to-prod +2026-07-05T01:36:47.9775906Z Source: dev (abc123) +2026-07-05T01:36:47.9776115Z Final Env: prod +2026-07-05T01:36:47.9776320Z Deploys to run: [app] +2026-07-05T01:36:47.9776536Z Can proceed: true +2026-07-05T01:36:47.9776784Z --- PASS: TestPreflightCommand_TwoEnvCascade (0.00s) +2026-07-05T01:36:47.9777118Z === RUN TestPreflightCommand_NoPromotionNeeded +2026-07-05T01:36:47.9777660Z Error: preflight failed: promotion validation failed: all environments are up to date - nothing to promote +2026-07-05T01:36:47.9778140Z Usage: +2026-07-05T01:36:47.9778351Z promote preflight [flags] +2026-07-05T01:36:47.9778507Z +2026-07-05T01:36:47.9778589Z Flags: +2026-07-05T01:36:47.9778902Z --allow-breaking Allow breaking changes +2026-07-05T01:36:47.9779721Z --allow-downgrade Permit promoting an older version onto an env (downgrade); prod always requires this even if a lower env allowed it +2026-07-05T01:36:47.9780869Z --deploys string Deploys to promote (comma-separated names or 'all') (default "all") +2026-07-05T01:36:47.9781466Z --force Continue on failure (default mode only) +2026-07-05T01:36:47.9781859Z -h, --help help for preflight +2026-07-05T01:36:47.9782535Z --mode string Promotion mode: 'default' or cascade target (e.g., dev-to-prod) (default "default") +2026-07-05T01:36:47.9783269Z --rollback-on-failure Revert successful deploys if any fails (default true) +2026-07-05T01:36:47.9783740Z +2026-07-05T01:36:47.9783836Z Global Flags: +2026-07-05T01:36:47.9784256Z --actor string Actor performing action (default: from GITHUB_ACTOR) +2026-07-05T01:36:47.9784836Z --config string Path to manifest file (default: .github/manifest.yaml) +2026-07-05T01:36:47.9785349Z --dry-run Preview changes without modifying state +2026-07-05T01:36:47.9785775Z --gha-output Write to $GITHUB_OUTPUT +2026-07-05T01:36:47.9786145Z --json Output result as JSON +2026-07-05T01:36:47.9786342Z +2026-07-05T01:36:47.9786519Z --- PASS: TestPreflightCommand_NoPromotionNeeded (0.00s) +2026-07-05T01:36:47.9786896Z === RUN TestPromoteCommand_HasPreflightSubcommand +2026-07-05T01:36:47.9787275Z --- PASS: TestPromoteCommand_HasPreflightSubcommand (0.00s) +2026-07-05T01:36:47.9787652Z === RUN TestPromoteCommand_HasFinalizeSubcommand +2026-07-05T01:36:47.9788022Z --- PASS: TestPromoteCommand_HasFinalizeSubcommand (0.00s) +2026-07-05T01:36:47.9788384Z === RUN TestPromoteCommand_HasPersistentFlags +2026-07-05T01:36:47.9788747Z --- PASS: TestPromoteCommand_HasPersistentFlags (0.00s) +2026-07-05T01:36:47.9789128Z === RUN TestCheckDowngrade_ForwardPromotion_Passes +2026-07-05T01:36:47.9789514Z --- PASS: TestCheckDowngrade_ForwardPromotion_Passes (0.00s) +2026-07-05T01:36:47.9789879Z === RUN TestCheckDowngrade_EqualVersion_Passes +2026-07-05T01:36:47.9790407Z --- PASS: TestCheckDowngrade_EqualVersion_Passes (0.00s) +2026-07-05T01:36:47.9790782Z === RUN TestCheckDowngrade_Downgrade_BlockedWithoutFlag +2026-07-05T01:36:47.9791188Z --- PASS: TestCheckDowngrade_Downgrade_BlockedWithoutFlag (0.00s) +2026-07-05T01:36:47.9791595Z === RUN TestCheckDowngrade_Downgrade_AllowedWithFlag +2026-07-05T01:36:47.9791975Z --- PASS: TestCheckDowngrade_Downgrade_AllowedWithFlag (0.00s) +2026-07-05T01:36:47.9792380Z === RUN TestCheckDowngrade_ProdDowngrade_AlwaysRequiresFlag +2026-07-05T01:36:47.9792811Z --- PASS: TestCheckDowngrade_ProdDowngrade_AlwaysRequiresFlag (0.00s) +2026-07-05T01:36:47.9793243Z === RUN TestCheckDowngrade_NonSemver_WarnsAndAllows +2026-07-05T01:36:47.9793815Z --- PASS: TestCheckDowngrade_NonSemver_WarnsAndAllows (0.00s) +2026-07-05T01:36:47.9794188Z === RUN TestCheckDowngrade_EmptyVersions_Skipped +2026-07-05T01:36:47.9794598Z --- PASS: TestCheckDowngrade_EmptyVersions_Skipped (0.00s) +2026-07-05T01:36:47.9795036Z === RUN TestCheckDowngrade_PublishBoundary_RCToReleaseNotDowngrade +2026-07-05T01:36:47.9795529Z --- PASS: TestCheckDowngrade_PublishBoundary_RCToReleaseNotDowngrade (0.00s) +2026-07-05T01:36:47.9796028Z === RUN TestCheckDowngrade_RealDowngrade_StillBlockedViaPromoVersion +2026-07-05T01:36:47.9796536Z --- PASS: TestCheckDowngrade_RealDowngrade_StillBlockedViaPromoVersion (0.00s) +2026-07-05T01:36:47.9797008Z === RUN TestCheckDowngrade_PrereleaseEnv_RCProgressesForward +2026-07-05T01:36:47.9797451Z --- PASS: TestCheckDowngrade_PrereleaseEnv_RCProgressesForward (0.00s) +2026-07-05T01:36:47.9797810Z === RUN TestGetEnv +2026-07-05T01:36:47.9798067Z === RUN TestGetEnv/returns_value_when_set +2026-07-05T01:36:47.9798388Z === RUN TestGetEnv/returns_default_when_empty +2026-07-05T01:36:47.9798699Z === RUN TestGetEnv/returns_default_when_unset +2026-07-05T01:36:47.9798987Z --- PASS: TestGetEnv (0.00s) +2026-07-05T01:36:47.9799328Z --- PASS: TestGetEnv/returns_value_when_set (0.00s) +2026-07-05T01:36:47.9799742Z --- PASS: TestGetEnv/returns_default_when_empty (0.00s) +2026-07-05T01:36:47.9800361Z --- PASS: TestGetEnv/returns_default_when_unset (0.00s) +2026-07-05T01:36:47.9800678Z === RUN TestGitIdentity +2026-07-05T01:36:47.9800978Z === RUN TestGitIdentity/nil_config_yields_empty_identity +2026-07-05T01:36:47.9801386Z === RUN TestGitIdentity/config_without_git_block_uses_bot_defaults +2026-07-05T01:36:47.9801830Z === RUN TestGitIdentity/config_with_git_block_uses_configured_values +2026-07-05T01:36:47.9802197Z --- PASS: TestGitIdentity (0.00s) +2026-07-05T01:36:47.9802608Z --- PASS: TestGitIdentity/nil_config_yields_empty_identity (0.00s) +2026-07-05T01:36:47.9803298Z --- PASS: TestGitIdentity/config_without_git_block_uses_bot_defaults (0.00s) +2026-07-05T01:36:47.9803911Z --- PASS: TestGitIdentity/config_with_git_block_uses_configured_values (0.00s) +2026-07-05T01:36:47.9804318Z === RUN TestIsExternalDeploy +2026-07-05T01:36:47.9804595Z --- PASS: TestIsExternalDeploy (0.00s) +2026-07-05T01:36:47.9804889Z === RUN TestGetExternalDeployRepo +2026-07-05T01:36:47.9805190Z --- PASS: TestGetExternalDeployRepo (0.00s) +2026-07-05T01:36:47.9805494Z === RUN TestGetExternalDeploySHA +2026-07-05T01:36:47.9805789Z --- PASS: TestGetExternalDeploySHA (0.00s) +2026-07-05T01:36:47.9806090Z === RUN TestGetExternalDeployVersion +2026-07-05T01:36:47.9806395Z --- PASS: TestGetExternalDeployVersion (0.00s) +2026-07-05T01:36:47.9806712Z === RUN TestUpdateExternalDeployState +2026-07-05T01:36:47.9807026Z --- PASS: TestUpdateExternalDeployState (0.00s) +2026-07-05T01:36:47.9807374Z === RUN TestUpdateExternalDeployState_NoSourceSHA +2026-07-05T01:36:47.9807763Z --- PASS: TestUpdateExternalDeployState_NoSourceSHA (0.00s) +2026-07-05T01:36:47.9808165Z === RUN TestFinalize_UpdatesStateForSuccessfulDeploys +2026-07-05T01:36:47.9808566Z --- PASS: TestFinalize_UpdatesStateForSuccessfulDeploys (0.00s) +2026-07-05T01:36:47.9808962Z === RUN TestFinalize_RecordsPerDeployableVersion +2026-07-05T01:36:47.9809330Z --- PASS: TestFinalize_RecordsPerDeployableVersion (0.01s) +2026-07-05T01:36:47.9809779Z === RUN TestFinalize_NonVersionedPromotionPreservesPriorDeployVersion +2026-07-05T01:36:47.9810522Z --- PASS: TestFinalize_NonVersionedPromotionPreservesPriorDeployVersion (0.00s) +2026-07-05T01:36:47.9811000Z === RUN TestFinalize_UpdatesLatestReleaseOnPublish +2026-07-05T01:36:47.9811396Z --- PASS: TestFinalize_UpdatesLatestReleaseOnPublish (0.00s) +2026-07-05T01:36:47.9811774Z === RUN TestFinalize_UpdatesMultipleEnvironments +2026-07-05T01:36:47.9812133Z --- PASS: TestFinalize_UpdatesMultipleEnvironments (0.00s) +2026-07-05T01:36:47.9812488Z === RUN TestFinalize_HandlesNoPromotionResult +2026-07-05T01:36:47.9812989Z --- PASS: TestFinalize_HandlesNoPromotionResult (0.00s) +2026-07-05T01:36:47.9813321Z === RUN TestFinalize_WithCIKeyManifest +2026-07-05T01:36:47.9813635Z --- PASS: TestFinalize_WithCIKeyManifest (0.01s) +2026-07-05T01:36:47.9813964Z === RUN TestFinalize_InvalidConfig +2026-07-05T01:36:47.9814264Z --- PASS: TestFinalize_InvalidConfig (0.00s) +2026-07-05T01:36:47.9814576Z === RUN TestFinalize_NonexistentConfig +2026-07-05T01:36:47.9814880Z --- PASS: TestFinalize_NonexistentConfig (0.00s) +2026-07-05T01:36:47.9815180Z === RUN TestFinalize_SetActor +2026-07-05T01:36:47.9815443Z --- PASS: TestFinalize_SetActor (0.00s) +2026-07-05T01:36:47.9815714Z === RUN TestIsRealGitHub +2026-07-05T01:36:47.9815965Z --- PASS: TestIsRealGitHub (0.00s) +2026-07-05T01:36:47.9816241Z === RUN TestTrunkBranchFromEnv +2026-07-05T01:36:47.9816517Z --- PASS: TestTrunkBranchFromEnv (0.00s) +2026-07-05T01:36:47.9816802Z === RUN TestFinalize_SkippedDeploys +2026-07-05T01:36:47.9817101Z --- PASS: TestFinalize_SkippedDeploys (0.00s) +2026-07-05T01:36:47.9817430Z === RUN TestFinalize_CancelledDeploys +2026-07-05T01:36:47.9817730Z --- PASS: TestFinalize_CancelledDeploys (0.00s) +2026-07-05T01:36:47.9818109Z === RUN TestFinalize_NoReleaseActionDoesNotUpdateLatestRelease +2026-07-05T01:36:47.9818588Z --- PASS: TestFinalize_NoReleaseActionDoesNotUpdateLatestRelease (0.00s) +2026-07-05T01:36:47.9819002Z === RUN TestFinalize_WriteConfigValidYAML +2026-07-05T01:36:47.9819326Z --- PASS: TestFinalize_WriteConfigValidYAML (0.00s) +2026-07-05T01:36:47.9819649Z === RUN TestFinalize_RealWorldManifest +2026-07-05T01:36:47.9819961Z --- PASS: TestFinalize_RealWorldManifest (0.01s) +2026-07-05T01:36:47.9820520Z === RUN TestCommitAndPushGit_DetachedHeadPushesToTrunk +2026-07-05T01:36:47.9820931Z --- PASS: TestCommitAndPushGit_DetachedHeadPushesToTrunk (0.07s) +2026-07-05T01:36:47.9821302Z === RUN TestFinalizeOverlayMerge +2026-07-05T01:36:47.9821588Z --- PASS: TestFinalizeOverlayMerge (0.00s) +2026-07-05T01:36:47.9822078Z === RUN TestUpdateState_PushesPriorSnapshotOnTransition +2026-07-05T01:36:47.9822508Z --- PASS: TestUpdateState_PushesPriorSnapshotOnTransition (0.01s) +2026-07-05T01:36:47.9822890Z === RUN TestUpdateState_NoSnapshotOnSameSHA +2026-07-05T01:36:47.9823226Z --- PASS: TestUpdateState_NoSnapshotOnSameSHA (0.00s) +2026-07-05T01:36:47.9823556Z === RUN TestPromote_FromDivergedEnv_Blocked +2026-07-05T01:36:47.9823883Z --- PASS: TestPromote_FromDivergedEnv_Blocked (0.00s) +2026-07-05T01:36:47.9824222Z === RUN TestPromote_FromDivergedEnv_Blocked_Cascade +2026-07-05T01:36:47.9824586Z --- PASS: TestPromote_FromDivergedEnv_Blocked_Cascade (0.00s) +2026-07-05T01:36:47.9824976Z === RUN TestPromote_IntoDivergedEnv_MissingPatch_Blocked +2026-07-05T01:36:47.9825386Z --- PASS: TestPromote_IntoDivergedEnv_MissingPatch_Blocked (0.00s) +2026-07-05T01:36:47.9825804Z === RUN TestPromote_IntoDivergedEnv_PatchesContained_Allowed +2026-07-05T01:36:47.9826240Z --- PASS: TestPromote_IntoDivergedEnv_PatchesContained_Allowed (0.00s) +2026-07-05T01:36:47.9826693Z === RUN TestPromote_IntoDivergedEnv_Force_OverridesWithWarning +2026-07-05T01:36:47.9827140Z --- PASS: TestPromote_IntoDivergedEnv_Force_OverridesWithWarning (0.00s) +2026-07-05T01:36:47.9827537Z === RUN TestPublish_DivergedSource_Asserts +2026-07-05T01:36:47.9827864Z --- PASS: TestPublish_DivergedSource_Asserts (0.00s) +2026-07-05T01:36:47.9828218Z === RUN TestPublish_DivergedSource_Asserts_NoEnvironment +2026-07-05T01:36:47.9828615Z --- PASS: TestPublish_DivergedSource_Asserts_NoEnvironment (0.00s) +2026-07-05T01:36:47.9828991Z === RUN TestPromote_NoDivergence_GuardsInert +2026-07-05T01:36:47.9829331Z --- PASS: TestPromote_NoDivergence_GuardsInert (0.00s) +2026-07-05T01:36:47.9829635Z === RUN TestMatchGlob +2026-07-05T01:36:47.9829875Z === RUN TestMatchGlob/exact_match +2026-07-05T01:36:47.9830318Z === RUN TestMatchGlob/exact_non-match +2026-07-05T01:36:47.9830654Z === RUN TestMatchGlob/single_star_matches_within_a_segment +2026-07-05T01:36:47.9831036Z === RUN TestMatchGlob/single_star_does_not_span_directories +2026-07-05T01:36:47.9831530Z === RUN TestMatchGlob/single_star_same_dir +2026-07-05T01:36:47.9831869Z === RUN TestMatchGlob/single_star_does_not_cross_slash +2026-07-05T01:36:47.9832223Z === RUN TestMatchGlob/doublestar_prefix_matches_nested +2026-07-05T01:36:47.9832592Z === RUN TestMatchGlob/doublestar_prefix_matches_direct_child +2026-07-05T01:36:47.9832961Z === RUN TestMatchGlob/doublestar_non-match_wrong_root +2026-07-05T01:36:47.9833299Z === RUN TestMatchGlob/doublestar_middle_segment +2026-07-05T01:36:47.9833633Z === RUN TestMatchGlob/doublestar_middle_non-match +2026-07-05T01:36:47.9833958Z --- PASS: TestMatchGlob (0.00s) +2026-07-05T01:36:47.9834286Z --- PASS: TestMatchGlob/exact_match (0.00s) +2026-07-05T01:36:47.9834658Z --- PASS: TestMatchGlob/exact_non-match (0.00s) +2026-07-05T01:36:47.9835106Z --- PASS: TestMatchGlob/single_star_matches_within_a_segment (0.00s) +2026-07-05T01:36:47.9835624Z --- PASS: TestMatchGlob/single_star_does_not_span_directories (0.00s) +2026-07-05T01:36:47.9836091Z --- PASS: TestMatchGlob/single_star_same_dir (0.00s) +2026-07-05T01:36:47.9836531Z --- PASS: TestMatchGlob/single_star_does_not_cross_slash (0.00s) +2026-07-05T01:36:47.9837009Z --- PASS: TestMatchGlob/doublestar_prefix_matches_nested (0.00s) +2026-07-05T01:36:47.9837513Z --- PASS: TestMatchGlob/doublestar_prefix_matches_direct_child (0.00s) +2026-07-05T01:36:47.9838017Z --- PASS: TestMatchGlob/doublestar_non-match_wrong_root (0.00s) +2026-07-05T01:36:47.9838468Z --- PASS: TestMatchGlob/doublestar_middle_segment (0.00s) +2026-07-05T01:36:47.9838907Z --- PASS: TestMatchGlob/doublestar_middle_non-match (0.00s) +2026-07-05T01:36:47.9839245Z === RUN TestMatchDoublestar +2026-07-05T01:36:47.9839579Z === RUN TestMatchDoublestar/trailing_doublestar_matches_deep_path +2026-07-05T01:36:47.9840214Z === RUN TestMatchDoublestar/trailing_doublestar_matches_single +2026-07-05T01:36:47.9840642Z === RUN TestMatchDoublestar/leading_doublestar_matches_suffix +2026-07-05T01:36:47.9841210Z === RUN TestMatchDoublestar/leading_doublestar_matches_root_file +2026-07-05T01:36:47.9841637Z === RUN TestMatchDoublestar/leading_doublestar_suffix_mismatch +2026-07-05T01:36:47.9842037Z === RUN TestMatchDoublestar/doublestar_with_wildcard_segment +2026-07-05T01:36:47.9842433Z === RUN TestMatchDoublestar/prefix_mismatch_before_doublestar +2026-07-05T01:36:47.9842785Z --- PASS: TestMatchDoublestar (0.00s) +2026-07-05T01:36:47.9843264Z --- PASS: TestMatchDoublestar/trailing_doublestar_matches_deep_path (0.00s) +2026-07-05T01:36:47.9843839Z --- PASS: TestMatchDoublestar/trailing_doublestar_matches_single (0.00s) +2026-07-05T01:36:47.9844394Z --- PASS: TestMatchDoublestar/leading_doublestar_matches_suffix (0.00s) +2026-07-05T01:36:47.9844954Z --- PASS: TestMatchDoublestar/leading_doublestar_matches_root_file (0.00s) +2026-07-05T01:36:47.9845503Z --- PASS: TestMatchDoublestar/leading_doublestar_suffix_mismatch (0.00s) +2026-07-05T01:36:47.9846046Z --- PASS: TestMatchDoublestar/doublestar_with_wildcard_segment (0.00s) +2026-07-05T01:36:47.9846605Z --- PASS: TestMatchDoublestar/prefix_mismatch_before_doublestar (0.00s) +2026-07-05T01:36:47.9846974Z === RUN TestMatchParts +2026-07-05T01:36:47.9847244Z === RUN TestMatchParts/equal_literal_segments +2026-07-05T01:36:47.9847572Z === RUN TestMatchParts/pattern_longer_than_path +2026-07-05T01:36:47.9847966Z === RUN TestMatchParts/path_longer_than_pattern_without_doublestar +2026-07-05T01:36:47.9848374Z === RUN TestMatchParts/doublestar_absorbs_zero_segments +2026-07-05T01:36:47.9848746Z === RUN TestMatchParts/doublestar_absorbs_many_segments +2026-07-05T01:36:47.9849124Z === RUN TestMatchParts/trailing_doublestar_after_full_match +2026-07-05T01:36:47.9849465Z === RUN TestMatchParts/both_empty +2026-07-05T01:36:47.9849777Z === RUN TestMatchParts/empty_pattern_non-empty_path +2026-07-05T01:36:47.9850279Z --- PASS: TestMatchParts (0.00s) +2026-07-05T01:36:47.9850642Z --- PASS: TestMatchParts/equal_literal_segments (0.00s) +2026-07-05T01:36:47.9851234Z --- PASS: TestMatchParts/pattern_longer_than_path (0.00s) +2026-07-05T01:36:47.9851752Z --- PASS: TestMatchParts/path_longer_than_pattern_without_doublestar (0.00s) +2026-07-05T01:36:47.9852294Z --- PASS: TestMatchParts/doublestar_absorbs_zero_segments (0.00s) +2026-07-05T01:36:47.9852781Z --- PASS: TestMatchParts/doublestar_absorbs_many_segments (0.00s) +2026-07-05T01:36:47.9853280Z --- PASS: TestMatchParts/trailing_doublestar_after_full_match (0.00s) +2026-07-05T01:36:47.9853715Z --- PASS: TestMatchParts/both_empty (0.00s) +2026-07-05T01:36:47.9854140Z --- PASS: TestMatchParts/empty_pattern_non-empty_path (0.00s) +2026-07-05T01:36:47.9854492Z === RUN TestContainsBreakingCommit +2026-07-05T01:36:47.9854785Z === RUN TestContainsBreakingCommit/empty +2026-07-05T01:36:47.9855129Z === RUN TestContainsBreakingCommit/no_breaking_commits +2026-07-05T01:36:47.9855505Z === RUN TestContainsBreakingCommit/feat!_is_breaking +2026-07-05T01:36:47.9855907Z === RUN TestContainsBreakingCommit/scope_with_bang_is_breaking +2026-07-05T01:36:47.9856376Z === RUN TestContainsBreakingCommit/BREAKING_CHANGE_footer_is_breaking +2026-07-05T01:36:47.9856864Z === RUN TestContainsBreakingCommit/single_breaking_among_many_is_breaking +2026-07-05T01:36:47.9857360Z === RUN TestContainsBreakingCommit/non-conventional_commit_doesn't_crash +2026-07-05T01:36:47.9857775Z --- PASS: TestContainsBreakingCommit (0.00s) +2026-07-05T01:36:47.9858165Z --- PASS: TestContainsBreakingCommit/empty (0.00s) +2026-07-05T01:36:47.9858613Z --- PASS: TestContainsBreakingCommit/no_breaking_commits (0.00s) +2026-07-05T01:36:47.9859100Z --- PASS: TestContainsBreakingCommit/feat!_is_breaking (0.00s) +2026-07-05T01:36:47.9859629Z --- PASS: TestContainsBreakingCommit/scope_with_bang_is_breaking (0.00s) +2026-07-05T01:36:47.9860455Z --- PASS: TestContainsBreakingCommit/BREAKING_CHANGE_footer_is_breaking (0.00s) +2026-07-05T01:36:47.9861282Z --- PASS: TestContainsBreakingCommit/single_breaking_among_many_is_breaking (0.00s) +2026-07-05T01:36:47.9861963Z --- PASS: TestContainsBreakingCommit/non-conventional_commit_doesn't_crash (0.00s) +2026-07-05T01:36:47.9862408Z === RUN TestPreflight_DefaultPromotion +2026-07-05T01:36:47.9862730Z --- PASS: TestPreflight_DefaultPromotion (0.00s) +2026-07-05T01:36:47.9863048Z === RUN TestPreflight_CascadePromotion +2026-07-05T01:36:47.9863350Z --- PASS: TestPreflight_CascadePromotion (0.00s) +2026-07-05T01:36:47.9863674Z === RUN TestPreflight_AllEnvironmentsInSync +2026-07-05T01:36:47.9864019Z --- PASS: TestPreflight_AllEnvironmentsInSync (0.00s) +2026-07-05T01:36:47.9864369Z === RUN TestPreflight_ExtractsPromotionFields +2026-07-05T01:36:47.9864720Z --- PASS: TestPreflight_ExtractsPromotionFields (0.00s) +2026-07-05T01:36:47.9865112Z === RUN TestPreflight_SourceImageDigest_FirstSortedNonEmpty +2026-07-05T01:36:47.9865557Z --- PASS: TestPreflight_SourceImageDigest_FirstSortedNonEmpty (0.00s) +2026-07-05T01:36:47.9865989Z === RUN TestPreflight_SourceImageDigest_EmptyWhenNoArtifact +2026-07-05T01:36:47.9866423Z --- PASS: TestPreflight_SourceImageDigest_EmptyWhenNoArtifact (0.00s) +2026-07-05T01:36:47.9866801Z === RUN TestPreflight_PrereleaseFinalEnv +2026-07-05T01:36:47.9867129Z --- PASS: TestPreflight_PrereleaseFinalEnv (0.00s) +2026-07-05T01:36:47.9867448Z === RUN TestPreflight_DeployChecks +2026-07-05T01:36:47.9867742Z --- PASS: TestPreflight_DeployChecks (0.00s) +2026-07-05T01:36:47.9868044Z === RUN TestPreflight_ForceFlag +2026-07-05T01:36:47.9868320Z --- PASS: TestPreflight_ForceFlag (0.00s) +2026-07-05T01:36:47.9868608Z === RUN TestPreflight_RollbackSHA +2026-07-05T01:36:47.9868898Z --- PASS: TestPreflight_RollbackSHA (0.00s) +2026-07-05T01:36:47.9869258Z === RUN TestPreflight_RollbackSHAEmpty_WhenNoTargetState +2026-07-05T01:36:47.9869680Z --- PASS: TestPreflight_RollbackSHAEmpty_WhenNoTargetState (0.00s) +2026-07-05T01:36:47.9870256Z === RUN TestPreflight_DeploysFilter +2026-07-05T01:36:47.9870567Z --- PASS: TestPreflight_DeploysFilter (0.00s) +2026-07-05T01:36:47.9870883Z === RUN TestDefaultPromotion +2026-07-05T01:36:47.9871384Z === RUN TestDefaultPromotion/single_step_promotion_from_dev_to_test +2026-07-05T01:36:47.9871836Z === RUN TestDefaultPromotion/sequential_promotion_through_all_envs +2026-07-05T01:36:47.9872304Z === RUN TestDefaultPromotion/all_environments_in_sync_-_nothing_to_do +2026-07-05T01:36:47.9872749Z === RUN TestDefaultPromotion/empty_state_-_nothing_to_promote +2026-07-05T01:36:47.9873107Z --- PASS: TestDefaultPromotion (0.01s) +2026-07-05T01:36:47.9873589Z --- PASS: TestDefaultPromotion/single_step_promotion_from_dev_to_test (0.00s) +2026-07-05T01:36:47.9874192Z --- PASS: TestDefaultPromotion/sequential_promotion_through_all_envs (0.00s) +2026-07-05T01:36:47.9874794Z --- PASS: TestDefaultPromotion/all_environments_in_sync_-_nothing_to_do (0.00s) +2026-07-05T01:36:47.9875369Z --- PASS: TestDefaultPromotion/empty_state_-_nothing_to_promote (0.00s) +2026-07-05T01:36:47.9875761Z === RUN TestCascadePromotion +2026-07-05T01:36:47.9876057Z === RUN TestCascadePromotion/cascade_dev-to-uat +2026-07-05T01:36:47.9876400Z === RUN TestCascadePromotion/cascade_dev-to-prod +2026-07-05T01:36:47.9876734Z === RUN TestCascadePromotion/cascade_test-to-uat +2026-07-05T01:36:47.9877072Z === RUN TestCascadePromotion/cascade_missing_target +2026-07-05T01:36:47.9877415Z === RUN TestCascadePromotion/cascade_invalid_format +2026-07-05T01:36:47.9877769Z === RUN TestCascadePromotion/cascade_source_has_no_state +2026-07-05T01:36:47.9878109Z --- PASS: TestCascadePromotion (0.01s) +2026-07-05T01:36:47.9878497Z --- PASS: TestCascadePromotion/cascade_dev-to-uat (0.00s) +2026-07-05T01:36:47.9878941Z --- PASS: TestCascadePromotion/cascade_dev-to-prod (0.00s) +2026-07-05T01:36:47.9879379Z --- PASS: TestCascadePromotion/cascade_test-to-uat (0.00s) +2026-07-05T01:36:47.9879826Z --- PASS: TestCascadePromotion/cascade_missing_target (0.00s) +2026-07-05T01:36:47.9880409Z --- PASS: TestCascadePromotion/cascade_invalid_format (0.00s) +2026-07-05T01:36:47.9881026Z --- PASS: TestCascadePromotion/cascade_source_has_no_state (0.00s) +2026-07-05T01:36:47.9881462Z === RUN TestDefaultPromotion_StripsRCSuffixOnPublishEnv +2026-07-05T01:36:47.9881871Z --- PASS: TestDefaultPromotion_StripsRCSuffixOnPublishEnv (0.00s) +2026-07-05T01:36:47.9882274Z === RUN TestCascadePromotion_StripsRCSuffixOnPublishEnv +2026-07-05T01:36:47.9882676Z --- PASS: TestCascadePromotion_StripsRCSuffixOnPublishEnv (0.00s) +2026-07-05T01:36:47.9883048Z === RUN TestCascadePromotion_AtomicBehavior +2026-07-05T01:36:47.9883386Z --- PASS: TestCascadePromotion_AtomicBehavior (0.00s) +2026-07-05T01:36:47.9883702Z === RUN TestStripRCSuffix +2026-07-05T01:36:47.9883960Z --- PASS: TestStripRCSuffix (0.00s) +2026-07-05T01:36:47.9884244Z === RUN TestStripRCSuffix_HotfixVersion +2026-07-05T01:36:47.9884565Z --- PASS: TestStripRCSuffix_HotfixVersion (0.00s) +2026-07-05T01:36:47.9884876Z === RUN TestPromotionResultToJSON +2026-07-05T01:36:47.9885166Z --- PASS: TestPromotionResultToJSON (0.00s) +2026-07-05T01:36:47.9885456Z === RUN TestIndexOf +2026-07-05T01:36:47.9885689Z --- PASS: TestIndexOf (0.00s) +2026-07-05T01:36:47.9885944Z === RUN TestTruncateSHA +2026-07-05T01:36:47.9886187Z --- PASS: TestTruncateSHA (0.00s) +2026-07-05T01:36:47.9886514Z === RUN TestCleanHotfixReleases_PublishedRelease_Completes +2026-07-05T01:36:47.9886943Z --- PASS: TestCleanHotfixReleases_PublishedRelease_Completes (0.00s) +2026-07-05T01:36:47.9887371Z === RUN TestCleanHotfixReleases_ReleaseDeleteError_KeepsTag +2026-07-05T01:36:47.9887798Z --- PASS: TestCleanHotfixReleases_ReleaseDeleteError_KeepsTag (0.00s) +2026-07-05T01:36:47.9888222Z === RUN TestCleanHotfixReleases_AlreadyDeleted_Idempotent +2026-07-05T01:36:47.9888651Z --- PASS: TestCleanHotfixReleases_AlreadyDeleted_Idempotent (12.01s) +2026-07-05T01:36:47.9889094Z === RUN TestRunLifecycleCleanup_BestEffort_DoesNotStrandOtherEnvs +2026-07-05T01:36:47.9889629Z Warning: rejoin cleanup for test: cleaning hotfix releases: transient cleanup failure for test +2026-07-05T01:36:47.9890319Z --- PASS: TestRunLifecycleCleanup_BestEffort_DoesNotStrandOtherEnvs (0.00s) +2026-07-05T01:36:47.9890893Z === RUN TestRejoin_Integration_FullLifecycle +2026-07-05T01:36:47.9891232Z --- PASS: TestRejoin_Integration_FullLifecycle (0.14s) +2026-07-05T01:36:47.9891564Z === RUN TestRejoin_ClearsDivergenceFields +2026-07-05T01:36:47.9891899Z --- PASS: TestRejoin_ClearsDivergenceFields (0.00s) +2026-07-05T01:36:47.9892219Z === RUN TestRejoin_DeletesEnvBranch +2026-07-05T01:36:47.9892515Z --- PASS: TestRejoin_DeletesEnvBranch (0.00s) +2026-07-05T01:36:47.9892836Z === RUN TestRejoin_CleansHotfixTagsAndDrafts +2026-07-05T01:36:47.9893177Z --- PASS: TestRejoin_CleansHotfixTagsAndDrafts (0.00s) +2026-07-05T01:36:47.9893529Z === RUN TestRejoin_PreservesOtherEnvsDivergence +2026-07-05T01:36:47.9893891Z --- PASS: TestRejoin_PreservesOtherEnvsDivergence (0.01s) +2026-07-05T01:36:47.9894288Z === RUN TestNormalPromotion_NonDiverged_TouchesNoLifecycle +2026-07-05T01:36:47.9894759Z --- PASS: TestNormalPromotion_NonDiverged_TouchesNoLifecycle (0.00s) +2026-07-05T01:36:47.9895132Z === RUN TestIsRollbackRef +2026-07-05T01:36:47.9895402Z === RUN TestIsRollbackRef/RollbackPrefixTrue +2026-07-05T01:36:47.9895712Z === RUN TestIsRollbackRef/HotfixPrefixFalse +2026-07-05T01:36:47.9896009Z === RUN TestIsRollbackRef/EmptyFalse +2026-07-05T01:36:47.9896313Z === RUN TestIsRollbackRef/PlainEnvBranchFalse +2026-07-05T01:36:47.9896626Z --- PASS: TestIsRollbackRef (0.00s) +2026-07-05T01:36:47.9896997Z --- PASS: TestIsRollbackRef/RollbackPrefixTrue (0.00s) +2026-07-05T01:36:47.9897412Z --- PASS: TestIsRollbackRef/HotfixPrefixFalse (0.00s) +2026-07-05T01:36:47.9897802Z --- PASS: TestIsRollbackRef/EmptyFalse (0.00s) +2026-07-05T01:36:47.9898209Z --- PASS: TestIsRollbackRef/PlainEnvBranchFalse (0.00s) +2026-07-05T01:36:47.9898587Z === RUN TestFinalize_RollbackRejoin_SkipsBranchDeletion +2026-07-05T01:36:47.9898989Z --- PASS: TestFinalize_RollbackRejoin_SkipsBranchDeletion (0.00s) +2026-07-05T01:36:47.9899381Z === RUN TestFinalize_HotfixRejoin_DeletesBranch +2026-07-05T01:36:47.9899870Z --- PASS: TestFinalize_HotfixRejoin_DeletesBranch (0.00s) +2026-07-05T01:36:47.9900405Z === RUN TestSaveConfig_NonDryRunPromote_PreservesUnmodeledManifestKeys +2026-07-05T01:36:47.9900935Z --- PASS: TestSaveConfig_NonDryRunPromote_PreservesUnmodeledManifestKeys (0.00s) +2026-07-05T01:36:47.9901326Z PASS +2026-07-05T01:36:47.9901535Z coverage: 73.5% of statements +2026-07-05T01:36:47.9901967Z ok github.com/stablekernel/cascade/internal/promote 13.476s coverage: 73.5% of statements +2026-07-05T01:36:48.0053922Z === RUN TestAutoPromoteResolve_DecisionMatrix +2026-07-05T01:36:48.0054895Z === RUN TestAutoPromoteResolve_DecisionMatrix/rc_tag_full_green_run_promotes_stripped_version +2026-07-05T01:36:48.0056115Z === RUN TestAutoPromoteResolve_DecisionMatrix/dryrun_version_is_gated_out_by_the_rc-only_gate +2026-07-05T01:36:48.0057181Z === RUN TestAutoPromoteResolve_DecisionMatrix/selective_run_is_gated_out_by_the_full_run_gate +2026-07-05T01:36:48.0058249Z === RUN TestAutoPromoteResolve_DecisionMatrix/non-success_fleet_conclusion_never_promotes +2026-07-05T01:36:48.0059303Z === RUN TestAutoPromoteResolve_DecisionMatrix/multi-digit_version_and_rc_number_strip_cleanly +2026-07-05T01:36:48.0060662Z === RUN TestAutoPromoteResolve_DecisionMatrix/head_branch_fallback_resolves_the_rc_when_no_artifact_is_present +2026-07-05T01:36:48.0061850Z === RUN TestAutoPromoteResolve_DecisionMatrix/non-rc_head_branch_with_no_artifact_is_a_clean_no-op +2026-07-05T01:36:48.0063064Z === RUN TestAutoPromoteResolve_DecisionMatrix/missing_full-run_marker_defaults_to_a_full_run_(pre-selector_artifact) +2026-07-05T01:36:48.0064011Z --- PASS: TestAutoPromoteResolve_DecisionMatrix (0.05s) +2026-07-05T01:36:48.0065066Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/rc_tag_full_green_run_promotes_stripped_version (0.01s) +2026-07-05T01:36:48.0066408Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/dryrun_version_is_gated_out_by_the_rc-only_gate (0.01s) +2026-07-05T01:36:48.0067736Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/selective_run_is_gated_out_by_the_full_run_gate (0.00s) +2026-07-05T01:36:48.0069281Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/non-success_fleet_conclusion_never_promotes (0.00s) +2026-07-05T01:36:48.0070735Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/multi-digit_version_and_rc_number_strip_cleanly (0.01s) +2026-07-05T01:36:48.0072183Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/head_branch_fallback_resolves_the_rc_when_no_artifact_is_present (0.01s) +2026-07-05T01:36:48.0073638Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/non-rc_head_branch_with_no_artifact_is_a_clean_no-op (0.01s) +2026-07-05T01:36:48.0075154Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/missing_full-run_marker_defaults_to_a_full_run_(pre-selector_artifact) (0.01s) +2026-07-05T01:36:48.0076392Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions +2026-07-05T01:36:48.0077450Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_without_sha_passes +2026-07-05T01:36:48.0078644Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/update_without_sha_passes +2026-07-05T01:36:48.0079832Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/delete_without_sha_passes +2026-07-05T01:36:48.0081282Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_without_sha_fails +2026-07-05T01:36:48.0082492Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/prerelease_without_sha_fails +2026-07-05T01:36:48.0083689Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/publish_without_sha_fails +2026-07-05T01:36:48.0084880Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_with_sha_passes +2026-07-05T01:36:48.0085992Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_with_sha_passes +2026-07-05T01:36:48.0087234Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions (0.00s) +2026-07-05T01:36:48.0088581Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_without_sha_passes (0.00s) +2026-07-05T01:36:48.0090294Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/update_without_sha_passes (0.00s) +2026-07-05T01:36:48.0091817Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/delete_without_sha_passes (0.00s) +2026-07-05T01:36:48.0093312Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_without_sha_fails (0.00s) +2026-07-05T01:36:48.0094814Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/prerelease_without_sha_fails (0.00s) +2026-07-05T01:36:48.0096286Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/publish_without_sha_fails (0.00s) +2026-07-05T01:36:48.0097757Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_with_sha_passes (0.00s) +2026-07-05T01:36:48.0099187Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_with_sha_passes (0.00s) +2026-07-05T01:36:48.0100391Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields +2026-07-05T01:36:48.0101118Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields/missing_repo +2026-07-05T01:36:48.0101948Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields/missing_environment +2026-07-05T01:36:48.0102777Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields/missing_tag +2026-07-05T01:36:48.0103550Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields (0.00s) +2026-07-05T01:36:48.0104515Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields/missing_repo (0.00s) +2026-07-05T01:36:48.0105643Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields/missing_environment (0.00s) +2026-07-05T01:36:48.0106871Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields/missing_tag (0.00s) +2026-07-05T01:36:48.0107786Z === RUN TestNewManager_DefaultBaseURL +2026-07-05T01:36:48.0108286Z --- PASS: TestNewManager_DefaultBaseURL (0.00s) +2026-07-05T01:36:48.0108798Z === RUN TestNewManager_RespectsAPIURLEnv +2026-07-05T01:36:48.0109306Z --- PASS: TestNewManager_RespectsAPIURLEnv (0.00s) +2026-07-05T01:36:48.0109849Z === RUN TestNewManagerWithURL_TrimsTrailingSlash +2026-07-05T01:36:48.0110597Z --- PASS: TestNewManagerWithURL_TrimsTrailingSlash (0.00s) +2026-07-05T01:36:48.0111100Z === RUN TestIsGitHubHost +2026-07-05T01:36:48.0111476Z --- PASS: TestIsGitHubHost (0.00s) +2026-07-05T01:36:48.0111910Z === RUN TestSplitVersionPrefix +2026-07-05T01:36:48.0112337Z === RUN TestSplitVersionPrefix/v1.2.3 +2026-07-05T01:36:48.0112793Z === RUN TestSplitVersionPrefix/1.0.0 +2026-07-05T01:36:48.0113258Z === RUN TestSplitVersionPrefix/rel-1.0.0 +2026-07-05T01:36:48.0113748Z === RUN TestSplitVersionPrefix/release/2.0.0 +2026-07-05T01:36:48.0114252Z === RUN TestSplitVersionPrefix/no-core-here +2026-07-05T01:36:48.0114746Z === RUN TestSplitVersionPrefix/v1.2 +2026-07-05T01:36:48.0115209Z --- PASS: TestSplitVersionPrefix (0.00s) +2026-07-05T01:36:48.0115790Z --- PASS: TestSplitVersionPrefix/v1.2.3 (0.00s) +2026-07-05T01:36:48.0116394Z --- PASS: TestSplitVersionPrefix/1.0.0 (0.00s) +2026-07-05T01:36:48.0117017Z --- PASS: TestSplitVersionPrefix/rel-1.0.0 (0.00s) +2026-07-05T01:36:48.0117662Z --- PASS: TestSplitVersionPrefix/release/2.0.0 (0.00s) +2026-07-05T01:36:48.0118330Z --- PASS: TestSplitVersionPrefix/no-core-here (0.00s) +2026-07-05T01:36:48.0118956Z --- PASS: TestSplitVersionPrefix/v1.2 (0.00s) +2026-07-05T01:36:48.0119468Z === RUN TestNewRequest_InvalidMethodErrors +2026-07-05T01:36:48.0120150Z --- PASS: TestNewRequest_InvalidMethodErrors (0.00s) +2026-07-05T01:36:48.0120654Z === RUN TestNewRequest_SetsHeaders +2026-07-05T01:36:48.0121105Z --- PASS: TestNewRequest_SetsHeaders (0.00s) +2026-07-05T01:36:48.0121553Z === RUN TestListTags_ParsesRefs +2026-07-05T01:36:48.0122160Z --- PASS: TestListTags_ParsesRefs (0.00s) +2026-07-05T01:36:48.0122642Z === RUN TestListTags_NotFoundReturnsEmpty +2026-07-05T01:36:48.0123150Z --- PASS: TestListTags_NotFoundReturnsEmpty (0.00s) +2026-07-05T01:36:48.0123679Z === RUN TestListTags_ServerErrorReturnsError +2026-07-05T01:36:48.0124223Z --- PASS: TestListTags_ServerErrorReturnsError (0.00s) +2026-07-05T01:36:48.0124795Z === RUN TestDeleteGitTag_AcceptsNoContentAndNotFound +2026-07-05T01:36:48.0125418Z --- PASS: TestDeleteGitTag_AcceptsNoContentAndNotFound (0.00s) +2026-07-05T01:36:48.0126023Z === RUN TestDeleteGitTag_ServerErrorReturnsError +2026-07-05T01:36:48.0126591Z --- PASS: TestDeleteGitTag_ServerErrorReturnsError (0.00s) +2026-07-05T01:36:48.0127151Z === RUN TestCreateGitTag_SkipsNonGitHubHost +2026-07-05T01:36:48.0127687Z --- PASS: TestCreateGitTag_SkipsNonGitHubHost (0.00s) +2026-07-05T01:36:48.0128229Z === RUN TestCreateGitTag_AcceptsCreatedAndExists +2026-07-05T01:36:48.0128793Z --- PASS: TestCreateGitTag_AcceptsCreatedAndExists (0.00s) +2026-07-05T01:36:48.0129380Z === RUN TestCreateGitTag_ServerErrorReturnsError +2026-07-05T01:36:48.0129939Z --- PASS: TestCreateGitTag_ServerErrorReturnsError (0.00s) +2026-07-05T01:36:48.0130667Z === RUN TestApiRequest_NonSuccessReturnsError +2026-07-05T01:36:48.0131213Z --- PASS: TestApiRequest_NonSuccessReturnsError (0.00s) +2026-07-05T01:36:48.0131772Z === RUN TestApiRequest_InvalidJSONReturnsError +2026-07-05T01:36:48.0132333Z --- PASS: TestApiRequest_InvalidJSONReturnsError (0.00s) +2026-07-05T01:36:48.0132852Z === RUN TestFindRelease_DirectTagHit +2026-07-05T01:36:48.0133315Z --- PASS: TestFindRelease_DirectTagHit (0.00s) +2026-07-05T01:36:48.0133813Z === RUN TestFindRelease_DirectErrorStatus +2026-07-05T01:36:48.0134316Z --- PASS: TestFindRelease_DirectErrorStatus (0.00s) +2026-07-05T01:36:48.0134896Z === RUN TestCleanupRCTags_InvalidPublishedVersionErrors +2026-07-05T01:36:48.0135565Z --- PASS: TestCleanupRCTags_InvalidPublishedVersionErrors (0.00s) +2026-07-05T01:36:48.0136388Z === RUN TestManager_CreateThenPrerelease_UsesCreatedReleaseID_NoFindRacePrerelease +2026-07-05T01:36:48.0137500Z --- PASS: TestManager_CreateThenPrerelease_UsesCreatedReleaseID_NoFindRacePrerelease (0.00s) +2026-07-05T01:36:48.0138357Z === RUN TestFindReleaseByTagOrSHA_BoundedRetry_EventuallySucceeds +2026-07-05T01:36:48.0139126Z --- PASS: TestFindReleaseByTagOrSHA_BoundedRetry_EventuallySucceeds (0.00s) +2026-07-05T01:36:48.0139881Z === RUN TestFindReleaseByTagOrSHA_BoundedRetry_NeverAppears +2026-07-05T01:36:48.0140737Z --- PASS: TestFindReleaseByTagOrSHA_BoundedRetry_NeverAppears (0.00s) +2026-07-05T01:36:48.0141416Z === RUN TestManager_SingleEnvHotfix_Finalize_Unaffected +2026-07-05T01:36:48.0142046Z --- PASS: TestManager_SingleEnvHotfix_Finalize_Unaffected (0.00s) +2026-07-05T01:36:48.0142620Z === RUN TestParseRCTag_IgnoresHotfixTags +2026-07-05T01:36:48.0143165Z === RUN TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.1 +2026-07-05T01:36:48.0143803Z === RUN TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.2 +2026-07-05T01:36:48.0144444Z === RUN TestParseRCTag_IgnoresHotfixTags/v1.3.0-rc.10.hotfix.5 +2026-07-05T01:36:48.0145055Z --- PASS: TestParseRCTag_IgnoresHotfixTags (0.00s) +2026-07-05T01:36:48.0145823Z --- PASS: TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.1 (0.00s) +2026-07-05T01:36:48.0146699Z --- PASS: TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.2 (0.00s) +2026-07-05T01:36:48.0147586Z --- PASS: TestParseRCTag_IgnoresHotfixTags/v1.3.0-rc.10.hotfix.5 (0.00s) +2026-07-05T01:36:48.0148215Z === RUN TestCleanupRCTags_SkipsHotfixTags +2026-07-05T01:36:48.0148655Z Cleaning up RC tag: v1.4.0-rc.0 +2026-07-05T01:36:48.0163381Z Cleaning up RC tag: v1.4.0-rc.1 +2026-07-05T01:36:48.0163953Z --- PASS: TestCleanupRCTags_SkipsHotfixTags (0.00s) +2026-07-05T01:36:48.0164540Z === RUN TestCleanupStaleDrafts_IgnoresHotfixDrafts +2026-07-05T01:36:48.0165173Z Cleaning up stale draft: v1.4.0-rc.0 (tag: v1.4.0-rc.0, RC 0 < 2) +2026-07-05T01:36:48.0165848Z Cleaning up stale draft: v1.4.0-rc.1 (tag: v1.4.0-rc.1, RC 1 < 2) +2026-07-05T01:36:48.0166732Z --- PASS: TestCleanupStaleDrafts_IgnoresHotfixDrafts (0.00s) +2026-07-05T01:36:48.0167371Z === RUN TestCleanupStaleDrafts_HotfixCurrentTagIsNoOp +2026-07-05T01:36:48.0168007Z --- PASS: TestCleanupStaleDrafts_HotfixCurrentTagIsNoOp (0.00s) +2026-07-05T01:36:48.0168565Z === RUN TestValidateAction +2026-07-05T01:36:48.0168952Z === RUN TestValidateAction/create +2026-07-05T01:36:48.0169364Z === RUN TestValidateAction/update +2026-07-05T01:36:48.0169769Z === RUN TestValidateAction/lock +2026-07-05T01:36:48.0170357Z === RUN TestValidateAction/publish +2026-07-05T01:36:48.0170797Z === RUN TestValidateAction/delete +2026-07-05T01:36:48.0171207Z === RUN TestValidateAction/invalid +2026-07-05T01:36:48.0171622Z === RUN TestValidateAction/#00 +2026-07-05T01:36:48.0172034Z --- PASS: TestValidateAction (0.00s) +2026-07-05T01:36:48.0172557Z --- PASS: TestValidateAction/create (0.00s) +2026-07-05T01:36:48.0173131Z --- PASS: TestValidateAction/update (0.00s) +2026-07-05T01:36:48.0173698Z --- PASS: TestValidateAction/lock (0.00s) +2026-07-05T01:36:48.0174266Z --- PASS: TestValidateAction/publish (0.00s) +2026-07-05T01:36:48.0174834Z --- PASS: TestValidateAction/delete (0.00s) +2026-07-05T01:36:48.0175368Z --- PASS: TestValidateAction/invalid (0.00s) +2026-07-05T01:36:48.0175946Z --- PASS: TestValidateAction/#00 (0.00s) +2026-07-05T01:36:48.0176358Z === RUN TestCapitalizeFirst +2026-07-05T01:36:48.0176741Z === RUN TestCapitalizeFirst/dev +2026-07-05T01:36:48.0177138Z === RUN TestCapitalizeFirst/DEV +2026-07-05T01:36:48.0177538Z === RUN TestCapitalizeFirst/test +2026-07-05T01:36:48.0177959Z === RUN TestCapitalizeFirst/prod +2026-07-05T01:36:48.0178376Z === RUN TestCapitalizeFirst/staging +2026-07-05T01:36:48.0178821Z === RUN TestCapitalizeFirst/#00 +2026-07-05T01:36:48.0179221Z === RUN TestCapitalizeFirst/a +2026-07-05T01:36:48.0179631Z --- PASS: TestCapitalizeFirst (0.00s) +2026-07-05T01:36:48.0180289Z --- PASS: TestCapitalizeFirst/dev (0.00s) +2026-07-05T01:36:48.0180847Z --- PASS: TestCapitalizeFirst/DEV (0.00s) +2026-07-05T01:36:48.0181564Z --- PASS: TestCapitalizeFirst/test (0.00s) +2026-07-05T01:36:48.0182117Z --- PASS: TestCapitalizeFirst/prod (0.00s) +2026-07-05T01:36:48.0182684Z --- PASS: TestCapitalizeFirst/staging (0.00s) +2026-07-05T01:36:48.0183246Z --- PASS: TestCapitalizeFirst/#00 (0.00s) +2026-07-05T01:36:48.0183771Z --- PASS: TestCapitalizeFirst/a (0.00s) +2026-07-05T01:36:48.0184221Z === RUN TestGenerateReleaseName +2026-07-05T01:36:48.0184669Z === RUN TestGenerateReleaseName/dev_v0.1.0-rc.0 +2026-07-05T01:36:48.0185175Z === RUN TestGenerateReleaseName/test_v1.2.3-rc.5 +2026-07-05T01:36:48.0185720Z === RUN TestGenerateReleaseName/staging_v1.0.0-rc.3 +2026-07-05T01:36:48.0186271Z === RUN TestGenerateReleaseName/prod_v1.0.0 +2026-07-05T01:36:48.0186765Z --- PASS: TestGenerateReleaseName (0.00s) +2026-07-05T01:36:48.0187406Z --- PASS: TestGenerateReleaseName/dev_v0.1.0-rc.0 (0.00s) +2026-07-05T01:36:48.0188125Z --- PASS: TestGenerateReleaseName/test_v1.2.3-rc.5 (0.00s) +2026-07-05T01:36:48.0188870Z --- PASS: TestGenerateReleaseName/staging_v1.0.0-rc.3 (0.00s) +2026-07-05T01:36:48.0189567Z --- PASS: TestGenerateReleaseName/prod_v1.0.0 (0.00s) +2026-07-05T01:36:48.0190237Z === RUN TestGenerateStatusLine +2026-07-05T01:36:48.0190661Z === RUN TestGenerateStatusLine/dev +2026-07-05T01:36:48.0191113Z === RUN TestGenerateStatusLine/prod +2026-07-05T01:36:48.0191568Z === RUN TestGenerateStatusLine/staging +2026-07-05T01:36:48.0192036Z --- PASS: TestGenerateStatusLine (0.00s) +2026-07-05T01:36:48.0192573Z --- PASS: TestGenerateStatusLine/dev (0.00s) +2026-07-05T01:36:48.0193144Z --- PASS: TestGenerateStatusLine/prod (0.00s) +2026-07-05T01:36:48.0193752Z --- PASS: TestGenerateStatusLine/staging (0.00s) +2026-07-05T01:36:48.0194230Z === RUN TestAddStatusLine +2026-07-05T01:36:48.0194616Z --- PASS: TestAddStatusLine (0.00s) +2026-07-05T01:36:48.0195067Z === RUN TestAddStatusLine_SkipsPrerelease +2026-07-05T01:36:48.0195731Z --- PASS: TestAddStatusLine_SkipsPrerelease (0.00s) +2026-07-05T01:36:48.0196272Z === RUN TestUpdateStatusLine_SkipsPrerelease +2026-07-05T01:36:48.0196813Z --- PASS: TestUpdateStatusLine_SkipsPrerelease (0.00s) +2026-07-05T01:36:48.0197310Z === RUN TestRemoveStatusLine +2026-07-05T01:36:48.0197744Z === RUN TestRemoveStatusLine/with_status_line +2026-07-05T01:36:48.0198248Z === RUN TestRemoveStatusLine/without_status_line +2026-07-05T01:36:48.0198753Z === RUN TestRemoveStatusLine/empty_body +2026-07-05T01:36:48.0199228Z === RUN TestRemoveStatusLine/only_status_line +2026-07-05T01:36:48.0199705Z --- PASS: TestRemoveStatusLine (0.00s) +2026-07-05T01:36:48.0200505Z --- PASS: TestRemoveStatusLine/with_status_line (0.00s) +2026-07-05T01:36:48.0201203Z --- PASS: TestRemoveStatusLine/without_status_line (0.00s) +2026-07-05T01:36:48.0201861Z --- PASS: TestRemoveStatusLine/empty_body (0.00s) +2026-07-05T01:36:48.0202505Z --- PASS: TestRemoveStatusLine/only_status_line (0.00s) +2026-07-05T01:36:48.0203007Z === RUN TestManager_Create +2026-07-05T01:36:48.0203408Z --- PASS: TestManager_Create (0.00s) +2026-07-05T01:36:48.0203861Z === RUN TestManager_Update_ExistingRelease +2026-07-05T01:36:48.0204379Z --- PASS: TestManager_Update_ExistingRelease (0.00s) +2026-07-05T01:36:48.0204876Z === RUN TestManager_Delete_DraftRelease +2026-07-05T01:36:48.0205357Z --- PASS: TestManager_Delete_DraftRelease (0.00s) +2026-07-05T01:36:48.0205856Z === RUN TestManager_Delete_PublishedRelease +2026-07-05T01:36:48.0206388Z --- PASS: TestManager_Delete_PublishedRelease (0.00s) +2026-07-05T01:36:48.0206988Z === RUN TestManager_Delete_PublishedRelease_AllowPublished +2026-07-05T01:36:48.0207654Z --- PASS: TestManager_Delete_PublishedRelease_AllowPublished (0.00s) +2026-07-05T01:36:48.0208390Z === RUN TestFindReleaseByTagOrSHA_PrefersExactTagOverStaleSHADraft +2026-07-05T01:36:48.0209186Z --- PASS: TestFindReleaseByTagOrSHA_PrefersExactTagOverStaleSHADraft (0.00s) +2026-07-05T01:36:48.0209891Z === RUN TestManager_Publish_RerunFallsBackToSemverTag +2026-07-05T01:36:48.0210877Z --- PASS: TestManager_Publish_RerunFallsBackToSemverTag (0.00s) +2026-07-05T01:36:48.0211440Z === RUN TestManager_Delete_NotFound +2026-07-05T01:36:48.0211899Z --- PASS: TestManager_Delete_NotFound (12.01s) +2026-07-05T01:36:48.0212353Z === RUN TestManager_Publish +2026-07-05T01:36:48.0212748Z Cleaning up RC tag: v1.0.0-rc.0 +2026-07-05T01:36:48.0213124Z Cleaning up RC tag: v1.0.0-rc.3 +2026-07-05T01:36:48.0213493Z Cleaning up RC tag: v1.0.0-rc.5 +2026-07-05T01:36:48.0213866Z Cleaning up RC tag: v0.9.0-rc.2 +2026-07-05T01:36:48.0214262Z --- PASS: TestManager_Publish (0.00s) +2026-07-05T01:36:48.0214715Z === RUN TestManager_Publish_CustomTagPrefix +2026-07-05T01:36:48.0215175Z Cleaning up RC tag: rel-0.1.0-rc.0 +2026-07-05T01:36:48.0215586Z Cleaning up RC tag: rel-0.1.0-rc.1 +2026-07-05T01:36:48.0216053Z --- PASS: TestManager_Publish_CustomTagPrefix (0.00s) +2026-07-05T01:36:48.0216589Z === RUN TestManager_Create_CleansUpStaleDrafts +2026-07-05T01:36:48.0217186Z Cleaning up stale draft: v0.1.0-rc.1 (tag: v0.1.0-rc.1, RC 1 < 3) +2026-07-05T01:36:48.0217845Z Cleaning up stale draft: v0.1.0-rc.2 (tag: v0.1.0-rc.2, RC 2 < 3) +2026-07-05T01:36:48.0218557Z Preserving draft v0.1.1-rc.1 (different base version: v0.1.1 vs v0.1.0) +2026-07-05T01:36:48.0219227Z --- PASS: TestManager_Create_CleansUpStaleDrafts (0.00s) +2026-07-05T01:36:48.0219774Z === RUN TestCleanupRCTags_ReapsSupersededBases +2026-07-05T01:36:48.0220402Z Cleaning up RC tag: v0.9.0-rc.0 +2026-07-05T01:36:48.0220784Z Cleaning up RC tag: v1.0.0-rc.0 +2026-07-05T01:36:48.0221158Z Cleaning up RC tag: v1.0.0-rc.4 +2026-07-05T01:36:48.0221536Z Cleaning up RC tag: v1.0.1-rc.0 +2026-07-05T01:36:48.0221920Z Cleaning up RC tag: v1.0.1-rc.2 +2026-07-05T01:36:48.0222394Z --- PASS: TestCleanupRCTags_ReapsSupersededBases (0.00s) +2026-07-05T01:36:48.0222895Z === RUN TestParseRCTag +2026-07-05T01:36:48.0223266Z === RUN TestParseRCTag/v1.0.0-rc.0 +2026-07-05T01:36:48.0223693Z === RUN TestParseRCTag/v1.0.0-rc.1 +2026-07-05T01:36:48.0224262Z === RUN TestParseRCTag/v1.2.3-rc.42 +2026-07-05T01:36:48.0224688Z === RUN TestParseRCTag/v0.1.0-rc.3 +2026-07-05T01:36:48.0225110Z === RUN TestParseRCTag/rel-0.1.0-rc.0 +2026-07-05T01:36:48.0225547Z === RUN TestParseRCTag/rel-1.2.3-rc.7 +2026-07-05T01:36:48.0225991Z === RUN TestParseRCTag/release/2.0.0-rc.4 +2026-07-05T01:36:48.0226449Z === RUN TestParseRCTag/1.0.0-rc.1 +2026-07-05T01:36:48.0226862Z === RUN TestParseRCTag/0.1.0-rc.0 +2026-07-05T01:36:48.0227268Z === RUN TestParseRCTag/v1.0.0 +2026-07-05T01:36:48.0227659Z === RUN TestParseRCTag/v1.0-rc.1 +2026-07-05T01:36:48.0228069Z === RUN TestParseRCTag/v1.0.0-1 +2026-07-05T01:36:48.0228507Z === RUN TestParseRCTag/v1.0.0-rc.2.hotfix.1 +2026-07-05T01:36:48.0228967Z === RUN TestParseRCTag/v1.0.0-rc.x +2026-07-05T01:36:48.0229373Z === RUN TestParseRCTag/invalid +2026-07-05T01:36:48.0229766Z === RUN TestParseRCTag/#00 +2026-07-05T01:36:48.0230314Z --- PASS: TestParseRCTag (0.00s) +2026-07-05T01:36:48.0230828Z --- PASS: TestParseRCTag/v1.0.0-rc.0 (0.00s) +2026-07-05T01:36:48.0231403Z --- PASS: TestParseRCTag/v1.0.0-rc.1 (0.00s) +2026-07-05T01:36:48.0231964Z --- PASS: TestParseRCTag/v1.2.3-rc.42 (0.00s) +2026-07-05T01:36:48.0232530Z --- PASS: TestParseRCTag/v0.1.0-rc.3 (0.00s) +2026-07-05T01:36:48.0233098Z --- PASS: TestParseRCTag/rel-0.1.0-rc.0 (0.00s) +2026-07-05T01:36:48.0233684Z --- PASS: TestParseRCTag/rel-1.2.3-rc.7 (0.00s) +2026-07-05T01:36:48.0234286Z --- PASS: TestParseRCTag/release/2.0.0-rc.4 (0.00s) +2026-07-05T01:36:48.0234868Z --- PASS: TestParseRCTag/1.0.0-rc.1 (0.00s) +2026-07-05T01:36:48.0235422Z --- PASS: TestParseRCTag/0.1.0-rc.0 (0.00s) +2026-07-05T01:36:48.0235956Z --- PASS: TestParseRCTag/v1.0.0 (0.00s) +2026-07-05T01:36:48.0236490Z --- PASS: TestParseRCTag/v1.0-rc.1 (0.00s) +2026-07-05T01:36:48.0237028Z --- PASS: TestParseRCTag/v1.0.0-1 (0.00s) +2026-07-05T01:36:48.0237628Z --- PASS: TestParseRCTag/v1.0.0-rc.2.hotfix.1 (0.00s) +2026-07-05T01:36:48.0238235Z --- PASS: TestParseRCTag/v1.0.0-rc.x (0.00s) +2026-07-05T01:36:48.0238967Z --- PASS: TestParseRCTag/invalid (0.00s) +2026-07-05T01:36:48.0239488Z --- PASS: TestParseRCTag/#00 (0.00s) +2026-07-05T01:36:48.0239906Z === RUN TestNewCommand +2026-07-05T01:36:48.0240470Z --- PASS: TestNewCommand (0.00s) +2026-07-05T01:36:48.0240943Z === RUN TestCreateGitTag_SkipsGitDataAPIOnGitea +2026-07-05T01:36:48.0241521Z --- PASS: TestCreateGitTag_SkipsGitDataAPIOnGitea (0.00s) +2026-07-05T01:36:48.0242101Z === RUN TestCreateGitTag_CallsGitDataAPIOnGitHub +2026-07-05T01:36:48.0242688Z --- PASS: TestCreateGitTag_CallsGitDataAPIOnGitHub (0.00s) +2026-07-05T01:36:48.0243235Z === RUN TestManager_Create_HostGating +2026-07-05T01:36:48.0243806Z === RUN TestManager_Create_HostGating/github_host_issues_release_POST +2026-07-05T01:36:48.0244541Z === RUN TestManager_Create_HostGating/gitea_host_skips_release_POST +2026-07-05T01:36:48.0245166Z --- PASS: TestManager_Create_HostGating (0.00s) +2026-07-05T01:36:48.0245978Z --- PASS: TestManager_Create_HostGating/github_host_issues_release_POST (0.00s) +2026-07-05T01:36:48.0246936Z --- PASS: TestManager_Create_HostGating/gitea_host_skips_release_POST (0.00s) +2026-07-05T01:36:48.0247591Z === RUN TestManager_Prerelease_HostGating +2026-07-05T01:36:48.0248222Z === RUN TestManager_Prerelease_HostGating/github_host_issues_prerelease_PATCH +2026-07-05T01:36:48.0249032Z === RUN TestManager_Prerelease_HostGating/gitea_host_skips_prerelease_PATCH +2026-07-05T01:36:48.0249718Z --- PASS: TestManager_Prerelease_HostGating (0.00s) +2026-07-05T01:36:48.0250744Z --- PASS: TestManager_Prerelease_HostGating/github_host_issues_prerelease_PATCH (0.00s) +2026-07-05T01:36:48.0251852Z --- PASS: TestManager_Prerelease_HostGating/gitea_host_skips_prerelease_PATCH (0.00s) +2026-07-05T01:36:48.0252497Z PASS +2026-07-05T01:36:48.0252808Z coverage: 78.1% of statements +2026-07-05T01:36:48.0253489Z ok github.com/stablekernel/cascade/internal/release 13.148s coverage: 78.1% of statements +2026-07-05T01:36:48.0254214Z === RUN TestNewCommand_Structure +2026-07-05T01:36:48.0254920Z --- PASS: TestNewCommand_Structure (0.00s) +2026-07-05T01:36:48.0255488Z === RUN TestNewCommand_PersistentPreRunE_AutoDetectsConfig +2026-07-05T01:36:48.0256184Z --- PASS: TestNewCommand_PersistentPreRunE_AutoDetectsConfig (0.00s) +2026-07-05T01:36:48.0256770Z === RUN TestRunReset_InitError +2026-07-05T01:36:48.0257193Z --- PASS: TestRunReset_InitError (0.00s) +2026-07-05T01:36:48.0257653Z === RUN TestRunReset_DryRunInitError +2026-07-05T01:36:48.0258531Z [INFO] [DRY-RUN] Preview mode - no changes will be made +2026-07-05T01:36:48.0259104Z --- PASS: TestRunReset_DryRunInitError (0.00s) +2026-07-05T01:36:48.0259571Z === RUN TestNew_Success +2026-07-05T01:36:48.0259947Z --- PASS: TestNew_Success (0.03s) +2026-07-05T01:36:48.0260536Z === RUN TestNew_ResetStateLoadsManifest +2026-07-05T01:36:48.0261034Z --- PASS: TestNew_ResetStateLoadsManifest (0.02s) +2026-07-05T01:36:48.0261554Z === RUN TestNew_ResetStateMissingManifest +2026-07-05T01:36:48.0262083Z --- PASS: TestNew_ResetStateMissingManifest (0.02s) +2026-07-05T01:36:48.0262623Z === RUN TestNew_CustomConfigAndManifestKey +2026-07-05T01:36:48.0263149Z --- PASS: TestNew_CustomConfigAndManifestKey (0.02s) +2026-07-05T01:36:48.0263654Z === RUN TestGetRepoInfo_Success +2026-07-05T01:36:48.0264091Z --- PASS: TestGetRepoInfo_Success (0.02s) +2026-07-05T01:36:48.0264545Z === RUN TestGetRepoInfo_NoRemote +2026-07-05T01:36:48.0264985Z --- PASS: TestGetRepoInfo_NoRemote (0.01s) +2026-07-05T01:36:48.0265421Z === RUN TestCurrentBranch +2026-07-05T01:36:48.0265800Z --- PASS: TestCurrentBranch (0.02s) +2026-07-05T01:36:48.0266207Z === RUN TestGitOutput_Error +2026-07-05T01:36:48.0266623Z --- PASS: TestGitOutput_Error (0.02s) +2026-07-05T01:36:48.0267058Z === RUN TestDeleteAllTags_NoTags +2026-07-05T01:36:48.0267553Z [DEBUG] Fetching tags... +2026-07-05T01:36:48.0267994Z git@github.com: Permission denied (publickey). +2026-07-05T01:36:48.0268499Z fatal: Could not read from remote repository. +2026-07-05T01:36:48.0268815Z +2026-07-05T01:36:48.0269217Z Please make sure you have the correct access rights +2026-07-05T01:36:48.0269706Z and the repository exists. +2026-07-05T01:36:48.0270402Z [WARN] Failed to fetch tags: exit status 128 +2026-07-05T01:36:48.0270935Z [INFO] No tags to delete +2026-07-05T01:36:48.0271365Z --- PASS: TestDeleteAllTags_NoTags (0.21s) +2026-07-05T01:36:48.0271819Z === RUN TestDeleteAllTags_DryRun +2026-07-05T01:36:48.0272276Z [DEBUG] Fetching tags... +2026-07-05T01:36:48.0272718Z git@github.com: Permission denied (publickey). +2026-07-05T01:36:48.0273216Z fatal: Could not read from remote repository. +2026-07-05T01:36:48.0273524Z +2026-07-05T01:36:48.0273745Z Please make sure you have the correct access rights +2026-07-05T01:36:48.0274215Z and the repository exists. +2026-07-05T01:36:48.0274712Z [WARN] Failed to fetch tags: exit status 128 +2026-07-05T01:36:48.0275249Z [INFO] Found 2 tags to delete +2026-07-05T01:36:48.0275835Z [INFO] [DRY-RUN] Would delete tag: v1.0.0 +2026-07-05T01:36:48.0276417Z [INFO] [DRY-RUN] Would delete tag: v1.1.0 +2026-07-05T01:36:48.0276896Z --- PASS: TestDeleteAllTags_DryRun (0.22s) +2026-07-05T01:36:48.0277399Z === RUN TestDeleteAllTags_DeletesLocalAndRemote +2026-07-05T01:36:48.0277912Z [DEBUG] Fetching tags... +2026-07-05T01:36:48.0278378Z [INFO] Found 1 tags to delete +2026-07-05T01:36:48.0278879Z [DEBUG] Deleting remote tag: v1.0.0 +2026-07-05T01:36:48.0279452Z To /tmp/TestDeleteAllTags_DeletesLocalAndRemote4169844748/001 +2026-07-05T01:36:48.0280171Z - [deleted] v1.0.0 +2026-07-05T01:36:48.0280648Z [DEBUG] Deleting local tag: v1.0.0 +2026-07-05T01:36:48.0281083Z Deleted tag 'v1.0.0' (was 844eca8) +2026-07-05T01:36:48.0281538Z [INFO] Deleted 1 tags +2026-07-05T01:36:48.0282020Z --- PASS: TestDeleteAllTags_DeletesLocalAndRemote (0.08s) +2026-07-05T01:36:48.0282627Z === RUN TestCommitAndPush_RecoversFromNonFastForward +2026-07-05T01:36:48.0283240Z [INFO] Resetting state for 1 environments +2026-07-05T01:36:48.0284478Z [DEBUG] Wrote updated config to /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/003/manifest.yaml +2026-07-05T01:36:48.0285404Z [INFO] Reset state in manifest +2026-07-05T01:36:48.0285927Z [main d7be050] chore: reset state for testing [skip ci] +2026-07-05T01:36:48.0286491Z 1 file changed, 4 insertions(+), 8 deletions(-) +2026-07-05T01:36:48.0287131Z To /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001 +2026-07-05T01:36:48.0287778Z ! [rejected] main -> main (fetch first) +2026-07-05T01:36:48.0288580Z error: failed to push some refs to '/tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001' +2026-07-05T01:36:48.0289529Z hint: Updates were rejected because the remote contains work that you do not +2026-07-05T01:36:48.0290719Z hint: have locally. This is usually caused by another repository pushing to +2026-07-05T01:36:48.0291460Z hint: the same ref. If you want to integrate the remote changes, use +2026-07-05T01:36:48.0292050Z hint: 'git pull' before pushing again. +2026-07-05T01:36:48.0292661Z hint: See the 'Note about fast-forwards' in 'git push --help' for details. +2026-07-05T01:36:48.0293582Z [WARN] Push rejected (attempt 1/3); re-applying reset onto updated trunk +2026-07-05T01:36:48.0294354Z From /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001 +2026-07-05T01:36:48.0294966Z * branch main -> FETCH_HEAD +2026-07-05T01:36:48.0295480Z 9d1f8bb..eaacf7c main -> origin/main +2026-07-05T01:36:48.0295934Z HEAD is now at eaacf7c concurrent promote +2026-07-05T01:36:48.0296956Z [DEBUG] Wrote updated config to /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/003/manifest.yaml +2026-07-05T01:36:48.0297882Z [main c7bfdcb] chore: reset state for testing [skip ci] +2026-07-05T01:36:48.0298448Z 1 file changed, 4 insertions(+), 8 deletions(-) +2026-07-05T01:36:48.0299075Z To /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001 +2026-07-05T01:36:48.0299716Z eaacf7c..c7bfdcb main -> main +2026-07-05T01:36:48.0300588Z [INFO] Committed and pushed state reset +2026-07-05T01:36:48.0301193Z --- PASS: TestCommitAndPush_RecoversFromNonFastForward (2.16s) +2026-07-05T01:36:48.0301752Z === RUN TestParseGitURL +2026-07-05T01:36:48.0302143Z === RUN TestParseGitURL/SSH_format +2026-07-05T01:36:48.0302613Z === RUN TestParseGitURL/SSH_format_without_.git +2026-07-05T01:36:48.0303099Z === RUN TestParseGitURL/HTTPS_format +2026-07-05T01:36:48.0303581Z === RUN TestParseGitURL/HTTPS_format_without_.git +2026-07-05T01:36:48.0304107Z === RUN TestParseGitURL/unsupported_format +2026-07-05T01:36:48.0304592Z === RUN TestParseGitURL/invalid_SSH_format +2026-07-05T01:36:48.0305035Z --- PASS: TestParseGitURL (0.00s) +2026-07-05T01:36:48.0305567Z --- PASS: TestParseGitURL/SSH_format (0.00s) +2026-07-05T01:36:48.0306229Z --- PASS: TestParseGitURL/SSH_format_without_.git (0.00s) +2026-07-05T01:36:48.0306866Z --- PASS: TestParseGitURL/HTTPS_format (0.00s) +2026-07-05T01:36:48.0307534Z --- PASS: TestParseGitURL/HTTPS_format_without_.git (0.00s) +2026-07-05T01:36:48.0308230Z --- PASS: TestParseGitURL/unsupported_format (0.00s) +2026-07-05T01:36:48.0308871Z --- PASS: TestParseGitURL/invalid_SSH_format (0.00s) +2026-07-05T01:36:48.0309353Z === RUN TestNew_NotGitRepo +2026-07-05T01:36:48.0309756Z --- PASS: TestNew_NotGitRepo (0.00s) +2026-07-05T01:36:48.0310320Z === RUN TestNew_EmptyPath +2026-07-05T01:36:48.0311038Z reset_test.go:85: not running in a git repository +2026-07-05T01:36:48.0311548Z --- SKIP: TestNew_EmptyPath (0.00s) +2026-07-05T01:36:48.0311967Z === RUN TestOptions_Defaults +2026-07-05T01:36:48.0312383Z --- PASS: TestOptions_Defaults (0.00s) +2026-07-05T01:36:48.0312799Z === RUN TestResult_ZeroValue +2026-07-05T01:36:48.0313197Z --- PASS: TestResult_ZeroValue (0.00s) +2026-07-05T01:36:48.0313630Z === RUN TestResetState_DryRun +2026-07-05T01:36:48.0314170Z [INFO] Resetting state for 2 environments +2026-07-05T01:36:48.0314948Z [INFO] [DRY-RUN] Would reset state for: dev +2026-07-05T01:36:48.0315572Z [INFO] [DRY-RUN] Would reset state for: prod +2026-07-05T01:36:48.0316071Z --- PASS: TestResetState_DryRun (0.00s) +2026-07-05T01:36:48.0316525Z === RUN TestResetState_ActualReset +2026-07-05T01:36:48.0317059Z [INFO] Resetting state for 2 environments +2026-07-05T01:36:48.0318020Z [DEBUG] Wrote updated config to /tmp/TestResetState_ActualReset4053202802/001/.github/manifest.yaml +2026-07-05T01:36:48.0318864Z [INFO] Reset state in manifest +2026-07-05T01:36:48.0319327Z --- PASS: TestResetState_ActualReset (0.00s) +2026-07-05T01:36:48.0319804Z === RUN TestResetState_AlreadyEmpty +2026-07-05T01:36:48.0320513Z [INFO] Resetting state for 2 environments +2026-07-05T01:36:48.0321476Z [DEBUG] Wrote updated config to /tmp/TestResetState_AlreadyEmpty3166278157/001/.github/manifest.yaml +2026-07-05T01:36:48.0322320Z [INFO] Reset state in manifest +2026-07-05T01:36:48.0322800Z --- PASS: TestResetState_AlreadyEmpty (0.00s) +2026-07-05T01:36:48.0323282Z === RUN TestResetState_NilConfig +2026-07-05T01:36:48.0323726Z --- PASS: TestResetState_NilConfig (0.00s) +2026-07-05T01:36:48.0324170Z === RUN TestWriteConfig +2026-07-05T01:36:48.0324938Z [DEBUG] Wrote updated config to /tmp/TestWriteConfig3398744629/001/.github/manifest.yaml +2026-07-05T01:36:48.0325662Z --- PASS: TestWriteConfig (0.00s) +2026-07-05T01:36:48.0326035Z PASS +2026-07-05T01:36:48.0326333Z coverage: 59.6% of statements +2026-07-05T01:36:48.0326994Z ok github.com/stablekernel/cascade/internal/reset 3.855s coverage: 59.6% of statements +2026-07-05T01:36:48.0327841Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetEnvShaVersion +2026-07-05T01:36:48.0328620Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetEnvShaVersion (0.00s) +2026-07-05T01:36:48.0329336Z === RUN TestRollbackPreflight_DefaultTarget_UsesRing +2026-07-05T01:36:48.0329975Z --- PASS: TestRollbackPreflight_DefaultTarget_UsesRing (0.00s) +2026-07-05T01:36:48.0330747Z === RUN TestRollbackPreflight_UnresolvableEmitsCannotProceed +2026-07-05T01:36:48.0331365Z --- PASS: TestRollbackPreflight_UnresolvableEmitsCannotProceed (0.01s) +2026-07-05T01:36:48.0331812Z === RUN TestRollbackFinalize_SkippedDeployableNotCounted +2026-07-05T01:36:48.0332155Z State updated for prod (not committed) +2026-07-05T01:36:48.0332522Z --- PASS: TestRollbackFinalize_SkippedDeployableNotCounted (0.00s) +2026-07-05T01:36:48.0332941Z === RUN TestRollbackFinalize_AppliesWhenDeploySucceeded +2026-07-05T01:36:48.0333274Z State updated for prod (not committed) +2026-07-05T01:36:48.0333627Z --- PASS: TestRollbackFinalize_AppliesWhenDeploySucceeded (0.01s) +2026-07-05T01:36:48.0334022Z === RUN TestRollbackFinalize_AbortsWhenDeployFailed +2026-07-05T01:36:48.0334402Z --- PASS: TestRollbackFinalize_AbortsWhenDeployFailed (0.00s) +2026-07-05T01:36:48.0334820Z === RUN TestRollbackFinalize_AbortsWhenNoInScopeDeploySucceeded +2026-07-05T01:36:48.0335289Z --- PASS: TestRollbackFinalize_AbortsWhenNoInScopeDeploySucceeded (0.00s) +2026-07-05T01:36:48.0335777Z === RUN TestRollbackFinalize_NoDeploysConfigured_StillApplies +2026-07-05T01:36:48.0336129Z State updated for prod (not committed) +2026-07-05T01:36:48.0336505Z --- PASS: TestRollbackFinalize_NoDeploysConfigured_StillApplies (0.00s) +2026-07-05T01:36:48.0336962Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetSource_State +2026-07-05T01:36:48.0337409Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetSource_State (0.00s) +2026-07-05T01:36:48.0337893Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetSource_PreviousRing +2026-07-05T01:36:48.0338412Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetSource_PreviousRing (0.00s) +2026-07-05T01:36:48.0338997Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetSource_DefaultPreviousRing +2026-07-05T01:36:48.0339571Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetSource_DefaultPreviousRing (0.00s) +2026-07-05T01:36:48.0340260Z === RUN TestBuildStatePutArgs_StampsBotAuthor +2026-07-05T01:36:48.0340760Z --- PASS: TestBuildStatePutArgs_StampsBotAuthor (0.00s) +2026-07-05T01:36:48.0341135Z === RUN TestBuildStatePutArgs_HonorsCustomIdentity +2026-07-05T01:36:48.0341523Z --- PASS: TestBuildStatePutArgs_HonorsCustomIdentity (0.00s) +2026-07-05T01:36:48.0341905Z === RUN TestCommand_RollbackAgainstOnDiskManifest +2026-07-05T01:36:48.0342244Z deployable services in prod rolled back +2026-07-05T01:36:48.0342535Z from: v2.0.0 (prodnew) +2026-07-05T01:36:48.0342849Z to: v1.9.0 (prodold) [resolved from git-history] +2026-07-05T01:36:48.0343235Z --- PASS: TestCommand_RollbackAgainstOnDiskManifest (0.04s) +2026-07-05T01:36:48.0343588Z === RUN TestCommand_DryRunDoesNotMutate +2026-07-05T01:36:48.0343889Z deployable services in prod would roll back +2026-07-05T01:36:48.0344182Z from: v2.0.0 (prodnew) +2026-07-05T01:36:48.0344469Z to: v1.9.0 (prodold) [resolved from git-history] +2026-07-05T01:36:48.0344804Z --- PASS: TestCommand_DryRunDoesNotMutate (0.04s) +2026-07-05T01:36:48.0345140Z === RUN TestCommand_UnknownTargetReturnsError +2026-07-05T01:36:48.0345501Z --- PASS: TestCommand_UnknownTargetReturnsError (0.04s) +2026-07-05T01:36:48.0345843Z === RUN TestConfigPath_ReturnsResolvedPath +2026-07-05T01:36:48.0346175Z --- PASS: TestConfigPath_ReturnsResolvedPath (0.00s) +2026-07-05T01:36:48.0346493Z === RUN TestGitIdentity_DefaultsToBot +2026-07-05T01:36:48.0346797Z --- PASS: TestGitIdentity_DefaultsToBot (0.00s) +2026-07-05T01:36:48.0347132Z === RUN TestGitIdentity_HonorsManifestGitConfig +2026-07-05T01:36:48.0347495Z --- PASS: TestGitIdentity_HonorsManifestGitConfig (0.00s) +2026-07-05T01:36:48.0347851Z === RUN TestDeployNames_WithAndWithoutConfig +2026-07-05T01:36:48.0348189Z --- PASS: TestDeployNames_WithAndWithoutConfig (0.00s) +2026-07-05T01:36:48.0348553Z === RUN TestKnownEnvironment_FallsBackToRecordedState +2026-07-05T01:36:48.0348951Z --- PASS: TestKnownEnvironment_FallsBackToRecordedState (0.00s) +2026-07-05T01:36:48.0349300Z === RUN TestOrDash +2026-07-05T01:36:48.0349530Z --- PASS: TestOrDash (0.00s) +2026-07-05T01:36:48.0349776Z === RUN TestTruncate +2026-07-05T01:36:48.0351270Z --- PASS: TestTruncate (0.00s) +2026-07-05T01:36:48.0351523Z === RUN TestGetEnv +2026-07-05T01:36:48.0351745Z --- PASS: TestGetEnv (0.00s) +2026-07-05T01:36:48.0351999Z === RUN TestMatchHelpers_NilInputs +2026-07-05T01:36:48.0352299Z --- PASS: TestMatchHelpers_NilInputs (0.00s) +2026-07-05T01:36:48.0352647Z === RUN TestResolveDefaultTarget_GitHistoryFallback +2026-07-05T01:36:48.0353034Z --- PASS: TestResolveDefaultTarget_GitHistoryFallback (0.00s) +2026-07-05T01:36:48.0353453Z === RUN TestResolveDefaultTarget_DeployableScopedFromHistory +2026-07-05T01:36:48.0353903Z --- PASS: TestResolveDefaultTarget_DeployableScopedFromHistory (0.00s) +2026-07-05T01:36:48.0354317Z === RUN TestResolveDefaultTarget_NoPriorErrors +2026-07-05T01:36:48.0354677Z --- PASS: TestResolveDefaultTarget_NoPriorErrors (0.00s) +2026-07-05T01:36:48.0355002Z === RUN TestReport_JSONOutput +2026-07-05T01:36:48.0355243Z { +2026-07-05T01:36:48.0355453Z "environment": "prod", +2026-07-05T01:36:48.0355696Z "target": { +2026-07-05T01:36:48.0355938Z "sha": "abcdef1234567", +2026-07-05T01:36:48.0356200Z "version": "v1.8.0", +2026-07-05T01:36:48.0356462Z "source": "git-history" +2026-07-05T01:36:48.0356677Z }, +2026-07-05T01:36:48.0356894Z "current_sha": "newsha7654321", +2026-07-05T01:36:48.0357178Z "current_version": "v2.0.0", +2026-07-05T01:36:48.0357428Z "no_op": false, +2026-07-05T01:36:48.0357644Z "dry_run": false +2026-07-05T01:36:48.0357840Z } +2026-07-05T01:36:48.0358049Z --- PASS: TestReport_JSONOutput (0.00s) +2026-07-05T01:36:48.0358364Z === RUN TestReport_TextNonNoOpAndDeployable +2026-07-05T01:36:48.0358697Z deployable services in prod would roll back +2026-07-05T01:36:48.0358994Z from: v2.0.0 (newsha7) +2026-07-05T01:36:48.0359304Z to: v1.8.0 (abcdef1) [resolved from previous-ring] +2026-07-05T01:36:48.0359633Z deployable services in prod rolled back +2026-07-05T01:36:48.0359908Z from: v2.0.0 (newsha7) +2026-07-05T01:36:48.0360614Z to: v1.8.0 (abcdef1) [resolved from previous-ring] +2026-07-05T01:36:48.0361178Z --- PASS: TestReport_TextNonNoOpAndDeployable (0.00s) +2026-07-05T01:36:48.0361676Z === RUN TestRun_ErrorOnBadConfig +2026-07-05T01:36:48.0362116Z --- PASS: TestRun_ErrorOnBadConfig (0.00s) +2026-07-05T01:36:48.0362517Z === RUN TestRunPreflight_JSONOutput +2026-07-05T01:36:48.0362774Z { +2026-07-05T01:36:48.0362974Z "environment": "prod", +2026-07-05T01:36:48.0363204Z "target": { +2026-07-05T01:36:48.0363435Z "sha": "prodsha9999999", +2026-07-05T01:36:48.0363548Z "version": "v1.9.0", +2026-07-05T01:36:48.0363657Z "source": "state" +2026-07-05T01:36:48.0363736Z }, +2026-07-05T01:36:48.0363853Z "current_sha": "prodsha9999999", +2026-07-05T01:36:48.0363968Z "current_version": "v1.9.0", +2026-07-05T01:36:48.0364061Z "no_op": true +2026-07-05T01:36:48.0364139Z } +2026-07-05T01:36:48.0364270Z --- PASS: TestRunPreflight_JSONOutput (0.00s) +2026-07-05T01:36:48.0364421Z === RUN TestRunPreflight_NewErrorWritesCannotProceed +2026-07-05T01:36:48.0364617Z --- PASS: TestRunPreflight_NewErrorWritesCannotProceed (0.00s) +2026-07-05T01:36:48.0364734Z === RUN TestRunFinalize_ErrorOnBadConfig +2026-07-05T01:36:48.0364877Z --- PASS: TestRunFinalize_ErrorOnBadConfig (0.00s) +2026-07-05T01:36:48.0364974Z === RUN TestIsRealGitHub +2026-07-05T01:36:48.0365083Z --- PASS: TestIsRealGitHub (0.00s) +2026-07-05T01:36:48.0365190Z === RUN TestTrunkBranchFromEnv +2026-07-05T01:36:48.0365304Z --- PASS: TestTrunkBranchFromEnv (0.00s) +2026-07-05T01:36:48.0365444Z === RUN TestWriteStateViaAPI_RequiresRepository +2026-07-05T01:36:48.0365605Z --- PASS: TestWriteStateViaAPI_RequiresRepository (0.00s) +2026-07-05T01:36:48.0365732Z === RUN TestCommitAndPush_NoChangesIsNoOp +2026-07-05T01:36:48.0365875Z --- PASS: TestCommitAndPush_NoChangesIsNoOp (0.02s) +2026-07-05T01:36:48.0365984Z === RUN TestExtractEnvState_EdgeCases +2026-07-05T01:36:48.0366118Z --- PASS: TestExtractEnvState_EdgeCases (0.00s) +2026-07-05T01:36:48.0366254Z === RUN TestPlan_FirstEnvironment_NoTarget_Guarded +2026-07-05T01:36:48.0366424Z --- PASS: TestPlan_FirstEnvironment_NoTarget_Guarded (0.00s) +2026-07-05T01:36:48.0366706Z === RUN TestPlan_FirstEnvironment_WithTarget_Guarded +2026-07-05T01:36:48.0366872Z --- PASS: TestPlan_FirstEnvironment_WithTarget_Guarded (0.00s) +2026-07-05T01:36:48.0367010Z === RUN TestPlan_FirstEnvironment_Deployable_Guarded +2026-07-05T01:36:48.0367168Z --- PASS: TestPlan_FirstEnvironment_Deployable_Guarded (0.00s) +2026-07-05T01:36:48.0367301Z === RUN TestPlan_PromotedEnvironment_NotGuarded +2026-07-05T01:36:48.0367456Z --- PASS: TestPlan_PromotedEnvironment_NotGuarded (0.00s) +2026-07-05T01:36:48.0367582Z === RUN TestApply_FirstEnvironment_Guarded +2026-07-05T01:36:48.0367726Z --- PASS: TestApply_FirstEnvironment_Guarded (0.00s) +2026-07-05T01:36:48.0367835Z === RUN TestFirstEnvErr_NoConfig_Inert +2026-07-05T01:36:48.0367968Z --- PASS: TestFirstEnvErr_NoConfig_Inert (0.00s) +2026-07-05T01:36:48.0368105Z === RUN TestGitHistoryReader_RecoversPriorVersion +2026-07-05T01:36:48.0368286Z --- PASS: TestGitHistoryReader_RecoversPriorVersion (0.03s) +2026-07-05T01:36:48.0368453Z === RUN TestGitHistoryReader_RecoversPriorVersion_Subdir +2026-07-05T01:36:48.0368643Z --- PASS: TestGitHistoryReader_RecoversPriorVersion_Subdir (0.04s) +2026-07-05T01:36:48.0368757Z === RUN TestResolveTarget_RingDepth1 +2026-07-05T01:36:48.0368885Z --- PASS: TestResolveTarget_RingDepth1 (0.00s) +2026-07-05T01:36:48.0368999Z === RUN TestResolveTarget_RingDepthN +2026-07-05T01:36:48.0369125Z --- PASS: TestResolveTarget_RingDepthN (0.00s) +2026-07-05T01:36:48.0369265Z === RUN TestResolveTarget_ExplicitVersionStillWorks +2026-07-05T01:36:48.0369443Z --- PASS: TestResolveTarget_ExplicitVersionStillWorks (0.00s) +2026-07-05T01:36:48.0369592Z === RUN TestResolveTarget_ExplicitShaPrefixStillWorks +2026-07-05T01:36:48.0369779Z --- PASS: TestResolveTarget_ExplicitShaPrefixStillWorks (0.00s) +2026-07-05T01:36:48.0369926Z === RUN TestResolveTarget_GitFallbackWhenRingMissing +2026-07-05T01:36:48.0370421Z --- PASS: TestResolveTarget_GitFallbackWhenRingMissing (0.00s) +2026-07-05T01:36:48.0370569Z === RUN TestResolveTarget_DefaultPicksN1FromRing +2026-07-05T01:36:48.0370724Z --- PASS: TestResolveTarget_DefaultPicksN1FromRing (0.00s) +2026-07-05T01:36:48.0370897Z === RUN TestResolveTarget_DefaultFallsBackToGitWhenRingEmpty +2026-07-05T01:36:48.0371105Z --- PASS: TestResolveTarget_DefaultFallsBackToGitWhenRingEmpty (0.00s) +2026-07-05T01:36:48.0371247Z === RUN TestResolveTarget_UnresolvableReturnsError +2026-07-05T01:36:48.0371418Z --- PASS: TestResolveTarget_UnresolvableReturnsError (0.00s) +2026-07-05T01:36:48.0371552Z === RUN TestApply_MarksEnvDivergedWithRollbackRef +2026-07-05T01:36:48.0371722Z --- PASS: TestApply_MarksEnvDivergedWithRollbackRef (0.01s) +2026-07-05T01:36:48.0371877Z === RUN TestApply_DeployableScopedDoesNotMarkEnvDiverged +2026-07-05T01:36:48.0372077Z --- PASS: TestApply_DeployableScopedDoesNotMarkEnvDiverged (0.01s) +2026-07-05T01:36:48.0372214Z === RUN TestPlan_ResolvesTargetFromState_ByVersion +2026-07-05T01:36:48.0372375Z --- PASS: TestPlan_ResolvesTargetFromState_ByVersion (0.00s) +2026-07-05T01:36:48.0372523Z === RUN TestPlan_ResolvesTargetFromState_ByShaPrefix +2026-07-05T01:36:48.0372688Z --- PASS: TestPlan_ResolvesTargetFromState_ByShaPrefix (0.00s) +2026-07-05T01:36:48.0372814Z === RUN TestPlan_ResolvesTargetFromHistory +2026-07-05T01:36:48.0372955Z --- PASS: TestPlan_ResolvesTargetFromHistory (0.00s) +2026-07-05T01:36:48.0373062Z === RUN TestPlan_DeployableScoping +2026-07-05T01:36:48.0373185Z --- PASS: TestPlan_DeployableScoping (0.00s) +2026-07-05T01:36:48.0373293Z === RUN TestPlan_UnknownTargetError +2026-07-05T01:36:48.0373424Z --- PASS: TestPlan_UnknownTargetError (0.00s) +2026-07-05T01:36:48.0373546Z === RUN TestPlan_UnknownEnvironmentError +2026-07-05T01:36:48.0373680Z --- PASS: TestPlan_UnknownEnvironmentError (0.00s) +2026-07-05T01:36:48.0373796Z === RUN TestPlan_UnknownDeployableError +2026-07-05T01:36:48.0373929Z --- PASS: TestPlan_UnknownDeployableError (0.00s) +2026-07-05T01:36:48.0374037Z === RUN TestPlan_RequiresEnvAndTo +2026-07-05T01:36:48.0374287Z --- PASS: TestPlan_RequiresEnvAndTo (0.00s) +2026-07-05T01:36:48.0374407Z === RUN TestApply_WritesEnvAndDeployState +2026-07-05T01:36:48.0374549Z --- PASS: TestApply_WritesEnvAndDeployState (0.01s) +2026-07-05T01:36:48.0374703Z === RUN TestApply_DeployableScopedDoesNotTouchEnvPointer +2026-07-05T01:36:48.0374902Z --- PASS: TestApply_DeployableScopedDoesNotTouchEnvPointer (0.01s) +2026-07-05T01:36:48.0375012Z === RUN TestApply_NoOpIsNonDestructive +2026-07-05T01:36:48.0375148Z --- PASS: TestApply_NoOpIsNonDestructive (0.00s) +2026-07-05T01:36:48.0375247Z === RUN TestShaMatches +2026-07-05T01:36:48.0375352Z --- PASS: TestShaMatches (0.00s) +2026-07-05T01:36:48.0375496Z === RUN TestApply_PushesPriorSnapshotOnEnvRollback +2026-07-05T01:36:48.0375696Z --- PASS: TestApply_PushesPriorSnapshotOnEnvRollback (0.01s) +2026-07-05T01:36:48.0375814Z === RUN TestApply_NoSnapshotWhenSameSHA +2026-07-05T01:36:48.0375943Z --- PASS: TestApply_NoSnapshotWhenSameSHA (0.00s) +2026-07-05T01:36:48.0376030Z PASS +2026-07-05T01:36:48.0376140Z coverage: 85.4% of statements +2026-07-05T01:36:48.0376424Z ok github.com/stablekernel/cascade/internal/rollback 1.360s coverage: 85.4% of statements +2026-07-05T01:36:48.0376543Z === RUN TestTopologies_PresetEnvLists +2026-07-05T01:36:48.0376673Z --- PASS: TestTopologies_PresetEnvLists (0.00s) +2026-07-05T01:36:48.0376784Z === RUN TestScaffold_ExpectedFileSet +2026-07-05T01:36:48.0376911Z === RUN TestScaffold_ExpectedFileSet/no-env +2026-07-05T01:36:48.0377030Z === RUN TestScaffold_ExpectedFileSet/two-env +2026-07-05T01:36:48.0377157Z === RUN TestScaffold_ExpectedFileSet/three-env +2026-07-05T01:36:48.0377275Z === RUN TestScaffold_ExpectedFileSet/four-env +2026-07-05T01:36:48.0377402Z --- PASS: TestScaffold_ExpectedFileSet (0.05s) +2026-07-05T01:36:48.0377604Z --- PASS: TestScaffold_ExpectedFileSet/no-env (0.01s) +2026-07-05T01:36:48.0377797Z --- PASS: TestScaffold_ExpectedFileSet/two-env (0.01s) +2026-07-05T01:36:48.0378098Z --- PASS: TestScaffold_ExpectedFileSet/three-env (0.01s) +2026-07-05T01:36:48.0378298Z --- PASS: TestScaffold_ExpectedFileSet/four-env (0.01s) +2026-07-05T01:36:48.0378460Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates +2026-07-05T01:36:48.0378642Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/no-env +2026-07-05T01:36:48.0378830Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/two-env +2026-07-05T01:36:48.0379029Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/three-env +2026-07-05T01:36:48.0379217Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/four-env +2026-07-05T01:36:48.0379407Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates (0.09s) +2026-07-05T01:36:48.0379695Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/no-env (0.01s) +2026-07-05T01:36:48.0380132Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/two-env (0.03s) +2026-07-05T01:36:48.0380472Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/three-env (0.03s) +2026-07-05T01:36:48.0380779Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/four-env (0.03s) +2026-07-05T01:36:48.0380915Z === RUN TestScaffold_SchemaDirectiveIsFirstLine +2026-07-05T01:36:48.0381069Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/no-env +2026-07-05T01:36:48.0381223Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/two-env +2026-07-05T01:36:48.0381380Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/three-env +2026-07-05T01:36:48.0381527Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/four-env +2026-07-05T01:36:48.0381681Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine (0.05s) +2026-07-05T01:36:48.0381916Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/no-env (0.01s) +2026-07-05T01:36:48.0382160Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/two-env (0.01s) +2026-07-05T01:36:48.0382416Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/three-env (0.01s) +2026-07-05T01:36:48.0382658Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/four-env (0.01s) +2026-07-05T01:36:48.0382915Z === RUN TestScaffold_CLIVersionDefaulted +2026-07-05T01:36:48.0383049Z --- PASS: TestScaffold_CLIVersionDefaulted (0.01s) +2026-07-05T01:36:48.0383174Z === RUN TestScaffold_WithCLIVersionOverride +2026-07-05T01:36:48.0383322Z --- PASS: TestScaffold_WithCLIVersionOverride (0.01s) +2026-07-05T01:36:48.0383489Z === RUN TestScaffold_BuildStubDeclaresCallbackInputsOutputs +2026-07-05T01:36:48.0383695Z --- PASS: TestScaffold_BuildStubDeclaresCallbackInputsOutputs (0.01s) +2026-07-05T01:36:48.0383844Z === RUN TestScaffold_DeployStubDeclaresCallbackInputs +2026-07-05T01:36:48.0384029Z --- PASS: TestScaffold_DeployStubDeclaresCallbackInputs (0.01s) +2026-07-05T01:36:48.0384159Z === RUN TestScaffold_TwoEnv_ProducesDeployStub +2026-07-05T01:36:48.0384309Z --- PASS: TestScaffold_TwoEnv_ProducesDeployStub (0.01s) +2026-07-05T01:36:48.0384431Z === RUN TestScaffold_NoEnv_OmitsDeployStub +2026-07-05T01:36:48.0384566Z --- PASS: TestScaffold_NoEnv_OmitsDeployStub (0.01s) +2026-07-05T01:36:48.0384699Z === RUN TestSelfCheck_SucceedsOnProducedFiles +2026-07-05T01:36:48.0384845Z === RUN TestSelfCheck_SucceedsOnProducedFiles/no-env +2026-07-05T01:36:48.0384990Z === RUN TestSelfCheck_SucceedsOnProducedFiles/two-env +2026-07-05T01:36:48.0385142Z === RUN TestSelfCheck_SucceedsOnProducedFiles/three-env +2026-07-05T01:36:48.0385281Z === RUN TestSelfCheck_SucceedsOnProducedFiles/four-env +2026-07-05T01:36:48.0385431Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles (0.09s) +2026-07-05T01:36:48.0385656Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/no-env (0.01s) +2026-07-05T01:36:48.0385893Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/two-env (0.02s) +2026-07-05T01:36:48.0386132Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/three-env (0.03s) +2026-07-05T01:36:48.0386361Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/four-env (0.03s) +2026-07-05T01:36:48.0386505Z === RUN TestSelfCheck_FailsOnInvalidEnvironmentName +2026-07-05T01:36:48.0386670Z --- PASS: TestSelfCheck_FailsOnInvalidEnvironmentName (0.02s) +2026-07-05T01:36:48.0386910Z === RUN TestSelfCheck_FailsOnInvalidYAML +2026-07-05T01:36:48.0387050Z --- PASS: TestSelfCheck_FailsOnInvalidYAML (0.01s) +2026-07-05T01:36:48.0387183Z === RUN TestSelfCheck_FailsOnBuildWithoutWorkflow +2026-07-05T01:36:48.0387347Z --- PASS: TestSelfCheck_FailsOnBuildWithoutWorkflow (0.00s) +2026-07-05T01:36:48.0387456Z === RUN TestScaffold_IncludesCodeowners +2026-07-05T01:36:48.0387586Z === RUN TestScaffold_IncludesCodeowners/no-env +2026-07-05T01:36:48.0387716Z === RUN TestScaffold_IncludesCodeowners/two-env +2026-07-05T01:36:48.0387843Z === RUN TestScaffold_IncludesCodeowners/three-env +2026-07-05T01:36:48.0387973Z === RUN TestScaffold_IncludesCodeowners/four-env +2026-07-05T01:36:48.0388102Z --- PASS: TestScaffold_IncludesCodeowners (0.05s) +2026-07-05T01:36:48.0388312Z --- PASS: TestScaffold_IncludesCodeowners/no-env (0.01s) +2026-07-05T01:36:48.0388519Z --- PASS: TestScaffold_IncludesCodeowners/two-env (0.01s) +2026-07-05T01:36:48.0388733Z --- PASS: TestScaffold_IncludesCodeowners/three-env (0.01s) +2026-07-05T01:36:48.0388951Z --- PASS: TestScaffold_IncludesCodeowners/four-env (0.01s) +2026-07-05T01:36:48.0389070Z === RUN TestScaffold_IncludesAWSOIDCExample +2026-07-05T01:36:48.0389210Z === RUN TestScaffold_IncludesAWSOIDCExample/no-env +2026-07-05T01:36:48.0389342Z === RUN TestScaffold_IncludesAWSOIDCExample/two-env +2026-07-05T01:36:48.0389487Z === RUN TestScaffold_IncludesAWSOIDCExample/three-env +2026-07-05T01:36:48.0389628Z === RUN TestScaffold_IncludesAWSOIDCExample/four-env +2026-07-05T01:36:48.0389764Z --- PASS: TestScaffold_IncludesAWSOIDCExample (0.04s) +2026-07-05T01:36:48.0390138Z --- PASS: TestScaffold_IncludesAWSOIDCExample/no-env (0.01s) +2026-07-05T01:36:48.0390422Z --- PASS: TestScaffold_IncludesAWSOIDCExample/two-env (0.01s) +2026-07-05T01:36:48.0390657Z --- PASS: TestScaffold_IncludesAWSOIDCExample/three-env (0.01s) +2026-07-05T01:36:48.0390886Z --- PASS: TestScaffold_IncludesAWSOIDCExample/four-env (0.01s) +2026-07-05T01:36:48.0391186Z === RUN TestScaffold_DeterministicOutput +2026-07-05T01:36:48.0391320Z --- PASS: TestScaffold_DeterministicOutput (0.02s) +2026-07-05T01:36:48.0391429Z === RUN TestScaffold_NoBannedStrings +2026-07-05T01:36:48.0391551Z === RUN TestScaffold_NoBannedStrings/no-env +2026-07-05T01:36:48.0391673Z === RUN TestScaffold_NoBannedStrings/two-env +2026-07-05T01:36:48.0391792Z === RUN TestScaffold_NoBannedStrings/three-env +2026-07-05T01:36:48.0391914Z === RUN TestScaffold_NoBannedStrings/four-env +2026-07-05T01:36:48.0392034Z --- PASS: TestScaffold_NoBannedStrings (0.04s) +2026-07-05T01:36:48.0392228Z --- PASS: TestScaffold_NoBannedStrings/no-env (0.01s) +2026-07-05T01:36:48.0392427Z --- PASS: TestScaffold_NoBannedStrings/two-env (0.01s) +2026-07-05T01:36:48.0392624Z --- PASS: TestScaffold_NoBannedStrings/three-env (0.01s) +2026-07-05T01:36:48.0392822Z --- PASS: TestScaffold_NoBannedStrings/four-env (0.01s) +2026-07-05T01:36:48.0392897Z PASS +2026-07-05T01:36:48.0393006Z coverage: 83.0% of statements +2026-07-05T01:36:48.0393285Z ok github.com/stablekernel/cascade/internal/scaffold 1.547s coverage: 83.0% of statements +2026-07-05T01:36:48.0393418Z === RUN TestSchema_ValidatesCascadeOwnManifest +2026-07-05T01:36:48.0393574Z --- PASS: TestSchema_ValidatesCascadeOwnManifest (0.02s) +2026-07-05T01:36:48.0393696Z === RUN TestSchema_ValidatesE2EScenarioConfigs +2026-07-05T01:36:48.0393887Z === RUN TestSchema_ValidatesE2EScenarioConfigs/01-no-env-repo.yaml +2026-07-05T01:36:48.0394072Z === RUN TestSchema_ValidatesE2EScenarioConfigs/02-two-env-repo.yaml +2026-07-05T01:36:48.0394277Z === RUN TestSchema_ValidatesE2EScenarioConfigs/03-three-env-repo.yaml +2026-07-05T01:36:48.0394492Z === RUN TestSchema_ValidatesE2EScenarioConfigs/04-cascade-promotion.yaml +2026-07-05T01:36:48.0394692Z === RUN TestSchema_ValidatesE2EScenarioConfigs/05-publish-callback.yaml +2026-07-05T01:36:48.0394884Z === RUN TestSchema_ValidatesE2EScenarioConfigs/06-no-change-skip.yaml +2026-07-05T01:36:48.0395231Z === RUN TestSchema_ValidatesE2EScenarioConfigs/07-orchestrate-concurrency.yaml +2026-07-05T01:36:48.0395447Z === RUN TestSchema_ValidatesE2EScenarioConfigs/08-state-push-retry.yaml +2026-07-05T01:36:48.0395656Z === RUN TestSchema_ValidatesE2EScenarioConfigs/09-single-env-repo.yaml +2026-07-05T01:36:48.0395920Z === RUN TestSchema_ValidatesE2EScenarioConfigs/11-job-timeouts-and-optional-deps.yaml +2026-07-05T01:36:48.0396119Z === RUN TestSchema_ValidatesE2EScenarioConfigs/13-dispatch-inputs.yaml +2026-07-05T01:36:48.0396309Z === RUN TestSchema_ValidatesE2EScenarioConfigs/14-validate-check.yaml +2026-07-05T01:36:48.0396500Z === RUN TestSchema_ValidatesE2EScenarioConfigs/15-merge-queue.yaml +2026-07-05T01:36:48.0396689Z === RUN TestSchema_ValidatesE2EScenarioConfigs/16-pr-preview.yaml +2026-07-05T01:36:48.0396891Z === RUN TestSchema_ValidatesE2EScenarioConfigs/17-validate-callback.yaml +2026-07-05T01:36:48.0397136Z === RUN TestSchema_ValidatesE2EScenarioConfigs/18-promote-source-image-tag.yaml +2026-07-05T01:36:48.0397336Z === RUN TestSchema_ValidatesE2EScenarioConfigs/19-custom-changelog.yaml +2026-07-05T01:36:48.0397580Z === RUN TestSchema_ValidatesE2EScenarioConfigs/20-promote-allow-downgrade.yaml +2026-07-05T01:36:48.0397799Z === RUN TestSchema_ValidatesE2EScenarioConfigs/21-cross-repo-callback.yaml +2026-07-05T01:36:48.0397984Z === RUN TestSchema_ValidatesE2EScenarioConfigs/22-verify-drift.yaml +2026-07-05T01:36:48.0398225Z === RUN TestSchema_ValidatesE2EScenarioConfigs/23-canary-bluegreen-reserved.yaml +2026-07-05T01:36:48.0398475Z === RUN TestSchema_ValidatesE2EScenarioConfigs/24-gitops-deploy-target-reserved.yaml +2026-07-05T01:36:48.0398702Z === RUN TestSchema_ValidatesE2EScenarioConfigs/25-telemetry-sink-reserved.yaml +2026-07-05T01:36:48.0398948Z === RUN TestSchema_ValidatesE2EScenarioConfigs/26-version-overrides-reserved.yaml +2026-07-05T01:36:48.0399137Z === RUN TestSchema_ValidatesE2EScenarioConfigs/27-verify-orphan.yaml +2026-07-05T01:36:48.0399325Z === RUN TestSchema_ValidatesE2EScenarioConfigs/28-drift-check.yaml +2026-07-05T01:36:48.0399654Z === RUN TestSchema_ValidatesE2EScenarioConfigs/29-environment-config-emit.yaml +2026-07-05T01:36:48.0399864Z === RUN TestSchema_ValidatesE2EScenarioConfigs/30-app-token-source.yaml +2026-07-05T01:36:48.0400249Z === RUN TestSchema_ValidatesE2EScenarioConfigs/31-native-deployments.yaml +2026-07-05T01:36:48.0400505Z === RUN TestSchema_ValidatesE2EScenarioConfigs/32-rollback-repository-dispatch.yaml +2026-07-05T01:36:48.0400697Z === RUN TestSchema_ValidatesE2EScenarioConfigs/33-plan-diff.yaml +2026-07-05T01:36:48.0400943Z === RUN TestSchema_ValidatesE2EScenarioConfigs/34-extra-orchestrate-triggers.yaml +2026-07-05T01:36:48.0401172Z === RUN TestSchema_ValidatesE2EScenarioConfigs/35-action-pins-sha-mode.yaml +2026-07-05T01:36:48.0401412Z === RUN TestSchema_ValidatesE2EScenarioConfigs/36-action-pins-default-tag.yaml +2026-07-05T01:36:48.0401635Z === RUN TestSchema_ValidatesE2EScenarioConfigs/37-release-breaking-gate.yaml +2026-07-05T01:36:48.0401935Z === RUN TestSchema_ValidatesE2EScenarioConfigs/38-promote-breaking-gate-release-build.yaml +2026-07-05T01:36:48.0402157Z === RUN TestSchema_ValidatesE2EScenarioConfigs/39-action-pins-override.yaml +2026-07-05T01:36:48.0402418Z === RUN TestSchema_ValidatesE2EScenarioConfigs/40-release-trigger-dispatch-only.yaml +2026-07-05T01:36:48.0402755Z === RUN TestSchema_ValidatesE2EScenarioConfigs/41-sha-pin-state-write-preserves-cli-version-sha.yaml +2026-07-05T01:36:48.0402989Z === RUN TestSchema_ValidatesE2EScenarioConfigs/42-status-consistency-fix.yaml +2026-07-05T01:36:48.0403230Z === RUN TestSchema_ValidatesE2EScenarioConfigs/43-deploy-rollout-strategy.yaml +2026-07-05T01:36:48.0403455Z === RUN TestSchema_ValidatesE2EScenarioConfigs/44-components-reserved.yaml +2026-07-05T01:36:48.0403617Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs (0.09s) +2026-07-05T01:36:48.0403912Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/01-no-env-repo.yaml (0.00s) +2026-07-05T01:36:48.0404334Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/02-two-env-repo.yaml (0.00s) +2026-07-05T01:36:48.0404660Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/03-three-env-repo.yaml (0.01s) +2026-07-05T01:36:48.0404987Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/04-cascade-promotion.yaml (0.01s) +2026-07-05T01:36:48.0405297Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/05-publish-callback.yaml (0.00s) +2026-07-05T01:36:48.0405598Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/06-no-change-skip.yaml (0.00s) +2026-07-05T01:36:48.0405948Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/07-orchestrate-concurrency.yaml (0.00s) +2026-07-05T01:36:48.0406259Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/08-state-push-retry.yaml (0.00s) +2026-07-05T01:36:48.0406568Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/09-single-env-repo.yaml (0.00s) +2026-07-05T01:36:48.0406956Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/11-job-timeouts-and-optional-deps.yaml (0.00s) +2026-07-05T01:36:48.0407268Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/13-dispatch-inputs.yaml (0.00s) +2026-07-05T01:36:48.0407572Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/14-validate-check.yaml (0.00s) +2026-07-05T01:36:48.0407860Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/15-merge-queue.yaml (0.00s) +2026-07-05T01:36:48.0408152Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/16-pr-preview.yaml (0.00s) +2026-07-05T01:36:48.0408460Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/17-validate-callback.yaml (0.00s) +2026-07-05T01:36:48.0408822Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/18-promote-source-image-tag.yaml (0.00s) +2026-07-05T01:36:48.0409127Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/19-custom-changelog.yaml (0.00s) +2026-07-05T01:36:48.0409475Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/20-promote-allow-downgrade.yaml (0.00s) +2026-07-05T01:36:48.0409807Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/21-cross-repo-callback.yaml (0.00s) +2026-07-05T01:36:48.0410270Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/22-verify-drift.yaml (0.00s) +2026-07-05T01:36:48.0410761Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/23-canary-bluegreen-reserved.yaml (0.00s) +2026-07-05T01:36:48.0411143Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/24-gitops-deploy-target-reserved.yaml (0.00s) +2026-07-05T01:36:48.0411485Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/25-telemetry-sink-reserved.yaml (0.00s) +2026-07-05T01:36:48.0411854Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/26-version-overrides-reserved.yaml (0.00s) +2026-07-05T01:36:48.0412153Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/27-verify-orphan.yaml (0.00s) +2026-07-05T01:36:48.0412439Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/28-drift-check.yaml (0.00s) +2026-07-05T01:36:48.0412776Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/29-environment-config-emit.yaml (0.00s) +2026-07-05T01:36:48.0413094Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/30-app-token-source.yaml (0.00s) +2026-07-05T01:36:48.0413422Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/31-native-deployments.yaml (0.00s) +2026-07-05T01:36:48.0413795Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/32-rollback-repository-dispatch.yaml (0.00s) +2026-07-05T01:36:48.0414082Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/33-plan-diff.yaml (0.00s) +2026-07-05T01:36:48.0414443Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/34-extra-orchestrate-triggers.yaml (0.00s) +2026-07-05T01:36:48.0414775Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/35-action-pins-sha-mode.yaml (0.00s) +2026-07-05T01:36:48.0415120Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/36-action-pins-default-tag.yaml (0.00s) +2026-07-05T01:36:48.0415453Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/37-release-breaking-gate.yaml (0.00s) +2026-07-05T01:36:48.0415876Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/38-promote-breaking-gate-release-build.yaml (0.00s) +2026-07-05T01:36:48.0416326Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/39-action-pins-override.yaml (0.00s) +2026-07-05T01:36:48.0416709Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/40-release-trigger-dispatch-only.yaml (0.00s) +2026-07-05T01:36:48.0417188Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/41-sha-pin-state-write-preserves-cli-version-sha.yaml (0.00s) +2026-07-05T01:36:48.0417533Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/42-status-consistency-fix.yaml (0.00s) +2026-07-05T01:36:48.0417878Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/43-deploy-rollout-strategy.yaml (0.00s) +2026-07-05T01:36:48.0418208Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/44-components-reserved.yaml (0.00s) +2026-07-05T01:36:48.0418338Z === RUN TestSchema_ValidatesREADMEExamples +2026-07-05T01:36:48.0418528Z === RUN TestSchema_ValidatesREADMEExamples/readme-ci-block-1 +2026-07-05T01:36:48.0418688Z === RUN TestSchema_ValidatesREADMEExamples/readme-ci-block-2 +2026-07-05T01:36:48.0418845Z --- PASS: TestSchema_ValidatesREADMEExamples (0.02s) +2026-07-05T01:36:48.0419123Z --- PASS: TestSchema_ValidatesREADMEExamples/readme-ci-block-1 (0.00s) +2026-07-05T01:36:48.0419378Z --- PASS: TestSchema_ValidatesREADMEExamples/readme-ci-block-2 (0.00s) +2026-07-05T01:36:48.0419508Z === RUN TestSchema_RejectsKnownBadManifests +2026-07-05T01:36:48.0419683Z === RUN TestSchema_RejectsKnownBadManifests/build_missing_name +2026-07-05T01:36:48.0419882Z === RUN TestSchema_RejectsKnownBadManifests/unknown_top-level_key +2026-07-05T01:36:48.0420251Z === RUN TestSchema_RejectsKnownBadManifests/environments_as_string +2026-07-05T01:36:48.0420425Z === RUN TestSchema_RejectsKnownBadManifests/secrets_as_integer +2026-07-05T01:36:48.0420581Z --- PASS: TestSchema_RejectsKnownBadManifests (0.02s) +2026-07-05T01:36:48.0420858Z --- PASS: TestSchema_RejectsKnownBadManifests/build_missing_name (0.00s) +2026-07-05T01:36:48.0421152Z --- PASS: TestSchema_RejectsKnownBadManifests/unknown_top-level_key (0.00s) +2026-07-05T01:36:48.0421459Z --- PASS: TestSchema_RejectsKnownBadManifests/environments_as_string (0.00s) +2026-07-05T01:36:48.0421849Z --- PASS: TestSchema_RejectsKnownBadManifests/secrets_as_integer (0.00s) +2026-07-05T01:36:48.0421976Z === RUN TestSchema_AcceptsSecretsUnionForms +2026-07-05T01:36:48.0422119Z --- PASS: TestSchema_AcceptsSecretsUnionForms (0.02s) +2026-07-05T01:36:48.0422247Z === RUN TestSchema_AcceptsRunsOnUnionForms +2026-07-05T01:36:48.0422395Z --- PASS: TestSchema_AcceptsRunsOnUnionForms (0.02s) +2026-07-05T01:36:48.0422532Z === RUN TestSchema_OnDiskCopiesAreByteIdentical +2026-07-05T01:36:48.0422702Z --- PASS: TestSchema_OnDiskCopiesAreByteIdentical (0.00s) +2026-07-05T01:36:48.0422781Z PASS +2026-07-05T01:36:48.0422889Z coverage: 25.0% of statements +2026-07-05T01:36:48.0423155Z ok github.com/stablekernel/cascade/internal/schema 1.213s coverage: 25.0% of statements +2026-07-05T01:36:48.0423306Z === RUN TestSimulateHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0423457Z === PAUSE TestSimulateHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0423628Z === RUN TestSimulatePromoteHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0423794Z === PAUSE TestSimulatePromoteHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0423913Z === RUN TestSimulatePromote_InvalidMode +2026-07-05T01:36:48.0424032Z === PAUSE TestSimulatePromote_InvalidMode +2026-07-05T01:36:48.0424165Z === RUN TestSimulateSubcommands_Registered +2026-07-05T01:36:48.0424285Z === PAUSE TestSimulateSubcommands_Registered +2026-07-05T01:36:48.0424458Z === RUN TestSimulateRollbackHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0424624Z === PAUSE TestSimulateRollbackHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0424786Z === RUN TestSimulateReleaseHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0424951Z === PAUSE TestSimulateReleaseHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0425109Z === RUN TestSimulateHotfixHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0425272Z === PAUSE TestSimulateHotfixHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0425531Z === RUN TestSimulateHelp_MentionsDeployResultFlag +2026-07-05T01:36:48.0425678Z === PAUSE TestSimulateHelp_MentionsDeployResultFlag +2026-07-05T01:36:48.0425832Z === RUN TestCommonFlags_EngineOptions_InvalidDeployResult +2026-07-05T01:36:48.0425992Z === PAUSE TestCommonFlags_EngineOptions_InvalidDeployResult +2026-07-05T01:36:48.0426145Z === RUN TestCommonFlags_EngineOptions_DefaultIsActorOnly +2026-07-05T01:36:48.0426296Z === PAUSE TestCommonFlags_EngineOptions_DefaultIsActorOnly +2026-07-05T01:36:48.0426405Z === RUN TestParseCommaList +2026-07-05T01:36:48.0426508Z === PAUSE TestParseCommaList +2026-07-05T01:36:48.0426660Z === RUN TestDeployStub_RecordedEffects_DefaultSuccess +2026-07-05T01:36:48.0426810Z === PAUSE TestDeployStub_RecordedEffects_DefaultSuccess +2026-07-05T01:36:48.0426943Z === RUN TestDeployStub_RecordedEffects_NoCallbacks +2026-07-05T01:36:48.0427084Z === PAUSE TestDeployStub_RecordedEffects_NoCallbacks +2026-07-05T01:36:48.0427218Z === RUN TestDeployStub_InjectedFailure_Gates +2026-07-05T01:36:48.0427353Z === PAUSE TestDeployStub_InjectedFailure_Gates +2026-07-05T01:36:48.0427473Z === RUN TestDeployStub_AllSkipped_Gates +2026-07-05T01:36:48.0427586Z === PAUSE TestDeployStub_AllSkipped_Gates +2026-07-05T01:36:48.0427732Z === RUN TestDeployStub_OneSucceedsOneSkipped_Proceeds +2026-07-05T01:36:48.0427875Z === PAUSE TestDeployStub_OneSucceedsOneSkipped_Proceeds +2026-07-05T01:36:48.0428002Z === RUN TestDeployStub_DoesNotAliasInputs +2026-07-05T01:36:48.0428118Z === PAUSE TestDeployStub_DoesNotAliasInputs +2026-07-05T01:36:48.0428231Z === RUN TestParseDeployResults +2026-07-05T01:36:48.0428341Z === PAUSE TestParseDeployResults +2026-07-05T01:36:48.0428450Z === RUN TestDiffState_FieldChanges +2026-07-05T01:36:48.0428561Z === PAUSE TestDiffState_FieldChanges +2026-07-05T01:36:48.0428696Z === RUN TestDiffState_IgnoresRunStampedTimestamps +2026-07-05T01:36:48.0428839Z === PAUSE TestDiffState_IgnoresRunStampedTimestamps +2026-07-05T01:36:48.0428949Z === RUN TestDiffState_NoChange +2026-07-05T01:36:48.0429144Z === PAUSE TestDiffState_NoChange +2026-07-05T01:36:48.0429280Z === RUN TestEffectsFromResult_DeployAndWriteState +2026-07-05T01:36:48.0429416Z === PAUSE TestEffectsFromResult_DeployAndWriteState +2026-07-05T01:36:48.0429647Z === RUN TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy +2026-07-05T01:36:48.0429872Z === PAUSE TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy +2026-07-05T01:36:48.0430177Z === RUN TestReleaseMarkerEffect_PrereleaseAndPublish +2026-07-05T01:36:48.0430366Z === PAUSE TestReleaseMarkerEffect_PrereleaseAndPublish +2026-07-05T01:36:48.0430497Z === RUN TestReleaseMarkerEffect_NoMarkerWhenEmpty +2026-07-05T01:36:48.0430636Z === PAUSE TestReleaseMarkerEffect_NoMarkerWhenEmpty +2026-07-05T01:36:48.0430831Z === RUN TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions +2026-07-05T01:36:48.0431036Z === PAUSE TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions +2026-07-05T01:36:48.0431167Z === RUN TestEffectsFromResult_SkippedEnvs +2026-07-05T01:36:48.0431290Z === PAUSE TestEffectsFromResult_SkippedEnvs +2026-07-05T01:36:48.0431454Z === RUN TestEffectsFromResult_OrderedPromotionsThenSkips +2026-07-05T01:36:48.0431612Z === PAUSE TestEffectsFromResult_OrderedPromotionsThenSkips +2026-07-05T01:36:48.0431760Z === RUN TestEngine_Simulate_DeployStub_DefaultSuccess +2026-07-05T01:36:48.0431907Z === PAUSE TestEngine_Simulate_DeployStub_DefaultSuccess +2026-07-05T01:36:48.0432106Z === RUN TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize +2026-07-05T01:36:48.0432303Z === PAUSE TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize +2026-07-05T01:36:48.0432465Z === RUN TestEngine_Simulate_DeployStub_NoCallbacksUnchanged +2026-07-05T01:36:48.0432631Z === PAUSE TestEngine_Simulate_DeployStub_NoCallbacksUnchanged +2026-07-05T01:36:48.0432754Z === RUN TestEngine_Simulate_PromoteDefault +2026-07-05T01:36:48.0432869Z === PAUSE TestEngine_Simulate_PromoteDefault +2026-07-05T01:36:48.0433148Z === RUN TestEngine_Simulate_LeavesOriginalUntouched +2026-07-05T01:36:48.0433292Z === PAUSE TestEngine_Simulate_LeavesOriginalUntouched +2026-07-05T01:36:48.0433414Z === RUN TestEngine_Simulate_PromoteCascade +2026-07-05T01:36:48.0433534Z === PAUSE TestEngine_Simulate_PromoteCascade +2026-07-05T01:36:48.0433664Z === RUN TestEngine_Simulate_NoEnvironmentManifest +2026-07-05T01:36:48.0433802Z === PAUSE TestEngine_Simulate_NoEnvironmentManifest +2026-07-05T01:36:48.0433912Z === RUN TestEngine_Simulate_Deterministic +2026-07-05T01:36:48.0434030Z === PAUSE TestEngine_Simulate_Deterministic +2026-07-05T01:36:48.0434169Z === RUN TestHotfixAction_DivergesEnvAndRecordsPatch +2026-07-05T01:36:48.0434315Z === PAUSE TestHotfixAction_DivergesEnvAndRecordsPatch +2026-07-05T01:36:48.0434468Z === RUN TestHotfixAction_MultiCommitRecordsEveryPatch +2026-07-05T01:36:48.0434614Z === PAUSE TestHotfixAction_MultiCommitRecordsEveryPatch +2026-07-05T01:36:48.0434751Z === RUN TestHotfixAction_LeavesOriginalUntouched +2026-07-05T01:36:48.0434889Z === PAUSE TestHotfixAction_LeavesOriginalUntouched +2026-07-05T01:36:48.0435015Z === RUN TestHotfixAction_NoStateErrors +2026-07-05T01:36:48.0435131Z === PAUSE TestHotfixAction_NoStateErrors +2026-07-05T01:36:48.0435270Z === RUN TestReleaseAction_SurfacesPrereleaseMarker +2026-07-05T01:36:48.0435417Z === PAUSE TestReleaseAction_SurfacesPrereleaseMarker +2026-07-05T01:36:48.0435549Z === RUN TestReleaseAction_ErrorsWhenNoCrossing +2026-07-05T01:36:48.0435682Z === PAUSE TestReleaseAction_ErrorsWhenNoCrossing +2026-07-05T01:36:48.0435794Z === RUN TestRenderHuman_Golden +2026-07-05T01:36:48.0435909Z --- PASS: TestRenderHuman_Golden (0.01s) +2026-07-05T01:36:48.0436019Z === RUN TestRenderJSON_Golden +2026-07-05T01:36:48.0436133Z --- PASS: TestRenderJSON_Golden (0.01s) +2026-07-05T01:36:48.0436298Z === RUN TestRollbackAction_RevertsToPreviousRingSnapshot +2026-07-05T01:36:48.0436457Z === PAUSE TestRollbackAction_RevertsToPreviousRingSnapshot +2026-07-05T01:36:48.0436598Z === RUN TestRollbackAction_NoOpWhenAlreadyAtTarget +2026-07-05T01:36:48.0436866Z === PAUSE TestRollbackAction_NoOpWhenAlreadyAtTarget +2026-07-05T01:36:48.0437004Z === RUN TestRollbackAction_LeavesOriginalUntouched +2026-07-05T01:36:48.0437147Z === PAUSE TestRollbackAction_LeavesOriginalUntouched +2026-07-05T01:36:48.0437269Z === RUN TestRollbackAction_UnknownEnvErrors +2026-07-05T01:36:48.0437393Z === PAUSE TestRollbackAction_UnknownEnvErrors +2026-07-05T01:36:48.0437564Z === CONT TestSimulatePromoteHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0437707Z === CONT TestReleaseMarkerEffect_PrereleaseAndPublish +2026-07-05T01:36:48.0437844Z === CONT TestEngine_Simulate_NoEnvironmentManifest +2026-07-05T01:36:48.0438030Z === RUN TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease +2026-07-05T01:36:48.0438151Z === CONT TestEngine_Simulate_PromoteCascade +2026-07-05T01:36:48.0438340Z === PAUSE TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease +2026-07-05T01:36:48.0438511Z === RUN TestReleaseMarkerEffect_PrereleaseAndPublish/publish +2026-07-05T01:36:48.0438689Z === PAUSE TestReleaseMarkerEffect_PrereleaseAndPublish/publish +2026-07-05T01:36:48.0438828Z === CONT TestEngine_Simulate_LeavesOriginalUntouched +2026-07-05T01:36:48.0439029Z --- PASS: TestSimulatePromoteHelp_MentionsScopeAndIsolation (0.00s) +2026-07-05T01:36:48.0439150Z === CONT TestEngine_Simulate_PromoteDefault +2026-07-05T01:36:48.0439307Z --- PASS: TestEngine_Simulate_NoEnvironmentManifest (0.01s) +2026-07-05T01:36:48.0439453Z === CONT TestHotfixAction_DivergesEnvAndRecordsPatch +2026-07-05T01:36:48.0439586Z --- PASS: TestEngine_Simulate_PromoteDefault (0.01s) +2026-07-05T01:36:48.0439752Z === CONT TestEngine_Simulate_DeployStub_NoCallbacksUnchanged +2026-07-05T01:36:48.0439911Z --- PASS: TestEngine_Simulate_LeavesOriginalUntouched (0.01s) +2026-07-05T01:36:48.0440216Z === CONT TestEngine_Simulate_DeployStub_DefaultSuccess +2026-07-05T01:36:48.0440357Z --- PASS: TestEngine_Simulate_PromoteCascade (0.01s) +2026-07-05T01:36:48.0440554Z === CONT TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize +2026-07-05T01:36:48.0440882Z --- PASS: TestEngine_Simulate_DeployStub_NoCallbacksUnchanged (0.01s) +2026-07-05T01:36:48.0441043Z === CONT TestEffectsFromResult_OrderedPromotionsThenSkips +2026-07-05T01:36:48.0441243Z --- PASS: TestEffectsFromResult_OrderedPromotionsThenSkips (0.00s) +2026-07-05T01:36:48.0441366Z === CONT TestEffectsFromResult_SkippedEnvs +2026-07-05T01:36:48.0441500Z --- PASS: TestEffectsFromResult_SkippedEnvs (0.00s) +2026-07-05T01:36:48.0441636Z === CONT TestReleaseMarkerEffect_NoMarkerWhenEmpty +2026-07-05T01:36:48.0441794Z --- PASS: TestReleaseMarkerEffect_NoMarkerWhenEmpty (0.00s) +2026-07-05T01:36:48.0441990Z === CONT TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions +2026-07-05T01:36:48.0442228Z --- PASS: TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions (0.00s) +2026-07-05T01:36:48.0442359Z === CONT TestReleaseAction_ErrorsWhenNoCrossing +2026-07-05T01:36:48.0442529Z --- PASS: TestHotfixAction_DivergesEnvAndRecordsPatch (0.01s) +2026-07-05T01:36:48.0442654Z === CONT TestRollbackAction_UnknownEnvErrors +2026-07-05T01:36:48.0442894Z --- PASS: TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize (0.01s) +2026-07-05T01:36:48.0443034Z === CONT TestRollbackAction_LeavesOriginalUntouched +2026-07-05T01:36:48.0443168Z === CONT TestRollbackAction_NoOpWhenAlreadyAtTarget +2026-07-05T01:36:48.0443330Z --- PASS: TestReleaseAction_ErrorsWhenNoCrossing (0.01s) +2026-07-05T01:36:48.0443501Z --- PASS: TestEngine_Simulate_DeployStub_DefaultSuccess (0.02s) +2026-07-05T01:36:48.0443664Z === CONT TestRollbackAction_RevertsToPreviousRingSnapshot +2026-07-05T01:36:48.0443810Z --- PASS: TestRollbackAction_UnknownEnvErrors (0.01s) +2026-07-05T01:36:48.0443956Z === CONT TestHotfixAction_MultiCommitRecordsEveryPatch +2026-07-05T01:36:48.0444125Z --- PASS: TestRollbackAction_NoOpWhenAlreadyAtTarget (0.01s) +2026-07-05T01:36:48.0444261Z === CONT TestDeployStub_RecordedEffects_DefaultSuccess +2026-07-05T01:36:48.0444434Z --- PASS: TestDeployStub_RecordedEffects_DefaultSuccess (0.00s) +2026-07-05T01:36:48.0444569Z === CONT TestHotfixAction_LeavesOriginalUntouched +2026-07-05T01:36:48.0444855Z --- PASS: TestRollbackAction_LeavesOriginalUntouched (0.01s) +2026-07-05T01:36:48.0444994Z === CONT TestEffectsFromResult_DeployAndWriteState +2026-07-05T01:36:48.0445151Z --- PASS: TestEffectsFromResult_DeployAndWriteState (0.00s) +2026-07-05T01:36:48.0445262Z === CONT TestDiffState_NoChange +2026-07-05T01:36:48.0445375Z --- PASS: TestDiffState_NoChange (0.00s) +2026-07-05T01:36:48.0445523Z === CONT TestDeployStub_OneSucceedsOneSkipped_Proceeds +2026-07-05T01:36:48.0445701Z --- PASS: TestDeployStub_OneSucceedsOneSkipped_Proceeds (0.00s) +2026-07-05T01:36:48.0445922Z === CONT TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy +2026-07-05T01:36:48.0446187Z --- PASS: TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy (0.00s) +2026-07-05T01:36:48.0446303Z === CONT TestDeployStub_DoesNotAliasInputs +2026-07-05T01:36:48.0446442Z --- PASS: TestDeployStub_DoesNotAliasInputs (0.00s) +2026-07-05T01:36:48.0446584Z === CONT TestDiffState_IgnoresRunStampedTimestamps +2026-07-05T01:36:48.0446745Z --- PASS: TestDiffState_IgnoresRunStampedTimestamps (0.00s) +2026-07-05T01:36:48.0446876Z === CONT TestDeployStub_InjectedFailure_Gates +2026-07-05T01:36:48.0447022Z --- PASS: TestDeployStub_InjectedFailure_Gates (0.00s) +2026-07-05T01:36:48.0447137Z === CONT TestDiffState_FieldChanges +2026-07-05T01:36:48.0447274Z === RUN TestDiffState_FieldChanges/version_bump +2026-07-05T01:36:48.0447406Z === PAUSE TestDiffState_FieldChanges/version_bump +2026-07-05T01:36:48.0447548Z === RUN TestDiffState_FieldChanges/sha_set_from_empty +2026-07-05T01:36:48.0447688Z === PAUSE TestDiffState_FieldChanges/sha_set_from_empty +2026-07-05T01:36:48.0447843Z === RUN TestDiffState_FieldChanges/per-deploy_sha_change +2026-07-05T01:36:48.0447994Z === PAUSE TestDiffState_FieldChanges/per-deploy_sha_change +2026-07-05T01:36:48.0448159Z === RUN TestDiffState_FieldChanges/divergence_onset_via_ref +2026-07-05T01:36:48.0448416Z === PAUSE TestDiffState_FieldChanges/divergence_onset_via_ref +2026-07-05T01:36:48.0448596Z === RUN TestDiffState_FieldChanges/divergence_onset_via_patches +2026-07-05T01:36:48.0448772Z === PAUSE TestDiffState_FieldChanges/divergence_onset_via_patches +2026-07-05T01:36:48.0448923Z === RUN TestDiffState_FieldChanges/previous-ring_growth +2026-07-05T01:36:48.0449078Z === PAUSE TestDiffState_FieldChanges/previous-ring_growth +2026-07-05T01:36:48.0449195Z === CONT TestDeployStub_AllSkipped_Gates +2026-07-05T01:36:48.0449326Z --- PASS: TestDeployStub_AllSkipped_Gates (0.00s) +2026-07-05T01:36:48.0449437Z === CONT TestParseDeployResults +2026-07-05T01:36:48.0449557Z === RUN TestParseDeployResults/valid_pairs +2026-07-05T01:36:48.0449686Z === PAUSE TestParseDeployResults/valid_pairs +2026-07-05T01:36:48.0449825Z === RUN TestParseDeployResults/nil_for_empty_input +2026-07-05T01:36:48.0449962Z === PAUSE TestParseDeployResults/nil_for_empty_input +2026-07-05T01:36:48.0450275Z === RUN TestParseDeployResults/rejects_malformed_pair +2026-07-05T01:36:48.0450426Z === PAUSE TestParseDeployResults/rejects_malformed_pair +2026-07-05T01:36:48.0450570Z === RUN TestParseDeployResults/rejects_blank_name +2026-07-05T01:36:48.0450708Z === PAUSE TestParseDeployResults/rejects_blank_name +2026-07-05T01:36:48.0450855Z === RUN TestParseDeployResults/rejects_unknown_outcome +2026-07-05T01:36:48.0451009Z === PAUSE TestParseDeployResults/rejects_unknown_outcome +2026-07-05T01:36:48.0451144Z === CONT TestReleaseAction_SurfacesPrereleaseMarker +2026-07-05T01:36:48.0451324Z --- PASS: TestHotfixAction_MultiCommitRecordsEveryPatch (0.01s) +2026-07-05T01:36:48.0451435Z === CONT TestHotfixAction_NoStateErrors +2026-07-05T01:36:48.0451634Z --- PASS: TestRollbackAction_RevertsToPreviousRingSnapshot (0.01s) +2026-07-05T01:36:48.0451800Z === CONT TestSimulateReleaseHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0451991Z --- PASS: TestSimulateReleaseHelp_MentionsScopeAndIsolation (0.00s) +2026-07-05T01:36:48.0452110Z === CONT TestEngine_Simulate_Deterministic +2026-07-05T01:36:48.0452245Z --- PASS: TestHotfixAction_NoStateErrors (0.01s) +2026-07-05T01:36:48.0452483Z === CONT TestParseCommaList +2026-07-05T01:36:48.0452647Z --- PASS: TestHotfixAction_LeavesOriginalUntouched (0.01s) +2026-07-05T01:36:48.0452759Z --- PASS: TestParseCommaList (0.00s) +2026-07-05T01:36:48.0452897Z === CONT TestDeployStub_RecordedEffects_NoCallbacks +2026-07-05T01:36:48.0453058Z --- PASS: TestDeployStub_RecordedEffects_NoCallbacks (0.00s) +2026-07-05T01:36:48.0453215Z === CONT TestCommonFlags_EngineOptions_DefaultIsActorOnly +2026-07-05T01:36:48.0453401Z --- PASS: TestCommonFlags_EngineOptions_DefaultIsActorOnly (0.00s) +2026-07-05T01:36:48.0453536Z === CONT TestSimulateHelp_MentionsDeployResultFlag +2026-07-05T01:36:48.0453694Z === CONT TestCommonFlags_EngineOptions_InvalidDeployResult +2026-07-05T01:36:48.0453877Z --- PASS: TestCommonFlags_EngineOptions_InvalidDeployResult (0.00s) +2026-07-05T01:36:48.0453999Z === CONT TestSimulatePromote_InvalidMode +2026-07-05T01:36:48.0454140Z --- PASS: TestSimulatePromote_InvalidMode (0.00s) +2026-07-05T01:36:48.0454267Z === CONT TestSimulateSubcommands_Registered +2026-07-05T01:36:48.0454432Z --- PASS: TestSimulateHelp_MentionsDeployResultFlag (0.00s) +2026-07-05T01:36:48.0454595Z === CONT TestSimulateRollbackHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0454737Z --- PASS: TestSimulateSubcommands_Registered (0.00s) +2026-07-05T01:36:48.0454892Z === CONT TestSimulateHotfixHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0455097Z --- PASS: TestSimulateRollbackHelp_MentionsScopeAndIsolation (0.00s) +2026-07-05T01:36:48.0455239Z === CONT TestSimulateHelp_MentionsScopeAndIsolation +2026-07-05T01:36:48.0455425Z --- PASS: TestSimulateHotfixHelp_MentionsScopeAndIsolation (0.00s) +2026-07-05T01:36:48.0455603Z === CONT TestReleaseMarkerEffect_PrereleaseAndPublish/publish +2026-07-05T01:36:48.0455763Z --- PASS: TestSimulateHelp_MentionsScopeAndIsolation (0.00s) +2026-07-05T01:36:48.0455945Z === CONT TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease +2026-07-05T01:36:48.0456202Z === CONT TestDiffState_FieldChanges/sha_set_from_empty +2026-07-05T01:36:48.0456382Z === CONT TestDiffState_FieldChanges/divergence_onset_via_patches +2026-07-05T01:36:48.0456548Z === CONT TestDiffState_FieldChanges/divergence_onset_via_ref +2026-07-05T01:36:48.0456696Z === CONT TestDiffState_FieldChanges/per-deploy_sha_change +2026-07-05T01:36:48.0456870Z --- PASS: TestReleaseMarkerEffect_PrereleaseAndPublish (0.00s) +2026-07-05T01:36:48.0457149Z --- PASS: TestReleaseMarkerEffect_PrereleaseAndPublish/publish (0.00s) +2026-07-05T01:36:48.0457432Z --- PASS: TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease (0.00s) +2026-07-05T01:36:48.0464600Z === CONT TestDiffState_FieldChanges/previous-ring_growth +2026-07-05T01:36:48.0464794Z === CONT TestDiffState_FieldChanges/version_bump +2026-07-05T01:36:48.0464962Z === CONT TestParseDeployResults/rejects_malformed_pair +2026-07-05T01:36:48.0465129Z === CONT TestParseDeployResults/rejects_unknown_outcome +2026-07-05T01:36:48.0465287Z === CONT TestParseDeployResults/rejects_blank_name +2026-07-05T01:36:48.0465420Z --- PASS: TestDiffState_FieldChanges (0.00s) +2026-07-05T01:36:48.0465678Z --- PASS: TestDiffState_FieldChanges/sha_set_from_empty (0.00s) +2026-07-05T01:36:48.0465968Z --- PASS: TestDiffState_FieldChanges/divergence_onset_via_patches (0.00s) +2026-07-05T01:36:48.0466229Z --- PASS: TestDiffState_FieldChanges/divergence_onset_via_ref (0.00s) +2026-07-05T01:36:48.0466478Z --- PASS: TestDiffState_FieldChanges/per-deploy_sha_change (0.00s) +2026-07-05T01:36:48.0466728Z --- PASS: TestDiffState_FieldChanges/previous-ring_growth (0.00s) +2026-07-05T01:36:48.0466946Z --- PASS: TestDiffState_FieldChanges/version_bump (0.00s) +2026-07-05T01:36:48.0467093Z === CONT TestParseDeployResults/nil_for_empty_input +2026-07-05T01:36:48.0467220Z === CONT TestParseDeployResults/valid_pairs +2026-07-05T01:36:48.0467345Z --- PASS: TestParseDeployResults (0.00s) +2026-07-05T01:36:48.0467579Z --- PASS: TestParseDeployResults/rejects_malformed_pair (0.00s) +2026-07-05T01:36:48.0468050Z --- PASS: TestParseDeployResults/rejects_unknown_outcome (0.00s) +2026-07-05T01:36:48.0468266Z --- PASS: TestParseDeployResults/rejects_blank_name (0.00s) +2026-07-05T01:36:48.0468492Z --- PASS: TestParseDeployResults/nil_for_empty_input (0.00s) +2026-07-05T01:36:48.0468679Z --- PASS: TestParseDeployResults/valid_pairs (0.00s) +2026-07-05T01:36:48.0468855Z --- PASS: TestReleaseAction_SurfacesPrereleaseMarker (0.01s) +2026-07-05T01:36:48.0468996Z --- PASS: TestEngine_Simulate_Deterministic (0.01s) +2026-07-05T01:36:48.0469077Z PASS +2026-07-05T01:36:48.0469189Z coverage: 79.2% of statements +2026-07-05T01:36:48.0469474Z ok github.com/stablekernel/cascade/internal/simulate 1.090s coverage: 79.2% of statements +2026-07-05T01:36:48.0469675Z === RUN TestCommitWithRetry_RetriesOn409AndMergesConcurrentWrite +2026-07-05T01:36:48.0469905Z --- PASS: TestCommitWithRetry_RetriesOn409AndMergesConcurrentWrite (0.00s) +2026-07-05T01:36:48.0470275Z === RUN TestCommitWithRetry_ErrorsAfterBoundedAttempts +2026-07-05T01:36:48.0470489Z --- PASS: TestCommitWithRetry_ErrorsAfterBoundedAttempts (0.00s) +2026-07-05T01:36:48.0470650Z === RUN TestCommitWithRetry_NonConflictErrorIsNotRetried +2026-07-05T01:36:48.0470846Z --- PASS: TestCommitWithRetry_NonConflictErrorIsNotRetried (0.00s) +2026-07-05T01:36:48.0471009Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter +2026-07-05T01:36:48.0471333Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter/defaults_to_github-actions[bot]_when_unset +2026-07-05T01:36:48.0471596Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter/honors_a_manifest_git_override +2026-07-05T01:36:48.0471924Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter/fills_only_the_missing_field_from_the_default +2026-07-05T01:36:48.0472114Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter (0.00s) +2026-07-05T01:36:48.0472559Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter/defaults_to_github-actions[bot]_when_unset (0.00s) +2026-07-05T01:36:48.0473082Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter/honors_a_manifest_git_override (0.00s) +2026-07-05T01:36:48.0473553Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter/fills_only_the_missing_field_from_the_default (0.00s) +2026-07-05T01:36:48.0473724Z === RUN TestCommitWithRetry_IdentityPersistsAcrossRetries +2026-07-05T01:36:48.0473926Z --- PASS: TestCommitWithRetry_IdentityPersistsAcrossRetries (0.00s) +2026-07-05T01:36:48.0474023Z === RUN TestIsConflict +2026-07-05T01:36:48.0474130Z === RUN TestIsConflict/nil +2026-07-05T01:36:48.0474241Z === RUN TestIsConflict/typed_conflict +2026-07-05T01:36:48.0474357Z === RUN TestIsConflict/raw_gh_409_body +2026-07-05T01:36:48.0474488Z === RUN TestIsConflict/wrapped_typed_conflict +2026-07-05T01:36:48.0474595Z === RUN TestIsConflict/unrelated_error +2026-07-05T01:36:48.0474737Z === RUN TestIsConflict/does-not-match_without_409 +2026-07-05T01:36:48.0474844Z --- PASS: TestIsConflict (0.00s) +2026-07-05T01:36:48.0474999Z --- PASS: TestIsConflict/nil (0.00s) +2026-07-05T01:36:48.0475182Z --- PASS: TestIsConflict/typed_conflict (0.00s) +2026-07-05T01:36:48.0475356Z --- PASS: TestIsConflict/raw_gh_409_body (0.00s) +2026-07-05T01:36:48.0475560Z --- PASS: TestIsConflict/wrapped_typed_conflict (0.00s) +2026-07-05T01:36:48.0475762Z --- PASS: TestIsConflict/unrelated_error (0.00s) +2026-07-05T01:36:48.0475979Z --- PASS: TestIsConflict/does-not-match_without_409 (0.00s) +2026-07-05T01:36:48.0476082Z === RUN TestClassifyPutError +2026-07-05T01:36:48.0476204Z === RUN TestClassifyPutError/409_conflict +2026-07-05T01:36:48.0476328Z === RUN TestClassifyPutError/conflict_word +2026-07-05T01:36:48.0476451Z === RUN TestClassifyPutError/401_not_conflict +2026-07-05T01:36:48.0476572Z === RUN TestClassifyPutError/nil_err +2026-07-05T01:36:48.0476681Z --- PASS: TestClassifyPutError (0.00s) +2026-07-05T01:36:48.0476871Z --- PASS: TestClassifyPutError/409_conflict (0.00s) +2026-07-05T01:36:48.0477062Z --- PASS: TestClassifyPutError/conflict_word (0.00s) +2026-07-05T01:36:48.0477381Z --- PASS: TestClassifyPutError/401_not_conflict (0.00s) +2026-07-05T01:36:48.0477556Z --- PASS: TestClassifyPutError/nil_err (0.00s) +2026-07-05T01:36:48.0477631Z PASS +2026-07-05T01:36:48.0477737Z coverage: 64.7% of statements +2026-07-05T01:36:48.0478029Z ok github.com/stablekernel/cascade/internal/statewrite 1.012s coverage: 64.7% of statements +2026-07-05T01:36:48.0478140Z === RUN TestRunStatusAll_HumanReadable +2026-07-05T01:36:48.0478275Z --- PASS: TestRunStatusAll_HumanReadable (0.00s) +2026-07-05T01:36:48.0478376Z === RUN TestRunStatusAll_JSON +2026-07-05T01:36:48.0478662Z --- PASS: TestRunStatusAll_JSON (0.00s) +2026-07-05T01:36:48.0478816Z === RUN TestRunStatusAll_EmptyState +2026-07-05T01:36:48.0478988Z --- PASS: TestRunStatusAll_EmptyState (0.00s) +2026-07-05T01:36:48.0479139Z === RUN TestRunStatusAll_MissingFile +2026-07-05T01:36:48.0479310Z --- PASS: TestRunStatusAll_MissingFile (0.00s) +2026-07-05T01:36:48.0479414Z === RUN TestRunEnv_KnownEnv +2026-07-05T01:36:48.0479530Z --- PASS: TestRunEnv_KnownEnv (0.00s) +2026-07-05T01:36:48.0479640Z === RUN TestStatus_PrintsDivergence +2026-07-05T01:36:48.0479766Z --- PASS: TestStatus_PrintsDivergence (0.00s) +2026-07-05T01:36:48.0479863Z === RUN TestRunEnv_FilterJSON +2026-07-05T01:36:48.0479976Z --- PASS: TestRunEnv_FilterJSON (0.00s) +2026-07-05T01:36:48.0480264Z === RUN TestRunEnv_UnknownEnv_HumanReadable +2026-07-05T01:36:48.0480413Z --- PASS: TestRunEnv_UnknownEnv_HumanReadable (0.00s) +2026-07-05T01:36:48.0480517Z === RUN TestRunEnv_UnknownEnv_JSON +2026-07-05T01:36:48.0480637Z --- PASS: TestRunEnv_UnknownEnv_JSON (0.00s) +2026-07-05T01:36:48.0480745Z === RUN TestRunEnv_EmptyProdState +2026-07-05T01:36:48.0480860Z --- PASS: TestRunEnv_EmptyProdState (0.00s) +2026-07-05T01:36:48.0480968Z === RUN TestRunBuild_KnownBuild +2026-07-05T01:36:48.0481080Z --- PASS: TestRunBuild_KnownBuild (0.00s) +2026-07-05T01:36:48.0481181Z === RUN TestRunBuild_JSON +2026-07-05T01:36:48.0481288Z --- PASS: TestRunBuild_JSON (0.00s) +2026-07-05T01:36:48.0481533Z === RUN TestRunBuild_MissingBuild +2026-07-05T01:36:48.0481655Z --- PASS: TestRunBuild_MissingBuild (0.00s) +2026-07-05T01:36:48.0481763Z === RUN TestRunBuild_MissingBuild_JSON +2026-07-05T01:36:48.0481899Z --- PASS: TestRunBuild_MissingBuild_JSON (0.00s) +2026-07-05T01:36:48.0481998Z === RUN TestRunBuild_MissingEnv +2026-07-05T01:36:48.0482111Z --- PASS: TestRunBuild_MissingEnv (0.00s) +2026-07-05T01:36:48.0482218Z === RUN TestRunDeploy_KnownDeploy +2026-07-05T01:36:48.0482330Z --- PASS: TestRunDeploy_KnownDeploy (0.01s) +2026-07-05T01:36:48.0482437Z === RUN TestRunDeploy_JSON +2026-07-05T01:36:48.0482540Z --- PASS: TestRunDeploy_JSON (0.00s) +2026-07-05T01:36:48.0482652Z === RUN TestRunDeploy_MissingDeploy +2026-07-05T01:36:48.0482775Z --- PASS: TestRunDeploy_MissingDeploy (0.00s) +2026-07-05T01:36:48.0482878Z === RUN TestRunDeploy_MissingEnv +2026-07-05T01:36:48.0482998Z --- PASS: TestRunDeploy_MissingEnv (0.00s) +2026-07-05T01:36:48.0483132Z === RUN TestConsistency_OrphanEnvBranchFlagged +2026-07-05T01:36:48.0483295Z --- PASS: TestConsistency_OrphanEnvBranchFlagged (0.00s) +2026-07-05T01:36:48.0483405Z === RUN TestConsistency_NoOrphans +2026-07-05T01:36:48.0483525Z --- PASS: TestConsistency_NoOrphans (0.00s) +2026-07-05T01:36:48.0483630Z === RUN TestConsistency_JSON +2026-07-05T01:36:48.0483738Z --- PASS: TestConsistency_JSON (0.00s) +2026-07-05T01:36:48.0483864Z === RUN TestConsistency_Fix_DeletesOnlyOrphans +2026-07-05T01:36:48.0484010Z --- PASS: TestConsistency_Fix_DeletesOnlyOrphans (0.00s) +2026-07-05T01:36:48.0484125Z === RUN TestConsistency_Fix_Idempotent +2026-07-05T01:36:48.0484253Z --- PASS: TestConsistency_Fix_Idempotent (0.00s) +2026-07-05T01:36:48.0484387Z === RUN TestConsistency_Fix_JSONReflectsDeletions +2026-07-05T01:36:48.0484548Z --- PASS: TestConsistency_Fix_JSONReflectsDeletions (0.00s) +2026-07-05T01:36:48.0484621Z PASS +2026-07-05T01:36:48.0484723Z coverage: 71.1% of statements +2026-07-05T01:36:48.0484989Z ok github.com/stablekernel/cascade/internal/status 1.093s coverage: 71.1% of statements +2026-07-05T01:36:48.0485214Z === RUN TestRun_CleanRepo_NoDrift +2026-07-05T01:36:48.0485321Z === PAUSE TestRun_CleanRepo_NoDrift +2026-07-05T01:36:48.0485453Z === RUN TestRun_ChangedFile_ReportsOnlyThatFile +2026-07-05T01:36:48.0485589Z === PAUSE TestRun_ChangedFile_ReportsOnlyThatFile +2026-07-05T01:36:48.0485704Z === RUN TestRun_MissingFile_ReportsMissing +2026-07-05T01:36:48.0485823Z === PAUSE TestRun_MissingFile_ReportsMissing +2026-07-05T01:36:48.0485933Z === RUN TestRun_UnrelatedFile_Ignored +2026-07-05T01:36:48.0486038Z === PAUSE TestRun_UnrelatedFile_Ignored +2026-07-05T01:36:48.0486178Z === RUN TestRun_OrphanedGeneratedFile_ReportsDrift +2026-07-05T01:36:48.0486311Z === PAUSE TestRun_OrphanedGeneratedFile_ReportsDrift +2026-07-05T01:36:48.0486435Z === RUN TestRun_Orphan_AllowOrphans_NoDrift +2026-07-05T01:36:48.0486554Z === PAUSE TestRun_Orphan_AllowOrphans_NoDrift +2026-07-05T01:36:48.0486668Z === RUN TestRun_HandWrittenFile_NeverOrphan +2026-07-05T01:36:48.0486792Z === PAUSE TestRun_HandWrittenFile_NeverOrphan +2026-07-05T01:36:48.0486933Z === RUN TestRun_MultipleOrphans_SortedDeterministic +2026-07-05T01:36:48.0487077Z === PAUSE TestRun_MultipleOrphans_SortedDeterministic +2026-07-05T01:36:48.0487207Z === RUN TestRun_ManifestAbsent_OperationalNotDrift +2026-07-05T01:36:48.0487346Z === PAUSE TestRun_ManifestAbsent_OperationalNotDrift +2026-07-05T01:36:48.0487466Z === RUN TestRun_Quiet_SuppressesReportBody +2026-07-05T01:36:48.0487580Z === PAUSE TestRun_Quiet_SuppressesReportBody +2026-07-05T01:36:48.0487697Z === RUN TestRun_Deterministic_CleanTwice +2026-07-05T01:36:48.0487807Z === PAUSE TestRun_Deterministic_CleanTwice +2026-07-05T01:36:48.0487931Z === RUN TestRun_CleanRepo_ReturnsNil_ExitZero +2026-07-05T01:36:48.0488057Z === PAUSE TestRun_CleanRepo_ReturnsNil_ExitZero +2026-07-05T01:36:48.0488155Z === RUN TestRun_Drift_ExitCodeOne +2026-07-05T01:36:48.0488260Z === PAUSE TestRun_Drift_ExitCodeOne +2026-07-05T01:36:48.0488384Z === RUN TestRun_OperationalFailure_ExitCodeTwo +2026-07-05T01:36:48.0488601Z === PAUSE TestRun_OperationalFailure_ExitCodeTwo +2026-07-05T01:36:48.0488704Z === RUN TestErrDrift_ExitCodeOne +2026-07-05T01:36:48.0488812Z === PAUSE TestErrDrift_ExitCodeOne +2026-07-05T01:36:48.0488932Z === CONT TestRun_Orphan_AllowOrphans_NoDrift +2026-07-05T01:36:48.0489065Z === CONT TestRun_MultipleOrphans_SortedDeterministic +2026-07-05T01:36:48.0489172Z === CONT TestRun_UnrelatedFile_Ignored +2026-07-05T01:36:48.0489284Z === CONT TestRun_HandWrittenFile_NeverOrphan +2026-07-05T01:36:48.0489425Z --- PASS: TestRun_Orphan_AllowOrphans_NoDrift (0.02s) +2026-07-05T01:36:48.0489543Z === CONT TestRun_MissingFile_ReportsMissing +2026-07-05T01:36:48.0489673Z --- PASS: TestRun_HandWrittenFile_NeverOrphan (0.02s) +2026-07-05T01:36:48.0489801Z === CONT TestRun_ChangedFile_ReportsOnlyThatFile +2026-07-05T01:36:48.0489923Z --- PASS: TestRun_UnrelatedFile_Ignored (0.02s) +2026-07-05T01:36:48.0490194Z === CONT TestRun_CleanRepo_NoDrift +2026-07-05T01:36:48.0490383Z --- PASS: TestRun_MultipleOrphans_SortedDeterministic (0.02s) +2026-07-05T01:36:48.0490487Z === CONT TestRun_Drift_ExitCodeOne +2026-07-05T01:36:48.0490605Z --- PASS: TestRun_CleanRepo_NoDrift (0.02s) +2026-07-05T01:36:48.0490725Z === CONT TestRun_OperationalFailure_ExitCodeTwo +2026-07-05T01:36:48.0490862Z --- PASS: TestRun_MissingFile_ReportsMissing (0.02s) +2026-07-05T01:36:48.0490993Z === CONT TestRun_OrphanedGeneratedFile_ReportsDrift +2026-07-05T01:36:48.0491152Z --- PASS: TestRun_ChangedFile_ReportsOnlyThatFile (0.02s) +2026-07-05T01:36:48.0491258Z === CONT TestErrDrift_ExitCodeOne +2026-07-05T01:36:48.0491369Z --- PASS: TestErrDrift_ExitCodeOne (0.00s) +2026-07-05T01:36:48.0491502Z === CONT TestRun_ManifestAbsent_OperationalNotDrift +2026-07-05T01:36:48.0491614Z --- PASS: TestRun_Drift_ExitCodeOne (0.02s) +2026-07-05T01:36:48.0491727Z === CONT TestRun_Deterministic_CleanTwice +2026-07-05T01:36:48.0491877Z --- PASS: TestRun_OperationalFailure_ExitCodeTwo (0.00s) +2026-07-05T01:36:48.0491998Z === CONT TestRun_CleanRepo_ReturnsNil_ExitZero +2026-07-05T01:36:48.0492301Z --- PASS: TestRun_ManifestAbsent_OperationalNotDrift (0.00s) +2026-07-05T01:36:48.0492417Z === CONT TestRun_Quiet_SuppressesReportBody +2026-07-05T01:36:48.0492564Z --- PASS: TestRun_CleanRepo_ReturnsNil_ExitZero (0.02s) +2026-07-05T01:36:48.0492725Z --- PASS: TestRun_OrphanedGeneratedFile_ReportsDrift (0.02s) +2026-07-05T01:36:48.0492860Z --- PASS: TestRun_Quiet_SuppressesReportBody (0.02s) +2026-07-05T01:36:48.0492999Z --- PASS: TestRun_Deterministic_CleanTwice (0.03s) +2026-07-05T01:36:48.0493074Z PASS +2026-07-05T01:36:48.0493176Z coverage: 74.7% of statements +2026-07-05T01:36:48.0493432Z ok github.com/stablekernel/cascade/internal/verify 1.088s coverage: 74.7% of statements +2026-07-05T01:36:48.0493553Z === RUN TestVersionNewCommand_Structure +2026-07-05T01:36:48.0493686Z --- PASS: TestVersionNewCommand_Structure (0.00s) +2026-07-05T01:36:48.0493813Z === RUN TestVersionNewCommand_RunE_BadConfigPath +2026-07-05T01:36:48.0493985Z --- PASS: TestVersionNewCommand_RunE_BadConfigPath (0.00s) +2026-07-05T01:36:48.0494144Z === RUN TestVersionNewCommand_RunE_MissingEnvironmentFlag +2026-07-05T01:36:48.0494341Z --- PASS: TestVersionNewCommand_RunE_MissingEnvironmentFlag (0.00s) +2026-07-05T01:36:48.0494489Z === RUN TestVersionNewCommand_RunE_EnvironmentNotFound +2026-07-05T01:36:48.0494664Z --- PASS: TestVersionNewCommand_RunE_EnvironmentNotFound (0.00s) +2026-07-05T01:36:48.0494821Z === RUN TestVersionNewCommand_RunE_ValidConfigTextOutput +2026-07-05T01:36:48.0495006Z --- PASS: TestVersionNewCommand_RunE_ValidConfigTextOutput (0.00s) +2026-07-05T01:36:48.0495158Z === RUN TestVersionNewCommand_RunE_ValidConfigJSONOutput +2026-07-05T01:36:48.0495339Z --- PASS: TestVersionNewCommand_RunE_ValidConfigJSONOutput (0.00s) +2026-07-05T01:36:48.0495460Z === RUN TestVersionNewCommand_RunE_EmptyRange +2026-07-05T01:36:48.0495550Z v0.1.0-rc.0 +2026-07-05T01:36:48.0495694Z --- PASS: TestVersionNewCommand_RunE_EmptyRange (0.01s) +2026-07-05T01:36:48.0495940Z === RUN TestVersionNewCommand_RunE_NoConfigFlag +2026-07-05T01:36:48.0496102Z --- PASS: TestVersionNewCommand_RunE_NoConfigFlag (0.00s) +2026-07-05T01:36:48.0496204Z === RUN TestBumpTypeString +2026-07-05T01:36:48.0496314Z === RUN TestBumpTypeString/major +2026-07-05T01:36:48.0496415Z === RUN TestBumpTypeString/minor +2026-07-05T01:36:48.0496522Z === RUN TestBumpTypeString/patch +2026-07-05T01:36:48.0496626Z === RUN TestBumpTypeString/none +2026-07-05T01:36:48.0496743Z === RUN TestBumpTypeString/none#01 +2026-07-05T01:36:48.0496853Z --- PASS: TestBumpTypeString (0.00s) +2026-07-05T01:36:48.0497015Z --- PASS: TestBumpTypeString/major (0.00s) +2026-07-05T01:36:48.0497172Z --- PASS: TestBumpTypeString/minor (0.00s) +2026-07-05T01:36:48.0497328Z --- PASS: TestBumpTypeString/patch (0.00s) +2026-07-05T01:36:48.0497486Z --- PASS: TestBumpTypeString/none (0.00s) +2026-07-05T01:36:48.0497650Z --- PASS: TestBumpTypeString/none#01 (0.00s) +2026-07-05T01:36:48.0497775Z === RUN TestCalculateNext_InvalidNextEnvVersion +2026-07-05T01:36:48.0497935Z --- PASS: TestCalculateNext_InvalidNextEnvVersion (0.00s) +2026-07-05T01:36:48.0498055Z === RUN TestCalculateNext_ChoreOnlyCommits +2026-07-05T01:36:48.0498196Z --- PASS: TestCalculateNext_ChoreOnlyCommits (0.00s) +2026-07-05T01:36:48.0498342Z === RUN TestCalculateNext_UnparseableCurrentDevVersion +2026-07-05T01:36:48.0498529Z --- PASS: TestCalculateNext_UnparseableCurrentDevVersion (0.00s) +2026-07-05T01:36:48.0498652Z === RUN TestCalculateNext_NoCommitsNoNextEnv +2026-07-05T01:36:48.0498795Z --- PASS: TestCalculateNext_NoCommitsNoNextEnv (0.00s) +2026-07-05T01:36:48.0498926Z === RUN TestVersion_Compare_ReleaseVsPreRelease +2026-07-05T01:36:48.0499176Z === RUN TestVersion_Compare_ReleaseVsPreRelease/pre-release_sorts_before_its_release +2026-07-05T01:36:48.0499420Z === RUN TestVersion_Compare_ReleaseVsPreRelease/release_sorts_after_any_pre-release +2026-07-05T01:36:48.0499609Z === RUN TestVersion_Compare_ReleaseVsPreRelease/two_equal_releases +2026-07-05T01:36:48.0499880Z === RUN TestVersion_Compare_ReleaseVsPreRelease/same_rc_without_hotfix_is_equal_to_itself +2026-07-05T01:36:48.0500390Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease (0.00s) +2026-07-05T01:36:48.0500765Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/pre-release_sorts_before_its_release (0.00s) +2026-07-05T01:36:48.0501131Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/release_sorts_after_any_pre-release (0.00s) +2026-07-05T01:36:48.0501422Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/two_equal_releases (0.00s) +2026-07-05T01:36:48.0501810Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/same_rc_without_hotfix_is_equal_to_itself (0.00s) +2026-07-05T01:36:48.0501932Z === RUN TestVersion_Compare_MajorMinorPatch +2026-07-05T01:36:48.0502082Z === RUN TestVersion_Compare_MajorMinorPatch/major_greater +2026-07-05T01:36:48.0502235Z === RUN TestVersion_Compare_MajorMinorPatch/major_lesser +2026-07-05T01:36:48.0502386Z === RUN TestVersion_Compare_MajorMinorPatch/minor_greater +2026-07-05T01:36:48.0502532Z === RUN TestVersion_Compare_MajorMinorPatch/minor_lesser +2026-07-05T01:36:48.0502685Z === RUN TestVersion_Compare_MajorMinorPatch/patch_greater +2026-07-05T01:36:48.0502826Z === RUN TestVersion_Compare_MajorMinorPatch/patch_lesser +2026-07-05T01:36:48.0502973Z --- PASS: TestVersion_Compare_MajorMinorPatch (0.00s) +2026-07-05T01:36:48.0503229Z --- PASS: TestVersion_Compare_MajorMinorPatch/major_greater (0.00s) +2026-07-05T01:36:48.0503470Z --- PASS: TestVersion_Compare_MajorMinorPatch/major_lesser (0.00s) +2026-07-05T01:36:48.0503721Z --- PASS: TestVersion_Compare_MajorMinorPatch/minor_greater (0.00s) +2026-07-05T01:36:48.0503959Z --- PASS: TestVersion_Compare_MajorMinorPatch/minor_lesser (0.00s) +2026-07-05T01:36:48.0504207Z --- PASS: TestVersion_Compare_MajorMinorPatch/patch_greater (0.00s) +2026-07-05T01:36:48.0504443Z --- PASS: TestVersion_Compare_MajorMinorPatch/patch_lesser (0.00s) +2026-07-05T01:36:48.0504532Z === RUN TestParse +2026-07-05T01:36:48.0504790Z === RUN TestParse/simple_version_with_v_prefix +2026-07-05T01:36:48.0504903Z === RUN TestParse/version_with_RC +2026-07-05T01:36:48.0505016Z === RUN TestParse/version_with_RC_0 +2026-07-05T01:36:48.0505135Z === RUN TestParse/version_without_prefix +2026-07-05T01:36:48.0505267Z === RUN TestParse/version_without_prefix_with_RC +2026-07-05T01:36:48.0505376Z === RUN TestParse/invalid_format +2026-07-05T01:36:48.0505479Z === RUN TestParse/partial_version +2026-07-05T01:36:48.0505587Z --- PASS: TestParse (0.00s) +2026-07-05T01:36:48.0505796Z --- PASS: TestParse/simple_version_with_v_prefix (0.00s) +2026-07-05T01:36:48.0505962Z --- PASS: TestParse/version_with_RC (0.00s) +2026-07-05T01:36:48.0506131Z --- PASS: TestParse/version_with_RC_0 (0.00s) +2026-07-05T01:36:48.0506312Z --- PASS: TestParse/version_without_prefix (0.00s) +2026-07-05T01:36:48.0506525Z --- PASS: TestParse/version_without_prefix_with_RC (0.00s) +2026-07-05T01:36:48.0506680Z --- PASS: TestParse/invalid_format (0.00s) +2026-07-05T01:36:48.0506848Z --- PASS: TestParse/partial_version (0.00s) +2026-07-05T01:36:48.0506957Z === RUN TestVersion_String +2026-07-05T01:36:48.0507062Z === RUN TestVersion_String/with_RC +2026-07-05T01:36:48.0507175Z === RUN TestVersion_String/without_RC +2026-07-05T01:36:48.0507279Z === RUN TestVersion_String/RC_0 +2026-07-05T01:36:48.0507401Z === RUN TestVersion_String/with_RC_and_hotfix +2026-07-05T01:36:48.0507506Z --- PASS: TestVersion_String (0.00s) +2026-07-05T01:36:48.0507671Z --- PASS: TestVersion_String/with_RC (0.00s) +2026-07-05T01:36:48.0507847Z --- PASS: TestVersion_String/without_RC (0.00s) +2026-07-05T01:36:48.0507998Z --- PASS: TestVersion_String/RC_0 (0.00s) +2026-07-05T01:36:48.0508202Z --- PASS: TestVersion_String/with_RC_and_hotfix (0.00s) +2026-07-05T01:36:48.0508298Z === RUN TestVersion_Bump +2026-07-05T01:36:48.0508413Z === RUN TestVersion_Bump/major_bump +2026-07-05T01:36:48.0508522Z === RUN TestVersion_Bump/minor_bump +2026-07-05T01:36:48.0508627Z === RUN TestVersion_Bump/patch_bump +2026-07-05T01:36:48.0508848Z === RUN TestVersion_Bump/no_bump +2026-07-05T01:36:48.0508954Z --- PASS: TestVersion_Bump (0.00s) +2026-07-05T01:36:48.0509124Z --- PASS: TestVersion_Bump/major_bump (0.00s) +2026-07-05T01:36:48.0509290Z --- PASS: TestVersion_Bump/minor_bump (0.00s) +2026-07-05T01:36:48.0509451Z --- PASS: TestVersion_Bump/patch_bump (0.00s) +2026-07-05T01:36:48.0509611Z --- PASS: TestVersion_Bump/no_bump (0.00s) +2026-07-05T01:36:48.0509715Z === RUN TestDetermineBumpType +2026-07-05T01:36:48.0509836Z === RUN TestDetermineBumpType/no_commits +2026-07-05T01:36:48.0509946Z === RUN TestDetermineBumpType/fix_only +2026-07-05T01:36:48.0510245Z === RUN TestDetermineBumpType/feat_only +2026-07-05T01:36:48.0510374Z === RUN TestDetermineBumpType/breaking_change +2026-07-05T01:36:48.0510526Z === RUN TestDetermineBumpType/mixed_-_feat_wins_over_fix +2026-07-05T01:36:48.0510701Z === RUN TestDetermineBumpType/mixed_-_breaking_wins_over_feat +2026-07-05T01:36:48.0510851Z === RUN TestDetermineBumpType/chore_and_docs_are_ignored +2026-07-05T01:36:48.0510975Z --- PASS: TestDetermineBumpType (0.00s) +2026-07-05T01:36:48.0511161Z --- PASS: TestDetermineBumpType/no_commits (0.00s) +2026-07-05T01:36:48.0511348Z --- PASS: TestDetermineBumpType/fix_only (0.00s) +2026-07-05T01:36:48.0511544Z --- PASS: TestDetermineBumpType/feat_only (0.00s) +2026-07-05T01:36:48.0511749Z --- PASS: TestDetermineBumpType/breaking_change (0.00s) +2026-07-05T01:36:48.0512002Z --- PASS: TestDetermineBumpType/mixed_-_feat_wins_over_fix (0.00s) +2026-07-05T01:36:48.0512279Z --- PASS: TestDetermineBumpType/mixed_-_breaking_wins_over_feat (0.00s) +2026-07-05T01:36:48.0512518Z --- PASS: TestDetermineBumpType/chore_and_docs_are_ignored (0.00s) +2026-07-05T01:36:48.0512637Z === RUN TestCalculator_CalculateNext +2026-07-05T01:36:48.0512784Z === RUN TestCalculator_CalculateNext/first_release_-_feat +2026-07-05T01:36:48.0512967Z === RUN TestCalculator_CalculateNext/after_promotion_-_new_feat +2026-07-05T01:36:48.0513289Z === RUN TestCalculator_CalculateNext/same_version_-_increment_RC +2026-07-05T01:36:48.0513498Z === RUN TestCalculator_CalculateNext/same_version_-_increment_RC_again +2026-07-05T01:36:48.0513685Z === RUN TestCalculator_CalculateNext/breaking_change_-_major_bump +2026-07-05T01:36:48.0513843Z === RUN TestCalculator_CalculateNext/fix_only_-_patch_bump +2026-07-05T01:36:48.0513973Z --- PASS: TestCalculator_CalculateNext (0.00s) +2026-07-05T01:36:48.0514215Z --- PASS: TestCalculator_CalculateNext/first_release_-_feat (0.00s) +2026-07-05T01:36:48.0514499Z --- PASS: TestCalculator_CalculateNext/after_promotion_-_new_feat (0.00s) +2026-07-05T01:36:48.0514782Z --- PASS: TestCalculator_CalculateNext/same_version_-_increment_RC (0.00s) +2026-07-05T01:36:48.0515085Z --- PASS: TestCalculator_CalculateNext/same_version_-_increment_RC_again (0.00s) +2026-07-05T01:36:48.0515372Z --- PASS: TestCalculator_CalculateNext/breaking_change_-_major_bump (0.00s) +2026-07-05T01:36:48.0515621Z --- PASS: TestCalculator_CalculateNext/fix_only_-_patch_bump (0.00s) +2026-07-05T01:36:48.0515734Z === RUN TestGetLatestRelease +2026-07-05T01:36:48.0515863Z === RUN TestGetLatestRelease/single_release +2026-07-05T01:36:48.0515991Z === RUN TestGetLatestRelease/multiple_releases +2026-07-05T01:36:48.0516119Z === RUN TestGetLatestRelease/skip_pre-releases +2026-07-05T01:36:48.0516239Z === RUN TestGetLatestRelease/only_pre-releases +2026-07-05T01:36:48.0516359Z === RUN TestGetLatestRelease/empty_list +2026-07-05T01:36:48.0516504Z === RUN TestGetLatestRelease/mixed_valid_and_invalid +2026-07-05T01:36:48.0516618Z --- PASS: TestGetLatestRelease (0.00s) +2026-07-05T01:36:48.0516819Z --- PASS: TestGetLatestRelease/single_release (0.00s) +2026-07-05T01:36:48.0517021Z --- PASS: TestGetLatestRelease/multiple_releases (0.00s) +2026-07-05T01:36:48.0517231Z --- PASS: TestGetLatestRelease/skip_pre-releases (0.00s) +2026-07-05T01:36:48.0517432Z --- PASS: TestGetLatestRelease/only_pre-releases (0.00s) +2026-07-05T01:36:48.0517618Z --- PASS: TestGetLatestRelease/empty_list (0.00s) +2026-07-05T01:36:48.0517971Z --- PASS: TestGetLatestRelease/mixed_valid_and_invalid (0.00s) +2026-07-05T01:36:48.0518064Z === RUN TestStripRC +2026-07-05T01:36:48.0518175Z === RUN TestStripRC/v1.2.3-rc.4 +2026-07-05T01:36:48.0518271Z === RUN TestStripRC/v1.2.3-rc.0 +2026-07-05T01:36:48.0518374Z === RUN TestStripRC/v1.2.3 +2026-07-05T01:36:48.0518480Z === RUN TestStripRC/invalid +2026-07-05T01:36:48.0518581Z --- PASS: TestStripRC (0.00s) +2026-07-05T01:36:48.0518741Z --- PASS: TestStripRC/v1.2.3-rc.4 (0.00s) +2026-07-05T01:36:48.0518892Z --- PASS: TestStripRC/v1.2.3-rc.0 (0.00s) +2026-07-05T01:36:48.0519036Z --- PASS: TestStripRC/v1.2.3 (0.00s) +2026-07-05T01:36:48.0519185Z --- PASS: TestStripRC/invalid (0.00s) +2026-07-05T01:36:48.0519290Z === RUN TestVersion_WithRC +2026-07-05T01:36:48.0519445Z === RUN TestVersion_WithRC/add_RC_to_version_without_RC +2026-07-05T01:36:48.0519562Z === RUN TestVersion_WithRC/change_RC_number +2026-07-05T01:36:48.0519698Z === RUN TestVersion_WithRC/preserves_original +2026-07-05T01:36:48.0519804Z --- PASS: TestVersion_WithRC (0.00s) +2026-07-05T01:36:48.0520211Z --- PASS: TestVersion_WithRC/add_RC_to_version_without_RC (0.00s) +2026-07-05T01:36:48.0520405Z --- PASS: TestVersion_WithRC/change_RC_number (0.00s) +2026-07-05T01:36:48.0520598Z --- PASS: TestVersion_WithRC/preserves_original (0.00s) +2026-07-05T01:36:48.0520702Z === RUN TestVersion_Equal +2026-07-05T01:36:48.0520836Z === RUN TestVersion_Equal/same_version_different_RC +2026-07-05T01:36:48.0520955Z === RUN TestVersion_Equal/different_patch +2026-07-05T01:36:48.0521074Z === RUN TestVersion_Equal/nil_comparison +2026-07-05T01:36:48.0521178Z --- PASS: TestVersion_Equal (0.00s) +2026-07-05T01:36:48.0521403Z --- PASS: TestVersion_Equal/same_version_different_RC (0.00s) +2026-07-05T01:36:48.0521591Z --- PASS: TestVersion_Equal/different_patch (0.00s) +2026-07-05T01:36:48.0521777Z --- PASS: TestVersion_Equal/nil_comparison (0.00s) +2026-07-05T01:36:48.0522007Z === RUN TestVersion_Base +2026-07-05T01:36:48.0522120Z --- PASS: TestVersion_Base (0.00s) +2026-07-05T01:36:48.0522228Z === RUN TestVersion_BaseVersion +2026-07-05T01:36:48.0522342Z --- PASS: TestVersion_BaseVersion (0.00s) +2026-07-05T01:36:48.0522460Z === RUN TestNewCalculator_CustomPrefix +2026-07-05T01:36:48.0522593Z --- PASS: TestNewCalculator_CustomPrefix (0.00s) +2026-07-05T01:36:48.0522735Z === RUN TestNewCalculator_EmptyPrefixDefaultsToV +2026-07-05T01:36:48.0522903Z --- PASS: TestNewCalculator_EmptyPrefixDefaultsToV (0.00s) +2026-07-05T01:36:48.0523003Z === RUN TestParse_HotfixSegment +2026-07-05T01:36:48.0523143Z === RUN TestParse_HotfixSegment/hotfix_with_v_prefix +2026-07-05T01:36:48.0523281Z === RUN TestParse_HotfixSegment/hotfix_without_prefix +2026-07-05T01:36:48.0523396Z --- PASS: TestParse_HotfixSegment (0.00s) +2026-07-05T01:36:48.0523624Z --- PASS: TestParse_HotfixSegment/hotfix_with_v_prefix (0.00s) +2026-07-05T01:36:48.0523856Z --- PASS: TestParse_HotfixSegment/hotfix_without_prefix (0.00s) +2026-07-05T01:36:48.0523980Z === RUN TestParse_RejectsMalformedHotfix +2026-07-05T01:36:48.0524130Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-hotfix.1 +2026-07-05T01:36:48.0524294Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix +2026-07-05T01:36:48.0524461Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-rc.2-hotfix.1 +2026-07-05T01:36:48.0524618Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix.x +2026-07-05T01:36:48.0524760Z --- PASS: TestParse_RejectsMalformedHotfix (0.00s) +2026-07-05T01:36:48.0525004Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-hotfix.1 (0.00s) +2026-07-05T01:36:48.0525266Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix (0.00s) +2026-07-05T01:36:48.0525528Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-rc.2-hotfix.1 (0.00s) +2026-07-05T01:36:48.0525785Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix.x (0.00s) +2026-07-05T01:36:48.0525920Z === RUN TestVersion_Ordering_HotfixBetweenRCs +2026-07-05T01:36:48.0526183Z --- PASS: TestVersion_Ordering_HotfixBetweenRCs (0.00s) +2026-07-05T01:36:48.0526328Z === RUN TestCalculateNext_NextEnvHoldsHotfixVersion +2026-07-05T01:36:48.0526495Z --- PASS: TestCalculateNext_NextEnvHoldsHotfixVersion (0.00s) +2026-07-05T01:36:48.0526591Z === RUN TestParseBase +2026-07-05T01:36:48.0526704Z === RUN TestParseBase/plain_release +2026-07-05T01:36:48.0526814Z === RUN TestParseBase/rc_suffix_dropped +2026-07-05T01:36:48.0526938Z === RUN TestParseBase/hotfix_suffix_dropped +2026-07-05T01:36:48.0527051Z === RUN TestParseBase/dryrun_suffix_dropped +2026-07-05T01:36:48.0527178Z === RUN TestParseBase/opaque_suffix_dropped +2026-07-05T01:36:48.0527290Z === RUN TestParseBase/no_prefix +2026-07-05T01:36:48.0527397Z === RUN TestParseBase/not_a_triple +2026-07-05T01:36:48.0527505Z === RUN TestParseBase/empty +2026-07-05T01:36:48.0527608Z === RUN TestParseBase/two_segments +2026-07-05T01:36:48.0527715Z --- PASS: TestParseBase (0.00s) +2026-07-05T01:36:48.0527898Z --- PASS: TestParseBase/plain_release (0.00s) +2026-07-05T01:36:48.0528092Z --- PASS: TestParseBase/rc_suffix_dropped (0.00s) +2026-07-05T01:36:48.0528291Z --- PASS: TestParseBase/hotfix_suffix_dropped (0.00s) +2026-07-05T01:36:48.0528472Z --- PASS: TestParseBase/dryrun_suffix_dropped (0.00s) +2026-07-05T01:36:48.0528658Z --- PASS: TestParseBase/opaque_suffix_dropped (0.00s) +2026-07-05T01:36:48.0528813Z --- PASS: TestParseBase/no_prefix (0.00s) +2026-07-05T01:36:48.0528982Z --- PASS: TestParseBase/not_a_triple (0.00s) +2026-07-05T01:36:48.0529133Z --- PASS: TestParseBase/empty (0.00s) +2026-07-05T01:36:48.0529291Z --- PASS: TestParseBase/two_segments (0.00s) +2026-07-05T01:36:48.0529436Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion +2026-07-05T01:36:48.0529682Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_fresh_release +2026-07-05T01:36:48.0529919Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_just_promoted +2026-07-05T01:36:48.0530509Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion/opaque_prerelease_suffix_tolerated +2026-07-05T01:36:48.0530687Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion (0.00s) +2026-07-05T01:36:48.0531052Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_fresh_release (0.00s) +2026-07-05T01:36:48.0531400Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_just_promoted (0.00s) +2026-07-05T01:36:48.0531793Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion/opaque_prerelease_suffix_tolerated (0.00s) +2026-07-05T01:36:48.0531906Z === RUN TestStripRC_HotfixVersion +2026-07-05T01:36:48.0532026Z --- PASS: TestStripRC_HotfixVersion (0.00s) +2026-07-05T01:36:48.0532134Z === RUN TestVersion_WithHotfix +2026-07-05T01:36:48.0532286Z === RUN TestVersion_WithHotfix/sets_hotfix_preserving_rc +2026-07-05T01:36:48.0532426Z === RUN TestVersion_WithHotfix/preserves_original +2026-07-05T01:36:48.0532546Z --- PASS: TestVersion_WithHotfix (0.00s) +2026-07-05T01:36:48.0532803Z --- PASS: TestVersion_WithHotfix/sets_hotfix_preserving_rc (0.00s) +2026-07-05T01:36:48.0533027Z --- PASS: TestVersion_WithHotfix/preserves_original (0.00s) +2026-07-05T01:36:48.0533127Z === RUN TestVersion_NextHotfix +2026-07-05T01:36:48.0533319Z === RUN TestVersion_NextHotfix/first_hotfix_on_plain_rc_is_hotfix.1 +2026-07-05T01:36:48.0533473Z === RUN TestVersion_NextHotfix/increments_existing_hotfix +2026-07-05T01:36:48.0533608Z === RUN TestVersion_NextHotfix/preserves_original +2026-07-05T01:36:48.0533722Z --- PASS: TestVersion_NextHotfix (0.00s) +2026-07-05T01:36:48.0534010Z --- PASS: TestVersion_NextHotfix/first_hotfix_on_plain_rc_is_hotfix.1 (0.00s) +2026-07-05T01:36:48.0534264Z --- PASS: TestVersion_NextHotfix/increments_existing_hotfix (0.00s) +2026-07-05T01:36:48.0534474Z --- PASS: TestVersion_NextHotfix/preserves_original (0.00s) +2026-07-05T01:36:48.0534558Z PASS +2026-07-05T01:36:48.0534665Z coverage: 96.4% of statements +2026-07-05T01:36:48.0534945Z ok github.com/stablekernel/cascade/internal/version 1.045s coverage: 96.4% of statements +2026-07-05T01:36:48.0535203Z === RUN TestBuildCrossRepoViewModel_NilConfig +2026-07-05T01:36:48.0535358Z --- PASS: TestBuildCrossRepoViewModel_NilConfig (0.00s) +2026-07-05T01:36:48.0535521Z === RUN TestBuildCrossRepoViewModel_RendersLanesAndEdges +2026-07-05T01:36:48.0535722Z --- PASS: TestBuildCrossRepoViewModel_RendersLanesAndEdges (0.00s) +2026-07-05T01:36:48.0535886Z === RUN TestBuildCrossRepoViewModel_NoExternals_PrimaryOnly +2026-07-05T01:36:48.0536088Z --- PASS: TestBuildCrossRepoViewModel_NoExternals_PrimaryOnly (0.00s) +2026-07-05T01:36:48.0536297Z === RUN TestBuildCrossRepoViewModel_SatelliteOnly_NotifiesNamedPrimary +2026-07-05T01:36:48.0536547Z --- PASS: TestBuildCrossRepoViewModel_SatelliteOnly_NotifiesNamedPrimary (0.00s) +2026-07-05T01:36:48.0536676Z === RUN TestMermaidEmitter_CrossRepoGolden +2026-07-05T01:36:48.0536818Z --- PASS: TestMermaidEmitter_CrossRepoGolden (0.00s) +2026-07-05T01:36:48.0536961Z === RUN TestMermaidEmitter_CrossRepoDeterministic +2026-07-05T01:36:48.0537126Z --- PASS: TestMermaidEmitter_CrossRepoDeterministic (0.01s) +2026-07-05T01:36:48.0537254Z === RUN TestBuildEnvViewModel_IsStateMachine +2026-07-05T01:36:48.0537405Z --- PASS: TestBuildEnvViewModel_IsStateMachine (0.00s) +2026-07-05T01:36:48.0537540Z === RUN TestBuildEnvViewModel_NoEnvironmentsErrors +2026-07-05T01:36:48.0537711Z --- PASS: TestBuildEnvViewModel_NoEnvironmentsErrors (0.00s) +2026-07-05T01:36:48.0537836Z === RUN TestBuildEnvViewModel_NilConfigErrors +2026-07-05T01:36:48.0537984Z --- PASS: TestBuildEnvViewModel_NilConfigErrors (0.00s) +2026-07-05T01:36:48.0538096Z === RUN TestMermaidEmitter_EnvGolden +2026-07-05T01:36:48.0538224Z --- PASS: TestMermaidEmitter_EnvGolden (0.00s) +2026-07-05T01:36:48.0538350Z === RUN TestMermaidEmitter_EnvDeterministic +2026-07-05T01:36:48.0538489Z --- PASS: TestMermaidEmitter_EnvDeterministic (0.00s) +2026-07-05T01:36:48.0538632Z === RUN TestBuildStagesViewModel_CollapsesCallbacks +2026-07-05T01:36:48.0538892Z --- PASS: TestBuildStagesViewModel_CollapsesCallbacks (0.00s) +2026-07-05T01:36:48.0539035Z === RUN TestBuildStagesViewModel_OmitsAbsentStages +2026-07-05T01:36:48.0539203Z --- PASS: TestBuildStagesViewModel_OmitsAbsentStages (0.00s) +2026-07-05T01:36:48.0539314Z === RUN TestMermaidEmitter_StagesGolden +2026-07-05T01:36:48.0539453Z --- PASS: TestMermaidEmitter_StagesGolden (0.00s) +2026-07-05T01:36:48.0539578Z === RUN TestMermaidEmitter_StagesDeterministic +2026-07-05T01:36:48.0539737Z --- PASS: TestMermaidEmitter_StagesDeterministic (0.00s) +2026-07-05T01:36:48.0539860Z === RUN TestLookupTheme_BuiltinsAndAliases +2026-07-05T01:36:48.0540137Z === RUN TestLookupTheme_BuiltinsAndAliases/cascade +2026-07-05T01:36:48.0540301Z === RUN TestLookupTheme_BuiltinsAndAliases/bland +2026-07-05T01:36:48.0540431Z === RUN TestLookupTheme_BuiltinsAndAliases/default +2026-07-05T01:36:48.0540560Z === RUN TestLookupTheme_BuiltinsAndAliases/#00 +2026-07-05T01:36:48.0540703Z === RUN TestLookupTheme_BuiltinsAndAliases/midnight +2026-07-05T01:36:48.0540898Z === RUN TestLookupTheme_BuiltinsAndAliases/./themes/custom.json +2026-07-05T01:36:48.0541038Z --- PASS: TestLookupTheme_BuiltinsAndAliases (0.00s) +2026-07-05T01:36:48.0541264Z --- PASS: TestLookupTheme_BuiltinsAndAliases/cascade (0.00s) +2026-07-05T01:36:48.0541482Z --- PASS: TestLookupTheme_BuiltinsAndAliases/bland (0.00s) +2026-07-05T01:36:48.0541695Z --- PASS: TestLookupTheme_BuiltinsAndAliases/default (0.00s) +2026-07-05T01:36:48.0541900Z --- PASS: TestLookupTheme_BuiltinsAndAliases/#00 (0.00s) +2026-07-05T01:36:48.0542122Z --- PASS: TestLookupTheme_BuiltinsAndAliases/midnight (0.00s) +2026-07-05T01:36:48.0542404Z --- PASS: TestLookupTheme_BuiltinsAndAliases/./themes/custom.json (0.00s) +2026-07-05T01:36:48.0542527Z === RUN TestBuiltinThemes_EmitValidMermaid +2026-07-05T01:36:48.0542657Z === RUN TestBuiltinThemes_EmitValidMermaid/cascade +2026-07-05T01:36:48.0542787Z === RUN TestBuiltinThemes_EmitValidMermaid/bland +2026-07-05T01:36:48.0543065Z --- PASS: TestBuiltinThemes_EmitValidMermaid (0.00s) +2026-07-05T01:36:48.0543278Z --- PASS: TestBuiltinThemes_EmitValidMermaid/cascade (0.00s) +2026-07-05T01:36:48.0543490Z --- PASS: TestBuiltinThemes_EmitValidMermaid/bland (0.00s) +2026-07-05T01:36:48.0543600Z === RUN TestMermaidEmitter_BlandGolden +2026-07-05T01:36:48.0543732Z --- PASS: TestMermaidEmitter_BlandGolden (0.00s) +2026-07-05T01:36:48.0543846Z === RUN TestCascadeAndBland_Differ +2026-07-05T01:36:48.0543963Z --- PASS: TestCascadeAndBland_Differ (0.00s) +2026-07-05T01:36:48.0544077Z === RUN TestEmit_PerThemeDeterministic +2026-07-05T01:36:48.0544199Z === RUN TestEmit_PerThemeDeterministic/cascade +2026-07-05T01:36:48.0544325Z === RUN TestEmit_PerThemeDeterministic/bland +2026-07-05T01:36:48.0544451Z --- PASS: TestEmit_PerThemeDeterministic (0.01s) +2026-07-05T01:36:48.0544657Z --- PASS: TestEmit_PerThemeDeterministic/cascade (0.00s) +2026-07-05T01:36:48.0544854Z --- PASS: TestEmit_PerThemeDeterministic/bland (0.00s) +2026-07-05T01:36:48.0544969Z === RUN TestLoadTheme_AppliesStyling +2026-07-05T01:36:48.0545098Z --- PASS: TestLoadTheme_AppliesStyling (0.00s) +2026-07-05T01:36:48.0545216Z === RUN TestLoadTheme_MissingFile_Errors +2026-07-05T01:36:48.0545352Z --- PASS: TestLoadTheme_MissingFile_Errors (0.00s) +2026-07-05T01:36:48.0545461Z === RUN TestLoadTheme_Malformed_Errors +2026-07-05T01:36:48.0545580Z --- PASS: TestLoadTheme_Malformed_Errors (0.00s) +2026-07-05T01:36:48.0545705Z === RUN TestBuildViewModel_IsRenderAgnostic +2026-07-05T01:36:48.0545843Z --- PASS: TestBuildViewModel_IsRenderAgnostic (0.00s) +2026-07-05T01:36:48.0545956Z === RUN TestMermaidEmitter_Golden +2026-07-05T01:36:48.0546076Z --- PASS: TestMermaidEmitter_Golden (0.00s) +2026-07-05T01:36:48.0546186Z === RUN TestMermaidEmitter_Deterministic +2026-07-05T01:36:48.0546323Z --- PASS: TestMermaidEmitter_Deterministic (0.00s) +2026-07-05T01:36:48.0546441Z === RUN TestMermaidEmitter_StructurallyValid +2026-07-05T01:36:48.0546708Z --- PASS: TestMermaidEmitter_StructurallyValid (0.00s) +2026-07-05T01:36:48.0546836Z === RUN TestBuildViewModel_CyclicGraphErrors +2026-07-05T01:36:48.0546985Z --- PASS: TestBuildViewModel_CyclicGraphErrors (0.00s) +2026-07-05T01:36:48.0547103Z === RUN TestBuildViewModel_NilGraphErrors +2026-07-05T01:36:48.0547238Z --- PASS: TestBuildViewModel_NilGraphErrors (0.00s) +2026-07-05T01:36:48.0547318Z PASS +2026-07-05T01:36:48.0547417Z coverage: 92.7% of statements +2026-07-05T01:36:48.0547700Z ok github.com/stablekernel/cascade/internal/visualize 1.047s coverage: 92.7% of statements +2026-07-05T01:36:48.0547780Z FAIL +2026-07-05T01:36:48.1044050Z ##[error]Process completed with exit code 123. +2026-07-05T01:36:48.1199795Z Post job cleanup. +2026-07-05T01:36:48.2090449Z [command]/usr/bin/git version +2026-07-05T01:36:48.2130390Z git version 2.54.0 +2026-07-05T01:36:48.2173048Z Temporarily overriding HOME='/home/runner/work/_temp/54fa703e-ef3a-43ec-826b-c1eb7a2719b1' before making global git config changes +2026-07-05T01:36:48.2173986Z Adding repository directory to the temporary git global config as a safe directory +2026-07-05T01:36:48.2176598Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/cascade/cascade +2026-07-05T01:36:48.2211277Z Removing SSH command configuration +2026-07-05T01:36:48.2216965Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2026-07-05T01:36:48.2252184Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2026-07-05T01:36:48.2488832Z Removing HTTP extra header +2026-07-05T01:36:48.2494606Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2026-07-05T01:36:48.2531124Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2026-07-05T01:36:48.2764234Z Removing includeIf entries pointing to credentials config files +2026-07-05T01:36:48.2770594Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: +2026-07-05T01:36:48.2799268Z includeif.gitdir:/home/runner/work/cascade/cascade/.git.path +2026-07-05T01:36:48.2799968Z includeif.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path +2026-07-05T01:36:48.2801061Z includeif.gitdir:/github/workspace/.git.path +2026-07-05T01:36:48.2801658Z includeif.gitdir:/github/workspace/.git/worktrees/*.path +2026-07-05T01:36:48.2808039Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/cascade/cascade/.git.path +2026-07-05T01:36:48.2830870Z /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.2840484Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/cascade/cascade/.git.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.2874963Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path +2026-07-05T01:36:48.2899289Z /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.2909167Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.2943264Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git.path +2026-07-05T01:36:48.2965950Z /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.2974297Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.3011973Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git/worktrees/*.path +2026-07-05T01:36:48.3037142Z /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.3043862Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config +2026-07-05T01:36:48.3079137Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url +2026-07-05T01:36:48.3324328Z Removing credentials config '/home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config' +2026-07-05T01:36:48.3492208Z Cleaning up orphan processes diff --git a/.github/workflows/__tests__/pin-guard.test.js b/.github/workflows/__tests__/pin-guard.test.js new file mode 100644 index 00000000..ba9eb39f --- /dev/null +++ b/.github/workflows/__tests__/pin-guard.test.js @@ -0,0 +1,90 @@ +// Unit test for the PR Failure Report companion's pure log helpers +// (parsePinGuard and extractFailRegion) that live inline in the +// drift-comment.yaml github-script step. +// +// The companion only runs from the base repo on a workflow_run completion, so +// its behavior cannot be exercised from a branch PR. This test proves the +// helpers locally instead: it extracts the exact shipped source between the +// `pure-helpers-start`/`pure-helpers-end` sentinels (so there is no forked +// copy to drift), then runs it against a REAL failing "Unit Tests" job log +// captured from the action-pins guard trip run (PR #452, run 28725833923). +// +// Regression it guards: the failure region (the guard signature and its +// want/got rows) prints in the MIDDLE of the job log; the last lines are +// post-job git-config cleanup ending at "Cleaning up orphan processes". The +// prior extraction tailed the last 30 lines, so parsePinGuard never saw the +// signature and the manifest remediation was silently dropped. +// +// Run: node --test .github/workflows/__tests__/pin-guard.test.js + +const test = require('node:test'); +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const path = require('node:path'); +const vm = require('node:vm'); + +const workflowPath = path.join(__dirname, '..', 'drift-comment.yaml'); +const fixturePath = path.join(__dirname, 'fixtures', 'unit-tests-pin-guard-fail.log'); + +// Extract the pure-helper source verbatim from the workflow and evaluate it in +// an isolated context, returning { parsePinGuard, extractFailRegion }. +function loadHelpers() { + const yaml = fs.readFileSync(workflowPath, 'utf8'); + const start = yaml.indexOf('pure-helpers-start'); + const end = yaml.indexOf('pure-helpers-end'); + assert.ok(start !== -1 && end !== -1 && end > start, + 'pure-helper sentinels must bracket the shipped source'); + // Slice the lines strictly between the two sentinel lines and strip the + // uniform YAML block indentation so the JS parses standalone. + const block = yaml.slice(start, end).split('\n').slice(1, -1); + const dedented = block + .map((l) => l.replace(/^\s{12}/, '')) + .join('\n'); + const src = `${dedented}\n;({ parsePinGuard, extractFailRegion });`; + return vm.runInNewContext(src, {}); +} + +const { parsePinGuard, extractFailRegion } = loadHelpers(); +const log = fs.readFileSync(fixturePath, 'utf8'); + +// The manifest's canonical checkout SHA and the corrupted "got" SHA the trip +// introduced. parsePinGuard adopts the governed "got" value. +const GOT_SHA = '9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc'; + +test('parsePinGuard extracts the manifest remediation from the full log', () => { + const edits = parsePinGuard(log); + assert.ok(edits, 'guard signature + rows must be found in the full log'); + assert.ok(edits.has('actions/checkout'), 'must name the divergent action'); + const entry = edits.get('actions/checkout'); + assert.equal(entry.sha, GOT_SHA, 'adopts the governed got SHA'); + // The clean governed row wins over the bracketed anchor row, so no stray + // punctuation leaks into the emitted remediation. + assert.equal(entry.version, 'v7.0.0'); +}); + +test('extractFailRegion lands on the failing test output, not the cleanup tail', () => { + const region = extractFailRegion(log); + assert.match(region, /--- FAIL/, 'region must include the FAIL marker'); + assert.match(region, /want \S+ # \S+ got \S+/, 'region must include a want/got row'); + assert.doesNotMatch(region, /Cleaning up orphan processes/, + 'region must not be the post-job cleanup tail'); + // The display region alone is now rich enough to yield the remediation. + assert.ok(parsePinGuard(region), 'the failure region must itself parse'); +}); + +test('regression: the old last-30-lines tail missed the guard entirely', () => { + const oldTail = log + .split('\n') + .filter((l) => l.trim().length > 0) + .slice(-30) + .join('\n'); + assert.match(oldTail, /Cleaning up orphan processes/, + 'the trailing region is git-config cleanup, as observed live'); + assert.equal(parsePinGuard(oldTail), null, + 'the prior extraction produced no remediation - the bug under fix'); +}); + +test('extractFailRegion falls back to the trailing lines without a signature', () => { + const plain = 'line one\nline two\nline three'; + assert.equal(extractFailRegion(plain), plain); +}); diff --git a/.github/workflows/drift-comment.yaml b/.github/workflows/drift-comment.yaml index aadf1d35..264ce357 100644 --- a/.github/workflows/drift-comment.yaml +++ b/.github/workflows/drift-comment.yaml @@ -119,6 +119,7 @@ jobs: return `${ticks}\n${t}\n${ticks}`; }; + // ----- pure-helpers-start (extracted verbatim by the node unit test) ----- // Detect the action-pins consistency-guard failure and parse the exact // manifest edit from its "file:line action want # got // # " rows. The fix adopts each governed "got" value (the bumped @@ -138,16 +139,46 @@ jobs: return edits.size > 0 ? edits : null; }; - // Last ~30 non-empty lines of a failed job's log. - const logTail = async (jobId) => { + // Extract the failure-relevant slice of a job log for display. A Go + // test failure (and its want/got rows) prints in the MIDDLE of the log; + // the trailing lines are post-job git-config and credential cleanup that + // end at "Cleaning up orphan processes". Anchoring on the first failure + // signature and windowing forward keeps the region on the failing test + // output instead of that cleanup tail. Falls back to the trailing lines + // when no signature is present (a non-test failure). + const extractFailRegion = (text) => { + const lines = String(text || '').split('\n'); + const signatures = [ + '--- FAIL', + 'governed uses: refs diverge from internal/generate/action_pins.yaml', + 'dependabot anchor refs diverge from action_pins.yaml', + '\tFAIL\t', + ]; + let anchor = -1; + for (let i = 0; i < lines.length; i += 1) { + if (signatures.some((s) => lines[i].includes(s))) { anchor = i; break; } + } + const nonEmpty = (arr) => arr.filter((l) => l.trim().length > 0); + if (anchor < 0) { + return nonEmpty(lines).slice(-30).join('\n'); + } + const start = Math.max(0, anchor - 5); + return nonEmpty(lines.slice(start)).slice(0, 60).join('\n'); + }; + // ----- pure-helpers-end ----- + + // Download a failed job's log once. Returns the full decoded text (for + // signature parsing, never rendered) plus a bounded, failure-anchored + // region for display. + const logFor = async (jobId) => { try { const res = await github.rest.actions.downloadJobLogsForWorkflowRun({ owner, repo, job_id: jobId, }); - const lines = String(res.data || '').split('\n').filter((l) => l.trim().length > 0); - return lines.slice(-30).join('\n'); + const full = String(res.data || ''); + return { full, region: extractFailRegion(full) }; } catch (e) { - return ''; + return { full: '', region: '' }; } }; @@ -242,17 +273,20 @@ jobs: const failingStep = (job.steps || []).find((s) => s.conclusion === 'failure'); const annText = await annotationsFor(job.id); - const tail = await logTail(job.id); - const scan = `${annText}\n${tail}`; - pinEdits = pinEdits || parsePinGuard(scan); + const jobLog = await logFor(job.id); + // Parse the pin guard against the FULL log, not the display region: + // the guard signature and its want/got rows print in the middle of + // the log, so a trailing slice would miss them and drop the manifest + // remediation entirely. + pinEdits = pinEdits || parsePinGuard(`${annText}\n${jobLog.full}`); const parts = [`### Job: ${job.name}`]; if (failingStep) { parts.push('', `Failing step: ${failingStep.name}`); } if (annText) { parts.push('', 'Annotations:', '', fence(annText)); } - if (tail) { - parts.push('', '
log tail', '', fence(tail), '', '
'); + if (jobLog.region) { + parts.push('', '
log tail', '', fence(jobLog.region), '', '
'); } if (job.html_url) { parts.push('', `[Full job log](${job.html_url})`); } sections.push(parts.join('\n')); From 95a38778d874eb7727e38976061ee3e5ac838cce Mon Sep 17 00:00:00 2001 From: Joshua Temple Date: Sat, 4 Jul 2026 23:32:31 -0400 Subject: [PATCH 2/3] chore(ci): drop unwired node test from failure-report fix The pin-guard node test and its fixture were never wired into any CI job, so drop them along with the sentinel comments that existed only to support extracting the helper source for that test. The underlying fix (parsing the pin guard against the full job log and anchoring extractFailRegion on the failure signature) is unchanged. Signed-off-by: Joshua Temple --- .../fixtures/unit-tests-pin-guard-fail.log | 6218 ----------------- .github/workflows/__tests__/pin-guard.test.js | 90 - 2 files changed, 6308 deletions(-) delete mode 100644 .github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log delete mode 100644 .github/workflows/__tests__/pin-guard.test.js diff --git a/.github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log b/.github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log deleted file mode 100644 index 92f9a273..00000000 --- a/.github/workflows/__tests__/fixtures/unit-tests-pin-guard-fail.log +++ /dev/null @@ -1,6218 +0,0 @@ -2026-07-05T01:35:48.1793346Z Current runner version: '2.335.1' -2026-07-05T01:35:48.1818764Z ##[group]Runner Image Provisioner -2026-07-05T01:35:48.1819637Z Hosted Compute Agent -2026-07-05T01:35:48.1820632Z Version: 20260624.560 -2026-07-05T01:35:48.1821378Z Commit: 925d229a51159bc391ae97e54a2dd1fe20af789d -2026-07-05T01:35:48.1822127Z Build Date: 2026-06-24T18:26:47Z -2026-07-05T01:35:48.1822818Z Worker ID: {e3722a72-c67a-4016-9b2c-d923dff204aa} -2026-07-05T01:35:48.1823611Z Azure Region: eastus2 -2026-07-05T01:35:48.1824200Z ##[endgroup] -2026-07-05T01:35:48.1825813Z ##[group]Operating System -2026-07-05T01:35:48.1826611Z Ubuntu -2026-07-05T01:35:48.1827156Z 24.04.4 -2026-07-05T01:35:48.1827737Z LTS -2026-07-05T01:35:48.1828273Z ##[endgroup] -2026-07-05T01:35:48.1828867Z ##[group]Runner Image -2026-07-05T01:35:48.1829563Z Image: ubuntu-24.04 -2026-07-05T01:35:48.1830461Z Version: 20260628.225.1 -2026-07-05T01:35:48.1831772Z Included Software: https://github.com/actions/runner-images/blob/ubuntu24/20260628.225/images/ubuntu/Ubuntu2404-Readme.md -2026-07-05T01:35:48.1833340Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu24%2F20260628.225 -2026-07-05T01:35:48.1834352Z ##[endgroup] -2026-07-05T01:35:48.1835505Z ##[group]GITHUB_TOKEN Permissions -2026-07-05T01:35:48.1837894Z Contents: read -2026-07-05T01:35:48.1838686Z Metadata: read -2026-07-05T01:35:48.1839238Z ##[endgroup] -2026-07-05T01:35:48.1841660Z Secret source: Actions -2026-07-05T01:35:48.1842414Z Prepare workflow directory -2026-07-05T01:35:48.2260758Z Prepare all required actions -2026-07-05T01:35:48.2314036Z Getting action download info -2026-07-05T01:35:48.4592869Z Download action repository 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' (SHA:9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0) -2026-07-05T01:35:48.5318030Z Download action repository 'actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16' (SHA:924ae3a1cded613372ab5595356fb5720e22ba16) -2026-07-05T01:35:48.8394846Z Complete job name: Unit Tests -2026-07-05T01:35:48.9114377Z ##[group]Run actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 -2026-07-05T01:35:48.9115385Z with: -2026-07-05T01:35:48.9115821Z repository: stablekernel/cascade -2026-07-05T01:35:48.9119970Z token: *** -2026-07-05T01:35:48.9120822Z ssh-strict: true -2026-07-05T01:35:48.9121271Z ssh-user: git -2026-07-05T01:35:48.9121716Z persist-credentials: true -2026-07-05T01:35:48.9122213Z clean: true -2026-07-05T01:35:48.9122655Z sparse-checkout-cone-mode: true -2026-07-05T01:35:48.9123173Z fetch-depth: 1 -2026-07-05T01:35:48.9123600Z fetch-tags: false -2026-07-05T01:35:48.9124046Z show-progress: true -2026-07-05T01:35:48.9124489Z lfs: false -2026-07-05T01:35:48.9124893Z submodules: false -2026-07-05T01:35:48.9125331Z set-safe-directory: true -2026-07-05T01:35:48.9125840Z allow-unsafe-pr-checkout: false -2026-07-05T01:35:48.9126632Z ##[endgroup] -2026-07-05T01:35:49.0086793Z Syncing repository: stablekernel/cascade -2026-07-05T01:35:49.0089261Z ##[group]Getting Git version info -2026-07-05T01:35:49.0090240Z Working directory is '/home/runner/work/cascade/cascade' -2026-07-05T01:35:49.0091465Z [command]/usr/bin/git version -2026-07-05T01:35:49.0140930Z git version 2.54.0 -2026-07-05T01:35:49.0159790Z ##[endgroup] -2026-07-05T01:35:49.0170391Z Temporarily overriding HOME='/home/runner/work/_temp/2f6a9f23-9b4b-41ca-b04d-30eca3e5ebd1' before making global git config changes -2026-07-05T01:35:49.0172184Z Adding repository directory to the temporary git global config as a safe directory -2026-07-05T01:35:49.0174710Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/cascade/cascade -2026-07-05T01:35:49.0219096Z Deleting the contents of '/home/runner/work/cascade/cascade' -2026-07-05T01:35:49.0222589Z ##[group]Determining repository object format -2026-07-05T01:35:49.0224201Z ##[endgroup] -2026-07-05T01:35:49.0225157Z ##[group]Initializing the repository -2026-07-05T01:35:49.0228804Z [command]/usr/bin/git init /home/runner/work/cascade/cascade -2026-07-05T01:35:49.0331836Z hint: Using 'master' as the name for the initial branch. This default branch name -2026-07-05T01:35:49.0333580Z hint: will change to "main" in Git 3.0. To configure the initial branch name -2026-07-05T01:35:49.0334812Z hint: to use in all of your new repositories, which will suppress this warning, -2026-07-05T01:35:49.0335648Z hint: call: -2026-07-05T01:35:49.0336342Z hint: -2026-07-05T01:35:49.0337188Z hint: git config --global init.defaultBranch -2026-07-05T01:35:49.0338135Z hint: -2026-07-05T01:35:49.0338829Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and -2026-07-05T01:35:49.0340346Z hint: 'development'. The just-created branch can be renamed via this command: -2026-07-05T01:35:49.0341269Z hint: -2026-07-05T01:35:49.0341683Z hint: git branch -m -2026-07-05T01:35:49.0342331Z hint: -2026-07-05T01:35:49.0342947Z hint: Disable this message with "git config set advice.defaultBranchName false" -2026-07-05T01:35:49.0343941Z Initialized empty Git repository in /home/runner/work/cascade/cascade/.git/ -2026-07-05T01:35:49.0346775Z [command]/usr/bin/git remote add origin https://github.com/stablekernel/cascade -2026-07-05T01:35:49.0392433Z ##[endgroup] -2026-07-05T01:35:49.0393222Z ##[group]Disabling automatic garbage collection -2026-07-05T01:35:49.0395512Z [command]/usr/bin/git config --local gc.auto 0 -2026-07-05T01:35:49.0424848Z ##[endgroup] -2026-07-05T01:35:49.0425574Z ##[group]Setting up auth -2026-07-05T01:35:49.0426119Z Removing SSH command configuration -2026-07-05T01:35:49.0429618Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand -2026-07-05T01:35:49.0462522Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" -2026-07-05T01:35:49.0798874Z Removing HTTP extra header -2026-07-05T01:35:49.0803750Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader -2026-07-05T01:35:49.0834905Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" -2026-07-05T01:35:49.1058334Z Removing includeIf entries pointing to credentials config files -2026-07-05T01:35:49.1063779Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: -2026-07-05T01:35:49.1094238Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url -2026-07-05T01:35:49.1324366Z [command]/usr/bin/git config --file /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config http.https://github.com/.extraheader AUTHORIZATION: basic *** -2026-07-05T01:35:49.1361736Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/cascade/cascade/.git.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:35:49.1393225Z [command]/usr/bin/git config --local includeIf.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:35:49.1425031Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:35:49.1456875Z [command]/usr/bin/git config --local includeIf.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:35:49.1491240Z ##[endgroup] -2026-07-05T01:35:49.1492383Z ##[group]Fetching the repository -2026-07-05T01:35:49.1499181Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --no-recurse-submodules --depth=1 origin +b024238c620d93c491ab183cc6f7ec8f2963c356:refs/remotes/pull/452/merge -2026-07-05T01:35:49.6471432Z From https://github.com/stablekernel/cascade -2026-07-05T01:35:49.6473262Z * [new ref] b024238c620d93c491ab183cc6f7ec8f2963c356 -> pull/452/merge -2026-07-05T01:35:49.6515775Z ##[endgroup] -2026-07-05T01:35:49.6517009Z ##[group]Determining the checkout info -2026-07-05T01:35:49.6518343Z ##[endgroup] -2026-07-05T01:35:49.6519148Z [command]/usr/bin/git sparse-checkout disable -2026-07-05T01:35:49.6571087Z [command]/usr/bin/git config --local --unset-all extensions.worktreeConfig -2026-07-05T01:35:49.6602623Z ##[group]Checking out the ref -2026-07-05T01:35:49.6605553Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/452/merge -2026-07-05T01:35:49.7044423Z Note: switching to 'refs/remotes/pull/452/merge'. -2026-07-05T01:35:49.7045198Z -2026-07-05T01:35:49.7045756Z You are in 'detached HEAD' state. You can look around, make experimental -2026-07-05T01:35:49.7047401Z changes and commit them, and you can discard any commits you make in this -2026-07-05T01:35:49.7049276Z state without impacting any branches by switching back to a branch. -2026-07-05T01:35:49.7050550Z -2026-07-05T01:35:49.7051370Z If you want to create a new branch to retain commits you create, you may -2026-07-05T01:35:49.7053102Z do so (now or later) by using -c with the switch command. Example: -2026-07-05T01:35:49.7054128Z -2026-07-05T01:35:49.7054637Z git switch -c -2026-07-05T01:35:49.7055397Z -2026-07-05T01:35:49.7055924Z Or undo this operation with: -2026-07-05T01:35:49.7056709Z -2026-07-05T01:35:49.7057185Z git switch - -2026-07-05T01:35:49.7057807Z -2026-07-05T01:35:49.7059228Z Turn off this advice by setting config variable advice.detachedHead to false -2026-07-05T01:35:49.7060967Z -2026-07-05T01:35:49.7062531Z HEAD is now at b024238 Merge c364f954dd1815e62e72600d98bc1ae919d95e06 into a6d6bd696e35d2ac0af607ed555c868a34daf22e -2026-07-05T01:35:49.7067068Z ##[endgroup] -2026-07-05T01:35:49.7098362Z [command]/usr/bin/git log -1 --format=%H -2026-07-05T01:35:49.7123727Z b024238c620d93c491ab183cc6f7ec8f2963c356 -2026-07-05T01:35:49.7468338Z ##[group]Run actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 -2026-07-05T01:35:49.7469845Z with: -2026-07-05T01:35:49.7470976Z go-version-file: go.mod -2026-07-05T01:35:49.7471996Z cache: true -2026-07-05T01:35:49.7472925Z check-latest: false -2026-07-05T01:35:49.7482092Z token: *** -2026-07-05T01:35:49.7483020Z ##[endgroup] -2026-07-05T01:35:49.8746799Z Setup go version spec 1.26.4 -2026-07-05T01:35:49.8773335Z Found in cache @ /opt/hostedtoolcache/go/1.26.4/x64 -2026-07-05T01:35:49.8775327Z Added go to the path -2026-07-05T01:35:49.8779049Z Successfully set up Go version 1.26.4 -2026-07-05T01:35:50.5839793Z [command]/opt/hostedtoolcache/go/1.26.4/x64/bin/go env GOMODCACHE -2026-07-05T01:35:50.5881025Z [command]/opt/hostedtoolcache/go/1.26.4/x64/bin/go env GOCACHE -2026-07-05T01:35:50.5897914Z /home/runner/go/pkg/mod -2026-07-05T01:35:50.5920930Z /home/runner/.cache/go-build -2026-07-05T01:35:50.6643259Z Cache hit for: setup-go-Linux-x64-ubuntu24-go-1.26.4-8ecf01efaeac13250b9a827ef268af101e565dba8eab4caab864655d9c9788af -2026-07-05T01:35:51.0261803Z Received 47820336 of 47820336 (100.0%), 151.5 MBs/sec -2026-07-05T01:35:51.0263579Z Cache Size: ~46 MB (47820336 B) -2026-07-05T01:35:51.0297459Z [command]/usr/bin/tar -xf /home/runner/work/_temp/3c60a08c-9816-49e6-a574-8203a53bacc0/cache.tzst -P -C /home/runner/work/cascade/cascade --use-compress-program unzstd -2026-07-05T01:35:51.4322324Z Cache restored successfully -2026-07-05T01:35:51.4361444Z Cache restored from key: setup-go-Linux-x64-ubuntu24-go-1.26.4-8ecf01efaeac13250b9a827ef268af101e565dba8eab4caab864655d9c9788af -2026-07-05T01:35:51.4387386Z go version go1.26.4 linux/amd64 -2026-07-05T01:35:51.4387630Z -2026-07-05T01:35:51.4388046Z ##[group]go env -2026-07-05T01:35:51.4729468Z AR='ar' -2026-07-05T01:35:51.4729933Z CC='gcc' -2026-07-05T01:35:51.4730528Z CGO_CFLAGS='-O2 -g' -2026-07-05T01:35:51.4730869Z CGO_CPPFLAGS='' -2026-07-05T01:35:51.4731207Z CGO_CXXFLAGS='-O2 -g' -2026-07-05T01:35:51.4731566Z CGO_ENABLED='1' -2026-07-05T01:35:51.4731976Z CGO_FFLAGS='-O2 -g' -2026-07-05T01:35:51.4732321Z CGO_LDFLAGS='-O2 -g' -2026-07-05T01:35:51.4732651Z CXX='g++' -2026-07-05T01:35:51.4732957Z GCCGO='gccgo' -2026-07-05T01:35:51.4733656Z GO111MODULE='' -2026-07-05T01:35:51.4733957Z GOAMD64='v1' -2026-07-05T01:35:51.4734320Z GOARCH='amd64' -2026-07-05T01:35:51.4734631Z GOAUTH='netrc' -2026-07-05T01:35:51.4734921Z GOBIN='' -2026-07-05T01:35:51.4735245Z GOCACHE='/home/runner/.cache/go-build' -2026-07-05T01:35:51.4735695Z GOCACHEPROG='' -2026-07-05T01:35:51.4736024Z GODEBUG='' -2026-07-05T01:35:51.4736353Z GOENV='/home/runner/.config/go/env' -2026-07-05T01:35:51.4736746Z GOEXE='' -2026-07-05T01:35:51.4737030Z GOEXPERIMENT='' -2026-07-05T01:35:51.4737368Z GOFIPS140='off' -2026-07-05T01:35:51.4737683Z GOFLAGS='' -2026-07-05T01:35:51.4738769Z GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build591313320=/tmp/go-build -gno-record-gcc-switches' -2026-07-05T01:35:51.4739779Z GOHOSTARCH='amd64' -2026-07-05T01:35:51.4740312Z GOHOSTOS='linux' -2026-07-05T01:35:51.4740639Z GOINSECURE='' -2026-07-05T01:35:51.4741037Z GOMOD='/home/runner/work/cascade/cascade/go.mod' -2026-07-05T01:35:51.4741522Z GOMODCACHE='/home/runner/go/pkg/mod' -2026-07-05T01:35:51.4741950Z GONOPROXY='' -2026-07-05T01:35:51.4742252Z GONOSUMDB='' -2026-07-05T01:35:51.4742545Z GOOS='linux' -2026-07-05T01:35:51.4742880Z GOPATH='/home/runner/go' -2026-07-05T01:35:51.4743239Z GOPRIVATE='' -2026-07-05T01:35:51.4743685Z GOPROXY='https://proxy.golang.org,direct' -2026-07-05T01:35:51.4744257Z GOROOT='/opt/hostedtoolcache/go/1.26.4/x64' -2026-07-05T01:35:51.4744710Z GOSUMDB='sum.golang.org' -2026-07-05T01:35:51.4745080Z GOTELEMETRY='local' -2026-07-05T01:35:51.4745488Z GOTELEMETRYDIR='/home/runner/.config/go/telemetry' -2026-07-05T01:35:51.4745990Z GOTMPDIR='' -2026-07-05T01:35:51.4746294Z GOTOOLCHAIN='local' -2026-07-05T01:35:51.4746778Z GOTOOLDIR='/opt/hostedtoolcache/go/1.26.4/x64/pkg/tool/linux_amd64' -2026-07-05T01:35:51.4747327Z GOVCS='' -2026-07-05T01:35:51.4747622Z GOVERSION='go1.26.4' -2026-07-05T01:35:51.4748200Z GOWORK='' -2026-07-05T01:35:51.4748509Z PKG_CONFIG='pkg-config' -2026-07-05T01:35:51.4748746Z -2026-07-05T01:35:51.4749298Z ##[endgroup] -2026-07-05T01:35:51.4922997Z ##[group]Run go list ./... | grep -v /e2e \ -2026-07-05T01:35:51.4923432Z go list ./... | grep -v /e2e \ -2026-07-05T01:35:51.4923856Z  | xargs go test -v -race -coverprofile=coverage.out -2026-07-05T01:35:51.5065239Z shell: /usr/bin/bash -e {0} -2026-07-05T01:35:51.5065541Z env: -2026-07-05T01:35:51.5065761Z GOTOOLCHAIN: local -2026-07-05T01:35:51.5066012Z ##[endgroup] -2026-07-05T01:35:51.7561883Z go: downloading github.com/stretchr/testify v1.11.1 -2026-07-05T01:35:51.7715083Z go: downloading github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 -2026-07-05T01:35:51.9135434Z go: downloading golang.org/x/text v0.14.0 -2026-07-05T01:35:51.9427988Z go: downloading github.com/davecgh/go-spew v1.1.1 -2026-07-05T01:36:24.8361402Z === RUN TestVersionCommand -2026-07-05T01:36:24.8378909Z --- PASS: TestVersionCommand (0.00s) -2026-07-05T01:36:24.8410922Z === RUN TestHelpCommand -2026-07-05T01:36:24.8440524Z --- PASS: TestHelpCommand (0.00s) -2026-07-05T01:36:24.8450791Z === RUN TestParseConfigCommand -2026-07-05T01:36:24.8470807Z --- PASS: TestParseConfigCommand (0.00s) -2026-07-05T01:36:24.8551029Z === RUN TestParseConfigCommand_InvalidConfig -2026-07-05T01:36:24.8560754Z --- PASS: TestParseConfigCommand_InvalidConfig (0.00s) -2026-07-05T01:36:24.8580713Z === RUN TestParseConfigCommand_FileNotFound -2026-07-05T01:36:24.8601796Z --- PASS: TestParseConfigCommand_FileNotFound (0.00s) -2026-07-05T01:36:24.8620453Z === RUN TestDetectChangesCommand_MissingFlags -2026-07-05T01:36:24.8640532Z --- PASS: TestDetectChangesCommand_MissingFlags (0.00s) -2026-07-05T01:36:24.8670793Z === RUN TestGenerateChangelogCommand_MissingFlags -2026-07-05T01:36:24.8680878Z --- PASS: TestGenerateChangelogCommand_MissingFlags (0.00s) -2026-07-05T01:36:24.8710438Z === RUN TestUnknownCommand -2026-07-05T01:36:24.8730604Z --- PASS: TestUnknownCommand (0.00s) -2026-07-05T01:36:24.8760797Z === RUN TestGraphCommand_EmitsMermaid -2026-07-05T01:36:24.8770843Z --- PASS: TestGraphCommand_EmitsMermaid (0.00s) -2026-07-05T01:36:24.8790509Z === RUN TestGraphCommand_JSONWrapsDiagram -2026-07-05T01:36:24.8820500Z --- PASS: TestGraphCommand_JSONWrapsDiagram (0.00s) -2026-07-05T01:36:24.8830797Z === RUN TestGraphCommand_RejectsUnknownFormat -2026-07-05T01:36:24.8831413Z --- PASS: TestGraphCommand_RejectsUnknownFormat (0.00s) -2026-07-05T01:36:24.8831987Z === RUN TestGraphCommand_MissingManifest -2026-07-05T01:36:24.8832521Z --- PASS: TestGraphCommand_MissingManifest (0.00s) -2026-07-05T01:36:24.8833142Z === RUN TestGraphCommand_EnvGranularityEmitsStateMachine -2026-07-05T01:36:24.8833908Z --- PASS: TestGraphCommand_EnvGranularityEmitsStateMachine (0.00s) -2026-07-05T01:36:24.8834639Z === RUN TestGraphCommand_StagesGranularityEmitsFlowchart -2026-07-05T01:36:24.8835338Z --- PASS: TestGraphCommand_StagesGranularityEmitsFlowchart (0.00s) -2026-07-05T01:36:24.8835959Z === RUN TestStatusCommand_AllEnvs -2026-07-05T01:36:24.8836426Z --- PASS: TestStatusCommand_AllEnvs (0.00s) -2026-07-05T01:36:24.8836953Z === RUN TestStatusCommand_AllEnvs_JSON -2026-07-05T01:36:24.8837483Z --- PASS: TestStatusCommand_AllEnvs_JSON (0.00s) -2026-07-05T01:36:24.8838056Z === RUN TestStatusCommand_EnvSubcommand -2026-07-05T01:36:24.8842040Z --- PASS: TestStatusCommand_EnvSubcommand (0.00s) -2026-07-05T01:36:24.8842758Z === RUN TestStatusCommand_EnvSubcommand_JSON -2026-07-05T01:36:24.8843612Z --- PASS: TestStatusCommand_EnvSubcommand_JSON (0.00s) -2026-07-05T01:36:24.8844143Z === RUN TestStatusCommand_BuildSubcommand -2026-07-05T01:36:24.8844681Z --- PASS: TestStatusCommand_BuildSubcommand (0.00s) -2026-07-05T01:36:24.8845253Z === RUN TestStatusCommand_BuildSubcommand_JSON -2026-07-05T01:36:24.8845829Z --- PASS: TestStatusCommand_BuildSubcommand_JSON (0.00s) -2026-07-05T01:36:24.8846391Z === RUN TestStatusCommand_DeploySubcommand -2026-07-05T01:36:24.8846874Z --- PASS: TestStatusCommand_DeploySubcommand (0.00s) -2026-07-05T01:36:24.8847497Z === RUN TestStatusCommand_DeploySubcommand_JSON -2026-07-05T01:36:24.8883156Z --- PASS: TestStatusCommand_DeploySubcommand_JSON (0.00s) -2026-07-05T01:36:24.8883941Z === RUN TestStatusCommand_EmptyState_NoPanic -2026-07-05T01:36:24.8884544Z --- PASS: TestStatusCommand_EmptyState_NoPanic (0.00s) -2026-07-05T01:36:24.8885119Z === RUN TestStatusCommand_MissingManifest -2026-07-05T01:36:24.8885676Z --- PASS: TestStatusCommand_MissingManifest (0.00s) -2026-07-05T01:36:24.8886256Z === RUN TestStatusCommand_BuildMissingEnvFlag -2026-07-05T01:36:24.8886845Z --- PASS: TestStatusCommand_BuildMissingEnvFlag (0.00s) -2026-07-05T01:36:24.8887443Z === RUN TestStatusCommand_DeployMissingEnvFlag -2026-07-05T01:36:24.8888045Z --- PASS: TestStatusCommand_DeployMissingEnvFlag (0.00s) -2026-07-05T01:36:24.8888675Z === RUN TestStatusCommand_Consistency_JSON -2026-07-05T01:36:24.8889609Z --- PASS: TestStatusCommand_Consistency_JSON (0.39s) -2026-07-05T01:36:24.8890425Z === RUN TestStatusCommand_Consistency_HumanReadable -2026-07-05T01:36:24.8891077Z --- PASS: TestStatusCommand_Consistency_HumanReadable (0.16s) -2026-07-05T01:36:24.8891813Z === RUN TestGenerateWorkflow_Output_WritesCustomOrchestratePath -2026-07-05T01:36:24.8892636Z --- PASS: TestGenerateWorkflow_Output_WritesCustomOrchestratePath (0.01s) -2026-07-05T01:36:24.8893471Z === RUN TestGenerateWorkflow_PromoteOutput_WritesCustomPromotePath -2026-07-05T01:36:24.8894314Z --- PASS: TestGenerateWorkflow_PromoteOutput_WritesCustomPromotePath (0.02s) -2026-07-05T01:36:24.8895102Z === RUN TestGenerateWorkflow_OrchestrateOnly_OmitsPromote -2026-07-05T01:36:24.8895833Z --- PASS: TestGenerateWorkflow_OrchestrateOnly_OmitsPromote (0.02s) -2026-07-05T01:36:24.8896571Z === RUN TestGenerateWorkflow_PromoteOnly_OmitsOrchestrate -2026-07-05T01:36:24.8897281Z --- PASS: TestGenerateWorkflow_PromoteOnly_OmitsOrchestrate (0.01s) -2026-07-05T01:36:24.8898044Z === RUN TestGenerateWorkflow_ActionFolder_NamesCompositeActionDir -2026-07-05T01:36:24.8898906Z --- PASS: TestGenerateWorkflow_ActionFolder_NamesCompositeActionDir (0.02s) -2026-07-05T01:36:24.8899688Z === RUN TestVersionCommand_ContainsVersionString -2026-07-05T01:36:24.8900813Z --- PASS: TestVersionCommand_ContainsVersionString (0.01s) -2026-07-05T01:36:24.8901448Z === RUN TestSchemaCommand_EmitsEmbeddedJSONSchema -2026-07-05T01:36:24.8902080Z --- PASS: TestSchemaCommand_EmitsEmbeddedJSONSchema (0.03s) -2026-07-05T01:36:24.8902799Z === RUN TestBranchProtectionCommand_EmitsProtectionAndOperatorTodo -2026-07-05T01:36:24.8913575Z --- PASS: TestBranchProtectionCommand_EmitsProtectionAndOperatorTodo (0.02s) -2026-07-05T01:36:24.8914721Z === RUN TestVerifyCommand_QuietClean_NoStdoutExitZero -2026-07-05T01:36:24.8915545Z --- PASS: TestVerifyCommand_QuietClean_NoStdoutExitZero (0.09s) -2026-07-05T01:36:24.8916473Z === RUN TestVerifyCommand_QuietDrift_NoReportBodyExitNonZero -2026-07-05T01:36:24.8917405Z --- PASS: TestVerifyCommand_QuietDrift_NoReportBodyExitNonZero (0.01s) -2026-07-05T01:36:24.8918200Z === RUN TestGraphCommand_BlandThemeStylesNodes -2026-07-05T01:36:24.8918990Z --- PASS: TestGraphCommand_BlandThemeStylesNodes (0.01s) -2026-07-05T01:36:24.8919797Z === RUN TestGraphCommand_CustomThemeFileStylesNodes -2026-07-05T01:36:24.8920691Z --- PASS: TestGraphCommand_CustomThemeFileStylesNodes (0.01s) -2026-07-05T01:36:24.8921495Z === RUN TestGraphCommand_MalformedThemeFileErrors -2026-07-05T01:36:24.8922281Z --- PASS: TestGraphCommand_MalformedThemeFileErrors (0.01s) -2026-07-05T01:36:24.8923073Z === RUN TestSimulateCommand_PromoteEmitsDiffAndEffects -2026-07-05T01:36:24.8923898Z --- PASS: TestSimulateCommand_PromoteEmitsDiffAndEffects (0.01s) -2026-07-05T01:36:24.8924776Z === RUN TestSimulateCommand_PromoteJSONMatchesHumanRender -2026-07-05T01:36:24.8925661Z --- PASS: TestSimulateCommand_PromoteJSONMatchesHumanRender (0.02s) -2026-07-05T01:36:24.8926485Z === RUN TestSimulateCommand_DeployResultGatesFinalize -2026-07-05T01:36:24.8927255Z --- PASS: TestSimulateCommand_DeployResultGatesFinalize (0.01s) -2026-07-05T01:36:24.8928085Z === RUN TestSimulateCommand_RollbackEmitsRevert -2026-07-05T01:36:24.8928816Z --- PASS: TestSimulateCommand_RollbackEmitsRevert (0.01s) -2026-07-05T01:36:24.8930146Z === RUN TestSimulateCommand_RollbackMissingEnv -2026-07-05T01:36:24.8930956Z --- PASS: TestSimulateCommand_RollbackMissingEnv (0.01s) -2026-07-05T01:36:24.8931689Z === RUN TestSimulateCommand_HotfixMissingEnv -2026-07-05T01:36:24.8932426Z --- PASS: TestSimulateCommand_HotfixMissingEnv (0.01s) -2026-07-05T01:36:24.8932918Z PASS -2026-07-05T01:36:24.8933425Z coverage: 0.0% of statements -2026-07-05T01:36:24.8934274Z ok github.com/stablekernel/cascade/cmd/cascade 6.473s coverage: 0.0% of statements -2026-07-05T01:36:24.8935172Z === RUN TestCommand_Apply_PutsProtectionBody -2026-07-05T01:36:24.8935907Z --- PASS: TestCommand_Apply_PutsProtectionBody (0.01s) -2026-07-05T01:36:24.8936700Z === RUN TestCommand_Apply_SurfacesForbidden -2026-07-05T01:36:24.8937420Z --- PASS: TestCommand_Apply_SurfacesForbidden (0.00s) -2026-07-05T01:36:24.8938107Z === RUN TestCommand_Apply_RequiresToken -2026-07-05T01:36:24.8938644Z --- PASS: TestCommand_Apply_RequiresToken (0.00s) -2026-07-05T01:36:24.8939365Z === RUN TestCommand_Apply_RequiresRepo -2026-07-05T01:36:24.8940309Z --- PASS: TestCommand_Apply_RequiresRepo (0.00s) -2026-07-05T01:36:24.8940844Z === RUN TestCommand_NoApply_MakesNoRequest -2026-07-05T01:36:24.8941543Z --- PASS: TestCommand_NoApply_MakesNoRequest (0.00s) -2026-07-05T01:36:24.8942221Z === RUN TestCommand_EmitsSafePayloadToStdout -2026-07-05T01:36:24.8942802Z --- PASS: TestCommand_EmitsSafePayloadToStdout (0.00s) -2026-07-05T01:36:24.8943357Z === RUN TestCommand_WritesToOutputFile -2026-07-05T01:36:24.8943863Z --- PASS: TestCommand_WritesToOutputFile (0.00s) -2026-07-05T01:36:24.8944438Z === RUN TestBuild_Contexts_MatchGeneratorSafeChecks -2026-07-05T01:36:24.8945088Z --- PASS: TestBuild_Contexts_MatchGeneratorSafeChecks (0.00s) -2026-07-05T01:36:24.8945694Z === RUN TestBuild_Safety_NoBareDisplayNameRequired -2026-07-05T01:36:24.8946300Z --- PASS: TestBuild_Safety_NoBareDisplayNameRequired (0.00s) -2026-07-05T01:36:24.8946910Z === RUN TestBuild_NoCallbacks_EmptyTodoStable -2026-07-05T01:36:24.8947769Z --- PASS: TestBuild_NoCallbacks_EmptyTodoStable (0.00s) -2026-07-05T01:36:24.8948342Z === RUN TestMarshal_Deterministic -2026-07-05T01:36:24.8948822Z --- PASS: TestMarshal_Deterministic (0.00s) -2026-07-05T01:36:24.8949319Z === RUN TestMarshal_RoundTrips -2026-07-05T01:36:24.8949769Z --- PASS: TestMarshal_RoundTrips (0.00s) -2026-07-05T01:36:24.8950405Z === RUN TestBuild_DefaultsWellFormed -2026-07-05T01:36:24.8950909Z --- PASS: TestBuild_DefaultsWellFormed (0.00s) -2026-07-05T01:36:24.8951445Z === RUN TestMarshal_RestrictionsNullPresent -2026-07-05T01:36:24.8952006Z --- PASS: TestMarshal_RestrictionsNullPresent (0.00s) -2026-07-05T01:36:24.8952489Z PASS -2026-07-05T01:36:24.8952804Z coverage: 83.5% of statements -2026-07-05T01:36:24.8953602Z ok github.com/stablekernel/cascade/internal/branchprotection 1.083s coverage: 83.5% of statements -2026-07-05T01:36:24.8954454Z === RUN TestChangelogNewCommand_Structure -2026-07-05T01:36:24.8955012Z --- PASS: TestChangelogNewCommand_Structure (0.00s) -2026-07-05T01:36:24.8955626Z === RUN TestChangelogNewCommand_RunE_EmptySHARange -2026-07-05T01:36:24.8956106Z { -2026-07-05T01:36:24.8956416Z "changelog": "", -2026-07-05T01:36:24.8956783Z "has_breaking": false, -2026-07-05T01:36:24.8957189Z "has_features": false, -2026-07-05T01:36:24.8957564Z "has_fixes": false -2026-07-05T01:36:24.8957880Z } -2026-07-05T01:36:24.8958392Z --- PASS: TestChangelogNewCommand_RunE_EmptySHARange (0.01s) -2026-07-05T01:36:24.8959047Z === RUN TestChangelogNewCommand_RunE_WithExcludePaths -2026-07-05T01:36:24.8959555Z { -2026-07-05T01:36:24.8959865Z "changelog": "", -2026-07-05T01:36:24.8960609Z "has_breaking": false, -2026-07-05T01:36:24.8961191Z "has_features": false, -2026-07-05T01:36:24.8961566Z "has_fixes": false -2026-07-05T01:36:24.8962055Z } -2026-07-05T01:36:24.8962506Z --- PASS: TestChangelogNewCommand_RunE_WithExcludePaths (0.03s) -2026-07-05T01:36:24.8963326Z === RUN TestChangelogNewCommand_RunE_WithContributors -2026-07-05T01:36:24.8963944Z { -2026-07-05T01:36:24.8964642Z "changelog": "", -2026-07-05T01:36:24.8965040Z "has_breaking": false, -2026-07-05T01:36:24.8969731Z "has_features": false, -2026-07-05T01:36:24.8970324Z "has_fixes": false -2026-07-05T01:36:24.8970654Z } -2026-07-05T01:36:24.8971125Z --- PASS: TestChangelogNewCommand_RunE_WithContributors (0.01s) -2026-07-05T01:36:24.8972009Z === RUN TestChangelogNewCommand_MissingRequiredFlags -2026-07-05T01:36:24.8972666Z --- PASS: TestChangelogNewCommand_MissingRequiredFlags (0.00s) -2026-07-05T01:36:24.8973303Z === RUN TestLookupAuthorsBatch_EmptyEmails -2026-07-05T01:36:24.8973767Z --- PASS: TestLookupAuthorsBatch_EmptyEmails (0.00s) -2026-07-05T01:36:24.8974673Z === RUN TestLookupAuthorsBatch_EmptyEmailSlice -2026-07-05T01:36:24.8975285Z --- PASS: TestLookupAuthorsBatch_EmptyEmailSlice (0.00s) -2026-07-05T01:36:24.8980591Z === RUN TestLookupAuthorsBatch_InvalidRepoFormat -2026-07-05T01:36:24.8981239Z --- PASS: TestLookupAuthorsBatch_InvalidRepoFormat (0.00s) -2026-07-05T01:36:24.8981900Z === RUN TestUnmarshalJSON_InvalidEntrySkipped -2026-07-05T01:36:24.8996243Z --- PASS: TestUnmarshalJSON_InvalidEntrySkipped (0.00s) -2026-07-05T01:36:24.8996916Z === RUN TestUnmarshalJSON_TopLevelError -2026-07-05T01:36:24.8997479Z --- PASS: TestUnmarshalJSON_TopLevelError (0.00s) -2026-07-05T01:36:24.8998123Z === RUN TestLookupConventionalCommitUsernames_WithCommits -2026-07-05T01:36:24.8998882Z --- PASS: TestLookupConventionalCommitUsernames_WithCommits (0.35s) -2026-07-05T01:36:24.8999604Z === RUN TestLookupGitHubUsernames_InvalidRepoFormat -2026-07-05T01:36:24.9000410Z --- PASS: TestLookupGitHubUsernames_InvalidRepoFormat (0.00s) -2026-07-05T01:36:24.9001029Z === RUN TestLookupGitHubUsernames_EmptyInputs -2026-07-05T01:36:24.9001664Z === RUN TestLookupGitHubUsernames_EmptyInputs/empty_commits -2026-07-05T01:36:24.9002349Z === RUN TestLookupGitHubUsernames_EmptyInputs/nil_commits -2026-07-05T01:36:24.9003005Z === RUN TestLookupGitHubUsernames_EmptyInputs/empty_repo -2026-07-05T01:36:24.9003657Z --- PASS: TestLookupGitHubUsernames_EmptyInputs (0.00s) -2026-07-05T01:36:24.9004792Z --- PASS: TestLookupGitHubUsernames_EmptyInputs/empty_commits (0.00s) -2026-07-05T01:36:24.9005717Z --- PASS: TestLookupGitHubUsernames_EmptyInputs/nil_commits (0.00s) -2026-07-05T01:36:24.9006615Z --- PASS: TestLookupGitHubUsernames_EmptyInputs/empty_repo (0.00s) -2026-07-05T01:36:24.9007331Z === RUN TestLookupGitHubUsernames_DeduplicationByEmail -2026-07-05T01:36:24.9008043Z --- PASS: TestLookupGitHubUsernames_DeduplicationByEmail (0.00s) -2026-07-05T01:36:24.9008677Z === RUN TestGraphQLResponseUnmarshal -2026-07-05T01:36:24.9009201Z --- PASS: TestGraphQLResponseUnmarshal (0.00s) -2026-07-05T01:36:24.9009799Z === RUN TestGraphQLResponseUnmarshal_EmptyRepository -2026-07-05T01:36:24.9022990Z --- PASS: TestGraphQLResponseUnmarshal_EmptyRepository (0.00s) -2026-07-05T01:36:24.9023746Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs -2026-07-05T01:36:24.9024547Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs/empty_commits -2026-07-05T01:36:24.9025451Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs/nil_commits -2026-07-05T01:36:24.9026288Z === RUN TestLookupConventionalCommitUsernames_EmptyInputs/empty_repo -2026-07-05T01:36:24.9027113Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs (0.00s) -2026-07-05T01:36:24.9028175Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs/empty_commits (0.00s) -2026-07-05T01:36:24.9029324Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs/nil_commits (0.00s) -2026-07-05T01:36:24.9030563Z --- PASS: TestLookupConventionalCommitUsernames_EmptyInputs/empty_repo (0.00s) -2026-07-05T01:36:24.9031424Z === RUN TestLookupGitHubUsernames_NoEmails -2026-07-05T01:36:24.9032143Z --- PASS: TestLookupGitHubUsernames_NoEmails (0.00s) -2026-07-05T01:36:24.9032731Z === RUN TestParseCommit_WithPRNumber -2026-07-05T01:36:24.9033292Z --- PASS: TestParseCommit_WithPRNumber (0.00s) -2026-07-05T01:36:24.9033919Z === RUN TestParseCommit_WithOrgRepoPRRef -2026-07-05T01:36:24.9034820Z --- PASS: TestParseCommit_WithOrgRepoPRRef (0.00s) -2026-07-05T01:36:24.9035507Z === RUN TestCategorizeCommits_NonRoutineNonFeatFix -2026-07-05T01:36:24.9036222Z --- PASS: TestCategorizeCommits_NonRoutineNonFeatFix (0.00s) -2026-07-05T01:36:24.9036971Z === RUN TestFormatMarkdown_CollapsibleFeatureSection -2026-07-05T01:36:24.9037643Z --- PASS: TestFormatMarkdown_CollapsibleFeatureSection (0.00s) -2026-07-05T01:36:24.9038355Z === RUN TestFormatMarkdown_CollapsibleOtherSection -2026-07-05T01:36:24.9039030Z --- PASS: TestFormatMarkdown_CollapsibleOtherSection (0.00s) -2026-07-05T01:36:24.9039641Z === RUN TestFormatMarkdown_WithScopedCommits -2026-07-05T01:36:24.9040354Z --- PASS: TestFormatMarkdown_WithScopedCommits (0.00s) -2026-07-05T01:36:24.9040997Z === RUN TestFormatMarkdown_MixedScopedAndUnscopedCommits -2026-07-05T01:36:24.9041721Z --- PASS: TestFormatMarkdown_MixedScopedAndUnscopedCommits (0.00s) -2026-07-05T01:36:24.9042381Z === RUN TestFormatCommitLine_WithPRNumber -2026-07-05T01:36:24.9042951Z --- PASS: TestFormatCommitLine_WithPRNumber (0.00s) -2026-07-05T01:36:24.9043514Z === RUN TestFormatCommitLine_WithoutPRNumber -2026-07-05T01:36:24.9044109Z --- PASS: TestFormatCommitLine_WithoutPRNumber (0.00s) -2026-07-05T01:36:24.9044712Z === RUN TestFormatOtherCommitLine_WithUsername -2026-07-05T01:36:24.9045316Z --- PASS: TestFormatOtherCommitLine_WithUsername (0.00s) -2026-07-05T01:36:24.9045930Z === RUN TestFormatOtherCommitLine_WithoutUsername -2026-07-05T01:36:24.9046557Z --- PASS: TestFormatOtherCommitLine_WithoutUsername (0.00s) -2026-07-05T01:36:24.9047157Z === RUN TestParseCommit -2026-07-05T01:36:24.9047572Z === RUN TestParseCommit/feat_with_scope -2026-07-05T01:36:24.9048070Z === RUN TestParseCommit/fix_without_scope -2026-07-05T01:36:24.9048612Z === RUN TestParseCommit/breaking_change_with_! -2026-07-05T01:36:24.9049150Z === RUN TestParseCommit/breaking_change_in_body -2026-07-05T01:36:24.9049744Z === RUN TestParseCommit/breaking_change_case_insensitive -2026-07-05T01:36:24.9067711Z === RUN TestParseCommit/non-conventional_commit -2026-07-05T01:36:24.9068562Z === RUN TestParseCommit/chore_commit -2026-07-05T01:36:24.9069060Z === RUN TestParseCommit/docs_with_scope -2026-07-05T01:36:24.9069651Z === RUN TestParseCommit/fix_with_breaking_bang_no_scope -2026-07-05T01:36:24.9070753Z === RUN TestParseCommit/narrative_referencing_BREAKING_CHANGE_wrapped_across_lines_is_not_a_footer -2026-07-05T01:36:24.9071713Z === RUN TestParseCommit/BREAKING_CHANGE_footer_at_body_start_matches -2026-07-05T01:36:24.9072556Z === RUN TestParseCommit/BREAKING_CHANGE_footer_mid-body_on_its_own_line_matches -2026-07-05T01:36:24.9073253Z --- PASS: TestParseCommit (0.00s) -2026-07-05T01:36:24.9073854Z --- PASS: TestParseCommit/feat_with_scope (0.00s) -2026-07-05T01:36:24.9074780Z --- PASS: TestParseCommit/fix_without_scope (0.00s) -2026-07-05T01:36:24.9075498Z --- PASS: TestParseCommit/breaking_change_with_! (0.00s) -2026-07-05T01:36:24.9076242Z --- PASS: TestParseCommit/breaking_change_in_body (0.00s) -2026-07-05T01:36:24.9077069Z --- PASS: TestParseCommit/breaking_change_case_insensitive (0.00s) -2026-07-05T01:36:24.9077873Z --- PASS: TestParseCommit/non-conventional_commit (0.00s) -2026-07-05T01:36:24.9078547Z --- PASS: TestParseCommit/chore_commit (0.00s) -2026-07-05T01:36:24.9079208Z --- PASS: TestParseCommit/docs_with_scope (0.00s) -2026-07-05T01:36:24.9079967Z --- PASS: TestParseCommit/fix_with_breaking_bang_no_scope (0.00s) -2026-07-05T01:36:24.9081258Z --- PASS: TestParseCommit/narrative_referencing_BREAKING_CHANGE_wrapped_across_lines_is_not_a_footer (0.00s) -2026-07-05T01:36:24.9082480Z --- PASS: TestParseCommit/BREAKING_CHANGE_footer_at_body_start_matches (0.00s) -2026-07-05T01:36:24.9083589Z --- PASS: TestParseCommit/BREAKING_CHANGE_footer_mid-body_on_its_own_line_matches (0.00s) -2026-07-05T01:36:24.9084339Z === RUN TestIsRoutineType -2026-07-05T01:36:24.9084780Z --- PASS: TestIsRoutineType (0.00s) -2026-07-05T01:36:24.9085240Z === RUN TestCategorizeCommits -2026-07-05T01:36:24.9085959Z --- PASS: TestCategorizeCommits (0.01s) -2026-07-05T01:36:24.9086439Z === RUN TestFormatMarkdown -2026-07-05T01:36:24.9086862Z --- PASS: TestFormatMarkdown (0.00s) -2026-07-05T01:36:24.9087318Z === RUN TestFormatMarkdown_Empty -2026-07-05T01:36:24.9087783Z --- PASS: TestFormatMarkdown_Empty (0.00s) -2026-07-05T01:36:24.9088297Z === RUN TestFormatMarkdown_WithContributors -2026-07-05T01:36:24.9088869Z --- PASS: TestFormatMarkdown_WithContributors (0.00s) -2026-07-05T01:36:24.9089406Z === RUN TestShortHash -2026-07-05T01:36:24.9089786Z --- PASS: TestShortHash (0.00s) -2026-07-05T01:36:24.9090379Z === RUN TestEscapeBranchMentions -2026-07-05T01:36:24.9090952Z === RUN TestEscapeBranchMentions/use_@master_for_setup-cli_action -2026-07-05T01:36:24.9091586Z === RUN TestEscapeBranchMentions/use_@main_ref -2026-07-05T01:36:24.9092133Z === RUN TestEscapeBranchMentions/reset_to_@HEAD -2026-07-05T01:36:24.9092744Z === RUN TestEscapeBranchMentions/fetch_from_@origin/master -2026-07-05T01:36:24.9093368Z === RUN TestEscapeBranchMentions/update_to_@v1 -2026-07-05T01:36:24.9093944Z === RUN TestEscapeBranchMentions/update_to_@v1.0.0 -2026-07-05T01:36:24.9094567Z === RUN TestEscapeBranchMentions/update_to_@v1.0.0-rc.0 -2026-07-05T01:36:24.9095173Z === RUN TestEscapeBranchMentions/use_@v2.3.4-beta.1 -2026-07-05T01:36:24.9095762Z === RUN TestEscapeBranchMentions/by_@octocat -2026-07-05T01:36:24.9096292Z === RUN TestEscapeBranchMentions/thanks_@alice123 -2026-07-05T01:36:24.9096848Z === RUN TestEscapeBranchMentions/cc_@bob_smith -2026-07-05T01:36:24.9097415Z === RUN TestEscapeBranchMentions/use_@master_ref_by_@octocat -2026-07-05T01:36:24.9098113Z === RUN TestEscapeBranchMentions/update_@v1.0.0_and_@v2.0.0 -2026-07-05T01:36:24.9098708Z === RUN TestEscapeBranchMentions/simple_description -2026-07-05T01:36:24.9099351Z === RUN TestEscapeBranchMentions/email_user@example.com -2026-07-05T01:36:24.9099922Z --- PASS: TestEscapeBranchMentions (0.00s) -2026-07-05T01:36:24.9100927Z --- PASS: TestEscapeBranchMentions/use_@master_for_setup-cli_action (0.00s) -2026-07-05T01:36:24.9102032Z --- PASS: TestEscapeBranchMentions/use_@main_ref (0.00s) -2026-07-05T01:36:24.9102753Z --- PASS: TestEscapeBranchMentions/reset_to_@HEAD (0.00s) -2026-07-05T01:36:24.9103530Z --- PASS: TestEscapeBranchMentions/fetch_from_@origin/master (0.00s) -2026-07-05T01:36:24.9104312Z --- PASS: TestEscapeBranchMentions/update_to_@v1 (0.00s) -2026-07-05T01:36:24.9105072Z --- PASS: TestEscapeBranchMentions/update_to_@v1.0.0 (0.00s) -2026-07-05T01:36:24.9105856Z --- PASS: TestEscapeBranchMentions/update_to_@v1.0.0-rc.0 (0.00s) -2026-07-05T01:36:24.9106667Z --- PASS: TestEscapeBranchMentions/use_@v2.3.4-beta.1 (0.00s) -2026-07-05T01:36:24.9107408Z --- PASS: TestEscapeBranchMentions/by_@octocat (0.00s) -2026-07-05T01:36:24.9108090Z --- PASS: TestEscapeBranchMentions/thanks_@alice123 (0.00s) -2026-07-05T01:36:24.9109183Z --- PASS: TestEscapeBranchMentions/cc_@bob_smith (0.00s) -2026-07-05T01:36:24.9109949Z --- PASS: TestEscapeBranchMentions/use_@master_ref_by_@octocat (0.00s) -2026-07-05T01:36:24.9110969Z --- PASS: TestEscapeBranchMentions/update_@v1.0.0_and_@v2.0.0 (0.00s) -2026-07-05T01:36:24.9111727Z --- PASS: TestEscapeBranchMentions/simple_description (0.00s) -2026-07-05T01:36:24.9112481Z --- PASS: TestEscapeBranchMentions/email_user@example.com (0.00s) -2026-07-05T01:36:24.9112991Z PASS -2026-07-05T01:36:24.9113289Z coverage: 93.2% of statements -2026-07-05T01:36:24.9113957Z ok github.com/stablekernel/cascade/internal/changelog 1.499s coverage: 93.2% of statements -2026-07-05T01:36:24.9114641Z === RUN TestMatchGlob -2026-07-05T01:36:24.9115105Z === RUN TestMatchGlob/*.go_main.go -2026-07-05T01:36:24.9115554Z === RUN TestMatchGlob/*.go_main.txt -2026-07-05T01:36:24.9116025Z === RUN TestMatchGlob/src/*.go_src/main.go -2026-07-05T01:36:24.9116557Z === RUN TestMatchGlob/src/*.go_src/sub/main.go -2026-07-05T01:36:24.9117059Z === RUN TestMatchGlob/src/**_src/main.go -2026-07-05T01:36:24.9117700Z === RUN TestMatchGlob/src/**_src/sub/main.go -2026-07-05T01:36:24.9118200Z === RUN TestMatchGlob/src/**/*.go_src/main.go -2026-07-05T01:36:24.9118665Z === RUN TestMatchGlob/src/**/*.go_src/sub/main.go -2026-07-05T01:36:24.9119195Z === RUN TestMatchGlob/src/**/*.go_src/sub/deep/main.go -2026-07-05T01:36:24.9119691Z === RUN TestMatchGlob/**/*.go_main.go -2026-07-05T01:36:24.9120353Z === RUN TestMatchGlob/**/*.go_src/main.go -2026-07-05T01:36:24.9120827Z === RUN TestMatchGlob/**_anything/at/all.txt -2026-07-05T01:36:24.9121316Z === RUN TestMatchGlob/?.go_a.go -2026-07-05T01:36:24.9121700Z === RUN TestMatchGlob/?.go_ab.go -2026-07-05T01:36:24.9122124Z === RUN TestMatchGlob/src/**_other/main.go -2026-07-05T01:36:24.9122564Z === RUN TestMatchGlob/*.yaml_config.json -2026-07-05T01:36:24.9122995Z --- PASS: TestMatchGlob (0.00s) -2026-07-05T01:36:24.9123513Z --- PASS: TestMatchGlob/*.go_main.go (0.00s) -2026-07-05T01:36:24.9124101Z --- PASS: TestMatchGlob/*.go_main.txt (0.00s) -2026-07-05T01:36:24.9124715Z --- PASS: TestMatchGlob/src/*.go_src/main.go (0.00s) -2026-07-05T01:36:24.9125387Z --- PASS: TestMatchGlob/src/*.go_src/sub/main.go (0.00s) -2026-07-05T01:36:24.9126015Z --- PASS: TestMatchGlob/src/**_src/main.go (0.00s) -2026-07-05T01:36:24.9126693Z --- PASS: TestMatchGlob/src/**_src/sub/main.go (0.00s) -2026-07-05T01:36:24.9127384Z --- PASS: TestMatchGlob/src/**/*.go_src/main.go (0.00s) -2026-07-05T01:36:24.9128128Z --- PASS: TestMatchGlob/src/**/*.go_src/sub/main.go (0.00s) -2026-07-05T01:36:24.9128927Z --- PASS: TestMatchGlob/src/**/*.go_src/sub/deep/main.go (0.00s) -2026-07-05T01:36:24.9129689Z --- PASS: TestMatchGlob/**/*.go_main.go (0.00s) -2026-07-05T01:36:24.9130517Z --- PASS: TestMatchGlob/**/*.go_src/main.go (0.00s) -2026-07-05T01:36:24.9131193Z --- PASS: TestMatchGlob/**_anything/at/all.txt (0.00s) -2026-07-05T01:36:24.9131830Z --- PASS: TestMatchGlob/?.go_a.go (0.00s) -2026-07-05T01:36:24.9132417Z --- PASS: TestMatchGlob/?.go_ab.go (0.00s) -2026-07-05T01:36:24.9133080Z --- PASS: TestMatchGlob/src/**_other/main.go (0.00s) -2026-07-05T01:36:24.9133965Z --- PASS: TestMatchGlob/*.yaml_config.json (0.00s) -2026-07-05T01:36:24.9134478Z === RUN TestIsTriggered -2026-07-05T01:36:24.9134979Z === RUN TestIsTriggered/no_triggers_means_always_triggered -2026-07-05T01:36:24.9135530Z === RUN TestIsTriggered/matching_trigger -2026-07-05T01:36:24.9136036Z === RUN TestIsTriggered/no_matching_trigger -2026-07-05T01:36:24.9136550Z === RUN TestIsTriggered/multiple_triggers,_one_matches -2026-07-05T01:36:24.9137148Z === RUN TestIsTriggered/multiple_files,_one_matches -2026-07-05T01:36:24.9137883Z === RUN TestIsTriggered/docs-only_change_excluded_by_negation_does_not_trigger -2026-07-05T01:36:24.9138696Z === RUN TestIsTriggered/source_change_triggers_despite_negation -2026-07-05T01:36:24.9139522Z === RUN TestIsTriggered/mixed_changeset_triggers_when_a_non-excluded_file_is_present -2026-07-05T01:36:24.9140637Z === RUN TestIsTriggered/negation_excludes_a_file_that_matches_a_positive_pattern -2026-07-05T01:36:24.9141541Z === RUN TestIsTriggered/negation-only_list_triggers_any_non-excluded_file -2026-07-05T01:36:24.9142352Z === RUN TestIsTriggered/negation-only_list_excludes_a_matching_file -2026-07-05T01:36:24.9143266Z === RUN TestIsTriggered/ordering_does_not_matter:_negation_before_positive_still_excludes -2026-07-05T01:36:24.9144244Z === RUN TestIsTriggered/positive-only_behaviour_is_unchanged_by_negation_support -2026-07-05T01:36:24.9144950Z --- PASS: TestIsTriggered (0.00s) -2026-07-05T01:36:24.9145664Z --- PASS: TestIsTriggered/no_triggers_means_always_triggered (0.00s) -2026-07-05T01:36:24.9146448Z --- PASS: TestIsTriggered/matching_trigger (0.00s) -2026-07-05T01:36:24.9147128Z --- PASS: TestIsTriggered/no_matching_trigger (0.00s) -2026-07-05T01:36:24.9147910Z --- PASS: TestIsTriggered/multiple_triggers,_one_matches (0.00s) -2026-07-05T01:36:24.9148735Z --- PASS: TestIsTriggered/multiple_files,_one_matches (0.00s) -2026-07-05T01:36:24.9149933Z --- PASS: TestIsTriggered/docs-only_change_excluded_by_negation_does_not_trigger (0.00s) -2026-07-05T01:36:24.9151161Z --- PASS: TestIsTriggered/source_change_triggers_despite_negation (0.00s) -2026-07-05T01:36:24.9152315Z --- PASS: TestIsTriggered/mixed_changeset_triggers_when_a_non-excluded_file_is_present (0.00s) -2026-07-05T01:36:24.9153569Z --- PASS: TestIsTriggered/negation_excludes_a_file_that_matches_a_positive_pattern (0.00s) -2026-07-05T01:36:24.9154747Z --- PASS: TestIsTriggered/negation-only_list_triggers_any_non-excluded_file (0.00s) -2026-07-05T01:36:24.9155824Z --- PASS: TestIsTriggered/negation-only_list_excludes_a_matching_file (0.00s) -2026-07-05T01:36:24.9157033Z --- PASS: TestIsTriggered/ordering_does_not_matter:_negation_before_positive_still_excludes (0.00s) -2026-07-05T01:36:24.9158367Z --- PASS: TestIsTriggered/positive-only_behaviour_is_unchanged_by_negation_support (0.00s) -2026-07-05T01:36:24.9159145Z PASS -2026-07-05T01:36:24.9159467Z coverage: 5.7% of statements -2026-07-05T01:36:24.9160307Z ok github.com/stablekernel/cascade/internal/changes 1.044s coverage: 5.7% of statements -2026-07-05T01:36:24.9161083Z === RUN TestAppTokenManifestE2E -2026-07-05T01:36:24.9161567Z --- PASS: TestAppTokenManifestE2E (0.00s) -2026-07-05T01:36:24.9162063Z === RUN TestHasReleaseTokenApp -2026-07-05T01:36:24.9162567Z === RUN TestHasReleaseTokenApp/false_when_unset -2026-07-05T01:36:24.9163134Z === RUN TestHasReleaseTokenApp/true_when_set -2026-07-05T01:36:24.9163661Z --- PASS: TestHasReleaseTokenApp (0.00s) -2026-07-05T01:36:24.9164360Z --- PASS: TestHasReleaseTokenApp/false_when_unset (0.00s) -2026-07-05T01:36:24.9165110Z --- PASS: TestHasReleaseTokenApp/true_when_set (0.00s) -2026-07-05T01:36:24.9165653Z === RUN TestHasStateTokenApp -2026-07-05T01:36:24.9166120Z === RUN TestHasStateTokenApp/false_when_unset -2026-07-05T01:36:24.9166690Z === RUN TestHasStateTokenApp/true_when_set -2026-07-05T01:36:24.9167206Z --- PASS: TestHasStateTokenApp (0.00s) -2026-07-05T01:36:24.9168154Z --- PASS: TestHasStateTokenApp/false_when_unset (0.00s) -2026-07-05T01:36:24.9169150Z --- PASS: TestHasStateTokenApp/true_when_set (0.00s) -2026-07-05T01:36:24.9169717Z === RUN TestReleaseTokenAppAccessors -2026-07-05T01:36:24.9170424Z === RUN TestReleaseTokenAppAccessors/nil_source_returns_empty -2026-07-05T01:36:24.9171158Z === RUN TestReleaseTokenAppAccessors/bare_names_wrap_as_secrets -2026-07-05T01:36:24.9171926Z === RUN TestReleaseTokenAppAccessors/full_expression_passes_through -2026-07-05T01:36:24.9172620Z --- PASS: TestReleaseTokenAppAccessors (0.00s) -2026-07-05T01:36:24.9173460Z --- PASS: TestReleaseTokenAppAccessors/nil_source_returns_empty (0.00s) -2026-07-05T01:36:24.9174470Z --- PASS: TestReleaseTokenAppAccessors/bare_names_wrap_as_secrets (0.00s) -2026-07-05T01:36:24.9175527Z --- PASS: TestReleaseTokenAppAccessors/full_expression_passes_through (0.00s) -2026-07-05T01:36:24.9176246Z === RUN TestStateTokenAppAccessors -2026-07-05T01:36:24.9176838Z === RUN TestStateTokenAppAccessors/nil_source_returns_empty -2026-07-05T01:36:24.9177538Z === RUN TestStateTokenAppAccessors/bare_names_wrap_as_secrets -2026-07-05T01:36:24.9178158Z --- PASS: TestStateTokenAppAccessors (0.00s) -2026-07-05T01:36:24.9178963Z --- PASS: TestStateTokenAppAccessors/nil_source_returns_empty (0.00s) -2026-07-05T01:36:24.9179921Z --- PASS: TestStateTokenAppAccessors/bare_names_wrap_as_secrets (0.00s) -2026-07-05T01:36:24.9180722Z === RUN TestValidateAppTokenSource -2026-07-05T01:36:24.9181269Z === RUN TestValidateAppTokenSource/nil_is_accepted -2026-07-05T01:36:24.9181929Z === RUN TestValidateAppTokenSource/valid_bare_names_accepted -2026-07-05T01:36:24.9182679Z === RUN TestValidateAppTokenSource/valid_secret_expressions_accepted -2026-07-05T01:36:24.9183482Z === RUN TestValidateAppTokenSource/missing_private_key_rejected -2026-07-05T01:36:24.9184182Z === RUN TestValidateAppTokenSource/missing_app_id_rejected -2026-07-05T01:36:24.9185161Z === RUN TestValidateAppTokenSource/raw_key_material_with_newline_rejected -2026-07-05T01:36:24.9185982Z === RUN TestValidateAppTokenSource/PRIVATE_KEY_marker_rejected -2026-07-05T01:36:24.9186710Z === RUN TestValidateAppTokenSource/malformed_bare_name_rejected -2026-07-05T01:36:24.9187353Z --- PASS: TestValidateAppTokenSource (0.00s) -2026-07-05T01:36:24.9188075Z --- PASS: TestValidateAppTokenSource/nil_is_accepted (0.00s) -2026-07-05T01:36:24.9188962Z --- PASS: TestValidateAppTokenSource/valid_bare_names_accepted (0.00s) -2026-07-05T01:36:24.9190120Z --- PASS: TestValidateAppTokenSource/valid_secret_expressions_accepted (0.00s) -2026-07-05T01:36:24.9191158Z --- PASS: TestValidateAppTokenSource/missing_private_key_rejected (0.00s) -2026-07-05T01:36:24.9192119Z --- PASS: TestValidateAppTokenSource/missing_app_id_rejected (0.00s) -2026-07-05T01:36:24.9193153Z --- PASS: TestValidateAppTokenSource/raw_key_material_with_newline_rejected (0.00s) -2026-07-05T01:36:24.9194212Z --- PASS: TestValidateAppTokenSource/PRIVATE_KEY_marker_rejected (0.00s) -2026-07-05T01:36:24.9195208Z --- PASS: TestValidateAppTokenSource/malformed_bare_name_rejected (0.00s) -2026-07-05T01:36:24.9195872Z === RUN TestParseDriftCheck -2026-07-05T01:36:24.9196327Z --- PASS: TestParseDriftCheck (0.00s) -2026-07-05T01:36:24.9196905Z === RUN TestDriftCheckValidatesAtCurrentSchemaVersion -2026-07-05T01:36:24.9197637Z --- PASS: TestDriftCheckValidatesAtCurrentSchemaVersion (0.00s) -2026-07-05T01:36:24.9198311Z === RUN TestEnvState_DivergenceFields_RoundTrip -2026-07-05T01:36:24.9198892Z === RUN TestEnvState_DivergenceFields_RoundTrip/yaml -2026-07-05T01:36:24.9199480Z === RUN TestEnvState_DivergenceFields_RoundTrip/json -2026-07-05T01:36:24.9200233Z --- PASS: TestEnvState_DivergenceFields_RoundTrip (0.00s) -2026-07-05T01:36:24.9200989Z --- PASS: TestEnvState_DivergenceFields_RoundTrip/yaml (0.00s) -2026-07-05T01:36:24.9201808Z --- PASS: TestEnvState_DivergenceFields_RoundTrip/json (0.00s) -2026-07-05T01:36:24.9202460Z === RUN TestEnvState_AbsentFieldsMeanTrackingTrunk -2026-07-05T01:36:24.9203315Z --- PASS: TestEnvState_AbsentFieldsMeanTrackingTrunk (0.00s) -2026-07-05T01:36:24.9203900Z === RUN TestEnvState_IsDiverged -2026-07-05T01:36:24.9204350Z === RUN TestEnvState_IsDiverged/empty -2026-07-05T01:36:24.9204835Z === RUN TestEnvState_IsDiverged/ref_only -2026-07-05T01:36:24.9205341Z === RUN TestEnvState_IsDiverged/patches_only -2026-07-05T01:36:24.9205865Z === RUN TestEnvState_IsDiverged/both -2026-07-05T01:36:24.9206440Z === RUN TestEnvState_IsDiverged/base_sha_only_does_not_diverge -2026-07-05T01:36:24.9207042Z --- PASS: TestEnvState_IsDiverged (0.00s) -2026-07-05T01:36:24.9207648Z --- PASS: TestEnvState_IsDiverged/empty (0.00s) -2026-07-05T01:36:24.9208304Z --- PASS: TestEnvState_IsDiverged/ref_only (0.00s) -2026-07-05T01:36:24.9208988Z --- PASS: TestEnvState_IsDiverged/patches_only (0.00s) -2026-07-05T01:36:24.9209652Z --- PASS: TestEnvState_IsDiverged/both (0.00s) -2026-07-05T01:36:24.9210629Z --- PASS: TestEnvState_IsDiverged/base_sha_only_does_not_diverge (0.00s) -2026-07-05T01:36:24.9211463Z === RUN TestPushPreviousSnapshot_PrependsPriorOnTransition -2026-07-05T01:36:24.9212229Z --- PASS: TestPushPreviousSnapshot_PrependsPriorOnTransition (0.00s) -2026-07-05T01:36:24.9212945Z === RUN TestPushPreviousSnapshot_BoundedToMax -2026-07-05T01:36:24.9213539Z --- PASS: TestPushPreviousSnapshot_BoundedToMax (0.00s) -2026-07-05T01:36:24.9214153Z === RUN TestPushPreviousSnapshot_SkipsNoOpSameSHA -2026-07-05T01:36:24.9214804Z --- PASS: TestPushPreviousSnapshot_SkipsNoOpSameSHA (0.00s) -2026-07-05T01:36:24.9215462Z === RUN TestPushPreviousSnapshot_SkipsWhenNoPriorSHA -2026-07-05T01:36:24.9216223Z --- PASS: TestPushPreviousSnapshot_SkipsWhenNoPriorSHA (0.00s) -2026-07-05T01:36:24.9247365Z === RUN TestPreviousRing_YAMLRoundTrip -2026-07-05T01:36:24.9247866Z --- PASS: TestPreviousRing_YAMLRoundTrip (0.00s) -2026-07-05T01:36:24.9248323Z === RUN TestParseDeployments -2026-07-05T01:36:24.9248722Z --- PASS: TestParseDeployments (0.00s) -2026-07-05T01:36:24.9249326Z === RUN TestDeploymentsValidatesAtCurrentSchemaVersion -2026-07-05T01:36:24.9249787Z --- PASS: TestDeploymentsValidatesAtCurrentSchemaVersion (0.00s) -2026-07-05T01:36:24.9250415Z === RUN TestParse -2026-07-05T01:36:24.9250654Z --- PASS: TestParse (0.00s) -2026-07-05T01:36:24.9250918Z === RUN TestParse_WithInputs -2026-07-05T01:36:24.9251184Z --- PASS: TestParse_WithInputs (0.00s) -2026-07-05T01:36:24.9251469Z === RUN TestParse_FileNotFound -2026-07-05T01:36:24.9251743Z --- PASS: TestParse_FileNotFound (0.00s) -2026-07-05T01:36:24.9252028Z === RUN TestParse_InvalidYAML -2026-07-05T01:36:24.9252298Z --- PASS: TestParse_InvalidYAML (0.00s) -2026-07-05T01:36:24.9252564Z === RUN TestValidate -2026-07-05T01:36:24.9252798Z === RUN TestValidate/valid_config -2026-07-05T01:36:24.9253191Z === RUN TestValidate/empty_environments_(valid_-_no-environment_setup) -2026-07-05T01:36:24.9253639Z === RUN TestValidate/missing_build_name -2026-07-05T01:36:24.9253946Z === RUN TestValidate/missing_build_workflow -2026-07-05T01:36:24.9254259Z === RUN TestValidate/duplicate_build_names -2026-07-05T01:36:24.9254567Z === RUN TestValidate/missing_deploy_name -2026-07-05T01:36:24.9254867Z === RUN TestValidate/missing_deploy_workflow -2026-07-05T01:36:24.9255172Z === RUN TestValidate/duplicate_deploy_names -2026-07-05T01:36:24.9255525Z === RUN TestValidate/valid_env_inputs_matching_environments -2026-07-05T01:36:24.9255933Z === RUN TestValidate/invalid_env_inputs_key_not_in_environments -2026-07-05T01:36:24.9256281Z --- PASS: TestValidate (0.00s) -2026-07-05T01:36:24.9256606Z --- PASS: TestValidate/valid_config (0.00s) -2026-07-05T01:36:24.9257116Z --- PASS: TestValidate/empty_environments_(valid_-_no-environment_setup) (0.00s) -2026-07-05T01:36:24.9257604Z --- PASS: TestValidate/missing_build_name (0.00s) -2026-07-05T01:36:24.9257997Z --- PASS: TestValidate/missing_build_workflow (0.00s) -2026-07-05T01:36:24.9258436Z --- PASS: TestValidate/duplicate_build_names (0.00s) -2026-07-05T01:36:24.9258830Z --- PASS: TestValidate/missing_deploy_name (0.00s) -2026-07-05T01:36:24.9259379Z --- PASS: TestValidate/missing_deploy_workflow (0.00s) -2026-07-05T01:36:24.9259786Z --- PASS: TestValidate/duplicate_deploy_names (0.00s) -2026-07-05T01:36:24.9261891Z --- PASS: TestValidate/valid_env_inputs_matching_environments (0.00s) -2026-07-05T01:36:24.9262699Z --- PASS: TestValidate/invalid_env_inputs_key_not_in_environments (0.00s) -2026-07-05T01:36:24.9263306Z === RUN TestGetBuildNames -2026-07-05T01:36:24.9263722Z --- PASS: TestGetBuildNames (0.00s) -2026-07-05T01:36:24.9264133Z === RUN TestGetDeployNames -2026-07-05T01:36:24.9264535Z --- PASS: TestGetDeployNames (0.00s) -2026-07-05T01:36:24.9264948Z === RUN TestParse_NewSchemaFields -2026-07-05T01:36:24.9265371Z --- PASS: TestParse_NewSchemaFields (0.00s) -2026-07-05T01:36:24.9265863Z === RUN TestParse_ReleaseAndChangelogConfig -2026-07-05T01:36:24.9266399Z --- PASS: TestParse_ReleaseAndChangelogConfig (0.00s) -2026-07-05T01:36:24.9266913Z === RUN TestParse_ReleaseDisabled -2026-07-05T01:36:24.9267366Z --- PASS: TestParse_ReleaseDisabled (0.00s) -2026-07-05T01:36:24.9267821Z === RUN TestValidate_NewFields -2026-07-05T01:36:24.9268303Z === RUN TestValidate_NewFields/valid_run_policy_values -2026-07-05T01:36:24.9269163Z === RUN TestValidate_NewFields/invalid_run_policy -2026-07-05T01:36:24.9269738Z === RUN TestValidate_NewFields/invalid_on_failure -2026-07-05T01:36:24.9270449Z === RUN TestValidate_NewFields/retries_out_of_range -2026-07-05T01:36:24.9271038Z === RUN TestValidate_NewFields/invalid_depends_on_reference -2026-07-05T01:36:24.9271820Z === RUN TestValidate_NewFields/build_env_inputs_key_not_in_environments -2026-07-05T01:36:24.9272481Z === RUN TestValidate_NewFields/circular_dependency -2026-07-05T01:36:24.9272967Z --- PASS: TestValidate_NewFields (0.00s) -2026-07-05T01:36:24.9273595Z --- PASS: TestValidate_NewFields/valid_run_policy_values (0.00s) -2026-07-05T01:36:24.9274334Z --- PASS: TestValidate_NewFields/invalid_run_policy (0.00s) -2026-07-05T01:36:24.9275273Z --- PASS: TestValidate_NewFields/invalid_on_failure (0.00s) -2026-07-05T01:36:24.9276032Z --- PASS: TestValidate_NewFields/retries_out_of_range (0.00s) -2026-07-05T01:36:24.9276905Z --- PASS: TestValidate_NewFields/invalid_depends_on_reference (0.00s) -2026-07-05T01:36:24.9277909Z --- PASS: TestValidate_NewFields/build_env_inputs_key_not_in_environments (0.00s) -2026-07-05T01:36:24.9278757Z --- PASS: TestValidate_NewFields/circular_dependency (0.00s) -2026-07-05T01:36:24.9279287Z === RUN TestHasExternalRelease -2026-07-05T01:36:24.9279726Z === RUN TestHasExternalRelease/nil_release -2026-07-05T01:36:24.9280321Z === RUN TestHasExternalRelease/no_tag -2026-07-05T01:36:24.9280762Z === RUN TestHasExternalRelease/with_tag -2026-07-05T01:36:24.9281223Z --- PASS: TestHasExternalRelease (0.00s) -2026-07-05T01:36:24.9281818Z --- PASS: TestHasExternalRelease/nil_release (0.00s) -2026-07-05T01:36:24.9282434Z --- PASS: TestHasExternalRelease/no_tag (0.00s) -2026-07-05T01:36:24.9283070Z --- PASS: TestHasExternalRelease/with_tag (0.00s) -2026-07-05T01:36:24.9283577Z === RUN TestHasCustomChangelog -2026-07-05T01:36:24.9284015Z === RUN TestHasCustomChangelog/nil_changelog -2026-07-05T01:36:24.9284516Z === RUN TestHasCustomChangelog/empty_workflow -2026-07-05T01:36:24.9285008Z === RUN TestHasCustomChangelog/with_workflow -2026-07-05T01:36:24.9285465Z --- PASS: TestHasCustomChangelog (0.00s) -2026-07-05T01:36:24.9286067Z --- PASS: TestHasCustomChangelog/nil_changelog (0.00s) -2026-07-05T01:36:24.9286747Z --- PASS: TestHasCustomChangelog/empty_workflow (0.00s) -2026-07-05T01:36:24.9287427Z --- PASS: TestHasCustomChangelog/with_workflow (0.00s) -2026-07-05T01:36:24.9287934Z === RUN TestChangelogEnabled -2026-07-05T01:36:24.9288442Z === RUN TestChangelogEnabled/nil_changelog_-_enabled_by_default -2026-07-05T01:36:24.9289051Z === RUN TestChangelogEnabled/disabled_false_-_enabled -2026-07-05T01:36:24.9289698Z === RUN TestChangelogEnabled/disabled_true_-_explicitly_disabled -2026-07-05T01:36:24.9290720Z === RUN TestChangelogEnabled/with_workflow_-_custom_enabled -2026-07-05T01:36:24.9291926Z --- PASS: TestChangelogEnabled (0.00s) -2026-07-05T01:36:24.9292788Z --- PASS: TestChangelogEnabled/nil_changelog_-_enabled_by_default (0.00s) -2026-07-05T01:36:24.9293613Z --- PASS: TestChangelogEnabled/disabled_false_-_enabled (0.00s) -2026-07-05T01:36:24.9294479Z --- PASS: TestChangelogEnabled/disabled_true_-_explicitly_disabled (0.00s) -2026-07-05T01:36:24.9295381Z --- PASS: TestChangelogEnabled/with_workflow_-_custom_enabled (0.00s) -2026-07-05T01:36:24.9295977Z === RUN TestReleaseEnabled -2026-07-05T01:36:24.9296461Z === RUN TestReleaseEnabled/nil_release_-_enabled_by_default -2026-07-05T01:36:24.9297176Z === RUN TestReleaseEnabled/disabled_false_-_enabled -2026-07-05T01:36:24.9297800Z === RUN TestReleaseEnabled/disabled_true_-_explicitly_disabled -2026-07-05T01:36:24.9298484Z === RUN TestReleaseEnabled/with_tag_-_external_release_enabled -2026-07-05T01:36:24.9299127Z --- PASS: TestReleaseEnabled (0.00s) -2026-07-05T01:36:24.9299873Z --- PASS: TestReleaseEnabled/nil_release_-_enabled_by_default (0.00s) -2026-07-05T01:36:24.9300999Z --- PASS: TestReleaseEnabled/disabled_false_-_enabled (0.00s) -2026-07-05T01:36:24.9301893Z --- PASS: TestReleaseEnabled/disabled_true_-_explicitly_disabled (0.00s) -2026-07-05T01:36:24.9302812Z --- PASS: TestReleaseEnabled/with_tag_-_external_release_enabled (0.00s) -2026-07-05T01:36:24.9303446Z === RUN TestValidate_ReleaseTag -2026-07-05T01:36:24.9303962Z === RUN TestValidate_ReleaseTag/valid_release.tag_reference -2026-07-05T01:36:24.9304675Z === RUN TestValidate_ReleaseTag/invalid_release.tag_-_unknown_callback -2026-07-05T01:36:24.9305428Z === RUN TestValidate_ReleaseTag/invalid_release.tag_-_bad_format -2026-07-05T01:36:24.9306095Z === RUN TestValidate_ReleaseTag/release.tag_with_deploy_callback -2026-07-05T01:36:24.9306801Z === RUN TestValidate_ReleaseTag/deploy_depends_on_references_valid_build -2026-07-05T01:36:24.9307835Z === RUN TestValidate_ReleaseTag/deploy_depends_on_references_unknown_build -2026-07-05T01:36:24.9308557Z --- PASS: TestValidate_ReleaseTag (0.00s) -2026-07-05T01:36:24.9309318Z --- PASS: TestValidate_ReleaseTag/valid_release.tag_reference (0.00s) -2026-07-05T01:36:24.9310473Z --- PASS: TestValidate_ReleaseTag/invalid_release.tag_-_unknown_callback (0.00s) -2026-07-05T01:36:24.9311506Z --- PASS: TestValidate_ReleaseTag/invalid_release.tag_-_bad_format (0.00s) -2026-07-05T01:36:24.9312454Z --- PASS: TestValidate_ReleaseTag/release.tag_with_deploy_callback (0.00s) -2026-07-05T01:36:24.9313498Z --- PASS: TestValidate_ReleaseTag/deploy_depends_on_references_valid_build (0.00s) -2026-07-05T01:36:24.9314353Z --- PASS: TestValidate_ReleaseTag/deploy_depends_on_references_unknown_build (0.00s) -2026-07-05T01:36:24.9315148Z === RUN TestValidate_JobIDSafeNames -2026-07-05T01:36:24.9315759Z === RUN TestValidate_JobIDSafeNames/build_name_with_dot_rejected -2026-07-05T01:36:24.9316548Z === RUN TestValidate_JobIDSafeNames/build_name_with_space_rejected -2026-07-05T01:36:24.9317298Z === RUN TestValidate_JobIDSafeNames/deploy_name_with_slash_rejected -2026-07-05T01:36:24.9318089Z === RUN TestValidate_JobIDSafeNames/external_deploy_name_with_dot_rejected -2026-07-05T01:36:24.9318912Z === RUN TestValidate_JobIDSafeNames/environment_name_with_dot_rejected -2026-07-05T01:36:24.9319853Z === RUN TestValidate_JobIDSafeNames/valid_names:_hyphen,_uppercase,_leading_digit,_underscore -2026-07-05T01:36:24.9321153Z --- PASS: TestValidate_JobIDSafeNames (0.00s) -2026-07-05T01:36:24.9322128Z --- PASS: TestValidate_JobIDSafeNames/build_name_with_dot_rejected (0.00s) -2026-07-05T01:36:24.9323103Z --- PASS: TestValidate_JobIDSafeNames/build_name_with_space_rejected (0.00s) -2026-07-05T01:36:24.9323895Z --- PASS: TestValidate_JobIDSafeNames/deploy_name_with_slash_rejected (0.00s) -2026-07-05T01:36:24.9324636Z --- PASS: TestValidate_JobIDSafeNames/external_deploy_name_with_dot_rejected (0.00s) -2026-07-05T01:36:24.9325391Z --- PASS: TestValidate_JobIDSafeNames/environment_name_with_dot_rejected (0.00s) -2026-07-05T01:36:24.9326421Z --- PASS: TestValidate_JobIDSafeNames/valid_names:_hyphen,_uppercase,_leading_digit,_underscore (0.00s) -2026-07-05T01:36:24.9327033Z === RUN TestExternalDeployOnUpdate_Parse -2026-07-05T01:36:24.9327377Z --- PASS: TestExternalDeployOnUpdate_Parse (0.00s) -2026-07-05T01:36:24.9327819Z === RUN TestExternalDeployOnUpdate_Validation -2026-07-05T01:36:24.9328292Z === RUN TestExternalDeployOnUpdate_Validation/absent_on_update_is_record-only_and_valid -2026-07-05T01:36:24.9329031Z === RUN TestExternalDeployOnUpdate_Validation/on_update.deploy_without_workflow_is_rejected -2026-07-05T01:36:24.9329750Z === RUN TestExternalDeployOnUpdate_Validation/on_update.deploy_with_workflow_is_valid -2026-07-05T01:36:24.9330449Z --- PASS: TestExternalDeployOnUpdate_Validation (0.00s) -2026-07-05T01:36:24.9331171Z --- PASS: TestExternalDeployOnUpdate_Validation/absent_on_update_is_record-only_and_valid (0.00s) -2026-07-05T01:36:24.9332087Z --- PASS: TestExternalDeployOnUpdate_Validation/on_update.deploy_without_workflow_is_rejected (0.00s) -2026-07-05T01:36:24.9332978Z --- PASS: TestExternalDeployOnUpdate_Validation/on_update.deploy_with_workflow_is_valid (0.00s) -2026-07-05T01:36:24.9333585Z === RUN TestFullSurfaceManifestE2E -2026-07-05T01:36:24.9334074Z --- PASS: TestFullSurfaceManifestE2E (0.07s) -2026-07-05T01:36:24.9334599Z === RUN TestParseSecretsUnion -2026-07-05T01:36:24.9335079Z === RUN TestParseSecretsUnion/inherit_scalar -2026-07-05T01:36:24.9335565Z === RUN TestParseSecretsUnion/explicit_map -2026-07-05T01:36:24.9335922Z === RUN TestParseSecretsUnion/inherit_mapping -2026-07-05T01:36:24.9336519Z === RUN TestParseSecretsUnion/inherit_false_mapping_treated_as_unset -2026-07-05T01:36:24.9337177Z === RUN TestParseSecretsUnion/mixed_inherit_and_secret_keys_rejected -2026-07-05T01:36:24.9337997Z === RUN TestParseSecretsUnion/invalid_scalar_rejected -2026-07-05T01:36:24.9338911Z --- PASS: TestParseSecretsUnion (0.00s) -2026-07-05T01:36:24.9339601Z --- PASS: TestParseSecretsUnion/inherit_scalar (0.00s) -2026-07-05T01:36:24.9340363Z --- PASS: TestParseSecretsUnion/explicit_map (0.00s) -2026-07-05T01:36:24.9340931Z --- PASS: TestParseSecretsUnion/inherit_mapping (0.00s) -2026-07-05T01:36:24.9341875Z --- PASS: TestParseSecretsUnion/inherit_false_mapping_treated_as_unset (0.00s) -2026-07-05T01:36:24.9342921Z --- PASS: TestParseSecretsUnion/mixed_inherit_and_secret_keys_rejected (0.00s) -2026-07-05T01:36:24.9343836Z --- PASS: TestParseSecretsUnion/invalid_scalar_rejected (0.00s) -2026-07-05T01:36:24.9344431Z === RUN TestParseRunsOnUnion -2026-07-05T01:36:24.9344865Z --- PASS: TestParseRunsOnUnion (0.00s) -2026-07-05T01:36:24.9345333Z === RUN TestParseMatrixAndRollout -2026-07-05T01:36:24.9345807Z --- PASS: TestParseMatrixAndRollout (0.00s) -2026-07-05T01:36:24.9346315Z === RUN TestParseConfigLevelFields -2026-07-05T01:36:24.9346802Z --- PASS: TestParseConfigLevelFields (0.00s) -2026-07-05T01:36:24.9347314Z === RUN TestParsePerCallbackExtras -2026-07-05T01:36:24.9347810Z --- PASS: TestParsePerCallbackExtras (0.00s) -2026-07-05T01:36:24.9348295Z === RUN TestParseInlineRunCallback -2026-07-05T01:36:24.9348784Z --- PASS: TestParseInlineRunCallback (0.00s) -2026-07-05T01:36:24.9349348Z === RUN TestParseDeployStateVersionAndPreviousRing -2026-07-05T01:36:24.9350383Z --- PASS: TestParseDeployStateVersionAndPreviousRing (0.00s) -2026-07-05T01:36:24.9350841Z === RUN TestValidateWorkflowRunXOR -2026-07-05T01:36:24.9351286Z === RUN TestValidateWorkflowRunXOR/run_set,_no_workflow -2026-07-05T01:36:24.9351697Z === RUN TestValidateWorkflowRunXOR/workflow_and_run_both_set -2026-07-05T01:36:24.9352226Z === RUN TestValidateWorkflowRunXOR/shell_set,_no_workflow,_no_run -2026-07-05T01:36:24.9352708Z === RUN TestValidateWorkflowRunXOR/neither_run_nor_workflow -2026-07-05T01:36:24.9353191Z === RUN TestValidateWorkflowRunXOR/workflow_only_is_clean -2026-07-05T01:36:24.9353649Z --- PASS: TestValidateWorkflowRunXOR (0.00s) -2026-07-05T01:36:24.9354309Z --- PASS: TestValidateWorkflowRunXOR/run_set,_no_workflow (0.00s) -2026-07-05T01:36:24.9354972Z --- PASS: TestValidateWorkflowRunXOR/workflow_and_run_both_set (0.00s) -2026-07-05T01:36:24.9355680Z --- PASS: TestValidateWorkflowRunXOR/shell_set,_no_workflow,_no_run (0.00s) -2026-07-05T01:36:24.9356361Z --- PASS: TestValidateWorkflowRunXOR/neither_run_nor_workflow (0.00s) -2026-07-05T01:36:24.9357019Z --- PASS: TestValidateWorkflowRunXOR/workflow_only_is_clean (0.00s) -2026-07-05T01:36:24.9357463Z === RUN TestValidateRunsOnRejectedOnReusableWorkflow -2026-07-05T01:36:24.9358151Z --- PASS: TestValidateRunsOnRejectedOnReusableWorkflow (0.00s) -2026-07-05T01:36:24.9358835Z === RUN TestValidateRunRejected -2026-07-05T01:36:24.9359338Z === RUN TestValidateRunRejected/run-only_rejected -2026-07-05T01:36:24.9359958Z === RUN TestValidateRunRejected/shell-only_rejected -2026-07-05T01:36:24.9360738Z === RUN TestValidateRunRejected/workflow-only_clean -2026-07-05T01:36:24.9361302Z --- PASS: TestValidateRunRejected (0.00s) -2026-07-05T01:36:24.9362011Z --- PASS: TestValidateRunRejected/run-only_rejected (0.00s) -2026-07-05T01:36:24.9362830Z --- PASS: TestValidateRunRejected/shell-only_rejected (0.00s) -2026-07-05T01:36:24.9363670Z --- PASS: TestValidateRunRejected/workflow-only_clean (0.00s) -2026-07-05T01:36:24.9364349Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected -2026-07-05T01:36:24.9365068Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected/build_callback -2026-07-05T01:36:24.9365881Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected/deploy_callback -2026-07-05T01:36:24.9366698Z === RUN TestValidate_TimeoutMinutesOnCallback_Rejected/validate_callback -2026-07-05T01:36:24.9367493Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected (0.00s) -2026-07-05T01:36:24.9368467Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected/build_callback (0.00s) -2026-07-05T01:36:24.9369749Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected/deploy_callback (0.00s) -2026-07-05T01:36:24.9371014Z --- PASS: TestValidate_TimeoutMinutesOnCallback_Rejected/validate_callback (0.00s) -2026-07-05T01:36:24.9371813Z === RUN TestValidate_CallbackWithoutTimeout_Clean -2026-07-05T01:36:24.9372639Z === RUN TestValidate_CallbackWithoutTimeout_Clean/callback_without_timeout_minutes_clean -2026-07-05T01:36:24.9373735Z === RUN TestValidate_CallbackWithoutTimeout_Clean/config.job_timeout_minutes_not_rejected -2026-07-05T01:36:24.9374609Z --- PASS: TestValidate_CallbackWithoutTimeout_Clean (0.00s) -2026-07-05T01:36:24.9375696Z --- PASS: TestValidate_CallbackWithoutTimeout_Clean/callback_without_timeout_minutes_clean (0.00s) -2026-07-05T01:36:24.9377104Z --- PASS: TestValidate_CallbackWithoutTimeout_Clean/config.job_timeout_minutes_not_rejected (0.00s) -2026-07-05T01:36:24.9378076Z === RUN TestValidateConcurrencyRejectedOnReusableWorkflow -2026-07-05T01:36:24.9378869Z --- PASS: TestValidateConcurrencyRejectedOnReusableWorkflow (0.00s) -2026-07-05T01:36:24.9379551Z === RUN TestValidatePermissions -2026-07-05T01:36:24.9380233Z === RUN TestValidatePermissions/unknown_scope_rejected -2026-07-05T01:36:24.9380848Z === RUN TestValidatePermissions/bad_value_rejected -2026-07-05T01:36:24.9381413Z --- PASS: TestValidatePermissions (0.00s) -2026-07-05T01:36:24.9382165Z --- PASS: TestValidatePermissions/unknown_scope_rejected (0.00s) -2026-07-05T01:36:24.9383002Z --- PASS: TestValidatePermissions/bad_value_rejected (0.00s) -2026-07-05T01:36:24.9383611Z === RUN TestValidateRolloutEnvGating -2026-07-05T01:36:24.9384264Z === RUN TestValidateRolloutEnvGating/canary_requires_environments -2026-07-05T01:36:24.9384988Z === RUN TestValidateRolloutEnvGating/bad_type_rejected -2026-07-05T01:36:24.9385603Z --- PASS: TestValidateRolloutEnvGating (0.00s) -2026-07-05T01:36:24.9386470Z --- PASS: TestValidateRolloutEnvGating/canary_requires_environments (0.00s) -2026-07-05T01:36:24.9387430Z --- PASS: TestValidateRolloutEnvGating/bad_type_rejected (0.00s) -2026-07-05T01:36:24.9388277Z === RUN TestValidateDeployTargetMode -2026-07-05T01:36:24.9388808Z --- PASS: TestValidateDeployTargetMode (0.00s) -2026-07-05T01:36:24.9389340Z === RUN TestValidateConfigLevelRules -2026-07-05T01:36:24.9389944Z === RUN TestValidateConfigLevelRules/pin_mode_rejected -2026-07-05T01:36:24.9390798Z === RUN TestValidateConfigLevelRules/cli_version_sha_non-hex_rejected -2026-07-05T01:36:24.9391655Z === RUN TestValidateConfigLevelRules/cli_version_sha_short_hex_rejected -2026-07-05T01:36:24.9392504Z === RUN TestValidateConfigLevelRules/cli_version_sha_valid_40-hex_accepted -2026-07-05T01:36:24.9393405Z === RUN TestValidateConfigLevelRules/reserved_dispatch_input_shadow_rejected -2026-07-05T01:36:24.9394260Z === RUN TestValidateConfigLevelRules/choice_input_needs_options -2026-07-05T01:36:24.9395077Z === RUN TestValidateConfigLevelRules/environment_config_unknown_env_rejected -2026-07-05T01:36:24.9395819Z --- PASS: TestValidateConfigLevelRules (0.00s) -2026-07-05T01:36:24.9396583Z --- PASS: TestValidateConfigLevelRules/pin_mode_rejected (0.00s) -2026-07-05T01:36:24.9397584Z --- PASS: TestValidateConfigLevelRules/cli_version_sha_non-hex_rejected (0.00s) -2026-07-05T01:36:24.9398670Z --- PASS: TestValidateConfigLevelRules/cli_version_sha_short_hex_rejected (0.00s) -2026-07-05T01:36:24.9399824Z --- PASS: TestValidateConfigLevelRules/cli_version_sha_valid_40-hex_accepted (0.00s) -2026-07-05T01:36:24.9401135Z --- PASS: TestValidateConfigLevelRules/reserved_dispatch_input_shadow_rejected (0.00s) -2026-07-05T01:36:24.9402233Z --- PASS: TestValidateConfigLevelRules/choice_input_needs_options (0.00s) -2026-07-05T01:36:24.9403347Z --- PASS: TestValidateConfigLevelRules/environment_config_unknown_env_rejected (0.00s) -2026-07-05T01:36:24.9404179Z === RUN TestValidateOptionalDependsOnResolution -2026-07-05T01:36:24.9404941Z === RUN TestValidateOptionalDependsOnResolution/resolves_like_depends_on -2026-07-05T01:36:24.9405837Z === RUN TestValidateOptionalDependsOnResolution/unresolved_rejected -2026-07-05T01:36:24.9406787Z --- PASS: TestValidateOptionalDependsOnResolution (0.00s) -2026-07-05T01:36:24.9407818Z --- PASS: TestValidateOptionalDependsOnResolution/resolves_like_depends_on (0.00s) -2026-07-05T01:36:24.9408940Z --- PASS: TestValidateOptionalDependsOnResolution/unresolved_rejected (0.00s) -2026-07-05T01:36:24.9409701Z === RUN TestValidateValidateCallbackRules -2026-07-05T01:36:24.9410598Z === RUN TestValidateValidateCallbackRules/workflow_and_run_mutually_exclusive -2026-07-05T01:36:24.9411540Z === RUN TestValidateValidateCallbackRules/runs_on_rejected_on_reusable_workflow -2026-07-05T01:36:24.9412544Z === RUN TestValidateValidateCallbackRules/concurrency_rejected_on_reusable_workflow -2026-07-05T01:36:24.9413485Z === RUN TestValidateValidateCallbackRules/run-only_validate_rejected -2026-07-05T01:36:24.9414210Z --- PASS: TestValidateValidateCallbackRules (0.00s) -2026-07-05T01:36:24.9415202Z --- PASS: TestValidateValidateCallbackRules/workflow_and_run_mutually_exclusive (0.00s) -2026-07-05T01:36:24.9416450Z --- PASS: TestValidateValidateCallbackRules/runs_on_rejected_on_reusable_workflow (0.00s) -2026-07-05T01:36:24.9417783Z --- PASS: TestValidateValidateCallbackRules/concurrency_rejected_on_reusable_workflow (0.00s) -2026-07-05T01:36:24.9418968Z --- PASS: TestValidateValidateCallbackRules/run-only_validate_rejected (0.00s) -2026-07-05T01:36:24.9419706Z === RUN TestSecretsNullTreatedAsUnset -2026-07-05T01:36:24.9420394Z --- PASS: TestSecretsNullTreatedAsUnset (0.00s) -2026-07-05T01:36:24.9420941Z === RUN TestRunsOnEmptyMappingRejected -2026-07-05T01:36:24.9421485Z --- PASS: TestRunsOnEmptyMappingRejected (0.00s) -2026-07-05T01:36:24.9422147Z === RUN TestOptionalDependsOnParticipatesInCycleDetection -2026-07-05T01:36:24.9422956Z --- PASS: TestOptionalDependsOnParticipatesInCycleDetection (0.00s) -2026-07-05T01:36:24.9423629Z === RUN TestGetPinModeNilReceiver -2026-07-05T01:36:24.9424113Z --- PASS: TestGetPinModeNilReceiver (0.00s) -2026-07-05T01:36:24.9424677Z === RUN TestParseExternalDeployReservedFields -2026-07-05T01:36:24.9425483Z --- PASS: TestParseExternalDeployReservedFields (0.00s) -2026-07-05T01:36:24.9426079Z === RUN TestValidateExternalDeployRules -2026-07-05T01:36:24.9426854Z === RUN TestValidateExternalDeployRules/runs_on_rejected_on_reusable_external_workflow -2026-07-05T01:36:24.9427780Z === RUN TestValidateExternalDeployRules/missing_workflow_rejected -2026-07-05T01:36:24.9428601Z === RUN TestValidateExternalDeployRules/run_rejected_on_external_deploy -2026-07-05T01:36:24.9429477Z === RUN TestValidateExternalDeployRules/shell_rejected_on_external_deploy -2026-07-05T01:36:24.9430361Z --- PASS: TestValidateExternalDeployRules (0.00s) -2026-07-05T01:36:24.9431412Z --- PASS: TestValidateExternalDeployRules/runs_on_rejected_on_reusable_external_workflow (0.00s) -2026-07-05T01:36:24.9432569Z --- PASS: TestValidateExternalDeployRules/missing_workflow_rejected (0.00s) -2026-07-05T01:36:24.9433665Z --- PASS: TestValidateExternalDeployRules/run_rejected_on_external_deploy (0.00s) -2026-07-05T01:36:24.9434808Z --- PASS: TestValidateExternalDeployRules/shell_rejected_on_external_deploy (0.00s) -2026-07-05T01:36:24.9435747Z === RUN TestComponentsShapeParseAndValidate -2026-07-05T01:36:24.9436489Z === RUN TestComponentsShapeParseAndValidate/valid_components_block_passes -2026-07-05T01:36:24.9437448Z === RUN TestComponentsShapeParseAndValidate/non-job-id-safe_component_name_rejected -2026-07-05T01:36:24.9438365Z === RUN TestComponentsShapeParseAndValidate/path_with_dotdot_rejected -2026-07-05T01:36:24.9439186Z === RUN TestComponentsShapeParseAndValidate/absolute_path_rejected -2026-07-05T01:36:24.9440229Z === RUN TestComponentsShapeParseAndValidate/omitting_components_is_nil_and_zero_errors -2026-07-05T01:36:24.9441086Z --- PASS: TestComponentsShapeParseAndValidate (0.00s) -2026-07-05T01:36:24.9442059Z --- PASS: TestComponentsShapeParseAndValidate/valid_components_block_passes (0.00s) -2026-07-05T01:36:24.9443531Z --- PASS: TestComponentsShapeParseAndValidate/non-job-id-safe_component_name_rejected (0.00s) -2026-07-05T01:36:24.9444759Z --- PASS: TestComponentsShapeParseAndValidate/path_with_dotdot_rejected (0.00s) -2026-07-05T01:36:24.9445848Z --- PASS: TestComponentsShapeParseAndValidate/absolute_path_rejected (0.00s) -2026-07-05T01:36:24.9447074Z --- PASS: TestComponentsShapeParseAndValidate/omitting_components_is_nil_and_zero_errors (0.00s) -2026-07-05T01:36:24.9447920Z === RUN TestSchemaVersionE2E -2026-07-05T01:36:24.9448582Z === RUN TestSchemaVersionE2E/valid_current_schema_version_parses_and_validates -2026-07-05T01:36:24.9449461Z === RUN TestSchemaVersionE2E/omitted_schema_version_parses_with_a_warning -2026-07-05T01:36:24.9450500Z === RUN TestSchemaVersionE2E/incompatible_(too_new)_schema_version_is_rejected -2026-07-05T01:36:24.9451212Z --- PASS: TestSchemaVersionE2E (0.01s) -2026-07-05T01:36:24.9452104Z --- PASS: TestSchemaVersionE2E/valid_current_schema_version_parses_and_validates (0.00s) -2026-07-05T01:36:24.9453276Z --- PASS: TestSchemaVersionE2E/omitted_schema_version_parses_with_a_warning (0.00s) -2026-07-05T01:36:24.9454434Z --- PASS: TestSchemaVersionE2E/incompatible_(too_new)_schema_version_is_rejected (0.00s) -2026-07-05T01:36:24.9455209Z === RUN TestGetSchemaVersion -2026-07-05T01:36:24.9455725Z === RUN TestGetSchemaVersion/omitted_defaults_to_current -2026-07-05T01:36:24.9456319Z === RUN TestGetSchemaVersion/explicit_current -2026-07-05T01:36:24.9456934Z === RUN TestGetSchemaVersion/explicit_value_passes_through -2026-07-05T01:36:24.9457562Z --- PASS: TestGetSchemaVersion (0.00s) -2026-07-05T01:36:24.9458288Z --- PASS: TestGetSchemaVersion/omitted_defaults_to_current (0.00s) -2026-07-05T01:36:24.9459172Z --- PASS: TestGetSchemaVersion/explicit_current (0.00s) -2026-07-05T01:36:24.9460204Z --- PASS: TestGetSchemaVersion/explicit_value_passes_through (0.00s) -2026-07-05T01:36:24.9460880Z === RUN TestValidateSchemaVersionHelper -2026-07-05T01:36:24.9461584Z === RUN TestValidateSchemaVersionHelper/omitted_(0)_warns_and_is_accepted -2026-07-05T01:36:24.9462690Z === RUN TestValidateSchemaVersionHelper/negative_is_rejected -2026-07-05T01:36:24.9463408Z === RUN TestValidateSchemaVersionHelper/below_min_is_rejected -2026-07-05T01:36:24.9464274Z === RUN TestValidateSchemaVersionHelper/at_min_(older_supported)_warns_and_is_accepted -2026-07-05T01:36:24.9465312Z === RUN TestValidateSchemaVersionHelper/between_min_and_current_warns_and_is_accepted -2026-07-05T01:36:24.9466344Z === RUN TestValidateSchemaVersionHelper/current_minus_one_warns_and_is_accepted -2026-07-05T01:36:24.9467273Z === RUN TestValidateSchemaVersionHelper/exactly_current_is_accepted_silently -2026-07-05T01:36:24.9468136Z === RUN TestValidateSchemaVersionHelper/above_current_is_rejected -2026-07-05T01:36:24.9468831Z --- PASS: TestValidateSchemaVersionHelper (0.00s) -2026-07-05T01:36:24.9469773Z --- PASS: TestValidateSchemaVersionHelper/omitted_(0)_warns_and_is_accepted (0.00s) -2026-07-05T01:36:24.9471378Z --- PASS: TestValidateSchemaVersionHelper/negative_is_rejected (0.00s) -2026-07-05T01:36:24.9472377Z --- PASS: TestValidateSchemaVersionHelper/below_min_is_rejected (0.00s) -2026-07-05T01:36:24.9473599Z --- PASS: TestValidateSchemaVersionHelper/at_min_(older_supported)_warns_and_is_accepted (0.00s) -2026-07-05T01:36:24.9474939Z --- PASS: TestValidateSchemaVersionHelper/between_min_and_current_warns_and_is_accepted (0.00s) -2026-07-05T01:36:24.9476208Z --- PASS: TestValidateSchemaVersionHelper/current_minus_one_warns_and_is_accepted (0.00s) -2026-07-05T01:36:24.9477414Z --- PASS: TestValidateSchemaVersionHelper/exactly_current_is_accepted_silently (0.00s) -2026-07-05T01:36:24.9478543Z --- PASS: TestValidateSchemaVersionHelper/above_current_is_rejected (0.00s) -2026-07-05T01:36:24.9479247Z === RUN TestValidateSchemaVersion -2026-07-05T01:36:24.9479867Z === RUN TestValidateSchemaVersion/current_version_accepted_silently -2026-07-05T01:36:24.9480838Z === RUN TestValidateSchemaVersion/omitted_version_warns_and_is_accepted -2026-07-05T01:36:24.9481815Z === RUN TestValidateSchemaVersion/newer_than_CLI_is_rejected -2026-07-05T01:36:24.9482676Z === RUN TestValidateSchemaVersion/negative_version_is_rejected -2026-07-05T01:36:24.9483389Z --- PASS: TestValidateSchemaVersion (0.00s) -2026-07-05T01:36:24.9484395Z --- PASS: TestValidateSchemaVersion/current_version_accepted_silently (0.00s) -2026-07-05T01:36:24.9485759Z --- PASS: TestValidateSchemaVersion/omitted_version_warns_and_is_accepted (0.00s) -2026-07-05T01:36:24.9486869Z --- PASS: TestValidateSchemaVersion/newer_than_CLI_is_rejected (0.00s) -2026-07-05T01:36:24.9487932Z --- PASS: TestValidateSchemaVersion/negative_version_is_rejected (0.00s) -2026-07-05T01:36:24.9488805Z === RUN TestValidateRejectsIncompatibleSchemaVersion -2026-07-05T01:36:24.9489650Z --- PASS: TestValidateRejectsIncompatibleSchemaVersion (0.00s) -2026-07-05T01:36:24.9490562Z === RUN TestValidateAcceptsCurrentSchemaVersion -2026-07-05T01:36:24.9491225Z --- PASS: TestValidateAcceptsCurrentSchemaVersion (0.00s) -2026-07-05T01:36:24.9491925Z === RUN TestValidateOmittedSchemaVersionIsNotFatal -2026-07-05T01:36:24.9492631Z --- PASS: TestValidateOmittedSchemaVersionIsNotFatal (0.00s) -2026-07-05T01:36:24.9493342Z === RUN TestWriteManifestState_PreservesUnmodeledKeys -2026-07-05T01:36:24.9494042Z --- PASS: TestWriteManifestState_PreservesUnmodeledKeys (0.00s) -2026-07-05T01:36:24.9494836Z === RUN TestWriteManifestState_EmptyStateRemovesKeyButKeepsConfig -2026-07-05T01:36:24.9495713Z --- PASS: TestWriteManifestState_EmptyStateRemovesKeyButKeepsConfig (0.00s) -2026-07-05T01:36:24.9496478Z === RUN TestWriteManifestState_WritesLatestRelease -2026-07-05T01:36:24.9497127Z --- PASS: TestWriteManifestState_WritesLatestRelease (0.00s) -2026-07-05T01:36:24.9497761Z === RUN TestWriteManifestState_CustomManifestKey -2026-07-05T01:36:24.9498380Z --- PASS: TestWriteManifestState_CustomManifestKey (0.00s) -2026-07-05T01:36:24.9498988Z === RUN TestMatchTrigger -2026-07-05T01:36:24.9499411Z === RUN TestMatchTrigger/positive_match -2026-07-05T01:36:24.9500270Z === RUN TestMatchTrigger/positive_no_match -2026-07-05T01:36:24.9500843Z === RUN TestMatchTrigger/multiple_positives_one_matches -2026-07-05T01:36:24.9501499Z === RUN TestMatchTrigger/negation_excludes_md_under_wildcard -2026-07-05T01:36:24.9502114Z === RUN TestMatchTrigger/negation_excludes_docs_dir -2026-07-05T01:36:24.9502769Z === RUN TestMatchTrigger/positive_survives_unrelated_negation -2026-07-05T01:36:24.9503456Z === RUN TestMatchTrigger/negation_listed_first_still_excludes -2026-07-05T01:36:24.9504166Z === RUN TestMatchTrigger/negation_listed_first_allows_non-excluded -2026-07-05T01:36:24.9504862Z === RUN TestMatchTrigger/negation-only_excludes_match -2026-07-05T01:36:24.9505478Z === RUN TestMatchTrigger/negation-only_allows_non-match -2026-07-05T01:36:24.9506125Z === RUN TestMatchTrigger/scoped_negation_excludes_md_in_src -2026-07-05T01:36:24.9506773Z === RUN TestMatchTrigger/scoped_negation_keeps_go_in_src -2026-07-05T01:36:24.9507334Z --- PASS: TestMatchTrigger (0.00s) -2026-07-05T01:36:24.9507940Z --- PASS: TestMatchTrigger/positive_match (0.00s) -2026-07-05T01:36:24.9508659Z --- PASS: TestMatchTrigger/positive_no_match (0.00s) -2026-07-05T01:36:24.9509447Z --- PASS: TestMatchTrigger/multiple_positives_one_matches (0.00s) -2026-07-05T01:36:24.9510500Z --- PASS: TestMatchTrigger/negation_excludes_md_under_wildcard (0.00s) -2026-07-05T01:36:24.9511376Z --- PASS: TestMatchTrigger/negation_excludes_docs_dir (0.00s) -2026-07-05T01:36:24.9512256Z --- PASS: TestMatchTrigger/positive_survives_unrelated_negation (0.00s) -2026-07-05T01:36:24.9513216Z --- PASS: TestMatchTrigger/negation_listed_first_still_excludes (0.00s) -2026-07-05T01:36:24.9514209Z --- PASS: TestMatchTrigger/negation_listed_first_allows_non-excluded (0.00s) -2026-07-05T01:36:24.9515134Z --- PASS: TestMatchTrigger/negation-only_excludes_match (0.00s) -2026-07-05T01:36:24.9516022Z --- PASS: TestMatchTrigger/negation-only_allows_non-match (0.00s) -2026-07-05T01:36:24.9517120Z --- PASS: TestMatchTrigger/scoped_negation_excludes_md_in_src (0.00s) -2026-07-05T01:36:24.9518031Z --- PASS: TestMatchTrigger/scoped_negation_keeps_go_in_src (0.00s) -2026-07-05T01:36:24.9518648Z === RUN TestMatchAnyTrigger -2026-07-05T01:36:24.9519171Z === RUN TestMatchAnyTrigger/empty_patterns_always_trigger -2026-07-05T01:36:24.9519811Z === RUN TestMatchAnyTrigger/positive_matches_one_file -2026-07-05T01:36:24.9520616Z === RUN TestMatchAnyTrigger/positive_matches_no_file -2026-07-05T01:36:24.9521281Z === RUN TestMatchAnyTrigger/docs-only_change_does_not_trigger -2026-07-05T01:36:24.9521924Z === RUN TestMatchAnyTrigger/source_change_triggers -2026-07-05T01:36:24.9522631Z === RUN TestMatchAnyTrigger/mixed_change_triggers_via_non-excluded_file -2026-07-05T01:36:24.9523321Z --- PASS: TestMatchAnyTrigger (0.00s) -2026-07-05T01:36:24.9524046Z --- PASS: TestMatchAnyTrigger/empty_patterns_always_trigger (0.00s) -2026-07-05T01:36:24.9524975Z --- PASS: TestMatchAnyTrigger/positive_matches_one_file (0.00s) -2026-07-05T01:36:24.9525822Z --- PASS: TestMatchAnyTrigger/positive_matches_no_file (0.00s) -2026-07-05T01:36:24.9526714Z --- PASS: TestMatchAnyTrigger/docs-only_change_does_not_trigger (0.00s) -2026-07-05T01:36:24.9527583Z --- PASS: TestMatchAnyTrigger/source_change_triggers (0.00s) -2026-07-05T01:36:24.9528578Z --- PASS: TestMatchAnyTrigger/mixed_change_triggers_via_non-excluded_file (0.00s) -2026-07-05T01:36:24.9529315Z === RUN TestIsNegationPattern -2026-07-05T01:36:24.9529801Z --- PASS: TestIsNegationPattern (0.00s) -2026-07-05T01:36:24.9530488Z === RUN TestMatchGlobPattern_SlashBoundary -2026-07-05T01:36:24.9531202Z === RUN TestMatchGlobPattern_SlashBoundary/single_star_does_not_cross_slash -2026-07-05T01:36:24.9532121Z === RUN TestMatchGlobPattern_SlashBoundary/single_star_matches_one_segment -2026-07-05T01:36:24.9532956Z === RUN TestMatchGlobPattern_SlashBoundary/dir_star_does_not_descend -2026-07-05T01:36:24.9533781Z === RUN TestMatchGlobPattern_SlashBoundary/dir_star_matches_direct_child -2026-07-05T01:36:24.9534928Z === RUN TestMatchGlobPattern_SlashBoundary/doublestar_still_matches_nested_files -2026-07-05T01:36:24.9535710Z --- PASS: TestMatchGlobPattern_SlashBoundary (0.00s) -2026-07-05T01:36:24.9536707Z --- PASS: TestMatchGlobPattern_SlashBoundary/single_star_does_not_cross_slash (0.00s) -2026-07-05T01:36:24.9537846Z --- PASS: TestMatchGlobPattern_SlashBoundary/single_star_matches_one_segment (0.00s) -2026-07-05T01:36:24.9538937Z --- PASS: TestMatchGlobPattern_SlashBoundary/dir_star_does_not_descend (0.00s) -2026-07-05T01:36:24.9540195Z --- PASS: TestMatchGlobPattern_SlashBoundary/dir_star_matches_direct_child (0.00s) -2026-07-05T01:36:24.9541391Z --- PASS: TestMatchGlobPattern_SlashBoundary/doublestar_still_matches_nested_files (0.00s) -2026-07-05T01:36:24.9542238Z === RUN TestMatchGlobPattern_StripsNegation -2026-07-05T01:36:24.9542833Z --- PASS: TestMatchGlobPattern_StripsNegation (0.00s) -2026-07-05T01:36:24.9543380Z === RUN TestGetPromotionModes -2026-07-05T01:36:24.9543853Z --- PASS: TestGetPromotionModes (0.00s) -2026-07-05T01:36:24.9544340Z === RUN TestGetCascadeTargets -2026-07-05T01:36:24.9544786Z --- PASS: TestGetCascadeTargets (0.00s) -2026-07-05T01:36:24.9545284Z === RUN TestGetAllDirectPromotionOptions -2026-07-05T01:36:24.9545852Z --- PASS: TestGetAllDirectPromotionOptions (0.00s) -2026-07-05T01:36:24.9546450Z === RUN TestGetAllDirectPromotionOptions_TwoEnvs -2026-07-05T01:36:24.9547084Z --- PASS: TestGetAllDirectPromotionOptions_TwoEnvs (0.00s) -2026-07-05T01:36:24.9547734Z === RUN TestGetAllDirectPromotionOptions_SingleEnv -2026-07-05T01:36:24.9548391Z --- PASS: TestGetAllDirectPromotionOptions_SingleEnv (0.00s) -2026-07-05T01:36:24.9548997Z === RUN TestIsSingleEnvironment -2026-07-05T01:36:24.9549472Z --- PASS: TestIsSingleEnvironment (0.00s) -2026-07-05T01:36:24.9549969Z === RUN TestIsFirstEnvironment -2026-07-05T01:36:24.9550580Z --- PASS: TestIsFirstEnvironment (0.00s) -2026-07-05T01:36:24.9551074Z === RUN TestIsLastEnvironment -2026-07-05T01:36:24.9551707Z --- PASS: TestIsLastEnvironment (0.00s) -2026-07-05T01:36:24.9552192Z === RUN TestGetEnvironmentIndex -2026-07-05T01:36:24.9552660Z --- PASS: TestGetEnvironmentIndex (0.00s) -2026-07-05T01:36:24.9553155Z === RUN TestGetNextEnvironment -2026-07-05T01:36:24.9553609Z --- PASS: TestGetNextEnvironment (0.00s) -2026-07-05T01:36:24.9554096Z === RUN TestGetEnvironmentsInRange -2026-07-05T01:36:24.9554615Z === RUN TestGetEnvironmentsInRange/dev_to_uat -2026-07-05T01:36:24.9555195Z === RUN TestGetEnvironmentsInRange/staging_to_perf -2026-07-05T01:36:24.9555837Z === RUN TestGetEnvironmentsInRange/single_environment -2026-07-05T01:36:24.9556424Z === RUN TestGetEnvironmentsInRange/full_range -2026-07-05T01:36:24.9556991Z === RUN TestGetEnvironmentsInRange/invalid_start -2026-07-05T01:36:24.9557560Z === RUN TestGetEnvironmentsInRange/invalid_end -2026-07-05T01:36:24.9558120Z === RUN TestGetEnvironmentsInRange/reverse_order -2026-07-05T01:36:24.9558739Z --- PASS: TestGetEnvironmentsInRange (0.00s) -2026-07-05T01:36:24.9559444Z --- PASS: TestGetEnvironmentsInRange/dev_to_uat (0.00s) -2026-07-05T01:36:24.9560393Z --- PASS: TestGetEnvironmentsInRange/staging_to_perf (0.00s) -2026-07-05T01:36:24.9561230Z --- PASS: TestGetEnvironmentsInRange/single_environment (0.00s) -2026-07-05T01:36:24.9562023Z --- PASS: TestGetEnvironmentsInRange/full_range (0.00s) -2026-07-05T01:36:24.9562779Z --- PASS: TestGetEnvironmentsInRange/invalid_start (0.00s) -2026-07-05T01:36:24.9563558Z --- PASS: TestGetEnvironmentsInRange/invalid_end (0.00s) -2026-07-05T01:36:24.9564333Z --- PASS: TestGetEnvironmentsInRange/reverse_order (0.00s) -2026-07-05T01:36:24.9564933Z === RUN TestGetTriggersForDeploy -2026-07-05T01:36:24.9565433Z === RUN TestGetTriggersForDeploy/app-deploy -2026-07-05T01:36:24.9565960Z === RUN TestGetTriggersForDeploy/cdk -2026-07-05T01:36:24.9566447Z === RUN TestGetTriggersForDeploy/notify -2026-07-05T01:36:24.9566977Z === RUN TestGetTriggersForDeploy/nonexistent -2026-07-05T01:36:24.9567517Z --- PASS: TestGetTriggersForDeploy (0.00s) -2026-07-05T01:36:24.9568367Z --- PASS: TestGetTriggersForDeploy/app-deploy (0.00s) -2026-07-05T01:36:24.9569066Z --- PASS: TestGetTriggersForDeploy/cdk (0.00s) -2026-07-05T01:36:24.9569734Z --- PASS: TestGetTriggersForDeploy/notify (0.00s) -2026-07-05T01:36:24.9570605Z --- PASS: TestGetTriggersForDeploy/nonexistent (0.00s) -2026-07-05T01:36:24.9571258Z === RUN TestGetTriggersForDeploy_MultipleBuildsFirstMatch -2026-07-05T01:36:24.9572010Z --- PASS: TestGetTriggersForDeploy_MultipleBuildsFirstMatch (0.00s) -2026-07-05T01:36:24.9572766Z === RUN TestGetTriggersForDeploy_MultipleDependsOnUsesFirst -2026-07-05T01:36:24.9573535Z --- PASS: TestGetTriggersForDeploy_MultipleDependsOnUsesFirst (0.00s) -2026-07-05T01:36:24.9574284Z === RUN TestGetTriggersForDeploy_DependsOnNonexistentBuild -2026-07-05T01:36:24.9575035Z --- PASS: TestGetTriggersForDeploy_DependsOnNonexistentBuild (0.00s) -2026-07-05T01:36:24.9575726Z === RUN TestGetTriggersForDeploy_EmptyDependsOn -2026-07-05T01:36:24.9576368Z --- PASS: TestGetTriggersForDeploy_EmptyDependsOn (0.00s) -2026-07-05T01:36:24.9577087Z === RUN TestGetTriggersForDeploy_TriggersPreferredOverDependsOn -2026-07-05T01:36:24.9577957Z --- PASS: TestGetTriggersForDeploy_TriggersPreferredOverDependsOn (0.00s) -2026-07-05T01:36:24.9578709Z === RUN TestGetTriggersForDeploy_EmptyTriggers -2026-07-05T01:36:24.9579326Z --- PASS: TestGetTriggersForDeploy_EmptyTriggers (0.00s) -2026-07-05T01:36:24.9580133Z === RUN TestGetTriggersForDeploy_MultipleTriggerPatterns -2026-07-05T01:36:24.9580864Z --- PASS: TestGetTriggersForDeploy_MultipleTriggerPatterns (0.00s) -2026-07-05T01:36:24.9581575Z === RUN TestGetTriggersForDeploy_BuildWithNoTriggers -2026-07-05T01:36:24.9582246Z --- PASS: TestGetTriggersForDeploy_BuildWithNoTriggers (0.00s) -2026-07-05T01:36:24.9582832Z === RUN TestGetCLIVersion -2026-07-05T01:36:24.9583270Z --- PASS: TestGetCLIVersion (0.00s) -2026-07-05T01:36:24.9583716Z === RUN TestGetTagPrefix -2026-07-05T01:36:24.9584322Z --- PASS: TestGetTagPrefix (0.00s) -2026-07-05T01:36:24.9584777Z === RUN TestGetReleaseToken -2026-07-05T01:36:24.9585325Z === RUN TestGetReleaseToken/both_unset_defaults_to_GITHUB_TOKEN -2026-07-05T01:36:24.9586109Z === RUN TestGetReleaseToken/release_token_full_expression_passes_through -2026-07-05T01:36:24.9586926Z === RUN TestGetReleaseToken/release_token_bare_name_normalizes_to_secret -2026-07-05T01:36:24.9587689Z === RUN TestGetReleaseToken/release_token_context_form_wraps -2026-07-05T01:36:24.9588536Z === RUN TestGetReleaseToken/state_token_set_release_token_unset_falls_back_to_state_token -2026-07-05T01:36:24.9589517Z === RUN TestGetReleaseToken/bare_state_token_name_normalizes_on_fallback -2026-07-05T01:36:24.9590466Z === RUN TestGetReleaseToken/release_token_wins_over_state_token -2026-07-05T01:36:24.9591368Z === RUN TestGetReleaseToken/app-backed_state_with_static_state_token_falls_back_to_static -2026-07-05T01:36:24.9592429Z === RUN TestGetReleaseToken/app-only_state_without_static_token_keeps_GITHUB_TOKEN_default -2026-07-05T01:36:24.9593240Z --- PASS: TestGetReleaseToken (0.00s) -2026-07-05T01:36:24.9594053Z --- PASS: TestGetReleaseToken/both_unset_defaults_to_GITHUB_TOKEN (0.00s) -2026-07-05T01:36:24.9595121Z --- PASS: TestGetReleaseToken/release_token_full_expression_passes_through (0.00s) -2026-07-05T01:36:24.9596221Z --- PASS: TestGetReleaseToken/release_token_bare_name_normalizes_to_secret (0.00s) -2026-07-05T01:36:24.9597244Z --- PASS: TestGetReleaseToken/release_token_context_form_wraps (0.00s) -2026-07-05T01:36:24.9598404Z --- PASS: TestGetReleaseToken/state_token_set_release_token_unset_falls_back_to_state_token (0.00s) -2026-07-05T01:36:24.9599611Z --- PASS: TestGetReleaseToken/bare_state_token_name_normalizes_on_fallback (0.00s) -2026-07-05T01:36:24.9600791Z --- PASS: TestGetReleaseToken/release_token_wins_over_state_token (0.00s) -2026-07-05T01:36:24.9601988Z --- PASS: TestGetReleaseToken/app-backed_state_with_static_state_token_falls_back_to_static (0.00s) -2026-07-05T01:36:24.9603590Z --- PASS: TestGetReleaseToken/app-only_state_without_static_token_keeps_GITHUB_TOKEN_default (0.00s) -2026-07-05T01:36:24.9604426Z === RUN TestGetStateToken -2026-07-05T01:36:24.9604855Z --- PASS: TestGetStateToken (0.00s) -2026-07-05T01:36:24.9605332Z === RUN TestNotifyConfigGetToken -2026-07-05T01:36:24.9605821Z --- PASS: TestNotifyConfigGetToken (0.00s) -2026-07-05T01:36:24.9606335Z === RUN TestNormalizeTokenExpression -2026-07-05T01:36:24.9606934Z === RUN TestNormalizeTokenExpression/full_secrets_expression -2026-07-05T01:36:24.9607625Z === RUN TestNormalizeTokenExpression/full_vars_expression -2026-07-05T01:36:24.9608296Z === RUN TestNormalizeTokenExpression/bare_secret_name -2026-07-05T01:36:24.9608972Z === RUN TestNormalizeTokenExpression/unwrapped_secrets_context -2026-07-05T01:36:24.9609684Z === RUN TestNormalizeTokenExpression/unwrapped_vars_context -2026-07-05T01:36:24.9610594Z === RUN TestNormalizeTokenExpression/surrounding_whitespace_trimmed -2026-07-05T01:36:24.9611341Z === RUN TestNormalizeTokenExpression/empty_stays_empty -2026-07-05T01:36:24.9611947Z --- PASS: TestNormalizeTokenExpression (0.00s) -2026-07-05T01:36:24.9612756Z --- PASS: TestNormalizeTokenExpression/full_secrets_expression (0.00s) -2026-07-05T01:36:24.9613687Z --- PASS: TestNormalizeTokenExpression/full_vars_expression (0.00s) -2026-07-05T01:36:24.9614566Z --- PASS: TestNormalizeTokenExpression/bare_secret_name (0.00s) -2026-07-05T01:36:24.9615496Z --- PASS: TestNormalizeTokenExpression/unwrapped_secrets_context (0.00s) -2026-07-05T01:36:24.9616467Z --- PASS: TestNormalizeTokenExpression/unwrapped_vars_context (0.00s) -2026-07-05T01:36:24.9617479Z --- PASS: TestNormalizeTokenExpression/surrounding_whitespace_trimmed (0.00s) -2026-07-05T01:36:24.9618481Z --- PASS: TestNormalizeTokenExpression/empty_stays_empty (0.00s) -2026-07-05T01:36:24.9619075Z === RUN TestGetGitMode -2026-07-05T01:36:24.9619476Z --- PASS: TestGetGitMode (0.00s) -2026-07-05T01:36:24.9620295Z === RUN TestGetGitUserName -2026-07-05T01:36:24.9620745Z --- PASS: TestGetGitUserName (0.00s) -2026-07-05T01:36:24.9621208Z === RUN TestGetGitUserEmail -2026-07-05T01:36:24.9621638Z --- PASS: TestGetGitUserEmail (0.00s) -2026-07-05T01:36:24.9622089Z === RUN TestHasGPGSigning -2026-07-05T01:36:24.9622506Z --- PASS: TestHasGPGSigning (0.00s) -2026-07-05T01:36:24.9622964Z === RUN TestHasReleaseArtifacts -2026-07-05T01:36:24.9623428Z --- PASS: TestHasReleaseArtifacts (0.00s) -2026-07-05T01:36:24.9623936Z === RUN TestGetAllReleaseArtifacts -2026-07-05T01:36:24.9624455Z --- PASS: TestGetAllReleaseArtifacts (0.00s) -2026-07-05T01:36:24.9624933Z === RUN TestJobID -2026-07-05T01:36:24.9625285Z --- PASS: TestJobID (0.00s) -2026-07-05T01:36:24.9625705Z === RUN TestOutputKey -2026-07-05T01:36:24.9626090Z --- PASS: TestOutputKey (0.00s) -2026-07-05T01:36:24.9626498Z === RUN TestDisplayName -2026-07-05T01:36:24.9626905Z --- PASS: TestDisplayName (0.00s) -2026-07-05T01:36:24.9627361Z === RUN TestResolveDependency -2026-07-05T01:36:24.9627892Z === RUN TestResolveDependency/build:app_from_deploy -2026-07-05T01:36:24.9628513Z === RUN TestResolveDependency/build:worker_from_deploy -2026-07-05T01:36:24.9629123Z === RUN TestResolveDependency/deploy:infra_from_deploy -2026-07-05T01:36:24.9629771Z === RUN TestResolveDependency/validate:anything_from_build -2026-07-05T01:36:24.9630622Z === RUN TestResolveDependency/build:nonexistent_from_deploy -2026-07-05T01:36:24.9631313Z === RUN TestResolveDependency/deploy:nonexistent_from_deploy -2026-07-05T01:36:24.9631968Z === RUN TestResolveDependency/unknown:app_from_deploy -2026-07-05T01:36:24.9632554Z === RUN TestResolveDependency/app_from_deploy -2026-07-05T01:36:24.9633111Z === RUN TestResolveDependency/infra_from_deploy -2026-07-05T01:36:24.9633665Z === RUN TestResolveDependency/worker_from_build -2026-07-05T01:36:24.9634315Z === RUN TestResolveDependency/nonexistent_from_deploy -2026-07-05T01:36:24.9634875Z --- PASS: TestResolveDependency (0.00s) -2026-07-05T01:36:24.9635591Z --- PASS: TestResolveDependency/build:app_from_deploy (0.00s) -2026-07-05T01:36:24.9636746Z --- PASS: TestResolveDependency/build:worker_from_deploy (0.00s) -2026-07-05T01:36:24.9637604Z --- PASS: TestResolveDependency/deploy:infra_from_deploy (0.00s) -2026-07-05T01:36:24.9638458Z --- PASS: TestResolveDependency/validate:anything_from_build (0.00s) -2026-07-05T01:36:24.9639405Z --- PASS: TestResolveDependency/build:nonexistent_from_deploy (0.00s) -2026-07-05T01:36:24.9640471Z --- PASS: TestResolveDependency/deploy:nonexistent_from_deploy (0.00s) -2026-07-05T01:36:24.9641374Z --- PASS: TestResolveDependency/unknown:app_from_deploy (0.00s) -2026-07-05T01:36:24.9642159Z --- PASS: TestResolveDependency/app_from_deploy (0.00s) -2026-07-05T01:36:24.9642924Z --- PASS: TestResolveDependency/infra_from_deploy (0.00s) -2026-07-05T01:36:24.9643691Z --- PASS: TestResolveDependency/worker_from_build (0.00s) -2026-07-05T01:36:24.9644492Z --- PASS: TestResolveDependency/nonexistent_from_deploy (0.00s) -2026-07-05T01:36:24.9645193Z === RUN TestResolveDependency_SameNamePrefersBuilds -2026-07-05T01:36:24.9645849Z --- PASS: TestResolveDependency_SameNamePrefersBuilds (0.00s) -2026-07-05T01:36:24.9646492Z === RUN TestResolveDependency_NoValidate -2026-07-05T01:36:24.9647046Z --- PASS: TestResolveDependency_NoValidate (0.00s) -2026-07-05T01:36:24.9647563Z === RUN TestIsPrimary -2026-07-05T01:36:24.9647968Z === RUN TestIsPrimary/no_external_repos -2026-07-05T01:36:24.9648459Z === RUN TestIsPrimary/with_external_repos -2026-07-05T01:36:24.9648956Z === RUN TestIsPrimary/with_empty_external -2026-07-05T01:36:24.9649433Z --- PASS: TestIsPrimary (0.00s) -2026-07-05T01:36:24.9650158Z --- PASS: TestIsPrimary/no_external_repos (0.00s) -2026-07-05T01:36:24.9650836Z --- PASS: TestIsPrimary/with_external_repos (0.00s) -2026-07-05T01:36:24.9651510Z --- PASS: TestIsPrimary/with_empty_external (0.00s) -2026-07-05T01:36:24.9652030Z === RUN TestIsSatellite -2026-07-05T01:36:24.9652643Z === RUN TestIsSatellite/no_notify_config -2026-07-05T01:36:24.9653150Z === RUN TestIsSatellite/with_notify_config -2026-07-05T01:36:24.9653644Z === RUN TestIsSatellite/with_nil_notify -2026-07-05T01:36:24.9654103Z --- PASS: TestIsSatellite (0.00s) -2026-07-05T01:36:24.9654700Z --- PASS: TestIsSatellite/no_notify_config (0.00s) -2026-07-05T01:36:24.9655385Z --- PASS: TestIsSatellite/with_notify_config (0.00s) -2026-07-05T01:36:24.9656070Z --- PASS: TestIsSatellite/with_nil_notify (0.00s) -2026-07-05T01:36:24.9656591Z === RUN TestGetExternalDeploy -2026-07-05T01:36:24.9657044Z --- PASS: TestGetExternalDeploy (0.00s) -2026-07-05T01:36:24.9657537Z === RUN TestGetAllExternalDeploys -2026-07-05T01:36:24.9658030Z --- PASS: TestGetAllExternalDeploys (0.00s) -2026-07-05T01:36:24.9658617Z === RUN TestGetAllExternalDeployNames -2026-07-05T01:36:24.9659145Z --- PASS: TestGetAllExternalDeployNames (0.00s) -2026-07-05T01:36:24.9659680Z === RUN TestNotifyConfig_GetWorkflow -2026-07-05T01:36:24.9660392Z === RUN TestNotifyConfig_GetWorkflow/default_workflow -2026-07-05T01:36:24.9661002Z === RUN TestNotifyConfig_GetWorkflow/custom_workflow -2026-07-05T01:36:24.9661579Z --- PASS: TestNotifyConfig_GetWorkflow (0.00s) -2026-07-05T01:36:24.9662335Z --- PASS: TestNotifyConfig_GetWorkflow/default_workflow (0.00s) -2026-07-05T01:36:24.9663172Z --- PASS: TestNotifyConfig_GetWorkflow/custom_workflow (0.00s) -2026-07-05T01:36:24.9663771Z === RUN TestNotifyConfig_GetToken -2026-07-05T01:36:24.9664271Z === RUN TestNotifyConfig_GetToken/default_token -2026-07-05T01:36:24.9664846Z === RUN TestNotifyConfig_GetToken/custom_token -2026-07-05T01:36:24.9665381Z --- PASS: TestNotifyConfig_GetToken (0.00s) -2026-07-05T01:36:24.9666065Z --- PASS: TestNotifyConfig_GetToken/default_token (0.00s) -2026-07-05T01:36:24.9666800Z --- PASS: TestNotifyConfig_GetToken/custom_token (0.00s) -2026-07-05T01:36:24.9667541Z === RUN TestNotifyConfig_DeployNameAndEnvironmentOverrides_RoundTrip -2026-07-05T01:36:24.9668430Z --- PASS: TestNotifyConfig_DeployNameAndEnvironmentOverrides_RoundTrip (0.00s) -2026-07-05T01:36:24.9669426Z === RUN TestNotifyConfig_Overrides_OmittedWhenUnset -2026-07-05T01:36:24.9670223Z --- PASS: TestNotifyConfig_Overrides_OmittedWhenUnset (0.00s) -2026-07-05T01:36:24.9670832Z === RUN TestExternalRepoConfig_GetRef -2026-07-05T01:36:24.9672301Z === RUN TestExternalRepoConfig_GetRef/explicit_ref -2026-07-05T01:36:24.9672960Z === RUN TestExternalRepoConfig_GetRef/no_ref_uses_trunk_branch -2026-07-05T01:36:24.9673600Z --- PASS: TestExternalRepoConfig_GetRef (0.00s) -2026-07-05T01:36:24.9674333Z --- PASS: TestExternalRepoConfig_GetRef/explicit_ref (0.00s) -2026-07-05T01:36:24.9675185Z --- PASS: TestExternalRepoConfig_GetRef/no_ref_uses_trunk_branch (0.00s) -2026-07-05T01:36:24.9675853Z === RUN TestResolveDependency_External -2026-07-05T01:36:24.9676428Z --- PASS: TestResolveDependency_External (0.00s) -2026-07-05T01:36:24.9676964Z === RUN TestComponentsRoundTrip -2026-07-05T01:36:24.9677168Z --- PASS: TestComponentsRoundTrip (0.01s) -2026-07-05T01:36:24.9677406Z === RUN TestComponentsOmittedChangesNothing -2026-07-05T01:36:24.9677655Z --- PASS: TestComponentsOmittedChangesNothing (0.00s) -2026-07-05T01:36:24.9677836Z === RUN TestValidateCanaryFields -2026-07-05T01:36:24.9678040Z === PAUSE TestValidateCanaryFields -2026-07-05T01:36:24.9678277Z === RUN TestValidateDeployTargetReservedFields -2026-07-05T01:36:24.9678530Z === PAUSE TestValidateDeployTargetReservedFields -2026-07-05T01:36:24.9678851Z === RUN TestValidateDeployTargetReservedFieldsViaManifest -2026-07-05T01:36:24.9679156Z === PAUSE TestValidateDeployTargetReservedFieldsViaManifest -2026-07-05T01:36:24.9679375Z === RUN TestValidateEnvironmentConfigFields -2026-07-05T01:36:24.9679583Z === PAUSE TestValidateEnvironmentConfigFields -2026-07-05T01:36:24.9679831Z === RUN TestParseEnvironmentConfigReservedFields -2026-07-05T01:36:24.9680247Z === PAUSE TestParseEnvironmentConfigReservedFields -2026-07-05T01:36:24.9680466Z === RUN TestValidateLocalCallbackWorkflowPath -2026-07-05T01:36:24.9680929Z === PAUSE TestValidateLocalCallbackWorkflowPath -2026-07-05T01:36:24.9681191Z === RUN TestValidate_RollbackRepositoryDispatch_Valid -2026-07-05T01:36:24.9681509Z --- PASS: TestValidate_RollbackRepositoryDispatch_Valid (0.00s) -2026-07-05T01:36:24.9681796Z === RUN TestValidate_RollbackRepositoryDispatch_NilIsValid -2026-07-05T01:36:24.9682136Z --- PASS: TestValidate_RollbackRepositoryDispatch_NilIsValid (0.00s) -2026-07-05T01:36:24.9682467Z === RUN TestValidate_RollbackRepositoryDispatch_EmptyTypesRejected -2026-07-05T01:36:24.9682899Z --- PASS: TestValidate_RollbackRepositoryDispatch_EmptyTypesRejected (0.00s) -2026-07-05T01:36:24.9683233Z === RUN TestValidate_RollbackRepositoryDispatch_BlankTypeRejected -2026-07-05T01:36:24.9683619Z --- PASS: TestValidate_RollbackRepositoryDispatch_BlankTypeRejected (0.00s) -2026-07-05T01:36:24.9683936Z === RUN TestValidate_RollbackRepositoryDispatch_UnsafeTypeRejected -2026-07-05T01:36:24.9684332Z --- PASS: TestValidate_RollbackRepositoryDispatch_UnsafeTypeRejected (0.00s) -2026-07-05T01:36:24.9684702Z === RUN TestValidate_RollbackRepositoryDispatch_SchemaVersionUnchanged -2026-07-05T01:36:24.9685122Z --- PASS: TestValidate_RollbackRepositoryDispatch_SchemaVersionUnchanged (0.00s) -2026-07-05T01:36:24.9685338Z === RUN TestValidateTelemetryReservedFields -2026-07-05T01:36:24.9685546Z === PAUSE TestValidateTelemetryReservedFields -2026-07-05T01:36:24.9685758Z === RUN TestParseTelemetryReservedFields -2026-07-05T01:36:24.9685958Z === PAUSE TestParseTelemetryReservedFields -2026-07-05T01:36:24.9686211Z === RUN TestParseTelemetryJobSummaryUnsetVsFalse -2026-07-05T01:36:24.9686449Z === PAUSE TestParseTelemetryJobSummaryUnsetVsFalse -2026-07-05T01:36:24.9686733Z === RUN TestValidateVersionOverridesReservedField -2026-07-05T01:36:24.9686988Z === PAUSE TestValidateVersionOverridesReservedField -2026-07-05T01:36:24.9687215Z === RUN TestParseVersionOverridesReservedField -2026-07-05T01:36:24.9687449Z === PAUSE TestParseVersionOverridesReservedField -2026-07-05T01:36:24.9687694Z === RUN TestParseVersionOverridesAbsentStaysValid -2026-07-05T01:36:24.9688117Z === PAUSE TestParseVersionOverridesAbsentStaysValid -2026-07-05T01:36:24.9688352Z === CONT TestValidateDeployTargetReservedFields -2026-07-05T01:36:24.9688847Z === RUN TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid -2026-07-05T01:36:24.9689345Z === PAUSE TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid -2026-07-05T01:36:24.9689788Z === RUN TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected -2026-07-05T01:36:24.9690254Z === CONT TestParseVersionOverridesAbsentStaysValid -2026-07-05T01:36:24.9690563Z --- PASS: TestParseVersionOverridesAbsentStaysValid (0.00s) -2026-07-05T01:36:24.9690788Z === CONT TestParseVersionOverridesReservedField -2026-07-05T01:36:24.9691070Z --- PASS: TestParseVersionOverridesReservedField (0.00s) -2026-07-05T01:36:24.9691308Z === CONT TestValidateVersionOverridesReservedField -2026-07-05T01:36:24.9691698Z === RUN TestValidateVersionOverridesReservedField/nil_release_is_valid -2026-07-05T01:36:24.9691950Z === CONT TestParseTelemetryJobSummaryUnsetVsFalse -2026-07-05T01:36:24.9692247Z === CONT TestValidateDeployTargetReservedFieldsViaManifest -2026-07-05T01:36:24.9692615Z --- PASS: TestValidateDeployTargetReservedFieldsViaManifest (0.00s) -2026-07-05T01:36:24.9692836Z === CONT TestValidateTelemetryReservedFields -2026-07-05T01:36:24.9693181Z === RUN TestValidateTelemetryReservedFields/nil_telemetry_is_valid -2026-07-05T01:36:24.9693525Z === PAUSE TestValidateTelemetryReservedFields/nil_telemetry_is_valid -2026-07-05T01:36:24.9693925Z === RUN TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid -2026-07-05T01:36:24.9694335Z === PAUSE TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid -2026-07-05T01:36:24.9694899Z === RUN TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) -2026-07-05T01:36:24.9695648Z === PAUSE TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) -2026-07-05T01:36:24.9696255Z === RUN TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid -2026-07-05T01:36:24.9696833Z === PAUSE TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid -2026-07-05T01:36:24.9697171Z === RUN TestValidateTelemetryReservedFields/http_url_is_accepted -2026-07-05T01:36:24.9697496Z === PAUSE TestValidateTelemetryReservedFields/http_url_is_accepted -2026-07-05T01:36:24.9697850Z === RUN TestValidateTelemetryReservedFields/non-http_url_is_rejected -2026-07-05T01:36:24.9698193Z === PAUSE TestValidateTelemetryReservedFields/non-http_url_is_rejected -2026-07-05T01:36:24.9698721Z === RUN TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected -2026-07-05T01:36:24.9699248Z === PAUSE TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected -2026-07-05T01:36:24.9699739Z === RUN TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected -2026-07-05T01:36:24.9700480Z === PAUSE TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected -2026-07-05T01:36:24.9700974Z === RUN TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) -2026-07-05T01:36:24.9701446Z === PAUSE TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) -2026-07-05T01:36:24.9701789Z === CONT TestValidateLocalCallbackWorkflowPath -2026-07-05T01:36:24.9702201Z === RUN TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted -2026-07-05T01:36:24.9702671Z === PAUSE TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted -2026-07-05T01:36:24.9703219Z === RUN TestValidateLocalCallbackWorkflowPath/bare_filename_accepted -2026-07-05T01:36:24.9703629Z === PAUSE TestValidateLocalCallbackWorkflowPath/bare_filename_accepted -2026-07-05T01:36:24.9704238Z === RUN TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted -2026-07-05T01:36:24.9704795Z === PAUSE TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted -2026-07-05T01:36:24.9705544Z === RUN TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted -2026-07-05T01:36:24.9706065Z === PAUSE TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted -2026-07-05T01:36:24.9706567Z === RUN TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted -2026-07-05T01:36:24.9707165Z === PAUSE TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted -2026-07-05T01:36:24.9707696Z === RUN TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected -2026-07-05T01:36:24.9708236Z === PAUSE TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected -2026-07-05T01:36:24.9708689Z === RUN TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected -2026-07-05T01:36:24.9709172Z === PAUSE TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected -2026-07-05T01:36:24.9709749Z === RUN TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected -2026-07-05T01:36:24.9710487Z === PAUSE TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected -2026-07-05T01:36:24.9710808Z === CONT TestParseTelemetryReservedFields -2026-07-05T01:36:24.9711126Z --- PASS: TestParseTelemetryReservedFields (0.00s) -2026-07-05T01:36:24.9711447Z === CONT TestParseEnvironmentConfigReservedFields -2026-07-05T01:36:24.9712016Z === PAUSE TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected -2026-07-05T01:36:24.9712795Z === RUN TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected -2026-07-05T01:36:24.9713493Z === PAUSE TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected -2026-07-05T01:36:24.9714052Z === RUN TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected -2026-07-05T01:36:24.9714667Z === PAUSE TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected -2026-07-05T01:36:24.9715659Z === RUN TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected -2026-07-05T01:36:24.9716184Z === PAUSE TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected -2026-07-05T01:36:24.9716753Z === RUN TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected -2026-07-05T01:36:24.9717263Z === PAUSE TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected -2026-07-05T01:36:24.9717780Z === RUN TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected -2026-07-05T01:36:24.9718470Z === PAUSE TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected -2026-07-05T01:36:24.9719030Z === RUN TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid -2026-07-05T01:36:24.9719633Z === PAUSE TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid -2026-07-05T01:36:24.9720319Z === CONT TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid -2026-07-05T01:36:24.9720896Z === CONT TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) -2026-07-05T01:36:24.9736997Z === CONT TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected -2026-07-05T01:36:24.9737452Z === CONT TestValidateTelemetryReservedFields/non-http_url_is_rejected -2026-07-05T01:36:24.9738020Z === CONT TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected -2026-07-05T01:36:24.9738632Z === CONT TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid -2026-07-05T01:36:24.9739224Z === CONT TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) -2026-07-05T01:36:24.9739581Z === CONT TestValidateTelemetryReservedFields/http_url_is_accepted -2026-07-05T01:36:24.9739938Z === CONT TestValidateTelemetryReservedFields/nil_telemetry_is_valid -2026-07-05T01:36:24.9740523Z === CONT TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted -2026-07-05T01:36:24.9741215Z === CONT TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected -2026-07-05T01:36:24.9741406Z === CONT TestValidateCanaryFields -2026-07-05T01:36:24.9743609Z === RUN TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion -2026-07-05T01:36:24.9744069Z === PAUSE TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion -2026-07-05T01:36:24.9744330Z === RUN TestValidateCanaryFields/percent_valid_range -2026-07-05T01:36:24.9744594Z --- PASS: TestValidateTelemetryReservedFields (0.00s) -2026-07-05T01:36:24.9745214Z --- PASS: TestValidateTelemetryReservedFields/enabled_with_no_webhook_is_valid (0.00s) -2026-07-05T01:36:24.9745932Z --- PASS: TestValidateTelemetryReservedFields/empty_webhook_fields_are_valid_(shape_only) (0.00s) -2026-07-05T01:36:24.9746678Z --- PASS: TestValidateTelemetryReservedFields/secret_name_starting_with_a_digit_is_rejected (0.00s) -2026-07-05T01:36:24.9747280Z --- PASS: TestValidateTelemetryReservedFields/non-http_url_is_rejected (0.00s) -2026-07-05T01:36:24.9748063Z --- PASS: TestValidateTelemetryReservedFields/secret_name_with_dollar_interpolation_is_rejected (0.00s) -2026-07-05T01:36:24.9748873Z --- PASS: TestValidateTelemetryReservedFields/full_webhook_with_https_url_and_safe_secret_name_is_valid (0.00s) -2026-07-05T01:36:24.9749688Z --- PASS: TestValidateTelemetryReservedFields/arbitrary_adapter_still_validates_(no_enum_enforcement) (0.00s) -2026-07-05T01:36:24.9750362Z --- PASS: TestValidateTelemetryReservedFields/http_url_is_accepted (0.00s) -2026-07-05T01:36:24.9750891Z --- PASS: TestValidateTelemetryReservedFields/nil_telemetry_is_valid (0.00s) -2026-07-05T01:36:24.9751139Z === PAUSE TestValidateCanaryFields/percent_valid_range -2026-07-05T01:36:24.9751459Z === RUN TestValidateCanaryFields/percent_zero_is_unset_and_valid -2026-07-05T01:36:24.9751776Z === PAUSE TestValidateCanaryFields/percent_zero_is_unset_and_valid -2026-07-05T01:36:24.9752241Z === RUN TestValidateCanaryFields/percent_101_rejected -2026-07-05T01:36:24.9752496Z === PAUSE TestValidateCanaryFields/percent_101_rejected -2026-07-05T01:36:24.9752727Z === RUN TestValidateCanaryFields/percent_-1_rejected -2026-07-05T01:36:24.9752968Z === PAUSE TestValidateCanaryFields/percent_-1_rejected -2026-07-05T01:36:24.9753243Z === RUN TestValidateCanaryFields/bake_time_valid_durations -2026-07-05T01:36:24.9753512Z === PAUSE TestValidateCanaryFields/bake_time_valid_durations -2026-07-05T01:36:24.9753791Z === RUN TestValidateCanaryFields/bake_time_invalid_rejected -2026-07-05T01:36:24.9754065Z === PAUSE TestValidateCanaryFields/bake_time_invalid_rejected -2026-07-05T01:36:24.9754354Z === RUN TestValidateCanaryFields/promote_callback_valid_paths -2026-07-05T01:36:24.9754650Z === PAUSE TestValidateCanaryFields/promote_callback_valid_paths -2026-07-05T01:36:24.9755007Z === RUN TestValidateCanaryFields/promote_callback_invalid_paths_rejected -2026-07-05T01:36:24.9755373Z === PAUSE TestValidateCanaryFields/promote_callback_invalid_paths_rejected -2026-07-05T01:36:24.9755680Z === RUN TestValidateCanaryFields/rollback_callback_valid_paths -2026-07-05T01:36:24.9755973Z === PAUSE TestValidateCanaryFields/rollback_callback_valid_paths -2026-07-05T01:36:24.9756342Z === RUN TestValidateCanaryFields/rollback_callback_invalid_paths_rejected -2026-07-05T01:36:24.9756752Z === PAUSE TestValidateCanaryFields/rollback_callback_invalid_paths_rejected -2026-07-05T01:36:24.9756978Z === CONT TestValidateEnvironmentConfigFields -2026-07-05T01:36:24.9757377Z === RUN TestValidateEnvironmentConfigFields/nil_environment_config_is_valid -2026-07-05T01:36:24.9757809Z === PAUSE TestValidateEnvironmentConfigFields/nil_environment_config_is_valid -2026-07-05T01:36:24.9758277Z === RUN TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) -2026-07-05T01:36:24.9758803Z === PAUSE TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) -2026-07-05T01:36:24.9759108Z === RUN TestValidateEnvironmentConfigFields/full_valid_block -2026-07-05T01:36:24.9759589Z === PAUSE TestValidateEnvironmentConfigFields/full_valid_block -2026-07-05T01:36:24.9759940Z === RUN TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid -2026-07-05T01:36:24.9760461Z === PAUSE TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid -2026-07-05T01:36:24.9760845Z === RUN TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid -2026-07-05T01:36:24.9761227Z === PAUSE TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid -2026-07-05T01:36:24.9761645Z === RUN TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected -2026-07-05T01:36:24.9762099Z === PAUSE TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected -2026-07-05T01:36:24.9762493Z === RUN TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected -2026-07-05T01:36:24.9762895Z === PAUSE TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected -2026-07-05T01:36:24.9763319Z === RUN TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid -2026-07-05T01:36:24.9763728Z === PAUSE TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid -2026-07-05T01:36:24.9764094Z === RUN TestValidateEnvironmentConfigFields/all_branch_policy_is_valid -2026-07-05T01:36:24.9764464Z === PAUSE TestValidateEnvironmentConfigFields/all_branch_policy_is_valid -2026-07-05T01:36:24.9764834Z === PAUSE TestValidateVersionOverridesReservedField/nil_release_is_valid -2026-07-05T01:36:24.9765245Z === RUN TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected -2026-07-05T01:36:24.9765646Z === PAUSE TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected -2026-07-05T01:36:24.9766193Z === RUN TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected -2026-07-05T01:36:24.9766713Z === RUN TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid -2026-07-05T01:36:24.9767237Z === PAUSE TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected -2026-07-05T01:36:24.9767951Z === PAUSE TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid -2026-07-05T01:36:24.9768425Z === RUN TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected -2026-07-05T01:36:24.9768936Z === RUN TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid -2026-07-05T01:36:24.9769435Z === PAUSE TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected -2026-07-05T01:36:24.9769825Z === RUN TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected -2026-07-05T01:36:24.9770389Z === PAUSE TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected -2026-07-05T01:36:24.9770908Z === PAUSE TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid -2026-07-05T01:36:24.9771500Z === RUN TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid -2026-07-05T01:36:24.9771941Z === RUN TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected -2026-07-05T01:36:24.9772358Z === PAUSE TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected -2026-07-05T01:36:24.9772871Z === RUN TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected -2026-07-05T01:36:24.9773469Z === PAUSE TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid -2026-07-05T01:36:24.9773861Z === RUN TestValidateVersionOverridesReservedField/absolute_dir_is_rejected -2026-07-05T01:36:24.9774373Z === PAUSE TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected -2026-07-05T01:36:24.9774762Z === PAUSE TestValidateVersionOverridesReservedField/absolute_dir_is_rejected -2026-07-05T01:36:24.9775248Z === RUN TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected -2026-07-05T01:36:24.9775734Z === PAUSE TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected -2026-07-05T01:36:24.9776204Z === RUN TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected -2026-07-05T01:36:24.9776855Z === RUN TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected -2026-07-05T01:36:24.9777321Z === PAUSE TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected -2026-07-05T01:36:24.9777787Z === PAUSE TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected -2026-07-05T01:36:24.9778271Z === RUN TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected -2026-07-05T01:36:24.9778723Z === PAUSE TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected -2026-07-05T01:36:24.9779214Z === CONT TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid -2026-07-05T01:36:24.9779651Z === CONT TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected -2026-07-05T01:36:24.9780272Z === CONT TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected -2026-07-05T01:36:24.9780738Z === CONT TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected -2026-07-05T01:36:24.9781162Z === CONT TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected -2026-07-05T01:36:24.9781751Z === CONT TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected -2026-07-05T01:36:24.9782244Z === CONT TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid -2026-07-05T01:36:24.9782693Z === CONT TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected -2026-07-05T01:36:24.9783125Z === CONT TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion -2026-07-05T01:36:24.9783421Z --- PASS: TestParseEnvironmentConfigReservedFields (0.00s) -2026-07-05T01:36:24.9783727Z === CONT TestValidateCanaryFields/rollback_callback_valid_paths -2026-07-05T01:36:24.9784174Z === RUN TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml -2026-07-05T01:36:24.9784833Z === PAUSE TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml -2026-07-05T01:36:24.9785170Z === RUN TestValidateCanaryFields/rollback_callback_valid_paths/x.yml -2026-07-05T01:36:24.9785509Z === PAUSE TestValidateCanaryFields/rollback_callback_valid_paths/x.yml -2026-07-05T01:36:24.9785880Z === CONT TestValidateCanaryFields/promote_callback_invalid_paths_rejected -2026-07-05T01:36:24.9786312Z === RUN TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml -2026-07-05T01:36:24.9786783Z === PAUSE TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml -2026-07-05T01:36:24.9787160Z === CONT TestValidateCanaryFields/rollback_callback_invalid_paths_rejected -2026-07-05T01:36:24.9787588Z === RUN TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml -2026-07-05T01:36:24.9788033Z === PAUSE TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml -2026-07-05T01:36:24.9788467Z === RUN TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml -2026-07-05T01:36:24.9788753Z === CONT TestValidateCanaryFields/bake_time_invalid_rejected -2026-07-05T01:36:24.9789053Z === CONT TestValidateCanaryFields/promote_callback_valid_paths -2026-07-05T01:36:24.9789483Z === RUN TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml -2026-07-05T01:36:24.9789926Z === PAUSE TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml -2026-07-05T01:36:24.9790508Z === PAUSE TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml -2026-07-05T01:36:24.9790801Z --- PASS: TestParseTelemetryJobSummaryUnsetVsFalse (0.01s) -2026-07-05T01:36:24.9791236Z === RUN TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml -2026-07-05T01:36:24.9791670Z === PAUSE TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml -2026-07-05T01:36:24.9791999Z === RUN TestValidateCanaryFields/promote_callback_valid_paths/x.yml -2026-07-05T01:36:24.9792594Z === PAUSE TestValidateCanaryFields/promote_callback_valid_paths/x.yml -2026-07-05T01:36:24.9792874Z --- PASS: TestValidateDeployTargetReservedFields (0.00s) -2026-07-05T01:36:24.9793543Z --- PASS: TestValidateDeployTargetReservedFields/branch_with_whitespace_is_rejected (0.00s) -2026-07-05T01:36:24.9794222Z --- PASS: TestValidateDeployTargetReservedFields/branch_with_trailing_slash_is_rejected (0.00s) -2026-07-05T01:36:24.9794896Z --- PASS: TestValidateDeployTargetReservedFields/branch_with_leading_slash_is_rejected (0.00s) -2026-07-05T01:36:24.9795581Z --- PASS: TestValidateDeployTargetReservedFields/gitops_with_branch_and_track_sha_is_valid (0.00s) -2026-07-05T01:36:24.9796394Z --- PASS: TestValidateDeployTargetReservedFields/empty_mode_(default_dispatch)_with_track_sha_is_rejected (0.00s) -2026-07-05T01:36:24.9797106Z --- PASS: TestValidateDeployTargetReservedFields/gitops_with_internal-slash_branch_is_valid (0.00s) -2026-07-05T01:36:24.9797778Z --- PASS: TestValidateDeployTargetReservedFields/dispatch_with_track_sha_is_rejected (0.00s) -2026-07-05T01:36:24.9798419Z --- PASS: TestValidateDeployTargetReservedFields/dispatch_with_branch_is_rejected (0.00s) -2026-07-05T01:36:24.9798697Z === CONT TestValidateCanaryFields/bake_time_valid_durations -2026-07-05T01:36:24.9798989Z === RUN TestValidateCanaryFields/bake_time_valid_durations/30s -2026-07-05T01:36:24.9799295Z === PAUSE TestValidateCanaryFields/bake_time_valid_durations/30s -2026-07-05T01:36:24.9799578Z === RUN TestValidateCanaryFields/bake_time_valid_durations/5m -2026-07-05T01:36:24.9799874Z === PAUSE TestValidateCanaryFields/bake_time_valid_durations/5m -2026-07-05T01:36:24.9800287Z === CONT TestValidateCanaryFields/percent_101_rejected -2026-07-05T01:36:24.9800694Z === CONT TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected -2026-07-05T01:36:24.9801077Z === CONT TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected -2026-07-05T01:36:24.9801720Z === CONT TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted -2026-07-05T01:36:24.9802092Z === CONT TestValidateLocalCallbackWorkflowPath/bare_filename_accepted -2026-07-05T01:36:24.9802568Z === CONT TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted -2026-07-05T01:36:24.9802802Z === CONT TestValidateCanaryFields/percent_-1_rejected -2026-07-05T01:36:24.9803172Z === CONT TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted -2026-07-05T01:36:24.9803566Z === CONT TestValidateEnvironmentConfigFields/nil_environment_config_is_valid -2026-07-05T01:36:24.9804074Z === CONT TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid -2026-07-05T01:36:24.9804534Z === CONT TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected -2026-07-05T01:36:24.9804771Z === CONT TestValidateCanaryFields/percent_valid_range -2026-07-05T01:36:24.9805033Z === RUN TestValidateCanaryFields/percent_valid_range/#00 -2026-07-05T01:36:24.9805354Z === CONT TestValidateCanaryFields/percent_zero_is_unset_and_valid -2026-07-05T01:36:24.9805875Z === CONT TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected -2026-07-05T01:36:24.9806145Z --- PASS: TestValidateLocalCallbackWorkflowPath (0.00s) -2026-07-05T01:36:24.9806759Z --- PASS: TestValidateLocalCallbackWorkflowPath/github_workflows_path_accepted (0.00s) -2026-07-05T01:36:24.9807422Z --- PASS: TestValidateLocalCallbackWorkflowPath/github_non-workflows_subdir_rejected (0.00s) -2026-07-05T01:36:24.9808015Z --- PASS: TestValidateLocalCallbackWorkflowPath/dot-slash_local_path_rejected (0.00s) -2026-07-05T01:36:24.9808583Z --- PASS: TestValidateLocalCallbackWorkflowPath/local_subdir_path_rejected (0.00s) -2026-07-05T01:36:24.9809216Z --- PASS: TestValidateLocalCallbackWorkflowPath/cross-repo_external_ref_accepted (0.00s) -2026-07-05T01:36:24.9809783Z --- PASS: TestValidateLocalCallbackWorkflowPath/bare_filename_accepted (0.00s) -2026-07-05T01:36:24.9810664Z --- PASS: TestValidateLocalCallbackWorkflowPath/dot-slash_github_workflows_path_accepted (0.00s) -2026-07-05T01:36:24.9811425Z --- PASS: TestValidateLocalCallbackWorkflowPath/empty_workflow_accepted (0.00s) -2026-07-05T01:36:24.9811901Z === CONT TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected -2026-07-05T01:36:24.9812333Z === CONT TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected -2026-07-05T01:36:24.9812605Z === PAUSE TestValidateCanaryFields/percent_valid_range/#00 -2026-07-05T01:36:24.9813101Z === CONT TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected -2026-07-05T01:36:24.9813622Z === CONT TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected -2026-07-05T01:36:24.9813890Z === RUN TestValidateCanaryFields/percent_valid_range/#01 -2026-07-05T01:36:24.9814271Z === CONT TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected -2026-07-05T01:36:24.9814637Z === CONT TestValidateEnvironmentConfigFields/all_branch_policy_is_valid -2026-07-05T01:36:24.9815037Z === CONT TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected -2026-07-05T01:36:24.9815445Z === CONT TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected -2026-07-05T01:36:24.9815871Z === CONT TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected -2026-07-05T01:36:24.9816266Z === CONT TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid -2026-07-05T01:36:24.9816667Z === CONT TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid -2026-07-05T01:36:24.9817192Z === CONT TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected -2026-07-05T01:36:24.9817656Z === CONT TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) -2026-07-05T01:36:24.9817962Z === CONT TestValidateEnvironmentConfigFields/full_valid_block -2026-07-05T01:36:24.9818322Z === CONT TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid -2026-07-05T01:36:24.9818785Z === PAUSE TestValidateCanaryFields/percent_valid_range/#01 -2026-07-05T01:36:24.9819405Z === CONT TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid -2026-07-05T01:36:24.9819665Z === RUN TestValidateCanaryFields/percent_valid_range/#02 -2026-07-05T01:36:24.9819925Z === PAUSE TestValidateCanaryFields/percent_valid_range/#02 -2026-07-05T01:36:24.9820443Z === CONT TestValidateVersionOverridesReservedField/nil_release_is_valid -2026-07-05T01:36:24.9820725Z --- PASS: TestValidateEnvironmentConfigFields (0.00s) -2026-07-05T01:36:24.9821329Z --- PASS: TestValidateEnvironmentConfigFields/nil_environment_config_is_valid (0.00s) -2026-07-05T01:36:24.9821999Z --- PASS: TestValidateEnvironmentConfigFields/variable_name_with_whitespace_is_rejected (0.00s) -2026-07-05T01:36:24.9822747Z --- PASS: TestValidateEnvironmentConfigFields/reviewer_slug_with_too_many_segments_is_rejected (0.00s) -2026-07-05T01:36:24.9823441Z --- PASS: TestValidateEnvironmentConfigFields/secret_name_with_interpolation_is_rejected (0.00s) -2026-07-05T01:36:24.9824081Z --- PASS: TestValidateEnvironmentConfigFields/whitespace_reviewer_slug_is_rejected (0.00s) -2026-07-05T01:36:24.9824807Z --- PASS: TestValidateEnvironmentConfigFields/secret_name_starting_with_a_digit_is_rejected (0.00s) -2026-07-05T01:36:24.9825540Z --- PASS: TestValidateEnvironmentConfigFields/tag_patterns_without_custom_policy_is_rejected (0.00s) -2026-07-05T01:36:24.9826126Z --- PASS: TestValidateEnvironmentConfigFields/empty_reviewer_slug_is_rejected (0.00s) -2026-07-05T01:36:24.9826702Z --- PASS: TestValidateEnvironmentConfigFields/all_branch_policy_is_valid (0.00s) -2026-07-05T01:36:24.9827287Z --- PASS: TestValidateEnvironmentConfigFields/negative_wait_timer_is_rejected (0.00s) -2026-07-05T01:36:24.9827910Z --- PASS: TestValidateEnvironmentConfigFields/unknown_branch_policy_is_rejected (0.00s) -2026-07-05T01:36:24.9828558Z --- PASS: TestValidateEnvironmentConfigFields/wait_timer_above_maximum_is_rejected (0.00s) -2026-07-05T01:36:24.9829344Z --- PASS: TestValidateEnvironmentConfigFields/wait_timer_at_maximum_is_valid (0.00s) -2026-07-05T01:36:24.9829974Z --- PASS: TestValidateEnvironmentConfigFields/protected_branch_policy_is_valid (0.00s) -2026-07-05T01:36:24.9830811Z --- PASS: TestValidateEnvironmentConfigFields/empty_per-env_block_is_valid_(shape_only) (0.00s) -2026-07-05T01:36:24.9831577Z --- PASS: TestValidateEnvironmentConfigFields/branch_patterns_without_custom_policy_is_rejected (0.00s) -2026-07-05T01:36:24.9832059Z --- PASS: TestValidateEnvironmentConfigFields/full_valid_block (0.00s) -2026-07-05T01:36:24.9832601Z --- PASS: TestValidateEnvironmentConfigFields/wait_timer_zero_is_valid (0.00s) -2026-07-05T01:36:24.9833077Z === CONT TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected -2026-07-05T01:36:24.9833544Z === CONT TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml -2026-07-05T01:36:24.9833966Z === CONT TestValidateVersionOverridesReservedField/absolute_dir_is_rejected -2026-07-05T01:36:24.9834270Z === CONT TestValidateCanaryFields/bake_time_valid_durations/5m -2026-07-05T01:36:24.9834594Z === CONT TestValidateCanaryFields/bake_time_valid_durations/30s -2026-07-05T01:36:24.9835039Z === CONT TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml -2026-07-05T01:36:24.9835477Z === CONT TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml -2026-07-05T01:36:24.9836004Z === CONT TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid -2026-07-05T01:36:24.9836446Z === CONT TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml -2026-07-05T01:36:24.9836877Z === CONT TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml -2026-07-05T01:36:24.9837211Z === CONT TestValidateCanaryFields/promote_callback_valid_paths/x.yml -2026-07-05T01:36:24.9837478Z === CONT TestValidateCanaryFields/percent_valid_range/#02 -2026-07-05T01:36:24.9837912Z === CONT TestValidateCanaryFields/percent_valid_range/#00 -2026-07-05T01:36:24.9838262Z === CONT TestValidateCanaryFields/rollback_callback_valid_paths/x.yml -2026-07-05T01:36:24.9838695Z === CONT TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml -2026-07-05T01:36:24.9838991Z --- PASS: TestValidateVersionOverridesReservedField (0.01s) -2026-07-05T01:36:24.9839787Z --- PASS: TestValidateVersionOverridesReservedField/version_overrides_with_empty_dir_is_valid (0.00s) -2026-07-05T01:36:24.9840730Z --- PASS: TestValidateVersionOverridesReservedField/version_overrides_with_a_clean_relative_dir_is_valid (0.00s) -2026-07-05T01:36:24.9841214Z --- PASS: TestValidateVersionOverridesReservedField/nil_release_is_valid (0.00s) -2026-07-05T01:36:24.9841883Z --- PASS: TestValidateVersionOverridesReservedField/dir_with_parent_segment_is_rejected (0.00s) -2026-07-05T01:36:24.9842477Z --- PASS: TestValidateVersionOverridesReservedField/absolute_dir_is_rejected (0.00s) -2026-07-05T01:36:24.9843260Z --- PASS: TestValidateVersionOverridesReservedField/release_without_version_overrides_is_valid (0.00s) -2026-07-05T01:36:24.9843527Z === CONT TestValidateCanaryFields/percent_valid_range/#01 -2026-07-05T01:36:24.9843733Z --- PASS: TestValidateCanaryFields (0.00s) -2026-07-05T01:36:24.9844180Z --- PASS: TestValidateCanaryFields/bake_time_invalid_rejected (0.00s) -2026-07-05T01:36:24.9844834Z --- PASS: TestValidateCanaryFields/new_canary_fields_validate_at_CurrentSchemaVersion (0.00s) -2026-07-05T01:36:24.9845236Z --- PASS: TestValidateCanaryFields/percent_-1_rejected (0.00s) -2026-07-05T01:36:24.9845729Z --- PASS: TestValidateCanaryFields/percent_zero_is_unset_and_valid (0.00s) -2026-07-05T01:36:24.9846174Z --- PASS: TestValidateCanaryFields/bake_time_valid_durations (0.00s) -2026-07-05T01:36:24.9846772Z --- PASS: TestValidateCanaryFields/bake_time_valid_durations/5m (0.00s) -2026-07-05T01:36:24.9847426Z --- PASS: TestValidateCanaryFields/bake_time_valid_durations/30s (0.00s) -2026-07-05T01:36:24.9848186Z --- PASS: TestValidateCanaryFields/rollback_callback_invalid_paths_rejected (0.00s) -2026-07-05T01:36:24.9849018Z --- PASS: TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/foo/bar.yml (0.00s) -2026-07-05T01:36:24.9849850Z --- PASS: TestValidateCanaryFields/rollback_callback_invalid_paths_rejected/../evil.yml (0.00s) -2026-07-05T01:36:24.9850698Z --- PASS: TestValidateCanaryFields/rollback_callback_valid_paths (0.00s) -2026-07-05T01:36:24.9851564Z --- PASS: TestValidateCanaryFields/rollback_callback_valid_paths/.github/workflows/x.yml (0.00s) -2026-07-05T01:36:24.9852212Z --- PASS: TestValidateCanaryFields/rollback_callback_valid_paths/x.yml (0.00s) -2026-07-05T01:36:24.9852686Z --- PASS: TestValidateCanaryFields/promote_callback_valid_paths (0.00s) -2026-07-05T01:36:24.9853513Z --- PASS: TestValidateCanaryFields/promote_callback_valid_paths/.github/workflows/x.yml (0.00s) -2026-07-05T01:36:24.9854158Z --- PASS: TestValidateCanaryFields/promote_callback_valid_paths/x.yml (0.00s) -2026-07-05T01:36:24.9854564Z --- PASS: TestValidateCanaryFields/percent_valid_range (0.00s) -2026-07-05T01:36:24.9855109Z --- PASS: TestValidateCanaryFields/percent_valid_range/#02 (0.00s) -2026-07-05T01:36:24.9855641Z --- PASS: TestValidateCanaryFields/percent_valid_range/#00 (0.00s) -2026-07-05T01:36:24.9856158Z --- PASS: TestValidateCanaryFields/percent_valid_range/#01 (0.00s) -2026-07-05T01:36:24.9856708Z --- PASS: TestValidateCanaryFields/promote_callback_invalid_paths_rejected (0.00s) -2026-07-05T01:36:24.9857536Z --- PASS: TestValidateCanaryFields/promote_callback_invalid_paths_rejected/foo/bar.yml (0.00s) -2026-07-05T01:36:24.9858351Z --- PASS: TestValidateCanaryFields/promote_callback_invalid_paths_rejected/../evil.yml (0.00s) -2026-07-05T01:36:24.9858848Z --- PASS: TestValidateCanaryFields/percent_101_rejected (0.00s) -2026-07-05T01:36:24.9859218Z === RUN FuzzLoadManifest -2026-07-05T01:36:24.9859404Z === RUN FuzzLoadManifest/seed#0 -2026-07-05T01:36:24.9859571Z === RUN FuzzLoadManifest/seed#1 -2026-07-05T01:36:24.9859743Z === RUN FuzzLoadManifest/seed#2 -2026-07-05T01:36:24.9859902Z === RUN FuzzLoadManifest/seed#3 -2026-07-05T01:36:24.9860228Z === RUN FuzzLoadManifest/seed#4 -2026-07-05T01:36:24.9860427Z --- PASS: FuzzLoadManifest (0.00s) -2026-07-05T01:36:24.9860700Z --- PASS: FuzzLoadManifest/seed#0 (0.00s) -2026-07-05T01:36:24.9860962Z --- PASS: FuzzLoadManifest/seed#1 (0.00s) -2026-07-05T01:36:24.9861213Z --- PASS: FuzzLoadManifest/seed#2 (0.00s) -2026-07-05T01:36:24.9861457Z --- PASS: FuzzLoadManifest/seed#3 (0.00s) -2026-07-05T01:36:24.9861703Z --- PASS: FuzzLoadManifest/seed#4 (0.00s) -2026-07-05T01:36:24.9861834Z PASS -2026-07-05T01:36:24.9861994Z coverage: 83.2% of statements -2026-07-05T01:36:24.9862470Z ok github.com/stablekernel/cascade/internal/config 1.243s coverage: 83.2% of statements -2026-07-05T01:36:24.9862713Z === RUN TestCommand_EmitsPayloadToStdout -2026-07-05T01:36:24.9862951Z --- PASS: TestCommand_EmitsPayloadToStdout (0.01s) -2026-07-05T01:36:24.9863137Z === RUN TestCommand_WritesToOutputFile -2026-07-05T01:36:24.9863353Z --- PASS: TestCommand_WritesToOutputFile (0.00s) -2026-07-05T01:36:24.9863537Z === RUN TestCommand_StdoutAndFileMatch -2026-07-05T01:36:24.9863748Z --- PASS: TestCommand_StdoutAndFileMatch (0.01s) -2026-07-05T01:36:24.9863960Z === RUN TestBuild_OrdersByManifestAndDefaults -2026-07-05T01:36:24.9864177Z === PAUSE TestBuild_OrdersByManifestAndDefaults -2026-07-05T01:36:24.9864370Z === RUN TestBuild_NoEnvironmentConfigBlock -2026-07-05T01:36:24.9864571Z === PAUSE TestBuild_NoEnvironmentConfigBlock -2026-07-05T01:36:24.9864756Z === RUN TestBuild_AllBranchPolicyIsNull -2026-07-05T01:36:24.9864937Z === PAUSE TestBuild_AllBranchPolicyIsNull -2026-07-05T01:36:24.9865116Z === RUN TestMarshal_Deterministic -2026-07-05T01:36:24.9865282Z === PAUSE TestMarshal_Deterministic -2026-07-05T01:36:24.9865513Z === RUN TestMarshal_ValidJSONAndTrailingNewline -2026-07-05T01:36:24.9865930Z === PAUSE TestMarshal_ValidJSONAndTrailingNewline -2026-07-05T01:36:24.9866173Z === RUN TestMarshal_SecretsAndVariablesAreNamesOnly -2026-07-05T01:36:24.9866427Z === PAUSE TestMarshal_SecretsAndVariablesAreNamesOnly -2026-07-05T01:36:24.9866643Z === CONT TestBuild_OrdersByManifestAndDefaults -2026-07-05T01:36:24.9866902Z --- PASS: TestBuild_OrdersByManifestAndDefaults (0.00s) -2026-07-05T01:36:24.9867143Z === CONT TestMarshal_SecretsAndVariablesAreNamesOnly -2026-07-05T01:36:24.9867435Z --- PASS: TestMarshal_SecretsAndVariablesAreNamesOnly (0.00s) -2026-07-05T01:36:24.9867670Z === CONT TestMarshal_ValidJSONAndTrailingNewline -2026-07-05T01:36:24.9867865Z === CONT TestBuild_AllBranchPolicyIsNull -2026-07-05T01:36:24.9868083Z --- PASS: TestBuild_AllBranchPolicyIsNull (0.00s) -2026-07-05T01:36:24.9868263Z === CONT TestMarshal_Deterministic -2026-07-05T01:36:24.9868529Z --- PASS: TestMarshal_ValidJSONAndTrailingNewline (0.00s) -2026-07-05T01:36:24.9868741Z === CONT TestBuild_NoEnvironmentConfigBlock -2026-07-05T01:36:24.9868990Z --- PASS: TestBuild_NoEnvironmentConfigBlock (0.00s) -2026-07-05T01:36:24.9869183Z --- PASS: TestMarshal_Deterministic (0.01s) -2026-07-05T01:36:24.9869312Z PASS -2026-07-05T01:36:24.9869473Z coverage: 83.7% of statements -2026-07-05T01:36:24.9870153Z ok github.com/stablekernel/cascade/internal/environments 1.041s coverage: 83.7% of statements -2026-07-05T01:36:28.9373299Z === RUN TestNewCommand -2026-07-05T01:36:28.9374052Z --- PASS: TestNewCommand (0.00s) -2026-07-05T01:36:28.9374780Z === RUN TestNewUpdateCommand -2026-07-05T01:36:28.9375351Z --- PASS: TestNewUpdateCommand (0.00s) -2026-07-05T01:36:28.9375968Z === RUN TestWriteManifest -2026-07-05T01:36:28.9376517Z --- PASS: TestWriteManifest (0.00s) -2026-07-05T01:36:28.9377145Z === RUN TestWriteManifest_PreservesFullConfig -2026-07-05T01:36:28.9378531Z --- PASS: TestWriteManifest_PreservesFullConfig (0.00s) -2026-07-05T01:36:28.9379253Z === RUN TestUpdateCommand_RequiredFlags -2026-07-05T01:36:28.9380720Z Error: required flag(s) "deploy-name", "environment", "sha", "source-repo" not set -2026-07-05T01:36:28.9381538Z Usage: -2026-07-05T01:36:28.9382017Z external update [flags] -2026-07-05T01:36:28.9382397Z -2026-07-05T01:36:28.9382667Z Flags: -2026-07-05T01:36:28.9383310Z --artifacts string Artifacts JSON (optional) -2026-07-05T01:36:28.9384113Z --deploy-name string Deploy name (e.g., cdk) -2026-07-05T01:36:28.9384947Z --environment string Target environment (e.g., dev) -2026-07-05T01:36:28.9385682Z -h, --help help for update -2026-07-05T01:36:28.9386516Z --sha string Commit SHA from source repo -2026-07-05T01:36:28.9387480Z --source-repo string Source repository (e.g., org/cdk-infra) -2026-07-05T01:36:28.9388520Z --version string Version from source repo (optional) -2026-07-05T01:36:28.9389087Z -2026-07-05T01:36:28.9389362Z Global Flags: -2026-07-05T01:36:28.9390344Z --config string Path to CI/CD config file -2026-07-05T01:36:28.9391243Z --gha-output Write outputs to $GITHUB_OUTPUT -2026-07-05T01:36:28.9392193Z --manifest-key string Key in manifest file (default "ci") -2026-07-05T01:36:28.9392764Z -2026-07-05T01:36:28.9393128Z --- PASS: TestUpdateCommand_RequiredFlags (0.00s) -2026-07-05T01:36:28.9393803Z === RUN TestUpdateCommand_InvalidArtifactsJSON -2026-07-05T01:36:28.9394956Z ───� External Update ───� -2026-07-05T01:36:28.9395636Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9396271Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9396839Z [INFO] Environment: dev -2026-07-05T01:36:28.9397402Z [INFO] SHA: sha123 -2026-07-05T01:36:28.9398019Z --- PASS: TestUpdateCommand_InvalidArtifactsJSON (0.00s) -2026-07-05T01:36:28.9398720Z === RUN TestUpdateCommand_NotPrimaryRepo -2026-07-05T01:36:28.9399413Z ───� External Update ───� -2026-07-05T01:36:28.9400239Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9400874Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9401818Z [INFO] Environment: dev -2026-07-05T01:36:28.9402474Z [INFO] SHA: sha123 -2026-07-05T01:36:28.9403051Z --- PASS: TestUpdateCommand_NotPrimaryRepo (0.00s) -2026-07-05T01:36:28.9403730Z === RUN TestUpdateCommand_ExternalDeployNotFound -2026-07-05T01:36:28.9404436Z ───� External Update ───� -2026-07-05T01:36:28.9405066Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9405701Z [INFO] Deploy: nonexistent -2026-07-05T01:36:28.9406311Z [INFO] Environment: dev -2026-07-05T01:36:28.9406899Z [INFO] SHA: sha123 -2026-07-05T01:36:28.9407545Z --- PASS: TestUpdateCommand_ExternalDeployNotFound (0.00s) -2026-07-05T01:36:28.9408281Z === RUN TestUpdateCommand_SourceRepoMismatch -2026-07-05T01:36:28.9408947Z ───� External Update ───� -2026-07-05T01:36:28.9409584Z [INFO] Source repo: org/wrong-repo -2026-07-05T01:36:28.9410716Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9411337Z [INFO] Environment: dev -2026-07-05T01:36:28.9411847Z [INFO] SHA: sha123 -2026-07-05T01:36:28.9412360Z --- PASS: TestUpdateCommand_SourceRepoMismatch (0.00s) -2026-07-05T01:36:28.9412967Z === RUN TestUpdateCommand_EnvironmentNotFound -2026-07-05T01:36:28.9413589Z ───� External Update ───� -2026-07-05T01:36:28.9414141Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9414674Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9415182Z [INFO] Environment: nonexistent -2026-07-05T01:36:28.9415709Z [INFO] SHA: sha123 -2026-07-05T01:36:28.9416218Z --- PASS: TestUpdateCommand_EnvironmentNotFound (0.00s) -2026-07-05T01:36:28.9416947Z === RUN TestCommitWithApplicationRetry_PushFailureIncludesOutput -2026-07-05T01:36:28.9417951Z --- PASS: TestCommitWithApplicationRetry_PushFailureIncludesOutput (3.29s) -2026-07-05T01:36:28.9418763Z === RUN TestUpdateCommand_RecoversFromConcurrentUpdate -2026-07-05T01:36:28.9419441Z ───� External Update ───� -2026-07-05T01:36:28.9420420Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9420996Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9421461Z [INFO] Environment: dev -2026-07-05T01:36:28.9421925Z [INFO] SHA: cdksha -2026-07-05T01:36:28.9422370Z [INFO] Version: v1.0.0 -2026-07-05T01:36:28.9422932Z [INFO] Updated external state for cdk in dev -2026-07-05T01:36:28.9423561Z [INFO] State committed and pushed -2026-07-05T01:36:28.9424119Z ───� External Update ───� -2026-07-05T01:36:28.9424656Z [INFO] Source repo: org/lambda-svc -2026-07-05T01:36:28.9425200Z [INFO] Deploy: lambda -2026-07-05T01:36:28.9425680Z [INFO] Environment: dev -2026-07-05T01:36:28.9426153Z [INFO] SHA: lambdasha -2026-07-05T01:36:28.9426628Z [INFO] Version: v2.0.0 -2026-07-05T01:36:28.9427209Z [INFO] Updated external state for lambda in dev -2026-07-05T01:36:28.9427831Z [INFO] State committed and pushed -2026-07-05T01:36:28.9428478Z --- PASS: TestUpdateCommand_RecoversFromConcurrentUpdate (1.32s) -2026-07-05T01:36:28.9429174Z === RUN TestUpdateCommand_SequentialStaleCheckout -2026-07-05T01:36:28.9429785Z ───� External Update ───� -2026-07-05T01:36:28.9430507Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9431032Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9431501Z [INFO] Environment: dev -2026-07-05T01:36:28.9431975Z [INFO] SHA: cdksha -2026-07-05T01:36:28.9432414Z [INFO] Version: v1.0.0 -2026-07-05T01:36:28.9432987Z [INFO] Updated external state for cdk in dev -2026-07-05T01:36:28.9433697Z [INFO] State committed and pushed -2026-07-05T01:36:28.9434245Z ───� External Update ───� -2026-07-05T01:36:28.9434807Z [INFO] Source repo: org/lambda-svc -2026-07-05T01:36:28.9435362Z [INFO] Deploy: lambda -2026-07-05T01:36:28.9435857Z [INFO] Environment: dev -2026-07-05T01:36:28.9436324Z [INFO] SHA: lambdasha -2026-07-05T01:36:28.9436777Z [INFO] Version: v2.0.0 -2026-07-05T01:36:28.9437664Z [INFO] Updated external state for lambda in dev -2026-07-05T01:36:28.9438304Z [INFO] State committed and pushed -2026-07-05T01:36:28.9438898Z --- PASS: TestUpdateCommand_SequentialStaleCheckout (1.27s) -2026-07-05T01:36:28.9439532Z === RUN TestUpdateCommand_IdempotentReapply -2026-07-05T01:36:28.9469188Z ───� External Update ───� -2026-07-05T01:36:28.9469868Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9470587Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9471064Z [INFO] Environment: dev -2026-07-05T01:36:28.9471540Z [INFO] SHA: sha1 -2026-07-05T01:36:28.9471976Z [INFO] Version: v1.0.0 -2026-07-05T01:36:28.9472556Z [INFO] Updated external state for cdk in dev -2026-07-05T01:36:28.9473176Z [INFO] State committed and pushed -2026-07-05T01:36:28.9473741Z ───� External Update ───� -2026-07-05T01:36:28.9474308Z [INFO] Source repo: org/cdk-infra -2026-07-05T01:36:28.9474827Z [INFO] Deploy: cdk -2026-07-05T01:36:28.9475301Z [INFO] Environment: dev -2026-07-05T01:36:28.9475808Z [INFO] SHA: sha2 -2026-07-05T01:36:28.9476253Z [INFO] Version: v2.0.0 -2026-07-05T01:36:28.9476819Z [INFO] Updated external state for cdk in dev -2026-07-05T01:36:28.9477425Z [INFO] State committed and pushed -2026-07-05T01:36:28.9478014Z --- PASS: TestUpdateCommand_IdempotentReapply (0.21s) -2026-07-05T01:36:28.9478501Z PASS -2026-07-05T01:36:28.9478839Z coverage: 80.7% of statements -2026-07-05T01:36:28.9479589Z ok github.com/stablekernel/cascade/internal/external 7.132s coverage: 80.7% of statements -2026-07-05T01:36:28.9480666Z === RUN TestEnumerateRuns_BoundaryClusterFullyCaptured -2026-07-05T01:36:28.9481313Z === PAUSE TestEnumerateRuns_BoundaryClusterFullyCaptured -2026-07-05T01:36:28.9481926Z === RUN TestEnumerateRuns_CapOverflowFailsClosed -2026-07-05T01:36:28.9482505Z === PAUSE TestEnumerateRuns_CapOverflowFailsClosed -2026-07-05T01:36:28.9483393Z === RUN TestEnumerateRuns_DedupesAcrossPages -2026-07-05T01:36:28.9484142Z === PAUSE TestEnumerateRuns_DedupesAcrossPages -2026-07-05T01:36:28.9484745Z === RUN TestEnumerateRuns_UnpageableClusterFailsClosed -2026-07-05T01:36:28.9485367Z === PAUSE TestEnumerateRuns_UnpageableClusterFailsClosed -2026-07-05T01:36:28.9485944Z === RUN TestEnumerateRuns_StopsAtWindowStart -2026-07-05T01:36:28.9486462Z === PAUSE TestEnumerateRuns_StopsAtWindowStart -2026-07-05T01:36:28.9486949Z === RUN TestReconcile -2026-07-05T01:36:28.9487315Z === PAUSE TestReconcile -2026-07-05T01:36:28.9487727Z === RUN TestFormatReport_FailIsLoud -2026-07-05T01:36:28.9488206Z === PAUSE TestFormatReport_FailIsLoud -2026-07-05T01:36:28.9488759Z === CONT TestEnumerateRuns_BoundaryClusterFullyCaptured -2026-07-05T01:36:28.9489462Z --- PASS: TestEnumerateRuns_BoundaryClusterFullyCaptured (0.00s) -2026-07-05T01:36:28.9520968Z === CONT TestEnumerateRuns_StopsAtWindowStart -2026-07-05T01:36:28.9521519Z === CONT TestReconcile -2026-07-05T01:36:28.9522055Z --- PASS: TestEnumerateRuns_StopsAtWindowStart (0.00s) -2026-07-05T01:36:28.9522753Z === CONT TestEnumerateRuns_CapOverflowFailsClosed -2026-07-05T01:36:28.9523371Z === RUN TestReconcile/all_registered_and_matched_passes -2026-07-05T01:36:28.9524012Z === PAUSE TestReconcile/all_registered_and_matched_passes -2026-07-05T01:36:28.9524657Z === CONT TestEnumerateRuns_UnpageableClusterFailsClosed -2026-07-05T01:36:28.9525282Z === RUN TestReconcile/unregistered_failure_fails_the_gate -2026-07-05T01:36:28.9525904Z === PAUSE TestReconcile/unregistered_failure_fails_the_gate -2026-07-05T01:36:28.9526570Z --- PASS: TestEnumerateRuns_UnpageableClusterFailsClosed (0.00s) -2026-07-05T01:36:28.9527372Z === RUN TestReconcile/registered_expected-failure_that_failed_passes -2026-07-05T01:36:28.9528048Z === CONT TestEnumerateRuns_DedupesAcrossPages -2026-07-05T01:36:28.9528736Z === PAUSE TestReconcile/registered_expected-failure_that_failed_passes -2026-07-05T01:36:28.9529530Z === RUN TestReconcile/registered_expected-success_that_failed_fails -2026-07-05T01:36:28.9530741Z --- PASS: TestEnumerateRuns_DedupesAcrossPages (0.00s) -2026-07-05T01:36:28.9531450Z === PAUSE TestReconcile/registered_expected-success_that_failed_fails -2026-07-05T01:36:28.9532095Z === CONT TestFormatReport_FailIsLoud -2026-07-05T01:36:28.9532743Z === RUN TestReconcile/registered_expected-failure_that_succeeded_fails -2026-07-05T01:36:28.9533565Z === PAUSE TestReconcile/registered_expected-failure_that_succeeded_fails -2026-07-05T01:36:28.9534350Z === RUN TestReconcile/unregistered_success_and_skipped_are_benign -2026-07-05T01:36:28.9534993Z --- PASS: TestFormatReport_FailIsLoud (0.00s) -2026-07-05T01:36:28.9535648Z === PAUSE TestReconcile/unregistered_success_and_skipped_are_benign -2026-07-05T01:36:28.9536475Z === RUN TestReconcile/cancelled_superseded_by_later_registered_run_is_benign -2026-07-05T01:36:28.9537365Z === PAUSE TestReconcile/cancelled_superseded_by_later_registered_run_is_benign -2026-07-05T01:36:28.9538108Z === RUN TestReconcile/cancelled_with_no_superseder_fails -2026-07-05T01:36:28.9538737Z === PAUSE TestReconcile/cancelled_with_no_superseder_fails -2026-07-05T01:36:28.9539356Z === RUN TestReconcile/failure_is_never_treated_as_superseded -2026-07-05T01:36:28.9540205Z --- PASS: TestEnumerateRuns_CapOverflowFailsClosed (0.00s) -2026-07-05T01:36:28.9540917Z === PAUSE TestReconcile/failure_is_never_treated_as_superseded -2026-07-05T01:36:28.9541693Z === RUN TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored -2026-07-05T01:36:28.9542565Z === PAUSE TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored -2026-07-05T01:36:28.9543343Z === RUN TestReconcile/in-flight_unregistered_run_is_not_a_gap -2026-07-05T01:36:28.9544046Z === PAUSE TestReconcile/in-flight_unregistered_run_is_not_a_gap -2026-07-05T01:36:28.9544723Z === CONT TestReconcile/all_registered_and_matched_passes -2026-07-05T01:36:28.9545493Z === CONT TestReconcile/cancelled_superseded_by_later_registered_run_is_benign -2026-07-05T01:36:28.9546621Z === CONT TestReconcile/registered_expected-failure_that_succeeded_fails -2026-07-05T01:36:28.9547444Z === CONT TestReconcile/registered_expected-success_that_failed_fails -2026-07-05T01:36:28.9548211Z === CONT TestReconcile/in-flight_unregistered_run_is_not_a_gap -2026-07-05T01:36:28.9549039Z === CONT TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored -2026-07-05T01:36:28.9549812Z === CONT TestReconcile/failure_is_never_treated_as_superseded -2026-07-05T01:36:28.9570648Z === CONT TestReconcile/registered_expected-failure_that_failed_passes -2026-07-05T01:36:28.9571398Z === CONT TestReconcile/cancelled_with_no_superseder_fails -2026-07-05T01:36:28.9572115Z === CONT TestReconcile/unregistered_success_and_skipped_are_benign -2026-07-05T01:36:28.9572822Z === CONT TestReconcile/unregistered_failure_fails_the_gate -2026-07-05T01:36:28.9573386Z --- PASS: TestReconcile (0.00s) -2026-07-05T01:36:28.9574211Z --- PASS: TestReconcile/registered_expected-failure_that_succeeded_fails (0.00s) -2026-07-05T01:36:28.9575328Z --- PASS: TestReconcile/cancelled_superseded_by_later_registered_run_is_benign (0.00s) -2026-07-05T01:36:28.9576306Z --- PASS: TestReconcile/all_registered_and_matched_passes (0.00s) -2026-07-05T01:36:28.9577228Z --- PASS: TestReconcile/registered_expected-success_that_failed_fails (0.00s) -2026-07-05T01:36:28.9578216Z --- PASS: TestReconcile/in-flight_unregistered_run_is_not_a_gap (0.00s) -2026-07-05T01:36:28.9579091Z --- PASS: TestReconcile/failure_is_never_treated_as_superseded (0.00s) -2026-07-05T01:36:28.9580317Z --- PASS: TestReconcile/self-run_excluded_and_out-of-scope_workflow_ignored (0.00s) -2026-07-05T01:36:28.9581315Z --- PASS: TestReconcile/cancelled_with_no_superseder_fails (0.00s) -2026-07-05T01:36:28.9582264Z --- PASS: TestReconcile/unregistered_success_and_skipped_are_benign (0.00s) -2026-07-05T01:36:28.9583173Z --- PASS: TestReconcile/unregistered_failure_fails_the_gate (0.00s) -2026-07-05T01:36:28.9584110Z --- PASS: TestReconcile/registered_expected-failure_that_failed_passes (0.00s) -2026-07-05T01:36:28.9585091Z PASS -2026-07-05T01:36:28.9585418Z coverage: 91.4% of statements -2026-07-05T01:36:28.9586212Z ok github.com/stablekernel/cascade/internal/fleetreconcile 1.027s coverage: 91.4% of statements -2026-07-05T01:36:28.9587431Z github.com/stablekernel/cascade/internal/fleetreconcile/cmd coverage: 0.0% of statements -2026-07-05T01:36:31.2641908Z === RUN TestActionPinsAnchorCoversManifest -2026-07-05T01:36:31.2642666Z action_pins_anchor_test.go:39: -2026-07-05T01:36:31.2643702Z Error Trace: /home/runner/work/cascade/cascade/internal/generate/action_pins_anchor_test.go:39 -2026-07-05T01:36:31.2645627Z Error: Should be empty, but was [workflows/action-pins.yml:49 actions/checkout want 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 got 9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc # v7.0.0] -2026-07-05T01:36:31.2647228Z Test: TestActionPinsAnchorCoversManifest -2026-07-05T01:36:31.2649656Z Messages: dependabot anchor refs diverge from action_pins.yaml: [workflows/action-pins.yml:49 actions/checkout want 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 got 9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc # v7.0.0] -2026-07-05T01:36:31.2651327Z --- FAIL: TestActionPinsAnchorCoversManifest (0.00s) -2026-07-05T01:36:31.2651734Z === RUN TestDefaultActionPins_MatchesPriorHardcodedTable -2026-07-05T01:36:31.2652184Z --- PASS: TestDefaultActionPins_MatchesPriorHardcodedTable (0.00s) -2026-07-05T01:36:31.2652588Z === RUN TestActionPinsManifest_EmitFlags -2026-07-05T01:36:31.2653106Z --- PASS: TestActionPinsManifest_EmitFlags (0.00s) -2026-07-05T01:36:31.2653456Z === RUN TestActionRef_DefaultTagModeUnchanged -2026-07-05T01:36:31.2653818Z --- PASS: TestActionRef_DefaultTagModeUnchanged (0.00s) -2026-07-05T01:36:31.2654199Z === RUN TestActionRef_ExplicitTagModeMatchesDefault -2026-07-05T01:36:31.2654596Z --- PASS: TestActionRef_ExplicitTagModeMatchesDefault (0.00s) -2026-07-05T01:36:31.2655002Z === RUN TestActionRef_SHAModePinsEveryActionWithComment -2026-07-05T01:36:31.2655705Z --- PASS: TestActionRef_SHAModePinsEveryActionWithComment (0.00s) -2026-07-05T01:36:31.2656149Z === RUN TestActionRef_ActionPinsOverrideRegardlessOfMode -2026-07-05T01:36:31.2656570Z --- PASS: TestActionRef_ActionPinsOverrideRegardlessOfMode (0.00s) -2026-07-05T01:36:31.2656969Z === RUN TestActionRef_EmptyOverrideFallsThrough -2026-07-05T01:36:31.2657334Z --- PASS: TestActionRef_EmptyOverrideFallsThrough (0.00s) -2026-07-05T01:36:31.2657697Z === RUN TestActionRef_UnknownActionPassthrough -2026-07-05T01:36:31.2658074Z --- PASS: TestActionRef_UnknownActionPassthrough (0.00s) -2026-07-05T01:36:31.2658420Z === RUN TestActionRef_NilConfigSafe -2026-07-05T01:36:31.2658730Z --- PASS: TestActionRef_NilConfigSafe (0.00s) -2026-07-05T01:36:31.2659037Z === RUN TestCLISetupRef -2026-07-05T01:36:31.2659341Z === RUN TestCLISetupRef/tag_default_when_cli_version_unset -2026-07-05T01:36:31.2659709Z === RUN TestCLISetupRef/explicit_tag_in_tag_mode -2026-07-05T01:36:31.2660617Z === RUN TestCLISetupRef/sha_mode_with_sha_set_emits_sha_and_version_comment -2026-07-05T01:36:31.2661099Z === RUN TestCLISetupRef/sha_mode_without_sha_falls_back_to_tag -2026-07-05T01:36:31.2661476Z === RUN TestCLISetupRef/tag_mode_ignores_a_set_sha -2026-07-05T01:36:31.2661891Z === RUN TestCLISetupRef/beta_opts_into_master_regardless_of_pin_mode -2026-07-05T01:36:31.2662274Z --- PASS: TestCLISetupRef (0.00s) -2026-07-05T01:36:31.2662707Z --- PASS: TestCLISetupRef/tag_default_when_cli_version_unset (0.00s) -2026-07-05T01:36:31.2663208Z --- PASS: TestCLISetupRef/explicit_tag_in_tag_mode (0.00s) -2026-07-05T01:36:31.2663767Z --- PASS: TestCLISetupRef/sha_mode_with_sha_set_emits_sha_and_version_comment (0.00s) -2026-07-05T01:36:31.2664367Z --- PASS: TestCLISetupRef/sha_mode_without_sha_falls_back_to_tag (0.00s) -2026-07-05T01:36:31.2664877Z --- PASS: TestCLISetupRef/tag_mode_ignores_a_set_sha (0.00s) -2026-07-05T01:36:31.2665416Z --- PASS: TestCLISetupRef/beta_opts_into_master_regardless_of_pin_mode (0.00s) -2026-07-05T01:36:31.2666052Z === RUN TestPinPolicy_E2E_SelfActionSHAPinned -2026-07-05T01:36:31.2666416Z --- PASS: TestPinPolicy_E2E_SelfActionSHAPinned (0.01s) -2026-07-05T01:36:31.2666792Z === RUN TestPinPolicy_E2E_OrchestrateEmitsPinnedRefs -2026-07-05T01:36:31.2667193Z --- PASS: TestPinPolicy_E2E_OrchestrateEmitsPinnedRefs (0.01s) -2026-07-05T01:36:31.2667579Z === RUN TestGetCLIRef_DefaultIsPinnedNotMutable -2026-07-05T01:36:31.2667970Z --- PASS: TestGetCLIRef_DefaultIsPinnedNotMutable (0.01s) -2026-07-05T01:36:31.2668335Z === RUN TestPinPolicy_E2E_Deterministic -2026-07-05T01:36:31.2668652Z --- PASS: TestPinPolicy_E2E_Deterministic (0.01s) -2026-07-05T01:36:31.2669012Z === RUN TestPinPolicy_E2E_TagModeDefaultUnchanged -2026-07-05T01:36:31.2669396Z --- PASS: TestPinPolicy_E2E_TagModeDefaultUnchanged (0.01s) -2026-07-05T01:36:31.2669781Z === RUN TestReleaseGenerator_NoAppTokenByDefault -2026-07-05T01:36:31.2670368Z --- PASS: TestReleaseGenerator_NoAppTokenByDefault (0.00s) -2026-07-05T01:36:31.2670795Z === RUN TestReleaseGenerator_ReleaseAppTokenMints -2026-07-05T01:36:31.2671176Z --- PASS: TestReleaseGenerator_ReleaseAppTokenMints (0.00s) -2026-07-05T01:36:31.2671546Z === RUN TestReleaseGenerator_StateAppTokenMints -2026-07-05T01:36:31.2671907Z --- PASS: TestReleaseGenerator_StateAppTokenMints (0.00s) -2026-07-05T01:36:31.2672315Z === RUN TestMintStep_FallbackPrefersConfiguredStaticToken -2026-07-05T01:36:31.2672775Z --- PASS: TestMintStep_FallbackPrefersConfiguredStaticToken (0.00s) -2026-07-05T01:36:31.2673185Z === RUN TestResolveTokenRef_OffStateIdentity -2026-07-05T01:36:31.2673545Z --- PASS: TestResolveTokenRef_OffStateIdentity (0.00s) -2026-07-05T01:36:31.2673940Z === RUN TestReleaseGenerator_ReleaseTokenDefaultsToStateToken -2026-07-05T01:36:31.2674405Z --- PASS: TestReleaseGenerator_ReleaseTokenDefaultsToStateToken (0.00s) -2026-07-05T01:36:31.2674873Z === RUN TestReleaseGenerator_BothTokensUnsetKeepsGithubToken -2026-07-05T01:36:31.2675322Z --- PASS: TestReleaseGenerator_BothTokensUnsetKeepsGithubToken (0.00s) -2026-07-05T01:36:31.2675872Z === RUN TestMintStepIndentation -2026-07-05T01:36:31.2676182Z --- PASS: TestMintStepIndentation (0.00s) -2026-07-05T01:36:31.2676510Z === RUN TestAppTokenSource_Actionlint -2026-07-05T01:36:31.2676939Z app_token_source_test.go:164: actionlint not installed -2026-07-05T01:36:31.2677303Z --- SKIP: TestAppTokenSource_Actionlint (0.00s) -2026-07-05T01:36:31.2677621Z === RUN TestAnyAutoCommits_Build -2026-07-05T01:36:31.2677909Z --- PASS: TestAnyAutoCommits_Build (0.00s) -2026-07-05T01:36:31.2678218Z === RUN TestAnyAutoCommits_Deploy -2026-07-05T01:36:31.2678505Z --- PASS: TestAnyAutoCommits_Deploy (0.00s) -2026-07-05T01:36:31.2678818Z === RUN TestAnyAutoCommits_None -2026-07-05T01:36:31.2679097Z --- PASS: TestAnyAutoCommits_None (0.00s) -2026-07-05T01:36:31.2679460Z === RUN TestManifestUpdateStep_AutoCommitsReResolvesHEAD -2026-07-05T01:36:31.2679896Z --- PASS: TestManifestUpdateStep_AutoCommitsReResolvesHEAD (0.00s) -2026-07-05T01:36:31.2680515Z === RUN TestManifestUpdateStep_NoAutoCommits_NoReResolve -2026-07-05T01:36:31.2680948Z --- PASS: TestManifestUpdateStep_NoAutoCommits_NoReResolve (0.00s) -2026-07-05T01:36:31.2681405Z === RUN TestOrchestrate_TopLevelPermissions_ExcludesCallbackScopes -2026-07-05T01:36:31.2681903Z --- PASS: TestOrchestrate_TopLevelPermissions_ExcludesCallbackScopes (0.00s) -2026-07-05T01:36:31.2682409Z === RUN TestOrchestrate_CallbackJobPermissions_CarryDeclaredScopes -2026-07-05T01:36:31.2682888Z --- PASS: TestOrchestrate_CallbackJobPermissions_CarryDeclaredScopes (0.03s) -2026-07-05T01:36:31.2683394Z === RUN TestOrchestrate_TopLevelPermissions_NoCallbackPermsByteIdentical -2026-07-05T01:36:31.2683940Z --- PASS: TestOrchestrate_TopLevelPermissions_NoCallbackPermsByteIdentical (0.00s) -2026-07-05T01:36:31.2684442Z === RUN TestPromote_TopLevelPermissions_ExcludesCallbackScopes -2026-07-05T01:36:31.2684897Z --- PASS: TestPromote_TopLevelPermissions_ExcludesCallbackScopes (0.00s) -2026-07-05T01:36:31.2685366Z === RUN TestRollback_TopLevelPermissions_ExcludesCallbackScopes -2026-07-05T01:36:31.2686017Z --- PASS: TestRollback_TopLevelPermissions_ExcludesCallbackScopes (0.00s) -2026-07-05T01:36:31.2686454Z === RUN TestFinalizeRunsOnCancelledPredecessor -2026-07-05T01:36:31.2686842Z --- PASS: TestFinalizeRunsOnCancelledPredecessor (0.00s) -2026-07-05T01:36:31.2687200Z === RUN TestFailureCheckMatchesCancelled -2026-07-05T01:36:31.2687528Z --- PASS: TestFailureCheckMatchesCancelled (0.00s) -2026-07-05T01:36:31.2687892Z === RUN TestOnFailureContinueEmitsContinueOnError -2026-07-05T01:36:31.2688289Z --- PASS: TestOnFailureContinueEmitsContinueOnError (0.00s) -2026-07-05T01:36:31.2688684Z === RUN TestDefaultCallbackOmitsContinueOnError -2026-07-05T01:36:31.2689059Z --- PASS: TestDefaultCallbackOmitsContinueOnError (0.00s) -2026-07-05T01:36:31.2689441Z === RUN TestGeneratedWorkflow_PreflightCommandValid -2026-07-05T01:36:31.2689830Z --- PASS: TestGeneratedWorkflow_PreflightCommandValid (0.00s) -2026-07-05T01:36:31.2690485Z === RUN TestGeneratedWorkflow_FinalizeCommandValid -2026-07-05T01:36:31.2690881Z --- PASS: TestGeneratedWorkflow_FinalizeCommandValid (0.00s) -2026-07-05T01:36:31.2691286Z === RUN TestGeneratedWorkflow_PromoteJobNoDirectCLICall -2026-07-05T01:36:31.2691701Z --- PASS: TestGeneratedWorkflow_PromoteJobNoDirectCLICall (0.00s) -2026-07-05T01:36:31.2692090Z === RUN TestGeneratedWorkflow_ValidCLISubcommands -2026-07-05T01:36:31.2692457Z --- PASS: TestGeneratedWorkflow_ValidCLISubcommands (0.00s) -2026-07-05T01:36:31.2692798Z === RUN TestPromoteJobStepName -2026-07-05T01:36:31.2693082Z --- PASS: TestPromoteJobStepName (0.00s) -2026-07-05T01:36:31.2693521Z === RUN TestGeneratedWorkflow_NoOrphanedFlags -2026-07-05T01:36:31.2693955Z --- PASS: TestGeneratedWorkflow_NoOrphanedFlags (0.00s) -2026-07-05T01:36:31.2694459Z === RUN TestGeneratedWorkflow_PromotePreflightStructure -2026-07-05T01:36:31.2695147Z --- PASS: TestGeneratedWorkflow_PromotePreflightStructure (0.00s) -2026-07-05T01:36:31.2695818Z === RUN TestGeneratedWorkflow_PromoteFinalizeStructure -2026-07-05T01:36:31.2696675Z --- PASS: TestGeneratedWorkflow_PromoteFinalizeStructure (0.00s) -2026-07-05T01:36:31.2697374Z === RUN TestGeneratedWorkflow_PreflightNoInvalidFlags -2026-07-05T01:36:31.2697772Z --- PASS: TestGeneratedWorkflow_PreflightNoInvalidFlags (0.00s) -2026-07-05T01:36:31.2698417Z === RUN TestGeneratedWorkflow_ChangelogCommandValid -2026-07-05T01:36:31.2698917Z --- PASS: TestGeneratedWorkflow_ChangelogCommandValid (0.00s) -2026-07-05T01:36:31.2699261Z === RUN TestNewCommand -2026-07-05T01:36:31.2699553Z --- PASS: TestNewCommand (0.00s) -2026-07-05T01:36:31.2699893Z === RUN TestRunGenerateWorkflow_ValidateOnly -2026-07-05T01:36:31.2701396Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2702452Z Config is valid -2026-07-05T01:36:31.2702774Z --- PASS: TestRunGenerateWorkflow_ValidateOnly (0.00s) -2026-07-05T01:36:31.2703217Z === RUN TestRunGenerateWorkflow_DryRun -2026-07-05T01:36:31.2704229Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2705243Z === orchestrate.yaml === -2026-07-05T01:36:31.2705600Z # AUTO-GENERATED by cascade - DO NOT EDIT MANUALLY -2026-07-05T01:36:31.2706309Z # Regenerate with: cascade generate-workflow --config /tmp/TestRunGenerateWorkflow_DryRun921523106/001/manifest.yaml -2026-07-05T01:36:31.2706752Z -2026-07-05T01:36:31.2706919Z name: Orchestrate CI/CD -2026-07-05T01:36:31.2707118Z -2026-07-05T01:36:31.2707207Z on: -2026-07-05T01:36:31.2707405Z push: -2026-07-05T01:36:31.2707625Z branches: [main] -2026-07-05T01:36:31.2707961Z paths: -2026-07-05T01:36:31.2708180Z - 'src/**' -2026-07-05T01:36:31.2708409Z workflow_dispatch: -2026-07-05T01:36:31.2708734Z inputs: -2026-07-05T01:36:31.2708969Z environment: -2026-07-05T01:36:31.2709654Z description: 'Target environment' -2026-07-05T01:36:31.2709968Z type: choice -2026-07-05T01:36:31.2710407Z options: -2026-07-05T01:36:31.2710636Z - dev -2026-07-05T01:36:31.2710934Z default: 'dev' -2026-07-05T01:36:31.2711228Z dry_run: -2026-07-05T01:36:31.2711507Z description: 'Dry run mode' -2026-07-05T01:36:31.2711919Z type: boolean -2026-07-05T01:36:31.2712171Z default: false -2026-07-05T01:36:31.2712302Z -2026-07-05T01:36:31.2712405Z concurrency: -2026-07-05T01:36:31.2712807Z group: orchestrate-${{ github.ref }} -2026-07-05T01:36:31.2713110Z cancel-in-progress: true -2026-07-05T01:36:31.2713270Z -2026-07-05T01:36:31.2713361Z permissions: -2026-07-05T01:36:31.2713573Z contents: read -2026-07-05T01:36:31.2713794Z actions: read -2026-07-05T01:36:31.2713918Z -2026-07-05T01:36:31.2714002Z jobs: -2026-07-05T01:36:31.2714194Z setup: -2026-07-05T01:36:31.2714407Z name: Setup -2026-07-05T01:36:31.2714655Z runs-on: ubuntu-latest -2026-07-05T01:36:31.2714924Z timeout-minutes: 30 -2026-07-05T01:36:31.2715160Z outputs: -2026-07-05T01:36:31.2715512Z run_build_app: ${{ steps.setup.outputs.run_build_app }} -2026-07-05T01:36:31.2715959Z head_sha: ${{ steps.setup.outputs.head_sha }} -2026-07-05T01:36:31.2716380Z version: ${{ steps.setup.outputs.version }} -2026-07-05T01:36:31.2716836Z previous_tag: ${{ steps.setup.outputs.previous_tag }} -2026-07-05T01:36:31.2717358Z changelog_base_sha: ${{ steps.setup.outputs.changelog_base_sha }} -2026-07-05T01:36:31.2717886Z base_build_app: ${{ steps.setup.outputs.base_build_app }} -2026-07-05T01:36:31.2718224Z steps: -2026-07-05T01:36:31.2718482Z - uses: actions/checkout@v7 -2026-07-05T01:36:31.2718755Z with: -2026-07-05T01:36:31.2719019Z fetch-depth: 0 -2026-07-05T01:36:31.2719284Z - name: Setup CLI -2026-07-05T01:36:31.2719716Z uses: stablekernel/cascade/.github/actions/setup-cli@v0.1.0 -2026-07-05T01:36:31.2720508Z with: -2026-07-05T01:36:31.2720830Z token: ${{ secrets.GITHUB_TOKEN }} -2026-07-05T01:36:31.2721168Z version: v0.1.0 -2026-07-05T01:36:31.2721431Z - name: Run Setup -2026-07-05T01:36:31.2721675Z id: setup -2026-07-05T01:36:31.2721907Z env: -2026-07-05T01:36:31.2722344Z ENVIRONMENT: ${{ github.event.inputs.environment || 'dev' }} -2026-07-05T01:36:31.2722712Z run: | -2026-07-05T01:36:31.2723008Z cascade orchestrate setup \ -2026-07-05T01:36:31.2723393Z --environment "$ENVIRONMENT" \ -2026-07-05T01:36:31.2723763Z --config manifest.yaml \ -2026-07-05T01:36:31.2724080Z --gha-output -2026-07-05T01:36:31.2724229Z -2026-07-05T01:36:31.2724329Z build-app: -2026-07-05T01:36:31.2724554Z name: Build (app) -2026-07-05T01:36:31.2724789Z needs: [setup] -2026-07-05T01:36:31.2725006Z if: | -2026-07-05T01:36:31.2725309Z needs.setup.outputs.run_build_app == 'true' -2026-07-05T01:36:31.2725676Z uses: ./.github/workflows/build.yaml -2026-07-05T01:36:31.2725954Z with: -2026-07-05T01:36:31.2726325Z environment: ${{ github.event.inputs.environment || 'dev' }} -2026-07-05T01:36:31.2726584Z -2026-07-05T01:36:31.2726679Z finalize: -2026-07-05T01:36:31.2726895Z name: Finalize -2026-07-05T01:36:31.2727148Z needs: [setup, build-app] -2026-07-05T01:36:31.2727485Z if: always() && needs.setup.result == 'success' -2026-07-05T01:36:31.2727826Z runs-on: ubuntu-latest -2026-07-05T01:36:31.2728093Z timeout-minutes: 30 -2026-07-05T01:36:31.2728342Z permissions: -2026-07-05T01:36:31.2728595Z contents: write -2026-07-05T01:36:31.2728827Z outputs: -2026-07-05T01:36:31.2729180Z app_image_tag: ${{ needs.build-app.outputs.image_tag }} -2026-07-05T01:36:31.2729510Z steps: -2026-07-05T01:36:31.2729766Z - uses: actions/checkout@v7 -2026-07-05T01:36:31.2730249Z with: -2026-07-05T01:36:31.2730505Z fetch-depth: 0 -2026-07-05T01:36:31.2730793Z - name: Generate Summary -2026-07-05T01:36:31.2731197Z run: | -2026-07-05T01:36:31.2731631Z echo "## Orchestration Complete" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2732075Z echo "" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2732572Z echo "### Callback Results" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2733150Z echo "| Callback | Result | On Failure |" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2733748Z echo "|----------|--------|------------|" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2734442Z echo "| Build (app) | ${{ needs.build-app.result }} | abort |" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2734969Z echo "" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2735404Z echo "### Outputs" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2735760Z HAS_OUTPUTS=false -2026-07-05T01:36:31.2736253Z if [[ -n "${{ needs.build-app.outputs.image_tag }}" ]]; then -2026-07-05T01:36:31.2736757Z if [[ "$HAS_OUTPUTS" == "false" ]]; then -2026-07-05T01:36:31.2737303Z echo "| Output | Value |" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2737852Z echo "|--------|-------|" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2738229Z HAS_OUTPUTS=true -2026-07-05T01:36:31.2738503Z fi -2026-07-05T01:36:31.2739155Z echo "| app_image_tag | ${{ needs.build-app.outputs.image_tag }} |" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2739608Z fi -2026-07-05T01:36:31.2739939Z if [[ "$HAS_OUTPUTS" == "false" ]]; then -2026-07-05T01:36:31.2740652Z echo "_No outputs produced_" >> "$GITHUB_STEP_SUMMARY" -2026-07-05T01:36:31.2740988Z fi -2026-07-05T01:36:31.2741231Z - name: Setup CLI -2026-07-05T01:36:31.2741683Z uses: stablekernel/cascade/.github/actions/setup-cli@v0.1.0 -2026-07-05T01:36:31.2742035Z with: -2026-07-05T01:36:31.2742348Z token: ${{ secrets.GITHUB_TOKEN }} -2026-07-05T01:36:31.2742830Z version: v0.1.0 -2026-07-05T01:36:31.2743132Z - name: Generate Changelog -2026-07-05T01:36:31.2743414Z id: changelog -2026-07-05T01:36:31.2743643Z env: -2026-07-05T01:36:31.2743961Z GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -2026-07-05T01:36:31.2744268Z run: | -2026-07-05T01:36:31.2744696Z # Use changelog_base_sha which compares this env to next env -2026-07-05T01:36:31.2745396Z # This shows commits in this env NOT yet promoted to next env -2026-07-05T01:36:31.2745910Z RESULT=$(cascade generate-changelog \ -2026-07-05T01:36:31.2746530Z --base-sha "${{ needs.setup.outputs.changelog_base_sha }}" \ -2026-07-05T01:36:31.2747105Z --head-sha "${{ needs.setup.outputs.head_sha }}" \ -2026-07-05T01:36:31.2747556Z --repo "${{ github.repository }}") -2026-07-05T01:36:31.2747985Z echo "changelog<> "$GITHUB_OUTPUT" -2026-07-05T01:36:31.2748474Z echo "$RESULT" | jq -r '.changelog' >> "$GITHUB_OUTPUT" -2026-07-05T01:36:31.2748900Z echo "EOF" >> "$GITHUB_OUTPUT" -2026-07-05T01:36:31.2749214Z - name: Manage Release -2026-07-05T01:36:31.2749559Z uses: ./.github/actions/manage-release -2026-07-05T01:36:31.2749845Z with: -2026-07-05T01:36:31.2750388Z repo: ${{ github.repository }} -2026-07-05T01:36:31.2750729Z action: update -2026-07-05T01:36:31.2751093Z tag: ${{ needs.setup.outputs.version }} -2026-07-05T01:36:31.2751441Z create_tag: 'true' -2026-07-05T01:36:31.2751912Z environment: ${{ github.event.inputs.environment || 'dev' }} -2026-07-05T01:36:31.2752392Z sha: ${{ needs.setup.outputs.head_sha }} -2026-07-05T01:36:31.2752879Z changelog: ${{ steps.changelog.outputs.changelog }} -2026-07-05T01:36:31.2753401Z previous_tag: ${{ needs.setup.outputs.previous_tag }} -2026-07-05T01:36:31.2753838Z token: ${{ secrets.GITHUB_TOKEN }} -2026-07-05T01:36:31.2754158Z - name: Update Manifest -2026-07-05T01:36:31.2754494Z env: -2026-07-05T01:36:31.2755079Z GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} -2026-07-05T01:36:31.2755635Z HEAD_SHA: ${{ needs.setup.outputs.head_sha }} -2026-07-05T01:36:31.2767877Z VERSION: ${{ needs.setup.outputs.version }} -2026-07-05T01:36:31.2768454Z ENVIRONMENT: ${{ github.event.inputs.environment || 'dev' }} -2026-07-05T01:36:31.2768824Z run: | -2026-07-05T01:36:31.2769132Z MANIFEST_FILE="manifest.yaml" -2026-07-05T01:36:31.2769455Z MANIFEST_KEY="ci" -2026-07-05T01:36:31.2769806Z if [[ ! -f "$MANIFEST_FILE" ]]; then -2026-07-05T01:36:31.2770549Z echo "No $MANIFEST_FILE found - skipping state update" -2026-07-05T01:36:31.2770911Z exit 0 -2026-07-05T01:36:31.2771130Z fi -2026-07-05T01:36:31.2771339Z -2026-07-05T01:36:31.2771681Z git config user.name "github-actions[bot]" -2026-07-05T01:36:31.2772251Z git config user.email "github-actions[bot]@users.noreply.github.com" -2026-07-05T01:36:31.2772762Z BRANCH="${GITHUB_REF##refs/heads/}" -2026-07-05T01:36:31.2773043Z -2026-07-05T01:36:31.2773297Z apply_state_edits() { -2026-07-05T01:36:31.2773693Z TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ) -2026-07-05T01:36:31.2774233Z # Update environment-level state (committed, not deployed) -2026-07-05T01:36:31.2774959Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.sha = \"$HEAD_SHA\"" "$MANIFEST_FILE" -2026-07-05T01:36:31.2775754Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.version = \"$VERSION\"" "$MANIFEST_FILE" -2026-07-05T01:36:31.2776850Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.committed_at = \"$TIMESTAMP\"" "$MANIFEST_FILE" -2026-07-05T01:36:31.2777773Z yq eval -i ".$MANIFEST_KEY.state.$ENVIRONMENT.committed_by = \"${{ github.actor }}\"" "$MANIFEST_FILE" -2026-07-05T01:36:31.2778242Z } -2026-07-05T01:36:31.2778440Z -2026-07-05T01:36:31.2779049Z if [[ "$GITHUB_SERVER_URL" != "https://github.com" ]]; then -2026-07-05T01:36:31.2779699Z # act/gitea e2e: no GitHub API, and the trunk is neither protected nor -2026-07-05T01:36:31.2780568Z # signature-checked, so push the state commit directly with retries. -2026-07-05T01:36:31.2781044Z for attempt in 1 2 3 4 5; do -2026-07-05T01:36:31.2781417Z git fetch origin "$BRANCH" -2026-07-05T01:36:31.2781815Z git reset --hard "origin/$BRANCH" -2026-07-05T01:36:31.2782172Z apply_state_edits -2026-07-05T01:36:31.2782602Z if git diff --quiet "$MANIFEST_FILE"; then -2026-07-05T01:36:31.2783025Z echo "No state changes" -2026-07-05T01:36:31.2783333Z exit 0 -2026-07-05T01:36:31.2783575Z fi -2026-07-05T01:36:31.2783893Z git add "$MANIFEST_FILE" -2026-07-05T01:36:31.2784470Z git commit -m "chore: update state for $ENVIRONMENT [skip ci]" -2026-07-05T01:36:31.2785119Z if git push origin "HEAD:$BRANCH"; then -2026-07-05T01:36:31.2785724Z echo "Pushed state on attempt $attempt" -2026-07-05T01:36:31.2786077Z exit 0 -2026-07-05T01:36:31.2786317Z fi -2026-07-05T01:36:31.2786931Z echo "Push attempt $attempt rejected (likely concurrent run); retrying..." >&2 -2026-07-05T01:36:31.2787445Z sleep $((RANDOM % 5 + 2)) -2026-07-05T01:36:31.2787728Z done -2026-07-05T01:36:31.2788232Z echo "::error::Failed to push state after 5 attempts" >&2 -2026-07-05T01:36:31.2788594Z exit 1 -2026-07-05T01:36:31.2788818Z fi -2026-07-05T01:36:31.2789027Z -2026-07-05T01:36:31.2789514Z # Real GitHub: write state through the Contents REST API. API commits are -2026-07-05T01:36:31.2790350Z # signed by GitHub (Verified) and, with a bypass-capable token, update the -2026-07-05T01:36:31.2790929Z # trunk even when a required status check protects it. -2026-07-05T01:36:31.2791346Z for attempt in 1 2 3 4 5; do -2026-07-05T01:36:31.2791868Z git fetch origin "$BRANCH" -2026-07-05T01:36:31.2792243Z git reset --hard "origin/$BRANCH" -2026-07-05T01:36:31.2792595Z apply_state_edits -2026-07-05T01:36:31.2792995Z if git diff --quiet "$MANIFEST_FILE"; then -2026-07-05T01:36:31.2793389Z echo "No state changes" -2026-07-05T01:36:31.2793681Z exit 0 -2026-07-05T01:36:31.2793912Z fi -2026-07-05T01:36:31.2794561Z CONTENT_B64=$(base64 -w0 "$MANIFEST_FILE" 2>/dev/null || base64 "$MANIFEST_FILE" | tr -d '\n') -2026-07-05T01:36:31.2795629Z CURRENT_SHA=$(gh api "repos/${{ github.repository }}/contents/$MANIFEST_FILE?ref=$BRANCH" --jq '.sha' 2>/dev/null || true) -2026-07-05T01:36:31.2796481Z API_ARGS=("repos/${{ github.repository }}/contents/$MANIFEST_FILE" -X PUT -2026-07-05T01:36:31.2797147Z -f "message=chore: update state for $ENVIRONMENT [skip ci]" -2026-07-05T01:36:31.2797621Z -f "content=$CONTENT_B64" -2026-07-05T01:36:31.2797975Z -f "branch=$BRANCH" -2026-07-05T01:36:31.2798397Z -f "author[name]=github-actions[bot]" -2026-07-05T01:36:31.2799000Z -f "author[email]=github-actions[bot]@users.noreply.github.com" -2026-07-05T01:36:31.2799542Z -f "committer[name]=github-actions[bot]" -2026-07-05T01:36:31.2800338Z -f "committer[email]=github-actions[bot]@users.noreply.github.com") -2026-07-05T01:36:31.2800836Z if [[ -n "$CURRENT_SHA" ]]; then -2026-07-05T01:36:31.2801252Z API_ARGS+=(-f "sha=$CURRENT_SHA") -2026-07-05T01:36:31.2801547Z fi -2026-07-05T01:36:31.2801912Z if gh api "${API_ARGS[@]}" >/dev/null; then -2026-07-05T01:36:31.2802419Z echo "Pushed state via API on attempt $attempt" -2026-07-05T01:36:31.2802763Z exit 0 -2026-07-05T01:36:31.2802996Z fi -2026-07-05T01:36:31.2803728Z echo "State write attempt $attempt failed (likely concurrent run); retrying..." >&2 -2026-07-05T01:36:31.2804294Z sleep $((RANDOM % 5 + 2)) -2026-07-05T01:36:31.2804570Z done -2026-07-05T01:36:31.2805036Z echo "::error::Failed to write state via API after 5 attempts" >&2 -2026-07-05T01:36:31.2805406Z exit 1 -2026-07-05T01:36:31.2805662Z - name: Check for Failures -2026-07-05T01:36:31.2806179Z if: contains(fromJSON('["failure", "cancelled"]'), needs.build-app.result) -2026-07-05T01:36:31.2806570Z run: | -2026-07-05T01:36:31.2807002Z echo "One or more critical callbacks failed or were cancelled" -2026-07-05T01:36:31.2807360Z exit 1 -2026-07-05T01:36:31.2807608Z --- PASS: TestRunGenerateWorkflow_DryRun (0.00s) -2026-07-05T01:36:31.2807937Z === RUN TestRunGenerateWorkflow_FileExists -2026-07-05T01:36:31.2808857Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2810514Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2811508Z Generated workflow: /tmp/TestRunGenerateWorkflow_FileExists3822894224/001/output.yaml -2026-07-05T01:36:31.2812405Z Generated action: /tmp/TestRunGenerateWorkflow_FileExists3822894224/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.2813051Z --- PASS: TestRunGenerateWorkflow_FileExists (0.01s) -2026-07-05T01:36:31.2813398Z === RUN TestRunGenerateWorkflow_InvalidConfig -2026-07-05T01:36:31.2813717Z Error: builds[0]: workflow is required -2026-07-05T01:36:31.2814049Z --- PASS: TestRunGenerateWorkflow_InvalidConfig (0.00s) -2026-07-05T01:36:31.2814403Z === RUN TestRunGenerateWorkflow_ConfigNotFound -2026-07-05T01:36:31.2814773Z --- PASS: TestRunGenerateWorkflow_ConfigNotFound (0.00s) -2026-07-05T01:36:31.2815288Z === RUN TestRunGenerateWorkflow_WithCommit -2026-07-05T01:36:31.2816172Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2817254Z Generated workflow: /tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/workflows/orchestrate.yaml -2026-07-05T01:36:31.2818024Z Generated action: /tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.2819129Z Committed: [/tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/workflows/orchestrate.yaml /tmp/TestRunGenerateWorkflow_WithCommit1643810387/001/.github/actions/manage-release/action.yaml] -2026-07-05T01:36:31.2820138Z --- PASS: TestRunGenerateWorkflow_WithCommit (0.03s) -2026-07-05T01:36:31.2820525Z === RUN TestRunGenerateWorkflow_CommitNoChanges -2026-07-05T01:36:31.2821421Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2822503Z Generated workflow: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/workflows/orchestrate.yaml -2026-07-05T01:36:31.2823308Z Generated action: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.2824464Z Committed: [/tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/workflows/orchestrate.yaml /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/actions/manage-release/action.yaml] -2026-07-05T01:36:31.2826099Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2827197Z Generated workflow: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/workflows/orchestrate.yaml -2026-07-05T01:36:31.2828267Z Generated action: /tmp/TestRunGenerateWorkflow_CommitNoChanges2664699577/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.2828900Z No changes to commit -2026-07-05T01:36:31.2829199Z --- PASS: TestRunGenerateWorkflow_CommitNoChanges (0.04s) -2026-07-05T01:36:31.2829558Z === RUN TestRunGenerateWorkflow_WithPush -2026-07-05T01:36:31.2830695Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2831787Z Generated workflow: /tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/workflows/orchestrate.yaml -2026-07-05T01:36:31.2832582Z Generated action: /tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.2833671Z Committed: [/tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/workflows/orchestrate.yaml /tmp/TestRunGenerateWorkflow_WithPush1113004349/001/.github/actions/manage-release/action.yaml] -2026-07-05T01:36:31.2834513Z --- PASS: TestRunGenerateWorkflow_WithPush (0.03s) -2026-07-05T01:36:31.2834859Z === RUN TestRunGenerateWorkflow_ExtraTriggers -2026-07-05T01:36:31.2835748Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.2836769Z Generated workflow: /tmp/TestRunGenerateWorkflow_ExtraTriggers1558086455/001/orchestrate.yaml -2026-07-05T01:36:31.2837511Z Generated action: /tmp/TestRunGenerateWorkflow_ExtraTriggers1558086455/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.2838110Z --- PASS: TestRunGenerateWorkflow_ExtraTriggers (0.01s) -2026-07-05T01:36:31.2838683Z === RUN TestCrossRepoBuildCallback_GeneratesWithoutLocalRead -2026-07-05T01:36:31.2839147Z --- PASS: TestCrossRepoBuildCallback_GeneratesWithoutLocalRead (0.00s) -2026-07-05T01:36:31.2839601Z === RUN TestCrossRepoCallback_OperatorInputsPassThrough -2026-07-05T01:36:31.2840192Z --- PASS: TestCrossRepoCallback_OperatorInputsPassThrough (0.00s) -2026-07-05T01:36:31.2840617Z === RUN TestCustomChangelog_Actionlint -2026-07-05T01:36:31.2841082Z custom_changelog_test.go:124: actionlint not installed -2026-07-05T01:36:31.2841455Z --- SKIP: TestCustomChangelog_Actionlint (0.00s) -2026-07-05T01:36:31.2841814Z === RUN TestWriteDeployStrategyOptions_NilRollout -2026-07-05T01:36:31.2842340Z --- PASS: TestWriteDeployStrategyOptions_NilRollout (0.00s) -2026-07-05T01:36:31.2842736Z === RUN TestWriteDeployStrategyOptions_MaxParallelSet -2026-07-05T01:36:31.2843133Z --- PASS: TestWriteDeployStrategyOptions_MaxParallelSet (0.00s) -2026-07-05T01:36:31.2843547Z === RUN TestWriteDeployStrategyOptions_MaxParallelUnset -2026-07-05T01:36:31.2843962Z --- PASS: TestWriteDeployStrategyOptions_MaxParallelUnset (0.00s) -2026-07-05T01:36:31.2844361Z === RUN TestWriteDeployStrategyOptions_FailFastTrue -2026-07-05T01:36:31.2844745Z --- PASS: TestWriteDeployStrategyOptions_FailFastTrue (0.00s) -2026-07-05T01:36:31.2845139Z === RUN TestWriteDeployStrategyOptions_FailFastFalse -2026-07-05T01:36:31.2845534Z --- PASS: TestWriteDeployStrategyOptions_FailFastFalse (0.00s) -2026-07-05T01:36:31.2845913Z === RUN TestWriteDeployStrategyOptions_BothSet -2026-07-05T01:36:31.2846282Z --- PASS: TestWriteDeployStrategyOptions_BothSet (0.00s) -2026-07-05T01:36:31.2846648Z === RUN TestDeployStrategy_DefaultBehaviour -2026-07-05T01:36:31.2846985Z --- PASS: TestDeployStrategy_DefaultBehaviour (0.00s) -2026-07-05T01:36:31.2847327Z === RUN TestDeployStrategy_MaxParallelEmitted -2026-07-05T01:36:31.2847671Z --- PASS: TestDeployStrategy_MaxParallelEmitted (0.00s) -2026-07-05T01:36:31.2848163Z === RUN TestDeployStrategy_RollingOneAtATime -2026-07-05T01:36:31.2848524Z --- PASS: TestDeployStrategy_RollingOneAtATime (0.00s) -2026-07-05T01:36:31.2848873Z === RUN TestDeployStrategy_FailFastTrue -2026-07-05T01:36:31.2849196Z --- PASS: TestDeployStrategy_FailFastTrue (0.00s) -2026-07-05T01:36:31.2849547Z === RUN TestDeployStrategy_FailFastFalseExplicit -2026-07-05T01:36:31.2849923Z --- PASS: TestDeployStrategy_FailFastFalseExplicit (0.00s) -2026-07-05T01:36:31.2850617Z === RUN TestDeployStrategy_MaxParallelAndFailFastCombined -2026-07-05T01:36:31.2851062Z --- PASS: TestDeployStrategy_MaxParallelAndFailFastCombined (0.00s) -2026-07-05T01:36:31.2851480Z === RUN TestDeployStrategy_MaxParallelZeroOmitted -2026-07-05T01:36:31.2851860Z --- PASS: TestDeployStrategy_MaxParallelZeroOmitted (0.00s) -2026-07-05T01:36:31.2852451Z === RUN TestDeployTargetReservedFieldsAreByteIdentical -2026-07-05T01:36:31.2852994Z === PAUSE TestDeployTargetReservedFieldsAreByteIdentical -2026-07-05T01:36:31.2853507Z === RUN TestGeneration_Deterministic_MultiEnv -2026-07-05T01:36:31.2853871Z --- PASS: TestGeneration_Deterministic_MultiEnv (0.30s) -2026-07-05T01:36:31.2854221Z === RUN TestGenerator_DefaultEmitsPushTrigger -2026-07-05T01:36:31.2854570Z --- PASS: TestGenerator_DefaultEmitsPushTrigger (0.00s) -2026-07-05T01:36:31.2854935Z === RUN TestGenerator_DispatchOnlyOmitsPushTrigger -2026-07-05T01:36:31.2855326Z --- PASS: TestGenerator_DispatchOnlyOmitsPushTrigger (0.00s) -2026-07-05T01:36:31.2855688Z === RUN TestDriftCheckGenerator_Enabled -2026-07-05T01:36:31.2856036Z === RUN TestDriftCheckGenerator_Enabled/nil_drift_check -2026-07-05T01:36:31.2856432Z === RUN TestDriftCheckGenerator_Enabled/present_but_disabled -2026-07-05T01:36:31.2856809Z === RUN TestDriftCheckGenerator_Enabled/enabled -2026-07-05T01:36:31.2857152Z --- PASS: TestDriftCheckGenerator_Enabled (0.00s) -2026-07-05T01:36:31.2857607Z --- PASS: TestDriftCheckGenerator_Enabled/nil_drift_check (0.00s) -2026-07-05T01:36:31.2858152Z --- PASS: TestDriftCheckGenerator_Enabled/present_but_disabled (0.00s) -2026-07-05T01:36:31.2858829Z --- PASS: TestDriftCheckGenerator_Enabled/enabled (0.00s) -2026-07-05T01:36:31.2859208Z === RUN TestDriftCheckGenerator_Generate_Disabled -2026-07-05T01:36:31.2859582Z --- PASS: TestDriftCheckGenerator_Generate_Disabled (0.00s) -2026-07-05T01:36:31.2859954Z === RUN TestDriftCheckGenerator_CheckJob_ReadOnly -2026-07-05T01:36:31.2860636Z --- PASS: TestDriftCheckGenerator_CheckJob_ReadOnly (0.00s) -2026-07-05T01:36:31.2861033Z === RUN TestDriftCheckGenerator_NoComment_OmitsArtifact -2026-07-05T01:36:31.2861447Z --- PASS: TestDriftCheckGenerator_NoComment_OmitsArtifact (0.00s) -2026-07-05T01:36:31.2861859Z === RUN TestDriftCheckGenerator_Comment_TrustedMetadata -2026-07-05T01:36:31.2862254Z --- PASS: TestDriftCheckGenerator_Comment_TrustedMetadata (0.00s) -2026-07-05T01:36:31.2862635Z === RUN TestDriftCheckGenerator_Deterministic -2026-07-05T01:36:31.2862988Z --- PASS: TestDriftCheckGenerator_Deterministic (0.00s) -2026-07-05T01:36:31.2863362Z === RUN TestDriftCheckGenerator_SetupCLIPassesToken -2026-07-05T01:36:31.2863769Z --- PASS: TestDriftCheckGenerator_SetupCLIPassesToken (0.00s) -2026-07-05T01:36:31.2864138Z === RUN TestDriftCheckGenerator_PinModeSHA -2026-07-05T01:36:31.2864474Z --- PASS: TestDriftCheckGenerator_PinModeSHA (0.00s) -2026-07-05T01:36:31.2864807Z === RUN TestDriftCheckGenerator_Actionlint -2026-07-05T01:36:31.2865211Z drift_check_test.go:169: actionlint not installed -2026-07-05T01:36:31.2865553Z --- SKIP: TestDriftCheckGenerator_Actionlint (0.00s) -2026-07-05T01:36:31.2865896Z === RUN TestPromote_SupportsDryRun_SingleDeploy -2026-07-05T01:36:31.2866266Z --- PASS: TestPromote_SupportsDryRun_SingleDeploy (0.00s) -2026-07-05T01:36:31.2866620Z === RUN TestPromote_NoSupportsDryRun_SingleDeploy -2026-07-05T01:36:31.2866987Z --- PASS: TestPromote_NoSupportsDryRun_SingleDeploy (0.00s) -2026-07-05T01:36:31.2867345Z === RUN TestPromote_SupportsDryRun_ProdDeploy -2026-07-05T01:36:31.2867685Z --- PASS: TestPromote_SupportsDryRun_ProdDeploy (0.00s) -2026-07-05T01:36:31.2868212Z === RUN TestPromote_SupportsDryRun_NormalRunUnaffected -2026-07-05T01:36:31.2868616Z --- PASS: TestPromote_SupportsDryRun_NormalRunUnaffected (0.00s) -2026-07-05T01:36:31.2869043Z === RUN TestOrchestrate_SupportsDryRun_WithInputPassthrough -2026-07-05T01:36:31.2869477Z --- PASS: TestOrchestrate_SupportsDryRun_WithInputPassthrough (0.00s) -2026-07-05T01:36:31.2869898Z === RUN TestOrchestrate_NoSupportsDryRun_NoDryRunInput -2026-07-05T01:36:31.2870437Z --- PASS: TestOrchestrate_NoSupportsDryRun_NoDryRunInput (0.00s) -2026-07-05T01:36:31.2870830Z === RUN TestOrchestrate_SupportsDryRun_CoercedNotBare -2026-07-05T01:36:31.2871225Z --- PASS: TestOrchestrate_SupportsDryRun_CoercedNotBare (0.00s) -2026-07-05T01:36:31.2871636Z === RUN TestOrchestrate_DispatchInputs_BooleanCoercion -2026-07-05T01:36:31.2872030Z --- PASS: TestOrchestrate_DispatchInputs_BooleanCoercion (0.00s) -2026-07-05T01:36:31.2872481Z === RUN TestEnvGate_Orchestrate_ExternalDeploy_NoJobLevelEnvironment -2026-07-05T01:36:31.2873006Z --- PASS: TestEnvGate_Orchestrate_ExternalDeploy_NoJobLevelEnvironment (0.00s) -2026-07-05T01:36:31.2873520Z === RUN TestEnvGate_Promote_ExternalSingleDeploy_NoJobLevelEnvironment -2026-07-05T01:36:31.2874037Z --- PASS: TestEnvGate_Promote_ExternalSingleDeploy_NoJobLevelEnvironment (0.00s) -2026-07-05T01:36:31.2874536Z === RUN TestEnvGate_Promote_ExternalProdDeploy_NoJobLevelEnvironment -2026-07-05T01:36:31.2875030Z --- PASS: TestEnvGate_Promote_ExternalProdDeploy_NoJobLevelEnvironment (0.00s) -2026-07-05T01:36:31.2875781Z === RUN TestEnvGate_Warning_ExternalDeployWithGHAEnvironment -2026-07-05T01:36:31.2876341Z --- PASS: TestEnvGate_Warning_ExternalDeployWithGHAEnvironment (0.00s) -2026-07-05T01:36:31.2876849Z === RUN TestEnvGate_Warning_InlineDeployWithGHAEnvironment -2026-07-05T01:36:31.2877286Z --- PASS: TestEnvGate_Warning_InlineDeployWithGHAEnvironment (0.00s) -2026-07-05T01:36:31.2877743Z === RUN TestEnvGate_Actionlint_ExternalDeployWithGHAEnvironment -2026-07-05T01:36:31.2878241Z env_gate_reusable_test.go:244: actionlint not installed -2026-07-05T01:36:31.2878849Z --- SKIP: TestEnvGate_Actionlint_ExternalDeployWithGHAEnvironment (0.00s) -2026-07-05T01:36:31.2879313Z === RUN TestEnvGates_Orchestrate_DeployJob_WithGHAEnvironment -2026-07-05T01:36:31.2879771Z --- PASS: TestEnvGates_Orchestrate_DeployJob_WithGHAEnvironment (0.00s) -2026-07-05T01:36:31.2880410Z === RUN TestEnvGates_Orchestrate_DeployJob_WithoutGHAEnvironment -2026-07-05T01:36:31.2880890Z --- PASS: TestEnvGates_Orchestrate_DeployJob_WithoutGHAEnvironment (0.00s) -2026-07-05T01:36:31.2881350Z === RUN TestEnvGates_Orchestrate_BuildJob_NoEnvironmentKey -2026-07-05T01:36:31.2881789Z --- PASS: TestEnvGates_Orchestrate_BuildJob_NoEnvironmentKey (0.00s) -2026-07-05T01:36:31.2882233Z === RUN TestEnvGates_Promote_SingleDeployJob_WithGHAEnvironment -2026-07-05T01:36:31.2882689Z --- PASS: TestEnvGates_Promote_SingleDeployJob_WithGHAEnvironment (0.00s) -2026-07-05T01:36:31.2883160Z === RUN TestEnvGates_Promote_SingleDeployJob_WithoutGHAEnvironment -2026-07-05T01:36:31.2883642Z --- PASS: TestEnvGates_Promote_SingleDeployJob_WithoutGHAEnvironment (0.00s) -2026-07-05T01:36:31.2884104Z === RUN TestEnvGates_Promote_ProdDeployJob_WithGHAEnvironment -2026-07-05T01:36:31.2884549Z --- PASS: TestEnvGates_Promote_ProdDeployJob_WithGHAEnvironment (0.00s) -2026-07-05T01:36:31.2885171Z === RUN TestEnvGates_Promote_ProdDeployJob_WithoutGHAEnvironment -2026-07-05T01:36:31.2885670Z --- PASS: TestEnvGates_Promote_ProdDeployJob_WithoutGHAEnvironment (0.00s) -2026-07-05T01:36:31.2886268Z === RUN TestEnvGates_Promote_ProdDeployJob_OnlyFinalEnvGated -2026-07-05T01:36:31.2886706Z --- PASS: TestEnvGates_Promote_ProdDeployJob_OnlyFinalEnvGated (0.00s) -2026-07-05T01:36:31.2887092Z === RUN TestEnvGates_Helper_envGHAName -2026-07-05T01:36:31.2887415Z --- PASS: TestEnvGates_Helper_envGHAName (0.00s) -2026-07-05T01:36:31.2887758Z === RUN TestEnvGates_Helper_anyEnvHasGHAConfig -2026-07-05T01:36:31.2888111Z --- PASS: TestEnvGates_Helper_anyEnvHasGHAConfig (0.00s) -2026-07-05T01:36:31.2888614Z === RUN TestClassifyInputValue -2026-07-05T01:36:31.2888913Z === RUN TestClassifyInputValue/plain_literal -2026-07-05T01:36:31.2889225Z === RUN TestClassifyInputValue/empty -2026-07-05T01:36:31.2889541Z === RUN TestClassifyInputValue/vars_passthrough -2026-07-05T01:36:31.2889899Z === RUN TestClassifyInputValue/secrets_passthrough -2026-07-05T01:36:31.2890468Z === RUN TestClassifyInputValue/env_passthrough -2026-07-05T01:36:31.2890847Z === RUN TestClassifyInputValue/dispatch_inputs_passthrough -2026-07-05T01:36:31.2891352Z === RUN TestClassifyInputValue/matrix_env_is_literal/matrix -2026-07-05T01:36:31.2891747Z === RUN TestClassifyInputValue/matrix_sha_is_literal/matrix -2026-07-05T01:36:31.2892091Z === RUN TestClassifyInputValue/state_ref -2026-07-05T01:36:31.2892407Z === RUN TestClassifyInputValue/state_version_ref -2026-07-05T01:36:31.2892755Z === RUN TestClassifyInputValue/state_nested_build_tag -2026-07-05T01:36:31.2893161Z === RUN TestClassifyInputValue/mixed_template_not_passthrough -2026-07-05T01:36:31.2893585Z === RUN TestClassifyInputValue/two_expressions_not_passthrough -2026-07-05T01:36:31.2894116Z === RUN TestClassifyInputValue/whitespace_tolerant -2026-07-05T01:36:31.2894546Z --- PASS: TestClassifyInputValue (0.00s) -2026-07-05T01:36:31.2895040Z --- PASS: TestClassifyInputValue/plain_literal (0.00s) -2026-07-05T01:36:31.2895447Z --- PASS: TestClassifyInputValue/empty (0.00s) -2026-07-05T01:36:31.2895864Z --- PASS: TestClassifyInputValue/vars_passthrough (0.00s) -2026-07-05T01:36:31.2896328Z --- PASS: TestClassifyInputValue/secrets_passthrough (0.00s) -2026-07-05T01:36:31.2896781Z --- PASS: TestClassifyInputValue/env_passthrough (0.00s) -2026-07-05T01:36:31.2897280Z --- PASS: TestClassifyInputValue/dispatch_inputs_passthrough (0.00s) -2026-07-05T01:36:31.2897824Z --- PASS: TestClassifyInputValue/matrix_env_is_literal/matrix (0.00s) -2026-07-05T01:36:31.2898356Z --- PASS: TestClassifyInputValue/matrix_sha_is_literal/matrix (0.00s) -2026-07-05T01:36:31.2898997Z --- PASS: TestClassifyInputValue/state_ref (0.00s) -2026-07-05T01:36:31.2899426Z --- PASS: TestClassifyInputValue/state_version_ref (0.00s) -2026-07-05T01:36:31.2899900Z --- PASS: TestClassifyInputValue/state_nested_build_tag (0.00s) -2026-07-05T01:36:31.2900691Z --- PASS: TestClassifyInputValue/mixed_template_not_passthrough (0.00s) -2026-07-05T01:36:31.2901271Z --- PASS: TestClassifyInputValue/two_expressions_not_passthrough (0.00s) -2026-07-05T01:36:31.2901783Z --- PASS: TestClassifyInputValue/whitespace_tolerant (0.00s) -2026-07-05T01:36:31.2902139Z === RUN TestResolveStateExpression -2026-07-05T01:36:31.2902465Z === RUN TestResolveStateExpression/state.prod.sha -2026-07-05T01:36:31.2902834Z === RUN TestResolveStateExpression/state.prod.version -2026-07-05T01:36:31.2903239Z === RUN TestResolveStateExpression/state.prod.builds.image.sha -2026-07-05T01:36:31.2903708Z === RUN TestResolveStateExpression/state.prod.builds.image.artifact_id -2026-07-05T01:36:31.2904224Z === RUN TestResolveStateExpression/state.prod.builds.image.tags.image_tag -2026-07-05T01:36:31.2904702Z === RUN TestResolveStateExpression/state.prod.deploys.app.sha -2026-07-05T01:36:31.2905136Z === RUN TestResolveStateExpression/state.prod.deploys.app.version -2026-07-05T01:36:31.2905599Z === RUN TestResolveStateExpression/state.prod.deploys.app.tags.chart -2026-07-05T01:36:31.2906024Z === RUN TestResolveStateExpression/state.missing.sha -2026-07-05T01:36:31.2906408Z === RUN TestResolveStateExpression/state.prod.builds.nope.sha -2026-07-05T01:36:31.2906847Z === RUN TestResolveStateExpression/state.prod.deploys.app.tags.nope -2026-07-05T01:36:31.2907263Z === RUN TestResolveStateExpression/state.prod.unknown -2026-07-05T01:36:31.2907611Z --- PASS: TestResolveStateExpression (0.00s) -2026-07-05T01:36:31.2908029Z --- PASS: TestResolveStateExpression/state.prod.sha (0.00s) -2026-07-05T01:36:31.2908502Z --- PASS: TestResolveStateExpression/state.prod.version (0.00s) -2026-07-05T01:36:31.2909197Z --- PASS: TestResolveStateExpression/state.prod.builds.image.sha (0.00s) -2026-07-05T01:36:31.2909832Z --- PASS: TestResolveStateExpression/state.prod.builds.image.artifact_id (0.00s) -2026-07-05T01:36:31.2910621Z --- PASS: TestResolveStateExpression/state.prod.builds.image.tags.image_tag (0.00s) -2026-07-05T01:36:31.2911247Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.sha (0.00s) -2026-07-05T01:36:31.2911843Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.version (0.00s) -2026-07-05T01:36:31.2912477Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.tags.chart (0.00s) -2026-07-05T01:36:31.2913035Z --- PASS: TestResolveStateExpression/state.missing.sha (0.00s) -2026-07-05T01:36:31.2913566Z --- PASS: TestResolveStateExpression/state.prod.builds.nope.sha (0.00s) -2026-07-05T01:36:31.2914158Z --- PASS: TestResolveStateExpression/state.prod.deploys.app.tags.nope (0.00s) -2026-07-05T01:36:31.2914717Z --- PASS: TestResolveStateExpression/state.prod.unknown (0.00s) -2026-07-05T01:36:31.2915091Z === RUN TestResolveInputValue -2026-07-05T01:36:31.2915373Z --- PASS: TestResolveInputValue (0.00s) -2026-07-05T01:36:31.2915683Z === RUN TestLooksLikeUnwrappedExpression -2026-07-05T01:36:31.2916034Z --- PASS: TestLooksLikeUnwrappedExpression (0.00s) -2026-07-05T01:36:31.2916382Z === RUN TestExternalUpdateWorkflow_Generation -2026-07-05T01:36:31.2916747Z --- PASS: TestExternalUpdateWorkflow_Generation (0.00s) -2026-07-05T01:36:31.2917361Z === RUN TestSatelliteNotifyPrimary_Generation -2026-07-05T01:36:31.2917762Z --- PASS: TestSatelliteNotifyPrimary_Generation (0.00s) -2026-07-05T01:36:31.2918239Z === RUN TestPromoteExternalDeploys_Generation -2026-07-05T01:36:31.2918577Z --- PASS: TestPromoteExternalDeploys_Generation (0.00s) -2026-07-05T01:36:31.2918929Z === RUN TestExternalDeployStateTracking -2026-07-05T01:36:31.2919265Z --- PASS: TestExternalDeployStateTracking (0.00s) -2026-07-05T01:36:31.2919600Z === RUN TestMixedLocalAndExternalDeploys -2026-07-05T01:36:31.2919947Z --- PASS: TestMixedLocalAndExternalDeploys (0.01s) -2026-07-05T01:36:31.2920594Z === RUN TestSatelliteConfigNoExternal -2026-07-05T01:36:31.2920907Z --- PASS: TestSatelliteConfigNoExternal (0.00s) -2026-07-05T01:36:31.2921227Z === RUN TestPrimaryWithoutExternal -2026-07-05T01:36:31.2921534Z --- PASS: TestPrimaryWithoutExternal (0.00s) -2026-07-05T01:36:31.2921851Z === RUN TestExternalWorkflowResolution -2026-07-05T01:36:31.2922280Z === RUN TestExternalWorkflowResolution/workflow_with_repo_path_gets_ref_appended -2026-07-05T01:36:31.2922818Z === RUN TestExternalWorkflowResolution/workflow_already_with_ref_unchanged -2026-07-05T01:36:31.2923324Z === RUN TestExternalWorkflowResolution/local_workflow_path_uses_relative -2026-07-05T01:36:31.2923752Z --- PASS: TestExternalWorkflowResolution (0.00s) -2026-07-05T01:36:31.2924335Z --- PASS: TestExternalWorkflowResolution/workflow_with_repo_path_gets_ref_appended (0.00s) -2026-07-05T01:36:31.2925039Z --- PASS: TestExternalWorkflowResolution/workflow_already_with_ref_unchanged (0.00s) -2026-07-05T01:36:31.2925700Z --- PASS: TestExternalWorkflowResolution/local_workflow_path_uses_relative (0.00s) -2026-07-05T01:36:31.2926142Z === RUN TestRollbackJobConditions -2026-07-05T01:36:31.2926441Z --- PASS: TestRollbackJobConditions (0.00s) -2026-07-05T01:36:31.2926769Z === RUN TestExternalUpdateGenerator_NotPrimary -2026-07-05T01:36:31.2927133Z --- PASS: TestExternalUpdateGenerator_NotPrimary (0.00s) -2026-07-05T01:36:31.2927521Z === RUN TestExternalUpdateGenerator_HasConcurrencyBlock -2026-07-05T01:36:31.2927951Z --- PASS: TestExternalUpdateGenerator_HasConcurrencyBlock (0.00s) -2026-07-05T01:36:31.2928433Z === RUN TestExternalUpdateGenerator_DistinctComponentsGetDistinctGroups -2026-07-05T01:36:31.2928981Z --- PASS: TestExternalUpdateGenerator_DistinctComponentsGetDistinctGroups (0.00s) -2026-07-05T01:36:31.2929511Z === RUN TestExternalUpdateGenerator_InputsAreNotInterpolatedIntoRun -2026-07-05T01:36:31.2930263Z --- PASS: TestExternalUpdateGenerator_InputsAreNotInterpolatedIntoRun (0.00s) -2026-07-05T01:36:31.2930747Z === RUN TestExternalUpdateGenerator_ConcurrencyOverride -2026-07-05T01:36:31.2931161Z --- PASS: TestExternalUpdateGenerator_ConcurrencyOverride (0.00s) -2026-07-05T01:36:31.2931584Z === RUN TestExternalUpdateGenerator_CheckoutUsesStateToken -2026-07-05T01:36:31.2932077Z === RUN TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_configured -2026-07-05T01:36:31.2932779Z === RUN TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_unset_uses_GITHUB_TOKEN_back-compat -2026-07-05T01:36:31.2933396Z --- PASS: TestExternalUpdateGenerator_CheckoutUsesStateToken (0.00s) -2026-07-05T01:36:31.2934043Z --- PASS: TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_configured (0.00s) -2026-07-05T01:36:31.2934899Z --- PASS: TestExternalUpdateGenerator_CheckoutUsesStateToken/state_token_unset_uses_GITHUB_TOKEN_back-compat (0.00s) -2026-07-05T01:36:31.2935559Z === RUN TestExternalUpdateGenerator_DefaultConcurrencyIsPerComponent -2026-07-05T01:36:31.2936090Z --- PASS: TestExternalUpdateGenerator_DefaultConcurrencyIsPerComponent (0.00s) -2026-07-05T01:36:31.2936592Z === RUN TestNotifyPrimaryStep_BuildOnlySatellite_EmitsDeployName -2026-07-05T01:36:31.2937064Z --- PASS: TestNotifyPrimaryStep_BuildOnlySatellite_EmitsDeployName (0.00s) -2026-07-05T01:36:31.2937518Z === RUN TestNotifyPrimaryStep_OverridesEmitParentNames -2026-07-05T01:36:31.2937937Z --- PASS: TestNotifyPrimaryStep_OverridesEmitParentNames (0.00s) -2026-07-05T01:36:31.2938370Z === RUN TestNotifyPrimaryStep_OverridesOffStateByteIdentical -2026-07-05T01:36:31.2938819Z --- PASS: TestNotifyPrimaryStep_OverridesOffStateByteIdentical (0.01s) -2026-07-05T01:36:31.2939247Z === RUN TestNotifyPrimaryStep_NoStrayDotInJobsAccessor -2026-07-05T01:36:31.2939643Z --- PASS: TestNotifyPrimaryStep_NoStrayDotInJobsAccessor (0.00s) -2026-07-05T01:36:31.2940303Z === RUN TestExternalUpdateGenerator_OnUpdateDeploy_ScopedJob -2026-07-05T01:36:31.2940785Z --- PASS: TestExternalUpdateGenerator_OnUpdateDeploy_ScopedJob (0.00s) -2026-07-05T01:36:31.2941419Z === RUN TestExternalUpdateGenerator_NoOnUpdate_RecordOnlyByteIdentical -2026-07-05T01:36:31.2941953Z --- PASS: TestExternalUpdateGenerator_NoOnUpdate_RecordOnlyByteIdentical (0.00s) -2026-07-05T01:36:31.2942457Z === RUN TestExternalUpdateGenerator_OnUpdateDeploy_Deterministic -2026-07-05T01:36:31.2943090Z --- PASS: TestExternalUpdateGenerator_OnUpdateDeploy_Deterministic (0.00s) -2026-07-05T01:36:31.2943589Z === RUN TestExternalUpdateGenerator_OnUpdateDeploy_LocalWorkflowPath -2026-07-05T01:36:31.2944114Z --- PASS: TestExternalUpdateGenerator_OnUpdateDeploy_LocalWorkflowPath (0.00s) -2026-07-05T01:36:31.2944580Z === RUN TestExternalUpdateGenerator_EmitsRunName -2026-07-05T01:36:31.2944958Z --- PASS: TestExternalUpdateGenerator_EmitsRunName (0.00s) -2026-07-05T01:36:31.2945307Z === RUN TestNormalizeWorkflowPath -2026-07-05T01:36:31.2945598Z === PAUSE TestNormalizeWorkflowPath -2026-07-05T01:36:31.2945908Z === RUN TestNormalizeWorkflowPath_ActionlintClean -2026-07-05T01:36:31.2946526Z generator_normalize_test.go:128: actionlint not found; skipping actionlint integration test -2026-07-05T01:36:31.2947047Z --- SKIP: TestNormalizeWorkflowPath_ActionlintClean (0.00s) -2026-07-05T01:36:31.2947441Z === RUN TestNormalizeWorkflowPath_ActionlintHermetic -2026-07-05T01:36:31.2948010Z generator_normalize_test.go:171: actionlint not found; skipping actionlint integration test -2026-07-05T01:36:31.2948521Z --- SKIP: TestNormalizeWorkflowPath_ActionlintHermetic (0.00s) -2026-07-05T01:36:31.2948907Z === RUN TestGenerator_OrchestrateHasConcurrencyBlock -2026-07-05T01:36:31.2949291Z --- PASS: TestGenerator_OrchestrateHasConcurrencyBlock (0.00s) -2026-07-05T01:36:31.2949694Z === RUN TestGenerator_ReleaseTokenBareSecretNameIsWrapped -2026-07-05T01:36:31.2950235Z --- PASS: TestGenerator_ReleaseTokenBareSecretNameIsWrapped (0.01s) -2026-07-05T01:36:31.2950672Z === RUN TestGenerator_DefaultReleaseTokenIsGitHubToken -2026-07-05T01:36:31.2951216Z --- PASS: TestGenerator_DefaultReleaseTokenIsGitHubToken (0.01s) -2026-07-05T01:36:31.2951633Z === RUN TestGenerator_OrchestrateConcurrencyOverride -2026-07-05T01:36:31.2952026Z --- PASS: TestGenerator_OrchestrateConcurrencyOverride (0.00s) -2026-07-05T01:36:31.2952379Z === RUN TestGenerator_Generate -2026-07-05T01:36:31.2952660Z --- PASS: TestGenerator_Generate (0.00s) -2026-07-05T01:36:31.2952976Z === RUN TestGenerator_CallbackTimeoutMinutes -2026-07-05T01:36:31.2953320Z --- PASS: TestGenerator_CallbackTimeoutMinutes (0.00s) -2026-07-05T01:36:31.2953763Z === RUN TestGenerator_CallbackTimeoutOmittedWhenZero -2026-07-05T01:36:31.2954379Z --- PASS: TestGenerator_CallbackTimeoutOmittedWhenZero (0.00s) -2026-07-05T01:36:31.2954756Z === RUN TestGenerator_GenerateWithRetries -2026-07-05T01:36:31.2955088Z --- PASS: TestGenerator_GenerateWithRetries (0.00s) -2026-07-05T01:36:31.2955432Z === RUN TestGenerator_GenerateWithRunPolicies -2026-07-05T01:36:31.2955789Z --- PASS: TestGenerator_GenerateWithRunPolicies (0.00s) -2026-07-05T01:36:31.2956162Z === RUN TestGenerator_GenerateWithOnFailureContinue -2026-07-05T01:36:31.2956554Z --- PASS: TestGenerator_GenerateWithOnFailureContinue (0.00s) -2026-07-05T01:36:31.2956919Z === RUN TestGenerator_GenerateWithAllContinue -2026-07-05T01:36:31.2957261Z --- PASS: TestGenerator_GenerateWithAllContinue (0.00s) -2026-07-05T01:36:31.2957600Z === RUN TestGenerator_GenerateManifestUpdate -2026-07-05T01:36:31.2957933Z --- PASS: TestGenerator_GenerateManifestUpdate (0.00s) -2026-07-05T01:36:31.2958310Z === RUN TestGenerator_ManifestUpdate_PushRetriesOnConflict -2026-07-05T01:36:31.2958749Z --- PASS: TestGenerator_ManifestUpdate_PushRetriesOnConflict (0.00s) -2026-07-05T01:36:31.2959201Z === RUN TestGenerator_ManifestUpdate_NoEnvPushRetriesOnConflict -2026-07-05T01:36:31.2959667Z --- PASS: TestGenerator_ManifestUpdate_NoEnvPushRetriesOnConflict (0.00s) -2026-07-05T01:36:31.2960235Z === RUN TestGenerator_GenerateSummaryWithOutputs -2026-07-05T01:36:31.2960610Z --- PASS: TestGenerator_GenerateSummaryWithOutputs (0.00s) -2026-07-05T01:36:31.2961123Z === RUN TestGenerator_ValidateMissingInputs -2026-07-05T01:36:31.2961465Z --- PASS: TestGenerator_ValidateMissingInputs (0.00s) -2026-07-05T01:36:31.2961821Z === RUN TestGenerator_FinalizeJob_ReleaseDisabled -2026-07-05T01:36:31.2962186Z --- PASS: TestGenerator_FinalizeJob_ReleaseDisabled (0.00s) -2026-07-05T01:36:31.2962549Z === RUN TestGenerator_FinalizeJob_ExternalRelease -2026-07-05T01:36:31.2962906Z --- PASS: TestGenerator_FinalizeJob_ExternalRelease (0.00s) -2026-07-05T01:36:31.2963256Z === RUN TestGenerator_FinalizeJob_CustomChangelog -2026-07-05T01:36:31.2963603Z --- PASS: TestGenerator_FinalizeJob_CustomChangelog (0.00s) -2026-07-05T01:36:31.2963974Z === RUN TestGenerator_FinalizeJob_FrameworkManagedRelease -2026-07-05T01:36:31.2964389Z --- PASS: TestGenerator_FinalizeJob_FrameworkManagedRelease (0.00s) -2026-07-05T01:36:31.2964772Z === RUN TestGenerator_DeployChangeDetection -2026-07-05T01:36:31.2965117Z --- PASS: TestGenerator_DeployChangeDetection (0.01s) -2026-07-05T01:36:31.2965505Z === RUN TestGenerator_HyphenatedNameOutputKeysConsistent -2026-07-05T01:36:31.2965935Z --- PASS: TestGenerator_HyphenatedNameOutputKeysConsistent (0.00s) -2026-07-05T01:36:31.2966337Z === RUN TestGenerator_BuildLinkedDeployCondition -2026-07-05T01:36:31.2966712Z --- PASS: TestGenerator_BuildLinkedDeployCondition (0.00s) -2026-07-05T01:36:31.2967066Z === RUN TestGenerator_PerDeployManifestUpdate -2026-07-05T01:36:31.2967424Z --- PASS: TestGenerator_PerDeployManifestUpdate (0.00s) -2026-07-05T01:36:31.2967776Z === RUN TestGenerator_MixedDeployTypesInSetup -2026-07-05T01:36:31.2968113Z --- PASS: TestGenerator_MixedDeployTypesInSetup (0.00s) -2026-07-05T01:36:31.2968484Z === RUN TestGenerator_EmptyDeploysGeneratesValidWorkflow -2026-07-05T01:36:31.2968901Z --- PASS: TestGenerator_EmptyDeploysGeneratesValidWorkflow (0.00s) -2026-07-05T01:36:31.2969307Z === RUN TestGenerator_BuildLinkedDeployNeedsArray -2026-07-05T01:36:31.2969683Z --- PASS: TestGenerator_BuildLinkedDeployNeedsArray (0.00s) -2026-07-05T01:36:31.2970307Z === RUN TestGenerator_TriggerBasedDeployNeedsOnlySetup -2026-07-05T01:36:31.2970722Z --- PASS: TestGenerator_TriggerBasedDeployNeedsOnlySetup (0.00s) -2026-07-05T01:36:31.2971118Z === RUN TestGenerator_UnconstrainedDeployAlwaysRuns -2026-07-05T01:36:31.2971506Z --- PASS: TestGenerator_UnconstrainedDeployAlwaysRuns (0.00s) -2026-07-05T01:36:31.2971882Z === RUN TestGenerator_DeployNameEnvVarConversion -2026-07-05T01:36:31.2972247Z --- PASS: TestGenerator_DeployNameEnvVarConversion (0.00s) -2026-07-05T01:36:31.2972601Z === RUN TestGenerator_FinalizeNeedsAllDeployJobs -2026-07-05T01:36:31.2972955Z --- PASS: TestGenerator_FinalizeNeedsAllDeployJobs (0.00s) -2026-07-05T01:36:31.2973351Z === RUN TestGenerator_PerDeployManifestUpdateSkipsOnFailure -2026-07-05T01:36:31.2973801Z --- PASS: TestGenerator_PerDeployManifestUpdateSkipsOnFailure (0.00s) -2026-07-05T01:36:31.2974210Z === RUN TestGenerator_MultipleTriggerPatterns -2026-07-05T01:36:31.2974554Z --- PASS: TestGenerator_MultipleTriggerPatterns (0.00s) -2026-07-05T01:36:31.2974919Z === RUN TestGenerator_SingleDeployNoArrayBrackets -2026-07-05T01:36:31.2975287Z --- PASS: TestGenerator_SingleDeployNoArrayBrackets (0.00s) -2026-07-05T01:36:31.2975648Z === RUN TestGenerator_DeployWithBuildOutputs -2026-07-05T01:36:31.2975992Z --- PASS: TestGenerator_DeployWithBuildOutputs (0.00s) -2026-07-05T01:36:31.2976392Z === RUN TestGenerator_BuildLinkedDeployDoesNotCheckSetupOutput -2026-07-05T01:36:31.2976869Z --- PASS: TestGenerator_BuildLinkedDeployDoesNotCheckSetupOutput (0.00s) -2026-07-05T01:36:31.2977286Z === RUN TestGenerator_BuildArtifactIDTracked -2026-07-05T01:36:31.2977629Z --- PASS: TestGenerator_BuildArtifactIDTracked (0.00s) -2026-07-05T01:36:31.2978012Z === RUN TestGenerator_BuildArtifactIDSkippedWhenNotDeclared -2026-07-05T01:36:31.2978450Z --- PASS: TestGenerator_BuildArtifactIDSkippedWhenNotDeclared (0.00s) -2026-07-05T01:36:31.2978849Z === RUN TestGenerator_ExtraTriggers_None -2026-07-05T01:36:31.2979177Z --- PASS: TestGenerator_ExtraTriggers_None (0.00s) -2026-07-05T01:36:31.2979691Z === RUN TestGenerator_ExtraTriggers_Schedule -2026-07-05T01:36:31.2980226Z --- PASS: TestGenerator_ExtraTriggers_Schedule (0.00s) -2026-07-05T01:36:31.2980666Z === RUN TestGenerator_ExtraTriggers_RepositoryDispatch -2026-07-05T01:36:31.2981064Z --- PASS: TestGenerator_ExtraTriggers_RepositoryDispatch (0.00s) -2026-07-05T01:36:31.2981480Z === RUN TestGenerator_ExtraTriggers_RepositoryDispatch_NoTypes -2026-07-05T01:36:31.2981924Z --- PASS: TestGenerator_ExtraTriggers_RepositoryDispatch_NoTypes (0.00s) -2026-07-05T01:36:31.2982330Z === RUN TestGenerator_ExtraTriggers_WorkflowRun -2026-07-05T01:36:31.2982716Z --- PASS: TestGenerator_ExtraTriggers_WorkflowRun (0.00s) -2026-07-05T01:36:31.2983068Z === RUN TestGenerator_ExtraTriggers_MergeGroup -2026-07-05T01:36:31.2983426Z --- PASS: TestGenerator_ExtraTriggers_MergeGroup (0.00s) -2026-07-05T01:36:31.2983769Z === RUN TestGenerator_ExtraTriggers_AllCombined -2026-07-05T01:36:31.2984124Z --- PASS: TestGenerator_ExtraTriggers_AllCombined (0.00s) -2026-07-05T01:36:31.2984475Z === RUN TestGenerator_BuildMatrix_TwoDimensions -2026-07-05T01:36:31.2984817Z --- PASS: TestGenerator_BuildMatrix_TwoDimensions (0.00s) -2026-07-05T01:36:31.2985205Z === RUN TestGenerator_BuildMatrix_MaxParallelOmittedWhenZero -2026-07-05T01:36:31.2985651Z --- PASS: TestGenerator_BuildMatrix_MaxParallelOmittedWhenZero (0.00s) -2026-07-05T01:36:31.2986070Z === RUN TestGenerator_BuildMatrix_NoMatrixNoStrategy -2026-07-05T01:36:31.2986440Z --- PASS: TestGenerator_BuildMatrix_NoMatrixNoStrategy (0.00s) -2026-07-05T01:36:31.2986840Z === RUN TestGenerator_PassthroughArtifact_NoArtifactNoSteps -2026-07-05T01:36:31.2987267Z --- PASS: TestGenerator_PassthroughArtifact_NoArtifactNoSteps (0.00s) -2026-07-05T01:36:31.2987722Z === RUN TestGenerator_PassthroughArtifact_ReusableWorkflowUploadJob -2026-07-05T01:36:31.2988212Z --- PASS: TestGenerator_PassthroughArtifact_ReusableWorkflowUploadJob (0.00s) -2026-07-05T01:36:31.2988878Z === RUN TestGenerator_PassthroughArtifact_ReusableWorkflowDownloadJob -2026-07-05T01:36:31.2989397Z --- PASS: TestGenerator_PassthroughArtifact_ReusableWorkflowDownloadJob (0.00s) -2026-07-05T01:36:31.2989896Z === RUN TestGenerator_PassthroughArtifact_DownloadNeedsUploadJob -2026-07-05T01:36:31.2990511Z --- PASS: TestGenerator_PassthroughArtifact_DownloadNeedsUploadJob (0.00s) -2026-07-05T01:36:31.2991295Z === RUN TestGenerator_PassthroughArtifact_MatrixUploadCollectsLegs -2026-07-05T01:36:31.2991926Z --- PASS: TestGenerator_PassthroughArtifact_MatrixUploadCollectsLegs (0.00s) -2026-07-05T01:36:31.2992432Z === RUN TestGenerator_PassthroughArtifact_NonMatrixUploadNoCollect -2026-07-05T01:36:31.2992911Z --- PASS: TestGenerator_PassthroughArtifact_NonMatrixUploadNoCollect (0.00s) -2026-07-05T01:36:31.2993342Z === RUN TestGenerator_DispatchInputs_StringType -2026-07-05T01:36:31.2993712Z --- PASS: TestGenerator_DispatchInputs_StringType (0.00s) -2026-07-05T01:36:31.2994080Z === RUN TestGenerator_DispatchInputs_BooleanType -2026-07-05T01:36:31.2994465Z --- PASS: TestGenerator_DispatchInputs_BooleanType (0.00s) -2026-07-05T01:36:31.2994836Z === RUN TestGenerator_DispatchInputs_ChoiceType -2026-07-05T01:36:31.2995194Z --- PASS: TestGenerator_DispatchInputs_ChoiceType (0.00s) -2026-07-05T01:36:31.2995553Z === RUN TestGenerator_DispatchInputs_RequiredFlag -2026-07-05T01:36:31.2995926Z --- PASS: TestGenerator_DispatchInputs_RequiredFlag (0.00s) -2026-07-05T01:36:31.2996310Z === RUN TestGenerator_DispatchInputs_OmittedWhenEmpty -2026-07-05T01:36:31.2996703Z --- PASS: TestGenerator_DispatchInputs_OmittedWhenEmpty (0.00s) -2026-07-05T01:36:31.2997093Z === RUN TestGenerator_DispatchInputs_RoutedToCallback -2026-07-05T01:36:31.2997471Z --- PASS: TestGenerator_DispatchInputs_RoutedToCallback (0.00s) -2026-07-05T01:36:31.2997904Z === RUN TestGenerator_DispatchInputs_NotRoutedWhenCallbackOmitsIt -2026-07-05T01:36:31.2998395Z --- PASS: TestGenerator_DispatchInputs_NotRoutedWhenCallbackOmitsIt (0.00s) -2026-07-05T01:36:31.2998853Z === RUN TestGenerator_DispatchInputs_SortedDeterministic -2026-07-05T01:36:31.2999427Z --- PASS: TestGenerator_DispatchInputs_SortedDeterministic (0.00s) -2026-07-05T01:36:31.2999801Z === RUN TestBuildDependencyGraph -2026-07-05T01:36:31.3000242Z --- PASS: TestBuildDependencyGraph (0.00s) -2026-07-05T01:36:31.3000567Z === RUN TestTopologicalSort -2026-07-05T01:36:31.3000853Z --- PASS: TestTopologicalSort (0.00s) -2026-07-05T01:36:31.3001141Z === RUN TestGetAllDependencies -2026-07-05T01:36:31.3001429Z --- PASS: TestGetAllDependencies (0.00s) -2026-07-05T01:36:31.3001736Z === RUN TestGetDirectDependencies -2026-07-05T01:36:31.3002037Z --- PASS: TestGetDirectDependencies (0.00s) -2026-07-05T01:36:31.3002366Z === RUN TestBuildDependencyGraph_WithValidate -2026-07-05T01:36:31.3002725Z --- PASS: TestBuildDependencyGraph_WithValidate (0.00s) -2026-07-05T01:36:31.3003074Z === RUN TestBuildDependencyGraph_CallbackInfo -2026-07-05T01:36:31.3003432Z --- PASS: TestBuildDependencyGraph_CallbackInfo (0.00s) -2026-07-05T01:36:31.3003790Z === RUN TestBuildDependencyGraph_DefaultValues -2026-07-05T01:36:31.3004158Z --- PASS: TestBuildDependencyGraph_DefaultValues (0.00s) -2026-07-05T01:36:31.3004489Z === RUN TestHotfixGenerator_Enabled -2026-07-05T01:36:31.3004791Z --- PASS: TestHotfixGenerator_Enabled (0.00s) -2026-07-05T01:36:31.3005168Z === RUN TestHotfixGenerator_Threshold_EmitsNothingBelowTwoEnvs -2026-07-05T01:36:31.3005633Z --- PASS: TestHotfixGenerator_Threshold_EmitsNothingBelowTwoEnvs (0.00s) -2026-07-05T01:36:31.3006038Z === RUN TestHotfixGenerator_Triggers -2026-07-05T01:36:31.3006364Z --- PASS: TestHotfixGenerator_Triggers (0.00s) -2026-07-05T01:36:31.3006732Z === RUN TestHotfixGenerator_CommitInputAcceptsMultiple -2026-07-05T01:36:31.3007135Z --- PASS: TestHotfixGenerator_CommitInputAcceptsMultiple (0.00s) -2026-07-05T01:36:31.3007522Z === RUN TestHotfixGenerator_PlanJobChainOutputs -2026-07-05T01:36:31.3007887Z --- PASS: TestHotfixGenerator_PlanJobChainOutputs (0.00s) -2026-07-05T01:36:31.3008261Z === RUN TestHotfixGenerator_ApplyLoopsEnvSequence -2026-07-05T01:36:31.3008785Z --- PASS: TestHotfixGenerator_ApplyLoopsEnvSequence (0.00s) -2026-07-05T01:36:31.3009160Z === RUN TestHotfixGenerator_ConflictHaltsChain -2026-07-05T01:36:31.3009508Z --- PASS: TestHotfixGenerator_ConflictHaltsChain (0.00s) -2026-07-05T01:36:31.3009845Z === RUN TestHotfixGenerator_Concurrency -2026-07-05T01:36:31.3010283Z --- PASS: TestHotfixGenerator_Concurrency (0.00s) -2026-07-05T01:36:31.3010600Z === RUN TestHotfixGenerator_Permissions -2026-07-05T01:36:31.3010909Z --- PASS: TestHotfixGenerator_Permissions (0.00s) -2026-07-05T01:36:31.3011222Z === RUN TestHotfixGenerator_Jobs -2026-07-05T01:36:31.3011506Z --- PASS: TestHotfixGenerator_Jobs (0.00s) -2026-07-05T01:36:31.3011812Z === RUN TestHotfixGenerator_ConflictPath -2026-07-05T01:36:31.3012132Z --- PASS: TestHotfixGenerator_ConflictPath (0.00s) -2026-07-05T01:36:31.3012525Z === RUN TestHotfixGenerator_SourceTrailerCarriesFullCommitSet -2026-07-05T01:36:31.3012988Z --- PASS: TestHotfixGenerator_SourceTrailerCarriesFullCommitSet (0.00s) -2026-07-05T01:36:31.3013403Z === RUN TestHotfixGenerator_CleanPath -2026-07-05T01:36:31.3013720Z --- PASS: TestHotfixGenerator_CleanPath (0.00s) -2026-07-05T01:36:31.3014046Z === RUN TestHotfixGenerator_CleanPathPATMerge -2026-07-05T01:36:31.3014392Z --- PASS: TestHotfixGenerator_CleanPathPATMerge (0.00s) -2026-07-05T01:36:31.3014801Z === RUN TestHotfixGenerator_CleanPathMergeDefaultsToGitHubToken -2026-07-05T01:36:31.3015276Z --- PASS: TestHotfixGenerator_CleanPathMergeDefaultsToGitHubToken (0.00s) -2026-07-05T01:36:31.3015735Z === RUN TestHotfixGenerator_ApplyCreatesPRWithStateToken -2026-07-05T01:36:31.3016435Z --- PASS: TestHotfixGenerator_ApplyCreatesPRWithStateToken (0.01s) -2026-07-05T01:36:31.3016971Z === RUN TestHotfixGenerator_ApplyTokenDefaultsToGitHubToken -2026-07-05T01:36:31.3017439Z --- PASS: TestHotfixGenerator_ApplyTokenDefaultsToGitHubToken (0.01s) -2026-07-05T01:36:31.3017833Z === RUN TestHotfixGenerator_SeedsLabels -2026-07-05T01:36:31.3018158Z --- PASS: TestHotfixGenerator_SeedsLabels (0.00s) -2026-07-05T01:36:31.3018664Z === RUN TestHotfixGenerator_Q2BranchProtectionWarn -2026-07-05T01:36:31.3019044Z --- PASS: TestHotfixGenerator_Q2BranchProtectionWarn (0.00s) -2026-07-05T01:36:31.3019429Z === RUN TestHotfixGenerator_Q6ProtectionSuggestions -2026-07-05T01:36:31.3019814Z --- PASS: TestHotfixGenerator_Q6ProtectionSuggestions (0.00s) -2026-07-05T01:36:31.3020407Z === RUN TestHotfixGenerator_ProdGatingEnvironment -2026-07-05T01:36:31.3020783Z --- PASS: TestHotfixGenerator_ProdGatingEnvironment (0.00s) -2026-07-05T01:36:31.3021135Z === RUN TestHotfixGenerator_DryRunSafety -2026-07-05T01:36:31.3021457Z --- PASS: TestHotfixGenerator_DryRunSafety (0.00s) -2026-07-05T01:36:31.3021791Z === RUN TestHotfixGenerator_MergedLabelGate -2026-07-05T01:36:31.3022130Z --- PASS: TestHotfixGenerator_MergedLabelGate (0.00s) -2026-07-05T01:36:31.3022460Z === RUN TestHotfixGenerator_ValidYAML -2026-07-05T01:36:31.3022764Z --- PASS: TestHotfixGenerator_ValidYAML (0.01s) -2026-07-05T01:36:31.3023105Z === RUN TestHotfixGenerator_SetupCLIPassesToken -2026-07-05T01:36:31.3023474Z --- PASS: TestHotfixGenerator_SetupCLIPassesToken (0.00s) -2026-07-05T01:36:31.3023812Z === RUN TestHotfixGenerator_PinModeSHA -2026-07-05T01:36:31.3024126Z --- PASS: TestHotfixGenerator_PinModeSHA (0.00s) -2026-07-05T01:36:31.3024441Z === RUN TestHotfixGeneratorE2E -2026-07-05T01:36:31.3024726Z --- PASS: TestHotfixGeneratorE2E (0.00s) -2026-07-05T01:36:31.3025079Z === RUN TestHotfixGenerator_ContextEmitsNonEmptyRollbackSHA -2026-07-05T01:36:31.3025519Z --- PASS: TestHotfixGenerator_ContextEmitsNonEmptyRollbackSHA (0.00s) -2026-07-05T01:36:31.3025944Z === RUN TestHotfixGenerator_RollbackJobGatedCorrectly -2026-07-05T01:36:31.3026340Z --- PASS: TestHotfixGenerator_RollbackJobGatedCorrectly (0.00s) -2026-07-05T01:36:31.3026747Z === RUN TestHotfixGenerator_EmittedFlagsExistOnCommands -2026-07-05T01:36:31.3027157Z --- PASS: TestHotfixGenerator_EmittedFlagsExistOnCommands (0.00s) -2026-07-05T01:36:31.3027718Z === RUN TestHotfixGenerator_FinalizeRequiredFlags -2026-07-05T01:36:31.3028104Z --- PASS: TestHotfixGenerator_FinalizeRequiredFlags (0.00s) -2026-07-05T01:36:31.3028515Z === RUN TestHotfixGenerator_PlanJobOutputsMatchPlannerKeys -2026-07-05T01:36:31.3028962Z --- PASS: TestHotfixGenerator_PlanJobOutputsMatchPlannerKeys (0.00s) -2026-07-05T01:36:31.3029350Z === RUN TestHotfixGenerator_Actionlint -2026-07-05T01:36:31.3029732Z hotfix_test.go:749: actionlint not installed -2026-07-05T01:36:31.3030180Z --- SKIP: TestHotfixGenerator_Actionlint (0.00s) -2026-07-05T01:36:31.3030540Z === RUN TestHotfixGenerator_PlanAndFinalizePassConfig -2026-07-05T01:36:31.3030942Z --- PASS: TestHotfixGenerator_PlanAndFinalizePassConfig (0.00s) -2026-07-05T01:36:31.3031380Z === RUN TestHotfixGenerator_ApplyMaterializesAbsentEnvBranch -2026-07-05T01:36:31.3031845Z --- PASS: TestHotfixGenerator_ApplyMaterializesAbsentEnvBranch (0.00s) -2026-07-05T01:36:31.3032274Z === RUN TestHotfixGenerator_ApplySkippedOnNoOp -2026-07-05T01:36:31.3032675Z --- PASS: TestHotfixGenerator_ApplySkippedOnNoOp (0.00s) -2026-07-05T01:36:31.3033089Z === RUN TestHotfixGenerator_FinalizeWritesStateWithStateToken -2026-07-05T01:36:31.3033545Z --- PASS: TestHotfixGenerator_FinalizeWritesStateWithStateToken (0.00s) -2026-07-05T01:36:31.3034038Z === RUN TestHotfixGenerator_FinalizeStateTokenDefaultsToGitHubToken -2026-07-05T01:36:31.3034555Z --- PASS: TestHotfixGenerator_FinalizeStateTokenDefaultsToGitHubToken (0.00s) -2026-07-05T01:36:31.3035023Z === RUN TestHotfixGenerator_FinalizeFetchesEnvBranches -2026-07-05T01:36:31.3035431Z --- PASS: TestHotfixGenerator_FinalizeFetchesEnvBranches (0.00s) -2026-07-05T01:36:31.3035818Z === RUN TestInputExpressionPassthroughE2E -2026-07-05T01:36:31.3036175Z --- PASS: TestInputExpressionPassthroughE2E (0.00s) -2026-07-05T01:36:31.3036547Z === RUN TestOrchestrateInputExpressionPassthrough -2026-07-05T01:36:31.3036937Z --- PASS: TestOrchestrateInputExpressionPassthrough (0.00s) -2026-07-05T01:36:31.3037322Z === RUN TestOrchestrateStateReferenceResolves -2026-07-05T01:36:31.3037836Z --- PASS: TestOrchestrateStateReferenceResolves (0.00s) -2026-07-05T01:36:31.3038198Z === RUN TestPromoteVarsExpressionPassthrough -2026-07-05T01:36:31.3038567Z --- PASS: TestPromoteVarsExpressionPassthrough (0.00s) -2026-07-05T01:36:31.3038923Z === RUN TestPromoteStateReferenceResolves -2026-07-05T01:36:31.3039256Z --- PASS: TestPromoteStateReferenceResolves (0.00s) -2026-07-05T01:36:31.3039591Z === RUN TestPromoteLiteralInputsUnchanged -2026-07-05T01:36:31.3039922Z --- PASS: TestPromoteLiteralInputsUnchanged (0.00s) -2026-07-05T01:36:31.3040402Z === RUN TestValidateWarnsUnwrappedExpression -2026-07-05T01:36:31.3040756Z --- PASS: TestValidateWarnsUnwrappedExpression (0.00s) -2026-07-05T01:36:31.3041241Z === RUN TestReusableWorkflowCallbackRendersPermissionsNotForbiddenAttributes -2026-07-05T01:36:31.3041879Z --- PASS: TestReusableWorkflowCallbackRendersPermissionsNotForbiddenAttributes (0.00s) -2026-07-05T01:36:31.3042448Z === RUN TestReusableWorkflowCallbackRendersOIDCPermissions -2026-07-05T01:36:31.3042930Z --- PASS: TestReusableWorkflowCallbackRendersOIDCPermissions (0.00s) -2026-07-05T01:36:31.3043467Z === RUN TestValidationRejectsJobAttributesOnReusableCallback -2026-07-05T01:36:31.3044118Z --- PASS: TestValidationRejectsJobAttributesOnReusableCallback (0.00s) -2026-07-05T01:36:31.3044803Z === RUN TestGenerator_OwnedJobsGetDefaultTimeout -2026-07-05T01:36:31.3045309Z --- PASS: TestGenerator_OwnedJobsGetDefaultTimeout (0.00s) -2026-07-05T01:36:31.3045693Z === RUN TestGenerator_OwnedJobTimeoutConfigurable -2026-07-05T01:36:31.3046068Z --- PASS: TestGenerator_OwnedJobTimeoutConfigurable (0.00s) -2026-07-05T01:36:31.3046443Z === RUN TestGenerator_TimeoutNotOnReusableCallback -2026-07-05T01:36:31.3046827Z --- PASS: TestGenerator_TimeoutNotOnReusableCallback (0.00s) -2026-07-05T01:36:31.3047241Z === RUN TestGenerator_OptionalDependsOnAddsNeedsWithoutGating -2026-07-05T01:36:31.3047705Z --- PASS: TestGenerator_OptionalDependsOnAddsNeedsWithoutGating (0.00s) -2026-07-05T01:36:31.3048347Z === RUN TestGenerator_OptionalDependsOnHonorsImplicitRunOnSkip -2026-07-05T01:36:31.3048845Z --- PASS: TestGenerator_OptionalDependsOnHonorsImplicitRunOnSkip (0.00s) -2026-07-05T01:36:31.3049279Z === RUN TestGenerator_BothFieldsUnsetNonBreaking -2026-07-05T01:36:31.3049657Z --- PASS: TestGenerator_BothFieldsUnsetNonBreaking (0.00s) -2026-07-05T01:36:31.3050174Z === RUN TestGenerator_ExplicitTimeoutNotOnReusableCallback -2026-07-05T01:36:31.3050628Z --- PASS: TestGenerator_ExplicitTimeoutNotOnReusableCallback (0.00s) -2026-07-05T01:36:31.3051043Z === RUN TestOrchestrate_TopLevelLeastPrivilege -2026-07-05T01:36:31.3051414Z --- PASS: TestOrchestrate_TopLevelLeastPrivilege (0.00s) -2026-07-05T01:36:31.3051836Z === RUN TestOrchestrate_NativeDeployments_JobLevelDeploymentsWrite -2026-07-05T01:36:31.3052327Z --- PASS: TestOrchestrate_NativeDeployments_JobLevelDeploymentsWrite (0.00s) -2026-07-05T01:36:31.3052756Z === RUN TestPromote_TopLevelLeastPrivilege -2026-07-05T01:36:31.3053092Z --- PASS: TestPromote_TopLevelLeastPrivilege (0.00s) -2026-07-05T01:36:31.3053504Z === RUN TestPromote_NativeDeployments_JobLevelDeploymentsWrite -2026-07-05T01:36:31.3053962Z --- PASS: TestPromote_NativeDeployments_JobLevelDeploymentsWrite (0.00s) -2026-07-05T01:36:31.3054370Z === RUN TestHotfix_TopLevelLeastPrivilege -2026-07-05T01:36:31.3054709Z --- PASS: TestHotfix_TopLevelLeastPrivilege (0.00s) -2026-07-05T01:36:31.3055157Z === RUN TestRollback_TopLevelLeastPrivilege -2026-07-05T01:36:31.3055699Z --- PASS: TestRollback_TopLevelLeastPrivilege (0.00s) -2026-07-05T01:36:31.3056157Z === RUN TestMatrixRetry_RetryJobCarriesStrategy -2026-07-05T01:36:31.3056528Z --- PASS: TestMatrixRetry_RetryJobCarriesStrategy (0.00s) -2026-07-05T01:36:31.3056888Z === RUN TestMatrixRetry_MatrixWithoutRetries -2026-07-05T01:36:31.3057242Z --- PASS: TestMatrixRetry_MatrixWithoutRetries (0.00s) -2026-07-05T01:36:31.3057583Z === RUN TestMatrixRetry_RetriesWithoutMatrix -2026-07-05T01:36:31.3057915Z --- PASS: TestMatrixRetry_RetriesWithoutMatrix (0.00s) -2026-07-05T01:36:31.3058252Z === RUN TestMergeQueueGenerator_Enabled -2026-07-05T01:36:31.3058917Z --- PASS: TestMergeQueueGenerator_Enabled (0.00s) -2026-07-05T01:36:31.3059360Z === RUN TestMergeQueueGenerator_TriggersAndPermissions -2026-07-05T01:36:31.3059881Z --- PASS: TestMergeQueueGenerator_TriggersAndPermissions (0.00s) -2026-07-05T01:36:31.3060464Z === RUN TestMergeQueueGenerator_Steps -2026-07-05T01:36:31.3060780Z --- PASS: TestMergeQueueGenerator_Steps (0.00s) -2026-07-05T01:36:31.3061128Z === RUN TestMergeQueueGenerator_SetupCLIPassesToken -2026-07-05T01:36:31.3061514Z --- PASS: TestMergeQueueGenerator_SetupCLIPassesToken (0.00s) -2026-07-05T01:36:31.3061881Z === RUN TestMergeQueueGenerator_PinModeSHA -2026-07-05T01:36:31.3062211Z --- PASS: TestMergeQueueGenerator_PinModeSHA (0.00s) -2026-07-05T01:36:31.3062547Z === RUN TestMergeQueueGenerator_ValidYAML -2026-07-05T01:36:31.3062878Z --- PASS: TestMergeQueueGenerator_ValidYAML (0.00s) -2026-07-05T01:36:31.3079515Z === RUN TestMergeQueueGeneratorE2E -2026-07-05T01:36:31.3080326Z --- PASS: TestMergeQueueGeneratorE2E (0.00s) -2026-07-05T01:36:31.3080851Z === RUN TestNativeDeployments_Enabled -2026-07-05T01:36:31.3081386Z --- PASS: TestNativeDeployments_Enabled (0.00s) -2026-07-05T01:36:31.3081913Z === RUN TestNativeDeployments_Disabled -2026-07-05T01:36:31.3082415Z --- PASS: TestNativeDeployments_Disabled (0.00s) -2026-07-05T01:36:31.3082988Z === RUN TestNativeDeployments_Deterministic -2026-07-05T01:36:31.3083556Z --- PASS: TestNativeDeployments_Deterministic (0.00s) -2026-07-05T01:36:31.3084091Z === RUN TestNativeDeployments_Actionlint -2026-07-05T01:36:31.3084846Z native_deployments_test.go:110: actionlint not installed -2026-07-05T01:36:31.3085481Z --- SKIP: TestNativeDeployments_Actionlint (0.00s) -2026-07-05T01:36:31.3086029Z === RUN TestEmit_NegativePathsAppearVerbatim -2026-07-05T01:36:31.3086588Z --- PASS: TestEmit_NegativePathsAppearVerbatim (0.00s) -2026-07-05T01:36:31.3087129Z === RUN TestEmit_PositiveOnlyUnchanged -2026-07-05T01:36:31.3087862Z --- PASS: TestEmit_PositiveOnlyUnchanged (0.00s) -2026-07-05T01:36:31.3088418Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded -2026-07-05T01:36:31.3089111Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded/docs-only_change_is_excluded -2026-07-05T01:36:31.3089968Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded/source_change_triggers -2026-07-05T01:36:31.3091006Z === RUN TestEmitAndDetectAgree_DocsOnlyExcluded/mixed_change_triggers_via_source_file -2026-07-05T01:36:31.3091838Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded (0.00s) -2026-07-05T01:36:31.3092800Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded/docs-only_change_is_excluded (0.00s) -2026-07-05T01:36:31.3093917Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded/source_change_triggers (0.00s) -2026-07-05T01:36:31.3095102Z --- PASS: TestEmitAndDetectAgree_DocsOnlyExcluded/mixed_change_triggers_via_source_file (0.00s) -2026-07-05T01:36:31.3095931Z === RUN TestPlan_MatchesGeneratedBytes -2026-07-05T01:36:31.3097485Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.3099269Z Generated workflow: .github/workflows/orchestrate.yaml -2026-07-05T01:36:31.3103284Z Generated workflow: .github/workflows/promote.yaml -2026-07-05T01:36:31.3103992Z Generated workflow: .github/workflows/external-update.yaml -2026-07-05T01:36:31.3104655Z Generated workflow: .github/workflows/cascade-hotfix.yaml -2026-07-05T01:36:31.3105351Z Generated workflow: .github/workflows/cascade-rollback.yaml -2026-07-05T01:36:31.3106433Z Generated action: /tmp/TestPlan_MatchesGeneratedBytes2284640914/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.3107427Z --- PASS: TestPlan_MatchesGeneratedBytes (0.05s) -2026-07-05T01:36:31.3107946Z === RUN TestPlan_Deterministic -2026-07-05T01:36:31.3108366Z --- PASS: TestPlan_Deterministic (0.21s) -2026-07-05T01:36:31.3108974Z === RUN TestPRPreviewGenerator_PRFieldsAreNotInterpolatedIntoRun -2026-07-05T01:36:31.3109736Z --- PASS: TestPRPreviewGenerator_PRFieldsAreNotInterpolatedIntoRun (0.00s) -2026-07-05T01:36:31.3110430Z === RUN TestPRPreviewGenerator_DryRunResolvesEnvironment -2026-07-05T01:36:31.3110947Z === RUN TestPRPreviewGenerator_DryRunResolvesEnvironment/multi-env_passes_first_environment -2026-07-05T01:36:31.3111577Z === RUN TestPRPreviewGenerator_DryRunResolvesEnvironment/no-env_omits_the_environment_flag -2026-07-05T01:36:31.3112112Z --- PASS: TestPRPreviewGenerator_DryRunResolvesEnvironment (0.00s) -2026-07-05T01:36:31.3112794Z --- PASS: TestPRPreviewGenerator_DryRunResolvesEnvironment/multi-env_passes_first_environment (0.00s) -2026-07-05T01:36:31.3113591Z --- PASS: TestPRPreviewGenerator_DryRunResolvesEnvironment/no-env_omits_the_environment_flag (0.00s) -2026-07-05T01:36:31.3114087Z === RUN TestPRPreviewGenerator_Disabled -2026-07-05T01:36:31.3114406Z --- PASS: TestPRPreviewGenerator_Disabled (0.00s) -2026-07-05T01:36:31.3114728Z === RUN TestPRPreviewGenerator_Enabled -2026-07-05T01:36:31.3115043Z --- PASS: TestPRPreviewGenerator_Enabled (0.00s) -2026-07-05T01:36:31.3115374Z === RUN TestPRPreviewGenerator_DryRunEnforced -2026-07-05T01:36:31.3115718Z --- PASS: TestPRPreviewGenerator_DryRunEnforced (0.00s) -2026-07-05T01:36:31.3116118Z === RUN TestPRPreviewGenerator_CommentAddsScriptAndPermission -2026-07-05T01:36:31.3116578Z --- PASS: TestPRPreviewGenerator_CommentAddsScriptAndPermission (0.00s) -2026-07-05T01:36:31.3117003Z === RUN TestPRPreviewGenerator_SetupCLIPassesToken -2026-07-05T01:36:31.3117378Z --- PASS: TestPRPreviewGenerator_SetupCLIPassesToken (0.00s) -2026-07-05T01:36:31.3117764Z === RUN TestPRPreviewGenerator_ActionRefsPinUnderSHAMode -2026-07-05T01:36:31.3118177Z --- PASS: TestPRPreviewGenerator_ActionRefsPinUnderSHAMode (0.00s) -2026-07-05T01:36:31.3118551Z === RUN TestPRPreviewGenerator_ValidYAML -2026-07-05T01:36:31.3118885Z --- PASS: TestPRPreviewGenerator_ValidYAML (0.00s) -2026-07-05T01:36:31.3119366Z === RUN TestRunGenerateWorkflow_PRPreview -2026-07-05T01:36:31.3120509Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.3121611Z Generated workflow: /tmp/TestRunGenerateWorkflow_PRPreview983531756/001/.github/workflows/orchestrate.yaml -2026-07-05T01:36:31.3122201Z Generated workflow: .github/workflows/cascade-pr-preview.yaml -2026-07-05T01:36:31.3122815Z Generated action: /tmp/TestRunGenerateWorkflow_PRPreview983531756/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.3123384Z --- PASS: TestRunGenerateWorkflow_PRPreview (0.01s) -2026-07-05T01:36:31.3123756Z === RUN TestRunGenerateWorkflow_NoPRPreviewWhenAbsent -2026-07-05T01:36:31.3124676Z Note: builds are configured but no publish: callback is defined. When a release is published, artifact registries will still hold the RC-tagged versions (e.g., v1.0.0-rc.2). Add a publish: workflow to retag artifacts on release. -2026-07-05T01:36:31.3125792Z Generated workflow: /tmp/TestRunGenerateWorkflow_NoPRPreviewWhenAbsent356267059/001/.github/workflows/orchestrate.yaml -2026-07-05T01:36:31.3126653Z Generated action: /tmp/TestRunGenerateWorkflow_NoPRPreviewWhenAbsent356267059/001/.github/actions/manage-release/action.yaml -2026-07-05T01:36:31.3127302Z --- PASS: TestRunGenerateWorkflow_NoPRPreviewWhenAbsent (0.01s) -2026-07-05T01:36:31.3127746Z === RUN TestPromoteGenerator_ModeInputNotInterpolatedIntoRun -2026-07-05T01:36:31.3128202Z --- PASS: TestPromoteGenerator_ModeInputNotInterpolatedIntoRun (0.00s) -2026-07-05T01:36:31.3128596Z === RUN TestPromoteGenerator_Generate -2026-07-05T01:36:31.3128927Z === RUN TestPromoteGenerator_Generate/two_environments -2026-07-05T01:36:31.3129298Z === RUN TestPromoteGenerator_Generate/three_environments -2026-07-05T01:36:31.3129676Z === RUN TestPromoteGenerator_Generate/four_environments -2026-07-05T01:36:31.3130209Z === RUN TestPromoteGenerator_Generate/five_environments -2026-07-05T01:36:31.3130703Z --- PASS: TestPromoteGenerator_Generate (0.00s) -2026-07-05T01:36:31.3131158Z --- PASS: TestPromoteGenerator_Generate/two_environments (0.00s) -2026-07-05T01:36:31.3131664Z --- PASS: TestPromoteGenerator_Generate/three_environments (0.00s) -2026-07-05T01:36:31.3132160Z --- PASS: TestPromoteGenerator_Generate/four_environments (0.00s) -2026-07-05T01:36:31.3132680Z --- PASS: TestPromoteGenerator_Generate/five_environments (0.00s) -2026-07-05T01:36:31.3133061Z === RUN TestPromoteGenerator_EnvironmentCases -2026-07-05T01:36:31.3133408Z --- PASS: TestPromoteGenerator_EnvironmentCases (0.00s) -2026-07-05T01:36:31.3133738Z === RUN TestPromoteGenerator_ValidYAML -2026-07-05T01:36:31.3134050Z --- PASS: TestPromoteGenerator_ValidYAML (0.00s) -2026-07-05T01:36:31.3134376Z === RUN TestPromoteGenerator_OrphanCleanup -2026-07-05T01:36:31.3134712Z --- PASS: TestPromoteGenerator_OrphanCleanup (0.00s) -2026-07-05T01:36:31.3135051Z === RUN TestPromoteGenerator_PublishOnProd -2026-07-05T01:36:31.3135392Z --- PASS: TestPromoteGenerator_PublishOnProd (0.00s) -2026-07-05T01:36:31.3135772Z === RUN TestPromoteGenerator_PreflightDeclaresSourceImageTag -2026-07-05T01:36:31.3136219Z --- PASS: TestPromoteGenerator_PreflightDeclaresSourceImageTag (0.00s) -2026-07-05T01:36:31.3136694Z === RUN TestPromoteGenerator_PreflightDeclaresSourceImageDigest -2026-07-05T01:36:31.3137174Z --- PASS: TestPromoteGenerator_PreflightDeclaresSourceImageDigest (0.00s) -2026-07-05T01:36:31.3137665Z === RUN TestPromoteGenerator_DeployThreadsImageDigestWhenDeclared -2026-07-05T01:36:31.3138171Z --- PASS: TestPromoteGenerator_DeployThreadsImageDigestWhenDeclared (0.00s) -2026-07-05T01:36:31.3138676Z === RUN TestPromoteGenerator_DeployOmitsImageDigestWhenNotDeclared -2026-07-05T01:36:31.3139175Z --- PASS: TestPromoteGenerator_DeployOmitsImageDigestWhenNotDeclared (0.00s) -2026-07-05T01:36:31.3139603Z === RUN TestPromoteGenerator_DryRunSupport -2026-07-05T01:36:31.3140226Z --- PASS: TestPromoteGenerator_DryRunSupport (0.00s) -2026-07-05T01:36:31.3140588Z === RUN TestPromoteGenerator_DeployCheckboxes -2026-07-05T01:36:31.3140938Z --- PASS: TestPromoteGenerator_DeployCheckboxes (0.00s) -2026-07-05T01:36:31.3141311Z === RUN TestPromoteGenerator_DeployDetectionOutputs -2026-07-05T01:36:31.3141695Z --- PASS: TestPromoteGenerator_DeployDetectionOutputs (0.00s) -2026-07-05T01:36:31.3142077Z === RUN TestPromoteGenerator_ConditionalDeployJobs -2026-07-05T01:36:31.3142451Z --- PASS: TestPromoteGenerator_ConditionalDeployJobs (0.00s) -2026-07-05T01:36:31.3142833Z === RUN TestPromoteGenerator_FinalizeNeedsAllDeploys -2026-07-05T01:36:31.3143223Z --- PASS: TestPromoteGenerator_FinalizeNeedsAllDeploys (0.00s) -2026-07-05T01:36:31.3143608Z === RUN TestPromoteGenerator_PerDeployManifestUpdate -2026-07-05T01:36:31.3143991Z --- PASS: TestPromoteGenerator_PerDeployManifestUpdate (0.00s) -2026-07-05T01:36:31.3144504Z === RUN TestPromoteGenerator_MixedDeployTypes -2026-07-05T01:36:31.3144865Z --- PASS: TestPromoteGenerator_MixedDeployTypes (0.00s) -2026-07-05T01:36:31.3145252Z === RUN TestPromoteGenerator_DeployCheckboxEnvVarPassing -2026-07-05T01:36:31.3145678Z --- PASS: TestPromoteGenerator_DeployCheckboxEnvVarPassing (0.00s) -2026-07-05T01:36:31.3146062Z === RUN TestPromoteGenerator_EmptyDeploys -2026-07-05T01:36:31.3146387Z --- PASS: TestPromoteGenerator_EmptyDeploys (0.00s) -2026-07-05T01:36:31.3146723Z === RUN TestPromoteGenerator_SingleDeploy -2026-07-05T01:36:31.3147041Z --- PASS: TestPromoteGenerator_SingleDeploy (0.00s) -2026-07-05T01:36:31.3147424Z === RUN TestPromoteGenerator_DeployNameWithSpecialChars -2026-07-05T01:36:31.3147845Z --- PASS: TestPromoteGenerator_DeployNameWithSpecialChars (0.00s) -2026-07-05T01:36:31.3148033Z === RUN TestPromoteGenerator_DeployJobPassesEnvironmentAndSHA -2026-07-05T01:36:31.3148247Z --- PASS: TestPromoteGenerator_DeployJobPassesEnvironmentAndSHA (0.00s) -2026-07-05T01:36:31.3148387Z === RUN TestPromoteGenerator_DeployResultEnvVars -2026-07-05T01:36:31.3148550Z --- PASS: TestPromoteGenerator_DeployResultEnvVars (0.00s) -2026-07-05T01:36:31.3148870Z === RUN TestPromoteGenerator_DeployManifestUpdateTimestamp -2026-07-05T01:36:31.3149080Z --- PASS: TestPromoteGenerator_DeployManifestUpdateTimestamp (0.00s) -2026-07-05T01:36:31.3149249Z === RUN TestPromoteGenerator_PreflightOutputsDeploysToRun -2026-07-05T01:36:31.3149453Z --- PASS: TestPromoteGenerator_PreflightOutputsDeploysToRun (0.00s) -2026-07-05T01:36:31.3149693Z === RUN TestPromoteGenerator_BuildLinkedDeployInheritsTriggersForDetection -2026-07-05T01:36:31.3149970Z --- PASS: TestPromoteGenerator_BuildLinkedDeployInheritsTriggersForDetection (0.00s) -2026-07-05T01:36:31.3150362Z === RUN TestPromoteGenerator_TriggerBasedDeployUsesOwnTriggers -2026-07-05T01:36:31.3150582Z --- PASS: TestPromoteGenerator_TriggerBasedDeployUsesOwnTriggers (0.00s) -2026-07-05T01:36:31.3150762Z === RUN TestPromoteGenerator_UnconstrainedDeployAlwaysInList -2026-07-05T01:36:31.3150964Z --- PASS: TestPromoteGenerator_UnconstrainedDeployAlwaysInList (0.00s) -2026-07-05T01:36:31.3151135Z === RUN TestPromoteGenerator_NeverDeployedEnvHandling -2026-07-05T01:36:31.3151324Z --- PASS: TestPromoteGenerator_NeverDeployedEnvHandling (0.00s) -2026-07-05T01:36:31.3151468Z === RUN TestPromoteGenerator_DeployDryRunCondition -2026-07-05T01:36:31.3151639Z --- PASS: TestPromoteGenerator_DeployDryRunCondition (0.00s) -2026-07-05T01:36:31.3151797Z === RUN TestPromoteGenerator_ManifestCommitOnlyIfChanged -2026-07-05T01:36:31.3151994Z --- PASS: TestPromoteGenerator_ManifestCommitOnlyIfChanged (0.00s) -2026-07-05T01:36:31.3152114Z === RUN TestResolveDeployInputs -2026-07-05T01:36:31.3152238Z --- PASS: TestResolveDeployInputs (0.00s) -2026-07-05T01:36:31.3152367Z === RUN TestPreflightDeployMatrixOutputs -2026-07-05T01:36:31.3152515Z --- PASS: TestPreflightDeployMatrixOutputs (0.00s) -2026-07-05T01:36:31.3152658Z === RUN TestPreflightNoMatrixStepWhenNoInputs -2026-07-05T01:36:31.3152817Z --- PASS: TestPreflightNoMatrixStepWhenNoInputs (0.00s) -2026-07-05T01:36:31.3153115Z === RUN TestDeployJobsMatrixStrategy -2026-07-05T01:36:31.3153369Z === RUN TestDeployJobsMatrixStrategy/deploy_with_inputs_uses_matrix_strategy -2026-07-05T01:36:31.3153605Z === RUN TestDeployJobsMatrixStrategy/deploy_without_inputs_uses_single_deploy -2026-07-05T01:36:31.3153768Z === RUN TestDeployJobsMatrixStrategy/mixed_deploy_types -2026-07-05T01:36:31.3153979Z === RUN TestDeployJobsMatrixStrategy/deploy_with_multiple_custom_inputs -2026-07-05T01:36:31.3154116Z --- PASS: TestDeployJobsMatrixStrategy (0.00s) -2026-07-05T01:36:31.3154471Z --- PASS: TestDeployJobsMatrixStrategy/deploy_with_inputs_uses_matrix_strategy (0.00s) -2026-07-05T01:36:31.3154822Z --- PASS: TestDeployJobsMatrixStrategy/deploy_without_inputs_uses_single_deploy (0.00s) -2026-07-05T01:36:31.3155079Z --- PASS: TestDeployJobsMatrixStrategy/mixed_deploy_types (0.00s) -2026-07-05T01:36:31.3155395Z --- PASS: TestDeployJobsMatrixStrategy/deploy_with_multiple_custom_inputs (0.00s) -2026-07-05T01:36:31.3155525Z === RUN TestPromoteGenerator_APIQueryStep -2026-07-05T01:36:31.3155759Z === RUN TestPromoteGenerator_APIQueryStep/Finalize_using_CLI_instead_of_bash -2026-07-05T01:36:31.3155990Z === RUN TestPromoteGenerator_APIQueryStep/Finalize_with_single_deploy_uses_CLI -2026-07-05T01:36:31.3156137Z --- PASS: TestPromoteGenerator_APIQueryStep (0.00s) -2026-07-05T01:36:31.3156466Z --- PASS: TestPromoteGenerator_APIQueryStep/Finalize_using_CLI_instead_of_bash (0.00s) -2026-07-05T01:36:31.3156815Z --- PASS: TestPromoteGenerator_APIQueryStep/Finalize_with_single_deploy_uses_CLI (0.00s) -2026-07-05T01:36:31.3156969Z === RUN TestPromoteGenerator_CascadeDeployStateUpdate -2026-07-05T01:36:31.3157151Z --- PASS: TestPromoteGenerator_CascadeDeployStateUpdate (0.00s) -2026-07-05T01:36:31.3157286Z === RUN TestPromoteGenerator_PreflightUsesCLI -2026-07-05T01:36:31.3157433Z --- PASS: TestPromoteGenerator_PreflightUsesCLI (0.00s) -2026-07-05T01:36:31.3157561Z === RUN TestPromoteGenerator_FinalizeUsesCLI -2026-07-05T01:36:31.3157717Z --- PASS: TestPromoteGenerator_FinalizeUsesCLI (0.00s) -2026-07-05T01:36:31.3157924Z === RUN TestPromoteGenerator_RollbackJobs -2026-07-05T01:36:31.3158065Z --- PASS: TestPromoteGenerator_RollbackJobs (0.00s) -2026-07-05T01:36:31.3158228Z === RUN TestPromoteGenerator_NoRollbackWhenNoEnvironments -2026-07-05T01:36:31.3158431Z --- PASS: TestPromoteGenerator_NoRollbackWhenNoEnvironments (0.01s) -2026-07-05T01:36:31.3158579Z === RUN TestPromoteGenerator_RollbackOnFailureInput -2026-07-05T01:36:31.3158753Z --- PASS: TestPromoteGenerator_RollbackOnFailureInput (0.00s) -2026-07-05T01:36:31.3158918Z === RUN TestPromoteGenerator_ExternalDeployRollbackJobs -2026-07-05T01:36:31.3159107Z --- PASS: TestPromoteGenerator_ExternalDeployRollbackJobs (0.00s) -2026-07-05T01:36:31.3159221Z === RUN TestBuildDeployMatrix -2026-07-05T01:36:31.3159447Z === RUN TestBuildDeployMatrix/multiple_promotions_with_env_inputs_overrides -2026-07-05T01:36:31.3159585Z === RUN TestBuildDeployMatrix/single_promotion -2026-07-05T01:36:31.3159790Z === RUN TestBuildDeployMatrix/deploy_not_found_returns_empty_matrix -2026-07-05T01:36:31.3160189Z === RUN TestBuildDeployMatrix/empty_promotions_returns_empty_matrix -2026-07-05T01:36:31.3160379Z === RUN TestBuildDeployMatrix/version_substitution -2026-07-05T01:36:31.3160496Z --- PASS: TestBuildDeployMatrix (0.00s) -2026-07-05T01:36:31.3160845Z --- PASS: TestBuildDeployMatrix/multiple_promotions_with_env_inputs_overrides (0.00s) -2026-07-05T01:36:31.3161066Z --- PASS: TestBuildDeployMatrix/single_promotion (0.00s) -2026-07-05T01:36:31.3161367Z --- PASS: TestBuildDeployMatrix/deploy_not_found_returns_empty_matrix (0.00s) -2026-07-05T01:36:31.3161661Z --- PASS: TestBuildDeployMatrix/empty_promotions_returns_empty_matrix (0.00s) -2026-07-05T01:36:31.3161887Z --- PASS: TestBuildDeployMatrix/version_substitution (0.00s) -2026-07-05T01:36:31.3162039Z === RUN TestPromoteGenerator_PublishCallbackEmitted -2026-07-05T01:36:31.3162217Z --- PASS: TestPromoteGenerator_PublishCallbackEmitted (0.00s) -2026-07-05T01:36:31.3162535Z === RUN TestPromoteGenerator_NoPublishCallbackWhenNotConfigured -2026-07-05T01:36:31.3162774Z --- PASS: TestPromoteGenerator_NoPublishCallbackWhenNotConfigured (0.00s) -2026-07-05T01:36:31.3162913Z === RUN TestPromoteGenerator_HasConcurrencyBlock -2026-07-05T01:36:31.3163078Z --- PASS: TestPromoteGenerator_HasConcurrencyBlock (0.00s) -2026-07-05T01:36:31.3163211Z === RUN TestPromoteGenerator_ConcurrencyOverride -2026-07-05T01:36:31.3163363Z --- PASS: TestPromoteGenerator_ConcurrencyOverride (0.00s) -2026-07-05T01:36:31.3163561Z === RUN TestPromoteGenerator_SelectiveDeploysAndForcePassthrough -2026-07-05T01:36:31.3163785Z --- PASS: TestPromoteGenerator_SelectiveDeploysAndForcePassthrough (0.00s) -2026-07-05T01:36:31.3163927Z === RUN TestPromoteGenerator_ReleaseBuildDispatch -2026-07-05T01:36:31.3164230Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/no_release_workflow_configured_omits_the_step -2026-07-05T01:36:31.3164530Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/release_config_without_workflow_omits_the_step -2026-07-05T01:36:31.3164854Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/release_workflow_configured_emits_a_dispatch_to_it -2026-07-05T01:36:31.3165141Z === RUN TestPromoteGenerator_ReleaseBuildDispatch/bare_release_workflow_filename_is_normalized -2026-07-05T01:36:31.3165315Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch (0.00s) -2026-07-05T01:36:31.3165754Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/no_release_workflow_configured_omits_the_step (0.00s) -2026-07-05T01:36:31.3166185Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/release_config_without_workflow_omits_the_step (0.00s) -2026-07-05T01:36:31.3166639Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/release_workflow_configured_emits_a_dispatch_to_it (0.00s) -2026-07-05T01:36:31.3167067Z --- PASS: TestPromoteGenerator_ReleaseBuildDispatch/bare_release_workflow_filename_is_normalized (0.00s) -2026-07-05T01:36:31.3167193Z === RUN TestReleaseGenerator_NoRollbackJob -2026-07-05T01:36:31.3167346Z --- PASS: TestReleaseGenerator_NoRollbackJob (0.00s) -2026-07-05T01:36:31.3167582Z === RUN TestReleaseGenerator_Generate -2026-07-05T01:36:31.3167721Z --- PASS: TestReleaseGenerator_Generate (0.00s) -2026-07-05T01:36:31.3167846Z === RUN TestReleaseGenerator_ReleaseActions -2026-07-05T01:36:31.3167998Z --- PASS: TestReleaseGenerator_ReleaseActions (0.00s) -2026-07-05T01:36:31.3168116Z === RUN TestReleaseGenerator_ValidYAML -2026-07-05T01:36:31.3168249Z --- PASS: TestReleaseGenerator_ValidYAML (0.00s) -2026-07-05T01:36:31.3168405Z === RUN TestReleaseGenerator_LatestReleaseStateUpdate -2026-07-05T01:36:31.3168589Z --- PASS: TestReleaseGenerator_LatestReleaseStateUpdate (0.00s) -2026-07-05T01:36:31.3168830Z === RUN TestReleaseGenerator_LatestReleaseStateUpdate_PushRetriesOnConflict -2026-07-05T01:36:31.3169097Z --- PASS: TestReleaseGenerator_LatestReleaseStateUpdate_PushRetriesOnConflict (0.00s) -2026-07-05T01:36:31.3169221Z === RUN TestReleaseGenerator_DryRunSupport -2026-07-05T01:36:31.3169378Z --- PASS: TestReleaseGenerator_DryRunSupport (0.00s) -2026-07-05T01:36:31.3169522Z === RUN TestReleaseGenerator_SemverTagCalculation -2026-07-05T01:36:31.3169697Z --- PASS: TestReleaseGenerator_SemverTagCalculation (0.00s) -2026-07-05T01:36:31.3169847Z === RUN TestReleaseGenerator_ChangelogGeneration -2026-07-05T01:36:31.3170166Z --- PASS: TestReleaseGenerator_ChangelogGeneration (0.00s) -2026-07-05T01:36:31.3170290Z === RUN TestReleaseGenerator_Summary -2026-07-05T01:36:31.3170420Z --- PASS: TestReleaseGenerator_Summary (0.00s) -2026-07-05T01:36:31.3170563Z === RUN TestReleaseGenerator_UsesCorrectActions -2026-07-05T01:36:31.3170729Z --- PASS: TestReleaseGenerator_UsesCorrectActions (0.00s) -2026-07-05T01:36:31.3170850Z === RUN TestReleaseGenerator_WithCLIVersion -2026-07-05T01:36:31.3170999Z --- PASS: TestReleaseGenerator_WithCLIVersion (0.00s) -2026-07-05T01:36:31.3171132Z === RUN TestReleaseGenerator_HasConcurrencyBlock -2026-07-05T01:36:31.3171296Z --- PASS: TestReleaseGenerator_HasConcurrencyBlock (0.00s) -2026-07-05T01:36:31.3171570Z === RUN TestReleaseGenerator_ConcurrencyOverride -2026-07-05T01:36:31.3171729Z --- PASS: TestReleaseGenerator_ConcurrencyOverride (0.00s) -2026-07-05T01:36:31.3171885Z === RUN TestRollbackGenerator_Enabled_FalseWithOneEnv -2026-07-05T01:36:31.3172060Z --- PASS: TestRollbackGenerator_Enabled_FalseWithOneEnv (0.00s) -2026-07-05T01:36:31.3172210Z === RUN TestRollbackGenerator_Enabled_TrueWithTwoEnvs -2026-07-05T01:36:31.3172388Z --- PASS: TestRollbackGenerator_Enabled_TrueWithTwoEnvs (0.00s) -2026-07-05T01:36:31.3172540Z === RUN TestRollbackGenerator_Enabled_FalseWithZeroEnv -2026-07-05T01:36:31.3172730Z --- PASS: TestRollbackGenerator_Enabled_FalseWithZeroEnv (0.00s) -2026-07-05T01:36:31.3172917Z === RUN TestRollbackGenerator_EnvironmentChoices_ExcludeFirstEnv -2026-07-05T01:36:31.3173142Z --- PASS: TestRollbackGenerator_EnvironmentChoices_ExcludeFirstEnv (0.00s) -2026-07-05T01:36:31.3173266Z === RUN TestRollbackGenerator_DispatchInputs -2026-07-05T01:36:31.3173427Z --- PASS: TestRollbackGenerator_DispatchInputs (0.00s) -2026-07-05T01:36:31.3173570Z === RUN TestRollbackGenerator_PreflightResolves -2026-07-05T01:36:31.3173729Z --- PASS: TestRollbackGenerator_PreflightResolves (0.00s) -2026-07-05T01:36:31.3173892Z === RUN TestRollbackGenerator_DeployJobsKeyedOnTargetSha -2026-07-05T01:36:31.3174081Z --- PASS: TestRollbackGenerator_DeployJobsKeyedOnTargetSha (0.00s) -2026-07-05T01:36:31.3174223Z === RUN TestRollbackGenerator_FinalizeNeedsWiring -2026-07-05T01:36:31.3174390Z --- PASS: TestRollbackGenerator_FinalizeNeedsWiring (0.00s) -2026-07-05T01:36:31.3174557Z === RUN TestRollbackGenerator_FinalizeThreadsDeployResults -2026-07-05T01:36:31.3174766Z --- PASS: TestRollbackGenerator_FinalizeThreadsDeployResults (0.00s) -2026-07-05T01:36:31.3174939Z === RUN TestRollbackGenerator_FinalizeThreadsDeployableScope -2026-07-05T01:36:31.3175156Z --- PASS: TestRollbackGenerator_FinalizeThreadsDeployableScope (0.00s) -2026-07-05T01:36:31.3175362Z === RUN TestRollbackGenerator_PreflightBeforeDeployBeforeFinalize -2026-07-05T01:36:31.3175726Z --- PASS: TestRollbackGenerator_PreflightBeforeDeployBeforeFinalize (0.00s) -2026-07-05T01:36:31.3175877Z === RUN TestRollbackGenerator_OffStateByteIdentical -2026-07-05T01:36:31.3176050Z --- PASS: TestRollbackGenerator_OffStateByteIdentical (0.00s) -2026-07-05T01:36:31.3176199Z === RUN TestRollbackGenerator_DispatchTriggerEmitted -2026-07-05T01:36:31.3176376Z --- PASS: TestRollbackGenerator_DispatchTriggerEmitted (0.00s) -2026-07-05T01:36:31.3176521Z === RUN TestRollbackGenerator_PreflightCoalescesReads -2026-07-05T01:36:31.3176699Z --- PASS: TestRollbackGenerator_PreflightCoalescesReads (0.00s) -2026-07-05T01:36:31.3176831Z === RUN TestRollbackGenerator_GuardsCoalesceReads -2026-07-05T01:36:31.3176997Z --- PASS: TestRollbackGenerator_GuardsCoalesceReads (0.00s) -2026-07-05T01:36:31.3177134Z === RUN TestRollbackGenerator_DispatchActionlint -2026-07-05T01:36:31.3177350Z rollback_test.go:265: actionlint not installed -2026-07-05T01:36:31.3177527Z --- SKIP: TestRollbackGenerator_DispatchActionlint (0.00s) -2026-07-05T01:36:31.3177675Z === RUN TestRolloutReservedFieldsAreByteIdentical -2026-07-05T01:36:31.3177831Z === PAUSE TestRolloutReservedFieldsAreByteIdentical -2026-07-05T01:36:31.3177946Z === RUN TestWriteSecretsBlock_NilNoOp -2026-07-05T01:36:31.3178086Z --- PASS: TestWriteSecretsBlock_NilNoOp (0.00s) -2026-07-05T01:36:31.3178199Z === RUN TestWriteSecretsBlock_Inherit -2026-07-05T01:36:31.3178325Z --- PASS: TestWriteSecretsBlock_Inherit (0.00s) -2026-07-05T01:36:31.3178453Z === RUN TestWriteSecretsBlock_ExplicitMap -2026-07-05T01:36:31.3178591Z --- PASS: TestWriteSecretsBlock_ExplicitMap (0.00s) -2026-07-05T01:36:31.3178744Z === RUN TestOrchestrateCallbackJob_NoSecretsByDefault -2026-07-05T01:36:31.3178926Z --- PASS: TestOrchestrateCallbackJob_NoSecretsByDefault (0.00s) -2026-07-05T01:36:31.3179057Z === RUN TestOrchestrateCallbackJob_InheritSecrets -2026-07-05T01:36:31.3179222Z --- PASS: TestOrchestrateCallbackJob_InheritSecrets (0.00s) -2026-07-05T01:36:31.3179458Z === RUN TestOrchestrateCallbackJob_ExplicitSecretsMap -2026-07-05T01:36:31.3179651Z --- PASS: TestOrchestrateCallbackJob_ExplicitSecretsMap (0.00s) -2026-07-05T01:36:31.3179827Z === RUN TestOrchestrateDeployCallbackJob_NoSecretsByDefault -2026-07-05T01:36:31.3180144Z --- PASS: TestOrchestrateDeployCallbackJob_NoSecretsByDefault (0.00s) -2026-07-05T01:36:31.3180310Z === RUN TestOrchestrateDeployCallbackJob_InheritSecrets -2026-07-05T01:36:31.3180496Z --- PASS: TestOrchestrateDeployCallbackJob_InheritSecrets (0.00s) -2026-07-05T01:36:31.3180671Z === RUN TestOrchestrateDeployCallbackJob_ExplicitSecretsMap -2026-07-05T01:36:31.3180877Z --- PASS: TestOrchestrateDeployCallbackJob_ExplicitSecretsMap (0.00s) -2026-07-05T01:36:31.3181014Z === RUN TestPromoteDeployJob_ExplicitSecretsMap -2026-07-05T01:36:31.3181176Z --- PASS: TestPromoteDeployJob_ExplicitSecretsMap (0.00s) -2026-07-05T01:36:31.3181305Z === RUN TestPromoteDeployJob_NoSecretsByDefault -2026-07-05T01:36:31.3181472Z --- PASS: TestPromoteDeployJob_NoSecretsByDefault (0.00s) -2026-07-05T01:36:31.3181609Z === RUN TestPromoteDeployJob_InheritSecrets -2026-07-05T01:36:31.3181752Z --- PASS: TestPromoteDeployJob_InheritSecrets (0.00s) -2026-07-05T01:36:31.3181880Z === RUN TestHotfixBuildJob_NoSecretsByDefault -2026-07-05T01:36:31.3182023Z --- PASS: TestHotfixBuildJob_NoSecretsByDefault (0.00s) -2026-07-05T01:36:31.3182148Z === RUN TestHotfixBuildJob_InheritSecrets -2026-07-05T01:36:31.3182281Z --- PASS: TestHotfixBuildJob_InheritSecrets (0.00s) -2026-07-05T01:36:31.3182410Z === RUN TestHotfixBuildJob_ExplicitSecretsMap -2026-07-05T01:36:31.3182560Z --- PASS: TestHotfixBuildJob_ExplicitSecretsMap (0.00s) -2026-07-05T01:36:31.3182687Z === RUN TestOrchestrateFinalizeDualStateWrite -2026-07-05T01:36:31.3182845Z --- PASS: TestOrchestrateFinalizeDualStateWrite (0.00s) -2026-07-05T01:36:31.3182982Z === RUN TestOrchestrateFinalizeStateTokenOverride -2026-07-05T01:36:31.3183158Z --- PASS: TestOrchestrateFinalizeStateTokenOverride (0.00s) -2026-07-05T01:36:31.3183285Z === RUN TestReleaseFinalizeDualStateWrite -2026-07-05T01:36:31.3183576Z --- PASS: TestReleaseFinalizeDualStateWrite (0.00s) -2026-07-05T01:36:31.3183700Z === RUN TestPromoteFinalizeStateTokenAuth -2026-07-05T01:36:31.3183836Z --- PASS: TestPromoteFinalizeStateTokenAuth (0.00s) -2026-07-05T01:36:31.3183980Z === RUN TestOrchestrateFinalizeStampsBotAuthor -2026-07-05T01:36:31.3184151Z --- PASS: TestOrchestrateFinalizeStampsBotAuthor (0.00s) -2026-07-05T01:36:31.3184278Z === RUN TestReleaseFinalizeStampsBotAuthor -2026-07-05T01:36:31.3184430Z --- PASS: TestReleaseFinalizeStampsBotAuthor (0.00s) -2026-07-05T01:36:31.3184558Z === RUN TestStateWriteHonorsCustomGitIdentity -2026-07-05T01:36:31.3184718Z --- PASS: TestStateWriteHonorsCustomGitIdentity (0.00s) -2026-07-05T01:36:31.3184827Z === RUN TestStateWriteNoEmDash -2026-07-05T01:36:31.3184952Z --- PASS: TestStateWriteNoEmDash (0.00s) -2026-07-05T01:36:31.3185107Z === RUN TestTelemetryReservedFieldsAreByteIdentical -2026-07-05T01:36:31.3185288Z --- PASS: TestTelemetryReservedFieldsAreByteIdentical (0.04s) -2026-07-05T01:36:31.3185416Z === RUN TestValidateCheckGenerator_Enabled -2026-07-05T01:36:31.3185555Z --- PASS: TestValidateCheckGenerator_Enabled (0.00s) -2026-07-05T01:36:31.3185721Z === RUN TestValidateCheckGenerator_TriggersAndPermissions -2026-07-05T01:36:31.3185926Z --- PASS: TestValidateCheckGenerator_TriggersAndPermissions (0.00s) -2026-07-05T01:36:31.3186047Z === RUN TestValidateCheckGenerator_Steps -2026-07-05T01:36:31.3186191Z --- PASS: TestValidateCheckGenerator_Steps (0.00s) -2026-07-05T01:36:31.3186344Z === RUN TestValidateCheckGenerator_SetupCLIPassesToken -2026-07-05T01:36:31.3186537Z --- PASS: TestValidateCheckGenerator_SetupCLIPassesToken (0.00s) -2026-07-05T01:36:31.3186665Z === RUN TestValidateCheckGenerator_PinModeSHA -2026-07-05T01:36:31.3186809Z --- PASS: TestValidateCheckGenerator_PinModeSHA (0.00s) -2026-07-05T01:36:31.3186942Z === RUN TestValidateCheckGenerator_ValidYAML -2026-07-05T01:36:31.3187087Z --- PASS: TestValidateCheckGenerator_ValidYAML (0.00s) -2026-07-05T01:36:31.3187340Z === RUN TestValidateCheckGeneratorE2E -2026-07-05T01:36:31.3187472Z --- PASS: TestValidateCheckGeneratorE2E (0.00s) -2026-07-05T01:36:31.3187651Z === RUN TestVersionOverridesReservedFieldIsByteIdentical -2026-07-05T01:36:31.3187833Z === PAUSE TestVersionOverridesReservedFieldIsByteIdentical -2026-07-05T01:36:31.3187962Z === RUN TestWorkflowsConsistentWithActionPins -2026-07-05T01:36:31.3188408Z workflow_consistency_test.go:162: governed uses: refs diverge from internal/generate/action_pins.yaml: -2026-07-05T01:36:31.3189342Z .github/workflows/action-pins.yml:49 actions/checkout want 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 got 9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc # v7.0.0 -2026-07-05T01:36:31.3189673Z update the workflow/composite file or the manifest so they agree. -2026-07-05T01:36:31.3189848Z --- FAIL: TestWorkflowsConsistentWithActionPins (0.02s) -2026-07-05T01:36:31.3190161Z === RUN TestWorkflowConsistencyLint_DetectsDivergence -2026-07-05T01:36:31.3190364Z --- PASS: TestWorkflowConsistencyLint_DetectsDivergence (0.00s) -2026-07-05T01:36:31.3190479Z === RUN TestParseWorkflowOutputs -2026-07-05T01:36:31.3190610Z --- PASS: TestParseWorkflowOutputs (0.00s) -2026-07-05T01:36:31.3190739Z === RUN TestParseWorkflowOutputs_NoOutputs -2026-07-05T01:36:31.3190881Z --- PASS: TestParseWorkflowOutputs_NoOutputs (0.00s) -2026-07-05T01:36:31.3191012Z === RUN TestParseWorkflowOutputs_NotReusable -2026-07-05T01:36:31.3191157Z --- PASS: TestParseWorkflowOutputs_NotReusable (0.00s) -2026-07-05T01:36:31.3191276Z === RUN TestParseWorkflowInputs -2026-07-05T01:36:31.3191399Z --- PASS: TestParseWorkflowInputs (0.00s) -2026-07-05T01:36:31.3191544Z === CONT TestRolloutReservedFieldsAreByteIdentical -2026-07-05T01:36:31.3191663Z === CONT TestNormalizeWorkflowPath -2026-07-05T01:36:31.3191918Z === RUN TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir -2026-07-05T01:36:31.3192179Z === PAUSE TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir -2026-07-05T01:36:31.3192524Z === CONT TestDeployTargetReservedFieldsAreByteIdentical -2026-07-05T01:36:31.3192696Z === CONT TestVersionOverridesReservedFieldIsByteIdentical -2026-07-05T01:36:31.3192938Z === RUN TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix -2026-07-05T01:36:31.3193167Z === PAUSE TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix -2026-07-05T01:36:31.3193372Z === RUN TestNormalizeWorkflowPath/already_normalized_path_unchanged -2026-07-05T01:36:31.3193573Z === PAUSE TestNormalizeWorkflowPath/already_normalized_path_unchanged -2026-07-05T01:36:31.3193761Z === RUN TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged -2026-07-05T01:36:31.3193960Z === PAUSE TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged -2026-07-05T01:36:31.3194172Z === RUN TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged -2026-07-05T01:36:31.3194390Z === PAUSE TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged -2026-07-05T01:36:31.3194654Z === CONT TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir -2026-07-05T01:36:31.3194862Z === CONT TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged -2026-07-05T01:36:31.3195061Z === CONT TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged -2026-07-05T01:36:31.3195255Z === CONT TestNormalizeWorkflowPath/already_normalized_path_unchanged -2026-07-05T01:36:31.3195488Z === CONT TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix -2026-07-05T01:36:31.3195620Z --- PASS: TestNormalizeWorkflowPath (0.00s) -2026-07-05T01:36:31.3195998Z --- PASS: TestNormalizeWorkflowPath/bare_filename_normalizes_to_github_workflows_dir (0.00s) -2026-07-05T01:36:31.3196326Z --- PASS: TestNormalizeWorkflowPath/org_satellite_cross-repo_ref_unchanged (0.00s) -2026-07-05T01:36:31.3196626Z --- PASS: TestNormalizeWorkflowPath/cross-repo_external_ref_unchanged (0.00s) -2026-07-05T01:36:31.3197047Z --- PASS: TestNormalizeWorkflowPath/already_normalized_path_unchanged (0.00s) -2026-07-05T01:36:31.3197415Z --- PASS: TestNormalizeWorkflowPath/github_workflows_path_gets_dot-slash_prefix (0.00s) -2026-07-05T01:36:31.3197621Z --- PASS: TestDeployTargetReservedFieldsAreByteIdentical (0.00s) -2026-07-05T01:36:31.3197806Z --- PASS: TestRolloutReservedFieldsAreByteIdentical (0.00s) -2026-07-05T01:36:31.3198016Z --- PASS: TestVersionOverridesReservedFieldIsByteIdentical (0.00s) -2026-07-05T01:36:31.3198102Z FAIL -2026-07-05T01:36:31.3198213Z coverage: 92.6% of statements -2026-07-05T01:36:31.3198404Z FAIL github.com/stablekernel/cascade/internal/generate 1.324s -2026-07-05T01:36:31.3198508Z === RUN TestWriter_Set -2026-07-05T01:36:31.3198617Z --- PASS: TestWriter_Set (0.00s) -2026-07-05T01:36:31.3198723Z === RUN TestWriter_SetBool -2026-07-05T01:36:31.3198833Z --- PASS: TestWriter_SetBool (0.00s) -2026-07-05T01:36:31.3198937Z === RUN TestWriter_SetJSON -2026-07-05T01:36:31.3199052Z --- PASS: TestWriter_SetJSON (0.00s) -2026-07-05T01:36:31.3199161Z === RUN TestWriter_SetMultiline -2026-07-05T01:36:31.3199286Z --- PASS: TestWriter_SetMultiline (0.00s) -2026-07-05T01:36:31.3199386Z === RUN TestWriter_FlushToFile -2026-07-05T01:36:31.3199507Z --- PASS: TestWriter_FlushToFile (0.00s) -2026-07-05T01:36:31.3199621Z === RUN TestWriter_FlushMultilineToFile -2026-07-05T01:36:31.3199773Z --- PASS: TestWriter_FlushMultilineToFile (0.00s) -2026-07-05T01:36:31.3199858Z PASS -2026-07-05T01:36:31.3199957Z coverage: 72.4% of statements -2026-07-05T01:36:31.3200412Z ok github.com/stablekernel/cascade/internal/ghaoutput 1.018s coverage: 72.4% of statements -2026-07-05T01:36:34.2239640Z === RUN TestDeleteRemoteBranch -2026-07-05T01:36:34.2240381Z --- PASS: TestDeleteRemoteBranch (0.07s) -2026-07-05T01:36:34.2240833Z === RUN TestDeleteRemoteTag -2026-07-05T01:36:34.2241246Z --- PASS: TestDeleteRemoteTag (0.07s) -2026-07-05T01:36:34.2241677Z === RUN TestListRemoteBranches -2026-07-05T01:36:34.2242113Z --- PASS: TestListRemoteBranches (0.05s) -2026-07-05T01:36:34.2242480Z === RUN TestParseCommits -2026-07-05T01:36:34.2243208Z === RUN TestParseCommits/single_commit -2026-07-05T01:36:34.2243654Z === RUN TestParseCommits/multiple_commits -2026-07-05T01:36:34.2244144Z === RUN TestParseCommits/commit_without_body -2026-07-05T01:36:34.2244714Z === RUN TestParseCommits/empty_input -2026-07-05T01:36:34.2245223Z === RUN TestParseCommits/multiline_body -2026-07-05T01:36:34.2245680Z === RUN TestParseCommits/whitespace_handling -2026-07-05T01:36:34.2246211Z === RUN TestParseCommits/same_author_multiple_commits -2026-07-05T01:36:34.2246706Z --- PASS: TestParseCommits (0.00s) -2026-07-05T01:36:34.2247241Z --- PASS: TestParseCommits/single_commit (0.00s) -2026-07-05T01:36:34.2247849Z --- PASS: TestParseCommits/multiple_commits (0.00s) -2026-07-05T01:36:34.2248487Z --- PASS: TestParseCommits/commit_without_body (0.00s) -2026-07-05T01:36:34.2249076Z --- PASS: TestParseCommits/empty_input (0.00s) -2026-07-05T01:36:34.2249679Z --- PASS: TestParseCommits/multiline_body (0.00s) -2026-07-05T01:36:34.2250534Z --- PASS: TestParseCommits/whitespace_handling (0.00s) -2026-07-05T01:36:34.2251309Z --- PASS: TestParseCommits/same_author_multiple_commits (0.00s) -2026-07-05T01:36:34.2251988Z === RUN TestGetCommits_UnknownBaseSHAReturnsError -2026-07-05T01:36:34.2252627Z --- PASS: TestGetCommits_UnknownBaseSHAReturnsError (0.02s) -2026-07-05T01:36:34.2253242Z === RUN TestGetCommits_EmptyRangeIsNotAnError -2026-07-05T01:36:34.2253827Z --- PASS: TestGetCommits_EmptyRangeIsNotAnError (0.02s) -2026-07-05T01:36:34.2254341Z === RUN TestParseLines -2026-07-05T01:36:34.2254748Z === RUN TestParseLines/multiple_lines -2026-07-05T01:36:34.2255218Z === RUN TestParseLines/trailing_newline -2026-07-05T01:36:34.2255711Z === RUN TestParseLines/empty_lines_filtered -2026-07-05T01:36:34.2256214Z === RUN TestParseLines/whitespace_trimmed -2026-07-05T01:36:34.2256673Z === RUN TestParseLines/empty_input -2026-07-05T01:36:34.2257097Z === RUN TestParseLines/single_file -2026-07-05T01:36:34.2257757Z --- PASS: TestParseLines (0.00s) -2026-07-05T01:36:34.2258302Z --- PASS: TestParseLines/multiple_lines (0.00s) -2026-07-05T01:36:34.2258962Z --- PASS: TestParseLines/trailing_newline (0.00s) -2026-07-05T01:36:34.2259700Z --- PASS: TestParseLines/empty_lines_filtered (0.00s) -2026-07-05T01:36:34.2260709Z --- PASS: TestParseLines/whitespace_trimmed (0.00s) -2026-07-05T01:36:34.2261344Z --- PASS: TestParseLines/empty_input (0.00s) -2026-07-05T01:36:34.2261941Z --- PASS: TestParseLines/single_file (0.00s) -2026-07-05T01:36:34.2262443Z === RUN TestIsAncestor_TrueFalseAndError -2026-07-05T01:36:34.2262977Z === RUN TestIsAncestor_TrueFalseAndError/is_ancestor -2026-07-05T01:36:34.2263562Z === RUN TestIsAncestor_TrueFalseAndError/not_ancestor -2026-07-05T01:36:34.2264154Z === RUN TestIsAncestor_TrueFalseAndError/bad_sha_errors -2026-07-05T01:36:34.2264736Z --- PASS: TestIsAncestor_TrueFalseAndError (0.03s) -2026-07-05T01:36:34.2265473Z --- PASS: TestIsAncestor_TrueFalseAndError/is_ancestor (0.00s) -2026-07-05T01:36:34.2266320Z --- PASS: TestIsAncestor_TrueFalseAndError/not_ancestor (0.00s) -2026-07-05T01:36:34.2267150Z --- PASS: TestIsAncestor_TrueFalseAndError/bad_sha_errors (0.00s) -2026-07-05T01:36:34.2267736Z === RUN TestBranchExists -2026-07-05T01:36:34.2268152Z === RUN TestBranchExists/existing_branch -2026-07-05T01:36:34.2268649Z === RUN TestBranchExists/missing_branch -2026-07-05T01:36:34.2269116Z --- PASS: TestBranchExists (0.05s) -2026-07-05T01:36:34.2269687Z --- PASS: TestBranchExists/existing_branch (0.00s) -2026-07-05T01:36:34.2270493Z --- PASS: TestBranchExists/missing_branch (0.00s) -2026-07-05T01:36:34.2271003Z === RUN TestRemoteBranchSHA -2026-07-05T01:36:34.2271445Z === RUN TestRemoteBranchSHA/existing_branch -2026-07-05T01:36:34.2271954Z === RUN TestRemoteBranchSHA/missing_branch -2026-07-05T01:36:34.2272444Z --- PASS: TestRemoteBranchSHA (0.05s) -2026-07-05T01:36:34.2273050Z --- PASS: TestRemoteBranchSHA/existing_branch (0.00s) -2026-07-05T01:36:34.2273735Z --- PASS: TestRemoteBranchSHA/missing_branch (0.00s) -2026-07-05T01:36:34.2274518Z === RUN TestGetLatestTag_IgnoresNonVersionTags -2026-07-05T01:36:34.2275154Z --- PASS: TestGetLatestTag_IgnoresNonVersionTags (0.03s) -2026-07-05T01:36:34.2275779Z === RUN TestGetLatestReleaseTag_IgnoresNonVersionTags -2026-07-05T01:36:34.2276473Z --- PASS: TestGetLatestReleaseTag_IgnoresNonVersionTags (0.03s) -2026-07-05T01:36:34.2277218Z === RUN TestGetLatestReleaseTag_SkipsRCButKeepsValidRelease -2026-07-05T01:36:34.2277987Z --- PASS: TestGetLatestReleaseTag_SkipsRCButKeepsValidRelease (0.03s) -2026-07-05T01:36:34.2278694Z === RUN TestGetLatestTag_ScopesToDir -2026-07-05T01:36:34.2279238Z --- PASS: TestGetLatestTag_ScopesToDir (0.05s) -2026-07-05T01:36:34.2279803Z === RUN TestGetLatestReleaseTag_ScopesToDir -2026-07-05T01:36:34.2280551Z --- PASS: TestGetLatestReleaseTag_ScopesToDir (0.04s) -2026-07-05T01:36:34.2281111Z === RUN TestIsValidVersionTag -2026-07-05T01:36:34.2281532Z === RUN TestIsValidVersionTag/v1.2.3 -2026-07-05T01:36:34.2282001Z === RUN TestIsValidVersionTag/v0.5.1 -2026-07-05T01:36:34.2282471Z === RUN TestIsValidVersionTag/v1.0.1-rc.0 -2026-07-05T01:36:34.2282995Z === RUN TestIsValidVersionTag/v1.0.1-rc.4.hotfix.5 -2026-07-05T01:36:34.2283500Z === RUN TestIsValidVersionTag/1.2.3 -2026-07-05T01:36:34.2283971Z === RUN TestIsValidVersionTag/release1.2.3 -2026-07-05T01:36:34.2284461Z === RUN TestIsValidVersionTag/v0.6.0-dryrun.1 -2026-07-05T01:36:34.2284957Z === RUN TestIsValidVersionTag/vnightly -2026-07-05T01:36:34.2285416Z === RUN TestIsValidVersionTag/nightly -2026-07-05T01:36:34.2285868Z === RUN TestIsValidVersionTag/latest -2026-07-05T01:36:34.2286307Z === RUN TestIsValidVersionTag/v1.2 -2026-07-05T01:36:34.2286759Z === RUN TestIsValidVersionTag/v1.2.3-rc -2026-07-05T01:36:34.2287225Z === RUN TestIsValidVersionTag/#00 -2026-07-05T01:36:34.2287674Z --- PASS: TestIsValidVersionTag (0.00s) -2026-07-05T01:36:34.2288220Z --- PASS: TestIsValidVersionTag/v1.2.3 (0.00s) -2026-07-05T01:36:34.2289041Z --- PASS: TestIsValidVersionTag/v0.5.1 (0.00s) -2026-07-05T01:36:34.2289654Z --- PASS: TestIsValidVersionTag/v1.0.1-rc.0 (0.00s) -2026-07-05T01:36:34.2290547Z --- PASS: TestIsValidVersionTag/v1.0.1-rc.4.hotfix.5 (0.00s) -2026-07-05T01:36:34.2291200Z --- PASS: TestIsValidVersionTag/1.2.3 (0.00s) -2026-07-05T01:36:34.2291844Z --- PASS: TestIsValidVersionTag/release1.2.3 (0.00s) -2026-07-05T01:36:34.2292557Z --- PASS: TestIsValidVersionTag/v0.6.0-dryrun.1 (0.00s) -2026-07-05T01:36:34.2293226Z --- PASS: TestIsValidVersionTag/vnightly (0.00s) -2026-07-05T01:36:34.2293870Z --- PASS: TestIsValidVersionTag/nightly (0.00s) -2026-07-05T01:36:34.2294477Z --- PASS: TestIsValidVersionTag/latest (0.00s) -2026-07-05T01:36:34.2295055Z --- PASS: TestIsValidVersionTag/v1.2 (0.00s) -2026-07-05T01:36:34.2295633Z --- PASS: TestIsValidVersionTag/v1.2.3-rc (0.00s) -2026-07-05T01:36:34.2296197Z --- PASS: TestIsValidVersionTag/#00 (0.00s) -2026-07-05T01:36:34.2296788Z === RUN TestCommitAndPushWithRetry_RecoversFromNonFastForward -2026-07-05T01:36:34.2297529Z --- PASS: TestCommitAndPushWithRetry_RecoversFromNonFastForward (2.17s) -2026-07-05T01:36:34.2298231Z === RUN TestIsValidVersionTag_InSyncWithVersionParse -2026-07-05T01:36:34.2298880Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3 -2026-07-05T01:36:34.2299515Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.5.1 -2026-07-05T01:36:34.2300349Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.0.0 -2026-07-05T01:36:34.2301028Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v10.20.30 -2026-07-05T01:36:34.2301728Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.0 -2026-07-05T01:36:34.2302433Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.42 -2026-07-05T01:36:34.2303178Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.4.hotfix.5 -2026-07-05T01:36:34.2303882Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/1.2.3 -2026-07-05T01:36:34.2304573Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/release1.2.3 -2026-07-05T01:36:34.2305504Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.1 -2026-07-05T01:36:34.2306302Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.10 -2026-07-05T01:36:34.2307034Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/vnightly -2026-07-05T01:36:34.2307602Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/nightly -2026-07-05T01:36:34.2308063Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/latest -2026-07-05T01:36:34.2308715Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2 -2026-07-05T01:36:34.2309387Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3.4 -2026-07-05T01:36:34.2310247Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc -2026-07-05T01:36:34.2310955Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc.x -2026-07-05T01:36:34.2311680Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-hotfix.1 -2026-07-05T01:36:34.2312402Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/v-1.2.3 -2026-07-05T01:36:34.2313045Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/#00 -2026-07-05T01:36:34.2313684Z === RUN TestIsValidVersionTag_InSyncWithVersionParse/vlatest -2026-07-05T01:36:34.2314343Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse (0.00s) -2026-07-05T01:36:34.2315172Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3 (0.00s) -2026-07-05T01:36:34.2316043Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.5.1 (0.00s) -2026-07-05T01:36:34.2316900Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.0.0 (0.00s) -2026-07-05T01:36:34.2317760Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v10.20.30 (0.00s) -2026-07-05T01:36:34.2318683Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.0 (0.00s) -2026-07-05T01:36:34.2319609Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.42 (0.00s) -2026-07-05T01:36:34.2321074Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.0.1-rc.4.hotfix.5 (0.00s) -2026-07-05T01:36:34.2322044Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/1.2.3 (0.00s) -2026-07-05T01:36:34.2322964Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/release1.2.3 (0.00s) -2026-07-05T01:36:34.2323951Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.1 (0.00s) -2026-07-05T01:36:34.2324934Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v0.6.0-dryrun.10 (0.00s) -2026-07-05T01:36:34.2325914Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/vnightly (0.00s) -2026-07-05T01:36:34.2326860Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/nightly (0.00s) -2026-07-05T01:36:34.2327762Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/latest (0.00s) -2026-07-05T01:36:34.2328650Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2 (0.00s) -2026-07-05T01:36:34.2329551Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3.4 (0.00s) -2026-07-05T01:36:34.2330694Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc (0.00s) -2026-07-05T01:36:34.2331646Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-rc.x (0.00s) -2026-07-05T01:36:34.2332637Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v1.2.3-hotfix.1 (0.00s) -2026-07-05T01:36:34.2333618Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/v-1.2.3 (0.00s) -2026-07-05T01:36:34.2334516Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/#00 (0.00s) -2026-07-05T01:36:34.2335418Z --- PASS: TestIsValidVersionTag_InSyncWithVersionParse/vlatest (0.00s) -2026-07-05T01:36:34.2336008Z PASS -2026-07-05T01:36:34.2336329Z coverage: 66.9% of statements -2026-07-05T01:36:34.2337009Z ok github.com/stablekernel/cascade/internal/git 3.750s coverage: 66.9% of statements -2026-07-05T01:36:34.2337725Z === RUN TestParseJobResults_SimpleJobs -2026-07-05T01:36:34.2338231Z --- PASS: TestParseJobResults_SimpleJobs (0.00s) -2026-07-05T01:36:34.2338739Z === RUN TestParseJobResults_MatrixJobs -2026-07-05T01:36:34.2339495Z --- PASS: TestParseJobResults_MatrixJobs (0.00s) -2026-07-05T01:36:34.2340179Z === RUN TestParseJobResults_MissingDeploys -2026-07-05T01:36:34.2340723Z --- PASS: TestParseJobResults_MissingDeploys (0.00s) -2026-07-05T01:36:34.2341266Z === RUN TestParseJobResults_EmptyResponse -2026-07-05T01:36:34.2341811Z --- PASS: TestParseJobResults_EmptyResponse (0.00s) -2026-07-05T01:36:34.2342350Z === RUN TestParseJobResults_InvalidJSON -2026-07-05T01:36:34.2342860Z --- PASS: TestParseJobResults_InvalidJSON (0.00s) -2026-07-05T01:36:34.2343411Z === RUN TestParseJobResults_CascadeWithTargetEnv -2026-07-05T01:36:34.2344010Z --- PASS: TestParseJobResults_CascadeWithTargetEnv (0.00s) -2026-07-05T01:36:34.2344584Z === RUN TestParseJobResults_NullConclusion -2026-07-05T01:36:34.2345127Z --- PASS: TestParseJobResults_NullConclusion (0.00s) -2026-07-05T01:36:34.2345599Z PASS -2026-07-05T01:36:34.2345913Z coverage: 76.7% of statements -2026-07-05T01:36:34.2346604Z ok github.com/stablekernel/cascade/internal/github 1.014s coverage: 76.7% of statements -2026-07-05T01:36:34.2347300Z === RUN TestDryRun -2026-07-05T01:36:34.2347657Z --- PASS: TestDryRun (0.00s) -2026-07-05T01:36:34.2348027Z === RUN TestJSON -2026-07-05T01:36:34.2348363Z --- PASS: TestJSON (0.00s) -2026-07-05T01:36:34.2348744Z === RUN TestConcurrentAccess -2026-07-05T01:36:34.2349165Z --- PASS: TestConcurrentAccess (0.01s) -2026-07-05T01:36:34.2349572Z PASS -2026-07-05T01:36:34.2349870Z coverage: 66.7% of statements -2026-07-05T01:36:34.2350707Z ok github.com/stablekernel/cascade/internal/globals 1.019s coverage: 66.7% of statements -2026-07-05T01:36:34.2351446Z === RUN TestRun_JobsDefault_EmitsMermaid -2026-07-05T01:36:34.2351945Z --- PASS: TestRun_JobsDefault_EmitsMermaid (0.00s) -2026-07-05T01:36:34.2352458Z === RUN TestRun_UnknownFormat_Errors -2026-07-05T01:36:34.2352936Z --- PASS: TestRun_UnknownFormat_Errors (0.00s) -2026-07-05T01:36:34.2353469Z === RUN TestRun_StagesGranularity_EmitsFlowchart -2026-07-05T01:36:34.2354247Z --- PASS: TestRun_StagesGranularity_EmitsFlowchart (0.00s) -2026-07-05T01:36:34.2354840Z === RUN TestRun_EnvGranularity_EmitsStateMachine -2026-07-05T01:36:34.2355409Z --- PASS: TestRun_EnvGranularity_EmitsStateMachine (0.00s) -2026-07-05T01:36:34.2356017Z === RUN TestRun_CrossRepoGranularity_EmitsLanesAndEdges -2026-07-05T01:36:34.2356680Z --- PASS: TestRun_CrossRepoGranularity_EmitsLanesAndEdges (0.00s) -2026-07-05T01:36:34.2357352Z === RUN TestRun_CrossRepoGranularity_NoExternals_RendersPrimary -2026-07-05T01:36:34.2358088Z --- PASS: TestRun_CrossRepoGranularity_NoExternals_RendersPrimary (0.00s) -2026-07-05T01:36:34.2358733Z === RUN TestRun_UnknownGranularity_Errors -2026-07-05T01:36:34.2359263Z --- PASS: TestRun_UnknownGranularity_Errors (0.00s) -2026-07-05T01:36:34.2359839Z === RUN TestRun_UnknownTheme_Errors -2026-07-05T01:36:34.2360488Z --- PASS: TestRun_UnknownTheme_Errors (0.00s) -2026-07-05T01:36:34.2360984Z === RUN TestRun_BlandTheme_StylesOutput -2026-07-05T01:36:34.2361502Z --- PASS: TestRun_BlandTheme_StylesOutput (0.00s) -2026-07-05T01:36:34.2362022Z === RUN TestRun_CascadeAndBland_Differ -2026-07-05T01:36:34.2362520Z --- PASS: TestRun_CascadeAndBland_Differ (0.00s) -2026-07-05T01:36:34.2363023Z === RUN TestRun_DefaultAliasesCascade -2026-07-05T01:36:34.2363515Z --- PASS: TestRun_DefaultAliasesCascade (0.00s) -2026-07-05T01:36:34.2364039Z === RUN TestRun_FileTheme_Applied -2026-07-05T01:36:34.2364498Z --- PASS: TestRun_FileTheme_Applied (0.00s) -2026-07-05T01:36:34.2364979Z === RUN TestRun_FileTheme_JSONReportsName -2026-07-05T01:36:34.2365490Z --- PASS: TestRun_FileTheme_JSONReportsName (0.00s) -2026-07-05T01:36:34.2366014Z === RUN TestRun_MalformedThemeFile_Errors -2026-07-05T01:36:34.2366503Z --- PASS: TestRun_MalformedThemeFile_Errors (0.00s) -2026-07-05T01:36:34.2366981Z === RUN TestRun_MissingManifest_Errors -2026-07-05T01:36:34.2367436Z --- PASS: TestRun_MissingManifest_Errors (0.00s) -2026-07-05T01:36:34.2367911Z === RUN TestRun_JSON_WrapsDiagram -2026-07-05T01:36:34.2368347Z --- PASS: TestRun_JSON_WrapsDiagram (0.00s) -2026-07-05T01:36:34.2369020Z === RUN TestRun_EmptyDefaults_AutoFills -2026-07-05T01:36:34.2369530Z --- PASS: TestRun_EmptyDefaults_AutoFills (0.00s) -2026-07-05T01:36:34.2370265Z === RUN TestNewCommand_Defaults -2026-07-05T01:36:34.2370720Z --- PASS: TestNewCommand_Defaults (0.00s) -2026-07-05T01:36:34.2371199Z === RUN TestNewCommand_RunEmitsMermaid -2026-07-05T01:36:34.2371719Z --- PASS: TestNewCommand_RunEmitsMermaid (0.00s) -2026-07-05T01:36:34.2372249Z === RUN TestNewCommand_RejectsUnknownFormat -2026-07-05T01:36:34.2372807Z --- PASS: TestNewCommand_RejectsUnknownFormat (0.00s) -2026-07-05T01:36:34.2373279Z PASS -2026-07-05T01:36:34.2373603Z coverage: 86.4% of statements -2026-07-05T01:36:34.2374257Z ok github.com/stablekernel/cascade/internal/graph 1.055s coverage: 86.4% of statements -2026-07-05T01:36:34.9700512Z === RUN TestParseCommitRefs -2026-07-05T01:36:34.9701039Z === RUN TestParseCommitRefs/single_ref -2026-07-05T01:36:34.9701547Z === RUN TestParseCommitRefs/two_refs -2026-07-05T01:36:34.9702067Z === RUN TestParseCommitRefs/trims_whitespace -2026-07-05T01:36:34.9702574Z === RUN TestParseCommitRefs/preserves_order -2026-07-05T01:36:34.9703059Z === RUN TestParseCommitRefs/empty_input -2026-07-05T01:36:34.9703541Z === RUN TestParseCommitRefs/whitespace_only -2026-07-05T01:36:34.9703970Z === RUN TestParseCommitRefs/empty_entry -2026-07-05T01:36:34.9704352Z === RUN TestParseCommitRefs/trailing_comma -2026-07-05T01:36:34.9704826Z === RUN TestParseCommitRefs/duplicate_entry -2026-07-05T01:36:34.9705286Z --- PASS: TestParseCommitRefs (0.00s) -2026-07-05T01:36:34.9705860Z --- PASS: TestParseCommitRefs/single_ref (0.00s) -2026-07-05T01:36:34.9706471Z --- PASS: TestParseCommitRefs/two_refs (0.00s) -2026-07-05T01:36:34.9707235Z --- PASS: TestParseCommitRefs/trims_whitespace (0.00s) -2026-07-05T01:36:34.9707897Z --- PASS: TestParseCommitRefs/preserves_order (0.00s) -2026-07-05T01:36:34.9708534Z --- PASS: TestParseCommitRefs/empty_input (0.00s) -2026-07-05T01:36:34.9709463Z --- PASS: TestParseCommitRefs/whitespace_only (0.00s) -2026-07-05T01:36:34.9710348Z --- PASS: TestParseCommitRefs/empty_entry (0.00s) -2026-07-05T01:36:34.9710979Z --- PASS: TestParseCommitRefs/trailing_comma (0.00s) -2026-07-05T01:36:34.9711627Z --- PASS: TestParseCommitRefs/duplicate_entry (0.00s) -2026-07-05T01:36:34.9712122Z === RUN TestExpandTargetEnvs -2026-07-05T01:36:34.9712615Z === RUN TestExpandTargetEnvs/staging_stops_at_staging -2026-07-05T01:36:34.9713294Z === RUN TestExpandTargetEnvs/prod_includes_whole_chain_above_first -2026-07-05T01:36:34.9713964Z === RUN TestExpandTargetEnvs/second_env_alone -2026-07-05T01:36:34.9714508Z === RUN TestExpandTargetEnvs/first_env_rejected -2026-07-05T01:36:34.9715060Z === RUN TestExpandTargetEnvs/unknown_env_rejected -2026-07-05T01:36:34.9715585Z --- PASS: TestExpandTargetEnvs (0.00s) -2026-07-05T01:36:34.9716284Z --- PASS: TestExpandTargetEnvs/staging_stops_at_staging (0.00s) -2026-07-05T01:36:34.9717394Z --- PASS: TestExpandTargetEnvs/prod_includes_whole_chain_above_first (0.00s) -2026-07-05T01:36:34.9718228Z --- PASS: TestExpandTargetEnvs/second_env_alone (0.00s) -2026-07-05T01:36:34.9718944Z --- PASS: TestExpandTargetEnvs/first_env_rejected (0.00s) -2026-07-05T01:36:34.9719673Z --- PASS: TestExpandTargetEnvs/unknown_env_rejected (0.00s) -2026-07-05T01:36:34.9720460Z === RUN TestPlan_SkipsCommitAlreadyInPatches -2026-07-05T01:36:34.9721047Z --- PASS: TestPlan_SkipsCommitAlreadyInPatches (0.04s) -2026-07-05T01:36:34.9721628Z === RUN TestPlan_SkipsCommitAlreadyInStateSHA -2026-07-05T01:36:34.9722210Z --- PASS: TestPlan_SkipsCommitAlreadyInStateSHA (0.05s) -2026-07-05T01:36:34.9722749Z === RUN TestPlanChain_CleanSet -2026-07-05T01:36:34.9723196Z --- PASS: TestPlanChain_CleanSet (0.06s) -2026-07-05T01:36:34.9723698Z === RUN TestPlanChain_FullyPresentEnvIsNoOp -2026-07-05T01:36:34.9724256Z --- PASS: TestPlanChain_FullyPresentEnvIsNoOp (0.05s) -2026-07-05T01:36:34.9724807Z === RUN TestPlanChain_MixedSetSkipsPerEnv -2026-07-05T01:36:34.9725612Z --- PASS: TestPlanChain_MixedSetSkipsPerEnv (0.05s) -2026-07-05T01:36:34.9726163Z === RUN TestChainGHAOutputs_CarriesSequence -2026-07-05T01:36:34.9726715Z --- PASS: TestChainGHAOutputs_CarriesSequence (0.00s) -2026-07-05T01:36:34.9727265Z === RUN TestPlanChain_RejectsNonTrunkCommit -2026-07-05T01:36:34.9727803Z --- PASS: TestPlanChain_RejectsNonTrunkCommit (0.05s) -2026-07-05T01:36:34.9728437Z === RUN TestPlanChain_RemoteEnvTipDiverged_FailsWithGuidance -2026-07-05T01:36:34.9729186Z --- PASS: TestPlanChain_RemoteEnvTipDiverged_FailsWithGuidance (0.05s) -2026-07-05T01:36:34.9729896Z === RUN TestPlanChain_RemoteEnvTipInSync_PlansCleanly -2026-07-05T01:36:34.9731377Z --- PASS: TestPlanChain_RemoteEnvTipInSync_PlansCleanly (0.04s) -2026-07-05T01:36:34.9731956Z === RUN TestNewCommand -2026-07-05T01:36:34.9732357Z --- PASS: TestNewCommand (0.00s) -2026-07-05T01:36:34.9732788Z === RUN TestNewPlanCommand_Flags -2026-07-05T01:36:34.9733249Z --- PASS: TestNewPlanCommand_Flags (0.00s) -2026-07-05T01:36:34.9733750Z === RUN TestNewFinalizeCommand_Flags -2026-07-05T01:36:34.9734258Z --- PASS: TestNewFinalizeCommand_Flags (0.00s) -2026-07-05T01:36:34.9734763Z === RUN TestSplitResultFlag -2026-07-05T01:36:34.9735225Z === RUN TestSplitResultFlag/app=success -2026-07-05T01:36:34.9735746Z === RUN TestSplitResultFlag/svc.api=failure -2026-07-05T01:36:34.9736278Z === RUN TestSplitResultFlag/a=b=c -2026-07-05T01:36:34.9736758Z === RUN TestSplitResultFlag/#00 -2026-07-05T01:36:34.9737229Z === RUN TestSplitResultFlag/=success -2026-07-05T01:36:34.9737697Z === RUN TestSplitResultFlag/app= -2026-07-05T01:36:34.9738166Z === RUN TestSplitResultFlag/noequals -2026-07-05T01:36:34.9738666Z --- PASS: TestSplitResultFlag (0.00s) -2026-07-05T01:36:34.9739283Z --- PASS: TestSplitResultFlag/app=success (0.00s) -2026-07-05T01:36:34.9740157Z --- PASS: TestSplitResultFlag/svc.api=failure (0.00s) -2026-07-05T01:36:34.9740868Z --- PASS: TestSplitResultFlag/a=b=c (0.00s) -2026-07-05T01:36:34.9741682Z --- PASS: TestSplitResultFlag/#00 (0.00s) -2026-07-05T01:36:34.9742266Z --- PASS: TestSplitResultFlag/=success (0.00s) -2026-07-05T01:36:34.9742846Z --- PASS: TestSplitResultFlag/app= (0.00s) -2026-07-05T01:36:34.9743427Z --- PASS: TestSplitResultFlag/noequals (0.00s) -2026-07-05T01:36:34.9743907Z === RUN TestNewRestPRChecker -2026-07-05T01:36:34.9744327Z --- PASS: TestNewRestPRChecker (0.00s) -2026-07-05T01:36:34.9744750Z === RUN TestPrintPlan_FullPlan -2026-07-05T01:36:34.9745179Z --- PASS: TestPrintPlan_FullPlan (0.00s) -2026-07-05T01:36:34.9745630Z === RUN TestPrintPlan_NoOp -2026-07-05T01:36:34.9746031Z --- PASS: TestPrintPlan_NoOp (0.00s) -2026-07-05T01:36:34.9746470Z === RUN TestPrintPlan_ExistingBranch -2026-07-05T01:36:34.9746931Z --- PASS: TestPrintPlan_ExistingBranch (0.00s) -2026-07-05T01:36:34.9747413Z === RUN TestPrintPlanChain -2026-07-05T01:36:34.9747818Z --- PASS: TestPrintPlanChain (0.00s) -2026-07-05T01:36:34.9748228Z === RUN TestOutputJSON -2026-07-05T01:36:34.9748598Z --- PASS: TestOutputJSON (0.00s) -2026-07-05T01:36:34.9749002Z === RUN TestWritePlanGHAOutput -2026-07-05T01:36:34.9749426Z --- PASS: TestWritePlanGHAOutput (0.00s) -2026-07-05T01:36:34.9749886Z === RUN TestWritePlanChainGHAOutput -2026-07-05T01:36:34.9750543Z --- PASS: TestWritePlanChainGHAOutput (0.00s) -2026-07-05T01:36:34.9751116Z === RUN TestFinalize_Integration_PlanThenMergeThenFinalize -2026-07-05T01:36:34.9751814Z --- PASS: TestFinalize_Integration_PlanThenMergeThenFinalize (0.06s) -2026-07-05T01:36:34.9752404Z === RUN TestWithFinalizeDryRun -2026-07-05T01:36:34.9752854Z --- PASS: TestWithFinalizeDryRun (0.00s) -2026-07-05T01:36:34.9753333Z === RUN TestWithTipReader -2026-07-05T01:36:34.9753744Z --- PASS: TestWithTipReader (0.00s) -2026-07-05T01:36:34.9754179Z === RUN TestFinalizeOptions_NilSafety -2026-07-05T01:36:34.9754656Z --- PASS: TestFinalizeOptions_NilSafety (0.00s) -2026-07-05T01:36:34.9755168Z === RUN TestGitIdentity -2026-07-05T01:36:34.9755541Z --- PASS: TestGitIdentity (0.00s) -2026-07-05T01:36:34.9755933Z === RUN TestIsRealGitHub -2026-07-05T01:36:34.9756513Z --- PASS: TestIsRealGitHub (0.00s) -2026-07-05T01:36:34.9756893Z === RUN TestAllocateVersion -2026-07-05T01:36:34.9757355Z === RUN TestAllocateVersion/rc_base_allocates_nested_hotfix -2026-07-05T01:36:34.9757970Z === RUN TestAllocateVersion/rc_base_skips_existing_hotfix_tag -2026-07-05T01:36:34.9758589Z === RUN TestAllocateVersion/published_base_patch_bump -2026-07-05T01:36:34.9759199Z === RUN TestAllocateVersion/published_base_skips_taken_patches -2026-07-05T01:36:34.9759853Z === RUN TestAllocateVersion/empty_prior_version_errors -2026-07-05T01:36:34.9760681Z === RUN TestAllocateVersion/unparseable_prior_version_errors -2026-07-05T01:36:34.9761298Z --- PASS: TestAllocateVersion (0.00s) -2026-07-05T01:36:34.9762160Z --- PASS: TestAllocateVersion/rc_base_allocates_nested_hotfix (0.00s) -2026-07-05T01:36:34.9763107Z --- PASS: TestAllocateVersion/rc_base_skips_existing_hotfix_tag (0.00s) -2026-07-05T01:36:34.9763976Z --- PASS: TestAllocateVersion/published_base_patch_bump (0.00s) -2026-07-05T01:36:34.9764816Z --- PASS: TestAllocateVersion/published_base_skips_taken_patches (0.00s) -2026-07-05T01:36:34.9765636Z --- PASS: TestAllocateVersion/empty_prior_version_errors (0.00s) -2026-07-05T01:36:34.9766457Z --- PASS: TestAllocateVersion/unparseable_prior_version_errors (0.00s) -2026-07-05T01:36:34.9767055Z === RUN TestIsPrereleaseEnv -2026-07-05T01:36:34.9767460Z --- PASS: TestIsPrereleaseEnv (0.00s) -2026-07-05T01:36:34.9767948Z === RUN TestApplyHotfixState_NoOpWhenSHAUnchanged -2026-07-05T01:36:34.9768639Z --- PASS: TestApplyHotfixState_NoOpWhenSHAUnchanged (0.00s) -2026-07-05T01:36:34.9769227Z === RUN TestApplyHotfixState_WritesDivergedState -2026-07-05T01:36:34.9769662Z --- PASS: TestApplyHotfixState_WritesDivergedState (0.00s) -2026-07-05T01:36:34.9770270Z === RUN TestFinalizeHotfixMutatePreservesUntouchedEnv -2026-07-05T01:36:34.9770817Z --- PASS: TestFinalizeHotfixMutatePreservesUntouchedEnv (0.00s) -2026-07-05T01:36:34.9771642Z === RUN TestFinalize_WritesDivergedState -2026-07-05T01:36:34.9772173Z --- PASS: TestFinalize_WritesDivergedState (0.05s) -2026-07-05T01:36:34.9772519Z === RUN TestFinalize_PreviousRingSnapshot -2026-07-05T01:36:34.9772896Z --- PASS: TestFinalize_PreviousRingSnapshot (0.05s) -2026-07-05T01:36:34.9773427Z === RUN TestFinalize_PreviousRingBounded -2026-07-05T01:36:34.9773931Z --- PASS: TestFinalize_PreviousRingBounded (0.06s) -2026-07-05T01:36:34.9774502Z === RUN TestFinalize_RecordsAllCommitsOfMultiCommitSet -2026-07-05T01:36:34.9775157Z --- PASS: TestFinalize_RecordsAllCommitsOfMultiCommitSet (0.07s) -2026-07-05T01:36:34.9775739Z === RUN TestFinalize_StacksSecondHotfix -2026-07-05T01:36:34.9776252Z --- PASS: TestFinalize_StacksSecondHotfix (0.08s) -2026-07-05T01:36:34.9776789Z === RUN TestFinalize_MergeSHATipMismatch_Fails -2026-07-05T01:36:34.9777347Z --- PASS: TestFinalize_MergeSHATipMismatch_Fails (0.06s) -2026-07-05T01:36:34.9777860Z === RUN TestFinalize_Idempotent_Rerun -2026-07-05T01:36:34.9778329Z --- PASS: TestFinalize_Idempotent_Rerun (0.07s) -2026-07-05T01:36:34.9809473Z === RUN TestFinalize_StateWriteTargetsTrunkBranch -2026-07-05T01:36:34.9810348Z --- PASS: TestFinalize_StateWriteTargetsTrunkBranch (0.06s) -2026-07-05T01:36:34.9810982Z === RUN TestFinalize_ReadsPriorStateFromTrunk -2026-07-05T01:36:34.9811565Z --- PASS: TestFinalize_ReadsPriorStateFromTrunk (0.05s) -2026-07-05T01:36:34.9812161Z === RUN TestFinalize_TrunkIsSourceOfPriorState -2026-07-05T01:36:34.9812754Z --- PASS: TestFinalize_TrunkIsSourceOfPriorState (0.06s) -2026-07-05T01:36:34.9813371Z === RUN TestFinalize_DoesNotClobberOtherEnvsTrunkState -2026-07-05T01:36:34.9814017Z --- PASS: TestFinalize_DoesNotClobberOtherEnvsTrunkState (0.07s) -2026-07-05T01:36:34.9814642Z === RUN TestFinalize_TrunkStateAbsent_Errors -2026-07-05T01:36:34.9815189Z --- PASS: TestFinalize_TrunkStateAbsent_Errors (0.05s) -2026-07-05T01:36:34.9815762Z === RUN TestReleaseToken_FallsBackThroughEnvVars -2026-07-05T01:36:34.9816401Z === RUN TestReleaseToken_FallsBackThroughEnvVars/release_token_wins -2026-07-05T01:36:34.9817367Z === RUN TestReleaseToken_FallsBackThroughEnvVars/github_token_next -2026-07-05T01:36:34.9818079Z === RUN TestReleaseToken_FallsBackThroughEnvVars/gh_token_fallback -2026-07-05T01:36:34.9818750Z === RUN TestReleaseToken_FallsBackThroughEnvVars/none_set -2026-07-05T01:36:34.9819379Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars (0.00s) -2026-07-05T01:36:34.9819930Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/release_token_wins (0.00s) -2026-07-05T01:36:34.9820813Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/github_token_next (0.00s) -2026-07-05T01:36:34.9821389Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/gh_token_fallback (0.00s) -2026-07-05T01:36:34.9822209Z --- PASS: TestReleaseToken_FallsBackThroughEnvVars/none_set (0.00s) -2026-07-05T01:36:34.9822929Z === RUN TestFinalize_VersionAllocation_SkipsExistingTags -2026-07-05T01:36:34.9823385Z --- PASS: TestFinalize_VersionAllocation_SkipsExistingTags (0.05s) -2026-07-05T01:36:34.9823804Z === RUN TestFinalize_PublishedBase_PatchBump_NoCollision -2026-07-05T01:36:34.9824205Z --- PASS: TestFinalize_PublishedBase_PatchBump_NoCollision (0.05s) -2026-07-05T01:36:34.9824593Z === RUN TestFinalize_PrereleaseEnv_ReplacesPrerelease -2026-07-05T01:36:34.9824984Z --- PASS: TestFinalize_PrereleaseEnv_ReplacesPrerelease (0.05s) -2026-07-05T01:36:34.9825377Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs -2026-07-05T01:36:34.9825765Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs/local_ref -2026-07-05T01:36:34.9826234Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs/origin-tracking_ref_only -2026-07-05T01:36:34.9826751Z === RUN TestEnvTipReader_ResolvesLocalAndRemoteRefs/missing_ref_errors -2026-07-05T01:36:34.9827212Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs (0.07s) -2026-07-05T01:36:34.9827731Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs/local_ref (0.02s) -2026-07-05T01:36:34.9828548Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs/origin-tracking_ref_only (0.02s) -2026-07-05T01:36:34.9829207Z --- PASS: TestEnvTipReader_ResolvesLocalAndRemoteRefs/missing_ref_errors (0.02s) -2026-07-05T01:36:34.9829644Z === RUN TestOrphanEnvBranches -2026-07-05T01:36:34.9830150Z === RUN TestOrphanEnvBranches/no_branches_yields_no_orphans -2026-07-05T01:36:34.9830697Z === RUN TestOrphanEnvBranches/branch_with_matching_divergence_is_not_an_orphan -2026-07-05T01:36:34.9831234Z === RUN TestOrphanEnvBranches/branch_without_matching_divergence_is_an_orphan -2026-07-05T01:36:34.9831773Z === RUN TestOrphanEnvBranches/branch_for_an_env_absent_from_state_is_an_orphan -2026-07-05T01:36:34.9832261Z === RUN TestOrphanEnvBranches/non_env-prefixed_branches_are_ignored -2026-07-05T01:36:34.9832708Z === RUN TestOrphanEnvBranches/mixed_orphan_and_healthy_branches -2026-07-05T01:36:34.9833082Z --- PASS: TestOrphanEnvBranches (0.00s) -2026-07-05T01:36:34.9833532Z --- PASS: TestOrphanEnvBranches/no_branches_yields_no_orphans (0.00s) -2026-07-05T01:36:34.9834169Z --- PASS: TestOrphanEnvBranches/branch_with_matching_divergence_is_not_an_orphan (0.00s) -2026-07-05T01:36:34.9834860Z --- PASS: TestOrphanEnvBranches/branch_without_matching_divergence_is_an_orphan (0.00s) -2026-07-05T01:36:34.9835535Z --- PASS: TestOrphanEnvBranches/branch_for_an_env_absent_from_state_is_an_orphan (0.00s) -2026-07-05T01:36:34.9836169Z --- PASS: TestOrphanEnvBranches/non_env-prefixed_branches_are_ignored (0.00s) -2026-07-05T01:36:34.9836747Z --- PASS: TestOrphanEnvBranches/mixed_orphan_and_healthy_branches (0.00s) -2026-07-05T01:36:34.9837147Z === RUN TestHealOrphanEnvBranches -2026-07-05T01:36:34.9837602Z === RUN TestHealOrphanEnvBranches/deletes_only_orphans_and_leaves_diverged_branches_intact -2026-07-05T01:36:34.9838177Z === RUN TestHealOrphanEnvBranches/idempotent_when_an_orphan_is_already_absent -2026-07-05T01:36:34.9838656Z === RUN TestHealOrphanEnvBranches/no_orphans_is_a_clean_no-op -2026-07-05T01:36:34.9839177Z === RUN TestHealOrphanEnvBranches/propagates_a_delete_error_with_the_healed-so-far_set -2026-07-05T01:36:34.9839802Z --- PASS: TestHealOrphanEnvBranches (0.00s) -2026-07-05T01:36:34.9840607Z --- PASS: TestHealOrphanEnvBranches/deletes_only_orphans_and_leaves_diverged_branches_intact (0.00s) -2026-07-05T01:36:34.9841337Z --- PASS: TestHealOrphanEnvBranches/idempotent_when_an_orphan_is_already_absent (0.00s) -2026-07-05T01:36:34.9841948Z --- PASS: TestHealOrphanEnvBranches/no_orphans_is_a_clean_no-op (0.00s) -2026-07-05T01:36:34.9842666Z --- PASS: TestHealOrphanEnvBranches/propagates_a_delete_error_with_the_healed-so-far_set (0.00s) -2026-07-05T01:36:34.9843151Z === RUN TestHotfixTagsForBase -2026-07-05T01:36:34.9843528Z === RUN TestHotfixTagsForBase/rc_base_matches_its_dotted_hotfix_tags_only -2026-07-05T01:36:34.9844029Z === RUN TestHotfixTagsForBase/no_hotfix_tags_yields_empty -2026-07-05T01:36:34.9844618Z === RUN TestHotfixTagsForBase/hotfix_base_version_normalizes_to_its_rc_base -2026-07-05T01:36:34.9845091Z === RUN TestHotfixTagsForBase/unparseable_base_yields_empty -2026-07-05T01:36:34.9845591Z --- PASS: TestHotfixTagsForBase (0.00s) -2026-07-05T01:36:34.9846106Z --- PASS: TestHotfixTagsForBase/rc_base_matches_its_dotted_hotfix_tags_only (0.00s) -2026-07-05T01:36:34.9846751Z --- PASS: TestHotfixTagsForBase/no_hotfix_tags_yields_empty (0.00s) -2026-07-05T01:36:34.9847408Z --- PASS: TestHotfixTagsForBase/hotfix_base_version_normalizes_to_its_rc_base (0.00s) -2026-07-05T01:36:34.9847999Z --- PASS: TestHotfixTagsForBase/unparseable_base_yields_empty (0.00s) -2026-07-05T01:36:34.9848381Z === RUN TestPlan_Integration_FullFlow -2026-07-05T01:36:34.9848686Z --- PASS: TestPlan_Integration_FullFlow (0.04s) -2026-07-05T01:36:34.9849028Z === RUN TestPlan_Integration_DryRunMutatesNothing -2026-07-05T01:36:34.9849401Z --- PASS: TestPlan_Integration_DryRunMutatesNothing (0.04s) -2026-07-05T01:36:34.9849752Z === RUN TestPlan_RejectsNonTrunkCommit -2026-07-05T01:36:34.9850274Z --- PASS: TestPlan_RejectsNonTrunkCommit (0.04s) -2026-07-05T01:36:34.9850750Z === RUN TestPlan_RejectsFirstEnv -2026-07-05T01:36:34.9851051Z --- PASS: TestPlan_RejectsFirstEnv (0.03s) -2026-07-05T01:36:34.9851343Z === RUN TestPlan_RejectsUnknownEnv -2026-07-05T01:36:34.9851635Z --- PASS: TestPlan_RejectsUnknownEnv (0.03s) -2026-07-05T01:36:34.9851956Z === RUN TestPlan_NoOpWhenFixAlreadyInTarget -2026-07-05T01:36:34.9852402Z --- PASS: TestPlan_NoOpWhenFixAlreadyInTarget (0.04s) -2026-07-05T01:36:34.9852969Z === RUN TestPlan_CreatesEnvBranchAtStateSHA -2026-07-05T01:36:34.9853302Z --- PASS: TestPlan_CreatesEnvBranchAtStateSHA (0.04s) -2026-07-05T01:36:34.9853624Z === RUN TestPlan_DryRunMutatesNothing -2026-07-05T01:36:34.9853927Z --- PASS: TestPlan_DryRunMutatesNothing (0.04s) -2026-07-05T01:36:34.9854343Z === RUN TestPlan_ExistingBranchTipMismatch_FailsClosedWithoutRealChecker -2026-07-05T01:36:34.9854886Z --- PASS: TestPlan_ExistingBranchTipMismatch_FailsClosedWithoutRealChecker (0.05s) -2026-07-05T01:36:34.9855393Z === RUN TestPlan_ExistingBranchTipMatch_OK -2026-07-05T01:36:34.9855786Z --- PASS: TestPlan_ExistingBranchTipMatch_OK (0.04s) -2026-07-05T01:36:34.9856145Z === RUN TestPlan_SingleFlight_OpenPRBlocks -2026-07-05T01:36:34.9856478Z --- PASS: TestPlan_SingleFlight_OpenPRBlocks (0.04s) -2026-07-05T01:36:34.9856808Z === RUN TestPlan_SingleFlight_NoOpenPRAllows -2026-07-05T01:36:34.9857152Z --- PASS: TestPlan_SingleFlight_NoOpenPRAllows (0.04s) -2026-07-05T01:36:34.9857481Z === RUN TestPlan_ProdTargetAllowed -2026-07-05T01:36:34.9857783Z --- PASS: TestPlan_ProdTargetAllowed (0.04s) -2026-07-05T01:36:34.9858155Z === RUN TestPlan_VersionCandidateAndProtectionSuggestions -2026-07-05T01:36:34.9858658Z --- PASS: TestPlan_VersionCandidateAndProtectionSuggestions (0.04s) -2026-07-05T01:36:34.9859260Z === RUN TestPlan_JSONOutputGolden -2026-07-05T01:36:34.9859557Z --- PASS: TestPlan_JSONOutputGolden (0.05s) -2026-07-05T01:36:34.9859879Z === RUN TestRestPRChecker_MatchingPRReturned -2026-07-05T01:36:34.9860470Z --- PASS: TestRestPRChecker_MatchingPRReturned (0.00s) -2026-07-05T01:36:34.9860843Z === RUN TestRestPRChecker_WrongBaseBranchFiltered -2026-07-05T01:36:34.9861412Z --- PASS: TestRestPRChecker_WrongBaseBranchFiltered (0.00s) -2026-07-05T01:36:34.9861787Z === RUN TestRestPRChecker_MissingLabelFiltered -2026-07-05T01:36:34.9862145Z --- PASS: TestRestPRChecker_MissingLabelFiltered (0.00s) -2026-07-05T01:36:34.9862506Z === RUN TestRestPRChecker_PaginatedMatchOnPageTwo -2026-07-05T01:36:34.9862871Z --- PASS: TestRestPRChecker_PaginatedMatchOnPageTwo (0.00s) -2026-07-05T01:36:34.9863249Z === RUN TestRestPRChecker_NonOKResponseReturnsError -2026-07-05T01:36:34.9863637Z --- PASS: TestRestPRChecker_NonOKResponseReturnsError (0.00s) -2026-07-05T01:36:34.9864017Z === RUN TestRestPRChecker_ConflictLabelPRReturned -2026-07-05T01:36:34.9864374Z --- PASS: TestRestPRChecker_ConflictLabelPRReturned (0.00s) -2026-07-05T01:36:34.9864724Z === RUN TestNextPageURL_ExtractsNext -2026-07-05T01:36:34.9865028Z --- PASS: TestNextPageURL_ExtractsNext (0.00s) -2026-07-05T01:36:34.9865365Z === RUN TestNextPageURL_EmptyLinkReturnsEmpty -2026-07-05T01:36:34.9865726Z --- PASS: TestNextPageURL_EmptyLinkReturnsEmpty (0.00s) -2026-07-05T01:36:34.9866070Z === RUN TestNextPageURL_NoNextReturnsEmpty -2026-07-05T01:36:34.9866409Z --- PASS: TestNextPageURL_NoNextReturnsEmpty (0.00s) -2026-07-05T01:36:34.9866797Z === RUN TestReconcileBranch_OrphanNotDivergedCheckedResets -2026-07-05T01:36:34.9867240Z --- PASS: TestReconcileBranch_OrphanNotDivergedCheckedResets (0.00s) -2026-07-05T01:36:34.9867665Z === RUN TestReconcileBranch_OrphanDryRunDoesNotReset -2026-07-05T01:36:34.9868053Z --- PASS: TestReconcileBranch_OrphanDryRunDoesNotReset (0.00s) -2026-07-05T01:36:34.9868501Z === RUN TestReconcileBranch_NotCheckedFailsClosedNoReset -2026-07-05T01:36:34.9868926Z --- PASS: TestReconcileBranch_NotCheckedFailsClosedNoReset (0.00s) -2026-07-05T01:36:34.9869360Z === RUN TestReconcileBranch_DivergedFailsClosedNoReset -2026-07-05T01:36:34.9869911Z --- PASS: TestReconcileBranch_DivergedFailsClosedNoReset (0.00s) -2026-07-05T01:36:34.9870634Z === RUN TestReconcileBranch_TipMatchesBaseUntouched -2026-07-05T01:36:34.9871173Z --- PASS: TestReconcileBranch_TipMatchesBaseUntouched (0.00s) -2026-07-05T01:36:34.9871680Z === RUN TestReconcileBranch_SelfHealReportsResetError -2026-07-05T01:36:34.9872079Z --- PASS: TestReconcileBranch_SelfHealReportsResetError (0.00s) -2026-07-05T01:36:34.9872509Z === RUN TestVerifyRemoteEnvTip_OrphanNotDivergedCheckedResets -2026-07-05T01:36:34.9873086Z --- PASS: TestVerifyRemoteEnvTip_OrphanNotDivergedCheckedResets (0.00s) -2026-07-05T01:36:34.9873578Z === RUN TestVerifyRemoteEnvTip_NotCheckedFailsClosedNoReset -2026-07-05T01:36:34.9874032Z --- PASS: TestVerifyRemoteEnvTip_NotCheckedFailsClosedNoReset (0.00s) -2026-07-05T01:36:34.9874477Z === RUN TestVerifyRemoteEnvTip_DivergedFailsClosedNoReset -2026-07-05T01:36:34.9874911Z --- PASS: TestVerifyRemoteEnvTip_DivergedFailsClosedNoReset (0.00s) -2026-07-05T01:36:34.9875322Z === RUN TestVerifyRemoteEnvTip_AbsentRemoteIsClean -2026-07-05T01:36:34.9875795Z --- PASS: TestVerifyRemoteEnvTip_AbsentRemoteIsClean (0.00s) -2026-07-05T01:36:34.9876490Z === RUN TestPlanChain_OrphanRemoteTipSelfHealsWithRealChecker -2026-07-05T01:36:34.9876975Z --- PASS: TestPlanChain_OrphanRemoteTipSelfHealsWithRealChecker (0.05s) -2026-07-05T01:36:34.9877438Z === RUN TestPlanChain_OrphanRemoteTipNoopCheckerFailsClosed -2026-07-05T01:36:34.9877883Z --- PASS: TestPlanChain_OrphanRemoteTipNoopCheckerFailsClosed (0.05s) -2026-07-05T01:36:34.9878291Z === RUN TestPlanChain_AbortsOnOpenConflictPR -2026-07-05T01:36:34.9878644Z --- PASS: TestPlanChain_AbortsOnOpenConflictPR (0.05s) -2026-07-05T01:36:34.9878991Z === RUN TestPlanChain_AbortsOnOpenHotfixPR -2026-07-05T01:36:34.9879325Z --- PASS: TestPlanChain_AbortsOnOpenHotfixPR (0.05s) -2026-07-05T01:36:34.9879617Z PASS -2026-07-05T01:36:34.9879829Z coverage: 73.6% of statements -2026-07-05T01:36:34.9880458Z ok github.com/stablekernel/cascade/internal/hotfix 3.235s coverage: 73.6% of statements -2026-07-05T01:36:34.9880927Z === RUN TestResolveEnvs_TopologyPreset -2026-07-05T01:36:34.9881438Z === RUN TestResolveEnvs_TopologyPreset/no-env -2026-07-05T01:36:34.9881778Z === RUN TestResolveEnvs_TopologyPreset/two-env -2026-07-05T01:36:34.9882115Z === RUN TestResolveEnvs_TopologyPreset/three-env -2026-07-05T01:36:34.9882455Z === RUN TestResolveEnvs_TopologyPreset/four-env -2026-07-05T01:36:34.9882790Z --- PASS: TestResolveEnvs_TopologyPreset (0.00s) -2026-07-05T01:36:34.9883206Z --- PASS: TestResolveEnvs_TopologyPreset/no-env (0.00s) -2026-07-05T01:36:34.9883657Z --- PASS: TestResolveEnvs_TopologyPreset/two-env (0.00s) -2026-07-05T01:36:34.9884101Z --- PASS: TestResolveEnvs_TopologyPreset/three-env (0.00s) -2026-07-05T01:36:34.9884548Z --- PASS: TestResolveEnvs_TopologyPreset/four-env (0.00s) -2026-07-05T01:36:34.9884895Z === RUN TestResolveEnvs_DefaultsToTwoEnv -2026-07-05T01:36:34.9885221Z --- PASS: TestResolveEnvs_DefaultsToTwoEnv (0.00s) -2026-07-05T01:36:34.9885541Z === RUN TestResolveEnvs_CustomList -2026-07-05T01:36:34.9885838Z --- PASS: TestResolveEnvs_CustomList (0.00s) -2026-07-05T01:36:34.9886192Z === RUN TestResolveEnvs_EnvsOverridesTopology -2026-07-05T01:36:34.9886648Z --- PASS: TestResolveEnvs_EnvsOverridesTopology (0.00s) -2026-07-05T01:36:34.9887058Z === RUN TestResolveEnvs_UnknownTopology -2026-07-05T01:36:34.9887388Z --- PASS: TestResolveEnvs_UnknownTopology (0.00s) -2026-07-05T01:36:34.9887710Z === RUN TestResolveEnvs_EmptyEnvsValue -2026-07-05T01:36:34.9888120Z --- PASS: TestResolveEnvs_EmptyEnvsValue (0.00s) -2026-07-05T01:36:34.9888536Z === RUN TestResolveName_DefaultsToDirBase -2026-07-05T01:36:34.9888867Z --- PASS: TestResolveName_DefaultsToDirBase (0.00s) -2026-07-05T01:36:34.9889191Z === RUN TestResolveName_ExplicitWins -2026-07-05T01:36:34.9889493Z --- PASS: TestResolveName_ExplicitWins (0.00s) -2026-07-05T01:36:34.9889810Z === RUN TestRun_SuccessWritesValidScaffold -2026-07-05T01:36:34.9890444Z --- PASS: TestRun_SuccessWritesValidScaffold (0.03s) -2026-07-05T01:36:34.9890772Z === RUN TestRun_NoEnvOmitsDeployStub -2026-07-05T01:36:34.9891241Z --- PASS: TestRun_NoEnvOmitsDeployStub (0.01s) -2026-07-05T01:36:34.9891571Z === RUN TestRun_RefusesOnExistingWithoutForce -2026-07-05T01:36:34.9891913Z --- PASS: TestRun_RefusesOnExistingWithoutForce (0.02s) -2026-07-05T01:36:34.9892229Z === RUN TestRun_ForceOverwrites -2026-07-05T01:36:34.9892510Z --- PASS: TestRun_ForceOverwrites (0.02s) -2026-07-05T01:36:34.9892800Z === RUN TestRun_DryRunWritesNothing -2026-07-05T01:36:34.9893200Z --- PASS: TestRun_DryRunWritesNothing (0.02s) -2026-07-05T01:36:34.9893546Z === RUN TestRun_CustomEnvsListedAndReleaseStageLast -2026-07-05T01:36:34.9894173Z --- PASS: TestRun_CustomEnvsListedAndReleaseStageLast (0.02s) -2026-07-05T01:36:34.9894531Z === RUN TestRun_CLIVersionOverride -2026-07-05T01:36:34.9894820Z --- PASS: TestRun_CLIVersionOverride (0.02s) -2026-07-05T01:36:34.9895144Z === RUN TestRun_AllTopologiesOrderedManifestEnvs -2026-07-05T01:36:34.9895520Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/no-env -2026-07-05T01:36:34.9895918Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/two-env -2026-07-05T01:36:34.9896316Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/three-env -2026-07-05T01:36:34.9896707Z === RUN TestRun_AllTopologiesOrderedManifestEnvs/four-env -2026-07-05T01:36:34.9897095Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs (0.11s) -2026-07-05T01:36:34.9897568Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/no-env (0.01s) -2026-07-05T01:36:34.9898086Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/two-env (0.03s) -2026-07-05T01:36:34.9898605Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/three-env (0.03s) -2026-07-05T01:36:34.9899134Z --- PASS: TestRun_AllTopologiesOrderedManifestEnvs/four-env (0.03s) -2026-07-05T01:36:34.9899514Z === RUN TestRun_DirLandsFilesInTargetDir -2026-07-05T01:36:34.9899834Z --- PASS: TestRun_DirLandsFilesInTargetDir (0.02s) -2026-07-05T01:36:34.9900341Z === RUN TestRun_NameWovenIntoStubs -2026-07-05T01:36:34.9900633Z === RUN TestRun_NameWovenIntoStubs/explicit -2026-07-05T01:36:34.9900981Z === RUN TestRun_NameWovenIntoStubs/defaults-to-dir-base -2026-07-05T01:36:34.9901482Z --- PASS: TestRun_NameWovenIntoStubs (0.04s) -2026-07-05T01:36:34.9901871Z --- PASS: TestRun_NameWovenIntoStubs/explicit (0.02s) -2026-07-05T01:36:34.9902318Z --- PASS: TestRun_NameWovenIntoStubs/defaults-to-dir-base (0.02s) -2026-07-05T01:36:34.9902696Z === RUN TestRun_ScaffoldFailureWritesNothing -2026-07-05T01:36:34.9903040Z --- PASS: TestRun_ScaffoldFailureWritesNothing (0.00s) -2026-07-05T01:36:34.9903485Z === RUN TestVerifyClean_NoEnv -2026-07-05T01:36:34.9903771Z --- PASS: TestVerifyClean_NoEnv (0.02s) -2026-07-05T01:36:34.9904053Z === RUN TestVerifyClean_FourEnv -2026-07-05T01:36:34.9904328Z --- PASS: TestVerifyClean_FourEnv (0.05s) -2026-07-05T01:36:34.9904586Z PASS -2026-07-05T01:36:34.9904886Z coverage: 92.6% of statements -2026-07-05T01:36:34.9905380Z ok github.com/stablekernel/cascade/internal/initcmd 1.373s coverage: 92.6% of statements -2026-07-05T01:36:34.9905824Z === RUN TestLevelFiltering -2026-07-05T01:36:34.9906112Z === RUN TestLevelFiltering/info_at_info_level -2026-07-05T01:36:34.9906448Z === RUN TestLevelFiltering/debug_at_info_level -2026-07-05T01:36:34.9906764Z === RUN TestLevelFiltering/trace_at_info_level -2026-07-05T01:36:34.9907072Z === RUN TestLevelFiltering/info_at_debug_level -2026-07-05T01:36:34.9907496Z === RUN TestLevelFiltering/debug_at_debug_level -2026-07-05T01:36:34.9907816Z === RUN TestLevelFiltering/trace_at_debug_level -2026-07-05T01:36:34.9908126Z === RUN TestLevelFiltering/info_at_trace_level -2026-07-05T01:36:34.9908443Z === RUN TestLevelFiltering/debug_at_trace_level -2026-07-05T01:36:34.9908761Z === RUN TestLevelFiltering/trace_at_trace_level -2026-07-05T01:36:34.9909062Z --- PASS: TestLevelFiltering (0.00s) -2026-07-05T01:36:34.9909440Z --- PASS: TestLevelFiltering/info_at_info_level (0.00s) -2026-07-05T01:36:34.9909867Z --- PASS: TestLevelFiltering/debug_at_info_level (0.00s) -2026-07-05T01:36:34.9910650Z --- PASS: TestLevelFiltering/trace_at_info_level (0.00s) -2026-07-05T01:36:34.9911298Z --- PASS: TestLevelFiltering/info_at_debug_level (0.00s) -2026-07-05T01:36:34.9911728Z --- PASS: TestLevelFiltering/debug_at_debug_level (0.00s) -2026-07-05T01:36:34.9912162Z --- PASS: TestLevelFiltering/trace_at_debug_level (0.00s) -2026-07-05T01:36:34.9912590Z --- PASS: TestLevelFiltering/info_at_trace_level (0.00s) -2026-07-05T01:36:34.9913025Z --- PASS: TestLevelFiltering/debug_at_trace_level (0.00s) -2026-07-05T01:36:34.9913451Z --- PASS: TestLevelFiltering/trace_at_trace_level (0.00s) -2026-07-05T01:36:34.9913772Z === RUN TestParseLevel -2026-07-05T01:36:34.9914020Z === RUN TestParseLevel/info -2026-07-05T01:36:34.9914268Z === RUN TestParseLevel/INFO -2026-07-05T01:36:34.9914520Z === RUN TestParseLevel/debug -2026-07-05T01:36:34.9914774Z === RUN TestParseLevel/DEBUG -2026-07-05T01:36:34.9915017Z === RUN TestParseLevel/trace -2026-07-05T01:36:34.9915257Z === RUN TestParseLevel/TRACE -2026-07-05T01:36:34.9915507Z === RUN TestParseLevel/unknown -2026-07-05T01:36:34.9915774Z === RUN TestParseLevel/#00 -2026-07-05T01:36:34.9916023Z --- PASS: TestParseLevel (0.00s) -2026-07-05T01:36:34.9916333Z --- PASS: TestParseLevel/info (0.00s) -2026-07-05T01:36:34.9916668Z --- PASS: TestParseLevel/INFO (0.00s) -2026-07-05T01:36:34.9916991Z --- PASS: TestParseLevel/debug (0.00s) -2026-07-05T01:36:34.9917312Z --- PASS: TestParseLevel/DEBUG (0.00s) -2026-07-05T01:36:34.9917628Z --- PASS: TestParseLevel/trace (0.00s) -2026-07-05T01:36:34.9917946Z --- PASS: TestParseLevel/TRACE (0.00s) -2026-07-05T01:36:34.9918274Z --- PASS: TestParseLevel/unknown (0.00s) -2026-07-05T01:36:34.9918603Z --- PASS: TestParseLevel/#00 (0.00s) -2026-07-05T01:36:34.9918879Z === RUN TestLogFormatting -2026-07-05T01:36:34.9919145Z --- PASS: TestLogFormatting (0.00s) -2026-07-05T01:36:34.9919415Z === RUN TestWarnAndError -2026-07-05T01:36:34.9919668Z --- PASS: TestWarnAndError (0.00s) -2026-07-05T01:36:34.9919934Z === RUN TestDryRunPrefix -2026-07-05T01:36:34.9920383Z --- PASS: TestDryRunPrefix (0.00s) -2026-07-05T01:36:34.9920792Z === RUN TestDryRunPrefixWithColors -2026-07-05T01:36:34.9921098Z --- PASS: TestDryRunPrefixWithColors (0.00s) -2026-07-05T01:36:34.9921394Z === RUN TestEnableTrace -2026-07-05T01:36:34.9921640Z --- PASS: TestEnableTrace (0.00s) -2026-07-05T01:36:34.9921895Z === RUN TestSection -2026-07-05T01:36:34.9922124Z --- PASS: TestSection (0.00s) -2026-07-05T01:36:34.9922393Z === RUN TestSectionNotShownAtInfoLevel -2026-07-05T01:36:34.9922714Z --- PASS: TestSectionNotShownAtInfoLevel (0.00s) -2026-07-05T01:36:34.9923027Z === RUN TestSectionWithColors -2026-07-05T01:36:34.9923300Z --- PASS: TestSectionWithColors (0.00s) -2026-07-05T01:36:34.9923588Z === RUN TestLogWithColors -2026-07-05T01:36:34.9923835Z --- PASS: TestLogWithColors (0.00s) -2026-07-05T01:36:34.9924077Z PASS -2026-07-05T01:36:34.9924281Z coverage: 100.0% of statements -2026-07-05T01:36:34.9924693Z ok github.com/stablekernel/cascade/internal/log 1.015s coverage: 100.0% of statements -2026-07-05T01:36:34.9925207Z === RUN TestNoChangeReDispatch_ProvesUnfixedBugAndFix -2026-07-05T01:36:34.9926354Z [DEBUG] Loading config from /tmp/TestNoChangeReDispatch_ProvesUnfixedBugAndFix3054102833/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:34.9927024Z [DEBUG] Environments: [] -2026-07-05T01:36:34.9927680Z [DEBUG] Base directory: /tmp/TestNoChangeReDispatch_ProvesUnfixedBugAndFix3054102833/001 -2026-07-05T01:36:34.9928473Z nochange_proof_test.go:75: OBSERVED headSHA = b8708df584106fa33beffc4b24c97587a2d93c77 -2026-07-05T01:36:34.9929171Z nochange_proof_test.go:76: OBSERVED HEAD~1 = 5f50682e43ec1db279736e707710702e822cf76f -2026-07-05T01:36:34.9929844Z nochange_proof_test.go:77: OBSERVED envState.SHA = b8708df584106fa33beffc4b24c97587a2d93c77 -2026-07-05T01:36:34.9931056Z nochange_proof_test.go:84: UNFIXED base=5f50682e43ec1db279736e707710702e822cf76f detectChanges(base..HEAD)=true -2026-07-05T01:36:34.9932145Z nochange_proof_test.go:92: PROVEN: unfixed code RE-RUNS the build on a genuine no-change dispatch (RunBuilds[app]=true) -2026-07-05T01:36:34.9932946Z ───� Setup Phase ───� -2026-07-05T01:36:34.9933370Z [INFO] Head SHA: b8708df584106fa33beffc4b24c97587a2d93c77 -2026-07-05T01:36:34.9934530Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} -2026-07-05T01:36:34.9935605Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] -2026-07-05T01:36:34.9936102Z [DEBUG] Build app: needs_run=false (base=b8708df) -2026-07-05T01:36:34.9936624Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = -2026-07-05T01:36:34.9937123Z [DEBUG] Current prerelease version: v0.1.0-rc.0 -2026-07-05T01:36:34.9937494Z [DEBUG] Next env version: (SHA: ) -2026-07-05T01:36:34.9937927Z [DEBUG] Found 0 conventional commits for version calculation -2026-07-05T01:36:34.9938363Z [INFO] Calculated version: v0.1.0-rc.1 -2026-07-05T01:36:34.9938718Z [DEBUG] Changelog base SHA: 5f50682 -2026-07-05T01:36:34.9939040Z [DEBUG] Previous tag: -2026-07-05T01:36:34.9939940Z nochange_proof_test.go:101: FIXED base=b8708df584106fa33beffc4b24c97587a2d93c77 RunBuilds[app]=false -2026-07-05T01:36:34.9941300Z nochange_proof_test.go:109: PROVEN: fixed code SKIPS the build on a genuine no-change dispatch (RunBuilds[app]=false) -2026-07-05T01:36:34.9942177Z --- PASS: TestNoChangeReDispatch_ProvesUnfixedBugAndFix (0.04s) -2026-07-05T01:36:34.9942763Z === RUN TestReconcile_StateCommitAtHead_UnfixedAlsoSkips -2026-07-05T01:36:34.9943996Z [DEBUG] Loading config from /tmp/TestReconcile_StateCommitAtHead_UnfixedAlsoSkips2101060474/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:34.9945061Z [DEBUG] Environments: [] -2026-07-05T01:36:34.9945706Z [DEBUG] Base directory: /tmp/TestReconcile_StateCommitAtHead_UnfixedAlsoSkips2101060474/001 -2026-07-05T01:36:34.9946750Z nochange_reconcile_test.go:47: OBSERVED stateHead (HEAD) = a9613ce6e097c064b9b62b1b5cdfe97510c1421d -2026-07-05T01:36:34.9947489Z nochange_reconcile_test.go:48: OBSERVED HEAD~1 (srcHead) = b8708df584106fa33beffc4b24c97587a2d93c77 -2026-07-05T01:36:34.9948183Z nochange_reconcile_test.go:52: OBSERVED diff(HEAD~1..HEAD) files = ".github/manifest.yaml" -2026-07-05T01:36:34.9949008Z nochange_reconcile_test.go:57: UNFIXED base=b8708df584106fa33beffc4b24c97587a2d93c77 detectChanges(base..stateHead)=false -2026-07-05T01:36:34.9950508Z nochange_reconcile_test.go:65: RECONCILED: with a state commit at HEAD, the UNFIXED code ALSO skips (diff is manifest-only). The bug is masked whenever finalize pushed a state commit before re-dispatch. -2026-07-05T01:36:34.9951370Z --- PASS: TestReconcile_StateCommitAtHead_UnfixedAlsoSkips (0.04s) -2026-07-05T01:36:34.9951774Z === RUN TestSetup_NoChangeReDispatch_SkipsBuild -2026-07-05T01:36:34.9952494Z [DEBUG] Loading config from /tmp/TestSetup_NoChangeReDispatch_SkipsBuild3491086626/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:34.9953080Z [DEBUG] Environments: [] -2026-07-05T01:36:34.9953570Z [DEBUG] Base directory: /tmp/TestSetup_NoChangeReDispatch_SkipsBuild3491086626/001 -2026-07-05T01:36:34.9954057Z ───� Setup Phase ───� -2026-07-05T01:36:34.9954449Z [INFO] Head SHA: b8708df584106fa33beffc4b24c97587a2d93c77 -2026-07-05T01:36:34.9955576Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} -2026-07-05T01:36:34.9956624Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] -2026-07-05T01:36:34.9957116Z [DEBUG] Build app: needs_run=false (base=b8708df) -2026-07-05T01:36:34.9957771Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = -2026-07-05T01:36:34.9958290Z [DEBUG] Current prerelease version: v0.1.0-rc.0 -2026-07-05T01:36:34.9958655Z [DEBUG] Next env version: (SHA: ) -2026-07-05T01:36:34.9959075Z [DEBUG] Found 0 conventional commits for version calculation -2026-07-05T01:36:34.9959498Z [INFO] Calculated version: v0.1.0-rc.1 -2026-07-05T01:36:34.9959852Z [DEBUG] Changelog base SHA: 5f50682 -2026-07-05T01:36:34.9960439Z [DEBUG] Previous tag: -2026-07-05T01:36:34.9960783Z --- PASS: TestSetup_NoChangeReDispatch_SkipsBuild (0.04s) -2026-07-05T01:36:34.9961144Z === RUN TestSetup_NewCommit_RunsBuild -2026-07-05T01:36:34.9961780Z [DEBUG] Loading config from /tmp/TestSetup_NewCommit_RunsBuild200608070/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:34.9962333Z [DEBUG] Environments: [] -2026-07-05T01:36:34.9962778Z [DEBUG] Base directory: /tmp/TestSetup_NewCommit_RunsBuild200608070/001 -2026-07-05T01:36:34.9963211Z ───� Setup Phase ───� -2026-07-05T01:36:34.9963599Z [INFO] Head SHA: 7196b63cc2916f1153f3fc113a5fd7daf8efc91e -2026-07-05T01:36:34.9964730Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} -2026-07-05T01:36:34.9965807Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] -2026-07-05T01:36:34.9966296Z [DEBUG] Build app: needs_run=true (base=b8708df) -2026-07-05T01:36:34.9966811Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = -2026-07-05T01:36:34.9967312Z [DEBUG] Current prerelease version: v0.1.0-rc.0 -2026-07-05T01:36:34.9967675Z [DEBUG] Next env version: (SHA: ) -2026-07-05T01:36:34.9968098Z [DEBUG] Found 0 conventional commits for version calculation -2026-07-05T01:36:34.9968563Z [INFO] Calculated version: v0.1.0-rc.1 -2026-07-05T01:36:34.9969059Z [DEBUG] Changelog base SHA: 5f50682 -2026-07-05T01:36:34.9969377Z [DEBUG] Previous tag: -2026-07-05T01:36:34.9969664Z --- PASS: TestSetup_NewCommit_RunsBuild (0.05s) -2026-07-05T01:36:34.9970211Z === RUN TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc -2026-07-05T01:36:34.9971023Z [DEBUG] Loading config from /tmp/TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc3168605837/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:34.9971674Z [DEBUG] Environments: [] -2026-07-05T01:36:34.9972215Z [DEBUG] Base directory: /tmp/TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc3168605837/001 -2026-07-05T01:36:34.9972728Z ───� Setup Phase ───� -2026-07-05T01:36:34.9973116Z [INFO] Head SHA: b8708df584106fa33beffc4b24c97587a2d93c77 -2026-07-05T01:36:34.9974261Z [DEBUG] Current prerelease state: &{SHA:b8708df584106fa33beffc4b24c97587a2d93c77 Version:v0.1.0-rc.0 CommittedAt: CommittedBy: Builds:map[] Deploys:map[] External:map[] Ref: BaseSHA: Patches:[] Previous:[] Components:map[]} -2026-07-05T01:36:34.9975465Z [DEBUG] Base SHAs: map[build_app:b8708df584106fa33beffc4b24c97587a2d93c77] -2026-07-05T01:36:34.9976183Z [DEBUG] Build app: needs_run=false (base=b8708df) -2026-07-05T01:36:34.9976920Z [DEBUG] Using latest published release as base: v0.5.1 (SHA: b8708df) -2026-07-05T01:36:34.9977680Z [DEBUG] No-environment setup: current version = v0.1.0-rc.0, base version = v0.5.1 -2026-07-05T01:36:34.9978207Z [DEBUG] Current prerelease version: v0.1.0-rc.0 -2026-07-05T01:36:34.9978604Z [DEBUG] Next env version: v0.5.1 (SHA: b8708df) -2026-07-05T01:36:34.9979036Z [DEBUG] Found 0 conventional commits for version calculation -2026-07-05T01:36:34.9979463Z [INFO] Calculated version: v0.5.1-rc.0 -2026-07-05T01:36:34.9979820Z [DEBUG] Changelog base SHA: 5f50682 -2026-07-05T01:36:34.9980414Z [DEBUG] Previous tag: -2026-07-05T01:36:34.9980961Z --- PASS: TestSetup_DryrunTagPresent_DoesNotBreakVersionCalc (0.04s) -2026-07-05T01:36:34.9981364Z === RUN TestFinalize_RecordsPerBuildSHA -2026-07-05T01:36:34.9982004Z [DEBUG] Loading config from /tmp/TestFinalize_RecordsPerBuildSHA161203975/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:34.9982572Z [DEBUG] Environments: [] -2026-07-05T01:36:34.9983034Z [DEBUG] Base directory: /tmp/TestFinalize_RecordsPerBuildSHA161203975/001 -2026-07-05T01:36:34.9983480Z ───� Finalize Phase ───� -2026-07-05T01:36:34.9983903Z [INFO] Updated prerelease state: SHA=b8708df, Version=v0.1.0-rc.0 -2026-07-05T01:36:34.9984358Z [INFO] Updated prerelease.builds.app state -2026-07-05T01:36:34.9984977Z [DEBUG] Wrote updated config to /tmp/TestFinalize_RecordsPerBuildSHA161203975/001/.github/manifest.yaml -2026-07-05T01:36:34.9985792Z [main 69c4946] chore: update state for prerelease [skip ci] -2026-07-05T01:36:34.9986171Z 1 file changed, 21 insertions(+) -2026-07-05T01:36:34.9986482Z create mode 100644 .github/manifest.yaml -2026-07-05T01:36:34.9986828Z To /tmp/TestFinalize_RecordsPerBuildSHA161203975/002 -2026-07-05T01:36:34.9987176Z b8708df..69c4946 main -> main -2026-07-05T01:36:34.9987522Z [INFO] Committed and pushed state changes -2026-07-05T01:36:34.9987867Z --- PASS: TestFinalize_RecordsPerBuildSHA (0.08s) -2026-07-05T01:36:34.9988185Z === RUN TestNewCommand_Structure -2026-07-05T01:36:34.9988474Z --- PASS: TestNewCommand_Structure (0.00s) -2026-07-05T01:36:34.9988836Z === RUN TestNewCommand_PersistentPreRunE_AutoDetectsConfig -2026-07-05T01:36:34.9989267Z --- PASS: TestNewCommand_PersistentPreRunE_AutoDetectsConfig (0.00s) -2026-07-05T01:36:34.9989648Z === RUN TestNewSetupCommand_Structure -2026-07-05T01:36:34.9989959Z --- PASS: TestNewSetupCommand_Structure (0.00s) -2026-07-05T01:36:34.9990561Z === RUN TestNewFinalizeCommand_Structure -2026-07-05T01:36:34.9990887Z --- PASS: TestNewFinalizeCommand_Structure (0.00s) -2026-07-05T01:36:34.9991200Z === RUN TestRunSetup_InitError -2026-07-05T01:36:34.9991708Z ───� Orchestrate Setup ───� -2026-07-05T01:36:34.9992027Z [INFO] Environment: dev -2026-07-05T01:36:34.9992409Z [DEBUG] Config path: /nonexistent/path/manifest.yaml -2026-07-05T01:36:34.9992922Z [DEBUG] Loading config from /nonexistent/path/manifest.yaml (key: ci) -2026-07-05T01:36:34.9993333Z --- PASS: TestRunSetup_InitError (0.00s) -2026-07-05T01:36:34.9993633Z === RUN TestRunFinalize_InitError -2026-07-05T01:36:34.9994164Z ───� Orchestrate Finalize ───� -2026-07-05T01:36:34.9994620Z [INFO] Environment: dev -2026-07-05T01:36:34.9995143Z [DEBUG] Config path: /nonexistent/path/manifest.yaml -2026-07-05T01:36:34.9995899Z [DEBUG] Loading config from /nonexistent/path/manifest.yaml (key: ci) -2026-07-05T01:36:34.9996521Z --- PASS: TestRunFinalize_InitError (0.00s) -2026-07-05T01:36:34.9997077Z === RUN TestNewOrchestrator_NoEnvUsesDefaultStateKey -2026-07-05T01:36:34.9998346Z [DEBUG] Loading config from /tmp/TestNewOrchestrator_NoEnvUsesDefaultStateKey2788723090/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:34.9999738Z [DEBUG] No environment specified and no environments configured - using state key: prerelease -2026-07-05T01:36:35.0000765Z [DEBUG] Environments: [] -2026-07-05T01:36:35.0001619Z [DEBUG] Base directory: /tmp/TestNewOrchestrator_NoEnvUsesDefaultStateKey2788723090/001 -2026-07-05T01:36:35.0002512Z --- PASS: TestNewOrchestrator_NoEnvUsesDefaultStateKey (0.00s) -2026-07-05T01:36:35.0003150Z === RUN TestNewOrchestrator_MissingConfigSection -2026-07-05T01:36:35.0004284Z [DEBUG] Loading config from /tmp/TestNewOrchestrator_MissingConfigSection2106015813/001/manifest.yaml (key: ci) -2026-07-05T01:36:35.0005284Z --- PASS: TestNewOrchestrator_MissingConfigSection (0.00s) -2026-07-05T01:36:35.0005849Z === RUN TestCalculateBaseSHAs_Priorities -2026-07-05T01:36:35.0006371Z --- PASS: TestCalculateBaseSHAs_Priorities (0.03s) -2026-07-05T01:36:35.0006886Z === RUN TestDetectChanges -2026-07-05T01:36:35.0007857Z [WARN] Failed to detect changes: exit status 128 - assuming changes needed -2026-07-05T01:36:35.0008561Z --- PASS: TestDetectChanges (0.03s) -2026-07-05T01:36:35.0009079Z === RUN TestCalculateVersion_EnvironmentNotFound -2026-07-05T01:36:35.0009711Z --- PASS: TestCalculateVersion_EnvironmentNotFound (0.00s) -2026-07-05T01:36:35.0010508Z === RUN TestCalculateVersion_MultiEnv -2026-07-05T01:36:35.0011040Z [DEBUG] Current dev version: v1.0.0-rc.0 -2026-07-05T01:36:35.0011442Z [DEBUG] Next env version: v0.9.0 (SHA: b8708df) -2026-07-05T01:36:35.0011890Z [DEBUG] Found 0 conventional commits for version calculation -2026-07-05T01:36:35.0012276Z --- PASS: TestCalculateVersion_MultiEnv (0.02s) -2026-07-05T01:36:35.0012586Z === RUN TestWriteConfig_ReadError -2026-07-05T01:36:35.0012873Z --- PASS: TestWriteConfig_ReadError (0.00s) -2026-07-05T01:36:35.0013173Z === RUN TestWriteConfig_CustomManifestKey -2026-07-05T01:36:35.0013767Z [DEBUG] Wrote updated config to /tmp/TestWriteConfig_CustomManifestKey3489757259/001/manifest.yaml -2026-07-05T01:36:35.0014321Z --- PASS: TestWriteConfig_CustomManifestKey (0.00s) -2026-07-05T01:36:35.0014658Z === RUN TestCommitAndPush_NoChanges -2026-07-05T01:36:35.0014971Z [DEBUG] No changes to commit -2026-07-05T01:36:35.0015268Z --- PASS: TestCommitAndPush_NoChanges (0.03s) -2026-07-05T01:36:35.0015576Z === RUN TestGitOutput_Error -2026-07-05T01:36:35.0015848Z --- PASS: TestGitOutput_Error (0.02s) -2026-07-05T01:36:35.0016125Z === RUN TestParseResults -2026-07-05T01:36:35.0016386Z === RUN TestParseResults/empty_string -2026-07-05T01:36:35.0016681Z === RUN TestParseResults/single_result -2026-07-05T01:36:35.0016981Z === RUN TestParseResults/multiple_results -2026-07-05T01:36:35.0017338Z === RUN TestParseResults/with_spaces -2026-07-05T01:36:35.0017793Z === RUN TestParseResults/three_results -2026-07-05T01:36:35.0018123Z --- PASS: TestParseResults (0.00s) -2026-07-05T01:36:35.0018494Z --- PASS: TestParseResults/empty_string (0.00s) -2026-07-05T01:36:35.0019099Z --- PASS: TestParseResults/single_result (0.00s) -2026-07-05T01:36:35.0019497Z --- PASS: TestParseResults/multiple_results (0.00s) -2026-07-05T01:36:35.0019883Z --- PASS: TestParseResults/with_spaces (0.00s) -2026-07-05T01:36:35.0020567Z --- PASS: TestParseResults/three_results (0.00s) -2026-07-05T01:36:35.0020862Z === RUN TestSplitTrim -2026-07-05T01:36:35.0021101Z === RUN TestSplitTrim/empty_string -2026-07-05T01:36:35.0021381Z === RUN TestSplitTrim/single_item -2026-07-05T01:36:35.0021669Z === RUN TestSplitTrim/multiple_items -2026-07-05T01:36:35.0021947Z === RUN TestSplitTrim/with_spaces -2026-07-05T01:36:35.0022216Z === RUN TestSplitTrim/colon_separator -2026-07-05T01:36:35.0022492Z --- PASS: TestSplitTrim (0.00s) -2026-07-05T01:36:35.0022819Z --- PASS: TestSplitTrim/empty_string (0.00s) -2026-07-05T01:36:35.0023179Z --- PASS: TestSplitTrim/single_item (0.00s) -2026-07-05T01:36:35.0023554Z --- PASS: TestSplitTrim/multiple_items (0.00s) -2026-07-05T01:36:35.0023928Z --- PASS: TestSplitTrim/with_spaces (0.00s) -2026-07-05T01:36:35.0024288Z --- PASS: TestSplitTrim/colon_separator (0.00s) -2026-07-05T01:36:35.0024583Z === RUN TestMatchGlob -2026-07-05T01:36:35.0024817Z === RUN TestMatchGlob/exact_match -2026-07-05T01:36:35.0025084Z === RUN TestMatchGlob/exact_no_match -2026-07-05T01:36:35.0025376Z === RUN TestMatchGlob/star_extension_root_only -2026-07-05T01:36:35.0025726Z === RUN TestMatchGlob/star_extension_does_not_cross_slash -2026-07-05T01:36:35.0026075Z === RUN TestMatchGlob/star_extension_no_match -2026-07-05T01:36:35.0026368Z === RUN TestMatchGlob/star_prefix -2026-07-05T01:36:35.0026640Z === RUN TestMatchGlob/star_single_segment -2026-07-05T01:36:35.0026975Z === RUN TestMatchGlob/star_single_segment_no_cross_slash -2026-07-05T01:36:35.0027338Z === RUN TestMatchGlob/star_anchored_no_leading_garbage -2026-07-05T01:36:35.0027660Z === RUN TestMatchGlob/star_anchored_match -2026-07-05T01:36:35.0028081Z === RUN TestMatchGlob/double_star -2026-07-05T01:36:35.0028367Z === RUN TestMatchGlob/double_star_nested -2026-07-05T01:36:35.0028671Z === RUN TestMatchGlob/double_star_no_match -2026-07-05T01:36:35.0028977Z === RUN TestMatchGlob/recursive_glob_extension -2026-07-05T01:36:35.0029306Z === RUN TestMatchGlob/recursive_glob_extension_deep -2026-07-05T01:36:35.0029657Z === RUN TestMatchGlob/recursive_glob_extension_no_match -2026-07-05T01:36:35.0030195Z === RUN TestMatchGlob/recursive_glob_mid_pattern -2026-07-05T01:36:35.0030586Z === RUN TestMatchGlob/recursive_glob_mid_pattern_wrong_prefix -2026-07-05T01:36:35.0030935Z === RUN TestMatchGlob/infra_pattern -2026-07-05T01:36:35.0031216Z === RUN TestMatchGlob/go.mod_pattern -2026-07-05T01:36:35.0031496Z === RUN TestMatchGlob/workflow_pattern -2026-07-05T01:36:35.0031775Z --- PASS: TestMatchGlob (0.00s) -2026-07-05T01:36:35.0032090Z --- PASS: TestMatchGlob/exact_match (0.00s) -2026-07-05T01:36:35.0032451Z --- PASS: TestMatchGlob/exact_no_match (0.00s) -2026-07-05T01:36:35.0032873Z --- PASS: TestMatchGlob/star_extension_root_only (0.00s) -2026-07-05T01:36:35.0033351Z --- PASS: TestMatchGlob/star_extension_does_not_cross_slash (0.00s) -2026-07-05T01:36:35.0033820Z --- PASS: TestMatchGlob/star_extension_no_match (0.00s) -2026-07-05T01:36:35.0034196Z --- PASS: TestMatchGlob/star_prefix (0.00s) -2026-07-05T01:36:35.0034565Z --- PASS: TestMatchGlob/star_single_segment (0.00s) -2026-07-05T01:36:35.0035009Z --- PASS: TestMatchGlob/star_single_segment_no_cross_slash (0.00s) -2026-07-05T01:36:35.0035503Z --- PASS: TestMatchGlob/star_anchored_no_leading_garbage (0.00s) -2026-07-05T01:36:35.0035942Z --- PASS: TestMatchGlob/star_anchored_match (0.00s) -2026-07-05T01:36:35.0036314Z --- PASS: TestMatchGlob/double_star (0.00s) -2026-07-05T01:36:35.0036701Z --- PASS: TestMatchGlob/double_star_nested (0.00s) -2026-07-05T01:36:35.0037094Z --- PASS: TestMatchGlob/double_star_no_match (0.00s) -2026-07-05T01:36:35.0037516Z --- PASS: TestMatchGlob/recursive_glob_extension (0.00s) -2026-07-05T01:36:35.0038118Z --- PASS: TestMatchGlob/recursive_glob_extension_deep (0.00s) -2026-07-05T01:36:35.0038626Z --- PASS: TestMatchGlob/recursive_glob_extension_no_match (0.00s) -2026-07-05T01:36:35.0039119Z --- PASS: TestMatchGlob/recursive_glob_mid_pattern (0.00s) -2026-07-05T01:36:35.0039620Z --- PASS: TestMatchGlob/recursive_glob_mid_pattern_wrong_prefix (0.00s) -2026-07-05T01:36:35.0040628Z --- PASS: TestMatchGlob/infra_pattern (0.00s) -2026-07-05T01:36:35.0041014Z --- PASS: TestMatchGlob/go.mod_pattern (0.00s) -2026-07-05T01:36:35.0041397Z --- PASS: TestMatchGlob/workflow_pattern (0.00s) -2026-07-05T01:36:35.0041702Z === RUN TestTruncateSHA -2026-07-05T01:36:35.0041961Z === RUN TestTruncateSHA/abcdef1234567890 -2026-07-05T01:36:35.0042246Z === RUN TestTruncateSHA/abc -2026-07-05T01:36:35.0042499Z === RUN TestTruncateSHA/#00 -2026-07-05T01:36:35.0042756Z === RUN TestTruncateSHA/1234567 -2026-07-05T01:36:35.0043034Z === RUN TestTruncateSHA/12345678 -2026-07-05T01:36:35.0043313Z --- PASS: TestTruncateSHA (0.00s) -2026-07-05T01:36:35.0043660Z --- PASS: TestTruncateSHA/abcdef1234567890 (0.00s) -2026-07-05T01:36:35.0044014Z --- PASS: TestTruncateSHA/abc (0.00s) -2026-07-05T01:36:35.0044336Z --- PASS: TestTruncateSHA/#00 (0.00s) -2026-07-05T01:36:35.0044665Z --- PASS: TestTruncateSHA/1234567 (0.00s) -2026-07-05T01:36:35.0045016Z --- PASS: TestTruncateSHA/12345678 (0.00s) -2026-07-05T01:36:35.0045299Z === RUN TestContains -2026-07-05T01:36:35.0045532Z --- PASS: TestContains (0.00s) -2026-07-05T01:36:35.0045780Z === RUN TestIndexOf -2026-07-05T01:36:35.0046004Z === RUN TestIndexOf/dev -2026-07-05T01:36:35.0046239Z === RUN TestIndexOf/test -2026-07-05T01:36:35.0046473Z === RUN TestIndexOf/uat -2026-07-05T01:36:35.0046707Z === RUN TestIndexOf/prod -2026-07-05T01:36:35.0046948Z === RUN TestIndexOf/staging -2026-07-05T01:36:35.0047202Z === RUN TestIndexOf/#00 -2026-07-05T01:36:35.0047451Z --- PASS: TestIndexOf (0.00s) -2026-07-05T01:36:35.0047903Z --- PASS: TestIndexOf/dev (0.00s) -2026-07-05T01:36:35.0048229Z --- PASS: TestIndexOf/test (0.00s) -2026-07-05T01:36:35.0048561Z --- PASS: TestIndexOf/uat (0.00s) -2026-07-05T01:36:35.0048869Z --- PASS: TestIndexOf/prod (0.00s) -2026-07-05T01:36:35.0049182Z --- PASS: TestIndexOf/staging (0.00s) -2026-07-05T01:36:35.0049503Z --- PASS: TestIndexOf/#00 (0.00s) -2026-07-05T01:36:35.0049771Z === RUN TestNewOrchestrator -2026-07-05T01:36:35.0050675Z [DEBUG] Loading config from /tmp/TestNewOrchestrator2764414671/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:35.0051263Z [DEBUG] Environments: [dev test prod] -2026-07-05T01:36:35.0051727Z [DEBUG] Base directory: /tmp/TestNewOrchestrator2764414671/001 -2026-07-05T01:36:35.0052110Z --- PASS: TestNewOrchestrator (0.00s) -2026-07-05T01:36:35.0052406Z === RUN TestNewOrchestratorInvalidPath -2026-07-05T01:36:35.0052841Z [DEBUG] Loading config from /nonexistent/path/cicd.yaml (key: ) -2026-07-05T01:36:35.0053275Z --- PASS: TestNewOrchestratorInvalidPath (0.00s) -2026-07-05T01:36:35.0053615Z === RUN TestNewOrchestratorInvalidYAML -2026-07-05T01:36:35.0054197Z [DEBUG] Loading config from /tmp/TestNewOrchestratorInvalidYAML2459592650/001/cicd.yaml (key: ) -2026-07-05T01:36:35.0054723Z --- PASS: TestNewOrchestratorInvalidYAML (0.00s) -2026-07-05T01:36:35.0055039Z === RUN TestCalculateChangelogRefs -2026-07-05T01:36:35.0055441Z === RUN TestCalculateChangelogRefs/intermediate_env_uses_next_env's_state -2026-07-05T01:36:35.0056063Z === RUN TestCalculateChangelogRefs/intermediate_env_with_empty_next-env_state_falls_through_to_release -2026-07-05T01:36:35.0056696Z === RUN TestCalculateChangelogRefs/no-env_library_uses_state[release]_when_present -2026-07-05T01:36:35.0057339Z === RUN TestCalculateChangelogRefs/no-env_library_falls_back_to_latest_release_when_state[release]_absent -2026-07-05T01:36:35.0057973Z === RUN TestCalculateChangelogRefs/terminal_env_in_multi-env_uses_state[release] -2026-07-05T01:36:35.0058700Z === RUN TestCalculateChangelogRefs/state[release]_with_empty_SHA_is_treated_as_absent -2026-07-05T01:36:35.0059165Z --- PASS: TestCalculateChangelogRefs (0.00s) -2026-07-05T01:36:35.0059696Z --- PASS: TestCalculateChangelogRefs/intermediate_env_uses_next_env's_state (0.00s) -2026-07-05T01:36:35.0060654Z --- PASS: TestCalculateChangelogRefs/intermediate_env_with_empty_next-env_state_falls_through_to_release (0.00s) -2026-07-05T01:36:35.0061459Z --- PASS: TestCalculateChangelogRefs/no-env_library_uses_state[release]_when_present (0.00s) -2026-07-05T01:36:35.0062269Z --- PASS: TestCalculateChangelogRefs/no-env_library_falls_back_to_latest_release_when_state[release]_absent (0.00s) -2026-07-05T01:36:35.0063052Z --- PASS: TestCalculateChangelogRefs/terminal_env_in_multi-env_uses_state[release] (0.00s) -2026-07-05T01:36:35.0063782Z --- PASS: TestCalculateChangelogRefs/state[release]_with_empty_SHA_is_treated_as_absent (0.00s) -2026-07-05T01:36:35.0064296Z === RUN TestWriteConfig_PreservesFullManifest -2026-07-05T01:36:35.0064996Z [DEBUG] Loading config from /tmp/TestWriteConfig_PreservesFullManifest1061590019/001/.github/manifest.yaml (key: ci) -2026-07-05T01:36:35.0065593Z [DEBUG] Environments: [dev] -2026-07-05T01:36:35.0066085Z [DEBUG] Base directory: /tmp/TestWriteConfig_PreservesFullManifest1061590019/001 -2026-07-05T01:36:35.0066836Z [DEBUG] Wrote updated config to /tmp/TestWriteConfig_PreservesFullManifest1061590019/001/.github/manifest.yaml -2026-07-05T01:36:35.0067408Z --- PASS: TestWriteConfig_PreservesFullManifest (0.00s) -2026-07-05T01:36:35.0067793Z === RUN TestWriteConfig_TopLevelCliVersionSHA_Preserved -2026-07-05T01:36:35.0068204Z --- PASS: TestWriteConfig_TopLevelCliVersionSHA_Preserved (0.00s) -2026-07-05T01:36:35.0068648Z === RUN TestTypedRemarshal_UnmodeledConfig_IsDropped -2026-07-05T01:36:35.0069041Z --- PASS: TestTypedRemarshal_UnmodeledConfig_IsDropped (0.00s) -2026-07-05T01:36:35.0069589Z === RUN TestWriteManifestState_UnmodeledConfig_IsPreserved -2026-07-05T01:36:35.0070191Z --- PASS: TestWriteManifestState_UnmodeledConfig_IsPreserved (0.00s) -2026-07-05T01:36:35.0070547Z PASS -2026-07-05T01:36:35.0070762Z coverage: 77.6% of statements -2026-07-05T01:36:35.0071208Z ok github.com/stablekernel/cascade/internal/orchestrate 1.461s coverage: 77.6% of statements -2026-07-05T01:36:35.0071663Z === RUN TestGitHubOutput -2026-07-05T01:36:35.0071920Z --- PASS: TestGitHubOutput (0.00s) -2026-07-05T01:36:35.0072202Z === RUN TestGitHubOutputMultiline -2026-07-05T01:36:35.0072498Z --- PASS: TestGitHubOutputMultiline (0.00s) -2026-07-05T01:36:35.0072802Z === RUN TestGitHubOutputMultiple -2026-07-05T01:36:35.0073095Z --- PASS: TestGitHubOutputMultiple (0.00s) -2026-07-05T01:36:35.0073375Z === RUN TestJSON -2026-07-05T01:36:35.0073601Z --- PASS: TestJSON (0.00s) -2026-07-05T01:36:35.0073852Z === RUN TestNoticeWarningError -2026-07-05T01:36:35.0074104Z [NOTICE] test notice -2026-07-05T01:36:35.0074325Z [WARNING] test warning -2026-07-05T01:36:35.0074557Z [ERROR] test error -2026-07-05T01:36:35.0074805Z --- PASS: TestNoticeWarningError (0.00s) -2026-07-05T01:36:35.0075103Z === RUN TestNoticeInGitHubActions -2026-07-05T01:36:35.0075392Z --- PASS: TestNoticeInGitHubActions (0.00s) -2026-07-05T01:36:35.0075697Z === RUN TestWarningInGitHubActions -2026-07-05T01:36:35.0075996Z --- PASS: TestWarningInGitHubActions (0.00s) -2026-07-05T01:36:35.0076300Z === RUN TestErrorInGitHubActions -2026-07-05T01:36:35.0076581Z --- PASS: TestErrorInGitHubActions (0.00s) -2026-07-05T01:36:35.0076871Z === RUN TestGitHubStepSummary -2026-07-05T01:36:35.0077147Z --- PASS: TestGitHubStepSummary (0.00s) -2026-07-05T01:36:35.0077451Z === RUN TestGitHubStepSummaryNoEnvVar -2026-07-05T01:36:35.0077715Z test content -2026-07-05T01:36:35.0077965Z --- PASS: TestGitHubStepSummaryNoEnvVar (0.00s) -2026-07-05T01:36:35.0078285Z === RUN TestGitHubOutputNoEnvVar -2026-07-05T01:36:35.0078540Z [OUTPUT] key=value -2026-07-05T01:36:35.0078786Z --- PASS: TestGitHubOutputNoEnvVar (0.00s) -2026-07-05T01:36:35.0079214Z === RUN TestResult -2026-07-05T01:36:35.0079441Z === RUN TestResult/text_mode -2026-07-05T01:36:35.0079691Z === RUN TestResult/JSON_mode -2026-07-05T01:36:35.0079938Z --- PASS: TestResult (0.00s) -2026-07-05T01:36:35.0080458Z --- PASS: TestResult/text_mode (0.00s) -2026-07-05T01:36:35.0080783Z --- PASS: TestResult/JSON_mode (0.00s) -2026-07-05T01:36:35.0081036Z PASS -2026-07-05T01:36:35.0081237Z coverage: 71.2% of statements -2026-07-05T01:36:35.0081657Z ok github.com/stablekernel/cascade/internal/output 1.016s coverage: 71.2% of statements -2026-07-05T01:36:35.2935693Z === RUN TestRun_CleanRepo_NoPendingChanges -2026-07-05T01:36:35.2936281Z === PAUSE TestRun_CleanRepo_NoPendingChanges -2026-07-05T01:36:35.2936777Z === RUN TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff -2026-07-05T01:36:35.2937178Z === PAUSE TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff -2026-07-05T01:36:35.2937532Z === RUN TestRun_MissingFile_RendersWholeFileAdd -2026-07-05T01:36:35.2937898Z === PAUSE TestRun_MissingFile_RendersWholeFileAdd -2026-07-05T01:36:35.2938238Z === RUN TestRun_Deterministic_SameStdoutTwice -2026-07-05T01:36:35.2938742Z === PAUSE TestRun_Deterministic_SameStdoutTwice -2026-07-05T01:36:35.2939267Z === RUN TestRun_ReadOnly_NothingChangesOnDisk -2026-07-05T01:36:35.2939596Z === PAUSE TestRun_ReadOnly_NothingChangesOnDisk -2026-07-05T01:36:35.2939919Z === RUN TestRun_ManifestAbsent_OperationalError -2026-07-05T01:36:35.2940502Z === PAUSE TestRun_ManifestAbsent_OperationalError -2026-07-05T01:36:35.2940853Z === CONT TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff -2026-07-05T01:36:35.2941211Z === CONT TestRun_Deterministic_SameStdoutTwice -2026-07-05T01:36:35.2941534Z === CONT TestRun_MissingFile_RendersWholeFileAdd -2026-07-05T01:36:35.2941853Z === CONT TestRun_CleanRepo_NoPendingChanges -2026-07-05T01:36:35.2942235Z --- PASS: TestRun_MutatedFile_ReturnsNil_ShowsUnifiedDiff (0.03s) -2026-07-05T01:36:35.2942788Z === CONT TestRun_ManifestAbsent_OperationalError -2026-07-05T01:36:35.2943374Z --- PASS: TestRun_CleanRepo_NoPendingChanges (0.03s) -2026-07-05T01:36:35.2943722Z === CONT TestRun_ReadOnly_NothingChangesOnDisk -2026-07-05T01:36:35.2944067Z --- PASS: TestRun_ManifestAbsent_OperationalError (0.00s) -2026-07-05T01:36:35.2944443Z --- PASS: TestRun_MissingFile_RendersWholeFileAdd (0.03s) -2026-07-05T01:36:35.2944802Z --- PASS: TestRun_Deterministic_SameStdoutTwice (0.03s) -2026-07-05T01:36:35.2945162Z --- PASS: TestRun_ReadOnly_NothingChangesOnDisk (0.02s) -2026-07-05T01:36:35.2945451Z PASS -2026-07-05T01:36:35.2945661Z coverage: 67.4% of statements -2026-07-05T01:36:35.2946071Z ok github.com/stablekernel/cascade/internal/plan 1.063s coverage: 67.4% of statements -2026-07-05T01:36:47.9657246Z === RUN TestFinalizer_AutoCommits_RefreshesEnvSHA -2026-07-05T01:36:47.9658085Z --- PASS: TestFinalizer_AutoCommits_RefreshesEnvSHA (0.00s) -2026-07-05T01:36:47.9658873Z === RUN TestFinalizer_NoAutoCommits_KeepsPromotionSHA -2026-07-05T01:36:47.9659701Z --- PASS: TestFinalizer_NoAutoCommits_KeepsPromotionSHA (0.00s) -2026-07-05T01:36:47.9660849Z === RUN TestFinalizer_AutoCommits_EmptySHA_FallsBackToPromotion -2026-07-05T01:36:47.9661710Z --- PASS: TestFinalizer_AutoCommits_EmptySHA_FallsBackToPromotion (0.00s) -2026-07-05T01:36:47.9673233Z === RUN TestReadDeployResultsFromEnv -2026-07-05T01:36:47.9674006Z --- PASS: TestReadDeployResultsFromEnv (0.00s) -2026-07-05T01:36:47.9675091Z === RUN TestFinalizeCommand_UpdatesState -2026-07-05T01:36:47.9675911Z Dry run - state would be updated but not written to disk -2026-07-05T01:36:47.9676747Z --- PASS: TestFinalizeCommand_UpdatesState (0.00s) -2026-07-05T01:36:47.9677650Z === RUN TestFinalizeCommand_RealUpdate -2026-07-05T01:36:47.9678200Z State updated for test (not committed) -2026-07-05T01:36:47.9678754Z --- PASS: TestFinalizeCommand_RealUpdate (0.00s) -2026-07-05T01:36:47.9679349Z === RUN TestFinalizeCommand_RequiresPromotionResult -2026-07-05T01:36:47.9679949Z Error: required flag(s) "promotion-result" not set -2026-07-05T01:36:47.9680631Z Usage: -2026-07-05T01:36:47.9680988Z promote finalize [flags] -2026-07-05T01:36:47.9681544Z -2026-07-05T01:36:47.9681674Z Flags: -2026-07-05T01:36:47.9682246Z --commit-push Commit and push state changes -2026-07-05T01:36:47.9682879Z -h, --help help for finalize -2026-07-05T01:36:47.9683688Z --promotion-result string JSON from preflight output (required) -2026-07-05T01:36:47.9684650Z --repo string GitHub repository (owner/name) for job query -2026-07-05T01:36:47.9685524Z --run-id string GitHub Actions run ID for job query -2026-07-05T01:36:47.9685935Z -2026-07-05T01:36:47.9686079Z Global Flags: -2026-07-05T01:36:47.9686781Z --actor string Actor performing action (default: from GITHUB_ACTOR) -2026-07-05T01:36:47.9687778Z --config string Path to manifest file (default: .github/manifest.yaml) -2026-07-05T01:36:47.9688637Z --dry-run Preview changes without modifying state -2026-07-05T01:36:47.9689330Z --gha-output Write to $GITHUB_OUTPUT -2026-07-05T01:36:47.9689939Z --json Output result as JSON -2026-07-05T01:36:47.9690500Z -2026-07-05T01:36:47.9690807Z --- PASS: TestFinalizeCommand_RequiresPromotionResult (0.00s) -2026-07-05T01:36:47.9691381Z === RUN TestFinalizeCommand_WithJobQuery -2026-07-05T01:36:47.9691922Z Dry run - state would be updated but not written to disk -2026-07-05T01:36:47.9692511Z --- PASS: TestFinalizeCommand_WithJobQuery (0.03s) -2026-07-05T01:36:47.9693065Z === RUN TestPreflightCommand_WithCIKeyManifest -2026-07-05T01:36:47.9693523Z Mode: default -2026-07-05T01:36:47.9693838Z Source: dev (abc123d) -2026-07-05T01:36:47.9694325Z Final Env: test -2026-07-05T01:36:47.9694666Z Deploys to run: [infra app] -2026-07-05T01:36:47.9695033Z Can proceed: true -2026-07-05T01:36:47.9695485Z --- PASS: TestPreflightCommand_WithCIKeyManifest (0.00s) -2026-07-05T01:36:47.9696069Z === RUN TestPreflightCommand_WithEmptyDeploys -2026-07-05T01:36:47.9696522Z Mode: default -2026-07-05T01:36:47.9696851Z Source: dev (abc123) -2026-07-05T01:36:47.9697458Z Final Env: test -2026-07-05T01:36:47.9697771Z Deploys to run: [] -2026-07-05T01:36:47.9698090Z Can proceed: true -2026-07-05T01:36:47.9698514Z --- PASS: TestPreflightCommand_WithEmptyDeploys (0.00s) -2026-07-05T01:36:47.9699076Z === RUN TestPreflightCommand_AllPromotionModes -2026-07-05T01:36:47.9699635Z === RUN TestPreflightCommand_AllPromotionModes/default -2026-07-05T01:36:47.9700294Z Mode: default -2026-07-05T01:36:47.9700598Z Source: dev (abc123) -2026-07-05T01:36:47.9700916Z Final Env: release -2026-07-05T01:36:47.9701224Z Deploys to run: [] -2026-07-05T01:36:47.9701550Z Can proceed: true -2026-07-05T01:36:47.9702005Z === RUN TestPreflightCommand_AllPromotionModes/dev-to-test -2026-07-05T01:36:47.9702523Z Mode: cascade -2026-07-05T01:36:47.9702841Z Target: dev-to-test -2026-07-05T01:36:47.9703178Z Source: dev (abc123) -2026-07-05T01:36:47.9703508Z Final Env: test -2026-07-05T01:36:47.9703841Z Deploys to run: [app] -2026-07-05T01:36:47.9704184Z Can proceed: true -2026-07-05T01:36:47.9704632Z === RUN TestPreflightCommand_AllPromotionModes/dev-to-uat -2026-07-05T01:36:47.9705137Z Mode: cascade -2026-07-05T01:36:47.9705432Z Target: dev-to-uat -2026-07-05T01:36:47.9705742Z Source: dev (abc123) -2026-07-05T01:36:47.9706072Z Final Env: uat -2026-07-05T01:36:47.9706400Z Deploys to run: [app] -2026-07-05T01:36:47.9706757Z Can proceed: true -2026-07-05T01:36:47.9707212Z === RUN TestPreflightCommand_AllPromotionModes/test-to-uat -2026-07-05T01:36:47.9707729Z Mode: cascade -2026-07-05T01:36:47.9708041Z Target: test-to-uat -2026-07-05T01:36:47.9708386Z Source: test (def456) -2026-07-05T01:36:47.9708722Z Final Env: uat -2026-07-05T01:36:47.9709042Z Deploys to run: [app] -2026-07-05T01:36:47.9709382Z Can proceed: true -2026-07-05T01:36:47.9709845Z === RUN TestPreflightCommand_AllPromotionModes/uat-to-prod -2026-07-05T01:36:47.9710583Z Mode: cascade -2026-07-05T01:36:47.9710901Z Target: uat-to-prod -2026-07-05T01:36:47.9711235Z Source: uat (ghi789) -2026-07-05T01:36:47.9711577Z Final Env: prod -2026-07-05T01:36:47.9711917Z Deploys to run: [app] -2026-07-05T01:36:47.9712511Z Can proceed: true -2026-07-05T01:36:47.9712962Z --- PASS: TestPreflightCommand_AllPromotionModes (0.01s) -2026-07-05T01:36:47.9713786Z --- PASS: TestPreflightCommand_AllPromotionModes/default (0.00s) -2026-07-05T01:36:47.9714682Z --- PASS: TestPreflightCommand_AllPromotionModes/dev-to-test (0.00s) -2026-07-05T01:36:47.9715561Z --- PASS: TestPreflightCommand_AllPromotionModes/dev-to-uat (0.00s) -2026-07-05T01:36:47.9716408Z --- PASS: TestPreflightCommand_AllPromotionModes/test-to-uat (0.00s) -2026-07-05T01:36:47.9717306Z --- PASS: TestPreflightCommand_AllPromotionModes/uat-to-prod (0.00s) -2026-07-05T01:36:47.9717964Z === RUN TestPreflightCommand_DefaultMode -2026-07-05T01:36:47.9718412Z Mode: default -2026-07-05T01:36:47.9718740Z Source: dev (abc123) -2026-07-05T01:36:47.9719081Z Final Env: release -2026-07-05T01:36:47.9719413Z Deploys to run: [] -2026-07-05T01:36:47.9719743Z Can proceed: true -2026-07-05T01:36:47.9720361Z --- PASS: TestPreflightCommand_DefaultMode (0.00s) -2026-07-05T01:36:47.9720906Z === RUN TestPreflightCommand_InvalidConfig -2026-07-05T01:36:47.9721747Z Error: failed to parse config: parsing manifest YAML: yaml: mapping values are not allowed in this context -2026-07-05T01:36:47.9722499Z Usage: -2026-07-05T01:36:47.9722833Z promote preflight [flags] -2026-07-05T01:36:47.9723077Z -2026-07-05T01:36:47.9723203Z Flags: -2026-07-05T01:36:47.9723685Z --allow-breaking Allow breaking changes -2026-07-05T01:36:47.9725078Z --allow-downgrade Permit promoting an older version onto an env (downgrade); prod always requires this even if a lower env allowed it -2026-07-05T01:36:47.9726585Z --deploys string Deploys to promote (comma-separated names or 'all') (default "all") -2026-07-05T01:36:47.9727554Z --force Continue on failure (default mode only) -2026-07-05T01:36:47.9728202Z -h, --help help for preflight -2026-07-05T01:36:47.9729551Z --mode string Promotion mode: 'default' or cascade target (e.g., dev-to-prod) (default "default") -2026-07-05T01:36:47.9731049Z --rollback-on-failure Revert successful deploys if any fails (default true) -2026-07-05T01:36:47.9731584Z -2026-07-05T01:36:47.9731722Z Global Flags: -2026-07-05T01:36:47.9732406Z --actor string Actor performing action (default: from GITHUB_ACTOR) -2026-07-05T01:36:47.9733390Z --config string Path to manifest file (default: .github/manifest.yaml) -2026-07-05T01:36:47.9734251Z --dry-run Preview changes without modifying state -2026-07-05T01:36:47.9734927Z --gha-output Write to $GITHUB_OUTPUT -2026-07-05T01:36:47.9735534Z --json Output result as JSON -2026-07-05T01:36:47.9735845Z -2026-07-05T01:36:47.9736100Z --- PASS: TestPreflightCommand_InvalidConfig (0.00s) -2026-07-05T01:36:47.9736682Z === RUN TestPreflightCommand_NonexistentConfig -2026-07-05T01:36:47.9737646Z Error: failed to parse config: reading manifest file: open /nonexistent/path/manifest.yaml: no such file or directory -2026-07-05T01:36:47.9738434Z Usage: -2026-07-05T01:36:47.9738788Z promote preflight [flags] -2026-07-05T01:36:47.9739036Z -2026-07-05T01:36:47.9739163Z Flags: -2026-07-05T01:36:47.9739644Z --allow-breaking Allow breaking changes -2026-07-05T01:36:47.9741214Z --allow-downgrade Permit promoting an older version onto an env (downgrade); prod always requires this even if a lower env allowed it -2026-07-05T01:36:47.9742678Z --deploys string Deploys to promote (comma-separated names or 'all') (default "all") -2026-07-05T01:36:47.9743680Z --force Continue on failure (default mode only) -2026-07-05T01:36:47.9744321Z -h, --help help for preflight -2026-07-05T01:36:47.9745406Z --mode string Promotion mode: 'default' or cascade target (e.g., dev-to-prod) (default "default") -2026-07-05T01:36:47.9746588Z --rollback-on-failure Revert successful deploys if any fails (default true) -2026-07-05T01:36:47.9747109Z -2026-07-05T01:36:47.9747477Z Global Flags: -2026-07-05T01:36:47.9748158Z --actor string Actor performing action (default: from GITHUB_ACTOR) -2026-07-05T01:36:47.9749112Z --config string Path to manifest file (default: .github/manifest.yaml) -2026-07-05T01:36:47.9749962Z --dry-run Preview changes without modifying state -2026-07-05T01:36:47.9750871Z --gha-output Write to $GITHUB_OUTPUT -2026-07-05T01:36:47.9751481Z --json Output result as JSON -2026-07-05T01:36:47.9751788Z -2026-07-05T01:36:47.9752063Z --- PASS: TestPreflightCommand_NonexistentConfig (0.00s) -2026-07-05T01:36:47.9752640Z === RUN TestPreflightCommand_GHAOutput -2026-07-05T01:36:47.9753162Z --- PASS: TestPreflightCommand_GHAOutput (0.00s) -2026-07-05T01:36:47.9753730Z === RUN TestPreflightCommand_GHAOutput_ImageDigest -2026-07-05T01:36:47.9754366Z --- PASS: TestPreflightCommand_GHAOutput_ImageDigest (0.00s) -2026-07-05T01:36:47.9754963Z === RUN TestPreflightCommand_AllowBreaking -2026-07-05T01:36:47.9755433Z Mode: default -2026-07-05T01:36:47.9755752Z Source: dev (abc123) -2026-07-05T01:36:47.9756089Z Final Env: test -2026-07-05T01:36:47.9756413Z Deploys to run: [app] -2026-07-05T01:36:47.9756764Z Can proceed: true -2026-07-05T01:36:47.9757196Z --- PASS: TestPreflightCommand_AllowBreaking (0.00s) -2026-07-05T01:36:47.9757744Z === RUN TestPreflightCommand_JSONOutput -2026-07-05T01:36:47.9758168Z { -2026-07-05T01:36:47.9758475Z "mode": "default", -2026-07-05T01:36:47.9758855Z "rollback_on_failure": true, -2026-07-05T01:36:47.9759259Z "source_env": "dev", -2026-07-05T01:36:47.9759625Z "target_env": "test", -2026-07-05T01:36:47.9760244Z "source_sha": "abc123", -2026-07-05T01:36:47.9760666Z "source_version": "v1.0.0-rc.1", -2026-07-05T01:36:47.9761118Z "changelog_base_sha": "", -2026-07-05T01:36:47.9761519Z "envs_to_update": [ -2026-07-05T01:36:47.9761875Z "test" -2026-07-05T01:36:47.9762157Z ], -2026-07-05T01:36:47.9762483Z "skipped_envs": null, -2026-07-05T01:36:47.9763114Z "deploys_to_run": [ -2026-07-05T01:36:47.9763345Z "app" -2026-07-05T01:36:47.9763525Z ], -2026-07-05T01:36:47.9763743Z "external_deploys_to_run": null, -2026-07-05T01:36:47.9764036Z "is_prerelease_env": false, -2026-07-05T01:36:47.9764294Z "is_final_env": false, -2026-07-05T01:36:47.9764546Z "is_cascade": false, -2026-07-05T01:36:47.9764777Z "release_action": "", -2026-07-05T01:36:47.9765026Z "has_prod_deployment": false, -2026-07-05T01:36:47.9765282Z "prod_sha": "", -2026-07-05T01:36:47.9765506Z "prod_version": "", -2026-07-05T01:36:47.9765746Z "has_breaking": false, -2026-07-05T01:36:47.9765984Z "can_proceed": true, -2026-07-05T01:36:47.9766222Z "promotion_result": { -2026-07-05T01:36:47.9766453Z "success": true, -2026-07-05T01:36:47.9766685Z "mode": "default", -2026-07-05T01:36:47.9766922Z "is_cascade": false, -2026-07-05T01:36:47.9767159Z "promotions": [ -2026-07-05T01:36:47.9767378Z { -2026-07-05T01:36:47.9767632Z "environment": "test", -2026-07-05T01:36:47.9767940Z "source_env": "dev", -2026-07-05T01:36:47.9768233Z "sha": "abc123", -2026-07-05T01:36:47.9768524Z "version": "v1.0.0-rc.1", -2026-07-05T01:36:47.9768828Z "needs_deploy": true -2026-07-05T01:36:47.9769064Z } -2026-07-05T01:36:47.9769250Z ], -2026-07-05T01:36:47.9769460Z "skipped_envs": [ -2026-07-05T01:36:47.9769692Z "uat", -2026-07-05T01:36:47.9769898Z "prod" -2026-07-05T01:36:47.9770341Z ], -2026-07-05T01:36:47.9770550Z "final_env": "test" -2026-07-05T01:36:47.9770763Z } -2026-07-05T01:36:47.9770938Z } -2026-07-05T01:36:47.9771179Z --- PASS: TestPreflightCommand_JSONOutput (0.00s) -2026-07-05T01:36:47.9771527Z === RUN TestPreflightCommand_DeployEnvVars -2026-07-05T01:36:47.9771810Z Mode: default -2026-07-05T01:36:47.9772016Z Source: dev (abc123) -2026-07-05T01:36:47.9772229Z Final Env: test -2026-07-05T01:36:47.9772446Z Deploys to run: [app] -2026-07-05T01:36:47.9772664Z Can proceed: true -2026-07-05T01:36:47.9772922Z --- PASS: TestPreflightCommand_DeployEnvVars (0.00s) -2026-07-05T01:36:47.9773443Z === RUN TestPreflightCommand_RealWorldManifest -2026-07-05T01:36:47.9773730Z Mode: default -2026-07-05T01:36:47.9773931Z Source: dev (5cb540d) -2026-07-05T01:36:47.9774143Z Final Env: test -2026-07-05T01:36:47.9774354Z Deploys to run: [infra app] -2026-07-05T01:36:47.9774595Z Can proceed: true -2026-07-05T01:36:47.9774867Z --- PASS: TestPreflightCommand_RealWorldManifest (0.00s) -2026-07-05T01:36:47.9775220Z === RUN TestPreflightCommand_TwoEnvCascade -2026-07-05T01:36:47.9775490Z Mode: cascade -2026-07-05T01:36:47.9775691Z Target: dev-to-prod -2026-07-05T01:36:47.9775906Z Source: dev (abc123) -2026-07-05T01:36:47.9776115Z Final Env: prod -2026-07-05T01:36:47.9776320Z Deploys to run: [app] -2026-07-05T01:36:47.9776536Z Can proceed: true -2026-07-05T01:36:47.9776784Z --- PASS: TestPreflightCommand_TwoEnvCascade (0.00s) -2026-07-05T01:36:47.9777118Z === RUN TestPreflightCommand_NoPromotionNeeded -2026-07-05T01:36:47.9777660Z Error: preflight failed: promotion validation failed: all environments are up to date - nothing to promote -2026-07-05T01:36:47.9778140Z Usage: -2026-07-05T01:36:47.9778351Z promote preflight [flags] -2026-07-05T01:36:47.9778507Z -2026-07-05T01:36:47.9778589Z Flags: -2026-07-05T01:36:47.9778902Z --allow-breaking Allow breaking changes -2026-07-05T01:36:47.9779721Z --allow-downgrade Permit promoting an older version onto an env (downgrade); prod always requires this even if a lower env allowed it -2026-07-05T01:36:47.9780869Z --deploys string Deploys to promote (comma-separated names or 'all') (default "all") -2026-07-05T01:36:47.9781466Z --force Continue on failure (default mode only) -2026-07-05T01:36:47.9781859Z -h, --help help for preflight -2026-07-05T01:36:47.9782535Z --mode string Promotion mode: 'default' or cascade target (e.g., dev-to-prod) (default "default") -2026-07-05T01:36:47.9783269Z --rollback-on-failure Revert successful deploys if any fails (default true) -2026-07-05T01:36:47.9783740Z -2026-07-05T01:36:47.9783836Z Global Flags: -2026-07-05T01:36:47.9784256Z --actor string Actor performing action (default: from GITHUB_ACTOR) -2026-07-05T01:36:47.9784836Z --config string Path to manifest file (default: .github/manifest.yaml) -2026-07-05T01:36:47.9785349Z --dry-run Preview changes without modifying state -2026-07-05T01:36:47.9785775Z --gha-output Write to $GITHUB_OUTPUT -2026-07-05T01:36:47.9786145Z --json Output result as JSON -2026-07-05T01:36:47.9786342Z -2026-07-05T01:36:47.9786519Z --- PASS: TestPreflightCommand_NoPromotionNeeded (0.00s) -2026-07-05T01:36:47.9786896Z === RUN TestPromoteCommand_HasPreflightSubcommand -2026-07-05T01:36:47.9787275Z --- PASS: TestPromoteCommand_HasPreflightSubcommand (0.00s) -2026-07-05T01:36:47.9787652Z === RUN TestPromoteCommand_HasFinalizeSubcommand -2026-07-05T01:36:47.9788022Z --- PASS: TestPromoteCommand_HasFinalizeSubcommand (0.00s) -2026-07-05T01:36:47.9788384Z === RUN TestPromoteCommand_HasPersistentFlags -2026-07-05T01:36:47.9788747Z --- PASS: TestPromoteCommand_HasPersistentFlags (0.00s) -2026-07-05T01:36:47.9789128Z === RUN TestCheckDowngrade_ForwardPromotion_Passes -2026-07-05T01:36:47.9789514Z --- PASS: TestCheckDowngrade_ForwardPromotion_Passes (0.00s) -2026-07-05T01:36:47.9789879Z === RUN TestCheckDowngrade_EqualVersion_Passes -2026-07-05T01:36:47.9790407Z --- PASS: TestCheckDowngrade_EqualVersion_Passes (0.00s) -2026-07-05T01:36:47.9790782Z === RUN TestCheckDowngrade_Downgrade_BlockedWithoutFlag -2026-07-05T01:36:47.9791188Z --- PASS: TestCheckDowngrade_Downgrade_BlockedWithoutFlag (0.00s) -2026-07-05T01:36:47.9791595Z === RUN TestCheckDowngrade_Downgrade_AllowedWithFlag -2026-07-05T01:36:47.9791975Z --- PASS: TestCheckDowngrade_Downgrade_AllowedWithFlag (0.00s) -2026-07-05T01:36:47.9792380Z === RUN TestCheckDowngrade_ProdDowngrade_AlwaysRequiresFlag -2026-07-05T01:36:47.9792811Z --- PASS: TestCheckDowngrade_ProdDowngrade_AlwaysRequiresFlag (0.00s) -2026-07-05T01:36:47.9793243Z === RUN TestCheckDowngrade_NonSemver_WarnsAndAllows -2026-07-05T01:36:47.9793815Z --- PASS: TestCheckDowngrade_NonSemver_WarnsAndAllows (0.00s) -2026-07-05T01:36:47.9794188Z === RUN TestCheckDowngrade_EmptyVersions_Skipped -2026-07-05T01:36:47.9794598Z --- PASS: TestCheckDowngrade_EmptyVersions_Skipped (0.00s) -2026-07-05T01:36:47.9795036Z === RUN TestCheckDowngrade_PublishBoundary_RCToReleaseNotDowngrade -2026-07-05T01:36:47.9795529Z --- PASS: TestCheckDowngrade_PublishBoundary_RCToReleaseNotDowngrade (0.00s) -2026-07-05T01:36:47.9796028Z === RUN TestCheckDowngrade_RealDowngrade_StillBlockedViaPromoVersion -2026-07-05T01:36:47.9796536Z --- PASS: TestCheckDowngrade_RealDowngrade_StillBlockedViaPromoVersion (0.00s) -2026-07-05T01:36:47.9797008Z === RUN TestCheckDowngrade_PrereleaseEnv_RCProgressesForward -2026-07-05T01:36:47.9797451Z --- PASS: TestCheckDowngrade_PrereleaseEnv_RCProgressesForward (0.00s) -2026-07-05T01:36:47.9797810Z === RUN TestGetEnv -2026-07-05T01:36:47.9798067Z === RUN TestGetEnv/returns_value_when_set -2026-07-05T01:36:47.9798388Z === RUN TestGetEnv/returns_default_when_empty -2026-07-05T01:36:47.9798699Z === RUN TestGetEnv/returns_default_when_unset -2026-07-05T01:36:47.9798987Z --- PASS: TestGetEnv (0.00s) -2026-07-05T01:36:47.9799328Z --- PASS: TestGetEnv/returns_value_when_set (0.00s) -2026-07-05T01:36:47.9799742Z --- PASS: TestGetEnv/returns_default_when_empty (0.00s) -2026-07-05T01:36:47.9800361Z --- PASS: TestGetEnv/returns_default_when_unset (0.00s) -2026-07-05T01:36:47.9800678Z === RUN TestGitIdentity -2026-07-05T01:36:47.9800978Z === RUN TestGitIdentity/nil_config_yields_empty_identity -2026-07-05T01:36:47.9801386Z === RUN TestGitIdentity/config_without_git_block_uses_bot_defaults -2026-07-05T01:36:47.9801830Z === RUN TestGitIdentity/config_with_git_block_uses_configured_values -2026-07-05T01:36:47.9802197Z --- PASS: TestGitIdentity (0.00s) -2026-07-05T01:36:47.9802608Z --- PASS: TestGitIdentity/nil_config_yields_empty_identity (0.00s) -2026-07-05T01:36:47.9803298Z --- PASS: TestGitIdentity/config_without_git_block_uses_bot_defaults (0.00s) -2026-07-05T01:36:47.9803911Z --- PASS: TestGitIdentity/config_with_git_block_uses_configured_values (0.00s) -2026-07-05T01:36:47.9804318Z === RUN TestIsExternalDeploy -2026-07-05T01:36:47.9804595Z --- PASS: TestIsExternalDeploy (0.00s) -2026-07-05T01:36:47.9804889Z === RUN TestGetExternalDeployRepo -2026-07-05T01:36:47.9805190Z --- PASS: TestGetExternalDeployRepo (0.00s) -2026-07-05T01:36:47.9805494Z === RUN TestGetExternalDeploySHA -2026-07-05T01:36:47.9805789Z --- PASS: TestGetExternalDeploySHA (0.00s) -2026-07-05T01:36:47.9806090Z === RUN TestGetExternalDeployVersion -2026-07-05T01:36:47.9806395Z --- PASS: TestGetExternalDeployVersion (0.00s) -2026-07-05T01:36:47.9806712Z === RUN TestUpdateExternalDeployState -2026-07-05T01:36:47.9807026Z --- PASS: TestUpdateExternalDeployState (0.00s) -2026-07-05T01:36:47.9807374Z === RUN TestUpdateExternalDeployState_NoSourceSHA -2026-07-05T01:36:47.9807763Z --- PASS: TestUpdateExternalDeployState_NoSourceSHA (0.00s) -2026-07-05T01:36:47.9808165Z === RUN TestFinalize_UpdatesStateForSuccessfulDeploys -2026-07-05T01:36:47.9808566Z --- PASS: TestFinalize_UpdatesStateForSuccessfulDeploys (0.00s) -2026-07-05T01:36:47.9808962Z === RUN TestFinalize_RecordsPerDeployableVersion -2026-07-05T01:36:47.9809330Z --- PASS: TestFinalize_RecordsPerDeployableVersion (0.01s) -2026-07-05T01:36:47.9809779Z === RUN TestFinalize_NonVersionedPromotionPreservesPriorDeployVersion -2026-07-05T01:36:47.9810522Z --- PASS: TestFinalize_NonVersionedPromotionPreservesPriorDeployVersion (0.00s) -2026-07-05T01:36:47.9811000Z === RUN TestFinalize_UpdatesLatestReleaseOnPublish -2026-07-05T01:36:47.9811396Z --- PASS: TestFinalize_UpdatesLatestReleaseOnPublish (0.00s) -2026-07-05T01:36:47.9811774Z === RUN TestFinalize_UpdatesMultipleEnvironments -2026-07-05T01:36:47.9812133Z --- PASS: TestFinalize_UpdatesMultipleEnvironments (0.00s) -2026-07-05T01:36:47.9812488Z === RUN TestFinalize_HandlesNoPromotionResult -2026-07-05T01:36:47.9812989Z --- PASS: TestFinalize_HandlesNoPromotionResult (0.00s) -2026-07-05T01:36:47.9813321Z === RUN TestFinalize_WithCIKeyManifest -2026-07-05T01:36:47.9813635Z --- PASS: TestFinalize_WithCIKeyManifest (0.01s) -2026-07-05T01:36:47.9813964Z === RUN TestFinalize_InvalidConfig -2026-07-05T01:36:47.9814264Z --- PASS: TestFinalize_InvalidConfig (0.00s) -2026-07-05T01:36:47.9814576Z === RUN TestFinalize_NonexistentConfig -2026-07-05T01:36:47.9814880Z --- PASS: TestFinalize_NonexistentConfig (0.00s) -2026-07-05T01:36:47.9815180Z === RUN TestFinalize_SetActor -2026-07-05T01:36:47.9815443Z --- PASS: TestFinalize_SetActor (0.00s) -2026-07-05T01:36:47.9815714Z === RUN TestIsRealGitHub -2026-07-05T01:36:47.9815965Z --- PASS: TestIsRealGitHub (0.00s) -2026-07-05T01:36:47.9816241Z === RUN TestTrunkBranchFromEnv -2026-07-05T01:36:47.9816517Z --- PASS: TestTrunkBranchFromEnv (0.00s) -2026-07-05T01:36:47.9816802Z === RUN TestFinalize_SkippedDeploys -2026-07-05T01:36:47.9817101Z --- PASS: TestFinalize_SkippedDeploys (0.00s) -2026-07-05T01:36:47.9817430Z === RUN TestFinalize_CancelledDeploys -2026-07-05T01:36:47.9817730Z --- PASS: TestFinalize_CancelledDeploys (0.00s) -2026-07-05T01:36:47.9818109Z === RUN TestFinalize_NoReleaseActionDoesNotUpdateLatestRelease -2026-07-05T01:36:47.9818588Z --- PASS: TestFinalize_NoReleaseActionDoesNotUpdateLatestRelease (0.00s) -2026-07-05T01:36:47.9819002Z === RUN TestFinalize_WriteConfigValidYAML -2026-07-05T01:36:47.9819326Z --- PASS: TestFinalize_WriteConfigValidYAML (0.00s) -2026-07-05T01:36:47.9819649Z === RUN TestFinalize_RealWorldManifest -2026-07-05T01:36:47.9819961Z --- PASS: TestFinalize_RealWorldManifest (0.01s) -2026-07-05T01:36:47.9820520Z === RUN TestCommitAndPushGit_DetachedHeadPushesToTrunk -2026-07-05T01:36:47.9820931Z --- PASS: TestCommitAndPushGit_DetachedHeadPushesToTrunk (0.07s) -2026-07-05T01:36:47.9821302Z === RUN TestFinalizeOverlayMerge -2026-07-05T01:36:47.9821588Z --- PASS: TestFinalizeOverlayMerge (0.00s) -2026-07-05T01:36:47.9822078Z === RUN TestUpdateState_PushesPriorSnapshotOnTransition -2026-07-05T01:36:47.9822508Z --- PASS: TestUpdateState_PushesPriorSnapshotOnTransition (0.01s) -2026-07-05T01:36:47.9822890Z === RUN TestUpdateState_NoSnapshotOnSameSHA -2026-07-05T01:36:47.9823226Z --- PASS: TestUpdateState_NoSnapshotOnSameSHA (0.00s) -2026-07-05T01:36:47.9823556Z === RUN TestPromote_FromDivergedEnv_Blocked -2026-07-05T01:36:47.9823883Z --- PASS: TestPromote_FromDivergedEnv_Blocked (0.00s) -2026-07-05T01:36:47.9824222Z === RUN TestPromote_FromDivergedEnv_Blocked_Cascade -2026-07-05T01:36:47.9824586Z --- PASS: TestPromote_FromDivergedEnv_Blocked_Cascade (0.00s) -2026-07-05T01:36:47.9824976Z === RUN TestPromote_IntoDivergedEnv_MissingPatch_Blocked -2026-07-05T01:36:47.9825386Z --- PASS: TestPromote_IntoDivergedEnv_MissingPatch_Blocked (0.00s) -2026-07-05T01:36:47.9825804Z === RUN TestPromote_IntoDivergedEnv_PatchesContained_Allowed -2026-07-05T01:36:47.9826240Z --- PASS: TestPromote_IntoDivergedEnv_PatchesContained_Allowed (0.00s) -2026-07-05T01:36:47.9826693Z === RUN TestPromote_IntoDivergedEnv_Force_OverridesWithWarning -2026-07-05T01:36:47.9827140Z --- PASS: TestPromote_IntoDivergedEnv_Force_OverridesWithWarning (0.00s) -2026-07-05T01:36:47.9827537Z === RUN TestPublish_DivergedSource_Asserts -2026-07-05T01:36:47.9827864Z --- PASS: TestPublish_DivergedSource_Asserts (0.00s) -2026-07-05T01:36:47.9828218Z === RUN TestPublish_DivergedSource_Asserts_NoEnvironment -2026-07-05T01:36:47.9828615Z --- PASS: TestPublish_DivergedSource_Asserts_NoEnvironment (0.00s) -2026-07-05T01:36:47.9828991Z === RUN TestPromote_NoDivergence_GuardsInert -2026-07-05T01:36:47.9829331Z --- PASS: TestPromote_NoDivergence_GuardsInert (0.00s) -2026-07-05T01:36:47.9829635Z === RUN TestMatchGlob -2026-07-05T01:36:47.9829875Z === RUN TestMatchGlob/exact_match -2026-07-05T01:36:47.9830318Z === RUN TestMatchGlob/exact_non-match -2026-07-05T01:36:47.9830654Z === RUN TestMatchGlob/single_star_matches_within_a_segment -2026-07-05T01:36:47.9831036Z === RUN TestMatchGlob/single_star_does_not_span_directories -2026-07-05T01:36:47.9831530Z === RUN TestMatchGlob/single_star_same_dir -2026-07-05T01:36:47.9831869Z === RUN TestMatchGlob/single_star_does_not_cross_slash -2026-07-05T01:36:47.9832223Z === RUN TestMatchGlob/doublestar_prefix_matches_nested -2026-07-05T01:36:47.9832592Z === RUN TestMatchGlob/doublestar_prefix_matches_direct_child -2026-07-05T01:36:47.9832961Z === RUN TestMatchGlob/doublestar_non-match_wrong_root -2026-07-05T01:36:47.9833299Z === RUN TestMatchGlob/doublestar_middle_segment -2026-07-05T01:36:47.9833633Z === RUN TestMatchGlob/doublestar_middle_non-match -2026-07-05T01:36:47.9833958Z --- PASS: TestMatchGlob (0.00s) -2026-07-05T01:36:47.9834286Z --- PASS: TestMatchGlob/exact_match (0.00s) -2026-07-05T01:36:47.9834658Z --- PASS: TestMatchGlob/exact_non-match (0.00s) -2026-07-05T01:36:47.9835106Z --- PASS: TestMatchGlob/single_star_matches_within_a_segment (0.00s) -2026-07-05T01:36:47.9835624Z --- PASS: TestMatchGlob/single_star_does_not_span_directories (0.00s) -2026-07-05T01:36:47.9836091Z --- PASS: TestMatchGlob/single_star_same_dir (0.00s) -2026-07-05T01:36:47.9836531Z --- PASS: TestMatchGlob/single_star_does_not_cross_slash (0.00s) -2026-07-05T01:36:47.9837009Z --- PASS: TestMatchGlob/doublestar_prefix_matches_nested (0.00s) -2026-07-05T01:36:47.9837513Z --- PASS: TestMatchGlob/doublestar_prefix_matches_direct_child (0.00s) -2026-07-05T01:36:47.9838017Z --- PASS: TestMatchGlob/doublestar_non-match_wrong_root (0.00s) -2026-07-05T01:36:47.9838468Z --- PASS: TestMatchGlob/doublestar_middle_segment (0.00s) -2026-07-05T01:36:47.9838907Z --- PASS: TestMatchGlob/doublestar_middle_non-match (0.00s) -2026-07-05T01:36:47.9839245Z === RUN TestMatchDoublestar -2026-07-05T01:36:47.9839579Z === RUN TestMatchDoublestar/trailing_doublestar_matches_deep_path -2026-07-05T01:36:47.9840214Z === RUN TestMatchDoublestar/trailing_doublestar_matches_single -2026-07-05T01:36:47.9840642Z === RUN TestMatchDoublestar/leading_doublestar_matches_suffix -2026-07-05T01:36:47.9841210Z === RUN TestMatchDoublestar/leading_doublestar_matches_root_file -2026-07-05T01:36:47.9841637Z === RUN TestMatchDoublestar/leading_doublestar_suffix_mismatch -2026-07-05T01:36:47.9842037Z === RUN TestMatchDoublestar/doublestar_with_wildcard_segment -2026-07-05T01:36:47.9842433Z === RUN TestMatchDoublestar/prefix_mismatch_before_doublestar -2026-07-05T01:36:47.9842785Z --- PASS: TestMatchDoublestar (0.00s) -2026-07-05T01:36:47.9843264Z --- PASS: TestMatchDoublestar/trailing_doublestar_matches_deep_path (0.00s) -2026-07-05T01:36:47.9843839Z --- PASS: TestMatchDoublestar/trailing_doublestar_matches_single (0.00s) -2026-07-05T01:36:47.9844394Z --- PASS: TestMatchDoublestar/leading_doublestar_matches_suffix (0.00s) -2026-07-05T01:36:47.9844954Z --- PASS: TestMatchDoublestar/leading_doublestar_matches_root_file (0.00s) -2026-07-05T01:36:47.9845503Z --- PASS: TestMatchDoublestar/leading_doublestar_suffix_mismatch (0.00s) -2026-07-05T01:36:47.9846046Z --- PASS: TestMatchDoublestar/doublestar_with_wildcard_segment (0.00s) -2026-07-05T01:36:47.9846605Z --- PASS: TestMatchDoublestar/prefix_mismatch_before_doublestar (0.00s) -2026-07-05T01:36:47.9846974Z === RUN TestMatchParts -2026-07-05T01:36:47.9847244Z === RUN TestMatchParts/equal_literal_segments -2026-07-05T01:36:47.9847572Z === RUN TestMatchParts/pattern_longer_than_path -2026-07-05T01:36:47.9847966Z === RUN TestMatchParts/path_longer_than_pattern_without_doublestar -2026-07-05T01:36:47.9848374Z === RUN TestMatchParts/doublestar_absorbs_zero_segments -2026-07-05T01:36:47.9848746Z === RUN TestMatchParts/doublestar_absorbs_many_segments -2026-07-05T01:36:47.9849124Z === RUN TestMatchParts/trailing_doublestar_after_full_match -2026-07-05T01:36:47.9849465Z === RUN TestMatchParts/both_empty -2026-07-05T01:36:47.9849777Z === RUN TestMatchParts/empty_pattern_non-empty_path -2026-07-05T01:36:47.9850279Z --- PASS: TestMatchParts (0.00s) -2026-07-05T01:36:47.9850642Z --- PASS: TestMatchParts/equal_literal_segments (0.00s) -2026-07-05T01:36:47.9851234Z --- PASS: TestMatchParts/pattern_longer_than_path (0.00s) -2026-07-05T01:36:47.9851752Z --- PASS: TestMatchParts/path_longer_than_pattern_without_doublestar (0.00s) -2026-07-05T01:36:47.9852294Z --- PASS: TestMatchParts/doublestar_absorbs_zero_segments (0.00s) -2026-07-05T01:36:47.9852781Z --- PASS: TestMatchParts/doublestar_absorbs_many_segments (0.00s) -2026-07-05T01:36:47.9853280Z --- PASS: TestMatchParts/trailing_doublestar_after_full_match (0.00s) -2026-07-05T01:36:47.9853715Z --- PASS: TestMatchParts/both_empty (0.00s) -2026-07-05T01:36:47.9854140Z --- PASS: TestMatchParts/empty_pattern_non-empty_path (0.00s) -2026-07-05T01:36:47.9854492Z === RUN TestContainsBreakingCommit -2026-07-05T01:36:47.9854785Z === RUN TestContainsBreakingCommit/empty -2026-07-05T01:36:47.9855129Z === RUN TestContainsBreakingCommit/no_breaking_commits -2026-07-05T01:36:47.9855505Z === RUN TestContainsBreakingCommit/feat!_is_breaking -2026-07-05T01:36:47.9855907Z === RUN TestContainsBreakingCommit/scope_with_bang_is_breaking -2026-07-05T01:36:47.9856376Z === RUN TestContainsBreakingCommit/BREAKING_CHANGE_footer_is_breaking -2026-07-05T01:36:47.9856864Z === RUN TestContainsBreakingCommit/single_breaking_among_many_is_breaking -2026-07-05T01:36:47.9857360Z === RUN TestContainsBreakingCommit/non-conventional_commit_doesn't_crash -2026-07-05T01:36:47.9857775Z --- PASS: TestContainsBreakingCommit (0.00s) -2026-07-05T01:36:47.9858165Z --- PASS: TestContainsBreakingCommit/empty (0.00s) -2026-07-05T01:36:47.9858613Z --- PASS: TestContainsBreakingCommit/no_breaking_commits (0.00s) -2026-07-05T01:36:47.9859100Z --- PASS: TestContainsBreakingCommit/feat!_is_breaking (0.00s) -2026-07-05T01:36:47.9859629Z --- PASS: TestContainsBreakingCommit/scope_with_bang_is_breaking (0.00s) -2026-07-05T01:36:47.9860455Z --- PASS: TestContainsBreakingCommit/BREAKING_CHANGE_footer_is_breaking (0.00s) -2026-07-05T01:36:47.9861282Z --- PASS: TestContainsBreakingCommit/single_breaking_among_many_is_breaking (0.00s) -2026-07-05T01:36:47.9861963Z --- PASS: TestContainsBreakingCommit/non-conventional_commit_doesn't_crash (0.00s) -2026-07-05T01:36:47.9862408Z === RUN TestPreflight_DefaultPromotion -2026-07-05T01:36:47.9862730Z --- PASS: TestPreflight_DefaultPromotion (0.00s) -2026-07-05T01:36:47.9863048Z === RUN TestPreflight_CascadePromotion -2026-07-05T01:36:47.9863350Z --- PASS: TestPreflight_CascadePromotion (0.00s) -2026-07-05T01:36:47.9863674Z === RUN TestPreflight_AllEnvironmentsInSync -2026-07-05T01:36:47.9864019Z --- PASS: TestPreflight_AllEnvironmentsInSync (0.00s) -2026-07-05T01:36:47.9864369Z === RUN TestPreflight_ExtractsPromotionFields -2026-07-05T01:36:47.9864720Z --- PASS: TestPreflight_ExtractsPromotionFields (0.00s) -2026-07-05T01:36:47.9865112Z === RUN TestPreflight_SourceImageDigest_FirstSortedNonEmpty -2026-07-05T01:36:47.9865557Z --- PASS: TestPreflight_SourceImageDigest_FirstSortedNonEmpty (0.00s) -2026-07-05T01:36:47.9865989Z === RUN TestPreflight_SourceImageDigest_EmptyWhenNoArtifact -2026-07-05T01:36:47.9866423Z --- PASS: TestPreflight_SourceImageDigest_EmptyWhenNoArtifact (0.00s) -2026-07-05T01:36:47.9866801Z === RUN TestPreflight_PrereleaseFinalEnv -2026-07-05T01:36:47.9867129Z --- PASS: TestPreflight_PrereleaseFinalEnv (0.00s) -2026-07-05T01:36:47.9867448Z === RUN TestPreflight_DeployChecks -2026-07-05T01:36:47.9867742Z --- PASS: TestPreflight_DeployChecks (0.00s) -2026-07-05T01:36:47.9868044Z === RUN TestPreflight_ForceFlag -2026-07-05T01:36:47.9868320Z --- PASS: TestPreflight_ForceFlag (0.00s) -2026-07-05T01:36:47.9868608Z === RUN TestPreflight_RollbackSHA -2026-07-05T01:36:47.9868898Z --- PASS: TestPreflight_RollbackSHA (0.00s) -2026-07-05T01:36:47.9869258Z === RUN TestPreflight_RollbackSHAEmpty_WhenNoTargetState -2026-07-05T01:36:47.9869680Z --- PASS: TestPreflight_RollbackSHAEmpty_WhenNoTargetState (0.00s) -2026-07-05T01:36:47.9870256Z === RUN TestPreflight_DeploysFilter -2026-07-05T01:36:47.9870567Z --- PASS: TestPreflight_DeploysFilter (0.00s) -2026-07-05T01:36:47.9870883Z === RUN TestDefaultPromotion -2026-07-05T01:36:47.9871384Z === RUN TestDefaultPromotion/single_step_promotion_from_dev_to_test -2026-07-05T01:36:47.9871836Z === RUN TestDefaultPromotion/sequential_promotion_through_all_envs -2026-07-05T01:36:47.9872304Z === RUN TestDefaultPromotion/all_environments_in_sync_-_nothing_to_do -2026-07-05T01:36:47.9872749Z === RUN TestDefaultPromotion/empty_state_-_nothing_to_promote -2026-07-05T01:36:47.9873107Z --- PASS: TestDefaultPromotion (0.01s) -2026-07-05T01:36:47.9873589Z --- PASS: TestDefaultPromotion/single_step_promotion_from_dev_to_test (0.00s) -2026-07-05T01:36:47.9874192Z --- PASS: TestDefaultPromotion/sequential_promotion_through_all_envs (0.00s) -2026-07-05T01:36:47.9874794Z --- PASS: TestDefaultPromotion/all_environments_in_sync_-_nothing_to_do (0.00s) -2026-07-05T01:36:47.9875369Z --- PASS: TestDefaultPromotion/empty_state_-_nothing_to_promote (0.00s) -2026-07-05T01:36:47.9875761Z === RUN TestCascadePromotion -2026-07-05T01:36:47.9876057Z === RUN TestCascadePromotion/cascade_dev-to-uat -2026-07-05T01:36:47.9876400Z === RUN TestCascadePromotion/cascade_dev-to-prod -2026-07-05T01:36:47.9876734Z === RUN TestCascadePromotion/cascade_test-to-uat -2026-07-05T01:36:47.9877072Z === RUN TestCascadePromotion/cascade_missing_target -2026-07-05T01:36:47.9877415Z === RUN TestCascadePromotion/cascade_invalid_format -2026-07-05T01:36:47.9877769Z === RUN TestCascadePromotion/cascade_source_has_no_state -2026-07-05T01:36:47.9878109Z --- PASS: TestCascadePromotion (0.01s) -2026-07-05T01:36:47.9878497Z --- PASS: TestCascadePromotion/cascade_dev-to-uat (0.00s) -2026-07-05T01:36:47.9878941Z --- PASS: TestCascadePromotion/cascade_dev-to-prod (0.00s) -2026-07-05T01:36:47.9879379Z --- PASS: TestCascadePromotion/cascade_test-to-uat (0.00s) -2026-07-05T01:36:47.9879826Z --- PASS: TestCascadePromotion/cascade_missing_target (0.00s) -2026-07-05T01:36:47.9880409Z --- PASS: TestCascadePromotion/cascade_invalid_format (0.00s) -2026-07-05T01:36:47.9881026Z --- PASS: TestCascadePromotion/cascade_source_has_no_state (0.00s) -2026-07-05T01:36:47.9881462Z === RUN TestDefaultPromotion_StripsRCSuffixOnPublishEnv -2026-07-05T01:36:47.9881871Z --- PASS: TestDefaultPromotion_StripsRCSuffixOnPublishEnv (0.00s) -2026-07-05T01:36:47.9882274Z === RUN TestCascadePromotion_StripsRCSuffixOnPublishEnv -2026-07-05T01:36:47.9882676Z --- PASS: TestCascadePromotion_StripsRCSuffixOnPublishEnv (0.00s) -2026-07-05T01:36:47.9883048Z === RUN TestCascadePromotion_AtomicBehavior -2026-07-05T01:36:47.9883386Z --- PASS: TestCascadePromotion_AtomicBehavior (0.00s) -2026-07-05T01:36:47.9883702Z === RUN TestStripRCSuffix -2026-07-05T01:36:47.9883960Z --- PASS: TestStripRCSuffix (0.00s) -2026-07-05T01:36:47.9884244Z === RUN TestStripRCSuffix_HotfixVersion -2026-07-05T01:36:47.9884565Z --- PASS: TestStripRCSuffix_HotfixVersion (0.00s) -2026-07-05T01:36:47.9884876Z === RUN TestPromotionResultToJSON -2026-07-05T01:36:47.9885166Z --- PASS: TestPromotionResultToJSON (0.00s) -2026-07-05T01:36:47.9885456Z === RUN TestIndexOf -2026-07-05T01:36:47.9885689Z --- PASS: TestIndexOf (0.00s) -2026-07-05T01:36:47.9885944Z === RUN TestTruncateSHA -2026-07-05T01:36:47.9886187Z --- PASS: TestTruncateSHA (0.00s) -2026-07-05T01:36:47.9886514Z === RUN TestCleanHotfixReleases_PublishedRelease_Completes -2026-07-05T01:36:47.9886943Z --- PASS: TestCleanHotfixReleases_PublishedRelease_Completes (0.00s) -2026-07-05T01:36:47.9887371Z === RUN TestCleanHotfixReleases_ReleaseDeleteError_KeepsTag -2026-07-05T01:36:47.9887798Z --- PASS: TestCleanHotfixReleases_ReleaseDeleteError_KeepsTag (0.00s) -2026-07-05T01:36:47.9888222Z === RUN TestCleanHotfixReleases_AlreadyDeleted_Idempotent -2026-07-05T01:36:47.9888651Z --- PASS: TestCleanHotfixReleases_AlreadyDeleted_Idempotent (12.01s) -2026-07-05T01:36:47.9889094Z === RUN TestRunLifecycleCleanup_BestEffort_DoesNotStrandOtherEnvs -2026-07-05T01:36:47.9889629Z Warning: rejoin cleanup for test: cleaning hotfix releases: transient cleanup failure for test -2026-07-05T01:36:47.9890319Z --- PASS: TestRunLifecycleCleanup_BestEffort_DoesNotStrandOtherEnvs (0.00s) -2026-07-05T01:36:47.9890893Z === RUN TestRejoin_Integration_FullLifecycle -2026-07-05T01:36:47.9891232Z --- PASS: TestRejoin_Integration_FullLifecycle (0.14s) -2026-07-05T01:36:47.9891564Z === RUN TestRejoin_ClearsDivergenceFields -2026-07-05T01:36:47.9891899Z --- PASS: TestRejoin_ClearsDivergenceFields (0.00s) -2026-07-05T01:36:47.9892219Z === RUN TestRejoin_DeletesEnvBranch -2026-07-05T01:36:47.9892515Z --- PASS: TestRejoin_DeletesEnvBranch (0.00s) -2026-07-05T01:36:47.9892836Z === RUN TestRejoin_CleansHotfixTagsAndDrafts -2026-07-05T01:36:47.9893177Z --- PASS: TestRejoin_CleansHotfixTagsAndDrafts (0.00s) -2026-07-05T01:36:47.9893529Z === RUN TestRejoin_PreservesOtherEnvsDivergence -2026-07-05T01:36:47.9893891Z --- PASS: TestRejoin_PreservesOtherEnvsDivergence (0.01s) -2026-07-05T01:36:47.9894288Z === RUN TestNormalPromotion_NonDiverged_TouchesNoLifecycle -2026-07-05T01:36:47.9894759Z --- PASS: TestNormalPromotion_NonDiverged_TouchesNoLifecycle (0.00s) -2026-07-05T01:36:47.9895132Z === RUN TestIsRollbackRef -2026-07-05T01:36:47.9895402Z === RUN TestIsRollbackRef/RollbackPrefixTrue -2026-07-05T01:36:47.9895712Z === RUN TestIsRollbackRef/HotfixPrefixFalse -2026-07-05T01:36:47.9896009Z === RUN TestIsRollbackRef/EmptyFalse -2026-07-05T01:36:47.9896313Z === RUN TestIsRollbackRef/PlainEnvBranchFalse -2026-07-05T01:36:47.9896626Z --- PASS: TestIsRollbackRef (0.00s) -2026-07-05T01:36:47.9896997Z --- PASS: TestIsRollbackRef/RollbackPrefixTrue (0.00s) -2026-07-05T01:36:47.9897412Z --- PASS: TestIsRollbackRef/HotfixPrefixFalse (0.00s) -2026-07-05T01:36:47.9897802Z --- PASS: TestIsRollbackRef/EmptyFalse (0.00s) -2026-07-05T01:36:47.9898209Z --- PASS: TestIsRollbackRef/PlainEnvBranchFalse (0.00s) -2026-07-05T01:36:47.9898587Z === RUN TestFinalize_RollbackRejoin_SkipsBranchDeletion -2026-07-05T01:36:47.9898989Z --- PASS: TestFinalize_RollbackRejoin_SkipsBranchDeletion (0.00s) -2026-07-05T01:36:47.9899381Z === RUN TestFinalize_HotfixRejoin_DeletesBranch -2026-07-05T01:36:47.9899870Z --- PASS: TestFinalize_HotfixRejoin_DeletesBranch (0.00s) -2026-07-05T01:36:47.9900405Z === RUN TestSaveConfig_NonDryRunPromote_PreservesUnmodeledManifestKeys -2026-07-05T01:36:47.9900935Z --- PASS: TestSaveConfig_NonDryRunPromote_PreservesUnmodeledManifestKeys (0.00s) -2026-07-05T01:36:47.9901326Z PASS -2026-07-05T01:36:47.9901535Z coverage: 73.5% of statements -2026-07-05T01:36:47.9901967Z ok github.com/stablekernel/cascade/internal/promote 13.476s coverage: 73.5% of statements -2026-07-05T01:36:48.0053922Z === RUN TestAutoPromoteResolve_DecisionMatrix -2026-07-05T01:36:48.0054895Z === RUN TestAutoPromoteResolve_DecisionMatrix/rc_tag_full_green_run_promotes_stripped_version -2026-07-05T01:36:48.0056115Z === RUN TestAutoPromoteResolve_DecisionMatrix/dryrun_version_is_gated_out_by_the_rc-only_gate -2026-07-05T01:36:48.0057181Z === RUN TestAutoPromoteResolve_DecisionMatrix/selective_run_is_gated_out_by_the_full_run_gate -2026-07-05T01:36:48.0058249Z === RUN TestAutoPromoteResolve_DecisionMatrix/non-success_fleet_conclusion_never_promotes -2026-07-05T01:36:48.0059303Z === RUN TestAutoPromoteResolve_DecisionMatrix/multi-digit_version_and_rc_number_strip_cleanly -2026-07-05T01:36:48.0060662Z === RUN TestAutoPromoteResolve_DecisionMatrix/head_branch_fallback_resolves_the_rc_when_no_artifact_is_present -2026-07-05T01:36:48.0061850Z === RUN TestAutoPromoteResolve_DecisionMatrix/non-rc_head_branch_with_no_artifact_is_a_clean_no-op -2026-07-05T01:36:48.0063064Z === RUN TestAutoPromoteResolve_DecisionMatrix/missing_full-run_marker_defaults_to_a_full_run_(pre-selector_artifact) -2026-07-05T01:36:48.0064011Z --- PASS: TestAutoPromoteResolve_DecisionMatrix (0.05s) -2026-07-05T01:36:48.0065066Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/rc_tag_full_green_run_promotes_stripped_version (0.01s) -2026-07-05T01:36:48.0066408Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/dryrun_version_is_gated_out_by_the_rc-only_gate (0.01s) -2026-07-05T01:36:48.0067736Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/selective_run_is_gated_out_by_the_full_run_gate (0.00s) -2026-07-05T01:36:48.0069281Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/non-success_fleet_conclusion_never_promotes (0.00s) -2026-07-05T01:36:48.0070735Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/multi-digit_version_and_rc_number_strip_cleanly (0.01s) -2026-07-05T01:36:48.0072183Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/head_branch_fallback_resolves_the_rc_when_no_artifact_is_present (0.01s) -2026-07-05T01:36:48.0073638Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/non-rc_head_branch_with_no_artifact_is_a_clean_no-op (0.01s) -2026-07-05T01:36:48.0075154Z --- PASS: TestAutoPromoteResolve_DecisionMatrix/missing_full-run_marker_defaults_to_a_full_run_(pre-selector_artifact) (0.01s) -2026-07-05T01:36:48.0076392Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions -2026-07-05T01:36:48.0077450Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_without_sha_passes -2026-07-05T01:36:48.0078644Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/update_without_sha_passes -2026-07-05T01:36:48.0079832Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/delete_without_sha_passes -2026-07-05T01:36:48.0081282Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_without_sha_fails -2026-07-05T01:36:48.0082492Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/prerelease_without_sha_fails -2026-07-05T01:36:48.0083689Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/publish_without_sha_fails -2026-07-05T01:36:48.0084880Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_with_sha_passes -2026-07-05T01:36:48.0085992Z === RUN TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_with_sha_passes -2026-07-05T01:36:48.0087234Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions (0.00s) -2026-07-05T01:36:48.0088581Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_without_sha_passes (0.00s) -2026-07-05T01:36:48.0090294Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/update_without_sha_passes (0.00s) -2026-07-05T01:36:48.0091817Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/delete_without_sha_passes (0.00s) -2026-07-05T01:36:48.0093312Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_without_sha_fails (0.00s) -2026-07-05T01:36:48.0094814Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/prerelease_without_sha_fails (0.00s) -2026-07-05T01:36:48.0096286Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/publish_without_sha_fails (0.00s) -2026-07-05T01:36:48.0097757Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/create_with_sha_passes (0.00s) -2026-07-05T01:36:48.0099187Z --- PASS: TestValidateManageReleaseFlags_SHARequiredOnlyForTagCreatingActions/lock_with_sha_passes (0.00s) -2026-07-05T01:36:48.0100391Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields -2026-07-05T01:36:48.0101118Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields/missing_repo -2026-07-05T01:36:48.0101948Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields/missing_environment -2026-07-05T01:36:48.0102777Z === RUN TestValidateManageReleaseFlags_OtherRequiredFields/missing_tag -2026-07-05T01:36:48.0103550Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields (0.00s) -2026-07-05T01:36:48.0104515Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields/missing_repo (0.00s) -2026-07-05T01:36:48.0105643Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields/missing_environment (0.00s) -2026-07-05T01:36:48.0106871Z --- PASS: TestValidateManageReleaseFlags_OtherRequiredFields/missing_tag (0.00s) -2026-07-05T01:36:48.0107786Z === RUN TestNewManager_DefaultBaseURL -2026-07-05T01:36:48.0108286Z --- PASS: TestNewManager_DefaultBaseURL (0.00s) -2026-07-05T01:36:48.0108798Z === RUN TestNewManager_RespectsAPIURLEnv -2026-07-05T01:36:48.0109306Z --- PASS: TestNewManager_RespectsAPIURLEnv (0.00s) -2026-07-05T01:36:48.0109849Z === RUN TestNewManagerWithURL_TrimsTrailingSlash -2026-07-05T01:36:48.0110597Z --- PASS: TestNewManagerWithURL_TrimsTrailingSlash (0.00s) -2026-07-05T01:36:48.0111100Z === RUN TestIsGitHubHost -2026-07-05T01:36:48.0111476Z --- PASS: TestIsGitHubHost (0.00s) -2026-07-05T01:36:48.0111910Z === RUN TestSplitVersionPrefix -2026-07-05T01:36:48.0112337Z === RUN TestSplitVersionPrefix/v1.2.3 -2026-07-05T01:36:48.0112793Z === RUN TestSplitVersionPrefix/1.0.0 -2026-07-05T01:36:48.0113258Z === RUN TestSplitVersionPrefix/rel-1.0.0 -2026-07-05T01:36:48.0113748Z === RUN TestSplitVersionPrefix/release/2.0.0 -2026-07-05T01:36:48.0114252Z === RUN TestSplitVersionPrefix/no-core-here -2026-07-05T01:36:48.0114746Z === RUN TestSplitVersionPrefix/v1.2 -2026-07-05T01:36:48.0115209Z --- PASS: TestSplitVersionPrefix (0.00s) -2026-07-05T01:36:48.0115790Z --- PASS: TestSplitVersionPrefix/v1.2.3 (0.00s) -2026-07-05T01:36:48.0116394Z --- PASS: TestSplitVersionPrefix/1.0.0 (0.00s) -2026-07-05T01:36:48.0117017Z --- PASS: TestSplitVersionPrefix/rel-1.0.0 (0.00s) -2026-07-05T01:36:48.0117662Z --- PASS: TestSplitVersionPrefix/release/2.0.0 (0.00s) -2026-07-05T01:36:48.0118330Z --- PASS: TestSplitVersionPrefix/no-core-here (0.00s) -2026-07-05T01:36:48.0118956Z --- PASS: TestSplitVersionPrefix/v1.2 (0.00s) -2026-07-05T01:36:48.0119468Z === RUN TestNewRequest_InvalidMethodErrors -2026-07-05T01:36:48.0120150Z --- PASS: TestNewRequest_InvalidMethodErrors (0.00s) -2026-07-05T01:36:48.0120654Z === RUN TestNewRequest_SetsHeaders -2026-07-05T01:36:48.0121105Z --- PASS: TestNewRequest_SetsHeaders (0.00s) -2026-07-05T01:36:48.0121553Z === RUN TestListTags_ParsesRefs -2026-07-05T01:36:48.0122160Z --- PASS: TestListTags_ParsesRefs (0.00s) -2026-07-05T01:36:48.0122642Z === RUN TestListTags_NotFoundReturnsEmpty -2026-07-05T01:36:48.0123150Z --- PASS: TestListTags_NotFoundReturnsEmpty (0.00s) -2026-07-05T01:36:48.0123679Z === RUN TestListTags_ServerErrorReturnsError -2026-07-05T01:36:48.0124223Z --- PASS: TestListTags_ServerErrorReturnsError (0.00s) -2026-07-05T01:36:48.0124795Z === RUN TestDeleteGitTag_AcceptsNoContentAndNotFound -2026-07-05T01:36:48.0125418Z --- PASS: TestDeleteGitTag_AcceptsNoContentAndNotFound (0.00s) -2026-07-05T01:36:48.0126023Z === RUN TestDeleteGitTag_ServerErrorReturnsError -2026-07-05T01:36:48.0126591Z --- PASS: TestDeleteGitTag_ServerErrorReturnsError (0.00s) -2026-07-05T01:36:48.0127151Z === RUN TestCreateGitTag_SkipsNonGitHubHost -2026-07-05T01:36:48.0127687Z --- PASS: TestCreateGitTag_SkipsNonGitHubHost (0.00s) -2026-07-05T01:36:48.0128229Z === RUN TestCreateGitTag_AcceptsCreatedAndExists -2026-07-05T01:36:48.0128793Z --- PASS: TestCreateGitTag_AcceptsCreatedAndExists (0.00s) -2026-07-05T01:36:48.0129380Z === RUN TestCreateGitTag_ServerErrorReturnsError -2026-07-05T01:36:48.0129939Z --- PASS: TestCreateGitTag_ServerErrorReturnsError (0.00s) -2026-07-05T01:36:48.0130667Z === RUN TestApiRequest_NonSuccessReturnsError -2026-07-05T01:36:48.0131213Z --- PASS: TestApiRequest_NonSuccessReturnsError (0.00s) -2026-07-05T01:36:48.0131772Z === RUN TestApiRequest_InvalidJSONReturnsError -2026-07-05T01:36:48.0132333Z --- PASS: TestApiRequest_InvalidJSONReturnsError (0.00s) -2026-07-05T01:36:48.0132852Z === RUN TestFindRelease_DirectTagHit -2026-07-05T01:36:48.0133315Z --- PASS: TestFindRelease_DirectTagHit (0.00s) -2026-07-05T01:36:48.0133813Z === RUN TestFindRelease_DirectErrorStatus -2026-07-05T01:36:48.0134316Z --- PASS: TestFindRelease_DirectErrorStatus (0.00s) -2026-07-05T01:36:48.0134896Z === RUN TestCleanupRCTags_InvalidPublishedVersionErrors -2026-07-05T01:36:48.0135565Z --- PASS: TestCleanupRCTags_InvalidPublishedVersionErrors (0.00s) -2026-07-05T01:36:48.0136388Z === RUN TestManager_CreateThenPrerelease_UsesCreatedReleaseID_NoFindRacePrerelease -2026-07-05T01:36:48.0137500Z --- PASS: TestManager_CreateThenPrerelease_UsesCreatedReleaseID_NoFindRacePrerelease (0.00s) -2026-07-05T01:36:48.0138357Z === RUN TestFindReleaseByTagOrSHA_BoundedRetry_EventuallySucceeds -2026-07-05T01:36:48.0139126Z --- PASS: TestFindReleaseByTagOrSHA_BoundedRetry_EventuallySucceeds (0.00s) -2026-07-05T01:36:48.0139881Z === RUN TestFindReleaseByTagOrSHA_BoundedRetry_NeverAppears -2026-07-05T01:36:48.0140737Z --- PASS: TestFindReleaseByTagOrSHA_BoundedRetry_NeverAppears (0.00s) -2026-07-05T01:36:48.0141416Z === RUN TestManager_SingleEnvHotfix_Finalize_Unaffected -2026-07-05T01:36:48.0142046Z --- PASS: TestManager_SingleEnvHotfix_Finalize_Unaffected (0.00s) -2026-07-05T01:36:48.0142620Z === RUN TestParseRCTag_IgnoresHotfixTags -2026-07-05T01:36:48.0143165Z === RUN TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.1 -2026-07-05T01:36:48.0143803Z === RUN TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.2 -2026-07-05T01:36:48.0144444Z === RUN TestParseRCTag_IgnoresHotfixTags/v1.3.0-rc.10.hotfix.5 -2026-07-05T01:36:48.0145055Z --- PASS: TestParseRCTag_IgnoresHotfixTags (0.00s) -2026-07-05T01:36:48.0145823Z --- PASS: TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.1 (0.00s) -2026-07-05T01:36:48.0146699Z --- PASS: TestParseRCTag_IgnoresHotfixTags/v1.4.0-rc.2.hotfix.2 (0.00s) -2026-07-05T01:36:48.0147586Z --- PASS: TestParseRCTag_IgnoresHotfixTags/v1.3.0-rc.10.hotfix.5 (0.00s) -2026-07-05T01:36:48.0148215Z === RUN TestCleanupRCTags_SkipsHotfixTags -2026-07-05T01:36:48.0148655Z Cleaning up RC tag: v1.4.0-rc.0 -2026-07-05T01:36:48.0163381Z Cleaning up RC tag: v1.4.0-rc.1 -2026-07-05T01:36:48.0163953Z --- PASS: TestCleanupRCTags_SkipsHotfixTags (0.00s) -2026-07-05T01:36:48.0164540Z === RUN TestCleanupStaleDrafts_IgnoresHotfixDrafts -2026-07-05T01:36:48.0165173Z Cleaning up stale draft: v1.4.0-rc.0 (tag: v1.4.0-rc.0, RC 0 < 2) -2026-07-05T01:36:48.0165848Z Cleaning up stale draft: v1.4.0-rc.1 (tag: v1.4.0-rc.1, RC 1 < 2) -2026-07-05T01:36:48.0166732Z --- PASS: TestCleanupStaleDrafts_IgnoresHotfixDrafts (0.00s) -2026-07-05T01:36:48.0167371Z === RUN TestCleanupStaleDrafts_HotfixCurrentTagIsNoOp -2026-07-05T01:36:48.0168007Z --- PASS: TestCleanupStaleDrafts_HotfixCurrentTagIsNoOp (0.00s) -2026-07-05T01:36:48.0168565Z === RUN TestValidateAction -2026-07-05T01:36:48.0168952Z === RUN TestValidateAction/create -2026-07-05T01:36:48.0169364Z === RUN TestValidateAction/update -2026-07-05T01:36:48.0169769Z === RUN TestValidateAction/lock -2026-07-05T01:36:48.0170357Z === RUN TestValidateAction/publish -2026-07-05T01:36:48.0170797Z === RUN TestValidateAction/delete -2026-07-05T01:36:48.0171207Z === RUN TestValidateAction/invalid -2026-07-05T01:36:48.0171622Z === RUN TestValidateAction/#00 -2026-07-05T01:36:48.0172034Z --- PASS: TestValidateAction (0.00s) -2026-07-05T01:36:48.0172557Z --- PASS: TestValidateAction/create (0.00s) -2026-07-05T01:36:48.0173131Z --- PASS: TestValidateAction/update (0.00s) -2026-07-05T01:36:48.0173698Z --- PASS: TestValidateAction/lock (0.00s) -2026-07-05T01:36:48.0174266Z --- PASS: TestValidateAction/publish (0.00s) -2026-07-05T01:36:48.0174834Z --- PASS: TestValidateAction/delete (0.00s) -2026-07-05T01:36:48.0175368Z --- PASS: TestValidateAction/invalid (0.00s) -2026-07-05T01:36:48.0175946Z --- PASS: TestValidateAction/#00 (0.00s) -2026-07-05T01:36:48.0176358Z === RUN TestCapitalizeFirst -2026-07-05T01:36:48.0176741Z === RUN TestCapitalizeFirst/dev -2026-07-05T01:36:48.0177138Z === RUN TestCapitalizeFirst/DEV -2026-07-05T01:36:48.0177538Z === RUN TestCapitalizeFirst/test -2026-07-05T01:36:48.0177959Z === RUN TestCapitalizeFirst/prod -2026-07-05T01:36:48.0178376Z === RUN TestCapitalizeFirst/staging -2026-07-05T01:36:48.0178821Z === RUN TestCapitalizeFirst/#00 -2026-07-05T01:36:48.0179221Z === RUN TestCapitalizeFirst/a -2026-07-05T01:36:48.0179631Z --- PASS: TestCapitalizeFirst (0.00s) -2026-07-05T01:36:48.0180289Z --- PASS: TestCapitalizeFirst/dev (0.00s) -2026-07-05T01:36:48.0180847Z --- PASS: TestCapitalizeFirst/DEV (0.00s) -2026-07-05T01:36:48.0181564Z --- PASS: TestCapitalizeFirst/test (0.00s) -2026-07-05T01:36:48.0182117Z --- PASS: TestCapitalizeFirst/prod (0.00s) -2026-07-05T01:36:48.0182684Z --- PASS: TestCapitalizeFirst/staging (0.00s) -2026-07-05T01:36:48.0183246Z --- PASS: TestCapitalizeFirst/#00 (0.00s) -2026-07-05T01:36:48.0183771Z --- PASS: TestCapitalizeFirst/a (0.00s) -2026-07-05T01:36:48.0184221Z === RUN TestGenerateReleaseName -2026-07-05T01:36:48.0184669Z === RUN TestGenerateReleaseName/dev_v0.1.0-rc.0 -2026-07-05T01:36:48.0185175Z === RUN TestGenerateReleaseName/test_v1.2.3-rc.5 -2026-07-05T01:36:48.0185720Z === RUN TestGenerateReleaseName/staging_v1.0.0-rc.3 -2026-07-05T01:36:48.0186271Z === RUN TestGenerateReleaseName/prod_v1.0.0 -2026-07-05T01:36:48.0186765Z --- PASS: TestGenerateReleaseName (0.00s) -2026-07-05T01:36:48.0187406Z --- PASS: TestGenerateReleaseName/dev_v0.1.0-rc.0 (0.00s) -2026-07-05T01:36:48.0188125Z --- PASS: TestGenerateReleaseName/test_v1.2.3-rc.5 (0.00s) -2026-07-05T01:36:48.0188870Z --- PASS: TestGenerateReleaseName/staging_v1.0.0-rc.3 (0.00s) -2026-07-05T01:36:48.0189567Z --- PASS: TestGenerateReleaseName/prod_v1.0.0 (0.00s) -2026-07-05T01:36:48.0190237Z === RUN TestGenerateStatusLine -2026-07-05T01:36:48.0190661Z === RUN TestGenerateStatusLine/dev -2026-07-05T01:36:48.0191113Z === RUN TestGenerateStatusLine/prod -2026-07-05T01:36:48.0191568Z === RUN TestGenerateStatusLine/staging -2026-07-05T01:36:48.0192036Z --- PASS: TestGenerateStatusLine (0.00s) -2026-07-05T01:36:48.0192573Z --- PASS: TestGenerateStatusLine/dev (0.00s) -2026-07-05T01:36:48.0193144Z --- PASS: TestGenerateStatusLine/prod (0.00s) -2026-07-05T01:36:48.0193752Z --- PASS: TestGenerateStatusLine/staging (0.00s) -2026-07-05T01:36:48.0194230Z === RUN TestAddStatusLine -2026-07-05T01:36:48.0194616Z --- PASS: TestAddStatusLine (0.00s) -2026-07-05T01:36:48.0195067Z === RUN TestAddStatusLine_SkipsPrerelease -2026-07-05T01:36:48.0195731Z --- PASS: TestAddStatusLine_SkipsPrerelease (0.00s) -2026-07-05T01:36:48.0196272Z === RUN TestUpdateStatusLine_SkipsPrerelease -2026-07-05T01:36:48.0196813Z --- PASS: TestUpdateStatusLine_SkipsPrerelease (0.00s) -2026-07-05T01:36:48.0197310Z === RUN TestRemoveStatusLine -2026-07-05T01:36:48.0197744Z === RUN TestRemoveStatusLine/with_status_line -2026-07-05T01:36:48.0198248Z === RUN TestRemoveStatusLine/without_status_line -2026-07-05T01:36:48.0198753Z === RUN TestRemoveStatusLine/empty_body -2026-07-05T01:36:48.0199228Z === RUN TestRemoveStatusLine/only_status_line -2026-07-05T01:36:48.0199705Z --- PASS: TestRemoveStatusLine (0.00s) -2026-07-05T01:36:48.0200505Z --- PASS: TestRemoveStatusLine/with_status_line (0.00s) -2026-07-05T01:36:48.0201203Z --- PASS: TestRemoveStatusLine/without_status_line (0.00s) -2026-07-05T01:36:48.0201861Z --- PASS: TestRemoveStatusLine/empty_body (0.00s) -2026-07-05T01:36:48.0202505Z --- PASS: TestRemoveStatusLine/only_status_line (0.00s) -2026-07-05T01:36:48.0203007Z === RUN TestManager_Create -2026-07-05T01:36:48.0203408Z --- PASS: TestManager_Create (0.00s) -2026-07-05T01:36:48.0203861Z === RUN TestManager_Update_ExistingRelease -2026-07-05T01:36:48.0204379Z --- PASS: TestManager_Update_ExistingRelease (0.00s) -2026-07-05T01:36:48.0204876Z === RUN TestManager_Delete_DraftRelease -2026-07-05T01:36:48.0205357Z --- PASS: TestManager_Delete_DraftRelease (0.00s) -2026-07-05T01:36:48.0205856Z === RUN TestManager_Delete_PublishedRelease -2026-07-05T01:36:48.0206388Z --- PASS: TestManager_Delete_PublishedRelease (0.00s) -2026-07-05T01:36:48.0206988Z === RUN TestManager_Delete_PublishedRelease_AllowPublished -2026-07-05T01:36:48.0207654Z --- PASS: TestManager_Delete_PublishedRelease_AllowPublished (0.00s) -2026-07-05T01:36:48.0208390Z === RUN TestFindReleaseByTagOrSHA_PrefersExactTagOverStaleSHADraft -2026-07-05T01:36:48.0209186Z --- PASS: TestFindReleaseByTagOrSHA_PrefersExactTagOverStaleSHADraft (0.00s) -2026-07-05T01:36:48.0209891Z === RUN TestManager_Publish_RerunFallsBackToSemverTag -2026-07-05T01:36:48.0210877Z --- PASS: TestManager_Publish_RerunFallsBackToSemverTag (0.00s) -2026-07-05T01:36:48.0211440Z === RUN TestManager_Delete_NotFound -2026-07-05T01:36:48.0211899Z --- PASS: TestManager_Delete_NotFound (12.01s) -2026-07-05T01:36:48.0212353Z === RUN TestManager_Publish -2026-07-05T01:36:48.0212748Z Cleaning up RC tag: v1.0.0-rc.0 -2026-07-05T01:36:48.0213124Z Cleaning up RC tag: v1.0.0-rc.3 -2026-07-05T01:36:48.0213493Z Cleaning up RC tag: v1.0.0-rc.5 -2026-07-05T01:36:48.0213866Z Cleaning up RC tag: v0.9.0-rc.2 -2026-07-05T01:36:48.0214262Z --- PASS: TestManager_Publish (0.00s) -2026-07-05T01:36:48.0214715Z === RUN TestManager_Publish_CustomTagPrefix -2026-07-05T01:36:48.0215175Z Cleaning up RC tag: rel-0.1.0-rc.0 -2026-07-05T01:36:48.0215586Z Cleaning up RC tag: rel-0.1.0-rc.1 -2026-07-05T01:36:48.0216053Z --- PASS: TestManager_Publish_CustomTagPrefix (0.00s) -2026-07-05T01:36:48.0216589Z === RUN TestManager_Create_CleansUpStaleDrafts -2026-07-05T01:36:48.0217186Z Cleaning up stale draft: v0.1.0-rc.1 (tag: v0.1.0-rc.1, RC 1 < 3) -2026-07-05T01:36:48.0217845Z Cleaning up stale draft: v0.1.0-rc.2 (tag: v0.1.0-rc.2, RC 2 < 3) -2026-07-05T01:36:48.0218557Z Preserving draft v0.1.1-rc.1 (different base version: v0.1.1 vs v0.1.0) -2026-07-05T01:36:48.0219227Z --- PASS: TestManager_Create_CleansUpStaleDrafts (0.00s) -2026-07-05T01:36:48.0219774Z === RUN TestCleanupRCTags_ReapsSupersededBases -2026-07-05T01:36:48.0220402Z Cleaning up RC tag: v0.9.0-rc.0 -2026-07-05T01:36:48.0220784Z Cleaning up RC tag: v1.0.0-rc.0 -2026-07-05T01:36:48.0221158Z Cleaning up RC tag: v1.0.0-rc.4 -2026-07-05T01:36:48.0221536Z Cleaning up RC tag: v1.0.1-rc.0 -2026-07-05T01:36:48.0221920Z Cleaning up RC tag: v1.0.1-rc.2 -2026-07-05T01:36:48.0222394Z --- PASS: TestCleanupRCTags_ReapsSupersededBases (0.00s) -2026-07-05T01:36:48.0222895Z === RUN TestParseRCTag -2026-07-05T01:36:48.0223266Z === RUN TestParseRCTag/v1.0.0-rc.0 -2026-07-05T01:36:48.0223693Z === RUN TestParseRCTag/v1.0.0-rc.1 -2026-07-05T01:36:48.0224262Z === RUN TestParseRCTag/v1.2.3-rc.42 -2026-07-05T01:36:48.0224688Z === RUN TestParseRCTag/v0.1.0-rc.3 -2026-07-05T01:36:48.0225110Z === RUN TestParseRCTag/rel-0.1.0-rc.0 -2026-07-05T01:36:48.0225547Z === RUN TestParseRCTag/rel-1.2.3-rc.7 -2026-07-05T01:36:48.0225991Z === RUN TestParseRCTag/release/2.0.0-rc.4 -2026-07-05T01:36:48.0226449Z === RUN TestParseRCTag/1.0.0-rc.1 -2026-07-05T01:36:48.0226862Z === RUN TestParseRCTag/0.1.0-rc.0 -2026-07-05T01:36:48.0227268Z === RUN TestParseRCTag/v1.0.0 -2026-07-05T01:36:48.0227659Z === RUN TestParseRCTag/v1.0-rc.1 -2026-07-05T01:36:48.0228069Z === RUN TestParseRCTag/v1.0.0-1 -2026-07-05T01:36:48.0228507Z === RUN TestParseRCTag/v1.0.0-rc.2.hotfix.1 -2026-07-05T01:36:48.0228967Z === RUN TestParseRCTag/v1.0.0-rc.x -2026-07-05T01:36:48.0229373Z === RUN TestParseRCTag/invalid -2026-07-05T01:36:48.0229766Z === RUN TestParseRCTag/#00 -2026-07-05T01:36:48.0230314Z --- PASS: TestParseRCTag (0.00s) -2026-07-05T01:36:48.0230828Z --- PASS: TestParseRCTag/v1.0.0-rc.0 (0.00s) -2026-07-05T01:36:48.0231403Z --- PASS: TestParseRCTag/v1.0.0-rc.1 (0.00s) -2026-07-05T01:36:48.0231964Z --- PASS: TestParseRCTag/v1.2.3-rc.42 (0.00s) -2026-07-05T01:36:48.0232530Z --- PASS: TestParseRCTag/v0.1.0-rc.3 (0.00s) -2026-07-05T01:36:48.0233098Z --- PASS: TestParseRCTag/rel-0.1.0-rc.0 (0.00s) -2026-07-05T01:36:48.0233684Z --- PASS: TestParseRCTag/rel-1.2.3-rc.7 (0.00s) -2026-07-05T01:36:48.0234286Z --- PASS: TestParseRCTag/release/2.0.0-rc.4 (0.00s) -2026-07-05T01:36:48.0234868Z --- PASS: TestParseRCTag/1.0.0-rc.1 (0.00s) -2026-07-05T01:36:48.0235422Z --- PASS: TestParseRCTag/0.1.0-rc.0 (0.00s) -2026-07-05T01:36:48.0235956Z --- PASS: TestParseRCTag/v1.0.0 (0.00s) -2026-07-05T01:36:48.0236490Z --- PASS: TestParseRCTag/v1.0-rc.1 (0.00s) -2026-07-05T01:36:48.0237028Z --- PASS: TestParseRCTag/v1.0.0-1 (0.00s) -2026-07-05T01:36:48.0237628Z --- PASS: TestParseRCTag/v1.0.0-rc.2.hotfix.1 (0.00s) -2026-07-05T01:36:48.0238235Z --- PASS: TestParseRCTag/v1.0.0-rc.x (0.00s) -2026-07-05T01:36:48.0238967Z --- PASS: TestParseRCTag/invalid (0.00s) -2026-07-05T01:36:48.0239488Z --- PASS: TestParseRCTag/#00 (0.00s) -2026-07-05T01:36:48.0239906Z === RUN TestNewCommand -2026-07-05T01:36:48.0240470Z --- PASS: TestNewCommand (0.00s) -2026-07-05T01:36:48.0240943Z === RUN TestCreateGitTag_SkipsGitDataAPIOnGitea -2026-07-05T01:36:48.0241521Z --- PASS: TestCreateGitTag_SkipsGitDataAPIOnGitea (0.00s) -2026-07-05T01:36:48.0242101Z === RUN TestCreateGitTag_CallsGitDataAPIOnGitHub -2026-07-05T01:36:48.0242688Z --- PASS: TestCreateGitTag_CallsGitDataAPIOnGitHub (0.00s) -2026-07-05T01:36:48.0243235Z === RUN TestManager_Create_HostGating -2026-07-05T01:36:48.0243806Z === RUN TestManager_Create_HostGating/github_host_issues_release_POST -2026-07-05T01:36:48.0244541Z === RUN TestManager_Create_HostGating/gitea_host_skips_release_POST -2026-07-05T01:36:48.0245166Z --- PASS: TestManager_Create_HostGating (0.00s) -2026-07-05T01:36:48.0245978Z --- PASS: TestManager_Create_HostGating/github_host_issues_release_POST (0.00s) -2026-07-05T01:36:48.0246936Z --- PASS: TestManager_Create_HostGating/gitea_host_skips_release_POST (0.00s) -2026-07-05T01:36:48.0247591Z === RUN TestManager_Prerelease_HostGating -2026-07-05T01:36:48.0248222Z === RUN TestManager_Prerelease_HostGating/github_host_issues_prerelease_PATCH -2026-07-05T01:36:48.0249032Z === RUN TestManager_Prerelease_HostGating/gitea_host_skips_prerelease_PATCH -2026-07-05T01:36:48.0249718Z --- PASS: TestManager_Prerelease_HostGating (0.00s) -2026-07-05T01:36:48.0250744Z --- PASS: TestManager_Prerelease_HostGating/github_host_issues_prerelease_PATCH (0.00s) -2026-07-05T01:36:48.0251852Z --- PASS: TestManager_Prerelease_HostGating/gitea_host_skips_prerelease_PATCH (0.00s) -2026-07-05T01:36:48.0252497Z PASS -2026-07-05T01:36:48.0252808Z coverage: 78.1% of statements -2026-07-05T01:36:48.0253489Z ok github.com/stablekernel/cascade/internal/release 13.148s coverage: 78.1% of statements -2026-07-05T01:36:48.0254214Z === RUN TestNewCommand_Structure -2026-07-05T01:36:48.0254920Z --- PASS: TestNewCommand_Structure (0.00s) -2026-07-05T01:36:48.0255488Z === RUN TestNewCommand_PersistentPreRunE_AutoDetectsConfig -2026-07-05T01:36:48.0256184Z --- PASS: TestNewCommand_PersistentPreRunE_AutoDetectsConfig (0.00s) -2026-07-05T01:36:48.0256770Z === RUN TestRunReset_InitError -2026-07-05T01:36:48.0257193Z --- PASS: TestRunReset_InitError (0.00s) -2026-07-05T01:36:48.0257653Z === RUN TestRunReset_DryRunInitError -2026-07-05T01:36:48.0258531Z [INFO] [DRY-RUN] Preview mode - no changes will be made -2026-07-05T01:36:48.0259104Z --- PASS: TestRunReset_DryRunInitError (0.00s) -2026-07-05T01:36:48.0259571Z === RUN TestNew_Success -2026-07-05T01:36:48.0259947Z --- PASS: TestNew_Success (0.03s) -2026-07-05T01:36:48.0260536Z === RUN TestNew_ResetStateLoadsManifest -2026-07-05T01:36:48.0261034Z --- PASS: TestNew_ResetStateLoadsManifest (0.02s) -2026-07-05T01:36:48.0261554Z === RUN TestNew_ResetStateMissingManifest -2026-07-05T01:36:48.0262083Z --- PASS: TestNew_ResetStateMissingManifest (0.02s) -2026-07-05T01:36:48.0262623Z === RUN TestNew_CustomConfigAndManifestKey -2026-07-05T01:36:48.0263149Z --- PASS: TestNew_CustomConfigAndManifestKey (0.02s) -2026-07-05T01:36:48.0263654Z === RUN TestGetRepoInfo_Success -2026-07-05T01:36:48.0264091Z --- PASS: TestGetRepoInfo_Success (0.02s) -2026-07-05T01:36:48.0264545Z === RUN TestGetRepoInfo_NoRemote -2026-07-05T01:36:48.0264985Z --- PASS: TestGetRepoInfo_NoRemote (0.01s) -2026-07-05T01:36:48.0265421Z === RUN TestCurrentBranch -2026-07-05T01:36:48.0265800Z --- PASS: TestCurrentBranch (0.02s) -2026-07-05T01:36:48.0266207Z === RUN TestGitOutput_Error -2026-07-05T01:36:48.0266623Z --- PASS: TestGitOutput_Error (0.02s) -2026-07-05T01:36:48.0267058Z === RUN TestDeleteAllTags_NoTags -2026-07-05T01:36:48.0267553Z [DEBUG] Fetching tags... -2026-07-05T01:36:48.0267994Z git@github.com: Permission denied (publickey). -2026-07-05T01:36:48.0268499Z fatal: Could not read from remote repository. -2026-07-05T01:36:48.0268815Z -2026-07-05T01:36:48.0269217Z Please make sure you have the correct access rights -2026-07-05T01:36:48.0269706Z and the repository exists. -2026-07-05T01:36:48.0270402Z [WARN] Failed to fetch tags: exit status 128 -2026-07-05T01:36:48.0270935Z [INFO] No tags to delete -2026-07-05T01:36:48.0271365Z --- PASS: TestDeleteAllTags_NoTags (0.21s) -2026-07-05T01:36:48.0271819Z === RUN TestDeleteAllTags_DryRun -2026-07-05T01:36:48.0272276Z [DEBUG] Fetching tags... -2026-07-05T01:36:48.0272718Z git@github.com: Permission denied (publickey). -2026-07-05T01:36:48.0273216Z fatal: Could not read from remote repository. -2026-07-05T01:36:48.0273524Z -2026-07-05T01:36:48.0273745Z Please make sure you have the correct access rights -2026-07-05T01:36:48.0274215Z and the repository exists. -2026-07-05T01:36:48.0274712Z [WARN] Failed to fetch tags: exit status 128 -2026-07-05T01:36:48.0275249Z [INFO] Found 2 tags to delete -2026-07-05T01:36:48.0275835Z [INFO] [DRY-RUN] Would delete tag: v1.0.0 -2026-07-05T01:36:48.0276417Z [INFO] [DRY-RUN] Would delete tag: v1.1.0 -2026-07-05T01:36:48.0276896Z --- PASS: TestDeleteAllTags_DryRun (0.22s) -2026-07-05T01:36:48.0277399Z === RUN TestDeleteAllTags_DeletesLocalAndRemote -2026-07-05T01:36:48.0277912Z [DEBUG] Fetching tags... -2026-07-05T01:36:48.0278378Z [INFO] Found 1 tags to delete -2026-07-05T01:36:48.0278879Z [DEBUG] Deleting remote tag: v1.0.0 -2026-07-05T01:36:48.0279452Z To /tmp/TestDeleteAllTags_DeletesLocalAndRemote4169844748/001 -2026-07-05T01:36:48.0280171Z - [deleted] v1.0.0 -2026-07-05T01:36:48.0280648Z [DEBUG] Deleting local tag: v1.0.0 -2026-07-05T01:36:48.0281083Z Deleted tag 'v1.0.0' (was 844eca8) -2026-07-05T01:36:48.0281538Z [INFO] Deleted 1 tags -2026-07-05T01:36:48.0282020Z --- PASS: TestDeleteAllTags_DeletesLocalAndRemote (0.08s) -2026-07-05T01:36:48.0282627Z === RUN TestCommitAndPush_RecoversFromNonFastForward -2026-07-05T01:36:48.0283240Z [INFO] Resetting state for 1 environments -2026-07-05T01:36:48.0284478Z [DEBUG] Wrote updated config to /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/003/manifest.yaml -2026-07-05T01:36:48.0285404Z [INFO] Reset state in manifest -2026-07-05T01:36:48.0285927Z [main d7be050] chore: reset state for testing [skip ci] -2026-07-05T01:36:48.0286491Z 1 file changed, 4 insertions(+), 8 deletions(-) -2026-07-05T01:36:48.0287131Z To /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001 -2026-07-05T01:36:48.0287778Z ! [rejected] main -> main (fetch first) -2026-07-05T01:36:48.0288580Z error: failed to push some refs to '/tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001' -2026-07-05T01:36:48.0289529Z hint: Updates were rejected because the remote contains work that you do not -2026-07-05T01:36:48.0290719Z hint: have locally. This is usually caused by another repository pushing to -2026-07-05T01:36:48.0291460Z hint: the same ref. If you want to integrate the remote changes, use -2026-07-05T01:36:48.0292050Z hint: 'git pull' before pushing again. -2026-07-05T01:36:48.0292661Z hint: See the 'Note about fast-forwards' in 'git push --help' for details. -2026-07-05T01:36:48.0293582Z [WARN] Push rejected (attempt 1/3); re-applying reset onto updated trunk -2026-07-05T01:36:48.0294354Z From /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001 -2026-07-05T01:36:48.0294966Z * branch main -> FETCH_HEAD -2026-07-05T01:36:48.0295480Z 9d1f8bb..eaacf7c main -> origin/main -2026-07-05T01:36:48.0295934Z HEAD is now at eaacf7c concurrent promote -2026-07-05T01:36:48.0296956Z [DEBUG] Wrote updated config to /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/003/manifest.yaml -2026-07-05T01:36:48.0297882Z [main c7bfdcb] chore: reset state for testing [skip ci] -2026-07-05T01:36:48.0298448Z 1 file changed, 4 insertions(+), 8 deletions(-) -2026-07-05T01:36:48.0299075Z To /tmp/TestCommitAndPush_RecoversFromNonFastForward2697679333/001 -2026-07-05T01:36:48.0299716Z eaacf7c..c7bfdcb main -> main -2026-07-05T01:36:48.0300588Z [INFO] Committed and pushed state reset -2026-07-05T01:36:48.0301193Z --- PASS: TestCommitAndPush_RecoversFromNonFastForward (2.16s) -2026-07-05T01:36:48.0301752Z === RUN TestParseGitURL -2026-07-05T01:36:48.0302143Z === RUN TestParseGitURL/SSH_format -2026-07-05T01:36:48.0302613Z === RUN TestParseGitURL/SSH_format_without_.git -2026-07-05T01:36:48.0303099Z === RUN TestParseGitURL/HTTPS_format -2026-07-05T01:36:48.0303581Z === RUN TestParseGitURL/HTTPS_format_without_.git -2026-07-05T01:36:48.0304107Z === RUN TestParseGitURL/unsupported_format -2026-07-05T01:36:48.0304592Z === RUN TestParseGitURL/invalid_SSH_format -2026-07-05T01:36:48.0305035Z --- PASS: TestParseGitURL (0.00s) -2026-07-05T01:36:48.0305567Z --- PASS: TestParseGitURL/SSH_format (0.00s) -2026-07-05T01:36:48.0306229Z --- PASS: TestParseGitURL/SSH_format_without_.git (0.00s) -2026-07-05T01:36:48.0306866Z --- PASS: TestParseGitURL/HTTPS_format (0.00s) -2026-07-05T01:36:48.0307534Z --- PASS: TestParseGitURL/HTTPS_format_without_.git (0.00s) -2026-07-05T01:36:48.0308230Z --- PASS: TestParseGitURL/unsupported_format (0.00s) -2026-07-05T01:36:48.0308871Z --- PASS: TestParseGitURL/invalid_SSH_format (0.00s) -2026-07-05T01:36:48.0309353Z === RUN TestNew_NotGitRepo -2026-07-05T01:36:48.0309756Z --- PASS: TestNew_NotGitRepo (0.00s) -2026-07-05T01:36:48.0310320Z === RUN TestNew_EmptyPath -2026-07-05T01:36:48.0311038Z reset_test.go:85: not running in a git repository -2026-07-05T01:36:48.0311548Z --- SKIP: TestNew_EmptyPath (0.00s) -2026-07-05T01:36:48.0311967Z === RUN TestOptions_Defaults -2026-07-05T01:36:48.0312383Z --- PASS: TestOptions_Defaults (0.00s) -2026-07-05T01:36:48.0312799Z === RUN TestResult_ZeroValue -2026-07-05T01:36:48.0313197Z --- PASS: TestResult_ZeroValue (0.00s) -2026-07-05T01:36:48.0313630Z === RUN TestResetState_DryRun -2026-07-05T01:36:48.0314170Z [INFO] Resetting state for 2 environments -2026-07-05T01:36:48.0314948Z [INFO] [DRY-RUN] Would reset state for: dev -2026-07-05T01:36:48.0315572Z [INFO] [DRY-RUN] Would reset state for: prod -2026-07-05T01:36:48.0316071Z --- PASS: TestResetState_DryRun (0.00s) -2026-07-05T01:36:48.0316525Z === RUN TestResetState_ActualReset -2026-07-05T01:36:48.0317059Z [INFO] Resetting state for 2 environments -2026-07-05T01:36:48.0318020Z [DEBUG] Wrote updated config to /tmp/TestResetState_ActualReset4053202802/001/.github/manifest.yaml -2026-07-05T01:36:48.0318864Z [INFO] Reset state in manifest -2026-07-05T01:36:48.0319327Z --- PASS: TestResetState_ActualReset (0.00s) -2026-07-05T01:36:48.0319804Z === RUN TestResetState_AlreadyEmpty -2026-07-05T01:36:48.0320513Z [INFO] Resetting state for 2 environments -2026-07-05T01:36:48.0321476Z [DEBUG] Wrote updated config to /tmp/TestResetState_AlreadyEmpty3166278157/001/.github/manifest.yaml -2026-07-05T01:36:48.0322320Z [INFO] Reset state in manifest -2026-07-05T01:36:48.0322800Z --- PASS: TestResetState_AlreadyEmpty (0.00s) -2026-07-05T01:36:48.0323282Z === RUN TestResetState_NilConfig -2026-07-05T01:36:48.0323726Z --- PASS: TestResetState_NilConfig (0.00s) -2026-07-05T01:36:48.0324170Z === RUN TestWriteConfig -2026-07-05T01:36:48.0324938Z [DEBUG] Wrote updated config to /tmp/TestWriteConfig3398744629/001/.github/manifest.yaml -2026-07-05T01:36:48.0325662Z --- PASS: TestWriteConfig (0.00s) -2026-07-05T01:36:48.0326035Z PASS -2026-07-05T01:36:48.0326333Z coverage: 59.6% of statements -2026-07-05T01:36:48.0326994Z ok github.com/stablekernel/cascade/internal/reset 3.855s coverage: 59.6% of statements -2026-07-05T01:36:48.0327841Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetEnvShaVersion -2026-07-05T01:36:48.0328620Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetEnvShaVersion (0.00s) -2026-07-05T01:36:48.0329336Z === RUN TestRollbackPreflight_DefaultTarget_UsesRing -2026-07-05T01:36:48.0329975Z --- PASS: TestRollbackPreflight_DefaultTarget_UsesRing (0.00s) -2026-07-05T01:36:48.0330747Z === RUN TestRollbackPreflight_UnresolvableEmitsCannotProceed -2026-07-05T01:36:48.0331365Z --- PASS: TestRollbackPreflight_UnresolvableEmitsCannotProceed (0.01s) -2026-07-05T01:36:48.0331812Z === RUN TestRollbackFinalize_SkippedDeployableNotCounted -2026-07-05T01:36:48.0332155Z State updated for prod (not committed) -2026-07-05T01:36:48.0332522Z --- PASS: TestRollbackFinalize_SkippedDeployableNotCounted (0.00s) -2026-07-05T01:36:48.0332941Z === RUN TestRollbackFinalize_AppliesWhenDeploySucceeded -2026-07-05T01:36:48.0333274Z State updated for prod (not committed) -2026-07-05T01:36:48.0333627Z --- PASS: TestRollbackFinalize_AppliesWhenDeploySucceeded (0.01s) -2026-07-05T01:36:48.0334022Z === RUN TestRollbackFinalize_AbortsWhenDeployFailed -2026-07-05T01:36:48.0334402Z --- PASS: TestRollbackFinalize_AbortsWhenDeployFailed (0.00s) -2026-07-05T01:36:48.0334820Z === RUN TestRollbackFinalize_AbortsWhenNoInScopeDeploySucceeded -2026-07-05T01:36:48.0335289Z --- PASS: TestRollbackFinalize_AbortsWhenNoInScopeDeploySucceeded (0.00s) -2026-07-05T01:36:48.0335777Z === RUN TestRollbackFinalize_NoDeploysConfigured_StillApplies -2026-07-05T01:36:48.0336129Z State updated for prod (not committed) -2026-07-05T01:36:48.0336505Z --- PASS: TestRollbackFinalize_NoDeploysConfigured_StillApplies (0.00s) -2026-07-05T01:36:48.0336962Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetSource_State -2026-07-05T01:36:48.0337409Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetSource_State (0.00s) -2026-07-05T01:36:48.0337893Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetSource_PreviousRing -2026-07-05T01:36:48.0338412Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetSource_PreviousRing (0.00s) -2026-07-05T01:36:48.0338997Z === RUN TestRollbackPreflight_GHAOutput_EmitsTargetSource_DefaultPreviousRing -2026-07-05T01:36:48.0339571Z --- PASS: TestRollbackPreflight_GHAOutput_EmitsTargetSource_DefaultPreviousRing (0.00s) -2026-07-05T01:36:48.0340260Z === RUN TestBuildStatePutArgs_StampsBotAuthor -2026-07-05T01:36:48.0340760Z --- PASS: TestBuildStatePutArgs_StampsBotAuthor (0.00s) -2026-07-05T01:36:48.0341135Z === RUN TestBuildStatePutArgs_HonorsCustomIdentity -2026-07-05T01:36:48.0341523Z --- PASS: TestBuildStatePutArgs_HonorsCustomIdentity (0.00s) -2026-07-05T01:36:48.0341905Z === RUN TestCommand_RollbackAgainstOnDiskManifest -2026-07-05T01:36:48.0342244Z deployable services in prod rolled back -2026-07-05T01:36:48.0342535Z from: v2.0.0 (prodnew) -2026-07-05T01:36:48.0342849Z to: v1.9.0 (prodold) [resolved from git-history] -2026-07-05T01:36:48.0343235Z --- PASS: TestCommand_RollbackAgainstOnDiskManifest (0.04s) -2026-07-05T01:36:48.0343588Z === RUN TestCommand_DryRunDoesNotMutate -2026-07-05T01:36:48.0343889Z deployable services in prod would roll back -2026-07-05T01:36:48.0344182Z from: v2.0.0 (prodnew) -2026-07-05T01:36:48.0344469Z to: v1.9.0 (prodold) [resolved from git-history] -2026-07-05T01:36:48.0344804Z --- PASS: TestCommand_DryRunDoesNotMutate (0.04s) -2026-07-05T01:36:48.0345140Z === RUN TestCommand_UnknownTargetReturnsError -2026-07-05T01:36:48.0345501Z --- PASS: TestCommand_UnknownTargetReturnsError (0.04s) -2026-07-05T01:36:48.0345843Z === RUN TestConfigPath_ReturnsResolvedPath -2026-07-05T01:36:48.0346175Z --- PASS: TestConfigPath_ReturnsResolvedPath (0.00s) -2026-07-05T01:36:48.0346493Z === RUN TestGitIdentity_DefaultsToBot -2026-07-05T01:36:48.0346797Z --- PASS: TestGitIdentity_DefaultsToBot (0.00s) -2026-07-05T01:36:48.0347132Z === RUN TestGitIdentity_HonorsManifestGitConfig -2026-07-05T01:36:48.0347495Z --- PASS: TestGitIdentity_HonorsManifestGitConfig (0.00s) -2026-07-05T01:36:48.0347851Z === RUN TestDeployNames_WithAndWithoutConfig -2026-07-05T01:36:48.0348189Z --- PASS: TestDeployNames_WithAndWithoutConfig (0.00s) -2026-07-05T01:36:48.0348553Z === RUN TestKnownEnvironment_FallsBackToRecordedState -2026-07-05T01:36:48.0348951Z --- PASS: TestKnownEnvironment_FallsBackToRecordedState (0.00s) -2026-07-05T01:36:48.0349300Z === RUN TestOrDash -2026-07-05T01:36:48.0349530Z --- PASS: TestOrDash (0.00s) -2026-07-05T01:36:48.0349776Z === RUN TestTruncate -2026-07-05T01:36:48.0351270Z --- PASS: TestTruncate (0.00s) -2026-07-05T01:36:48.0351523Z === RUN TestGetEnv -2026-07-05T01:36:48.0351745Z --- PASS: TestGetEnv (0.00s) -2026-07-05T01:36:48.0351999Z === RUN TestMatchHelpers_NilInputs -2026-07-05T01:36:48.0352299Z --- PASS: TestMatchHelpers_NilInputs (0.00s) -2026-07-05T01:36:48.0352647Z === RUN TestResolveDefaultTarget_GitHistoryFallback -2026-07-05T01:36:48.0353034Z --- PASS: TestResolveDefaultTarget_GitHistoryFallback (0.00s) -2026-07-05T01:36:48.0353453Z === RUN TestResolveDefaultTarget_DeployableScopedFromHistory -2026-07-05T01:36:48.0353903Z --- PASS: TestResolveDefaultTarget_DeployableScopedFromHistory (0.00s) -2026-07-05T01:36:48.0354317Z === RUN TestResolveDefaultTarget_NoPriorErrors -2026-07-05T01:36:48.0354677Z --- PASS: TestResolveDefaultTarget_NoPriorErrors (0.00s) -2026-07-05T01:36:48.0355002Z === RUN TestReport_JSONOutput -2026-07-05T01:36:48.0355243Z { -2026-07-05T01:36:48.0355453Z "environment": "prod", -2026-07-05T01:36:48.0355696Z "target": { -2026-07-05T01:36:48.0355938Z "sha": "abcdef1234567", -2026-07-05T01:36:48.0356200Z "version": "v1.8.0", -2026-07-05T01:36:48.0356462Z "source": "git-history" -2026-07-05T01:36:48.0356677Z }, -2026-07-05T01:36:48.0356894Z "current_sha": "newsha7654321", -2026-07-05T01:36:48.0357178Z "current_version": "v2.0.0", -2026-07-05T01:36:48.0357428Z "no_op": false, -2026-07-05T01:36:48.0357644Z "dry_run": false -2026-07-05T01:36:48.0357840Z } -2026-07-05T01:36:48.0358049Z --- PASS: TestReport_JSONOutput (0.00s) -2026-07-05T01:36:48.0358364Z === RUN TestReport_TextNonNoOpAndDeployable -2026-07-05T01:36:48.0358697Z deployable services in prod would roll back -2026-07-05T01:36:48.0358994Z from: v2.0.0 (newsha7) -2026-07-05T01:36:48.0359304Z to: v1.8.0 (abcdef1) [resolved from previous-ring] -2026-07-05T01:36:48.0359633Z deployable services in prod rolled back -2026-07-05T01:36:48.0359908Z from: v2.0.0 (newsha7) -2026-07-05T01:36:48.0360614Z to: v1.8.0 (abcdef1) [resolved from previous-ring] -2026-07-05T01:36:48.0361178Z --- PASS: TestReport_TextNonNoOpAndDeployable (0.00s) -2026-07-05T01:36:48.0361676Z === RUN TestRun_ErrorOnBadConfig -2026-07-05T01:36:48.0362116Z --- PASS: TestRun_ErrorOnBadConfig (0.00s) -2026-07-05T01:36:48.0362517Z === RUN TestRunPreflight_JSONOutput -2026-07-05T01:36:48.0362774Z { -2026-07-05T01:36:48.0362974Z "environment": "prod", -2026-07-05T01:36:48.0363204Z "target": { -2026-07-05T01:36:48.0363435Z "sha": "prodsha9999999", -2026-07-05T01:36:48.0363548Z "version": "v1.9.0", -2026-07-05T01:36:48.0363657Z "source": "state" -2026-07-05T01:36:48.0363736Z }, -2026-07-05T01:36:48.0363853Z "current_sha": "prodsha9999999", -2026-07-05T01:36:48.0363968Z "current_version": "v1.9.0", -2026-07-05T01:36:48.0364061Z "no_op": true -2026-07-05T01:36:48.0364139Z } -2026-07-05T01:36:48.0364270Z --- PASS: TestRunPreflight_JSONOutput (0.00s) -2026-07-05T01:36:48.0364421Z === RUN TestRunPreflight_NewErrorWritesCannotProceed -2026-07-05T01:36:48.0364617Z --- PASS: TestRunPreflight_NewErrorWritesCannotProceed (0.00s) -2026-07-05T01:36:48.0364734Z === RUN TestRunFinalize_ErrorOnBadConfig -2026-07-05T01:36:48.0364877Z --- PASS: TestRunFinalize_ErrorOnBadConfig (0.00s) -2026-07-05T01:36:48.0364974Z === RUN TestIsRealGitHub -2026-07-05T01:36:48.0365083Z --- PASS: TestIsRealGitHub (0.00s) -2026-07-05T01:36:48.0365190Z === RUN TestTrunkBranchFromEnv -2026-07-05T01:36:48.0365304Z --- PASS: TestTrunkBranchFromEnv (0.00s) -2026-07-05T01:36:48.0365444Z === RUN TestWriteStateViaAPI_RequiresRepository -2026-07-05T01:36:48.0365605Z --- PASS: TestWriteStateViaAPI_RequiresRepository (0.00s) -2026-07-05T01:36:48.0365732Z === RUN TestCommitAndPush_NoChangesIsNoOp -2026-07-05T01:36:48.0365875Z --- PASS: TestCommitAndPush_NoChangesIsNoOp (0.02s) -2026-07-05T01:36:48.0365984Z === RUN TestExtractEnvState_EdgeCases -2026-07-05T01:36:48.0366118Z --- PASS: TestExtractEnvState_EdgeCases (0.00s) -2026-07-05T01:36:48.0366254Z === RUN TestPlan_FirstEnvironment_NoTarget_Guarded -2026-07-05T01:36:48.0366424Z --- PASS: TestPlan_FirstEnvironment_NoTarget_Guarded (0.00s) -2026-07-05T01:36:48.0366706Z === RUN TestPlan_FirstEnvironment_WithTarget_Guarded -2026-07-05T01:36:48.0366872Z --- PASS: TestPlan_FirstEnvironment_WithTarget_Guarded (0.00s) -2026-07-05T01:36:48.0367010Z === RUN TestPlan_FirstEnvironment_Deployable_Guarded -2026-07-05T01:36:48.0367168Z --- PASS: TestPlan_FirstEnvironment_Deployable_Guarded (0.00s) -2026-07-05T01:36:48.0367301Z === RUN TestPlan_PromotedEnvironment_NotGuarded -2026-07-05T01:36:48.0367456Z --- PASS: TestPlan_PromotedEnvironment_NotGuarded (0.00s) -2026-07-05T01:36:48.0367582Z === RUN TestApply_FirstEnvironment_Guarded -2026-07-05T01:36:48.0367726Z --- PASS: TestApply_FirstEnvironment_Guarded (0.00s) -2026-07-05T01:36:48.0367835Z === RUN TestFirstEnvErr_NoConfig_Inert -2026-07-05T01:36:48.0367968Z --- PASS: TestFirstEnvErr_NoConfig_Inert (0.00s) -2026-07-05T01:36:48.0368105Z === RUN TestGitHistoryReader_RecoversPriorVersion -2026-07-05T01:36:48.0368286Z --- PASS: TestGitHistoryReader_RecoversPriorVersion (0.03s) -2026-07-05T01:36:48.0368453Z === RUN TestGitHistoryReader_RecoversPriorVersion_Subdir -2026-07-05T01:36:48.0368643Z --- PASS: TestGitHistoryReader_RecoversPriorVersion_Subdir (0.04s) -2026-07-05T01:36:48.0368757Z === RUN TestResolveTarget_RingDepth1 -2026-07-05T01:36:48.0368885Z --- PASS: TestResolveTarget_RingDepth1 (0.00s) -2026-07-05T01:36:48.0368999Z === RUN TestResolveTarget_RingDepthN -2026-07-05T01:36:48.0369125Z --- PASS: TestResolveTarget_RingDepthN (0.00s) -2026-07-05T01:36:48.0369265Z === RUN TestResolveTarget_ExplicitVersionStillWorks -2026-07-05T01:36:48.0369443Z --- PASS: TestResolveTarget_ExplicitVersionStillWorks (0.00s) -2026-07-05T01:36:48.0369592Z === RUN TestResolveTarget_ExplicitShaPrefixStillWorks -2026-07-05T01:36:48.0369779Z --- PASS: TestResolveTarget_ExplicitShaPrefixStillWorks (0.00s) -2026-07-05T01:36:48.0369926Z === RUN TestResolveTarget_GitFallbackWhenRingMissing -2026-07-05T01:36:48.0370421Z --- PASS: TestResolveTarget_GitFallbackWhenRingMissing (0.00s) -2026-07-05T01:36:48.0370569Z === RUN TestResolveTarget_DefaultPicksN1FromRing -2026-07-05T01:36:48.0370724Z --- PASS: TestResolveTarget_DefaultPicksN1FromRing (0.00s) -2026-07-05T01:36:48.0370897Z === RUN TestResolveTarget_DefaultFallsBackToGitWhenRingEmpty -2026-07-05T01:36:48.0371105Z --- PASS: TestResolveTarget_DefaultFallsBackToGitWhenRingEmpty (0.00s) -2026-07-05T01:36:48.0371247Z === RUN TestResolveTarget_UnresolvableReturnsError -2026-07-05T01:36:48.0371418Z --- PASS: TestResolveTarget_UnresolvableReturnsError (0.00s) -2026-07-05T01:36:48.0371552Z === RUN TestApply_MarksEnvDivergedWithRollbackRef -2026-07-05T01:36:48.0371722Z --- PASS: TestApply_MarksEnvDivergedWithRollbackRef (0.01s) -2026-07-05T01:36:48.0371877Z === RUN TestApply_DeployableScopedDoesNotMarkEnvDiverged -2026-07-05T01:36:48.0372077Z --- PASS: TestApply_DeployableScopedDoesNotMarkEnvDiverged (0.01s) -2026-07-05T01:36:48.0372214Z === RUN TestPlan_ResolvesTargetFromState_ByVersion -2026-07-05T01:36:48.0372375Z --- PASS: TestPlan_ResolvesTargetFromState_ByVersion (0.00s) -2026-07-05T01:36:48.0372523Z === RUN TestPlan_ResolvesTargetFromState_ByShaPrefix -2026-07-05T01:36:48.0372688Z --- PASS: TestPlan_ResolvesTargetFromState_ByShaPrefix (0.00s) -2026-07-05T01:36:48.0372814Z === RUN TestPlan_ResolvesTargetFromHistory -2026-07-05T01:36:48.0372955Z --- PASS: TestPlan_ResolvesTargetFromHistory (0.00s) -2026-07-05T01:36:48.0373062Z === RUN TestPlan_DeployableScoping -2026-07-05T01:36:48.0373185Z --- PASS: TestPlan_DeployableScoping (0.00s) -2026-07-05T01:36:48.0373293Z === RUN TestPlan_UnknownTargetError -2026-07-05T01:36:48.0373424Z --- PASS: TestPlan_UnknownTargetError (0.00s) -2026-07-05T01:36:48.0373546Z === RUN TestPlan_UnknownEnvironmentError -2026-07-05T01:36:48.0373680Z --- PASS: TestPlan_UnknownEnvironmentError (0.00s) -2026-07-05T01:36:48.0373796Z === RUN TestPlan_UnknownDeployableError -2026-07-05T01:36:48.0373929Z --- PASS: TestPlan_UnknownDeployableError (0.00s) -2026-07-05T01:36:48.0374037Z === RUN TestPlan_RequiresEnvAndTo -2026-07-05T01:36:48.0374287Z --- PASS: TestPlan_RequiresEnvAndTo (0.00s) -2026-07-05T01:36:48.0374407Z === RUN TestApply_WritesEnvAndDeployState -2026-07-05T01:36:48.0374549Z --- PASS: TestApply_WritesEnvAndDeployState (0.01s) -2026-07-05T01:36:48.0374703Z === RUN TestApply_DeployableScopedDoesNotTouchEnvPointer -2026-07-05T01:36:48.0374902Z --- PASS: TestApply_DeployableScopedDoesNotTouchEnvPointer (0.01s) -2026-07-05T01:36:48.0375012Z === RUN TestApply_NoOpIsNonDestructive -2026-07-05T01:36:48.0375148Z --- PASS: TestApply_NoOpIsNonDestructive (0.00s) -2026-07-05T01:36:48.0375247Z === RUN TestShaMatches -2026-07-05T01:36:48.0375352Z --- PASS: TestShaMatches (0.00s) -2026-07-05T01:36:48.0375496Z === RUN TestApply_PushesPriorSnapshotOnEnvRollback -2026-07-05T01:36:48.0375696Z --- PASS: TestApply_PushesPriorSnapshotOnEnvRollback (0.01s) -2026-07-05T01:36:48.0375814Z === RUN TestApply_NoSnapshotWhenSameSHA -2026-07-05T01:36:48.0375943Z --- PASS: TestApply_NoSnapshotWhenSameSHA (0.00s) -2026-07-05T01:36:48.0376030Z PASS -2026-07-05T01:36:48.0376140Z coverage: 85.4% of statements -2026-07-05T01:36:48.0376424Z ok github.com/stablekernel/cascade/internal/rollback 1.360s coverage: 85.4% of statements -2026-07-05T01:36:48.0376543Z === RUN TestTopologies_PresetEnvLists -2026-07-05T01:36:48.0376673Z --- PASS: TestTopologies_PresetEnvLists (0.00s) -2026-07-05T01:36:48.0376784Z === RUN TestScaffold_ExpectedFileSet -2026-07-05T01:36:48.0376911Z === RUN TestScaffold_ExpectedFileSet/no-env -2026-07-05T01:36:48.0377030Z === RUN TestScaffold_ExpectedFileSet/two-env -2026-07-05T01:36:48.0377157Z === RUN TestScaffold_ExpectedFileSet/three-env -2026-07-05T01:36:48.0377275Z === RUN TestScaffold_ExpectedFileSet/four-env -2026-07-05T01:36:48.0377402Z --- PASS: TestScaffold_ExpectedFileSet (0.05s) -2026-07-05T01:36:48.0377604Z --- PASS: TestScaffold_ExpectedFileSet/no-env (0.01s) -2026-07-05T01:36:48.0377797Z --- PASS: TestScaffold_ExpectedFileSet/two-env (0.01s) -2026-07-05T01:36:48.0378098Z --- PASS: TestScaffold_ExpectedFileSet/three-env (0.01s) -2026-07-05T01:36:48.0378298Z --- PASS: TestScaffold_ExpectedFileSet/four-env (0.01s) -2026-07-05T01:36:48.0378460Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates -2026-07-05T01:36:48.0378642Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/no-env -2026-07-05T01:36:48.0378830Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/two-env -2026-07-05T01:36:48.0379029Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/three-env -2026-07-05T01:36:48.0379217Z === RUN TestScaffold_ManifestParsesValidatesAndGenerates/four-env -2026-07-05T01:36:48.0379407Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates (0.09s) -2026-07-05T01:36:48.0379695Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/no-env (0.01s) -2026-07-05T01:36:48.0380132Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/two-env (0.03s) -2026-07-05T01:36:48.0380472Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/three-env (0.03s) -2026-07-05T01:36:48.0380779Z --- PASS: TestScaffold_ManifestParsesValidatesAndGenerates/four-env (0.03s) -2026-07-05T01:36:48.0380915Z === RUN TestScaffold_SchemaDirectiveIsFirstLine -2026-07-05T01:36:48.0381069Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/no-env -2026-07-05T01:36:48.0381223Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/two-env -2026-07-05T01:36:48.0381380Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/three-env -2026-07-05T01:36:48.0381527Z === RUN TestScaffold_SchemaDirectiveIsFirstLine/four-env -2026-07-05T01:36:48.0381681Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine (0.05s) -2026-07-05T01:36:48.0381916Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/no-env (0.01s) -2026-07-05T01:36:48.0382160Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/two-env (0.01s) -2026-07-05T01:36:48.0382416Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/three-env (0.01s) -2026-07-05T01:36:48.0382658Z --- PASS: TestScaffold_SchemaDirectiveIsFirstLine/four-env (0.01s) -2026-07-05T01:36:48.0382915Z === RUN TestScaffold_CLIVersionDefaulted -2026-07-05T01:36:48.0383049Z --- PASS: TestScaffold_CLIVersionDefaulted (0.01s) -2026-07-05T01:36:48.0383174Z === RUN TestScaffold_WithCLIVersionOverride -2026-07-05T01:36:48.0383322Z --- PASS: TestScaffold_WithCLIVersionOverride (0.01s) -2026-07-05T01:36:48.0383489Z === RUN TestScaffold_BuildStubDeclaresCallbackInputsOutputs -2026-07-05T01:36:48.0383695Z --- PASS: TestScaffold_BuildStubDeclaresCallbackInputsOutputs (0.01s) -2026-07-05T01:36:48.0383844Z === RUN TestScaffold_DeployStubDeclaresCallbackInputs -2026-07-05T01:36:48.0384029Z --- PASS: TestScaffold_DeployStubDeclaresCallbackInputs (0.01s) -2026-07-05T01:36:48.0384159Z === RUN TestScaffold_TwoEnv_ProducesDeployStub -2026-07-05T01:36:48.0384309Z --- PASS: TestScaffold_TwoEnv_ProducesDeployStub (0.01s) -2026-07-05T01:36:48.0384431Z === RUN TestScaffold_NoEnv_OmitsDeployStub -2026-07-05T01:36:48.0384566Z --- PASS: TestScaffold_NoEnv_OmitsDeployStub (0.01s) -2026-07-05T01:36:48.0384699Z === RUN TestSelfCheck_SucceedsOnProducedFiles -2026-07-05T01:36:48.0384845Z === RUN TestSelfCheck_SucceedsOnProducedFiles/no-env -2026-07-05T01:36:48.0384990Z === RUN TestSelfCheck_SucceedsOnProducedFiles/two-env -2026-07-05T01:36:48.0385142Z === RUN TestSelfCheck_SucceedsOnProducedFiles/three-env -2026-07-05T01:36:48.0385281Z === RUN TestSelfCheck_SucceedsOnProducedFiles/four-env -2026-07-05T01:36:48.0385431Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles (0.09s) -2026-07-05T01:36:48.0385656Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/no-env (0.01s) -2026-07-05T01:36:48.0385893Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/two-env (0.02s) -2026-07-05T01:36:48.0386132Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/three-env (0.03s) -2026-07-05T01:36:48.0386361Z --- PASS: TestSelfCheck_SucceedsOnProducedFiles/four-env (0.03s) -2026-07-05T01:36:48.0386505Z === RUN TestSelfCheck_FailsOnInvalidEnvironmentName -2026-07-05T01:36:48.0386670Z --- PASS: TestSelfCheck_FailsOnInvalidEnvironmentName (0.02s) -2026-07-05T01:36:48.0386910Z === RUN TestSelfCheck_FailsOnInvalidYAML -2026-07-05T01:36:48.0387050Z --- PASS: TestSelfCheck_FailsOnInvalidYAML (0.01s) -2026-07-05T01:36:48.0387183Z === RUN TestSelfCheck_FailsOnBuildWithoutWorkflow -2026-07-05T01:36:48.0387347Z --- PASS: TestSelfCheck_FailsOnBuildWithoutWorkflow (0.00s) -2026-07-05T01:36:48.0387456Z === RUN TestScaffold_IncludesCodeowners -2026-07-05T01:36:48.0387586Z === RUN TestScaffold_IncludesCodeowners/no-env -2026-07-05T01:36:48.0387716Z === RUN TestScaffold_IncludesCodeowners/two-env -2026-07-05T01:36:48.0387843Z === RUN TestScaffold_IncludesCodeowners/three-env -2026-07-05T01:36:48.0387973Z === RUN TestScaffold_IncludesCodeowners/four-env -2026-07-05T01:36:48.0388102Z --- PASS: TestScaffold_IncludesCodeowners (0.05s) -2026-07-05T01:36:48.0388312Z --- PASS: TestScaffold_IncludesCodeowners/no-env (0.01s) -2026-07-05T01:36:48.0388519Z --- PASS: TestScaffold_IncludesCodeowners/two-env (0.01s) -2026-07-05T01:36:48.0388733Z --- PASS: TestScaffold_IncludesCodeowners/three-env (0.01s) -2026-07-05T01:36:48.0388951Z --- PASS: TestScaffold_IncludesCodeowners/four-env (0.01s) -2026-07-05T01:36:48.0389070Z === RUN TestScaffold_IncludesAWSOIDCExample -2026-07-05T01:36:48.0389210Z === RUN TestScaffold_IncludesAWSOIDCExample/no-env -2026-07-05T01:36:48.0389342Z === RUN TestScaffold_IncludesAWSOIDCExample/two-env -2026-07-05T01:36:48.0389487Z === RUN TestScaffold_IncludesAWSOIDCExample/three-env -2026-07-05T01:36:48.0389628Z === RUN TestScaffold_IncludesAWSOIDCExample/four-env -2026-07-05T01:36:48.0389764Z --- PASS: TestScaffold_IncludesAWSOIDCExample (0.04s) -2026-07-05T01:36:48.0390138Z --- PASS: TestScaffold_IncludesAWSOIDCExample/no-env (0.01s) -2026-07-05T01:36:48.0390422Z --- PASS: TestScaffold_IncludesAWSOIDCExample/two-env (0.01s) -2026-07-05T01:36:48.0390657Z --- PASS: TestScaffold_IncludesAWSOIDCExample/three-env (0.01s) -2026-07-05T01:36:48.0390886Z --- PASS: TestScaffold_IncludesAWSOIDCExample/four-env (0.01s) -2026-07-05T01:36:48.0391186Z === RUN TestScaffold_DeterministicOutput -2026-07-05T01:36:48.0391320Z --- PASS: TestScaffold_DeterministicOutput (0.02s) -2026-07-05T01:36:48.0391429Z === RUN TestScaffold_NoBannedStrings -2026-07-05T01:36:48.0391551Z === RUN TestScaffold_NoBannedStrings/no-env -2026-07-05T01:36:48.0391673Z === RUN TestScaffold_NoBannedStrings/two-env -2026-07-05T01:36:48.0391792Z === RUN TestScaffold_NoBannedStrings/three-env -2026-07-05T01:36:48.0391914Z === RUN TestScaffold_NoBannedStrings/four-env -2026-07-05T01:36:48.0392034Z --- PASS: TestScaffold_NoBannedStrings (0.04s) -2026-07-05T01:36:48.0392228Z --- PASS: TestScaffold_NoBannedStrings/no-env (0.01s) -2026-07-05T01:36:48.0392427Z --- PASS: TestScaffold_NoBannedStrings/two-env (0.01s) -2026-07-05T01:36:48.0392624Z --- PASS: TestScaffold_NoBannedStrings/three-env (0.01s) -2026-07-05T01:36:48.0392822Z --- PASS: TestScaffold_NoBannedStrings/four-env (0.01s) -2026-07-05T01:36:48.0392897Z PASS -2026-07-05T01:36:48.0393006Z coverage: 83.0% of statements -2026-07-05T01:36:48.0393285Z ok github.com/stablekernel/cascade/internal/scaffold 1.547s coverage: 83.0% of statements -2026-07-05T01:36:48.0393418Z === RUN TestSchema_ValidatesCascadeOwnManifest -2026-07-05T01:36:48.0393574Z --- PASS: TestSchema_ValidatesCascadeOwnManifest (0.02s) -2026-07-05T01:36:48.0393696Z === RUN TestSchema_ValidatesE2EScenarioConfigs -2026-07-05T01:36:48.0393887Z === RUN TestSchema_ValidatesE2EScenarioConfigs/01-no-env-repo.yaml -2026-07-05T01:36:48.0394072Z === RUN TestSchema_ValidatesE2EScenarioConfigs/02-two-env-repo.yaml -2026-07-05T01:36:48.0394277Z === RUN TestSchema_ValidatesE2EScenarioConfigs/03-three-env-repo.yaml -2026-07-05T01:36:48.0394492Z === RUN TestSchema_ValidatesE2EScenarioConfigs/04-cascade-promotion.yaml -2026-07-05T01:36:48.0394692Z === RUN TestSchema_ValidatesE2EScenarioConfigs/05-publish-callback.yaml -2026-07-05T01:36:48.0394884Z === RUN TestSchema_ValidatesE2EScenarioConfigs/06-no-change-skip.yaml -2026-07-05T01:36:48.0395231Z === RUN TestSchema_ValidatesE2EScenarioConfigs/07-orchestrate-concurrency.yaml -2026-07-05T01:36:48.0395447Z === RUN TestSchema_ValidatesE2EScenarioConfigs/08-state-push-retry.yaml -2026-07-05T01:36:48.0395656Z === RUN TestSchema_ValidatesE2EScenarioConfigs/09-single-env-repo.yaml -2026-07-05T01:36:48.0395920Z === RUN TestSchema_ValidatesE2EScenarioConfigs/11-job-timeouts-and-optional-deps.yaml -2026-07-05T01:36:48.0396119Z === RUN TestSchema_ValidatesE2EScenarioConfigs/13-dispatch-inputs.yaml -2026-07-05T01:36:48.0396309Z === RUN TestSchema_ValidatesE2EScenarioConfigs/14-validate-check.yaml -2026-07-05T01:36:48.0396500Z === RUN TestSchema_ValidatesE2EScenarioConfigs/15-merge-queue.yaml -2026-07-05T01:36:48.0396689Z === RUN TestSchema_ValidatesE2EScenarioConfigs/16-pr-preview.yaml -2026-07-05T01:36:48.0396891Z === RUN TestSchema_ValidatesE2EScenarioConfigs/17-validate-callback.yaml -2026-07-05T01:36:48.0397136Z === RUN TestSchema_ValidatesE2EScenarioConfigs/18-promote-source-image-tag.yaml -2026-07-05T01:36:48.0397336Z === RUN TestSchema_ValidatesE2EScenarioConfigs/19-custom-changelog.yaml -2026-07-05T01:36:48.0397580Z === RUN TestSchema_ValidatesE2EScenarioConfigs/20-promote-allow-downgrade.yaml -2026-07-05T01:36:48.0397799Z === RUN TestSchema_ValidatesE2EScenarioConfigs/21-cross-repo-callback.yaml -2026-07-05T01:36:48.0397984Z === RUN TestSchema_ValidatesE2EScenarioConfigs/22-verify-drift.yaml -2026-07-05T01:36:48.0398225Z === RUN TestSchema_ValidatesE2EScenarioConfigs/23-canary-bluegreen-reserved.yaml -2026-07-05T01:36:48.0398475Z === RUN TestSchema_ValidatesE2EScenarioConfigs/24-gitops-deploy-target-reserved.yaml -2026-07-05T01:36:48.0398702Z === RUN TestSchema_ValidatesE2EScenarioConfigs/25-telemetry-sink-reserved.yaml -2026-07-05T01:36:48.0398948Z === RUN TestSchema_ValidatesE2EScenarioConfigs/26-version-overrides-reserved.yaml -2026-07-05T01:36:48.0399137Z === RUN TestSchema_ValidatesE2EScenarioConfigs/27-verify-orphan.yaml -2026-07-05T01:36:48.0399325Z === RUN TestSchema_ValidatesE2EScenarioConfigs/28-drift-check.yaml -2026-07-05T01:36:48.0399654Z === RUN TestSchema_ValidatesE2EScenarioConfigs/29-environment-config-emit.yaml -2026-07-05T01:36:48.0399864Z === RUN TestSchema_ValidatesE2EScenarioConfigs/30-app-token-source.yaml -2026-07-05T01:36:48.0400249Z === RUN TestSchema_ValidatesE2EScenarioConfigs/31-native-deployments.yaml -2026-07-05T01:36:48.0400505Z === RUN TestSchema_ValidatesE2EScenarioConfigs/32-rollback-repository-dispatch.yaml -2026-07-05T01:36:48.0400697Z === RUN TestSchema_ValidatesE2EScenarioConfigs/33-plan-diff.yaml -2026-07-05T01:36:48.0400943Z === RUN TestSchema_ValidatesE2EScenarioConfigs/34-extra-orchestrate-triggers.yaml -2026-07-05T01:36:48.0401172Z === RUN TestSchema_ValidatesE2EScenarioConfigs/35-action-pins-sha-mode.yaml -2026-07-05T01:36:48.0401412Z === RUN TestSchema_ValidatesE2EScenarioConfigs/36-action-pins-default-tag.yaml -2026-07-05T01:36:48.0401635Z === RUN TestSchema_ValidatesE2EScenarioConfigs/37-release-breaking-gate.yaml -2026-07-05T01:36:48.0401935Z === RUN TestSchema_ValidatesE2EScenarioConfigs/38-promote-breaking-gate-release-build.yaml -2026-07-05T01:36:48.0402157Z === RUN TestSchema_ValidatesE2EScenarioConfigs/39-action-pins-override.yaml -2026-07-05T01:36:48.0402418Z === RUN TestSchema_ValidatesE2EScenarioConfigs/40-release-trigger-dispatch-only.yaml -2026-07-05T01:36:48.0402755Z === RUN TestSchema_ValidatesE2EScenarioConfigs/41-sha-pin-state-write-preserves-cli-version-sha.yaml -2026-07-05T01:36:48.0402989Z === RUN TestSchema_ValidatesE2EScenarioConfigs/42-status-consistency-fix.yaml -2026-07-05T01:36:48.0403230Z === RUN TestSchema_ValidatesE2EScenarioConfigs/43-deploy-rollout-strategy.yaml -2026-07-05T01:36:48.0403455Z === RUN TestSchema_ValidatesE2EScenarioConfigs/44-components-reserved.yaml -2026-07-05T01:36:48.0403617Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs (0.09s) -2026-07-05T01:36:48.0403912Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/01-no-env-repo.yaml (0.00s) -2026-07-05T01:36:48.0404334Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/02-two-env-repo.yaml (0.00s) -2026-07-05T01:36:48.0404660Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/03-three-env-repo.yaml (0.01s) -2026-07-05T01:36:48.0404987Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/04-cascade-promotion.yaml (0.01s) -2026-07-05T01:36:48.0405297Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/05-publish-callback.yaml (0.00s) -2026-07-05T01:36:48.0405598Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/06-no-change-skip.yaml (0.00s) -2026-07-05T01:36:48.0405948Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/07-orchestrate-concurrency.yaml (0.00s) -2026-07-05T01:36:48.0406259Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/08-state-push-retry.yaml (0.00s) -2026-07-05T01:36:48.0406568Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/09-single-env-repo.yaml (0.00s) -2026-07-05T01:36:48.0406956Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/11-job-timeouts-and-optional-deps.yaml (0.00s) -2026-07-05T01:36:48.0407268Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/13-dispatch-inputs.yaml (0.00s) -2026-07-05T01:36:48.0407572Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/14-validate-check.yaml (0.00s) -2026-07-05T01:36:48.0407860Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/15-merge-queue.yaml (0.00s) -2026-07-05T01:36:48.0408152Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/16-pr-preview.yaml (0.00s) -2026-07-05T01:36:48.0408460Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/17-validate-callback.yaml (0.00s) -2026-07-05T01:36:48.0408822Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/18-promote-source-image-tag.yaml (0.00s) -2026-07-05T01:36:48.0409127Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/19-custom-changelog.yaml (0.00s) -2026-07-05T01:36:48.0409475Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/20-promote-allow-downgrade.yaml (0.00s) -2026-07-05T01:36:48.0409807Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/21-cross-repo-callback.yaml (0.00s) -2026-07-05T01:36:48.0410270Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/22-verify-drift.yaml (0.00s) -2026-07-05T01:36:48.0410761Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/23-canary-bluegreen-reserved.yaml (0.00s) -2026-07-05T01:36:48.0411143Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/24-gitops-deploy-target-reserved.yaml (0.00s) -2026-07-05T01:36:48.0411485Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/25-telemetry-sink-reserved.yaml (0.00s) -2026-07-05T01:36:48.0411854Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/26-version-overrides-reserved.yaml (0.00s) -2026-07-05T01:36:48.0412153Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/27-verify-orphan.yaml (0.00s) -2026-07-05T01:36:48.0412439Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/28-drift-check.yaml (0.00s) -2026-07-05T01:36:48.0412776Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/29-environment-config-emit.yaml (0.00s) -2026-07-05T01:36:48.0413094Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/30-app-token-source.yaml (0.00s) -2026-07-05T01:36:48.0413422Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/31-native-deployments.yaml (0.00s) -2026-07-05T01:36:48.0413795Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/32-rollback-repository-dispatch.yaml (0.00s) -2026-07-05T01:36:48.0414082Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/33-plan-diff.yaml (0.00s) -2026-07-05T01:36:48.0414443Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/34-extra-orchestrate-triggers.yaml (0.00s) -2026-07-05T01:36:48.0414775Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/35-action-pins-sha-mode.yaml (0.00s) -2026-07-05T01:36:48.0415120Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/36-action-pins-default-tag.yaml (0.00s) -2026-07-05T01:36:48.0415453Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/37-release-breaking-gate.yaml (0.00s) -2026-07-05T01:36:48.0415876Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/38-promote-breaking-gate-release-build.yaml (0.00s) -2026-07-05T01:36:48.0416326Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/39-action-pins-override.yaml (0.00s) -2026-07-05T01:36:48.0416709Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/40-release-trigger-dispatch-only.yaml (0.00s) -2026-07-05T01:36:48.0417188Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/41-sha-pin-state-write-preserves-cli-version-sha.yaml (0.00s) -2026-07-05T01:36:48.0417533Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/42-status-consistency-fix.yaml (0.00s) -2026-07-05T01:36:48.0417878Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/43-deploy-rollout-strategy.yaml (0.00s) -2026-07-05T01:36:48.0418208Z --- PASS: TestSchema_ValidatesE2EScenarioConfigs/44-components-reserved.yaml (0.00s) -2026-07-05T01:36:48.0418338Z === RUN TestSchema_ValidatesREADMEExamples -2026-07-05T01:36:48.0418528Z === RUN TestSchema_ValidatesREADMEExamples/readme-ci-block-1 -2026-07-05T01:36:48.0418688Z === RUN TestSchema_ValidatesREADMEExamples/readme-ci-block-2 -2026-07-05T01:36:48.0418845Z --- PASS: TestSchema_ValidatesREADMEExamples (0.02s) -2026-07-05T01:36:48.0419123Z --- PASS: TestSchema_ValidatesREADMEExamples/readme-ci-block-1 (0.00s) -2026-07-05T01:36:48.0419378Z --- PASS: TestSchema_ValidatesREADMEExamples/readme-ci-block-2 (0.00s) -2026-07-05T01:36:48.0419508Z === RUN TestSchema_RejectsKnownBadManifests -2026-07-05T01:36:48.0419683Z === RUN TestSchema_RejectsKnownBadManifests/build_missing_name -2026-07-05T01:36:48.0419882Z === RUN TestSchema_RejectsKnownBadManifests/unknown_top-level_key -2026-07-05T01:36:48.0420251Z === RUN TestSchema_RejectsKnownBadManifests/environments_as_string -2026-07-05T01:36:48.0420425Z === RUN TestSchema_RejectsKnownBadManifests/secrets_as_integer -2026-07-05T01:36:48.0420581Z --- PASS: TestSchema_RejectsKnownBadManifests (0.02s) -2026-07-05T01:36:48.0420858Z --- PASS: TestSchema_RejectsKnownBadManifests/build_missing_name (0.00s) -2026-07-05T01:36:48.0421152Z --- PASS: TestSchema_RejectsKnownBadManifests/unknown_top-level_key (0.00s) -2026-07-05T01:36:48.0421459Z --- PASS: TestSchema_RejectsKnownBadManifests/environments_as_string (0.00s) -2026-07-05T01:36:48.0421849Z --- PASS: TestSchema_RejectsKnownBadManifests/secrets_as_integer (0.00s) -2026-07-05T01:36:48.0421976Z === RUN TestSchema_AcceptsSecretsUnionForms -2026-07-05T01:36:48.0422119Z --- PASS: TestSchema_AcceptsSecretsUnionForms (0.02s) -2026-07-05T01:36:48.0422247Z === RUN TestSchema_AcceptsRunsOnUnionForms -2026-07-05T01:36:48.0422395Z --- PASS: TestSchema_AcceptsRunsOnUnionForms (0.02s) -2026-07-05T01:36:48.0422532Z === RUN TestSchema_OnDiskCopiesAreByteIdentical -2026-07-05T01:36:48.0422702Z --- PASS: TestSchema_OnDiskCopiesAreByteIdentical (0.00s) -2026-07-05T01:36:48.0422781Z PASS -2026-07-05T01:36:48.0422889Z coverage: 25.0% of statements -2026-07-05T01:36:48.0423155Z ok github.com/stablekernel/cascade/internal/schema 1.213s coverage: 25.0% of statements -2026-07-05T01:36:48.0423306Z === RUN TestSimulateHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0423457Z === PAUSE TestSimulateHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0423628Z === RUN TestSimulatePromoteHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0423794Z === PAUSE TestSimulatePromoteHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0423913Z === RUN TestSimulatePromote_InvalidMode -2026-07-05T01:36:48.0424032Z === PAUSE TestSimulatePromote_InvalidMode -2026-07-05T01:36:48.0424165Z === RUN TestSimulateSubcommands_Registered -2026-07-05T01:36:48.0424285Z === PAUSE TestSimulateSubcommands_Registered -2026-07-05T01:36:48.0424458Z === RUN TestSimulateRollbackHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0424624Z === PAUSE TestSimulateRollbackHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0424786Z === RUN TestSimulateReleaseHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0424951Z === PAUSE TestSimulateReleaseHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0425109Z === RUN TestSimulateHotfixHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0425272Z === PAUSE TestSimulateHotfixHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0425531Z === RUN TestSimulateHelp_MentionsDeployResultFlag -2026-07-05T01:36:48.0425678Z === PAUSE TestSimulateHelp_MentionsDeployResultFlag -2026-07-05T01:36:48.0425832Z === RUN TestCommonFlags_EngineOptions_InvalidDeployResult -2026-07-05T01:36:48.0425992Z === PAUSE TestCommonFlags_EngineOptions_InvalidDeployResult -2026-07-05T01:36:48.0426145Z === RUN TestCommonFlags_EngineOptions_DefaultIsActorOnly -2026-07-05T01:36:48.0426296Z === PAUSE TestCommonFlags_EngineOptions_DefaultIsActorOnly -2026-07-05T01:36:48.0426405Z === RUN TestParseCommaList -2026-07-05T01:36:48.0426508Z === PAUSE TestParseCommaList -2026-07-05T01:36:48.0426660Z === RUN TestDeployStub_RecordedEffects_DefaultSuccess -2026-07-05T01:36:48.0426810Z === PAUSE TestDeployStub_RecordedEffects_DefaultSuccess -2026-07-05T01:36:48.0426943Z === RUN TestDeployStub_RecordedEffects_NoCallbacks -2026-07-05T01:36:48.0427084Z === PAUSE TestDeployStub_RecordedEffects_NoCallbacks -2026-07-05T01:36:48.0427218Z === RUN TestDeployStub_InjectedFailure_Gates -2026-07-05T01:36:48.0427353Z === PAUSE TestDeployStub_InjectedFailure_Gates -2026-07-05T01:36:48.0427473Z === RUN TestDeployStub_AllSkipped_Gates -2026-07-05T01:36:48.0427586Z === PAUSE TestDeployStub_AllSkipped_Gates -2026-07-05T01:36:48.0427732Z === RUN TestDeployStub_OneSucceedsOneSkipped_Proceeds -2026-07-05T01:36:48.0427875Z === PAUSE TestDeployStub_OneSucceedsOneSkipped_Proceeds -2026-07-05T01:36:48.0428002Z === RUN TestDeployStub_DoesNotAliasInputs -2026-07-05T01:36:48.0428118Z === PAUSE TestDeployStub_DoesNotAliasInputs -2026-07-05T01:36:48.0428231Z === RUN TestParseDeployResults -2026-07-05T01:36:48.0428341Z === PAUSE TestParseDeployResults -2026-07-05T01:36:48.0428450Z === RUN TestDiffState_FieldChanges -2026-07-05T01:36:48.0428561Z === PAUSE TestDiffState_FieldChanges -2026-07-05T01:36:48.0428696Z === RUN TestDiffState_IgnoresRunStampedTimestamps -2026-07-05T01:36:48.0428839Z === PAUSE TestDiffState_IgnoresRunStampedTimestamps -2026-07-05T01:36:48.0428949Z === RUN TestDiffState_NoChange -2026-07-05T01:36:48.0429144Z === PAUSE TestDiffState_NoChange -2026-07-05T01:36:48.0429280Z === RUN TestEffectsFromResult_DeployAndWriteState -2026-07-05T01:36:48.0429416Z === PAUSE TestEffectsFromResult_DeployAndWriteState -2026-07-05T01:36:48.0429647Z === RUN TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy -2026-07-05T01:36:48.0429872Z === PAUSE TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy -2026-07-05T01:36:48.0430177Z === RUN TestReleaseMarkerEffect_PrereleaseAndPublish -2026-07-05T01:36:48.0430366Z === PAUSE TestReleaseMarkerEffect_PrereleaseAndPublish -2026-07-05T01:36:48.0430497Z === RUN TestReleaseMarkerEffect_NoMarkerWhenEmpty -2026-07-05T01:36:48.0430636Z === PAUSE TestReleaseMarkerEffect_NoMarkerWhenEmpty -2026-07-05T01:36:48.0430831Z === RUN TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions -2026-07-05T01:36:48.0431036Z === PAUSE TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions -2026-07-05T01:36:48.0431167Z === RUN TestEffectsFromResult_SkippedEnvs -2026-07-05T01:36:48.0431290Z === PAUSE TestEffectsFromResult_SkippedEnvs -2026-07-05T01:36:48.0431454Z === RUN TestEffectsFromResult_OrderedPromotionsThenSkips -2026-07-05T01:36:48.0431612Z === PAUSE TestEffectsFromResult_OrderedPromotionsThenSkips -2026-07-05T01:36:48.0431760Z === RUN TestEngine_Simulate_DeployStub_DefaultSuccess -2026-07-05T01:36:48.0431907Z === PAUSE TestEngine_Simulate_DeployStub_DefaultSuccess -2026-07-05T01:36:48.0432106Z === RUN TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize -2026-07-05T01:36:48.0432303Z === PAUSE TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize -2026-07-05T01:36:48.0432465Z === RUN TestEngine_Simulate_DeployStub_NoCallbacksUnchanged -2026-07-05T01:36:48.0432631Z === PAUSE TestEngine_Simulate_DeployStub_NoCallbacksUnchanged -2026-07-05T01:36:48.0432754Z === RUN TestEngine_Simulate_PromoteDefault -2026-07-05T01:36:48.0432869Z === PAUSE TestEngine_Simulate_PromoteDefault -2026-07-05T01:36:48.0433148Z === RUN TestEngine_Simulate_LeavesOriginalUntouched -2026-07-05T01:36:48.0433292Z === PAUSE TestEngine_Simulate_LeavesOriginalUntouched -2026-07-05T01:36:48.0433414Z === RUN TestEngine_Simulate_PromoteCascade -2026-07-05T01:36:48.0433534Z === PAUSE TestEngine_Simulate_PromoteCascade -2026-07-05T01:36:48.0433664Z === RUN TestEngine_Simulate_NoEnvironmentManifest -2026-07-05T01:36:48.0433802Z === PAUSE TestEngine_Simulate_NoEnvironmentManifest -2026-07-05T01:36:48.0433912Z === RUN TestEngine_Simulate_Deterministic -2026-07-05T01:36:48.0434030Z === PAUSE TestEngine_Simulate_Deterministic -2026-07-05T01:36:48.0434169Z === RUN TestHotfixAction_DivergesEnvAndRecordsPatch -2026-07-05T01:36:48.0434315Z === PAUSE TestHotfixAction_DivergesEnvAndRecordsPatch -2026-07-05T01:36:48.0434468Z === RUN TestHotfixAction_MultiCommitRecordsEveryPatch -2026-07-05T01:36:48.0434614Z === PAUSE TestHotfixAction_MultiCommitRecordsEveryPatch -2026-07-05T01:36:48.0434751Z === RUN TestHotfixAction_LeavesOriginalUntouched -2026-07-05T01:36:48.0434889Z === PAUSE TestHotfixAction_LeavesOriginalUntouched -2026-07-05T01:36:48.0435015Z === RUN TestHotfixAction_NoStateErrors -2026-07-05T01:36:48.0435131Z === PAUSE TestHotfixAction_NoStateErrors -2026-07-05T01:36:48.0435270Z === RUN TestReleaseAction_SurfacesPrereleaseMarker -2026-07-05T01:36:48.0435417Z === PAUSE TestReleaseAction_SurfacesPrereleaseMarker -2026-07-05T01:36:48.0435549Z === RUN TestReleaseAction_ErrorsWhenNoCrossing -2026-07-05T01:36:48.0435682Z === PAUSE TestReleaseAction_ErrorsWhenNoCrossing -2026-07-05T01:36:48.0435794Z === RUN TestRenderHuman_Golden -2026-07-05T01:36:48.0435909Z --- PASS: TestRenderHuman_Golden (0.01s) -2026-07-05T01:36:48.0436019Z === RUN TestRenderJSON_Golden -2026-07-05T01:36:48.0436133Z --- PASS: TestRenderJSON_Golden (0.01s) -2026-07-05T01:36:48.0436298Z === RUN TestRollbackAction_RevertsToPreviousRingSnapshot -2026-07-05T01:36:48.0436457Z === PAUSE TestRollbackAction_RevertsToPreviousRingSnapshot -2026-07-05T01:36:48.0436598Z === RUN TestRollbackAction_NoOpWhenAlreadyAtTarget -2026-07-05T01:36:48.0436866Z === PAUSE TestRollbackAction_NoOpWhenAlreadyAtTarget -2026-07-05T01:36:48.0437004Z === RUN TestRollbackAction_LeavesOriginalUntouched -2026-07-05T01:36:48.0437147Z === PAUSE TestRollbackAction_LeavesOriginalUntouched -2026-07-05T01:36:48.0437269Z === RUN TestRollbackAction_UnknownEnvErrors -2026-07-05T01:36:48.0437393Z === PAUSE TestRollbackAction_UnknownEnvErrors -2026-07-05T01:36:48.0437564Z === CONT TestSimulatePromoteHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0437707Z === CONT TestReleaseMarkerEffect_PrereleaseAndPublish -2026-07-05T01:36:48.0437844Z === CONT TestEngine_Simulate_NoEnvironmentManifest -2026-07-05T01:36:48.0438030Z === RUN TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease -2026-07-05T01:36:48.0438151Z === CONT TestEngine_Simulate_PromoteCascade -2026-07-05T01:36:48.0438340Z === PAUSE TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease -2026-07-05T01:36:48.0438511Z === RUN TestReleaseMarkerEffect_PrereleaseAndPublish/publish -2026-07-05T01:36:48.0438689Z === PAUSE TestReleaseMarkerEffect_PrereleaseAndPublish/publish -2026-07-05T01:36:48.0438828Z === CONT TestEngine_Simulate_LeavesOriginalUntouched -2026-07-05T01:36:48.0439029Z --- PASS: TestSimulatePromoteHelp_MentionsScopeAndIsolation (0.00s) -2026-07-05T01:36:48.0439150Z === CONT TestEngine_Simulate_PromoteDefault -2026-07-05T01:36:48.0439307Z --- PASS: TestEngine_Simulate_NoEnvironmentManifest (0.01s) -2026-07-05T01:36:48.0439453Z === CONT TestHotfixAction_DivergesEnvAndRecordsPatch -2026-07-05T01:36:48.0439586Z --- PASS: TestEngine_Simulate_PromoteDefault (0.01s) -2026-07-05T01:36:48.0439752Z === CONT TestEngine_Simulate_DeployStub_NoCallbacksUnchanged -2026-07-05T01:36:48.0439911Z --- PASS: TestEngine_Simulate_LeavesOriginalUntouched (0.01s) -2026-07-05T01:36:48.0440216Z === CONT TestEngine_Simulate_DeployStub_DefaultSuccess -2026-07-05T01:36:48.0440357Z --- PASS: TestEngine_Simulate_PromoteCascade (0.01s) -2026-07-05T01:36:48.0440554Z === CONT TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize -2026-07-05T01:36:48.0440882Z --- PASS: TestEngine_Simulate_DeployStub_NoCallbacksUnchanged (0.01s) -2026-07-05T01:36:48.0441043Z === CONT TestEffectsFromResult_OrderedPromotionsThenSkips -2026-07-05T01:36:48.0441243Z --- PASS: TestEffectsFromResult_OrderedPromotionsThenSkips (0.00s) -2026-07-05T01:36:48.0441366Z === CONT TestEffectsFromResult_SkippedEnvs -2026-07-05T01:36:48.0441500Z --- PASS: TestEffectsFromResult_SkippedEnvs (0.00s) -2026-07-05T01:36:48.0441636Z === CONT TestReleaseMarkerEffect_NoMarkerWhenEmpty -2026-07-05T01:36:48.0441794Z --- PASS: TestReleaseMarkerEffect_NoMarkerWhenEmpty (0.00s) -2026-07-05T01:36:48.0441990Z === CONT TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions -2026-07-05T01:36:48.0442228Z --- PASS: TestEffectsFromResult_AppendsReleaseMarkerAfterPromotions (0.00s) -2026-07-05T01:36:48.0442359Z === CONT TestReleaseAction_ErrorsWhenNoCrossing -2026-07-05T01:36:48.0442529Z --- PASS: TestHotfixAction_DivergesEnvAndRecordsPatch (0.01s) -2026-07-05T01:36:48.0442654Z === CONT TestRollbackAction_UnknownEnvErrors -2026-07-05T01:36:48.0442894Z --- PASS: TestEngine_Simulate_DeployStub_InjectedFailureGatesFinalize (0.01s) -2026-07-05T01:36:48.0443034Z === CONT TestRollbackAction_LeavesOriginalUntouched -2026-07-05T01:36:48.0443168Z === CONT TestRollbackAction_NoOpWhenAlreadyAtTarget -2026-07-05T01:36:48.0443330Z --- PASS: TestReleaseAction_ErrorsWhenNoCrossing (0.01s) -2026-07-05T01:36:48.0443501Z --- PASS: TestEngine_Simulate_DeployStub_DefaultSuccess (0.02s) -2026-07-05T01:36:48.0443664Z === CONT TestRollbackAction_RevertsToPreviousRingSnapshot -2026-07-05T01:36:48.0443810Z --- PASS: TestRollbackAction_UnknownEnvErrors (0.01s) -2026-07-05T01:36:48.0443956Z === CONT TestHotfixAction_MultiCommitRecordsEveryPatch -2026-07-05T01:36:48.0444125Z --- PASS: TestRollbackAction_NoOpWhenAlreadyAtTarget (0.01s) -2026-07-05T01:36:48.0444261Z === CONT TestDeployStub_RecordedEffects_DefaultSuccess -2026-07-05T01:36:48.0444434Z --- PASS: TestDeployStub_RecordedEffects_DefaultSuccess (0.00s) -2026-07-05T01:36:48.0444569Z === CONT TestHotfixAction_LeavesOriginalUntouched -2026-07-05T01:36:48.0444855Z --- PASS: TestRollbackAction_LeavesOriginalUntouched (0.01s) -2026-07-05T01:36:48.0444994Z === CONT TestEffectsFromResult_DeployAndWriteState -2026-07-05T01:36:48.0445151Z --- PASS: TestEffectsFromResult_DeployAndWriteState (0.00s) -2026-07-05T01:36:48.0445262Z === CONT TestDiffState_NoChange -2026-07-05T01:36:48.0445375Z --- PASS: TestDiffState_NoChange (0.00s) -2026-07-05T01:36:48.0445523Z === CONT TestDeployStub_OneSucceedsOneSkipped_Proceeds -2026-07-05T01:36:48.0445701Z --- PASS: TestDeployStub_OneSucceedsOneSkipped_Proceeds (0.00s) -2026-07-05T01:36:48.0445922Z === CONT TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy -2026-07-05T01:36:48.0446187Z --- PASS: TestEffectsFromResult_ReleaseMarkerAdvanceIsWriteStateNotDeploy (0.00s) -2026-07-05T01:36:48.0446303Z === CONT TestDeployStub_DoesNotAliasInputs -2026-07-05T01:36:48.0446442Z --- PASS: TestDeployStub_DoesNotAliasInputs (0.00s) -2026-07-05T01:36:48.0446584Z === CONT TestDiffState_IgnoresRunStampedTimestamps -2026-07-05T01:36:48.0446745Z --- PASS: TestDiffState_IgnoresRunStampedTimestamps (0.00s) -2026-07-05T01:36:48.0446876Z === CONT TestDeployStub_InjectedFailure_Gates -2026-07-05T01:36:48.0447022Z --- PASS: TestDeployStub_InjectedFailure_Gates (0.00s) -2026-07-05T01:36:48.0447137Z === CONT TestDiffState_FieldChanges -2026-07-05T01:36:48.0447274Z === RUN TestDiffState_FieldChanges/version_bump -2026-07-05T01:36:48.0447406Z === PAUSE TestDiffState_FieldChanges/version_bump -2026-07-05T01:36:48.0447548Z === RUN TestDiffState_FieldChanges/sha_set_from_empty -2026-07-05T01:36:48.0447688Z === PAUSE TestDiffState_FieldChanges/sha_set_from_empty -2026-07-05T01:36:48.0447843Z === RUN TestDiffState_FieldChanges/per-deploy_sha_change -2026-07-05T01:36:48.0447994Z === PAUSE TestDiffState_FieldChanges/per-deploy_sha_change -2026-07-05T01:36:48.0448159Z === RUN TestDiffState_FieldChanges/divergence_onset_via_ref -2026-07-05T01:36:48.0448416Z === PAUSE TestDiffState_FieldChanges/divergence_onset_via_ref -2026-07-05T01:36:48.0448596Z === RUN TestDiffState_FieldChanges/divergence_onset_via_patches -2026-07-05T01:36:48.0448772Z === PAUSE TestDiffState_FieldChanges/divergence_onset_via_patches -2026-07-05T01:36:48.0448923Z === RUN TestDiffState_FieldChanges/previous-ring_growth -2026-07-05T01:36:48.0449078Z === PAUSE TestDiffState_FieldChanges/previous-ring_growth -2026-07-05T01:36:48.0449195Z === CONT TestDeployStub_AllSkipped_Gates -2026-07-05T01:36:48.0449326Z --- PASS: TestDeployStub_AllSkipped_Gates (0.00s) -2026-07-05T01:36:48.0449437Z === CONT TestParseDeployResults -2026-07-05T01:36:48.0449557Z === RUN TestParseDeployResults/valid_pairs -2026-07-05T01:36:48.0449686Z === PAUSE TestParseDeployResults/valid_pairs -2026-07-05T01:36:48.0449825Z === RUN TestParseDeployResults/nil_for_empty_input -2026-07-05T01:36:48.0449962Z === PAUSE TestParseDeployResults/nil_for_empty_input -2026-07-05T01:36:48.0450275Z === RUN TestParseDeployResults/rejects_malformed_pair -2026-07-05T01:36:48.0450426Z === PAUSE TestParseDeployResults/rejects_malformed_pair -2026-07-05T01:36:48.0450570Z === RUN TestParseDeployResults/rejects_blank_name -2026-07-05T01:36:48.0450708Z === PAUSE TestParseDeployResults/rejects_blank_name -2026-07-05T01:36:48.0450855Z === RUN TestParseDeployResults/rejects_unknown_outcome -2026-07-05T01:36:48.0451009Z === PAUSE TestParseDeployResults/rejects_unknown_outcome -2026-07-05T01:36:48.0451144Z === CONT TestReleaseAction_SurfacesPrereleaseMarker -2026-07-05T01:36:48.0451324Z --- PASS: TestHotfixAction_MultiCommitRecordsEveryPatch (0.01s) -2026-07-05T01:36:48.0451435Z === CONT TestHotfixAction_NoStateErrors -2026-07-05T01:36:48.0451634Z --- PASS: TestRollbackAction_RevertsToPreviousRingSnapshot (0.01s) -2026-07-05T01:36:48.0451800Z === CONT TestSimulateReleaseHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0451991Z --- PASS: TestSimulateReleaseHelp_MentionsScopeAndIsolation (0.00s) -2026-07-05T01:36:48.0452110Z === CONT TestEngine_Simulate_Deterministic -2026-07-05T01:36:48.0452245Z --- PASS: TestHotfixAction_NoStateErrors (0.01s) -2026-07-05T01:36:48.0452483Z === CONT TestParseCommaList -2026-07-05T01:36:48.0452647Z --- PASS: TestHotfixAction_LeavesOriginalUntouched (0.01s) -2026-07-05T01:36:48.0452759Z --- PASS: TestParseCommaList (0.00s) -2026-07-05T01:36:48.0452897Z === CONT TestDeployStub_RecordedEffects_NoCallbacks -2026-07-05T01:36:48.0453058Z --- PASS: TestDeployStub_RecordedEffects_NoCallbacks (0.00s) -2026-07-05T01:36:48.0453215Z === CONT TestCommonFlags_EngineOptions_DefaultIsActorOnly -2026-07-05T01:36:48.0453401Z --- PASS: TestCommonFlags_EngineOptions_DefaultIsActorOnly (0.00s) -2026-07-05T01:36:48.0453536Z === CONT TestSimulateHelp_MentionsDeployResultFlag -2026-07-05T01:36:48.0453694Z === CONT TestCommonFlags_EngineOptions_InvalidDeployResult -2026-07-05T01:36:48.0453877Z --- PASS: TestCommonFlags_EngineOptions_InvalidDeployResult (0.00s) -2026-07-05T01:36:48.0453999Z === CONT TestSimulatePromote_InvalidMode -2026-07-05T01:36:48.0454140Z --- PASS: TestSimulatePromote_InvalidMode (0.00s) -2026-07-05T01:36:48.0454267Z === CONT TestSimulateSubcommands_Registered -2026-07-05T01:36:48.0454432Z --- PASS: TestSimulateHelp_MentionsDeployResultFlag (0.00s) -2026-07-05T01:36:48.0454595Z === CONT TestSimulateRollbackHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0454737Z --- PASS: TestSimulateSubcommands_Registered (0.00s) -2026-07-05T01:36:48.0454892Z === CONT TestSimulateHotfixHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0455097Z --- PASS: TestSimulateRollbackHelp_MentionsScopeAndIsolation (0.00s) -2026-07-05T01:36:48.0455239Z === CONT TestSimulateHelp_MentionsScopeAndIsolation -2026-07-05T01:36:48.0455425Z --- PASS: TestSimulateHotfixHelp_MentionsScopeAndIsolation (0.00s) -2026-07-05T01:36:48.0455603Z === CONT TestReleaseMarkerEffect_PrereleaseAndPublish/publish -2026-07-05T01:36:48.0455763Z --- PASS: TestSimulateHelp_MentionsScopeAndIsolation (0.00s) -2026-07-05T01:36:48.0455945Z === CONT TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease -2026-07-05T01:36:48.0456202Z === CONT TestDiffState_FieldChanges/sha_set_from_empty -2026-07-05T01:36:48.0456382Z === CONT TestDiffState_FieldChanges/divergence_onset_via_patches -2026-07-05T01:36:48.0456548Z === CONT TestDiffState_FieldChanges/divergence_onset_via_ref -2026-07-05T01:36:48.0456696Z === CONT TestDiffState_FieldChanges/per-deploy_sha_change -2026-07-05T01:36:48.0456870Z --- PASS: TestReleaseMarkerEffect_PrereleaseAndPublish (0.00s) -2026-07-05T01:36:48.0457149Z --- PASS: TestReleaseMarkerEffect_PrereleaseAndPublish/publish (0.00s) -2026-07-05T01:36:48.0457432Z --- PASS: TestReleaseMarkerEffect_PrereleaseAndPublish/prerelease (0.00s) -2026-07-05T01:36:48.0464600Z === CONT TestDiffState_FieldChanges/previous-ring_growth -2026-07-05T01:36:48.0464794Z === CONT TestDiffState_FieldChanges/version_bump -2026-07-05T01:36:48.0464962Z === CONT TestParseDeployResults/rejects_malformed_pair -2026-07-05T01:36:48.0465129Z === CONT TestParseDeployResults/rejects_unknown_outcome -2026-07-05T01:36:48.0465287Z === CONT TestParseDeployResults/rejects_blank_name -2026-07-05T01:36:48.0465420Z --- PASS: TestDiffState_FieldChanges (0.00s) -2026-07-05T01:36:48.0465678Z --- PASS: TestDiffState_FieldChanges/sha_set_from_empty (0.00s) -2026-07-05T01:36:48.0465968Z --- PASS: TestDiffState_FieldChanges/divergence_onset_via_patches (0.00s) -2026-07-05T01:36:48.0466229Z --- PASS: TestDiffState_FieldChanges/divergence_onset_via_ref (0.00s) -2026-07-05T01:36:48.0466478Z --- PASS: TestDiffState_FieldChanges/per-deploy_sha_change (0.00s) -2026-07-05T01:36:48.0466728Z --- PASS: TestDiffState_FieldChanges/previous-ring_growth (0.00s) -2026-07-05T01:36:48.0466946Z --- PASS: TestDiffState_FieldChanges/version_bump (0.00s) -2026-07-05T01:36:48.0467093Z === CONT TestParseDeployResults/nil_for_empty_input -2026-07-05T01:36:48.0467220Z === CONT TestParseDeployResults/valid_pairs -2026-07-05T01:36:48.0467345Z --- PASS: TestParseDeployResults (0.00s) -2026-07-05T01:36:48.0467579Z --- PASS: TestParseDeployResults/rejects_malformed_pair (0.00s) -2026-07-05T01:36:48.0468050Z --- PASS: TestParseDeployResults/rejects_unknown_outcome (0.00s) -2026-07-05T01:36:48.0468266Z --- PASS: TestParseDeployResults/rejects_blank_name (0.00s) -2026-07-05T01:36:48.0468492Z --- PASS: TestParseDeployResults/nil_for_empty_input (0.00s) -2026-07-05T01:36:48.0468679Z --- PASS: TestParseDeployResults/valid_pairs (0.00s) -2026-07-05T01:36:48.0468855Z --- PASS: TestReleaseAction_SurfacesPrereleaseMarker (0.01s) -2026-07-05T01:36:48.0468996Z --- PASS: TestEngine_Simulate_Deterministic (0.01s) -2026-07-05T01:36:48.0469077Z PASS -2026-07-05T01:36:48.0469189Z coverage: 79.2% of statements -2026-07-05T01:36:48.0469474Z ok github.com/stablekernel/cascade/internal/simulate 1.090s coverage: 79.2% of statements -2026-07-05T01:36:48.0469675Z === RUN TestCommitWithRetry_RetriesOn409AndMergesConcurrentWrite -2026-07-05T01:36:48.0469905Z --- PASS: TestCommitWithRetry_RetriesOn409AndMergesConcurrentWrite (0.00s) -2026-07-05T01:36:48.0470275Z === RUN TestCommitWithRetry_ErrorsAfterBoundedAttempts -2026-07-05T01:36:48.0470489Z --- PASS: TestCommitWithRetry_ErrorsAfterBoundedAttempts (0.00s) -2026-07-05T01:36:48.0470650Z === RUN TestCommitWithRetry_NonConflictErrorIsNotRetried -2026-07-05T01:36:48.0470846Z --- PASS: TestCommitWithRetry_NonConflictErrorIsNotRetried (0.00s) -2026-07-05T01:36:48.0471009Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter -2026-07-05T01:36:48.0471333Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter/defaults_to_github-actions[bot]_when_unset -2026-07-05T01:36:48.0471596Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter/honors_a_manifest_git_override -2026-07-05T01:36:48.0471924Z === RUN TestCommitWithRetry_StampsBotAuthorAndCommitter/fills_only_the_missing_field_from_the_default -2026-07-05T01:36:48.0472114Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter (0.00s) -2026-07-05T01:36:48.0472559Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter/defaults_to_github-actions[bot]_when_unset (0.00s) -2026-07-05T01:36:48.0473082Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter/honors_a_manifest_git_override (0.00s) -2026-07-05T01:36:48.0473553Z --- PASS: TestCommitWithRetry_StampsBotAuthorAndCommitter/fills_only_the_missing_field_from_the_default (0.00s) -2026-07-05T01:36:48.0473724Z === RUN TestCommitWithRetry_IdentityPersistsAcrossRetries -2026-07-05T01:36:48.0473926Z --- PASS: TestCommitWithRetry_IdentityPersistsAcrossRetries (0.00s) -2026-07-05T01:36:48.0474023Z === RUN TestIsConflict -2026-07-05T01:36:48.0474130Z === RUN TestIsConflict/nil -2026-07-05T01:36:48.0474241Z === RUN TestIsConflict/typed_conflict -2026-07-05T01:36:48.0474357Z === RUN TestIsConflict/raw_gh_409_body -2026-07-05T01:36:48.0474488Z === RUN TestIsConflict/wrapped_typed_conflict -2026-07-05T01:36:48.0474595Z === RUN TestIsConflict/unrelated_error -2026-07-05T01:36:48.0474737Z === RUN TestIsConflict/does-not-match_without_409 -2026-07-05T01:36:48.0474844Z --- PASS: TestIsConflict (0.00s) -2026-07-05T01:36:48.0474999Z --- PASS: TestIsConflict/nil (0.00s) -2026-07-05T01:36:48.0475182Z --- PASS: TestIsConflict/typed_conflict (0.00s) -2026-07-05T01:36:48.0475356Z --- PASS: TestIsConflict/raw_gh_409_body (0.00s) -2026-07-05T01:36:48.0475560Z --- PASS: TestIsConflict/wrapped_typed_conflict (0.00s) -2026-07-05T01:36:48.0475762Z --- PASS: TestIsConflict/unrelated_error (0.00s) -2026-07-05T01:36:48.0475979Z --- PASS: TestIsConflict/does-not-match_without_409 (0.00s) -2026-07-05T01:36:48.0476082Z === RUN TestClassifyPutError -2026-07-05T01:36:48.0476204Z === RUN TestClassifyPutError/409_conflict -2026-07-05T01:36:48.0476328Z === RUN TestClassifyPutError/conflict_word -2026-07-05T01:36:48.0476451Z === RUN TestClassifyPutError/401_not_conflict -2026-07-05T01:36:48.0476572Z === RUN TestClassifyPutError/nil_err -2026-07-05T01:36:48.0476681Z --- PASS: TestClassifyPutError (0.00s) -2026-07-05T01:36:48.0476871Z --- PASS: TestClassifyPutError/409_conflict (0.00s) -2026-07-05T01:36:48.0477062Z --- PASS: TestClassifyPutError/conflict_word (0.00s) -2026-07-05T01:36:48.0477381Z --- PASS: TestClassifyPutError/401_not_conflict (0.00s) -2026-07-05T01:36:48.0477556Z --- PASS: TestClassifyPutError/nil_err (0.00s) -2026-07-05T01:36:48.0477631Z PASS -2026-07-05T01:36:48.0477737Z coverage: 64.7% of statements -2026-07-05T01:36:48.0478029Z ok github.com/stablekernel/cascade/internal/statewrite 1.012s coverage: 64.7% of statements -2026-07-05T01:36:48.0478140Z === RUN TestRunStatusAll_HumanReadable -2026-07-05T01:36:48.0478275Z --- PASS: TestRunStatusAll_HumanReadable (0.00s) -2026-07-05T01:36:48.0478376Z === RUN TestRunStatusAll_JSON -2026-07-05T01:36:48.0478662Z --- PASS: TestRunStatusAll_JSON (0.00s) -2026-07-05T01:36:48.0478816Z === RUN TestRunStatusAll_EmptyState -2026-07-05T01:36:48.0478988Z --- PASS: TestRunStatusAll_EmptyState (0.00s) -2026-07-05T01:36:48.0479139Z === RUN TestRunStatusAll_MissingFile -2026-07-05T01:36:48.0479310Z --- PASS: TestRunStatusAll_MissingFile (0.00s) -2026-07-05T01:36:48.0479414Z === RUN TestRunEnv_KnownEnv -2026-07-05T01:36:48.0479530Z --- PASS: TestRunEnv_KnownEnv (0.00s) -2026-07-05T01:36:48.0479640Z === RUN TestStatus_PrintsDivergence -2026-07-05T01:36:48.0479766Z --- PASS: TestStatus_PrintsDivergence (0.00s) -2026-07-05T01:36:48.0479863Z === RUN TestRunEnv_FilterJSON -2026-07-05T01:36:48.0479976Z --- PASS: TestRunEnv_FilterJSON (0.00s) -2026-07-05T01:36:48.0480264Z === RUN TestRunEnv_UnknownEnv_HumanReadable -2026-07-05T01:36:48.0480413Z --- PASS: TestRunEnv_UnknownEnv_HumanReadable (0.00s) -2026-07-05T01:36:48.0480517Z === RUN TestRunEnv_UnknownEnv_JSON -2026-07-05T01:36:48.0480637Z --- PASS: TestRunEnv_UnknownEnv_JSON (0.00s) -2026-07-05T01:36:48.0480745Z === RUN TestRunEnv_EmptyProdState -2026-07-05T01:36:48.0480860Z --- PASS: TestRunEnv_EmptyProdState (0.00s) -2026-07-05T01:36:48.0480968Z === RUN TestRunBuild_KnownBuild -2026-07-05T01:36:48.0481080Z --- PASS: TestRunBuild_KnownBuild (0.00s) -2026-07-05T01:36:48.0481181Z === RUN TestRunBuild_JSON -2026-07-05T01:36:48.0481288Z --- PASS: TestRunBuild_JSON (0.00s) -2026-07-05T01:36:48.0481533Z === RUN TestRunBuild_MissingBuild -2026-07-05T01:36:48.0481655Z --- PASS: TestRunBuild_MissingBuild (0.00s) -2026-07-05T01:36:48.0481763Z === RUN TestRunBuild_MissingBuild_JSON -2026-07-05T01:36:48.0481899Z --- PASS: TestRunBuild_MissingBuild_JSON (0.00s) -2026-07-05T01:36:48.0481998Z === RUN TestRunBuild_MissingEnv -2026-07-05T01:36:48.0482111Z --- PASS: TestRunBuild_MissingEnv (0.00s) -2026-07-05T01:36:48.0482218Z === RUN TestRunDeploy_KnownDeploy -2026-07-05T01:36:48.0482330Z --- PASS: TestRunDeploy_KnownDeploy (0.01s) -2026-07-05T01:36:48.0482437Z === RUN TestRunDeploy_JSON -2026-07-05T01:36:48.0482540Z --- PASS: TestRunDeploy_JSON (0.00s) -2026-07-05T01:36:48.0482652Z === RUN TestRunDeploy_MissingDeploy -2026-07-05T01:36:48.0482775Z --- PASS: TestRunDeploy_MissingDeploy (0.00s) -2026-07-05T01:36:48.0482878Z === RUN TestRunDeploy_MissingEnv -2026-07-05T01:36:48.0482998Z --- PASS: TestRunDeploy_MissingEnv (0.00s) -2026-07-05T01:36:48.0483132Z === RUN TestConsistency_OrphanEnvBranchFlagged -2026-07-05T01:36:48.0483295Z --- PASS: TestConsistency_OrphanEnvBranchFlagged (0.00s) -2026-07-05T01:36:48.0483405Z === RUN TestConsistency_NoOrphans -2026-07-05T01:36:48.0483525Z --- PASS: TestConsistency_NoOrphans (0.00s) -2026-07-05T01:36:48.0483630Z === RUN TestConsistency_JSON -2026-07-05T01:36:48.0483738Z --- PASS: TestConsistency_JSON (0.00s) -2026-07-05T01:36:48.0483864Z === RUN TestConsistency_Fix_DeletesOnlyOrphans -2026-07-05T01:36:48.0484010Z --- PASS: TestConsistency_Fix_DeletesOnlyOrphans (0.00s) -2026-07-05T01:36:48.0484125Z === RUN TestConsistency_Fix_Idempotent -2026-07-05T01:36:48.0484253Z --- PASS: TestConsistency_Fix_Idempotent (0.00s) -2026-07-05T01:36:48.0484387Z === RUN TestConsistency_Fix_JSONReflectsDeletions -2026-07-05T01:36:48.0484548Z --- PASS: TestConsistency_Fix_JSONReflectsDeletions (0.00s) -2026-07-05T01:36:48.0484621Z PASS -2026-07-05T01:36:48.0484723Z coverage: 71.1% of statements -2026-07-05T01:36:48.0484989Z ok github.com/stablekernel/cascade/internal/status 1.093s coverage: 71.1% of statements -2026-07-05T01:36:48.0485214Z === RUN TestRun_CleanRepo_NoDrift -2026-07-05T01:36:48.0485321Z === PAUSE TestRun_CleanRepo_NoDrift -2026-07-05T01:36:48.0485453Z === RUN TestRun_ChangedFile_ReportsOnlyThatFile -2026-07-05T01:36:48.0485589Z === PAUSE TestRun_ChangedFile_ReportsOnlyThatFile -2026-07-05T01:36:48.0485704Z === RUN TestRun_MissingFile_ReportsMissing -2026-07-05T01:36:48.0485823Z === PAUSE TestRun_MissingFile_ReportsMissing -2026-07-05T01:36:48.0485933Z === RUN TestRun_UnrelatedFile_Ignored -2026-07-05T01:36:48.0486038Z === PAUSE TestRun_UnrelatedFile_Ignored -2026-07-05T01:36:48.0486178Z === RUN TestRun_OrphanedGeneratedFile_ReportsDrift -2026-07-05T01:36:48.0486311Z === PAUSE TestRun_OrphanedGeneratedFile_ReportsDrift -2026-07-05T01:36:48.0486435Z === RUN TestRun_Orphan_AllowOrphans_NoDrift -2026-07-05T01:36:48.0486554Z === PAUSE TestRun_Orphan_AllowOrphans_NoDrift -2026-07-05T01:36:48.0486668Z === RUN TestRun_HandWrittenFile_NeverOrphan -2026-07-05T01:36:48.0486792Z === PAUSE TestRun_HandWrittenFile_NeverOrphan -2026-07-05T01:36:48.0486933Z === RUN TestRun_MultipleOrphans_SortedDeterministic -2026-07-05T01:36:48.0487077Z === PAUSE TestRun_MultipleOrphans_SortedDeterministic -2026-07-05T01:36:48.0487207Z === RUN TestRun_ManifestAbsent_OperationalNotDrift -2026-07-05T01:36:48.0487346Z === PAUSE TestRun_ManifestAbsent_OperationalNotDrift -2026-07-05T01:36:48.0487466Z === RUN TestRun_Quiet_SuppressesReportBody -2026-07-05T01:36:48.0487580Z === PAUSE TestRun_Quiet_SuppressesReportBody -2026-07-05T01:36:48.0487697Z === RUN TestRun_Deterministic_CleanTwice -2026-07-05T01:36:48.0487807Z === PAUSE TestRun_Deterministic_CleanTwice -2026-07-05T01:36:48.0487931Z === RUN TestRun_CleanRepo_ReturnsNil_ExitZero -2026-07-05T01:36:48.0488057Z === PAUSE TestRun_CleanRepo_ReturnsNil_ExitZero -2026-07-05T01:36:48.0488155Z === RUN TestRun_Drift_ExitCodeOne -2026-07-05T01:36:48.0488260Z === PAUSE TestRun_Drift_ExitCodeOne -2026-07-05T01:36:48.0488384Z === RUN TestRun_OperationalFailure_ExitCodeTwo -2026-07-05T01:36:48.0488601Z === PAUSE TestRun_OperationalFailure_ExitCodeTwo -2026-07-05T01:36:48.0488704Z === RUN TestErrDrift_ExitCodeOne -2026-07-05T01:36:48.0488812Z === PAUSE TestErrDrift_ExitCodeOne -2026-07-05T01:36:48.0488932Z === CONT TestRun_Orphan_AllowOrphans_NoDrift -2026-07-05T01:36:48.0489065Z === CONT TestRun_MultipleOrphans_SortedDeterministic -2026-07-05T01:36:48.0489172Z === CONT TestRun_UnrelatedFile_Ignored -2026-07-05T01:36:48.0489284Z === CONT TestRun_HandWrittenFile_NeverOrphan -2026-07-05T01:36:48.0489425Z --- PASS: TestRun_Orphan_AllowOrphans_NoDrift (0.02s) -2026-07-05T01:36:48.0489543Z === CONT TestRun_MissingFile_ReportsMissing -2026-07-05T01:36:48.0489673Z --- PASS: TestRun_HandWrittenFile_NeverOrphan (0.02s) -2026-07-05T01:36:48.0489801Z === CONT TestRun_ChangedFile_ReportsOnlyThatFile -2026-07-05T01:36:48.0489923Z --- PASS: TestRun_UnrelatedFile_Ignored (0.02s) -2026-07-05T01:36:48.0490194Z === CONT TestRun_CleanRepo_NoDrift -2026-07-05T01:36:48.0490383Z --- PASS: TestRun_MultipleOrphans_SortedDeterministic (0.02s) -2026-07-05T01:36:48.0490487Z === CONT TestRun_Drift_ExitCodeOne -2026-07-05T01:36:48.0490605Z --- PASS: TestRun_CleanRepo_NoDrift (0.02s) -2026-07-05T01:36:48.0490725Z === CONT TestRun_OperationalFailure_ExitCodeTwo -2026-07-05T01:36:48.0490862Z --- PASS: TestRun_MissingFile_ReportsMissing (0.02s) -2026-07-05T01:36:48.0490993Z === CONT TestRun_OrphanedGeneratedFile_ReportsDrift -2026-07-05T01:36:48.0491152Z --- PASS: TestRun_ChangedFile_ReportsOnlyThatFile (0.02s) -2026-07-05T01:36:48.0491258Z === CONT TestErrDrift_ExitCodeOne -2026-07-05T01:36:48.0491369Z --- PASS: TestErrDrift_ExitCodeOne (0.00s) -2026-07-05T01:36:48.0491502Z === CONT TestRun_ManifestAbsent_OperationalNotDrift -2026-07-05T01:36:48.0491614Z --- PASS: TestRun_Drift_ExitCodeOne (0.02s) -2026-07-05T01:36:48.0491727Z === CONT TestRun_Deterministic_CleanTwice -2026-07-05T01:36:48.0491877Z --- PASS: TestRun_OperationalFailure_ExitCodeTwo (0.00s) -2026-07-05T01:36:48.0491998Z === CONT TestRun_CleanRepo_ReturnsNil_ExitZero -2026-07-05T01:36:48.0492301Z --- PASS: TestRun_ManifestAbsent_OperationalNotDrift (0.00s) -2026-07-05T01:36:48.0492417Z === CONT TestRun_Quiet_SuppressesReportBody -2026-07-05T01:36:48.0492564Z --- PASS: TestRun_CleanRepo_ReturnsNil_ExitZero (0.02s) -2026-07-05T01:36:48.0492725Z --- PASS: TestRun_OrphanedGeneratedFile_ReportsDrift (0.02s) -2026-07-05T01:36:48.0492860Z --- PASS: TestRun_Quiet_SuppressesReportBody (0.02s) -2026-07-05T01:36:48.0492999Z --- PASS: TestRun_Deterministic_CleanTwice (0.03s) -2026-07-05T01:36:48.0493074Z PASS -2026-07-05T01:36:48.0493176Z coverage: 74.7% of statements -2026-07-05T01:36:48.0493432Z ok github.com/stablekernel/cascade/internal/verify 1.088s coverage: 74.7% of statements -2026-07-05T01:36:48.0493553Z === RUN TestVersionNewCommand_Structure -2026-07-05T01:36:48.0493686Z --- PASS: TestVersionNewCommand_Structure (0.00s) -2026-07-05T01:36:48.0493813Z === RUN TestVersionNewCommand_RunE_BadConfigPath -2026-07-05T01:36:48.0493985Z --- PASS: TestVersionNewCommand_RunE_BadConfigPath (0.00s) -2026-07-05T01:36:48.0494144Z === RUN TestVersionNewCommand_RunE_MissingEnvironmentFlag -2026-07-05T01:36:48.0494341Z --- PASS: TestVersionNewCommand_RunE_MissingEnvironmentFlag (0.00s) -2026-07-05T01:36:48.0494489Z === RUN TestVersionNewCommand_RunE_EnvironmentNotFound -2026-07-05T01:36:48.0494664Z --- PASS: TestVersionNewCommand_RunE_EnvironmentNotFound (0.00s) -2026-07-05T01:36:48.0494821Z === RUN TestVersionNewCommand_RunE_ValidConfigTextOutput -2026-07-05T01:36:48.0495006Z --- PASS: TestVersionNewCommand_RunE_ValidConfigTextOutput (0.00s) -2026-07-05T01:36:48.0495158Z === RUN TestVersionNewCommand_RunE_ValidConfigJSONOutput -2026-07-05T01:36:48.0495339Z --- PASS: TestVersionNewCommand_RunE_ValidConfigJSONOutput (0.00s) -2026-07-05T01:36:48.0495460Z === RUN TestVersionNewCommand_RunE_EmptyRange -2026-07-05T01:36:48.0495550Z v0.1.0-rc.0 -2026-07-05T01:36:48.0495694Z --- PASS: TestVersionNewCommand_RunE_EmptyRange (0.01s) -2026-07-05T01:36:48.0495940Z === RUN TestVersionNewCommand_RunE_NoConfigFlag -2026-07-05T01:36:48.0496102Z --- PASS: TestVersionNewCommand_RunE_NoConfigFlag (0.00s) -2026-07-05T01:36:48.0496204Z === RUN TestBumpTypeString -2026-07-05T01:36:48.0496314Z === RUN TestBumpTypeString/major -2026-07-05T01:36:48.0496415Z === RUN TestBumpTypeString/minor -2026-07-05T01:36:48.0496522Z === RUN TestBumpTypeString/patch -2026-07-05T01:36:48.0496626Z === RUN TestBumpTypeString/none -2026-07-05T01:36:48.0496743Z === RUN TestBumpTypeString/none#01 -2026-07-05T01:36:48.0496853Z --- PASS: TestBumpTypeString (0.00s) -2026-07-05T01:36:48.0497015Z --- PASS: TestBumpTypeString/major (0.00s) -2026-07-05T01:36:48.0497172Z --- PASS: TestBumpTypeString/minor (0.00s) -2026-07-05T01:36:48.0497328Z --- PASS: TestBumpTypeString/patch (0.00s) -2026-07-05T01:36:48.0497486Z --- PASS: TestBumpTypeString/none (0.00s) -2026-07-05T01:36:48.0497650Z --- PASS: TestBumpTypeString/none#01 (0.00s) -2026-07-05T01:36:48.0497775Z === RUN TestCalculateNext_InvalidNextEnvVersion -2026-07-05T01:36:48.0497935Z --- PASS: TestCalculateNext_InvalidNextEnvVersion (0.00s) -2026-07-05T01:36:48.0498055Z === RUN TestCalculateNext_ChoreOnlyCommits -2026-07-05T01:36:48.0498196Z --- PASS: TestCalculateNext_ChoreOnlyCommits (0.00s) -2026-07-05T01:36:48.0498342Z === RUN TestCalculateNext_UnparseableCurrentDevVersion -2026-07-05T01:36:48.0498529Z --- PASS: TestCalculateNext_UnparseableCurrentDevVersion (0.00s) -2026-07-05T01:36:48.0498652Z === RUN TestCalculateNext_NoCommitsNoNextEnv -2026-07-05T01:36:48.0498795Z --- PASS: TestCalculateNext_NoCommitsNoNextEnv (0.00s) -2026-07-05T01:36:48.0498926Z === RUN TestVersion_Compare_ReleaseVsPreRelease -2026-07-05T01:36:48.0499176Z === RUN TestVersion_Compare_ReleaseVsPreRelease/pre-release_sorts_before_its_release -2026-07-05T01:36:48.0499420Z === RUN TestVersion_Compare_ReleaseVsPreRelease/release_sorts_after_any_pre-release -2026-07-05T01:36:48.0499609Z === RUN TestVersion_Compare_ReleaseVsPreRelease/two_equal_releases -2026-07-05T01:36:48.0499880Z === RUN TestVersion_Compare_ReleaseVsPreRelease/same_rc_without_hotfix_is_equal_to_itself -2026-07-05T01:36:48.0500390Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease (0.00s) -2026-07-05T01:36:48.0500765Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/pre-release_sorts_before_its_release (0.00s) -2026-07-05T01:36:48.0501131Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/release_sorts_after_any_pre-release (0.00s) -2026-07-05T01:36:48.0501422Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/two_equal_releases (0.00s) -2026-07-05T01:36:48.0501810Z --- PASS: TestVersion_Compare_ReleaseVsPreRelease/same_rc_without_hotfix_is_equal_to_itself (0.00s) -2026-07-05T01:36:48.0501932Z === RUN TestVersion_Compare_MajorMinorPatch -2026-07-05T01:36:48.0502082Z === RUN TestVersion_Compare_MajorMinorPatch/major_greater -2026-07-05T01:36:48.0502235Z === RUN TestVersion_Compare_MajorMinorPatch/major_lesser -2026-07-05T01:36:48.0502386Z === RUN TestVersion_Compare_MajorMinorPatch/minor_greater -2026-07-05T01:36:48.0502532Z === RUN TestVersion_Compare_MajorMinorPatch/minor_lesser -2026-07-05T01:36:48.0502685Z === RUN TestVersion_Compare_MajorMinorPatch/patch_greater -2026-07-05T01:36:48.0502826Z === RUN TestVersion_Compare_MajorMinorPatch/patch_lesser -2026-07-05T01:36:48.0502973Z --- PASS: TestVersion_Compare_MajorMinorPatch (0.00s) -2026-07-05T01:36:48.0503229Z --- PASS: TestVersion_Compare_MajorMinorPatch/major_greater (0.00s) -2026-07-05T01:36:48.0503470Z --- PASS: TestVersion_Compare_MajorMinorPatch/major_lesser (0.00s) -2026-07-05T01:36:48.0503721Z --- PASS: TestVersion_Compare_MajorMinorPatch/minor_greater (0.00s) -2026-07-05T01:36:48.0503959Z --- PASS: TestVersion_Compare_MajorMinorPatch/minor_lesser (0.00s) -2026-07-05T01:36:48.0504207Z --- PASS: TestVersion_Compare_MajorMinorPatch/patch_greater (0.00s) -2026-07-05T01:36:48.0504443Z --- PASS: TestVersion_Compare_MajorMinorPatch/patch_lesser (0.00s) -2026-07-05T01:36:48.0504532Z === RUN TestParse -2026-07-05T01:36:48.0504790Z === RUN TestParse/simple_version_with_v_prefix -2026-07-05T01:36:48.0504903Z === RUN TestParse/version_with_RC -2026-07-05T01:36:48.0505016Z === RUN TestParse/version_with_RC_0 -2026-07-05T01:36:48.0505135Z === RUN TestParse/version_without_prefix -2026-07-05T01:36:48.0505267Z === RUN TestParse/version_without_prefix_with_RC -2026-07-05T01:36:48.0505376Z === RUN TestParse/invalid_format -2026-07-05T01:36:48.0505479Z === RUN TestParse/partial_version -2026-07-05T01:36:48.0505587Z --- PASS: TestParse (0.00s) -2026-07-05T01:36:48.0505796Z --- PASS: TestParse/simple_version_with_v_prefix (0.00s) -2026-07-05T01:36:48.0505962Z --- PASS: TestParse/version_with_RC (0.00s) -2026-07-05T01:36:48.0506131Z --- PASS: TestParse/version_with_RC_0 (0.00s) -2026-07-05T01:36:48.0506312Z --- PASS: TestParse/version_without_prefix (0.00s) -2026-07-05T01:36:48.0506525Z --- PASS: TestParse/version_without_prefix_with_RC (0.00s) -2026-07-05T01:36:48.0506680Z --- PASS: TestParse/invalid_format (0.00s) -2026-07-05T01:36:48.0506848Z --- PASS: TestParse/partial_version (0.00s) -2026-07-05T01:36:48.0506957Z === RUN TestVersion_String -2026-07-05T01:36:48.0507062Z === RUN TestVersion_String/with_RC -2026-07-05T01:36:48.0507175Z === RUN TestVersion_String/without_RC -2026-07-05T01:36:48.0507279Z === RUN TestVersion_String/RC_0 -2026-07-05T01:36:48.0507401Z === RUN TestVersion_String/with_RC_and_hotfix -2026-07-05T01:36:48.0507506Z --- PASS: TestVersion_String (0.00s) -2026-07-05T01:36:48.0507671Z --- PASS: TestVersion_String/with_RC (0.00s) -2026-07-05T01:36:48.0507847Z --- PASS: TestVersion_String/without_RC (0.00s) -2026-07-05T01:36:48.0507998Z --- PASS: TestVersion_String/RC_0 (0.00s) -2026-07-05T01:36:48.0508202Z --- PASS: TestVersion_String/with_RC_and_hotfix (0.00s) -2026-07-05T01:36:48.0508298Z === RUN TestVersion_Bump -2026-07-05T01:36:48.0508413Z === RUN TestVersion_Bump/major_bump -2026-07-05T01:36:48.0508522Z === RUN TestVersion_Bump/minor_bump -2026-07-05T01:36:48.0508627Z === RUN TestVersion_Bump/patch_bump -2026-07-05T01:36:48.0508848Z === RUN TestVersion_Bump/no_bump -2026-07-05T01:36:48.0508954Z --- PASS: TestVersion_Bump (0.00s) -2026-07-05T01:36:48.0509124Z --- PASS: TestVersion_Bump/major_bump (0.00s) -2026-07-05T01:36:48.0509290Z --- PASS: TestVersion_Bump/minor_bump (0.00s) -2026-07-05T01:36:48.0509451Z --- PASS: TestVersion_Bump/patch_bump (0.00s) -2026-07-05T01:36:48.0509611Z --- PASS: TestVersion_Bump/no_bump (0.00s) -2026-07-05T01:36:48.0509715Z === RUN TestDetermineBumpType -2026-07-05T01:36:48.0509836Z === RUN TestDetermineBumpType/no_commits -2026-07-05T01:36:48.0509946Z === RUN TestDetermineBumpType/fix_only -2026-07-05T01:36:48.0510245Z === RUN TestDetermineBumpType/feat_only -2026-07-05T01:36:48.0510374Z === RUN TestDetermineBumpType/breaking_change -2026-07-05T01:36:48.0510526Z === RUN TestDetermineBumpType/mixed_-_feat_wins_over_fix -2026-07-05T01:36:48.0510701Z === RUN TestDetermineBumpType/mixed_-_breaking_wins_over_feat -2026-07-05T01:36:48.0510851Z === RUN TestDetermineBumpType/chore_and_docs_are_ignored -2026-07-05T01:36:48.0510975Z --- PASS: TestDetermineBumpType (0.00s) -2026-07-05T01:36:48.0511161Z --- PASS: TestDetermineBumpType/no_commits (0.00s) -2026-07-05T01:36:48.0511348Z --- PASS: TestDetermineBumpType/fix_only (0.00s) -2026-07-05T01:36:48.0511544Z --- PASS: TestDetermineBumpType/feat_only (0.00s) -2026-07-05T01:36:48.0511749Z --- PASS: TestDetermineBumpType/breaking_change (0.00s) -2026-07-05T01:36:48.0512002Z --- PASS: TestDetermineBumpType/mixed_-_feat_wins_over_fix (0.00s) -2026-07-05T01:36:48.0512279Z --- PASS: TestDetermineBumpType/mixed_-_breaking_wins_over_feat (0.00s) -2026-07-05T01:36:48.0512518Z --- PASS: TestDetermineBumpType/chore_and_docs_are_ignored (0.00s) -2026-07-05T01:36:48.0512637Z === RUN TestCalculator_CalculateNext -2026-07-05T01:36:48.0512784Z === RUN TestCalculator_CalculateNext/first_release_-_feat -2026-07-05T01:36:48.0512967Z === RUN TestCalculator_CalculateNext/after_promotion_-_new_feat -2026-07-05T01:36:48.0513289Z === RUN TestCalculator_CalculateNext/same_version_-_increment_RC -2026-07-05T01:36:48.0513498Z === RUN TestCalculator_CalculateNext/same_version_-_increment_RC_again -2026-07-05T01:36:48.0513685Z === RUN TestCalculator_CalculateNext/breaking_change_-_major_bump -2026-07-05T01:36:48.0513843Z === RUN TestCalculator_CalculateNext/fix_only_-_patch_bump -2026-07-05T01:36:48.0513973Z --- PASS: TestCalculator_CalculateNext (0.00s) -2026-07-05T01:36:48.0514215Z --- PASS: TestCalculator_CalculateNext/first_release_-_feat (0.00s) -2026-07-05T01:36:48.0514499Z --- PASS: TestCalculator_CalculateNext/after_promotion_-_new_feat (0.00s) -2026-07-05T01:36:48.0514782Z --- PASS: TestCalculator_CalculateNext/same_version_-_increment_RC (0.00s) -2026-07-05T01:36:48.0515085Z --- PASS: TestCalculator_CalculateNext/same_version_-_increment_RC_again (0.00s) -2026-07-05T01:36:48.0515372Z --- PASS: TestCalculator_CalculateNext/breaking_change_-_major_bump (0.00s) -2026-07-05T01:36:48.0515621Z --- PASS: TestCalculator_CalculateNext/fix_only_-_patch_bump (0.00s) -2026-07-05T01:36:48.0515734Z === RUN TestGetLatestRelease -2026-07-05T01:36:48.0515863Z === RUN TestGetLatestRelease/single_release -2026-07-05T01:36:48.0515991Z === RUN TestGetLatestRelease/multiple_releases -2026-07-05T01:36:48.0516119Z === RUN TestGetLatestRelease/skip_pre-releases -2026-07-05T01:36:48.0516239Z === RUN TestGetLatestRelease/only_pre-releases -2026-07-05T01:36:48.0516359Z === RUN TestGetLatestRelease/empty_list -2026-07-05T01:36:48.0516504Z === RUN TestGetLatestRelease/mixed_valid_and_invalid -2026-07-05T01:36:48.0516618Z --- PASS: TestGetLatestRelease (0.00s) -2026-07-05T01:36:48.0516819Z --- PASS: TestGetLatestRelease/single_release (0.00s) -2026-07-05T01:36:48.0517021Z --- PASS: TestGetLatestRelease/multiple_releases (0.00s) -2026-07-05T01:36:48.0517231Z --- PASS: TestGetLatestRelease/skip_pre-releases (0.00s) -2026-07-05T01:36:48.0517432Z --- PASS: TestGetLatestRelease/only_pre-releases (0.00s) -2026-07-05T01:36:48.0517618Z --- PASS: TestGetLatestRelease/empty_list (0.00s) -2026-07-05T01:36:48.0517971Z --- PASS: TestGetLatestRelease/mixed_valid_and_invalid (0.00s) -2026-07-05T01:36:48.0518064Z === RUN TestStripRC -2026-07-05T01:36:48.0518175Z === RUN TestStripRC/v1.2.3-rc.4 -2026-07-05T01:36:48.0518271Z === RUN TestStripRC/v1.2.3-rc.0 -2026-07-05T01:36:48.0518374Z === RUN TestStripRC/v1.2.3 -2026-07-05T01:36:48.0518480Z === RUN TestStripRC/invalid -2026-07-05T01:36:48.0518581Z --- PASS: TestStripRC (0.00s) -2026-07-05T01:36:48.0518741Z --- PASS: TestStripRC/v1.2.3-rc.4 (0.00s) -2026-07-05T01:36:48.0518892Z --- PASS: TestStripRC/v1.2.3-rc.0 (0.00s) -2026-07-05T01:36:48.0519036Z --- PASS: TestStripRC/v1.2.3 (0.00s) -2026-07-05T01:36:48.0519185Z --- PASS: TestStripRC/invalid (0.00s) -2026-07-05T01:36:48.0519290Z === RUN TestVersion_WithRC -2026-07-05T01:36:48.0519445Z === RUN TestVersion_WithRC/add_RC_to_version_without_RC -2026-07-05T01:36:48.0519562Z === RUN TestVersion_WithRC/change_RC_number -2026-07-05T01:36:48.0519698Z === RUN TestVersion_WithRC/preserves_original -2026-07-05T01:36:48.0519804Z --- PASS: TestVersion_WithRC (0.00s) -2026-07-05T01:36:48.0520211Z --- PASS: TestVersion_WithRC/add_RC_to_version_without_RC (0.00s) -2026-07-05T01:36:48.0520405Z --- PASS: TestVersion_WithRC/change_RC_number (0.00s) -2026-07-05T01:36:48.0520598Z --- PASS: TestVersion_WithRC/preserves_original (0.00s) -2026-07-05T01:36:48.0520702Z === RUN TestVersion_Equal -2026-07-05T01:36:48.0520836Z === RUN TestVersion_Equal/same_version_different_RC -2026-07-05T01:36:48.0520955Z === RUN TestVersion_Equal/different_patch -2026-07-05T01:36:48.0521074Z === RUN TestVersion_Equal/nil_comparison -2026-07-05T01:36:48.0521178Z --- PASS: TestVersion_Equal (0.00s) -2026-07-05T01:36:48.0521403Z --- PASS: TestVersion_Equal/same_version_different_RC (0.00s) -2026-07-05T01:36:48.0521591Z --- PASS: TestVersion_Equal/different_patch (0.00s) -2026-07-05T01:36:48.0521777Z --- PASS: TestVersion_Equal/nil_comparison (0.00s) -2026-07-05T01:36:48.0522007Z === RUN TestVersion_Base -2026-07-05T01:36:48.0522120Z --- PASS: TestVersion_Base (0.00s) -2026-07-05T01:36:48.0522228Z === RUN TestVersion_BaseVersion -2026-07-05T01:36:48.0522342Z --- PASS: TestVersion_BaseVersion (0.00s) -2026-07-05T01:36:48.0522460Z === RUN TestNewCalculator_CustomPrefix -2026-07-05T01:36:48.0522593Z --- PASS: TestNewCalculator_CustomPrefix (0.00s) -2026-07-05T01:36:48.0522735Z === RUN TestNewCalculator_EmptyPrefixDefaultsToV -2026-07-05T01:36:48.0522903Z --- PASS: TestNewCalculator_EmptyPrefixDefaultsToV (0.00s) -2026-07-05T01:36:48.0523003Z === RUN TestParse_HotfixSegment -2026-07-05T01:36:48.0523143Z === RUN TestParse_HotfixSegment/hotfix_with_v_prefix -2026-07-05T01:36:48.0523281Z === RUN TestParse_HotfixSegment/hotfix_without_prefix -2026-07-05T01:36:48.0523396Z --- PASS: TestParse_HotfixSegment (0.00s) -2026-07-05T01:36:48.0523624Z --- PASS: TestParse_HotfixSegment/hotfix_with_v_prefix (0.00s) -2026-07-05T01:36:48.0523856Z --- PASS: TestParse_HotfixSegment/hotfix_without_prefix (0.00s) -2026-07-05T01:36:48.0523980Z === RUN TestParse_RejectsMalformedHotfix -2026-07-05T01:36:48.0524130Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-hotfix.1 -2026-07-05T01:36:48.0524294Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix -2026-07-05T01:36:48.0524461Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-rc.2-hotfix.1 -2026-07-05T01:36:48.0524618Z === RUN TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix.x -2026-07-05T01:36:48.0524760Z --- PASS: TestParse_RejectsMalformedHotfix (0.00s) -2026-07-05T01:36:48.0525004Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-hotfix.1 (0.00s) -2026-07-05T01:36:48.0525266Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix (0.00s) -2026-07-05T01:36:48.0525528Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-rc.2-hotfix.1 (0.00s) -2026-07-05T01:36:48.0525785Z --- PASS: TestParse_RejectsMalformedHotfix/v1.4.0-rc.2.hotfix.x (0.00s) -2026-07-05T01:36:48.0525920Z === RUN TestVersion_Ordering_HotfixBetweenRCs -2026-07-05T01:36:48.0526183Z --- PASS: TestVersion_Ordering_HotfixBetweenRCs (0.00s) -2026-07-05T01:36:48.0526328Z === RUN TestCalculateNext_NextEnvHoldsHotfixVersion -2026-07-05T01:36:48.0526495Z --- PASS: TestCalculateNext_NextEnvHoldsHotfixVersion (0.00s) -2026-07-05T01:36:48.0526591Z === RUN TestParseBase -2026-07-05T01:36:48.0526704Z === RUN TestParseBase/plain_release -2026-07-05T01:36:48.0526814Z === RUN TestParseBase/rc_suffix_dropped -2026-07-05T01:36:48.0526938Z === RUN TestParseBase/hotfix_suffix_dropped -2026-07-05T01:36:48.0527051Z === RUN TestParseBase/dryrun_suffix_dropped -2026-07-05T01:36:48.0527178Z === RUN TestParseBase/opaque_suffix_dropped -2026-07-05T01:36:48.0527290Z === RUN TestParseBase/no_prefix -2026-07-05T01:36:48.0527397Z === RUN TestParseBase/not_a_triple -2026-07-05T01:36:48.0527505Z === RUN TestParseBase/empty -2026-07-05T01:36:48.0527608Z === RUN TestParseBase/two_segments -2026-07-05T01:36:48.0527715Z --- PASS: TestParseBase (0.00s) -2026-07-05T01:36:48.0527898Z --- PASS: TestParseBase/plain_release (0.00s) -2026-07-05T01:36:48.0528092Z --- PASS: TestParseBase/rc_suffix_dropped (0.00s) -2026-07-05T01:36:48.0528291Z --- PASS: TestParseBase/hotfix_suffix_dropped (0.00s) -2026-07-05T01:36:48.0528472Z --- PASS: TestParseBase/dryrun_suffix_dropped (0.00s) -2026-07-05T01:36:48.0528658Z --- PASS: TestParseBase/opaque_suffix_dropped (0.00s) -2026-07-05T01:36:48.0528813Z --- PASS: TestParseBase/no_prefix (0.00s) -2026-07-05T01:36:48.0528982Z --- PASS: TestParseBase/not_a_triple (0.00s) -2026-07-05T01:36:48.0529133Z --- PASS: TestParseBase/empty (0.00s) -2026-07-05T01:36:48.0529291Z --- PASS: TestParseBase/two_segments (0.00s) -2026-07-05T01:36:48.0529436Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion -2026-07-05T01:36:48.0529682Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_fresh_release -2026-07-05T01:36:48.0529919Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_just_promoted -2026-07-05T01:36:48.0530509Z === RUN TestCalculateNext_NextEnvHoldsDryrunVersion/opaque_prerelease_suffix_tolerated -2026-07-05T01:36:48.0530687Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion (0.00s) -2026-07-05T01:36:48.0531052Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_fresh_release (0.00s) -2026-07-05T01:36:48.0531400Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion/dryrun_latest,_just_promoted (0.00s) -2026-07-05T01:36:48.0531793Z --- PASS: TestCalculateNext_NextEnvHoldsDryrunVersion/opaque_prerelease_suffix_tolerated (0.00s) -2026-07-05T01:36:48.0531906Z === RUN TestStripRC_HotfixVersion -2026-07-05T01:36:48.0532026Z --- PASS: TestStripRC_HotfixVersion (0.00s) -2026-07-05T01:36:48.0532134Z === RUN TestVersion_WithHotfix -2026-07-05T01:36:48.0532286Z === RUN TestVersion_WithHotfix/sets_hotfix_preserving_rc -2026-07-05T01:36:48.0532426Z === RUN TestVersion_WithHotfix/preserves_original -2026-07-05T01:36:48.0532546Z --- PASS: TestVersion_WithHotfix (0.00s) -2026-07-05T01:36:48.0532803Z --- PASS: TestVersion_WithHotfix/sets_hotfix_preserving_rc (0.00s) -2026-07-05T01:36:48.0533027Z --- PASS: TestVersion_WithHotfix/preserves_original (0.00s) -2026-07-05T01:36:48.0533127Z === RUN TestVersion_NextHotfix -2026-07-05T01:36:48.0533319Z === RUN TestVersion_NextHotfix/first_hotfix_on_plain_rc_is_hotfix.1 -2026-07-05T01:36:48.0533473Z === RUN TestVersion_NextHotfix/increments_existing_hotfix -2026-07-05T01:36:48.0533608Z === RUN TestVersion_NextHotfix/preserves_original -2026-07-05T01:36:48.0533722Z --- PASS: TestVersion_NextHotfix (0.00s) -2026-07-05T01:36:48.0534010Z --- PASS: TestVersion_NextHotfix/first_hotfix_on_plain_rc_is_hotfix.1 (0.00s) -2026-07-05T01:36:48.0534264Z --- PASS: TestVersion_NextHotfix/increments_existing_hotfix (0.00s) -2026-07-05T01:36:48.0534474Z --- PASS: TestVersion_NextHotfix/preserves_original (0.00s) -2026-07-05T01:36:48.0534558Z PASS -2026-07-05T01:36:48.0534665Z coverage: 96.4% of statements -2026-07-05T01:36:48.0534945Z ok github.com/stablekernel/cascade/internal/version 1.045s coverage: 96.4% of statements -2026-07-05T01:36:48.0535203Z === RUN TestBuildCrossRepoViewModel_NilConfig -2026-07-05T01:36:48.0535358Z --- PASS: TestBuildCrossRepoViewModel_NilConfig (0.00s) -2026-07-05T01:36:48.0535521Z === RUN TestBuildCrossRepoViewModel_RendersLanesAndEdges -2026-07-05T01:36:48.0535722Z --- PASS: TestBuildCrossRepoViewModel_RendersLanesAndEdges (0.00s) -2026-07-05T01:36:48.0535886Z === RUN TestBuildCrossRepoViewModel_NoExternals_PrimaryOnly -2026-07-05T01:36:48.0536088Z --- PASS: TestBuildCrossRepoViewModel_NoExternals_PrimaryOnly (0.00s) -2026-07-05T01:36:48.0536297Z === RUN TestBuildCrossRepoViewModel_SatelliteOnly_NotifiesNamedPrimary -2026-07-05T01:36:48.0536547Z --- PASS: TestBuildCrossRepoViewModel_SatelliteOnly_NotifiesNamedPrimary (0.00s) -2026-07-05T01:36:48.0536676Z === RUN TestMermaidEmitter_CrossRepoGolden -2026-07-05T01:36:48.0536818Z --- PASS: TestMermaidEmitter_CrossRepoGolden (0.00s) -2026-07-05T01:36:48.0536961Z === RUN TestMermaidEmitter_CrossRepoDeterministic -2026-07-05T01:36:48.0537126Z --- PASS: TestMermaidEmitter_CrossRepoDeterministic (0.01s) -2026-07-05T01:36:48.0537254Z === RUN TestBuildEnvViewModel_IsStateMachine -2026-07-05T01:36:48.0537405Z --- PASS: TestBuildEnvViewModel_IsStateMachine (0.00s) -2026-07-05T01:36:48.0537540Z === RUN TestBuildEnvViewModel_NoEnvironmentsErrors -2026-07-05T01:36:48.0537711Z --- PASS: TestBuildEnvViewModel_NoEnvironmentsErrors (0.00s) -2026-07-05T01:36:48.0537836Z === RUN TestBuildEnvViewModel_NilConfigErrors -2026-07-05T01:36:48.0537984Z --- PASS: TestBuildEnvViewModel_NilConfigErrors (0.00s) -2026-07-05T01:36:48.0538096Z === RUN TestMermaidEmitter_EnvGolden -2026-07-05T01:36:48.0538224Z --- PASS: TestMermaidEmitter_EnvGolden (0.00s) -2026-07-05T01:36:48.0538350Z === RUN TestMermaidEmitter_EnvDeterministic -2026-07-05T01:36:48.0538489Z --- PASS: TestMermaidEmitter_EnvDeterministic (0.00s) -2026-07-05T01:36:48.0538632Z === RUN TestBuildStagesViewModel_CollapsesCallbacks -2026-07-05T01:36:48.0538892Z --- PASS: TestBuildStagesViewModel_CollapsesCallbacks (0.00s) -2026-07-05T01:36:48.0539035Z === RUN TestBuildStagesViewModel_OmitsAbsentStages -2026-07-05T01:36:48.0539203Z --- PASS: TestBuildStagesViewModel_OmitsAbsentStages (0.00s) -2026-07-05T01:36:48.0539314Z === RUN TestMermaidEmitter_StagesGolden -2026-07-05T01:36:48.0539453Z --- PASS: TestMermaidEmitter_StagesGolden (0.00s) -2026-07-05T01:36:48.0539578Z === RUN TestMermaidEmitter_StagesDeterministic -2026-07-05T01:36:48.0539737Z --- PASS: TestMermaidEmitter_StagesDeterministic (0.00s) -2026-07-05T01:36:48.0539860Z === RUN TestLookupTheme_BuiltinsAndAliases -2026-07-05T01:36:48.0540137Z === RUN TestLookupTheme_BuiltinsAndAliases/cascade -2026-07-05T01:36:48.0540301Z === RUN TestLookupTheme_BuiltinsAndAliases/bland -2026-07-05T01:36:48.0540431Z === RUN TestLookupTheme_BuiltinsAndAliases/default -2026-07-05T01:36:48.0540560Z === RUN TestLookupTheme_BuiltinsAndAliases/#00 -2026-07-05T01:36:48.0540703Z === RUN TestLookupTheme_BuiltinsAndAliases/midnight -2026-07-05T01:36:48.0540898Z === RUN TestLookupTheme_BuiltinsAndAliases/./themes/custom.json -2026-07-05T01:36:48.0541038Z --- PASS: TestLookupTheme_BuiltinsAndAliases (0.00s) -2026-07-05T01:36:48.0541264Z --- PASS: TestLookupTheme_BuiltinsAndAliases/cascade (0.00s) -2026-07-05T01:36:48.0541482Z --- PASS: TestLookupTheme_BuiltinsAndAliases/bland (0.00s) -2026-07-05T01:36:48.0541695Z --- PASS: TestLookupTheme_BuiltinsAndAliases/default (0.00s) -2026-07-05T01:36:48.0541900Z --- PASS: TestLookupTheme_BuiltinsAndAliases/#00 (0.00s) -2026-07-05T01:36:48.0542122Z --- PASS: TestLookupTheme_BuiltinsAndAliases/midnight (0.00s) -2026-07-05T01:36:48.0542404Z --- PASS: TestLookupTheme_BuiltinsAndAliases/./themes/custom.json (0.00s) -2026-07-05T01:36:48.0542527Z === RUN TestBuiltinThemes_EmitValidMermaid -2026-07-05T01:36:48.0542657Z === RUN TestBuiltinThemes_EmitValidMermaid/cascade -2026-07-05T01:36:48.0542787Z === RUN TestBuiltinThemes_EmitValidMermaid/bland -2026-07-05T01:36:48.0543065Z --- PASS: TestBuiltinThemes_EmitValidMermaid (0.00s) -2026-07-05T01:36:48.0543278Z --- PASS: TestBuiltinThemes_EmitValidMermaid/cascade (0.00s) -2026-07-05T01:36:48.0543490Z --- PASS: TestBuiltinThemes_EmitValidMermaid/bland (0.00s) -2026-07-05T01:36:48.0543600Z === RUN TestMermaidEmitter_BlandGolden -2026-07-05T01:36:48.0543732Z --- PASS: TestMermaidEmitter_BlandGolden (0.00s) -2026-07-05T01:36:48.0543846Z === RUN TestCascadeAndBland_Differ -2026-07-05T01:36:48.0543963Z --- PASS: TestCascadeAndBland_Differ (0.00s) -2026-07-05T01:36:48.0544077Z === RUN TestEmit_PerThemeDeterministic -2026-07-05T01:36:48.0544199Z === RUN TestEmit_PerThemeDeterministic/cascade -2026-07-05T01:36:48.0544325Z === RUN TestEmit_PerThemeDeterministic/bland -2026-07-05T01:36:48.0544451Z --- PASS: TestEmit_PerThemeDeterministic (0.01s) -2026-07-05T01:36:48.0544657Z --- PASS: TestEmit_PerThemeDeterministic/cascade (0.00s) -2026-07-05T01:36:48.0544854Z --- PASS: TestEmit_PerThemeDeterministic/bland (0.00s) -2026-07-05T01:36:48.0544969Z === RUN TestLoadTheme_AppliesStyling -2026-07-05T01:36:48.0545098Z --- PASS: TestLoadTheme_AppliesStyling (0.00s) -2026-07-05T01:36:48.0545216Z === RUN TestLoadTheme_MissingFile_Errors -2026-07-05T01:36:48.0545352Z --- PASS: TestLoadTheme_MissingFile_Errors (0.00s) -2026-07-05T01:36:48.0545461Z === RUN TestLoadTheme_Malformed_Errors -2026-07-05T01:36:48.0545580Z --- PASS: TestLoadTheme_Malformed_Errors (0.00s) -2026-07-05T01:36:48.0545705Z === RUN TestBuildViewModel_IsRenderAgnostic -2026-07-05T01:36:48.0545843Z --- PASS: TestBuildViewModel_IsRenderAgnostic (0.00s) -2026-07-05T01:36:48.0545956Z === RUN TestMermaidEmitter_Golden -2026-07-05T01:36:48.0546076Z --- PASS: TestMermaidEmitter_Golden (0.00s) -2026-07-05T01:36:48.0546186Z === RUN TestMermaidEmitter_Deterministic -2026-07-05T01:36:48.0546323Z --- PASS: TestMermaidEmitter_Deterministic (0.00s) -2026-07-05T01:36:48.0546441Z === RUN TestMermaidEmitter_StructurallyValid -2026-07-05T01:36:48.0546708Z --- PASS: TestMermaidEmitter_StructurallyValid (0.00s) -2026-07-05T01:36:48.0546836Z === RUN TestBuildViewModel_CyclicGraphErrors -2026-07-05T01:36:48.0546985Z --- PASS: TestBuildViewModel_CyclicGraphErrors (0.00s) -2026-07-05T01:36:48.0547103Z === RUN TestBuildViewModel_NilGraphErrors -2026-07-05T01:36:48.0547238Z --- PASS: TestBuildViewModel_NilGraphErrors (0.00s) -2026-07-05T01:36:48.0547318Z PASS -2026-07-05T01:36:48.0547417Z coverage: 92.7% of statements -2026-07-05T01:36:48.0547700Z ok github.com/stablekernel/cascade/internal/visualize 1.047s coverage: 92.7% of statements -2026-07-05T01:36:48.0547780Z FAIL -2026-07-05T01:36:48.1044050Z ##[error]Process completed with exit code 123. -2026-07-05T01:36:48.1199795Z Post job cleanup. -2026-07-05T01:36:48.2090449Z [command]/usr/bin/git version -2026-07-05T01:36:48.2130390Z git version 2.54.0 -2026-07-05T01:36:48.2173048Z Temporarily overriding HOME='/home/runner/work/_temp/54fa703e-ef3a-43ec-826b-c1eb7a2719b1' before making global git config changes -2026-07-05T01:36:48.2173986Z Adding repository directory to the temporary git global config as a safe directory -2026-07-05T01:36:48.2176598Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/cascade/cascade -2026-07-05T01:36:48.2211277Z Removing SSH command configuration -2026-07-05T01:36:48.2216965Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand -2026-07-05T01:36:48.2252184Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" -2026-07-05T01:36:48.2488832Z Removing HTTP extra header -2026-07-05T01:36:48.2494606Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader -2026-07-05T01:36:48.2531124Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" -2026-07-05T01:36:48.2764234Z Removing includeIf entries pointing to credentials config files -2026-07-05T01:36:48.2770594Z [command]/usr/bin/git config --local --name-only --get-regexp ^includeIf\.gitdir: -2026-07-05T01:36:48.2799268Z includeif.gitdir:/home/runner/work/cascade/cascade/.git.path -2026-07-05T01:36:48.2799968Z includeif.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path -2026-07-05T01:36:48.2801061Z includeif.gitdir:/github/workspace/.git.path -2026-07-05T01:36:48.2801658Z includeif.gitdir:/github/workspace/.git/worktrees/*.path -2026-07-05T01:36:48.2808039Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/cascade/cascade/.git.path -2026-07-05T01:36:48.2830870Z /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.2840484Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/cascade/cascade/.git.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.2874963Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path -2026-07-05T01:36:48.2899289Z /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.2909167Z [command]/usr/bin/git config --local --unset includeif.gitdir:/home/runner/work/cascade/cascade/.git/worktrees/*.path /home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.2943264Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git.path -2026-07-05T01:36:48.2965950Z /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.2974297Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.3011973Z [command]/usr/bin/git config --local --get-all includeif.gitdir:/github/workspace/.git/worktrees/*.path -2026-07-05T01:36:48.3037142Z /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.3043862Z [command]/usr/bin/git config --local --unset includeif.gitdir:/github/workspace/.git/worktrees/*.path /github/runner_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config -2026-07-05T01:36:48.3079137Z [command]/usr/bin/git submodule foreach --recursive git config --local --show-origin --name-only --get-regexp remote.origin.url -2026-07-05T01:36:48.3324328Z Removing credentials config '/home/runner/work/_temp/git-credentials-c94c02b7-7870-4661-8933-b29ea54831eb.config' -2026-07-05T01:36:48.3492208Z Cleaning up orphan processes diff --git a/.github/workflows/__tests__/pin-guard.test.js b/.github/workflows/__tests__/pin-guard.test.js deleted file mode 100644 index ba9eb39f..00000000 --- a/.github/workflows/__tests__/pin-guard.test.js +++ /dev/null @@ -1,90 +0,0 @@ -// Unit test for the PR Failure Report companion's pure log helpers -// (parsePinGuard and extractFailRegion) that live inline in the -// drift-comment.yaml github-script step. -// -// The companion only runs from the base repo on a workflow_run completion, so -// its behavior cannot be exercised from a branch PR. This test proves the -// helpers locally instead: it extracts the exact shipped source between the -// `pure-helpers-start`/`pure-helpers-end` sentinels (so there is no forked -// copy to drift), then runs it against a REAL failing "Unit Tests" job log -// captured from the action-pins guard trip run (PR #452, run 28725833923). -// -// Regression it guards: the failure region (the guard signature and its -// want/got rows) prints in the MIDDLE of the job log; the last lines are -// post-job git-config cleanup ending at "Cleaning up orphan processes". The -// prior extraction tailed the last 30 lines, so parsePinGuard never saw the -// signature and the manifest remediation was silently dropped. -// -// Run: node --test .github/workflows/__tests__/pin-guard.test.js - -const test = require('node:test'); -const assert = require('node:assert/strict'); -const fs = require('node:fs'); -const path = require('node:path'); -const vm = require('node:vm'); - -const workflowPath = path.join(__dirname, '..', 'drift-comment.yaml'); -const fixturePath = path.join(__dirname, 'fixtures', 'unit-tests-pin-guard-fail.log'); - -// Extract the pure-helper source verbatim from the workflow and evaluate it in -// an isolated context, returning { parsePinGuard, extractFailRegion }. -function loadHelpers() { - const yaml = fs.readFileSync(workflowPath, 'utf8'); - const start = yaml.indexOf('pure-helpers-start'); - const end = yaml.indexOf('pure-helpers-end'); - assert.ok(start !== -1 && end !== -1 && end > start, - 'pure-helper sentinels must bracket the shipped source'); - // Slice the lines strictly between the two sentinel lines and strip the - // uniform YAML block indentation so the JS parses standalone. - const block = yaml.slice(start, end).split('\n').slice(1, -1); - const dedented = block - .map((l) => l.replace(/^\s{12}/, '')) - .join('\n'); - const src = `${dedented}\n;({ parsePinGuard, extractFailRegion });`; - return vm.runInNewContext(src, {}); -} - -const { parsePinGuard, extractFailRegion } = loadHelpers(); -const log = fs.readFileSync(fixturePath, 'utf8'); - -// The manifest's canonical checkout SHA and the corrupted "got" SHA the trip -// introduced. parsePinGuard adopts the governed "got" value. -const GOT_SHA = '9c091bb21b7c1c1d1991bb908d89e4e9dddfeabc'; - -test('parsePinGuard extracts the manifest remediation from the full log', () => { - const edits = parsePinGuard(log); - assert.ok(edits, 'guard signature + rows must be found in the full log'); - assert.ok(edits.has('actions/checkout'), 'must name the divergent action'); - const entry = edits.get('actions/checkout'); - assert.equal(entry.sha, GOT_SHA, 'adopts the governed got SHA'); - // The clean governed row wins over the bracketed anchor row, so no stray - // punctuation leaks into the emitted remediation. - assert.equal(entry.version, 'v7.0.0'); -}); - -test('extractFailRegion lands on the failing test output, not the cleanup tail', () => { - const region = extractFailRegion(log); - assert.match(region, /--- FAIL/, 'region must include the FAIL marker'); - assert.match(region, /want \S+ # \S+ got \S+/, 'region must include a want/got row'); - assert.doesNotMatch(region, /Cleaning up orphan processes/, - 'region must not be the post-job cleanup tail'); - // The display region alone is now rich enough to yield the remediation. - assert.ok(parsePinGuard(region), 'the failure region must itself parse'); -}); - -test('regression: the old last-30-lines tail missed the guard entirely', () => { - const oldTail = log - .split('\n') - .filter((l) => l.trim().length > 0) - .slice(-30) - .join('\n'); - assert.match(oldTail, /Cleaning up orphan processes/, - 'the trailing region is git-config cleanup, as observed live'); - assert.equal(parsePinGuard(oldTail), null, - 'the prior extraction produced no remediation - the bug under fix'); -}); - -test('extractFailRegion falls back to the trailing lines without a signature', () => { - const plain = 'line one\nline two\nline three'; - assert.equal(extractFailRegion(plain), plain); -}); From 16f1d6a159d035c5a2a6023a5b974c5ed6afbecc Mon Sep 17 00:00:00 2001 From: Joshua Temple Date: Sat, 4 Jul 2026 23:33:29 -0400 Subject: [PATCH 3/3] chore(ci): drop leftover pure-helpers test sentinels The sentinel comments existed only to mark the extraction boundary for the now-removed node unit test. Remove them along with it. Signed-off-by: Joshua Temple --- .github/workflows/drift-comment.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/drift-comment.yaml b/.github/workflows/drift-comment.yaml index 264ce357..df081558 100644 --- a/.github/workflows/drift-comment.yaml +++ b/.github/workflows/drift-comment.yaml @@ -119,7 +119,6 @@ jobs: return `${ticks}\n${t}\n${ticks}`; }; - // ----- pure-helpers-start (extracted verbatim by the node unit test) ----- // Detect the action-pins consistency-guard failure and parse the exact // manifest edit from its "file:line action want # got // # " rows. The fix adopts each governed "got" value (the bumped @@ -165,7 +164,6 @@ jobs: const start = Math.max(0, anchor - 5); return nonEmpty(lines.slice(start)).slice(0, 60).join('\n'); }; - // ----- pure-helpers-end ----- // Download a failed job's log once. Returns the full decoded text (for // signature parsing, never rendered) plus a bounded, failure-anchored