-
Notifications
You must be signed in to change notification settings - Fork 11
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
Change --rebuild
to --skip
#114
Comments
Agree that skip and rebuild should be combined. This proposal, however, is still not very intuitive and potentially misses a few important scenarios: Example: This is a very challenging UI decision. |
We almost need something like:
We can also allow any combination of the above Example: |
@danielholanda maybe not as bad as you thought? Posting a full "truth table" below. It's a big table, but its intuitive to me what is supposed to happen in each case, and when I would use each setting.
In this specific example, the build state is S(uccessful), the benchmark state is F(ailed), and the user can apply Legend:
PS. a significant flaw with the above is: there is no way to re-run a benchmark that already succeeded, if the build succeeded. AKA the current behavior of |
This would work too, and I like that it grants more fine-grained control to the user. It's sort of related to #20 so it would be nice if we could get two birds with one stone. However, I just tried to figure out how all the assumed commands would work (e.g., "discover" is always assumed unless its explicit, "build" is assumed when "benchmark" is used) and I got quite confused with respect to the details of your I'm also not super happy with the RequirementsGoing back to first principles, the use cases we really want to support are:
In typical mode, commands like In debugging mode, something has gone wrong and I want control over everything so that I can quickly diagnose the problem. Something like
In mass evaluation mode, we need these behaviors:
And, finally, I never want to type Proposed solutionTBD... |
Design StudyEliminate: The evaluation commands would be:
The big rule here is that if you ask for something, by default it always happens regardless of the cache state.
Ok now we just need a way to change the default policy to achieve some of our desired scenarios from the requirements.
Ok so based on this, our
Based on that requirement, the following seems reasonably intuitive to me (especially since it is only really relevant to mass-evaluation): a new flag named
How it works in practiceI really like this because it feels like everything is in plain english, and the behavior is pretty obvious in all cases:
|
Problem statement:
rebuild
argument that gets passed into the Build Tool. It determines whether the build cache policy should be to rebuild the modelalways
.never
, orif_needed
.Proposed solution:
--rebuild
as a top-level turnkey argument. It will still be an argument tobuild_model()
, but the value ofrebuild=
will typically be set internally to turnkey based on the value of the skip policy.--skip
top-level turnkey argument. It determines whether various aspects of a turnkey evaluation should be skipped. It has the following settings:skip = attempted
: skip any build or benchmark that has been previously attempted (regardless of outcome). Specifics:rebuild = never
)skip = successful
: similar toattempted
, except that only successful operations are skipped.rebuild = never
)skip = failed
: similar toattempted
, except that only failed operations are skipped.rebuild = if_needed
)rebuild = if_needed
)skip = none
: cached build and benchmarks are ignored and the build and benchmark are always performed (same behavior asrebuild = always
)cc @danielholanda
The text was updated successfully, but these errors were encountered: