math-modeling-competition-kit 0.1.0a1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- math_modeling_competition_kit-0.1.0a1/LICENSE +21 -0
- math_modeling_competition_kit-0.1.0a1/PKG-INFO +163 -0
- math_modeling_competition_kit-0.1.0a1/README.md +140 -0
- math_modeling_competition_kit-0.1.0a1/pyproject.toml +40 -0
- math_modeling_competition_kit-0.1.0a1/setup.cfg +4 -0
- math_modeling_competition_kit-0.1.0a1/src/math_modeling_competition_kit.egg-info/PKG-INFO +163 -0
- math_modeling_competition_kit-0.1.0a1/src/math_modeling_competition_kit.egg-info/SOURCES.txt +48 -0
- math_modeling_competition_kit-0.1.0a1/src/math_modeling_competition_kit.egg-info/dependency_links.txt +1 -0
- math_modeling_competition_kit-0.1.0a1/src/math_modeling_competition_kit.egg-info/entry_points.txt +3 -0
- math_modeling_competition_kit-0.1.0a1/src/math_modeling_competition_kit.egg-info/top_level.txt +1 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/__init__.py +5 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/benchmark/__init__.py +23 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/benchmark/core.py +586 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/cli.py +465 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/coordination/__init__.py +35 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/coordination/core.py +565 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/optimization/__init__.py +1 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/paper.py +418 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/provenance/__init__.py +17 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/provenance/registry.py +385 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/reporting/__init__.py +1 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/reproducibility/__init__.py +12 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/reproducibility/manifest.py +90 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/reproducibility/runner.py +193 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/rolling_horizon/__init__.py +1 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/scaffold/__init__.py +36 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/scaffold/project.py +421 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/scenarios/__init__.py +1 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/submission/__init__.py +5 -0
- math_modeling_competition_kit-0.1.0a1/src/mmkit/submission/gate.py +208 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_benchmark.py +131 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_benchmark_cli.py +68 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_cli.py +42 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_coordination.py +171 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_coordination_cli.py +85 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_distribution_audit.py +73 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_paper.py +133 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_paper_cli.py +60 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_provenance.py +182 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_provenance_cli.py +89 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_publish_workflow_contract.py +36 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_release_metadata.py +21 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_release_tag.py +42 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_reproducibility_manifest.py +37 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_reproducibility_runner.py +46 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_scaffold.py +101 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_scaffold_benchmark.py +39 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_scaffold_cli.py +77 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_scaffold_coordination.py +33 -0
- math_modeling_competition_kit-0.1.0a1/tests/test_submission_gate.py +45 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 jzhao0
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: math-modeling-competition-kit
|
|
3
|
+
Version: 0.1.0a1
|
|
4
|
+
Summary: Reusable engineering infrastructure for mathematical modeling competitions
|
|
5
|
+
Author: jzhao0
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/jzhao0/math-modeling-competition-kit
|
|
8
|
+
Project-URL: Repository, https://github.com/jzhao0/math-modeling-competition-kit
|
|
9
|
+
Project-URL: Issues, https://github.com/jzhao0/math-modeling-competition-kit/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/jzhao0/math-modeling-competition-kit/tree/main/docs
|
|
11
|
+
Keywords: mathematical-modeling,reproducibility,competition,research-engineering
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# Math Modeling Competition Kit
|
|
25
|
+
|
|
26
|
+
A reusable engineering toolkit for mathematical modeling competitions.
|
|
27
|
+
|
|
28
|
+
## Release status
|
|
29
|
+
|
|
30
|
+
The current public line is preparing **`v0.1.0a1`**. This release is intentionally an **engineering core**, not an algorithm encyclopedia.
|
|
31
|
+
|
|
32
|
+
The `v0.1.x` public scope is distilled from the completed CUMCM 2026 development cycle and subsequent generic hardening of those engineering capabilities. It does **not** publish private contest artifacts, active future-competition training, or competition-specific tactics.
|
|
33
|
+
|
|
34
|
+
> Core principle: **Choose and validate the model early. Once the model is correct, optimize the algorithm and engineering implementation instead of endlessly replacing the model.**
|
|
35
|
+
|
|
36
|
+
## What v0.1 provides
|
|
37
|
+
|
|
38
|
+
- deterministic workspace manifests;
|
|
39
|
+
- bounded clean-room execution;
|
|
40
|
+
- generic final-submission engineering audit;
|
|
41
|
+
- claim/evidence provenance locks and stale detection;
|
|
42
|
+
- cross-platform competition project scaffold;
|
|
43
|
+
- deterministic LaTeX source/dependency/citation audit;
|
|
44
|
+
- bounded shell-free paper build with PDF hash evidence;
|
|
45
|
+
- revision-guarded multi-agent task state and role leases;
|
|
46
|
+
- compact handoff, stale-lease reporting, writer/reviewer separation, and two-failure circuit breaking;
|
|
47
|
+
- post-model-freeze warmup/repeated-run runtime benchmarking;
|
|
48
|
+
- explicit runtime regression thresholds, environment-drift reporting, and output-identity locks;
|
|
49
|
+
- Windows + Ubuntu CI on Python 3.11 and 3.13.
|
|
50
|
+
|
|
51
|
+
Reusable modeling modules such as rolling-horizon engines, scenario reduction, or solver abstractions are **not part of v0.1 unless repeated real-project need has been established and the module has separately passed public-release review**.
|
|
52
|
+
|
|
53
|
+
## Installation
|
|
54
|
+
|
|
55
|
+
From a source checkout:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
python -m pip install .
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
After the first PyPI release is explicitly approved and published:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
python -m pip install math-modeling-competition-kit
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The command-line entry point is:
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
mmkit --help
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Workflow
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
Problem understanding
|
|
77
|
+
-> Model design
|
|
78
|
+
-> Model validation
|
|
79
|
+
-> MODEL_FROZEN
|
|
80
|
+
-> Correct implementation
|
|
81
|
+
-> Clean-room reproduction
|
|
82
|
+
-> Algorithm/runtime optimization
|
|
83
|
+
-> Production core
|
|
84
|
+
-> Paper/figures/tables
|
|
85
|
+
-> Final submission gate
|
|
86
|
+
-> Hash/freeze/submit
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Quick start
|
|
90
|
+
|
|
91
|
+
Create a generic workspace without assuming a specific future contest:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
mmkit init demo-project --competition CUSTOM --year 2027
|
|
95
|
+
cd demo-project
|
|
96
|
+
mmkit coord status .
|
|
97
|
+
mmkit reproduce . config/run_manifest.json --json coordination/reproduction.json
|
|
98
|
+
mmkit benchmark run . config/benchmark.json --json coordination/benchmark.json
|
|
99
|
+
mmkit paper init .
|
|
100
|
+
mmkit paper audit . paper/main.tex --json coordination/paper_audit.json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
After a correct implementation is selected, lock an explicit runtime/output baseline before optimizing it:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
mmkit benchmark lock coordination/benchmark.json \
|
|
107
|
+
--output coordination/benchmark.baseline.json \
|
|
108
|
+
--max-regression-percent 15
|
|
109
|
+
|
|
110
|
+
mmkit benchmark compare \
|
|
111
|
+
coordination/benchmark.json \
|
|
112
|
+
coordination/benchmark.baseline.json \
|
|
113
|
+
--json coordination/benchmark.compare.json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
When a TeX runtime is installed and the build contract is configured:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
mmkit paper build . config/paper_build.json --json coordination/paper_build.json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Documentation
|
|
123
|
+
|
|
124
|
+
See:
|
|
125
|
+
|
|
126
|
+
- `docs/PROJECT_SCAFFOLD.md` — workspace contract;
|
|
127
|
+
- `docs/MVP_REPRODUCIBILITY_FINAL_GATE.md` — clean-room and final-gate semantics;
|
|
128
|
+
- `docs/PROVENANCE_MVP.md` — claim/evidence locking;
|
|
129
|
+
- `docs/PAPER_PIPELINE_MVP.md` — paper auditing/build semantics;
|
|
130
|
+
- `docs/AGENT_COORDINATION.md` — multi-agent checkpoint/handoff semantics;
|
|
131
|
+
- `docs/ALGORITHM_RUNTIME_BENCHMARKING.md` — post-model-freeze performance measurement;
|
|
132
|
+
- `docs/RELEASE_SCOPE_V0.1.md` — exact first-release publication boundary;
|
|
133
|
+
- `docs/RELEASE_CHECKLIST_V0.1.md` — release gate and remaining external actions.
|
|
134
|
+
|
|
135
|
+
## Repository structure
|
|
136
|
+
|
|
137
|
+
- `src/mmkit/` — reusable Python package;
|
|
138
|
+
- `tools/` — release/final-gate and audit utilities;
|
|
139
|
+
- `coordination/` — public coordination contracts;
|
|
140
|
+
- `tests/` — automated tests;
|
|
141
|
+
- `docs/` — architecture, contracts, roadmap and release documents;
|
|
142
|
+
- `migration_sources/` — frozen historical migration evidence; not product code and not part of public distribution archives.
|
|
143
|
+
|
|
144
|
+
## Design principles
|
|
145
|
+
|
|
146
|
+
1. Model selection happens early.
|
|
147
|
+
2. Correctness comes before performance.
|
|
148
|
+
3. After correctness, optimize algorithms and implementation before changing models.
|
|
149
|
+
4. Research pipelines and production pipelines must be separated.
|
|
150
|
+
5. Every important paper claim should have a traceable producer.
|
|
151
|
+
6. Final results must be reproducible from a clean environment.
|
|
152
|
+
7. Only one final integrator may write to the final submission directory.
|
|
153
|
+
8. New research routes stop before the submission deadline.
|
|
154
|
+
9. Submission artifacts are validated, hashed and frozen.
|
|
155
|
+
10. Postmortems are converted into reusable tooling only after privacy/provenance/reuse review.
|
|
156
|
+
|
|
157
|
+
## Publication boundary
|
|
158
|
+
|
|
159
|
+
Future competition training and new competition-specific work are private by default. They are not copied into this public repository during active preparation or competition. Any later publication requires a separate post-competition distillation, provenance/license review, tests, PR, and explicit human publication decision.
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
MIT
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Math Modeling Competition Kit
|
|
2
|
+
|
|
3
|
+
A reusable engineering toolkit for mathematical modeling competitions.
|
|
4
|
+
|
|
5
|
+
## Release status
|
|
6
|
+
|
|
7
|
+
The current public line is preparing **`v0.1.0a1`**. This release is intentionally an **engineering core**, not an algorithm encyclopedia.
|
|
8
|
+
|
|
9
|
+
The `v0.1.x` public scope is distilled from the completed CUMCM 2026 development cycle and subsequent generic hardening of those engineering capabilities. It does **not** publish private contest artifacts, active future-competition training, or competition-specific tactics.
|
|
10
|
+
|
|
11
|
+
> Core principle: **Choose and validate the model early. Once the model is correct, optimize the algorithm and engineering implementation instead of endlessly replacing the model.**
|
|
12
|
+
|
|
13
|
+
## What v0.1 provides
|
|
14
|
+
|
|
15
|
+
- deterministic workspace manifests;
|
|
16
|
+
- bounded clean-room execution;
|
|
17
|
+
- generic final-submission engineering audit;
|
|
18
|
+
- claim/evidence provenance locks and stale detection;
|
|
19
|
+
- cross-platform competition project scaffold;
|
|
20
|
+
- deterministic LaTeX source/dependency/citation audit;
|
|
21
|
+
- bounded shell-free paper build with PDF hash evidence;
|
|
22
|
+
- revision-guarded multi-agent task state and role leases;
|
|
23
|
+
- compact handoff, stale-lease reporting, writer/reviewer separation, and two-failure circuit breaking;
|
|
24
|
+
- post-model-freeze warmup/repeated-run runtime benchmarking;
|
|
25
|
+
- explicit runtime regression thresholds, environment-drift reporting, and output-identity locks;
|
|
26
|
+
- Windows + Ubuntu CI on Python 3.11 and 3.13.
|
|
27
|
+
|
|
28
|
+
Reusable modeling modules such as rolling-horizon engines, scenario reduction, or solver abstractions are **not part of v0.1 unless repeated real-project need has been established and the module has separately passed public-release review**.
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
From a source checkout:
|
|
33
|
+
|
|
34
|
+
```text
|
|
35
|
+
python -m pip install .
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
After the first PyPI release is explicitly approved and published:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
python -m pip install math-modeling-competition-kit
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The command-line entry point is:
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
mmkit --help
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Workflow
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
Problem understanding
|
|
54
|
+
-> Model design
|
|
55
|
+
-> Model validation
|
|
56
|
+
-> MODEL_FROZEN
|
|
57
|
+
-> Correct implementation
|
|
58
|
+
-> Clean-room reproduction
|
|
59
|
+
-> Algorithm/runtime optimization
|
|
60
|
+
-> Production core
|
|
61
|
+
-> Paper/figures/tables
|
|
62
|
+
-> Final submission gate
|
|
63
|
+
-> Hash/freeze/submit
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Quick start
|
|
67
|
+
|
|
68
|
+
Create a generic workspace without assuming a specific future contest:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
mmkit init demo-project --competition CUSTOM --year 2027
|
|
72
|
+
cd demo-project
|
|
73
|
+
mmkit coord status .
|
|
74
|
+
mmkit reproduce . config/run_manifest.json --json coordination/reproduction.json
|
|
75
|
+
mmkit benchmark run . config/benchmark.json --json coordination/benchmark.json
|
|
76
|
+
mmkit paper init .
|
|
77
|
+
mmkit paper audit . paper/main.tex --json coordination/paper_audit.json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
After a correct implementation is selected, lock an explicit runtime/output baseline before optimizing it:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
mmkit benchmark lock coordination/benchmark.json \
|
|
84
|
+
--output coordination/benchmark.baseline.json \
|
|
85
|
+
--max-regression-percent 15
|
|
86
|
+
|
|
87
|
+
mmkit benchmark compare \
|
|
88
|
+
coordination/benchmark.json \
|
|
89
|
+
coordination/benchmark.baseline.json \
|
|
90
|
+
--json coordination/benchmark.compare.json
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
When a TeX runtime is installed and the build contract is configured:
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
mmkit paper build . config/paper_build.json --json coordination/paper_build.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Documentation
|
|
100
|
+
|
|
101
|
+
See:
|
|
102
|
+
|
|
103
|
+
- `docs/PROJECT_SCAFFOLD.md` — workspace contract;
|
|
104
|
+
- `docs/MVP_REPRODUCIBILITY_FINAL_GATE.md` — clean-room and final-gate semantics;
|
|
105
|
+
- `docs/PROVENANCE_MVP.md` — claim/evidence locking;
|
|
106
|
+
- `docs/PAPER_PIPELINE_MVP.md` — paper auditing/build semantics;
|
|
107
|
+
- `docs/AGENT_COORDINATION.md` — multi-agent checkpoint/handoff semantics;
|
|
108
|
+
- `docs/ALGORITHM_RUNTIME_BENCHMARKING.md` — post-model-freeze performance measurement;
|
|
109
|
+
- `docs/RELEASE_SCOPE_V0.1.md` — exact first-release publication boundary;
|
|
110
|
+
- `docs/RELEASE_CHECKLIST_V0.1.md` — release gate and remaining external actions.
|
|
111
|
+
|
|
112
|
+
## Repository structure
|
|
113
|
+
|
|
114
|
+
- `src/mmkit/` — reusable Python package;
|
|
115
|
+
- `tools/` — release/final-gate and audit utilities;
|
|
116
|
+
- `coordination/` — public coordination contracts;
|
|
117
|
+
- `tests/` — automated tests;
|
|
118
|
+
- `docs/` — architecture, contracts, roadmap and release documents;
|
|
119
|
+
- `migration_sources/` — frozen historical migration evidence; not product code and not part of public distribution archives.
|
|
120
|
+
|
|
121
|
+
## Design principles
|
|
122
|
+
|
|
123
|
+
1. Model selection happens early.
|
|
124
|
+
2. Correctness comes before performance.
|
|
125
|
+
3. After correctness, optimize algorithms and implementation before changing models.
|
|
126
|
+
4. Research pipelines and production pipelines must be separated.
|
|
127
|
+
5. Every important paper claim should have a traceable producer.
|
|
128
|
+
6. Final results must be reproducible from a clean environment.
|
|
129
|
+
7. Only one final integrator may write to the final submission directory.
|
|
130
|
+
8. New research routes stop before the submission deadline.
|
|
131
|
+
9. Submission artifacts are validated, hashed and frozen.
|
|
132
|
+
10. Postmortems are converted into reusable tooling only after privacy/provenance/reuse review.
|
|
133
|
+
|
|
134
|
+
## Publication boundary
|
|
135
|
+
|
|
136
|
+
Future competition training and new competition-specific work are private by default. They are not copied into this public repository during active preparation or competition. Any later publication requires a separate post-competition distillation, provenance/license review, tests, PR, and explicit human publication decision.
|
|
137
|
+
|
|
138
|
+
## License
|
|
139
|
+
|
|
140
|
+
MIT
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "math-modeling-competition-kit"
|
|
7
|
+
version = "0.1.0a1"
|
|
8
|
+
description = "Reusable engineering infrastructure for mathematical modeling competitions"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [{name = "jzhao0"}]
|
|
14
|
+
keywords = ["mathematical-modeling", "reproducibility", "competition", "research-engineering"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 3 - Alpha",
|
|
17
|
+
"Intended Audience :: Science/Research",
|
|
18
|
+
"Operating System :: OS Independent",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.13",
|
|
22
|
+
"Topic :: Scientific/Engineering :: Mathematics",
|
|
23
|
+
]
|
|
24
|
+
dependencies = []
|
|
25
|
+
|
|
26
|
+
[project.urls]
|
|
27
|
+
Homepage = "https://github.com/jzhao0/math-modeling-competition-kit"
|
|
28
|
+
Repository = "https://github.com/jzhao0/math-modeling-competition-kit"
|
|
29
|
+
Issues = "https://github.com/jzhao0/math-modeling-competition-kit/issues"
|
|
30
|
+
Documentation = "https://github.com/jzhao0/math-modeling-competition-kit/tree/main/docs"
|
|
31
|
+
|
|
32
|
+
[project.scripts]
|
|
33
|
+
mmkit = "mmkit.cli:main"
|
|
34
|
+
mmkit-final-gate = "mmkit.submission.gate:main"
|
|
35
|
+
|
|
36
|
+
[tool.setuptools.packages.find]
|
|
37
|
+
where = ["src"]
|
|
38
|
+
|
|
39
|
+
[tool.setuptools]
|
|
40
|
+
package-dir = {"" = "src"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: math-modeling-competition-kit
|
|
3
|
+
Version: 0.1.0a1
|
|
4
|
+
Summary: Reusable engineering infrastructure for mathematical modeling competitions
|
|
5
|
+
Author: jzhao0
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/jzhao0/math-modeling-competition-kit
|
|
8
|
+
Project-URL: Repository, https://github.com/jzhao0/math-modeling-competition-kit
|
|
9
|
+
Project-URL: Issues, https://github.com/jzhao0/math-modeling-competition-kit/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/jzhao0/math-modeling-competition-kit/tree/main/docs
|
|
11
|
+
Keywords: mathematical-modeling,reproducibility,competition,research-engineering
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
|
|
24
|
+
# Math Modeling Competition Kit
|
|
25
|
+
|
|
26
|
+
A reusable engineering toolkit for mathematical modeling competitions.
|
|
27
|
+
|
|
28
|
+
## Release status
|
|
29
|
+
|
|
30
|
+
The current public line is preparing **`v0.1.0a1`**. This release is intentionally an **engineering core**, not an algorithm encyclopedia.
|
|
31
|
+
|
|
32
|
+
The `v0.1.x` public scope is distilled from the completed CUMCM 2026 development cycle and subsequent generic hardening of those engineering capabilities. It does **not** publish private contest artifacts, active future-competition training, or competition-specific tactics.
|
|
33
|
+
|
|
34
|
+
> Core principle: **Choose and validate the model early. Once the model is correct, optimize the algorithm and engineering implementation instead of endlessly replacing the model.**
|
|
35
|
+
|
|
36
|
+
## What v0.1 provides
|
|
37
|
+
|
|
38
|
+
- deterministic workspace manifests;
|
|
39
|
+
- bounded clean-room execution;
|
|
40
|
+
- generic final-submission engineering audit;
|
|
41
|
+
- claim/evidence provenance locks and stale detection;
|
|
42
|
+
- cross-platform competition project scaffold;
|
|
43
|
+
- deterministic LaTeX source/dependency/citation audit;
|
|
44
|
+
- bounded shell-free paper build with PDF hash evidence;
|
|
45
|
+
- revision-guarded multi-agent task state and role leases;
|
|
46
|
+
- compact handoff, stale-lease reporting, writer/reviewer separation, and two-failure circuit breaking;
|
|
47
|
+
- post-model-freeze warmup/repeated-run runtime benchmarking;
|
|
48
|
+
- explicit runtime regression thresholds, environment-drift reporting, and output-identity locks;
|
|
49
|
+
- Windows + Ubuntu CI on Python 3.11 and 3.13.
|
|
50
|
+
|
|
51
|
+
Reusable modeling modules such as rolling-horizon engines, scenario reduction, or solver abstractions are **not part of v0.1 unless repeated real-project need has been established and the module has separately passed public-release review**.
|
|
52
|
+
|
|
53
|
+
## Installation
|
|
54
|
+
|
|
55
|
+
From a source checkout:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
python -m pip install .
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
After the first PyPI release is explicitly approved and published:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
python -m pip install math-modeling-competition-kit
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The command-line entry point is:
|
|
68
|
+
|
|
69
|
+
```text
|
|
70
|
+
mmkit --help
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Workflow
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
Problem understanding
|
|
77
|
+
-> Model design
|
|
78
|
+
-> Model validation
|
|
79
|
+
-> MODEL_FROZEN
|
|
80
|
+
-> Correct implementation
|
|
81
|
+
-> Clean-room reproduction
|
|
82
|
+
-> Algorithm/runtime optimization
|
|
83
|
+
-> Production core
|
|
84
|
+
-> Paper/figures/tables
|
|
85
|
+
-> Final submission gate
|
|
86
|
+
-> Hash/freeze/submit
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Quick start
|
|
90
|
+
|
|
91
|
+
Create a generic workspace without assuming a specific future contest:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
mmkit init demo-project --competition CUSTOM --year 2027
|
|
95
|
+
cd demo-project
|
|
96
|
+
mmkit coord status .
|
|
97
|
+
mmkit reproduce . config/run_manifest.json --json coordination/reproduction.json
|
|
98
|
+
mmkit benchmark run . config/benchmark.json --json coordination/benchmark.json
|
|
99
|
+
mmkit paper init .
|
|
100
|
+
mmkit paper audit . paper/main.tex --json coordination/paper_audit.json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
After a correct implementation is selected, lock an explicit runtime/output baseline before optimizing it:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
mmkit benchmark lock coordination/benchmark.json \
|
|
107
|
+
--output coordination/benchmark.baseline.json \
|
|
108
|
+
--max-regression-percent 15
|
|
109
|
+
|
|
110
|
+
mmkit benchmark compare \
|
|
111
|
+
coordination/benchmark.json \
|
|
112
|
+
coordination/benchmark.baseline.json \
|
|
113
|
+
--json coordination/benchmark.compare.json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
When a TeX runtime is installed and the build contract is configured:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
mmkit paper build . config/paper_build.json --json coordination/paper_build.json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Documentation
|
|
123
|
+
|
|
124
|
+
See:
|
|
125
|
+
|
|
126
|
+
- `docs/PROJECT_SCAFFOLD.md` — workspace contract;
|
|
127
|
+
- `docs/MVP_REPRODUCIBILITY_FINAL_GATE.md` — clean-room and final-gate semantics;
|
|
128
|
+
- `docs/PROVENANCE_MVP.md` — claim/evidence locking;
|
|
129
|
+
- `docs/PAPER_PIPELINE_MVP.md` — paper auditing/build semantics;
|
|
130
|
+
- `docs/AGENT_COORDINATION.md` — multi-agent checkpoint/handoff semantics;
|
|
131
|
+
- `docs/ALGORITHM_RUNTIME_BENCHMARKING.md` — post-model-freeze performance measurement;
|
|
132
|
+
- `docs/RELEASE_SCOPE_V0.1.md` — exact first-release publication boundary;
|
|
133
|
+
- `docs/RELEASE_CHECKLIST_V0.1.md` — release gate and remaining external actions.
|
|
134
|
+
|
|
135
|
+
## Repository structure
|
|
136
|
+
|
|
137
|
+
- `src/mmkit/` — reusable Python package;
|
|
138
|
+
- `tools/` — release/final-gate and audit utilities;
|
|
139
|
+
- `coordination/` — public coordination contracts;
|
|
140
|
+
- `tests/` — automated tests;
|
|
141
|
+
- `docs/` — architecture, contracts, roadmap and release documents;
|
|
142
|
+
- `migration_sources/` — frozen historical migration evidence; not product code and not part of public distribution archives.
|
|
143
|
+
|
|
144
|
+
## Design principles
|
|
145
|
+
|
|
146
|
+
1. Model selection happens early.
|
|
147
|
+
2. Correctness comes before performance.
|
|
148
|
+
3. After correctness, optimize algorithms and implementation before changing models.
|
|
149
|
+
4. Research pipelines and production pipelines must be separated.
|
|
150
|
+
5. Every important paper claim should have a traceable producer.
|
|
151
|
+
6. Final results must be reproducible from a clean environment.
|
|
152
|
+
7. Only one final integrator may write to the final submission directory.
|
|
153
|
+
8. New research routes stop before the submission deadline.
|
|
154
|
+
9. Submission artifacts are validated, hashed and frozen.
|
|
155
|
+
10. Postmortems are converted into reusable tooling only after privacy/provenance/reuse review.
|
|
156
|
+
|
|
157
|
+
## Publication boundary
|
|
158
|
+
|
|
159
|
+
Future competition training and new competition-specific work are private by default. They are not copied into this public repository during active preparation or competition. Any later publication requires a separate post-competition distillation, provenance/license review, tests, PR, and explicit human publication decision.
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
MIT
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
src/math_modeling_competition_kit.egg-info/PKG-INFO
|
|
5
|
+
src/math_modeling_competition_kit.egg-info/SOURCES.txt
|
|
6
|
+
src/math_modeling_competition_kit.egg-info/dependency_links.txt
|
|
7
|
+
src/math_modeling_competition_kit.egg-info/entry_points.txt
|
|
8
|
+
src/math_modeling_competition_kit.egg-info/top_level.txt
|
|
9
|
+
src/mmkit/__init__.py
|
|
10
|
+
src/mmkit/cli.py
|
|
11
|
+
src/mmkit/paper.py
|
|
12
|
+
src/mmkit/benchmark/__init__.py
|
|
13
|
+
src/mmkit/benchmark/core.py
|
|
14
|
+
src/mmkit/coordination/__init__.py
|
|
15
|
+
src/mmkit/coordination/core.py
|
|
16
|
+
src/mmkit/optimization/__init__.py
|
|
17
|
+
src/mmkit/provenance/__init__.py
|
|
18
|
+
src/mmkit/provenance/registry.py
|
|
19
|
+
src/mmkit/reporting/__init__.py
|
|
20
|
+
src/mmkit/reproducibility/__init__.py
|
|
21
|
+
src/mmkit/reproducibility/manifest.py
|
|
22
|
+
src/mmkit/reproducibility/runner.py
|
|
23
|
+
src/mmkit/rolling_horizon/__init__.py
|
|
24
|
+
src/mmkit/scaffold/__init__.py
|
|
25
|
+
src/mmkit/scaffold/project.py
|
|
26
|
+
src/mmkit/scenarios/__init__.py
|
|
27
|
+
src/mmkit/submission/__init__.py
|
|
28
|
+
src/mmkit/submission/gate.py
|
|
29
|
+
tests/test_benchmark.py
|
|
30
|
+
tests/test_benchmark_cli.py
|
|
31
|
+
tests/test_cli.py
|
|
32
|
+
tests/test_coordination.py
|
|
33
|
+
tests/test_coordination_cli.py
|
|
34
|
+
tests/test_distribution_audit.py
|
|
35
|
+
tests/test_paper.py
|
|
36
|
+
tests/test_paper_cli.py
|
|
37
|
+
tests/test_provenance.py
|
|
38
|
+
tests/test_provenance_cli.py
|
|
39
|
+
tests/test_publish_workflow_contract.py
|
|
40
|
+
tests/test_release_metadata.py
|
|
41
|
+
tests/test_release_tag.py
|
|
42
|
+
tests/test_reproducibility_manifest.py
|
|
43
|
+
tests/test_reproducibility_runner.py
|
|
44
|
+
tests/test_scaffold.py
|
|
45
|
+
tests/test_scaffold_benchmark.py
|
|
46
|
+
tests/test_scaffold_cli.py
|
|
47
|
+
tests/test_scaffold_coordination.py
|
|
48
|
+
tests/test_submission_gate.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
math_modeling_competition_kit-0.1.0a1/src/math_modeling_competition_kit.egg-info/top_level.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
mmkit
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""Algorithm/runtime benchmarking primitives."""
|
|
2
|
+
|
|
3
|
+
from .core import (
|
|
4
|
+
BenchmarkError,
|
|
5
|
+
build_baseline,
|
|
6
|
+
compare_to_baseline,
|
|
7
|
+
init_benchmark,
|
|
8
|
+
load_baseline,
|
|
9
|
+
run_benchmark,
|
|
10
|
+
validate_benchmark_manifest,
|
|
11
|
+
write_json,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"BenchmarkError",
|
|
16
|
+
"build_baseline",
|
|
17
|
+
"compare_to_baseline",
|
|
18
|
+
"init_benchmark",
|
|
19
|
+
"load_baseline",
|
|
20
|
+
"run_benchmark",
|
|
21
|
+
"validate_benchmark_manifest",
|
|
22
|
+
"write_json",
|
|
23
|
+
]
|