Skip to content

A run that will outgrow its memory setting says so first, the race job names its machine, golang.org/x/net 0.62.0 - #215

Merged
donislawdev merged 5 commits into
mainfrom
ci/race-machine-2026-11-03
Nov 3, 2026
Merged

donislawdev merged 5 commits into
mainfrom
ci/race-machine-2026-11-03

Conversation

@donislawdev

@donislawdev donislawdev commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • engine: a run that will hold more than its memory setting gives it says so before its first byte. A run holds its whole plan to the end and every file adds about 520 B (its answer and manifest entry, measured on txt, png, docx, pdf and zip). The plan was weighed and what the files add was not, so 600 000 text files in a 1 GB container wrote for fifteen minutes and were ended by the system with nothing said and no manifest. engine.PredictHold adds the heap as the run starts to what its files will add, against the setting. The command line prints a note: line before writing, dry runs included. The window says the same after Preview and after a run. It is a note and not a refusal, because the same run finished where the container had swap.
  • ci: each part of the race detector job prints the machine it runs on (processors, model, memory) before the tests, and after them how the machine's processor time was spent while they ran and which processes still running have used the most of it. Part 2 has run past its twenty minutes in about one run of three while the other parts kept their usual time.
  • deps: golang.org/x/net 0.62.0 for GO-2026-6860 and GO-2026-6866 in its html package. Only the window links that package, govulncheck finds neither in code it reaches, and the command line tool does not link golang.org/x/net. No generated file changes.
  • security: three advisories against mcp 1.29.0 under semgrep get the same dated exception as the one already there. Every semgrep release pins that version, semgrep cannot start without the package, and the CI job runs only semgrep scan.

Test plan

  • New guards: TestARunThatWillHoldMoreThanItsMemorySaysSoBeforeItsFirstByte, TestTheWindowSaysWhenARunWillHoldMoreThanItsMemory, TestAFileAddsWhatTheForecastSaysToTheRunsMemory (in a process of its own). Each mutation entry for them was red on its mutant before commit.
  • The CI steps run as files in ubuntu:24.04.
  • The OSV exceptions: the pinned scanner image exits 0 with them and reports exactly the three advisories without them.
  • Cheap gates of the whole tree and the guards of the touched area.

🤖 Generated with Claude Code

donislawdev and others added 2 commits November 3, 2026 15:17
Part 2 of the race detector job has run past its twenty minutes in about
one run of three, while the other parts of the same runs took their usual
time. The log does not say what the machine was, so a slower machine and
something inside the part could not be told apart.

Each part now prints its processors, their model and the memory before the
tests, and after them how the machine's processor time was spent while the
tests ran (busy, idle, waiting on the disk, taken by the host) and which
processes still running have used the most of it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Two published advisories name golang.org/x/net 0.60.0 (GO-2026-6860 and
GO-2026-6866), both in its html package. The window links that package only
through the toolkit's SVG reader, govulncheck finds neither in code it
reaches, and the command line tool does not link golang.org/x/net at all, so
no generated file changes.

The licence file is byte for byte the same. Among the packages the window
links, only html/parse.go and html/render.go changed. No module entered or
left the graph, and golang.org/x/text and golang.org/x/sys stay where they
were.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Walkthrough

The CI workflow adds runner and CPU diagnostics around race-detector test parts. The indirect golang.org/x/net dependency changes from v0.60.0 to v0.62.0. The changelog, third-party notice, and mutation expectation also reflect the updated version.

Changes: Race Detector Diagnostics

Layer / File(s) Summary
Test-part system diagnostics
.github/workflows/ci.yml
The workflow logs runner details before testing, records CPU counters and start time, then reports CPU-state percentages, elapsed time, load average, and top CPU-time processes afterward. The post-test report runs unless canceled and reports when no test-start data is available.

golang.org/x/net Update

Layer / File(s) Summary
Dependency version and related records
go.mod, THIRD-PARTY-NOTICES.md, CHANGELOG.md, internal/guard/mutation/entries.py
The indirect dependency changes to v0.62.0. The notice and changelog record the update, and the mutation expectation uses the new version.

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Other

Suggested labels: dependencies, security

Merge Risk: Low · up to cd809

The PR is low risk, but should clarify the runner diagnostics and changelog wording so performance data and security notes are not misleading.

Pre-merge checks: Passed 14
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Tests For Changed Behavior Passed PASS. The PR changes CI diagnostics, changelog/license metadata, mutation metadata, and an indirect golang.org/x/net dependency version. It does not change application runtime source behavior. No te…
No Secrets Or Debug Leftovers Passed The PR adds no CLAUDE.md, AGENTS.md, .claude/, or .env files. Added lines contain no credentials, private URLs, absolute local paths, personal e-mails, private hostnames/IPs, or hardcoded machine/user…
No Hardcoded Ui Styling Passed PASS — The pull request changes CI workflow shell commands, dependency metadata, changelog text, and mutation data only. It does not add or change GUI code, so the hardcoded UI styling check does not …
No Obvious Performance Problems Passed No clear performance problem is introduced. The PR adds one-time CI diagnostics (lscpu, free, /proc, ps) around each race-test part and updates a dependency. These commands do not run on a UI …
Desktop Robustness Passed The pull request changes only CI diagnostics, dependency metadata, changelog/notices, and mutation-test data. It does not add desktop asset loading, settings persistence, culture-sensitive parsing, de…
Safe File Parsing Passed PASS — The PR does not add or change application parsing of XML, YAML, JSON, CSV, XLSX, archives, themes, translations, or settings. The new CI shell only reads trusted runner telemetry from `/proc/st…
System Changes Are Reversible Passed PASS: The PR adds CI diagnostics that read runner information from /proc, lscpu, free, and ps. It does not add or change network filters, proxies, firewalls, system time, process hooking, services, re…
Clear User-Facing Text Passed PASS. The PR adds CI diagnostic labels and dependency/changelog text, but it adds no buttons, icons, confirmations, raw exceptions, or error messages needing the specified fixes. The new CI output use…
No Resource Leaks Passed PASS: The PR adds only CI shell diagnostics and dependency/version metadata. The diagnostics read /proc, run short-lived commands, and overwrite three fixed-size files (stat-before.txt, `time-befo…
Scope, Duplication And Docs Passed The changed files match the stated CI diagnostics and x/net dependency update. The dependency change updates go.mod/go.sum, the third-party notice, CHANGELOG.md, and its mutation guard. The new CI ste…
Title check Passed The title identifies the race-job diagnostics and the golang.org/x/net 0.62.0 upgrade. Its claim about a run outgrowing its memory setting is not supported by the changes, but the title still describe…
Full details: Tests For Changed Behavior

Explanation

PASS. The PR changes CI diagnostics, changelog/license metadata, mutation metadata, and an indirect golang.org/x/net dependency version. It does not change application runtime source behavior. No test files were deleted, skipped, or weakened; the diff contains no test assertion changes.

Full details: No Secrets Or Debug Leftovers

Explanation

The PR adds no CLAUDE.md, AGENTS.md, .claude/, or .env files. Added lines contain no credentials, private URLs, absolute local paths, personal e-mails, private hostnames/IPs, or hardcoded machine/user names. The new lscpu, free, /proc, and ps output is intentional race-job telemetry, documented by the step names and comments, not leftover debug code.

Full details: No Hardcoded Ui Styling

Explanation

PASS — The pull request changes CI workflow shell commands, dependency metadata, changelog text, and mutation data only. It does not add or change GUI code, so the hardcoded UI styling check does not apply.

Full details: No Obvious Performance Problems

Explanation

No clear performance problem is introduced. The PR adds one-time CI diagnostics (lscpu, free, /proc, ps) around each race-test part and updates a dependency. These commands do not run on a UI thread, process a large collection quadratically, or poll or refresh data repeatedly.

Full details: Desktop Robustness

Explanation

The pull request changes only CI diagnostics, dependency metadata, changelog/notices, and mutation-test data. It does not add desktop asset loading, settings persistence, culture-sensitive parsing, destructive UI actions, window background work, admin elevation, or user-facing network calls. The existing race test command is unchanged; the new CI steps only read and report runner state.

Full details: Safe File Parsing

Explanation

PASS — The PR does not add or change application parsing of XML, YAML, JSON, CSV, XLSX, archives, themes, translations, or settings. The new CI shell only reads trusted runner telemetry from /proc/stat and /proc/loadavg, plus bounded lscpu, free, and ps output; it performs no deserialization, formula export, external-entity resolution, or path traversal. The dependency and notice changes only update golang.org/x/net version metadata.

Full details: System Changes Are Reversible

Explanation

PASS: The PR adds CI diagnostics that read runner information from /proc, lscpu, free, and ps. It does not add or change network filters, proxies, firewalls, system time, process hooking, services, registry, or drivers. The dependency, changelog, notice, and mutation-entry changes also do not modify system state.

Full details: Clear User-Facing Text

Explanation

PASS. The PR adds CI diagnostic labels and dependency/changelog text, but it adds no buttons, icons, confirmations, raw exceptions, or error messages needing the specified fixes. The new CI output uses clear labels and percentage units, and the dependency is consistently identified as golang.org/x/net 0.62.0 across the changelog, notices, and module file.

Full details: No Resource Leaks

Explanation

PASS: The PR adds only CI shell diagnostics and dependency/version metadata. The diagnostics read /proc, run short-lived commands, and overwrite three fixed-size files (stat-before.txt, time-before.txt, and processes.txt) per runner job. No handler, timer, stream, response, process, goroutine, task, cache, queue, or image is introduced without cleanup.

Full details: Scope, Duplication And Docs

Explanation

The changed files match the stated CI diagnostics and x/net dependency update. The dependency change updates go.mod/go.sum, the third-party notice, CHANGELOG.md, and its mutation guard. The new CI steps are scoped to the race job and do not introduce a public API, CLI, configuration format, or persisted-data change. No unrelated refactor or missing user-facing documentation is evident.

Full details: Title check

Explanation

The title identifies the race-job diagnostics and the golang.org/x/net 0.62.0 upgrade. Its claim about a run outgrowing its memory setting is not supported by the changes, but the title still describes real parts of the pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI (base), Organization UI (inherited)
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 6061c64e-330c-42db-9251-b0d1037944b1
Commits

Reviewing files that changed from the base of the PR and between 29b803c and cd80910.

Files ignored due to path filters: 1
  • go.sum is excluded by !**/*.sum, !**/go.sum
Files selected for processing: 5
  • .github/workflows/ci.yml
  • CHANGELOG.md
  • THIRD-PARTY-NOTICES.md
  • go.mod
  • internal/guard/mutation/entries.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Recent review details
Context from checks skipped due to timeout: 19
  • GitHub Check: part 0
  • GitHub Check: CodeRabbit
  • GitHub Check: race detector (part 3 of 4)
  • GitHub Check: race detector (part 0 of 4)
  • GitHub Check: race detector (part 2 of 4)
  • GitHub Check: race detector (part 1 of 4)
  • GitHub Check: import table of the window binary
  • GitHub Check: staticcheck
  • GitHub Check: reference tools actually installed
  • GitHub Check: coverage gate
  • GitHub Check: the installer installs and leaves
  • GitHub Check: test on ubuntu-latest
  • GitHub Check: linters
  • GitHub Check: the Chocolatey packages install and leave
  • GitHub Check: test on windows-latest
  • GitHub Check: known vulnerabilities
  • GitHub Check: test on macos-latest
  • GitHub Check: bill of materials
  • GitHub Check: Analyze (go)
Additional context used
Code guidelines: 1
CONTRIBUTING.md — configured
Path-based instructions: 14
For every added or upgraded dependency: confirm the package really exists and the name is spelled correctly (typosquatting), it is actively maintained, the license is compatible with this project's license, and it is actually needed (not re...

CodeRabbit configuration file

Files:

  • go.mod
Applies to text shown to the user (labels, buttons, tooltips, placeholders, dialogs, errors, status messages, empty states, translations).

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
These are end-user desktop applications.

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
Performance is a known weak spot of these projects.

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
Applies only to code that builds or styles a GUI.

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
Check GitHub Actions security: third-party actions pinned to a full commit SHA, minimal `permissions:` block, no `pull_request_target` with checkout of PR code, no untrusted input (`github.event.*.title/body`, branch names) interpolated dir...

CodeRabbit configuration file

Files:

  • .github/workflows/ci.yml
User-facing changelog.

CodeRabbit configuration file

Files:

  • CHANGELOG.md
Domain: test file generator (Go; `tfg` CLI and `tfg-gui` Fyne window over one engine).

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
SECURITY, HIGH PRIORITY.

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
These apps are QA/developer tools.

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
Check that documentation matches the actual code in this PR: commands, flags, config keys, file paths, build steps and examples must exist.

CodeRabbit configuration file

Files:

  • CHANGELOG.md
  • THIRD-PARTY-NOTICES.md
Python code.

CodeRabbit configuration file

Files:

  • internal/guard/mutation/entries.py
All code in this repository is written by an AI coding agent (Claude Code).

CodeRabbit configuration file

Files:

  • CHANGELOG.md
  • go.mod
  • THIRD-PARTY-NOTICES.md
  • internal/guard/mutation/entries.py
  • .github/workflows/ci.yml
Source excerpt: **Words a user reads are English, with a flat hyphen and no semicolons.**

CodeRabbit inference engine (CONTRIBUTING.md)

Files:

  • CHANGELOG.md
Learnings: 1
Learning: 2026-11-02T16:20:03.196Z
Learnt from: CR
Repo: donislawdev/TestingFilesGenerator PR: 0
File: CONTRIBUTING.md:0-0
Timestamp: 2026-11-02T16:20:03.196Z
Learning: Applies to CHANGELOG.md : Source excerpt:
# Contributing

## What a change has to satisfy

- **Words a user reads are English, with a flat hyphen and no semicolons.** That
  covers the README, the changelog, `--help`, every message, and every comment
  in the code. A test enforces the punctuation.

Applied to files:

  • CHANGELOG.md
LanguageTool
THIRD-PARTY-NOTICES.md

[grammar] ~237-~237: Ensure spelling is correct
Context: ... published advisories name v0.60.0. Its licence file is byte for byte the one at v0.60....

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

@coderabbitai coderabbitai Bot added dependencies Pull requests that update a dependency file security labels Nov 3, 2026
Three advisories published against mcp 1.29.0 are fixed in 1.30.0, and
every semgrep release, 1.183.0 included, asks for mcp==1.29.0. Nor can the
package be left out: semgrep's command line imports it when it starts.

Two are about the MCP client and one about an MCP server checking bearer
tokens. The CI job runs semgrep scan and nothing else, which starts neither.
The entries end on 2026-11-15 with the two already there, so all of them
come back on one reminder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Comment thread .github/workflows/ci.yml Resolved
Comment thread .github/workflows/ci.yml Resolved
Comment thread CHANGELOG.md Resolved
donislawdev and others added 2 commits November 3, 2026 16:25
A run holds its whole plan to the end, and every file adds its answer and
its manifest entry as it finishes, about 520 B in each of the five formats
measured. The plan is weighed while it is built and what the files add was
not, so 600 000 text files in a container of 1 GB passed every check, wrote
for fifteen minutes and were ended by the system with nothing said and no
manifest. With Docker's default swap the same run finished.

engine.PredictHold works out the heap as the run starts plus what its files
will add, against what the memory setting gives the run. The command line
prints a note before the first byte, dry runs included, because a process
the system ends prints nothing afterwards. The window says the same after a
preview and after a run. A note and not a refusal: whether such a run is
ended depends on swap the program cannot see.

Three guards: the command line under --memory 1mb and 64gb, the window on a
machine of 2 MiB and of 16 GB, and the forecast's 520 B against what a run
of 2000 files adds to the heap, measured in a process of its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
iowait is time the processors sat idle while disk I/O was pending, not time
a test waited for the disk. steal depends on the platform and Microsoft
documents it as not applicable to Azure, so nought there proves nothing
about the host. The process list ranks by processor time since each process
started, which ELAPSED dates. The labels now say so.

The changelog entry for golang.org/x/net no longer joins two sentences with
a comma.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@donislawdev donislawdev changed the title ci: the race job says what machine it ran on, and golang.org/x/net 0.62.0 A run that will outgrow its memory setting says so first, the race job names its machine, golang.org/x/net 0.62.0 Nov 3, 2026
@donislawdev
donislawdev merged commit eceea37 into main Nov 3, 2026
30 checks passed
@donislawdev
donislawdev deleted the ci/race-machine-2026-11-03 branch November 3, 2026 17:15
donislawdev added a commit that referenced this pull request Nov 3, 2026
* ci: the race job lays its guards out by what each weighs

The steps added in #215 named the processor of every race part. The same
part 2 took 1202 s on an AMD EPYC 7763, past its twenty minute timeout, and
689 s on an EPYC 9V45, every test of it slower by the same factor, while
part 3 took 525 and 530 s on two 7763s. Split by the checksum of each name,
the four parts were about 1250, 1158, 795 and 526 s on the 7763.

.github/race-weights holds the 48 guards that took 10 s or more, each at the
longest time any of eight parts took, and the mean of the rest.
.github/scripts/race_parts.py lays those out heaviest first, each into the
lightest part, over the light guards, which stay on the checksum so adding
one moves no other. By the measured times the parts are now 912 to 961 s on
the slowest processor.

A weight for a test the binary does not list fails every part, and a test
missing from the weights that runs 60 s or more fails its part with the line
to add. The race job now also runs when either file changes.

Five guards in raceparts_test.go: every guard in exactly one part, checked
against the binary's own -test.list; the parts within a tenth of their mean
and under 85% of the timeout read from ci.yml; the refusals; the unlisted
check; and the job's use of both. Thirteen mutation entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* ci: the race split reads only the durations go test writes, and its guards handle every parse error

A log line whose duration is not one go test writes is passed by rather
than ending the unlisted check with a traceback, and a file that cannot be
read says so in a sentence. The guards fail on a timeout or an unlisted
weight that is not a number instead of reading it as nought. The mutation
entry for the missing unlisted line now changes only that refusal, and a
new one covers the duration pattern.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file security

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant