Re: Bodhi 8.2 in production: changes to karma requirements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 2024-11-17 at 18:35 +0100, Kevin Kofler via devel wrote:
> Kevin Kofler via devel wrote:
> > PS: I suspect the documentation was actually just an attempt to document
> > the previous broken Bodhi policy implementation. (See
> > https://github.com/fedora-infra/bodhi/issues/772 and
> > https://github.com/fedora-infra/bodhi/issues/1033 – both got closed, but
> > the issue was never properly fixed.)
> 
> PPS: Sorry, one more thing, I have to correct myself:
> 
> Actually, the issue was eventually fixed in that Bodhi has at some point 
> started allowing to set the stable threshold even when unchecking the 
> autopush checkbox, so it was possible before 8.2 to manually push updates to 
> stable at +1.

> Though I still do not understand how a threshold makes any sense at all for 
> manual pushes. Manual pushes should just always require only the minimum 
> required by policy, as the person setting the threshold (to any allowed 
> value) is the same as the one doing the push.
> 
> Settable thresholds have only ever made sense for automatic pushes. (So the 
> bug was not that the threshold was not settable for manual pushes, but that 
> the non-settable threshold was fixed to the wrong value, the default for 
> automatic pushes (+3) instead of the minimum allowed (+1). Which is why I 
> still do not consider this properly fixed.)

Yes, to be clear, in rewriting this code, I had the same opinion as
you. The configurable thresholds only make sense as applying to
autopush. There is no reason I can see to consider them as applying to
manual push.

To me, as to you, the only constraint on manual push that makes sense
is a policy minimum karma for manual pushes, which naturally cannot be
edited.

As rewritten, the minimum requirements for manual push are different
concepts from the autopush thresholds and are now more clearly defined
as such in Bodhi's code. The per-update editable thresholds now clearly
(in the code) have absolutely no input into the decision as to whether
an update can be manually pushed stable. Whatever those thresholds are
set to, if the update meets the currently-configured policy minimum
requirements for stable push (and any gating requirements), it can be
pushed; if not, it can't. You can verify that in the code, if you like.
So I think your 'issue' as you describe it above is addressed in 8.2. 

The situation in the old code was actually rather more complicated, and
weird, than "the non-settable threshold was fixed to the wrong value" -
there were multiple check functions that applied different logic to
different operations, which is why you could sometimes push something
via the CLI that you could not push via the web UI, for e.g.

> Still, somehow a +2 threshold made its way into the documentation, and I am 
> still wondering on what base that was encoded there.

That is in fact an interesting question, now I dig into it. Zbigniew
seems to have done substantial rewrites on the karma requirements in
2021. These were:

https://pagure.io/fesco/fesco-docs/c/e57f002ee55810d1636e4460fe0d2c3515897c0b?branch=main
https://pagure.io/fesco/fesco-docs/c/19bf26cef5d5e2a8d744ea28d8d54ec5374112e9?branch=main
https://pagure.io/fesco/fesco-docs/c/33c510e462f0b4118a716a89315f6afef6f5354c?branch=main

The "some more" in the first commit description refers to
997bd212d760f223ecaa98cbc5e020ad35754b01 by Kevin, which made
substantial updates to the policy but did not change the karma stuff
AFAICS. As of that commit, these were the requirements:

u-t activation to Beta release:
critpath: "*MUST* either get one +1 karma *OR* spend at least 14 days
in updates-testing and have no negative karma"
non-critpath: "*MUST* either reach the prescribed karma level for that
update *OR* spend at least 3 days in updates-testing"

Beta to Final:
critpath: "*MUST* either have a sum of +2 karma *OR* spend at least 14
days in updates-testing and have no negative karma"
non-critpath: "*MUST* either reach the prescribed karma level for that
update *OR* spend at least 7 days in updates-testing"

After Final:
critpath: "needs to have either a Bodhi karma sum of 2 *OR* It must
spend at least 14 days in updates-testing *AND* have no negative Bodhi
karma points"
non-critpath: "*MUST* either [reach the critpath requirements] *OR*
reach the positive Bodhi karma threshold specified by the updates
submitter *OR* spend some minimum amount of time in updates-testing,
currently one week"

The "after Final" and "Beta to Final" requirements are effectively the
same, just written differently. At this point, we don't actually have
any explicit minimum karma requirement for non-critpath updates; it's
phrased as "reach the prescribed karma level for that update", which
you and I have both noted doesn't really make any sense, and is
dependent on the behavior of the tool. *Effectively*, given Bodhi's
behavior at this point, this more or less meant the minimum was 1.

After Zbigniew's first commit, they looked like this:

"* The update becomes eligible for being pushed manually after reaching
the minimum "Stable by Karma" threshold OR the minimum "Stable by Time"
threshold. The maintainer is free to set the thresholds, but they
cannot be lower than the minimum values described below, enforced by
Bodhi."

"=== Non-critical path update thresholds

Stable by Karma: minimum +1, default +3 +
Unstable by Karma: maximum -1, default -3 +
Stable by Time (days): minimum 3, default 3, between <<updates-testing-
activation>> and <<beta-freeze>> +
minimum 7, default 7, after <<beta-freeze>>

=== Critical path and EPEL update thresholds

Stable by Karma: minimum +2, default +3 +
Unstable by Karma: maximum -1, default -3 +
Stable by Time (days): minimum 3, default 3, between <<updates-testing-
activation>> and <<beta-freeze>> +
minimum 14, default 14, after <<beta-freeze>>"

Note that we now have an explicit minimum for non-critpath (though
defined in a somewhat odd way), and the "no negative karma" requirement
for critpath has disappeared.

After his second commit, the minimum definitions were changed to this:

"=== Non-critical path update thresholds

Stable by Karma: minimum +1, default +3, between <<updates-testing-
activation>> and <<beta-freeze>> +
                       minimum +2, default +3, after <<beta-freeze>> +
Unstable by Karma: maximum -1, default -3 +
Stable by Time (days): minimum 3, default 3, between <<updates-testing-
activation>> and <<beta-freeze>> +
                       minimum 7, default 7, after <<beta-freeze>>

=== Critical path and EPEL update thresholds

Stable by Karma: minimum +1, default +3, between <<updates-testing-
activation>> and <<beta-freeze>> +
                       minimum +2, default +3, after <<beta-freeze>> +
Unstable by Karma: maximum -1, default -3 +
Stable by Time (days): minimum 3, default 3, between <<updates-testing-
activation>> and <<beta-freeze>> +
                       minimum 14, default 14, after <<beta-freeze>>"

*This* is the point at which a minimum of +2 was introduced for non-
critpath updates (after Beta freeze). The commit message does not
reference any FESCo decision. It says "This matches what bodhi seems to
implement and the text before my changes said", but I don't believe
either of those things is accurate: it does not really match what the
text before his changes said (it did not clearly prescribe +2 for non-
critpath), and it does not really match old Bodhi behaviour (which was
weird and inconsistent, but *could* be made to push a non-critpath
update with only +1 karma).

The third commit just tweaked the preamble text a bit, it didn't
functionally change any of the requirements.

So on the whole, I think you have a good point here, thanks for raising
it. I will file a FESCo ticket and ask for them to consider the history
here and decide if they want to make any changes based on this
evaluation.

I think the current policy is written in a much more sensible and
clearer form than the old one was, but the actual changes to the
requirements that happened along the way may have been unintentional.
-- 
Adam Williamson (he/him/his)
Fedora QA
Fedora Chat: @adamwill:fedora.im | Mastodon: @adamw@xxxxxxxxxxxxx
https://www.happyassassin.net




-- 
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux