Skip to content

ci: add repeated ledger migration race checks - #658

Merged
zzwong merged 4 commits into
mainfrom
fix/issue-607-repeated-race-ci
Oct 11, 2026
Merged

zzwong merged 4 commits into
mainfrom
fix/issue-607-repeated-race-ci

Conversation

@zzwong

@zzwong zzwong commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Add make test-race for ledger and database migrations, with race detection and 25 repetitions.
  • Set test GOMAXPROCS to four and cap t.Parallel tests at four, with serial package execution and a five-minute timeout per package. Existing contention fixtures retain their own bounded worker counts.
  • Run the target in a separate test-race CI job with CGO enabled and a 20-minute timeout, reusing the existing pinned shared test action and go.mod toolchain source.
  • Document local requirements and preserve existing check names, triggers, action pins, dependency caching, and branch-protection settings.

The repeated run covers the existing simultaneous ledger-open and allocation tests, immediate transaction-lock DSN assertions, and migration version re-check tests. Twenty-five repetitions follows the original issue's observed reproduction threshold. The target is limited to the two concurrency-sensitive packages.

Validation

  • Hosted CI (2026-10-08): run 37730118267 passed all 11 jobs at exact head 1abe5d6707b744e1d65d1e11511f136d2107fdee, including the new test-race job. It completed the literal 25-repeat target with ledger at 139.337 seconds and dbmig at 6.033 seconds, without a race report or timeout. The logged command-output interval was approximately 176.93 seconds; the complete job-log span was approximately 183.42 seconds. Setup Go restored an existing cache, so these are hosted cache-hit measurements.
  • CGO_ENABLED=1 make test-race: passed in 183.74 seconds on Go 1.26.8. Both packages completed all 25 repetitions without a race report or timeout.
  • actionlint 1.7.12 with ShellCheck 0.11.0: passed.
  • Workflow and Makefile invariants: passed. Removing the new job and target leaves the preexisting configuration byte-identical.
  • make tidy, go mod verify, go vet ./..., make lint, and make build: passed; module files remain unchanged.
  • make test: fails three existing pipeline source-trust test groups because this execution environment contains a read-only /tmp/.git marker. The same failures and diagnostics were reproduced on pristine main at e8cab16. All production Go source is unchanged by this PR.

The measured local run used an already-populated build cache; it is not a cold-build-cache timing measurement. The first hosted cache-hit run also passed within the five-minute per-package and 20-minute job budgets. Cold-build-cache timing remains unmeasured.

The full aggregate is not claimed green, and literal make check was not run. Existing platform markers were left unchanged. Existing required-check identities remain unchanged; requiring the new check remains a separate maintainer decision after its first successful CI run.

Related Issues

Closes #607

monit-reviewer
monit-reviewer previously approved these changes Oct 11, 2026

@monit-reviewer monit-reviewer left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated PR Review

Reviewed commit: 1abe5d6707b7
Profile: open-cli-collective-review - Posting as: monit-reviewer

Summary

Reviewer Findings
automation:ci-release 0
documentation:docs 0
policies:conventions 0
structure:repo-health 0

Reviewer Coverage

Complete coverage details are retained in the local coverage.json artifact.

  • automation:ci-release — complete (broad); scope: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; body-inspected: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; skipped: none; context (not coverage): 1 file; examples: go.mod; constraints: Static review only; tests and workflows were not executed. The external pinned shared action implementation was not inspected.
  • documentation:docs — complete (broad); scope: 1 file; examples: docs/development.md; body-inspected: 1 file; examples: docs/development.md; skipped: none; context (not coverage): 7 files; examples: .github/workflows/ci.yml, AGENTS.md, CLAUDE.md, Makefile, go.mod; 2 omitted; constraints: Documentation-only review using static inspection; no tests or CI jobs were executed. External shared-action internals and live branch-protection settings were not independently verified.
  • policies:conventions — complete (broad); scope: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; body-inspected: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; skipped: none; constraints: Review limited to static inspection of assigned files and visible repo-local conventions; external shared standards and shared action implementation were not inspected. No tests were executed.
  • structure:repo-health — complete (broad); scope: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; body-inspected: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; skipped: none; constraints: Static review only; tests and workflows were not executed, and the external pinned shared action implementation was not inspected.

0 PR discussion threads considered. 0 summarized; 0 resolved.


Completed in 41s | $0.06 | openai-codex/gpt-6.1-sol | cr 0.10.328
Field Value
Model openai-codex/gpt-6.1-sol
Reviewers automation:ci-release, documentation:docs, policies:conventions, structure:repo-health
Engine pi_rpc · openai-codex/gpt-6.1-sol
Reviewed by cr · monit-reviewer
Duration 41s wall · 56s compute
Cost $0.06
Tokens 25.8k in / 972 out

Per-workstream usage

  • orchestrator-selection — openai-codex/gpt-6.1-sol
    • In: 5.7k
    • Out: 409
    • Cache read: 0
    • Cache create: 0
    • Cost: $0.02
    • Duration: 11s
  • automation:ci-release — openai-codex/gpt-6.1-sol
    • In: 6.1k
    • Out: 100
    • Cache read: 5.5k
    • Cache create: 0
    • Cost: $0.01
    • Duration: 7s
  • documentation:docs — openai-codex/gpt-6.1-sol
    • In: 409
    • Out: 163
    • Cache read: 17.2k
    • Cache create: 0
    • Cost: $0.00
    • Duration: 15s
  • policies:conventions — openai-codex/gpt-6.1-sol
    • In: 5.0k
    • Out: 128
    • Cache read: 5.1k
    • Cache create: 0
    • Cost: $0.01
    • Duration: 8s
  • structure:repo-health — openai-codex/gpt-6.1-sol
    • In: 4.7k
    • Out: 111
    • Cache read: 5.4k
    • Cache create: 0
    • Cost: $0.01
    • Duration: 7s
  • orchestrator-rollup — openai-codex/gpt-6.1-sol
    • In: 3.8k
    • Out: 61
    • Cache read: 0
    • Cache create: 0
    • Cost: $0.01
    • Duration: 5s

@monit-reviewer monit-reviewer left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated PR Review

Reviewed commit: 9eb44eeb4d9c
Profile: open-cli-collective-review - Posting as: monit-reviewer

Summary

Reviewer Findings
automation:ci-release 0
documentation:docs 0
policies:conventions 0
structure:repo-health 0

Reviewer Coverage

Complete coverage details are retained in the local coverage.json artifact.

  • automation:ci-release — complete (constrained); scope: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; body-inspected: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; skipped: none; context (not coverage): 1 file; examples: go.mod; constraints: Static review only; tests and workflow execution were not run. The external shared action implementation was not available for inspection.
  • documentation:docs — complete (constrained); scope: 1 file; examples: docs/development.md; body-inspected: 1 file; examples: docs/development.md; skipped: none; context (not coverage): 7 files; examples: .github/workflows/ci.yml, AGENTS.md, CLAUDE.md, Makefile, go.mod; 2 omitted; constraints: External shared-action caching behavior and live branch-protection settings were not independently verified. Review limited to documentation accuracy; tests were not executed.
  • policies:conventions — complete (constrained); scope: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; body-inspected: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; skipped: none; constraints: Canonical shared standards and shared action implementations were not available in the supplied repository context. Review limited to static inspection; no tests or workflows were executed.
  • structure:repo-health — complete (constrained); scope: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; body-inspected: 3 files; examples: .github/workflows/ci.yml, Makefile, docs/development.md; skipped: none; constraints: Static review only; tests and hosted CI results were not independently executed or verified. The external pinned shared action implementation was not available through repository inspection.

0 PR discussion threads considered. 0 summarized; 0 resolved.


Completed in 28s | $0.06 | openai-codex/gpt-6.1-sol | cr 0.10.328
Field Value
Model openai-codex/gpt-6.1-sol
Reviewers automation:ci-release, documentation:docs, policies:conventions, structure:repo-health
Engine pi_rpc · openai-codex/gpt-6.1-sol
Reviewed by cr · monit-reviewer
Duration 28s wall · 41s compute
Cost $0.06
Tokens 27.2k in / 516 out

Per-workstream usage

  • automation:ci-release — openai-codex/gpt-6.1-sol
    • In: 7.3k
    • Out: 105
    • Cache read: 5.5k
    • Cache create: 0
    • Cost: $0.02
    • Duration: 8s
  • documentation:docs — openai-codex/gpt-6.1-sol
    • In: 2.7k
    • Out: 108
    • Cache read: 15.4k
    • Cache create: 0
    • Cost: $0.01
    • Duration: 11s
  • policies:conventions — openai-codex/gpt-6.1-sol
    • In: 7.3k
    • Out: 135
    • Cache read: 4.1k
    • Cache create: 0
    • Cost: $0.02
    • Duration: 10s
  • structure:repo-health — openai-codex/gpt-6.1-sol
    • In: 6.0k
    • Out: 107
    • Cache read: 5.4k
    • Cache create: 0
    • Cost: $0.01
    • Duration: 8s
  • orchestrator-rollup — openai-codex/gpt-6.1-sol
    • In: 3.8k
    • Out: 61
    • Cache read: 0
    • Cache create: 0
    • Cost: $0.01
    • Duration: 2s

@zzwong
zzwong marked this pull request as ready for review October 11, 2026 02:14
@zzwong
zzwong merged commit 281f897 into main Oct 11, 2026
12 checks passed
@zzwong
zzwong deleted the fix/issue-607-repeated-race-ci branch October 11, 2026 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Concurrency guards are verified only by invocations no repo automation runs

2 participants