@@ -5,6 +5,30 @@ performed changes to the source code of MathOptInterface.
55
66In each case, copy the checklist into the description of the pull request.
77
8+ ## Making a release
9+
10+ Use this checklist when making a release of the MathOptInterface repository.
11+
12+ ```
13+ ## Basic
14+
15+ - [ ] `version` field of `Project.toml` has been updated
16+ - If a breaking change, increment the MAJOR field and reset others to 0
17+ - If adding new features, increment the MINOR field and reset PATCH to 0
18+ - If adding bug fixes or documentation changes, increment the PATCH field
19+
20+ ## Documentation
21+
22+ - [ ] Add a new entry to `docs/src/changelog.md`, following existing style
23+
24+ ## Tests
25+
26+ - [ ] The `solver-tests.yml` GitHub action does not have unexpected failures.
27+ To run the action, go to:
28+ https://github.com/jump-dev/MathOptInterface.jl/actions/workflows/solver-tests.yml
29+ and click "Run workflow"
30+ ```
31+
832## Adding a new set
933
1034Use this checklist when adding a new set to the MathOptInterface repository.
@@ -33,7 +57,7 @@ Use this checklist when adding a new set to the MathOptInterface repository.
3357 along with an `## Example` block containing a `jldoctest`
3458 - [ ] Add the docstring to `docs/src/reference/standard_form.md`
3559 - [ ] Add the set to the relevant table in `docs/src/manual/standard_form.md`
36-
60+
3761## Tests
3862
3963 - [ ] Define a new `_set(::Type{S})` method in `src/Test/test_basic_constraint.jl`
@@ -51,3 +75,49 @@ Use this checklist when adding a new set to the MathOptInterface repository.
5175 - [ ] Add new tests to the `Test` submodule exercising your new set
5276 - [ ] Add new bridges to convert your set into more commonly used sets
5377```
78+
79+ ## Adding a new bridge
80+
81+ Use this checklist when adding a new bridge to the MathOptInterface repository.
82+
83+ The steps are mostly the same, but locations depend on whether the bridge is a
84+ ` Constraint ` , ` Objective ` , or ` Variable ` bridge. In each case below, replace
85+ ` XXX ` with the appropriate type of bridge.
86+
87+ ```
88+ ## Basic
89+
90+ - [ ] Create a new file in `src/Bridges/XXX/bridges`
91+ - [ ] Define the bridge, following existing examples. The name of the bridge
92+ struct must end in `Bridge`
93+ - [ ] Check if your bridge can be a subtype of [`MOI.Bridges.Constraint.SetMapBridge`](@ref)
94+ - [ ] Define a new `const` that is a `SingleBridgeOptimizer` wrapping the
95+ new bridge. The name of the const must be the name of the bridge, less
96+ the `Bridge` suffix
97+ - [ ] `include` the file in `src/Bridges/XXX/bridges/XXX.jl`
98+ - [ ] If the bridge should be enabled by default, add the bridge to
99+ `add_all_bridges` at the bottom of `src/Bridges/XXX/XXX.jl`
100+
101+ ## Tests
102+
103+ - [ ] Create a new file in the appropriate subdirectory of `tests/Bridges/XXX`
104+ - [ ] Use `MOI.Bridges.runtests` to test various inputs and outputs of the
105+ bridge
106+ - [ ] If, after opening the pull request to add the bridge, some lines are not
107+ covered by the tests, add additional bridge-specific tests to cover the
108+ untested lines.
109+
110+ ## Documentation
111+
112+ - [ ] Add a docstring which uses the same template as existing bridges.
113+ - [ ] Add the docstring to `docs/src/submodules/Bridges/list_of_bridges.md`
114+
115+ ## Final touch
116+
117+ If the bridge depends on run-time values of other variables and constraints in
118+ the model:
119+
120+ - [ ] Implement `MOI.Utilities.needs_final_touch(::Bridge)`
121+ - [ ] Implement `MOI.Utilities.final_touch(::Bridge, ::MOI.ModelLike)`
122+ - [ ] Ensure that `final_touch` can be called multiple times in a row
123+ ```
0 commit comments