Repository navigation
test(site): run siterig/short for every PR on the control path - #1906
Merged
Merged
Conversation
The runner only ran the short set for PRs touching control, loadpoint, OCPP, telemetry or the rig. Core behaviour also lives in the control tick wiring, the driver host, plans, config limits, cars, sitepower, the bundled drivers and the solver bundle. Watch those too, pin the list in a test table, and fix the README: the runner's clone is ~/siterig/ftw, add a Linux user-service variant, explain the port range, and record the 27 October timing for the full set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
units.LimitChargeSteps limits charger steps for loadpoint, OCPP and dispatch, yet a PR that changed only go/internal/units got no siterig/short. Watch units and the other internal packages the control packages import (gridcost, forecasting, sunpos, events, state, mdnsresolve). TestWatchedPathsCoverImports runs go list -deps on the control packages and fails when one of them imports an unwatched internal package. The README now says what the list covers and that a change to the API or UI alone does not run the rig. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
frahlg
added a commit
that referenced
this pull request
Oct 27, 2026
Brings in master's #1876 (7840c33) and #1906 through #1910. The merge has no text conflict, but #1876's blockedDischargeKeepW called the old six-argument fuseReliefFromSnapshot and did not build. Resolution: blockedDischargeKeepW now passes the live phase sample to fuseReliefFromSnapshot, which already reads the phases as the stop leaves them. stopPhaseReliefW duplicated that math and is gone. Its live reads move into phaseSample.moveW: each battery's raw power comes from Store.OnlineRawW and must be the reading the decision used, so an offline battery, a battery that moved on to a newer reading, or a target with no reading gives no phase relief. #1876's test now runs through phaseReliefForTargets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the runner step of the fuse-at-rating plan (owner rule of 27 Oct). It is a separate PR from master and does not stack on another PR.
Problem
The siterig runner posts
siterig/shortonly on PRs that touchgo/internal/{control,loadpoint,ocpp,telemetry}orgo/test/site. Core behaviour also lives elsewhere: the control tick wiring ingo/cmd/ftw, the driver host and its command deadlines, plans (mpc,optimizercontract), limits (config,configreload),cars,sitepower, the bundleddrivers/snapshot andoptimizer/native/bundle. A PR in those paths could change what the box does on a site and get no rig run before merge. The fuse-at-rating PRs touchconfigandconfigreload.The README also had wrong install steps. It cloned to
~/siterig/src, butmain.gokeeps its clone in~/siterig/ftw. It had no Linux user-service option, and its timing note was from 22 Oct.Change
runner.go:watchedPathsnow also coversgo/cmd/ftw/,go/internal/{drivers,mpc,optimizercontract,config,configreload,cars,sitepower}/,drivers/andoptimizer/native/bundle/. It also covers every internal package those control packages import:units(charge-step limits for loadpoint, OCPP and dispatch),gridcost,forecasting,sunpos,events,stateandmdnsresolve.runner_test.go:TestWatchedPathsCoverImportsrunsgo list -depson the control packages and fails when one imports an internal package that is not watched.go/cmd/ftwis left out of that check because it imports everything, the API and UI among them; only its own files are watched.runner_test.go: a newTestTouchesWatchedtable pins each watched path. It also checks near misses that must not match:go/internal/driverrepo,go/internal/configx,go/cmd/ftwctl,web/drivers/andoptimizer/native/src.~/siterig/ftw, the path the runner uses, and builds from that clone.systemctl --user,loginctl enable-linger).port-base + 100k,make siterigshares the 18700 default, and a second runner needs its own-port-baseand-work.main.godoc comment and the system unit's header comment follow.This PR has no changeset. The runner is a test tool that does not ship to boxes. #1797, which added it, used the
no-changesetlabel.Tests
go test -race -count=1 ./test/site/runner/passes.go vet ./...andgo build ./...fromgo/pass.sedcommand by hand on the unit file. It dropsUser=, fills in the user name and switches todefault.target.Risk
Low. More PRs now get the short set, so the runner's queue grows. A full set takes about 2 h 20 min and the short set less, so PRs on these paths wait longer for
siterig/short. Nothing on the box changes.🤖 Generated with Claude Code