Skip to content

Exclude unstable compatibility packages - #33

Merged
zhouguangyuan0718 merged 1 commit into
xgo-dev:mainfrom
zhouguangyuan0718:codex/shard-compatibility
Aug 20, 2026
Merged

Exclude unstable compatibility packages#33
zhouguangyuan0718 merged 1 commit into
xgo-dev:mainfrom
zhouguangyuan0718:codex/shard-compatibility

Conversation

@zhouguangyuan0718

Copy link
Copy Markdown
Collaborator

The first full compatibility run exposed packages that either failed/timed out under the Go baseline or failed LLGo dependency discovery before the hosted runner was terminated.

This change:

  • excludes those 16 observed problem packages
  • regenerates the pinned manifest with 16 replacements while keeping exactly 200 unique packages
  • uses deterministic Bent compile order and prints the package name before each quiet compile, so any future runner termination identifies the active package directly

Validation:

  • go test ./cmd/bent
  • python3 -m unittest discover -s ci/llgo-compatibility -p "test_*.py"
  • bash -n ci/llgo-compatibility/run.sh
  • end-to-end humanize_001 Go/LLGo smoke: 28/28 tests passed; raw test2json outputs and results.json retained

@zhouguangyuan0718
zhouguangyuan0718 merged commit 99d52ad into xgo-dev:main Aug 20, 2026
1 check failed

@fennoai fennoai Bot 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.

Review summary

Scoped, low-risk PR that stabilizes the LLGo-compatibility CI run. I verified the structural invariants and ran the manifest test locally — all green:

  • Counts consistent: benchmarks-llgo-compatibility.toml has exactly 200 [[Benchmarks]] entries with unique Name/Repo values, matching sum(Limit) = 200 in projects.toml. Per-project counts line up (etcd 15+8+3 = 26, protobuf 35, gonum 45, client_go 45, zap 11, gorm 5, workiva 28, plus 5 singletons).
  • Renumbering clean: Name sequences are contiguous within every prefix — no gaps or duplicates after the removed/backfilled entries.
  • Exclude lists disjoint from included repos; I checked the near-miss paths (go.uber.org/zap vs zap/*, gorm.io/gorm/logger, .../auth/exec vs .../tools/auth/exec).
  • test_manifest.py passes with the updated etcd assertion (26).
  • Go change is correct: the new BENT_QUIET_RUN_OUTPUT branch in configuration.go reuses the same env idiom already at configuration.go:356, sits correctly between the verbose > 0 and default-dot branches, and writes to the driver log (not bench/*.stdout), so report.py parsing is unaffected.
  • -S=0 disables build shuffling (default 2), giving deterministic compile ordering that pairs well with the new compiling: <name> (<config>) progress line.
  • No security or performance concerns (the per-compile os.Getenv is negligible next to the go test -c subprocess it precedes).

No blocking issues. A few optional notes below.

Optional, non-blocking:

  1. benchmarks-llgo-compatibility.toml is a generated DO NOT EDIT file (ci/llgo-compatibility/generate_manifest.py). Please confirm these entries came from re-running the generator against the updated projects.toml rather than hand-editing — otherwise a future generator run could clobber them and reintroduce the excluded packages.
  2. cmd/bent/README.md:56 documents the shuffle flag as lowercase -s, but bent registers it as -S (bent.go:211). This PR is the first to use -S in CI; a one-char README fix would keep them in sync. (Pre-existing, not introduced here.)
  3. The etcd 26 in test_manifest.py:23 is a second magic number that must track the three etcd Limits in projects.toml. Deriving it from the quotas would prevent drift. (Optional maintainability.)

Comment thread cmd/bent/configuration.go
if verbose > 0 {
fmt.Println(asCommandLine(cwd, cmd))
} else if os.Getenv("BENT_QUIET_RUN_OUTPUT") != "" {
fmt.Printf("\ncompiling: %s (%s)\n", bench.Name, config.Name)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The new quiet-mode compile line is correct and consistent with the existing BENT_QUIET_RUN_OUTPUT handling at configuration.go:356. Non-blocking: run.sh's comment describes BENT_QUIET_RUN_OUTPUT purely in terms of run/test output ("echoing them all into the Actions log can starve a hosted runner"). Now that the same variable also toggles per-compile progress here, consider updating that comment so its documented scope matches the new compile-output behavior.

for config in Go LLGo; do
arguments=(
-T -N=1
-T -N=1 -S=0

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

-S=0 disables build shuffling (default is 2), producing deterministic compile ordering — a good match for the new compiling: <name> (<config>) line so the CI log reads as a clean, ordered stream. Looks correct.

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.

1 participant