-
Notifications
You must be signed in to change notification settings - Fork 22
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
Variable pipelines #96
Comments
This issue has become stale because it has been open 60 days with no activity. The maintainers of this repo will remove this label during issue triage or it will be removed automatically after an update. Adding the |
This issue has become stale because it has been open 60 days with no activity. The maintainers of this repo will remove this label during issue triage or it will be removed automatically after an update. Adding the |
closed as obsolete |
Task
Write an RFC for resolution pipelines as a possible (extensible/observable) architecture for generating
Variable
s for resolution.Introduction
The deppy solver takes as input a slice of
Variable
s. AVariable
contains an unique ID and a slice ofConstraint
that models its relationships to otherVariable
s. The solver unwraps this set ofVariable
s into a boolean statement that is given as input to the internal SAT solver. With this mechanism, the deppy solver tries to determine the smallest set ofVariable
s such that all constraints are met.Variable
s are derived byVariableSource
s from domain specific objects (e.g. user intents, packages, bundles, the cluster, etc.) whose properties drive the conversion between domain object andVariable
including all of theVariable
's constraints. Here's an example:Required Package
A required package
Variable
represents the user's intent to install a package, optionally within a semver range and/or specific channel. It could be defined in code as follows:Where
required-package/foo
is the ID of the variable, and the dependency constraint references all bundles within the channel/semver range. The dependency constraint would look roughly like:~ required-package/foo ∨ bundle_1 ∨ bundle_2 ∨ ... ∨ bundle_n_,
in other words, either at least one of the bundle variables is true OR required-package/foo is false.
Variable Generation Process
The current variable generation process is as follows:
Operator
create a required package variable with the filtered set of bundlesThis set of variables will be passed to the resolver for evaluation.
Problem
We need a way to produce the
Variable
s and theirConstraint
s, from a variety of sources (e.g. resources, cluster(s), catalog source(s), etc.). It needs to be easy to observe theVariable
creation process. This is important for debugging and making it easier to understand why the resolver is behaving in a particular way. It should also be extensible. We want to avoid going deep into the code in order to add a newVariableSource
.Requirements
Acceptance Criteria
The text was updated successfully, but these errors were encountered: