-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How do we compute commit trustworthiness? #9
Comments
I feel like those "thoroughness" and other fields should be treated like a "priority" field. IMHO, the only fields that should matter are "result" fields. Hence, "no !, more + than - reviews" seems GTM, assuming your own signatures in your local review-branch can override decisions. I probably should change the ordering of those fields in the syntax and examples to make that clear, that's a new TODO. |
Overriding is not safe since a malicious server could always replay old signatures for a commit. Once you have signed on a given commit, there is no safe way to issuing a new signature/review safely for that commit. Personally I don't think anyone should sign anything until they are ready to bless it to move forward in the respective workflow for a given repo. A malicious server can always drop negative reviews to get bad code shopped but has no motivation to drop positive ones except to create a DoS. |
I mean that your own signature in a local branch can override upstream signatures that are older than it. No server involved.
Overriding is not safe since a malicious server could always replay old signatures for a commit. Once you have signed on a given commit, there is no safe way to issuing a new signature/review safely for that commit.
No, in `design.org` the review-branch signing, commit and author date ordering rules, and "serial number" handling together prevent that from happening.
In `design.org` malicious server could only either prevent some reviewers from issuing new reviews or show some reviewers a branch which contains their own reviews only starting from some point in history. But those reviewers themselves would immediately notice as their public review-branch would have diverged from the upstream one as soon as they fetch the upstream one anonymously and/or out-of-band.
|
@oxij Well, the “no !, more + than - reviews” has the issue that it makes it impossible to trust some people more than others (eg. I'd like to trust nixpkgs committers a bit, but not as much as I'd trust people I personally trust, so there'd need to be 2 reviews by nixpkgs committers for me to consider it OK, and only 1 by a person I personally trust). Overall I think the scheme should also support use cases like the one given by @lrvick in #5 (comment):
This would still require something a bit more complex than the thing I proposed, though. Also, I'm not sure what the point of the |
OK, so new proposal heavily based on both of your suggestions:
What do you think about it? I think this fits the bill for our three use cases (except for @lrvick's for which support is incomplete):
Does someone see an idea to handle @lrvick's use case better without introducing too much complexity? Disjunction-of-conjunctions might be a possibility, but… |
When verifying a commit, we have a list of reviews that all have:
context-understanding
, adiff-understanding
, and athoroughness
levelresult
(that can be taken fromresult-otherwise
, see RFC)(I don't think
priority
should be taken into account here… actually, see #8)How do we compute, from this list of (trust in reviewer, work done by reviewer, result) triplets, the binary result “do I trust this commit”?
Currently my thinking would be:
For each review,
context-understanding
,diff-understanding
andthoroughness
, and consider it as the level of work the reviewer did for their review. Convert to integer between 1 and 3 (higher is more work), hereafter namedwork
trust
work
withtrust
. This gives a value between 1 and 9 (higher is better) that represents the confidence the user has towards this reviewer's review, hereafter namedconfidence
!
, then end result is!
-
, then removeconfidence
from the confidence accumulator+
, then addconfidence
to the confidence accumulator0
, then ignore reviewThen, if the confidence accumulator exceeds the configured required confidence level, then accept the review.
Drawbacks:
If you have any idea of how to handle these drawbacks… I'd be glad to hear them :)
/cc @oxij @lrvick
The text was updated successfully, but these errors were encountered: