Spec: commit pins for test requests exist as Longshot pull request 71; two risks in the planned /beanstalk flow #2
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This adds to the Spec and to the field notes in #1: one pointer to work that already exists, and two risks in the change announced in the team chat on 14 November. As announced: a BigBean writes
/beanstalkon a pull request, a model writes the test plan (which OS and GPU combinations are needed), the plan is posted on the pull request and handed to testers, and testers sign in to the forge from the Beanstalk app, which registers their machine.1. The commit pin for test requests already exists
The field notes (finding 2, and item 3 of "What we can do next") ask for
scripts/test_requests.pyto record the pull request's head at claim and with each result, and to show when a pull request has moved since it was tested, "only if nobody else has claimed this". Somebody has: MagicBeanDev/Longshot#71.What it does at its current head
b2c7f34b7f:showandlistmark a claim that was made for an earlier commit.It was tried on the live system on 14 November with a card on the pull request itself: a request, a claim refused without the label, the claim, the head moving under the claim, an update and the result (MagicBeanDev/Longshot#71 (comment)). The trial found one fault, a result filed under a stale claim's commit, which the current head fixes. It has 32 offline cases.
What it does not do, so nobody assumes it:
testing wantedlabel still approves a pull request, not a commit. A tester is told that the head moved, but the label is not withdrawn, so the bait-and-switch row of the threat model is only half closed.Both would be small changes on top of it. It is still marked work in progress while the build check of its newest head finishes. If the existing system is to be the seed of the coordinator, as the field notes suggest, this is the piece to look at first.
2. Risk: the sign-in
The spec says
farm-agent login"signs in through Forgejo OAuth2 and gets an agent token scoped to that account", and its review note 9 namesscripts/forge.py loginas the part to reuse.On this forge that sign-in has a property that will reach testers. Forgejo keeps one OAuth grant per user per application and refuses a refresh token once a newer one was issued. So a second machine that signs in or renews makes the first machine's refresh token stale, and the first is signed out within about an hour. The mechanism, with the lines in Forgejo's source, is in MagicBeanDev/Longshot#435. It was seen on 14 November between a Linux PC and a Mac on one account.
For the farm that means:
forge.py, every contributor who also tests loses theforge.pysign-in when the app renews, and the other way round.What would avoid it: use the forge sign-in once, to prove who the person is, and exchange it at once for a token that belongs to that one registered machine and that the coordinator issues and renews itself. The app then never keeps or refreshes the forge's own token. The quoted sentence may already mean exactly this. If so, one sentence in
docs/protocol.mdwould settle it.3. Risk: a plan written from the pull request's text
The spec's core rule is that a test plan is data and that nothing runs unless a maintainer approved that exact commit.
AGENTS.mdin this repository says that text from the forge is data, never instructions. A model that reads a pull request to write its plan reads text the author controls: the description, the comments, the diff, a.farm/test.toml.That cannot make a tester's PC run anything new, since the plan stays declarative. What it can steer is coverage. A description that says "only matters on Linux with NVIDIA", or text aimed at the model, can produce a plan that leaves out the hardware where the change breaks, and the pull request then carries a passing farm result. The flicker reported against recent nightlies on 14 November came from Windows PCs with NVIDIA cards. A plan without that pair would have passed. As built, the spec says a Windows machine is never offered farm jobs, so no plan can cover that pair yet.
Three small rules would keep the trigger a short command and still close this:
/beanstalkposts the plan and waits. Testing starts on a second word from the BigBean, for the same commit. One person, two looks.gpu/orhost/, at least one Windows and one Linux target and every GPU vendor the diff names.Not checked
README.mdandCONTRIBUTING.mdcall the project Beanstock and linkMagicBeanDev/Beanstock, which redirects toMagicBeanDev/Beanstalk.