Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
54ad4d6
docs: add queue unification roadmap
cmilesio Jul 18, 2026
d88a89b
refactor: unify queue observation and attempt outcomes
cmilesio Jul 18, 2026
233f4a8
chore: validate every queue module
cmilesio Jul 18, 2026
ff97f5b
fix: harden queue delivery and lifecycle semantics
cmilesio Jul 18, 2026
91cb72f
refactor: centralize workflow protocol
cmilesio Jul 18, 2026
700bf00
test: pin workflow sql compatibility
cmilesio Jul 18, 2026
809d294
refactor: unify workflow engine behind queue
cmilesio Jul 18, 2026
660f504
refactor: dispatch direct jobs without workflow envelopes
cmilesio Jul 18, 2026
bf95577
refactor: unify queue testing fakes
cmilesio Jul 18, 2026
7965c7b
fix: make workflow outcomes atomic
cmilesio Jul 18, 2026
a57ba16
fix: recover workflow transitions after settlement failure
cmilesio Jul 19, 2026
850c3ec
docs: document workflow transition recovery guarantees
cmilesio Jul 19, 2026
aaaf10b
test: isolate backend integration checks
cmilesio Jul 19, 2026
70d8e1d
test: cover unified runtime edge cases
cmilesio Jul 19, 2026
9b2bdce
docs: correct SQL worker rollout guidance
cmilesio Jul 19, 2026
e475550
ci: aggregate multi-module coverage
cmilesio Jul 19, 2026
755aee1
test: cover driver failure boundaries
cmilesio Jul 19, 2026
45b1ff5
ci: enforce tagged fixture coverage
cmilesio Jul 19, 2026
1cceb84
fix: harden driver failure boundaries
cmilesio Jul 19, 2026
66e5f08
fix: make registration and shutdown converge
cmilesio Jul 19, 2026
11a9a2f
docs: correct unified observer migration guidance
cmilesio Jul 19, 2026
986aca5
test: strengthen retry and broker recovery evidence
cmilesio Jul 19, 2026
cf5a54e
ci: enforce generated and coverage evidence
cmilesio Jul 19, 2026
625069f
fix: close observer and shutdown review gaps
cmilesio Jul 19, 2026
49495de
ci: race test every driver module
cmilesio Jul 19, 2026
b32f3be
test: prove NATS startup recovery
cmilesio Jul 19, 2026
6fd7dc3
ci: require fresh Codecov reports
cmilesio Jul 19, 2026
a690090
fix: harden runtime and release boundaries
cmilesio Jul 19, 2026
1f15179
fix: keep release parsing portable
cmilesio Jul 19, 2026
d963c11
fix: close backend readiness gaps
cmilesio Jul 19, 2026
3290944
fix: preserve lifecycle and upgrade invariants
cmilesio Jul 20, 2026
ba47cbf
test: isolate sqlite rollback fixture
cmilesio Jul 20, 2026
53d7539
fix: linearize handler registration with startup
cmilesio Jul 20, 2026
797f5b2
fix: retry workflow schema initialization
cmilesio Jul 20, 2026
2ab5313
fix: upgrade pgx past security advisory
cmilesio Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
191 changes: 191 additions & 0 deletions .github/scripts/check_codecov_coverage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
#!/usr/bin/env bash
set -euo pipefail

# Guards the artifact fan-in contract before the single Codecov upload.

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
ARTIFACTS_DIR="${1:-$ROOT_DIR/coverage-artifacts}"
ROOT_MODULE="$(awk '$1 == "module" { print $2; exit }' "$ROOT_DIR/go.mod")"

fail() {
echo "coverage artifact guard: $*" >&2
exit 1
}

integration_backends=(null sync workerpool redis mysql postgres sqlite nats sqs rabbitmq)
driver_modules=(mysqlqueue natsqueue postgresqueue rabbitmqqueue redisqueue sqlitequeue sqlqueuecore sqsqueue)

expected_profiles=("$ARTIFACTS_DIR/coverage-unit/coverage-unit.out")
for backend in "${integration_backends[@]}"; do
expected_profiles+=("$ARTIFACTS_DIR/coverage-integration-$backend/coverage-integration-$backend.out")
done

[[ -d "$ARTIFACTS_DIR" ]] || fail "artifact directory does not exist: $ARTIFACTS_DIR"
for profile in "${expected_profiles[@]}"; do
[[ -s "$profile" ]] || fail "expected profile is missing or empty: $profile"
done

discovered_profile_count="$(find "$ARTIFACTS_DIR" -type f -name '*.out' -print | awk 'END { print NR }')"
[[ "$discovered_profile_count" -eq "${#expected_profiles[@]}" ]] || \
fail "found $discovered_profile_count profiles, expected ${#expected_profiles[@]}"

validate_profile() {
local profile="$1"
[[ "$(head -n 1 "$profile")" == "mode: atomic" ]] || fail "profile is not atomic: $profile"
[[ "$(grep -c '^mode:' "$profile")" -eq 1 ]] || fail "profile has multiple mode headers: $profile"

awk -v prefix="$ROOT_MODULE/" '
NR == 1 { next }
NF != 3 || $2 !~ /^[0-9]+$/ || $3 !~ /^[0-9]+$/ {
print "coverage artifact guard: malformed coverage record in " FILENAME ": " $0 > "/dev/stderr"
exit 1
}
index($1, prefix) != 1 {
print "coverage artifact guard: non-repository profile path in " FILENAME ": " $1 > "/dev/stderr"
exit 1
}
seen[$1]++ {
print "coverage artifact guard: duplicate source range in " FILENAME ": " $1 > "/dev/stderr"
exit 1
}
' "$profile"
}

for profile in "${expected_profiles[@]}"; do
validate_profile "$profile"
done

unit_profile="$ARTIFACTS_DIR/coverage-unit/coverage-unit.out"
manifest="$ARTIFACTS_DIR/coverage-unit/coverage-unit-modules.tsv"
[[ -s "$manifest" ]] || fail "unit module manifest is missing or empty: $manifest"

expected_manifest="$({
printf '.\t%s\n' "$ROOT_MODULE"
printf 'docs\t%s/docs\n' "$ROOT_MODULE"
for driver in "${driver_modules[@]}"; do
printf 'driver/%s\t%s/driver/%s\n' "$driver" "$ROOT_MODULE" "$driver"
done
printf 'examples\t%s/examples\n' "$ROOT_MODULE"
printf 'integration\t%s/integration\n' "$ROOT_MODULE"
} | LC_ALL=C sort)"
actual_manifest="$(awk -F '\t' '!/^#/ && NF { print $1 "\t" $2 }' "$manifest" | LC_ALL=C sort)"
if [[ "$actual_manifest" != "$expected_manifest" ]]; then
diff -u <(printf '%s\n' "$expected_manifest") <(printf '%s\n' "$actual_manifest") >&2 || true
fail "unit module manifest does not match the buildable module inventory"
fi

require_path() {
local profile="$1"
local pattern="$2"
local label="$3"
grep -Eq "$pattern" "$profile" || fail "$label is absent from $profile"
}

require_covered_path() {
local pattern="$1"
local label="$2"
shift 2
awk -v pattern="$pattern" '
NR > 1 && $1 ~ pattern && ($3 + 0) > 0 { found = 1; exit }
END { exit !found }
' "$@" || fail "$label has no covered source range"
}

require_covered_function() {
local profile="$1"
local relative_file="$2"
local function_name="$3"
local label="$4"
local function_profile
function_profile="$ARTIFACTS_DIR/functions-$(basename "$profile").txt"

if ! GOWORK="$ROOT_DIR/go.work" go tool cover -func="$profile" >"$function_profile"; then
fail "could not summarize functions in $profile"
fi
awk -v path="$ROOT_MODULE/$relative_file:" -v function_name="$function_name" '
index($1, path) == 1 && $2 == function_name {
percent = $3
sub(/%$/, "", percent)
if ((percent + 0) > 0) {
found = 1
}
}
END { exit !found }
' "$function_profile" || fail "$label did not execute"
rm -f "$function_profile"
}

require_path "$unit_profile" "^${ROOT_MODULE//./[.]}/[^/]+[.]go:" "root-module source"
for driver in "${driver_modules[@]}"; do
require_path "$unit_profile" "^${ROOT_MODULE//./[.]}/driver/$driver/.*[.]go:" "driver/$driver source"
done
require_path "$unit_profile" "^${ROOT_MODULE//./[.]}/integration/.*[.]go:" "integration-module source"
require_path "$unit_profile" "^${ROOT_MODULE//./[.]}/docs/readme/testcounts/.*[.]go:" "tagged documentation tooling source"

require_covered_path "^${ROOT_MODULE//./[.]}/queue[.]go:" "representative root source" "${expected_profiles[@]}"
require_covered_path "^${ROOT_MODULE//./[.]}/bus/testhooks_integration[.]go:" "root integration-tagged bus fixture" "$unit_profile"
require_covered_function "$unit_profile" "docs/readme/testcounts/main.go" "loadIntegrationCountManifest" "generated test-count evidence validation"
for driver in "${driver_modules[@]}"; do
require_covered_path "^${ROOT_MODULE//./[.]}/driver/$driver/.*[.]go:" "driver/$driver source" "${expected_profiles[@]}"
done

for backend in "${integration_backends[@]}"; do
profile="$ARTIFACTS_DIR/coverage-integration-$backend/coverage-integration-$backend.out"
dialect_evidence_file=""
dialect_evidence_function=""
case "$backend" in
null)
evidence_file="queue_null.go"
evidence_function="Dispatch"
;;
sync)
evidence_file="queue_local.go"
evidence_function="enqueueNow"
;;
workerpool)
evidence_file="queue_local.go"
evidence_function="worker"
;;
redis)
evidence_file="driver/redisqueue/worker_redis_impl.go"
evidence_function="StartWorkers"
;;
mysql)
evidence_file="driver/sqlqueuecore/queue_database_impl.go"
evidence_function="workerLoop"
dialect_evidence_file="driver/mysqlqueue/mysqlqueue.go"
dialect_evidence_function="NewWithConfig"
;;
postgres)
evidence_file="driver/sqlqueuecore/queue_database_impl.go"
evidence_function="workerLoop"
dialect_evidence_file="driver/postgresqueue/postgresqueue.go"
dialect_evidence_function="NewWithConfig"
;;
sqlite)
evidence_file="driver/sqlqueuecore/queue_database_impl.go"
evidence_function="workerLoop"
dialect_evidence_file="driver/sqlitequeue/sqlitequeue.go"
dialect_evidence_function="New"
;;
nats)
evidence_file="driver/natsqueue/worker_nats_impl.go"
evidence_function="processMessage"
;;
sqs)
evidence_file="driver/sqsqueue/worker_sqs_impl.go"
evidence_function="process"
;;
rabbitmq)
evidence_file="driver/rabbitmqqueue/worker_rabbitmq_impl.go"
evidence_function="processDelivery"
;;
*) fail "coverage evidence is not defined for backend $backend" ;;
esac
require_covered_function "$profile" "$evidence_file" "$evidence_function" "$backend integration backend"
if [[ -n "$dialect_evidence_file" ]]; then
require_covered_function "$profile" "$dialect_evidence_file" "$dialect_evidence_function" "$backend SQL dialect"
fi
done

echo "coverage artifact guard: 1 multi-module unit profile and ${#integration_backends[@]} backend profiles verified"
165 changes: 165 additions & 0 deletions .github/scripts/test_wait_codecov_report.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
#!/usr/bin/env bash
set -euo pipefail

head_sha="2222222222222222222222222222222222222222"
base_sha="1111111111111111111111111111111111111111"

# fake_curl keeps the guard tests deterministic while preserving the same
# process boundary and PATH lookup used by the real curl executable.
fake_curl() {
local url="${!#}"

if [[ "${CODECOV_TEST_SCENARIO:-}" == "malformed" ]]; then
echo "temporarily not JSON"
return
fi

case "$url" in
*/uploads/*)
fake_uploads "$url"
;;
*/compare/*)
fake_comparison
;;
*/commits/*)
fake_commit
;;
*)
return 22
;;
esac
}

# fake_uploads emits single-run, rerun, and paginated upload inventories.
fake_uploads() {
local url="$1"

case "$CODECOV_TEST_SCENARIO" in
aggregate|stale)
echo '{"count":2,"results":[{"name":"prior-run","state_name":"MERGED","totals":{"files":10,"lines":100,"hits":80,"misses":10,"partials":10,"coverage":80}},{"name":"current-run","state_name":"MERGED","totals":{"files":10,"lines":100,"hits":85,"misses":10,"partials":5,"coverage":85}}]}'
;;
pagination)
if [[ "$url" == *"page=1&"* ]]; then
jq -cn '{count:151,results:[range(0;150) | {name:("old-" + tostring),state_name:"MERGED",totals:{files:1,lines:1,hits:1,misses:0,partials:0,coverage:100}}]}'
else
echo '{"count":151,"results":[{"name":"page-two-run","state_name":"MERGED","totals":{"files":1,"lines":1,"hits":1,"misses":0,"partials":0,"coverage":100}}]}'
fi
;;
*)
echo '{"count":1,"results":[{"name":"single-run","state_name":"MERGED","totals":{"files":10,"lines":100,"hits":80,"misses":10,"partials":10,"coverage":80}}]}'
;;
esac
}

# fake_commit distinguishes a current aggregate from its individual uploads.
fake_commit() {
case "$CODECOV_TEST_SCENARIO" in
aggregate|stale)
echo "{\"commitid\":\"$head_sha\",\"state\":\"complete\",\"totals\":{\"files\":10,\"lines\":100,\"hits\":90,\"misses\":5,\"partials\":5,\"coverage\":90,\"sessions\":2}}"
;;
pagination)
echo "{\"commitid\":\"$head_sha\",\"state\":\"complete\",\"totals\":{\"files\":1,\"lines\":1,\"hits\":1,\"misses\":0,\"partials\":0,\"coverage\":100,\"sessions\":151}}"
;;
*)
echo "{\"commitid\":\"$head_sha\",\"state\":\"complete\",\"totals\":{\"files\":10,\"lines\":100,\"hits\":80,\"misses\":10,\"partials\":10,\"coverage\":80,\"sessions\":1}}"
;;
esac
}

# fake_comparison exposes both complete and intentionally stale comparison data.
fake_comparison() {
case "$CODECOV_TEST_SCENARIO" in
aggregate)
echo "{\"base_commit\":\"$base_sha\",\"head_commit\":\"$head_sha\",\"totals\":{\"head\":{\"files\":10,\"lines\":100,\"hits\":90,\"misses\":5,\"partials\":5,\"coverage\":90,\"sessions\":2},\"patch\":{\"files\":2,\"lines\":5,\"hits\":5,\"misses\":0,\"partials\":0,\"coverage\":100}}}"
;;
stale)
echo "{\"base_commit\":\"$base_sha\",\"head_commit\":\"$head_sha\",\"totals\":{\"head\":{\"files\":10,\"lines\":100,\"hits\":80,\"misses\":10,\"partials\":10,\"coverage\":80,\"sessions\":1},\"patch\":{\"files\":2,\"lines\":5,\"hits\":4,\"misses\":1,\"partials\":0,\"coverage\":80}}}"
;;
null-patch)
echo "{\"base_commit\":\"$base_sha\",\"head_commit\":\"$head_sha\",\"totals\":{\"head\":{\"files\":10,\"lines\":100,\"hits\":80,\"misses\":10,\"partials\":10,\"coverage\":80,\"sessions\":1},\"patch\":null}}"
;;
pagination)
echo "{\"base_commit\":\"$base_sha\",\"head_commit\":\"$head_sha\",\"totals\":{\"head\":{\"files\":1,\"lines\":1,\"hits\":1,\"misses\":0,\"partials\":0,\"coverage\":100,\"sessions\":151},\"patch\":{\"files\":1,\"lines\":1,\"hits\":1,\"misses\":0,\"partials\":0,\"coverage\":100}}}"
;;
*)
echo "{\"base_commit\":\"$base_sha\",\"head_commit\":\"$head_sha\",\"totals\":{\"head\":{\"files\":10,\"lines\":100,\"hits\":80,\"misses\":10,\"partials\":10,\"coverage\":80,\"sessions\":1},\"patch\":{\"files\":2,\"lines\":5,\"hits\":4,\"misses\":1,\"partials\":0,\"coverage\":80}}}"
;;
esac
}

if [[ "${0##*/}" == "curl" ]]; then
fake_curl "$@"
exit
fi

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
guard="$script_dir/wait_codecov_report.sh"
fake_bin="$(mktemp -d "${TMPDIR:-/tmp}/queue-codecov-guard.XXXXXX")"
trap 'rm -rf -- "$fake_bin"' EXIT
ln -s "$script_dir/test_wait_codecov_report.sh" "$fake_bin/curl"

# run_guard isolates the API scenario while keeping guard timeouts short.
run_guard() {
local scenario="$1"
local upload_name="$2"
local requested_base="${3-$base_sha}"

PATH="$fake_bin:$PATH" \
CODECOV_API_BASE="https://mock.invalid" \
CODECOV_BASE_SHA="$requested_base" \
CODECOV_SHA="$head_sha" \
CODECOV_TEST_SCENARIO="$scenario" \
CODECOV_UPLOAD_NAME="$upload_name" \
CODECOV_WAIT_POLL_SECONDS=1 \
CODECOV_WAIT_TIMEOUT_SECONDS=1 \
"$guard"
}

# require_success fails with the captured guard diagnostics when acceptance regresses.
require_success() {
local scenario="$1"
local upload_name="$2"
local requested_base="${3-$base_sha}"
local expected="${4:-exact commit report complete}"
local output

if ! output="$(run_guard "$scenario" "$upload_name" "$requested_base" 2>&1)"; then
echo "scenario $scenario unexpectedly failed:" >&2
echo "$output" >&2
exit 1
fi
if [[ "$output" != *"$expected"* ]]; then
echo "scenario $scenario omitted expected output: $expected" >&2
echo "$output" >&2
exit 1
fi
}

# require_failure protects against accepting stale or structurally incomplete reports.
require_failure() {
local scenario="$1"
local upload_name="$2"
local expected="$3"
local output

if output="$(run_guard "$scenario" "$upload_name" 2>&1)"; then
echo "scenario $scenario unexpectedly passed:" >&2
echo "$output" >&2
exit 1
fi
if [[ "$output" != *"timed out after 1s"* || "$output" != *"$expected"* ]]; then
echo "scenario $scenario failed for the wrong reason:" >&2
echo "$output" >&2
exit 1
fi
}

require_success single single-run "$base_sha" "project 80%, patch 80%"
require_success aggregate current-run "$base_sha" "project 90%, patch 100%"
require_success pagination page-two-run "$base_sha" "project 100%, patch 100%"
require_success single single-run "" "project 80%, patch n/a%"
require_failure stale current-run "comparison: ready"
require_failure null-patch single-run "comparison: totals incomplete"
require_failure malformed single-run "upload: API unavailable or invalid"

echo "Codecov report guard tests passed"
Loading
Loading