dsh-math-modeling-agent 0.1.0

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.
Files changed (31) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/cordis.patch.yml +8 -0
  4. package/package.json +34 -0
  5. package/skills/math-modeling-agent/SKILL.md +50 -0
  6. package/skills/math-modeling-agent/examples/minimal-run/README.md +14 -0
  7. package/skills/math-modeling-agent/examples/resumed-run/README.md +13 -0
  8. package/skills/math-modeling-agent/references/claims-evidence.md +29 -0
  9. package/skills/math-modeling-agent/references/data-subproblems.md +17 -0
  10. package/skills/math-modeling-agent/references/math-grill.md +33 -0
  11. package/skills/math-modeling-agent/references/modeling-methodology.md +38 -0
  12. package/skills/math-modeling-agent/references/problem-types.md +20 -0
  13. package/skills/math-modeling-agent/references/report-contract.md +29 -0
  14. package/skills/math-modeling-agent/references/research-breakthrough.md +27 -0
  15. package/skills/math-modeling-agent/references/state-recovery.md +18 -0
  16. package/skills/math-modeling-agent/references/tool-policy.md +21 -0
  17. package/skills/math-modeling-agent/references/workflow.md +39 -0
  18. package/skills/math-modeling-agent/schemas/attempt.schema.json +70 -0
  19. package/skills/math-modeling-agent/schemas/ledger.schema.json +47 -0
  20. package/skills/math-modeling-agent/schemas/run.schema.json +102 -0
  21. package/skills/math-modeling-agent/scripts/capability-probe.mjs +105 -0
  22. package/skills/math-modeling-agent/scripts/python-environment.mjs +408 -0
  23. package/skills/math-modeling-agent/scripts/run-state.mjs +547 -0
  24. package/skills/math-modeling-audit/SKILL.md +41 -0
  25. package/skills/math-modeling-audit/examples/audit-report.md +13 -0
  26. package/skills/math-modeling-audit/examples/mcm-final-review.md +86 -0
  27. package/skills/math-modeling-audit/references/data-citation-audit.md +15 -0
  28. package/skills/math-modeling-audit/references/evidence-levels.md +10 -0
  29. package/skills/math-modeling-audit/references/mcm-icm-final-judge.md +331 -0
  30. package/skills/math-modeling-audit/references/verification-protocol.md +27 -0
  31. package/skills/math-modeling-audit/scripts/mcm-score.mjs +218 -0
@@ -0,0 +1,86 @@
1
+ # MCM/ICM Final Review Example
2
+
3
+ ## 一、60 秒终审印象
4
+
5
+ - 这篇论文试图解决什么:多阶段资源配置。
6
+ - 核心方法:线性规划与情景分析。
7
+ - 核心结果:方案 A 的报告成本最低,但未提供可复现求解日志。
8
+ - 最大亮点:约束映射清楚。
9
+ - 第一眼最严重的问题:核心优化没有独立验证。
10
+ - 评委是否愿意继续认真阅读:勉强。
11
+
12
+ ## 二、一票否决与奖项封顶检查
13
+
14
+ - 风险:核心优化模型完全没有验证。
15
+ - 证据:论文第 12 页仅报告求解器 success,无基线、gap 或复算。
16
+ - 严重程度:严重问题。
17
+ - 是否触发封顶:是。
18
+ - 封顶等级:84。
19
+
20
+ ## 三、总体评价与最终得分
21
+
22
+ - 综合得分:84/100。
23
+ - 原始得分:90/100。
24
+ - 封顶后得分:84/100。
25
+ - 获奖等级预测:Meritorious。
26
+ - Outstanding 概率:2%。
27
+ - Finalist 及以上概率:18%。
28
+ - 核心优势:机制与约束清楚。
29
+ - 致命弱点:结果证据不足。
30
+
31
+ ## 四、100 分分项评分
32
+
33
+ | 一级指标 | 二级指标 | 得分 | 满分 | 评委意见 |
34
+ |---|---|---:|---:|---|
35
+ | 结果与验证 | 独立验证 | 0 | 3 | 第 12 页未提供独立证据。 |
36
+
37
+ ## 五、题目要求覆盖矩阵
38
+
39
+ | 题目要求 | 是否完成 | 使用模型 | 最终结果 | 验证情况 | 判定 |
40
+ |---|---|---|---|---|---|
41
+ | 最优配置 | 表面完成 | 线性规划 | 方案 A | 未验证 | WARNING |
42
+
43
+ ## 六、模型逐个尸检
44
+
45
+ M1 线性规划:可简化;模型评分 7/10;缺少最优性与复现证据。
46
+
47
+ ## 七、建模结果专项审计
48
+
49
+ | ID | Result | Source | Unit | Model | Reproducible | Magnitude | Validated | Importance | Verdict |
50
+ |---|---|---|---|---|---|---|---|---|---|
51
+ | R1 | 方案 A 成本最低 | p.12 | USD | M1 | 否 | 合理 | 否 | 核心 | WARNING |
52
+
53
+ ## 八、数据与参数审计
54
+
55
+ | 参数 | 数值 | 来源 | 是否有依据 | 敏感性 | 风险 |
56
+ |---|---:|---|---|---|---|
57
+ | 惩罚系数 | 0.5 | 无 | 否 | 未分析 | 高 |
58
+
59
+ ## 九、灵敏度、稳健性与验证专项评价
60
+
61
+ 作者只扰动非关键需求参数;未分析惩罚系数和可行域变化,因此现有分析形式主义。
62
+
63
+ ## 十、数学与计算正确性抽查
64
+
65
+ 材料不足以完成三项数值复算;该缺口保留为未验证,不补造结果。
66
+
67
+ ## 十一、图表与写作评审
68
+
69
+ 最好图为图 3;最差且应删除图为无单位的图 7;应增加约束 slack 与基线对比图。
70
+
71
+ ## 十二、Outstanding Winner 差距分析
72
+
73
+ 真正的 Outstanding 会提供最优性、基线、敏感性和复现证据;本稿技术复杂度高于证据强度。
74
+
75
+ ## 十三、修改优先级
76
+
77
+ P0:补充可复现求解、约束检查和独立复算;预计提升高;成本中。
78
+
79
+ ## 十四、评委最终裁决
80
+
81
+ - 一句话总结:模型合理但核心结果未被证明可信。
82
+ - 最可能奖项:Meritorious。
83
+ - 是否推荐进入 Final Round:否。
84
+ - 如果我是 Head Judge,我是否会为这篇论文辩护:否。
85
+ - 理由:缺少决定性结果证据。
86
+ - 最终 verdict:Meritorious,不能因表达漂亮上调。
@@ -0,0 +1,15 @@
1
+ # Data and Citation Audit
2
+
3
+ ## Data
4
+
5
+ Map each key dataset to source, time, geography, sample size, unit, labels, preprocessing, split, and consuming model. Check duplicates, selection/survivor bias, time/future leakage, group leakage, normalization/feature selection outside training folds, and repeated test-set tuning.
6
+
7
+ ## Parameters
8
+
9
+ Map each key parameter to value, unit, source, setting time, estimation/calibration route, allowed range, sensitivity, and whether it was changed after seeing results. Unsupported conclusion-sensitive values are Achilles’ heels.
10
+
11
+ ## Citations
12
+
13
+ Verify author, title, year, venue, DOI/stable URL, version, retrieval date, exact page/section/theorem/table, excerpt, mapped claim, and whether evidence is full text, abstract only, metadata only, secondary, conflicting, or citation needed.
14
+
15
+ Never invent a DOI, page, quotation, source, data set, or annual contest rule.
@@ -0,0 +1,10 @@
1
+ # Evidence Levels
2
+
3
+ - NOT_CHECKED: no independent check.
4
+ - DERIVED: transparent reasoning exists but was not executed.
5
+ - EXECUTED: a tool ran and produced an artifact; correctness is not implied.
6
+ - VERIFIED: the artifact passed its stated obligation and counterchecks.
7
+ - INDEPENDENTLY_VERIFIED: a separate method/context reproduced or proved the claim.
8
+ - EXTERNALLY_VALIDATED: independent real data, known theorem, or primary source supports applicability.
9
+
10
+ Evidence strength must match claim strength. A training score cannot support generalization; one returned optimizer point cannot support global optimality; a formal proof cannot support unformalized real-world assumptions.
@@ -0,0 +1,331 @@
1
+ # MCM/ICM Final Judging Panel
2
+
3
+ This is a simulated 100-point final-panel framework, not a COMAP official quantitative scorecard. Review as if the paper is competing for Outstanding Winner or Finalist. Do not coach, reward effort, or supply missing evidence.
4
+
5
+ ## Non-negotiable principles
6
+
7
+ - Do not assume the model is correct.
8
+ - Complexity, machine learning, optimization, neural networks, Monte Carlo, AHP, TOPSIS, entropy weights, or named algorithms earn no automatic innovation credit.
9
+ - Reject formulas without mechanism, results without traceable computation, figures without conclusions, and formalistic sensitivity analysis that misses critical parameters.
10
+ - Distinguish plausible from validated and a number from a credible modeling result.
11
+ - Cite page, section, equation, table, figure, or exact value whenever possible.
12
+ - If evidence is absent, write “论文未提供证据”.
13
+
14
+ ## Stage 1: veto and award caps
15
+
16
+ Classify each item as 通过, 警告, 严重问题, or 一票否决风险:
17
+
18
+ 1. every subproblem is answered;
19
+ 2. no omission, off-target answer, or proxy substituted for the requested metric;
20
+ 3. no critical mathematical formula error;
21
+ 4. no dimensional, unit, or order-of-magnitude error;
22
+ 5. no key result violates constraints;
23
+ 6. summary, body, tables, and figures agree numerically;
24
+ 7. conclusions follow from model and computation;
25
+ 8. critical parameters have a source or defensible estimate;
26
+ 9. critical model and algorithm are reproducible;
27
+ 10. no data/future leakage or train-test mixing;
28
+ 11. sources, data, and references are traceable and non-fabricated;
29
+ 12. external methods, algorithms, images, and data are cited;
30
+ 13. applicable annual COMAP page, anonymity, submission, citation, and AI/disclosure rules are satisfied;
31
+ 14. core prediction/optimization/decision results are validated;
32
+ 15. model structure fits the real mechanism or the mismatch is discussed.
33
+
34
+ Apply evidence-linked caps:
35
+
36
+ - missing core subtask: Outstanding and Finalist normally unavailable;
37
+ - conclusion-changing main-model math error: cap 69;
38
+ - completely unvalidated core prediction/optimization/decision model: cap 84;
39
+ - unsupported highly sensitive core parameter: cap 79;
40
+ - irreproducible critical result: cap 79;
41
+ - clear leakage or answer-information training: cap 69;
42
+ - main conclusion conflicts with calculation/figure: cap 74;
43
+ - almost no quantitative result: cap 59;
44
+ - suspected fabricated data/reference, plagiarism, or serious rule violation: stop ordinary scoring and report Disqualification Risk.
45
+
46
+ ## Stage 2: 100-point scoring
47
+
48
+ ### 1. Problem understanding, decomposition, and summary — 10
49
+
50
+ #### 1.1 Summary Sheet — 4
51
+
52
+ Check whether a 60-second reader learns the problem, models, method per subproblem, core quantitative results, recommendation, validation, and numbers consistent with the body. “Good performance” without numbers is weak evidence.
53
+
54
+ #### 1.2 Understanding and decomposition — 3
55
+
56
+ Check every explicit task, hidden constraint, practical objective, stakeholder, subproblem relation, and whether the paper solved an easier substitute problem.
57
+
58
+ #### 1.3 Assumptions, definitions, boundaries — 3
59
+
60
+ Check completeness, necessity, realism, simplification rationale, applicability, distinction among fact/assumption/setting, and support from data, literature, or sensitivity.
61
+
62
+ ### 2. Data, evidence, and parameters — 12
63
+
64
+ #### 2.1 Source credibility — 3
65
+
66
+ For every key dataset record name, source, time, sample size, unit, and consuming model. Check temporal/spatial match, conflicts, update frequency, and traceability.
67
+
68
+ #### 2.2 Cleaning and preprocessing — 2
69
+
70
+ Check missing values, outliers, scaling, interpolation, smoothing, trend creation, method explanation, and before-after comparison.
71
+
72
+ #### 2.3 Representativeness, bias, leakage — 2
73
+
74
+ Check selection, survivor, temporal, spatial, and entity bias; train/validation/test separation; future and target leakage.
75
+
76
+ #### 2.4 Parameter determination and calibration — 3
77
+
78
+ Every key parameter must come from data estimation, literature, theory, calibration, inverse optimization, justified expert input, or an explicitly tested scenario. Unsupported values such as “let alpha=0.5” are penalized.
79
+
80
+ #### 2.5 Data-parameter-model consistency — 2
81
+
82
+ Check unit, temporal, and spatial consistency; physical meaning; whether data supports variables; and whether variables were invented only to fit a method.
83
+
84
+ ### 3. Model formulation — 22
85
+
86
+ #### 3.1 Mechanism-to-mathematics mapping — 5
87
+
88
+ Check whether variables, equations, probability structure, objective, and constraints correspond to the real mechanism rather than mathematical assembly.
89
+
90
+ #### 3.2 Valuable innovation — 4
91
+
92
+ Credit mechanism design, justified coupling, structural adaptation, meaningful new indicators, evidence-based correction, or a genuinely useful solver. Do not credit stacking, deep learning by name, jargon, or unnecessary parameters. Ask whether a simpler model gives essentially the same answer.
93
+
94
+ #### 3.3 Variables, objective, constraints, equations — 4
95
+
96
+ Check every symbol, objective fidelity, complete real constraints, mathematical correctness, units, initial conditions, and boundary conditions.
97
+
98
+ #### 3.4 Assumption and internal consistency — 3
99
+
100
+ Check contradictions among assumptions/equations, changing parameter meanings, reused symbols, and circular logic.
101
+
102
+ #### 3.5 Complexity and explainability — 3
103
+
104
+ Check necessary complexity, overfitting, removable modules, interpretability, and fit to a four-day contest.
105
+
106
+ #### 3.6 Multi-subproblem unity — 3
107
+
108
+ Check whether earlier results genuinely support later tasks and whether the paper forms problem → core model → extension → verification → decision rather than a model collage.
109
+
110
+ ### 4. Mathematical solution, algorithm, reproducibility — 16
111
+
112
+ #### 4.1 Derivation correctness — 4
113
+
114
+ Audit probability, calculus, differential/difference equations, matrices, statistics, normalization, weights, and recurrences. State whether an error changes the conclusion.
115
+
116
+ #### 4.2 Algorithms and numerical methods — 4
117
+
118
+ Check method suitability, initial values, stop/convergence conditions, numerical stability, hyperparameters, seeds, and local-versus-global claims.
119
+
120
+ #### 4.3 Reproducibility — 3
121
+
122
+ Check inputs, parameters, steps, outputs, code/pseudocode, and figure-to-computation traceability.
123
+
124
+ #### 4.4 Complexity, convergence, optimality — 3
125
+
126
+ Check time/space complexity, convergence, grid convergence, optimality proof/gap, baselines for heuristics, and multi-start tests.
127
+
128
+ #### 4.5 Sanity checks — 2
129
+
130
+ Check extremes, magnitude, bounds, units, sums/probabilities, resource capacities, nonnegative time, and common-sense violations.
131
+
132
+ ### 5. Results, validation, robustness, credibility — 24
133
+
134
+ #### 5.1 Task completion — 4
135
+
136
+ Build requirement → model → output → conclusion mapping. A method without the requested number, ranking, strategy, prediction, or decision is incomplete.
137
+
138
+ #### 5.2 Numerical correctness and internal consistency — 4
139
+
140
+ Audit the three to ten most important results: value, unit, page, model, input, computation path, reproducibility, plausibility, validation, and PASS/WARNING/FAIL. Compare summary, body, tables, figures, and repeated values.
141
+
142
+ #### 5.3 Baseline and controls — 3
143
+
144
+ Check naive, traditional, historical, official, current, random, or literature baselines. A standalone 91% result has no comparative meaning.
145
+
146
+ #### 5.4 Sensitivity — 4
147
+
148
+ Identify truly critical parameters first. Check realistic perturbation, quantitative output change, thresholds, rank reversal, and failure. Ask how far a parameter moves before the conclusion changes.
149
+
150
+ #### 5.5 Robustness and uncertainty — 4
151
+
152
+ Check parameter, data, measurement, random, structural, and scenario uncertainty; Monte Carlo, bootstrap, confidence/prediction intervals, worst case, or robust optimization. Distinguish exact-looking numbers from credible intervals.
153
+
154
+ #### 5.6 Independent/external validation — 3
155
+
156
+ Prefer holdout, time extrapolation, backtest, real case, independent source, literature result, known theorem, or simulation-to-reality comparison. Training-data self-validation is weak.
157
+
158
+ #### 5.7 Failure scenarios and counterexamples — 2
159
+
160
+ Check extreme parameters, missing data, network failure, demand shock, environmental/policy change, and black swans. Outstanding papers know when they fail.
161
+
162
+ ### 6. Conclusions, practical meaning, generalization — 8
163
+
164
+ #### 6.1 Model-grounded conclusions — 3
165
+
166
+ Trace data → model → result → conclusion. Penalize correlation written as causation, unlimited extrapolation, or precise policy advice without computation.
167
+
168
+ #### 6.2 Actionable recommendations — 2
169
+
170
+ Identify actor, action, timing, cost, risk, resources, and implementation constraints.
171
+
172
+ #### 6.3 Concrete limitations — 2
173
+
174
+ Name the most dangerous assumption, missing data, sensitive parameter, failure condition, and bias direction—not “more work is needed”.
175
+
176
+ #### 6.4 Transferability — 1
177
+
178
+ Assess extension across region, time, scale, network, and policy scenario.
179
+
180
+ ### 7. Writing, figures, professional presentation — 8
181
+
182
+ #### 7.1 Structure — 2
183
+
184
+ Check logical service of sections, repetition, result-before-model reasoning, jumps, and clear section purpose.
185
+
186
+ #### 7.2 Figures — 2
187
+
188
+ Check necessity, axes, units, legend, self-contained caption, resolution, font, color, independent readability, and whether the figure supports a conclusion.
189
+
190
+ #### 7.3 Language — 1
191
+
192
+ Check concise, professional, accurate language without empty AI-style prose.
193
+
194
+ #### 7.4 Notation and formulas — 1
195
+
196
+ Check prior definition, consistency, numbering, units, and absence of decorative equations.
197
+
198
+ #### 7.5 Citations — 1
199
+
200
+ Check data, image, algorithm, and literature references and correspondence between text and bibliography.
201
+
202
+ #### 7.6 Page efficiency — 1
203
+
204
+ Check wasted space, unnecessary contents pages, code in body, hidden key reasoning, and information density under the page limit.
205
+
206
+ ## Stage 3: model-by-model autopsy
207
+
208
+ For every M1, M2, ... report:
209
+
210
+ - problem solved, inputs, outputs, core equations, parameters, assumptions;
211
+ - why chosen and mechanism fit;
212
+ - mathematical correctness and parameter interpretability;
213
+ - solver and result;
214
+ - validation, sensitivity, robustness;
215
+ - strengths, most serious defect, simpler alternative, marginal value;
216
+ - score /10 and retain/simplify/restructure/untrustworthy.
217
+
218
+ Conclude unified system or model collage.
219
+
220
+ ## Stage 4: key-result audit
221
+
222
+ Use:
223
+
224
+ | ID | Result | Source | Unit | Model | Reproducible | Magnitude | Validated | Importance | Verdict |
225
+ |---|---|---|---|---|---|---|---|---|---|
226
+
227
+ Then answer:
228
+
229
+ 1. most credible result;
230
+ 2. most fragile result;
231
+ 3. result most dependent on manual parameters;
232
+ 4. result most exposed to data failure;
233
+ 5. result whose failure collapses the paper;
234
+ 6. precision illusion;
235
+ 7. all constraints satisfied;
236
+ 8. better solution possibly missed;
237
+ 9. stability under ±5%, ±10%, ±20% input perturbations;
238
+ 10. reason to trust for real decisions.
239
+
240
+ ## Stage 5: type-specific module
241
+
242
+ - MCM A: ODE/PDE/difference equations, initial/boundary conditions, dimensions, discretization, grid convergence, stability, parameter estimation, physical meaning.
243
+ - MCM B: graph/combinatorial structure, dynamic/integer programming, correctness, complexity, optimality, scalability.
244
+ - MCM C: quality, leakage, splits, feature engineering, variable selection, multicollinearity, overfitting, baselines, metrics, calibration, uncertainty, interpretation.
245
+ - ICM D: network construction, node/edge meaning, weights, metrics, objective, constraints, optimization, scale, perturbation stability.
246
+ - ICM E: boundary, time scale, lifecycle, environmental-economic-social tradeoff, weights, scenarios, uncertainty, long-run and unintended consequences.
247
+ - ICM F: correlation/causality, behavior, stakeholders, fairness, cost, incentives, execution, scenarios, unintended and heterogeneous effects.
248
+
249
+ ## Stage 6: award judgment
250
+
251
+ Reference bands:
252
+
253
+ - 93–100 Outstanding Candidate;
254
+ - 87–92 Finalist;
255
+ - 78–86 Meritorious;
256
+ - 68–77 Honorable Mention;
257
+ - 55–67 Successful Participant;
258
+ - below 55 Unsuccessful Risk.
259
+
260
+ Outstanding additionally requires complete tasks, no major math/logic error, credible core validation, meaningful sensitivity/robustness, sourced key parameters, strong Summary Sheet, non-template modeling, closed model-result-conclusion loop, reproducibility, and one memorable contribution. High score without gates is Finalist or below.
261
+
262
+ ## Required final output
263
+
264
+ Use exactly these top-level sections and fields.
265
+
266
+ ### 一、60 秒终审印象
267
+
268
+ Paper objective; core methods; core results; strongest point; most serious first-impression problem; continue reading: 是/勉强/否.
269
+
270
+ ### 二、一票否决与奖项封顶检查
271
+
272
+ For each risk: risk; evidence; severity; cap triggered; cap level.
273
+
274
+ ### 三、总体评价与最终得分
275
+
276
+ Composite score /100; raw score; capped score; predicted award; Outstanding probability; Finalist-or-higher probability; core advantages; fatal weaknesses.
277
+
278
+ ### 四、100 分分项评分
279
+
280
+ | 一级指标 | 二级指标 | 得分 | 满分 | 评委意见 |
281
+ |---|---|---:|---:|---|
282
+
283
+ Every row needs evidence.
284
+
285
+ ### 五、题目要求覆盖矩阵
286
+
287
+ | 题目要求 | 是否完成 | 使用模型 | 最终结果 | 验证情况 | 判定 |
288
+ |---|---|---|---|---|---|
289
+
290
+ Find omissions and proxy answers.
291
+
292
+ ### 六、模型逐个尸检
293
+
294
+ Review M1, M2, M3 separately using the autopsy template.
295
+
296
+ ### 七、建模结果专项审计
297
+
298
+ Provide R1, R2, ... table and judge correctness, credibility, robustness, reproducibility, and practical meaning.
299
+
300
+ ### 八、数据与参数审计
301
+
302
+ | 参数 | 数值 | 来源 | 是否有依据 | 敏感性 | 风险 |
303
+ |---|---:|---|---|---|---|
304
+
305
+ Name Achilles’ heel parameters.
306
+
307
+ ### 九、灵敏度、稳健性与验证专项评价
308
+
309
+ State what authors did, omitted, whether existing analysis is effective or formalistic, and validation needed for Finalist/Outstanding.
310
+
311
+ ### 十、数学与计算正确性抽查
312
+
313
+ Check at least three formulas, three numbers, one algorithm, one figure, and one final conclusion when available; recompute when possible.
314
+
315
+ ### 十一、图表与写作评审
316
+
317
+ Name best/worst/delete/add figures, hardest and most wasteful sections, and whether Summary Sheet is final-round quality.
318
+
319
+ ### 十二、Outstanding Winner 差距分析
320
+
321
+ Explain why another paper wins; missing decisive evidence; current award level; three blockers to Finalist; three blockers to Outstanding; genuine innovation; removable model.
322
+
323
+ ### 十三、修改优先级
324
+
325
+ P0 no high award without fix; P1 Meritorious vs Finalist; P2 Finalist vs Outstanding; P3 polish. Every item states problem, severity, fix, expected gain, and low/medium/high cost.
326
+
327
+ ### 十四、评委最终裁决
328
+
329
+ One-sentence summary; most likely award; recommend Final Round yes/no; Head Judge defense yes/no; reason; final verdict.
330
+
331
+ Do not inflate for encouragement. Use “技术复杂度高于证据强度” or “presentation quality exceeds modeling quality” when supported. The final question is how credible the conclusions are and why they belong among the best papers.
@@ -0,0 +1,27 @@
1
+ # Independent Verification Protocol
2
+
3
+ ## Freeze inputs
4
+
5
+ Hash the exact artifact set, problem statement, data, code, configuration, and environment evidence. Record anything unavailable.
6
+
7
+ ## Rebuild the claim map
8
+
9
+ For each material claim record exact text, source location, assumptions, required evidence, supplied evidence, and independent countercheck.
10
+
11
+ ## Attack order
12
+
13
+ 1. task coverage and proxy substitution;
14
+ 2. units, dimensions, domain, bounds, and constraints;
15
+ 3. derivation and implementation consistency;
16
+ 4. data leakage, labels, splits, preprocessing, and post-hoc parameters;
17
+ 5. baseline, uncertainty, sensitivity, and external validity;
18
+ 6. reproducibility and citation truth;
19
+ 7. counterexamples, failure cases, and simpler alternatives.
20
+
21
+ ## Verdicts
22
+
23
+ - PASS: required obligation is supported by reproducible evidence.
24
+ - FAIL: a contradiction, counterexample, invalid method, or failed reproduction defeats the claim.
25
+ - INCONCLUSIVE: evidence is insufficient or unavailable.
26
+
27
+ Never convert INCONCLUSIVE to PASS because the approach looks reasonable.
@@ -0,0 +1,218 @@
1
+ import { readFile } from 'node:fs/promises'
2
+ import { pathToFileURL } from 'node:url'
3
+
4
+ export const RUBRIC = {
5
+ '1.summary': 4,
6
+ '1.understanding': 3,
7
+ '1.assumptions': 3,
8
+ '2.data-source': 3,
9
+ '2.preprocessing': 2,
10
+ '2.bias-leakage': 2,
11
+ '2.parameter-calibration': 3,
12
+ '2.consistency': 2,
13
+ '3.mechanism': 5,
14
+ '3.innovation': 4,
15
+ '3.formulation': 4,
16
+ '3.internal-consistency': 3,
17
+ '3.complexity-explainability': 3,
18
+ '3.multi-problem-unity': 3,
19
+ '4.derivation': 4,
20
+ '4.algorithm-numerics': 4,
21
+ '4.reproducibility': 3,
22
+ '4.complexity-convergence-optimality': 3,
23
+ '4.sanity': 2,
24
+ '5.task-completion': 4,
25
+ '5.numerical-consistency': 4,
26
+ '5.baselines': 3,
27
+ '5.sensitivity': 4,
28
+ '5.robustness-uncertainty': 4,
29
+ '5.independent-validation': 3,
30
+ '5.failure-cases': 2,
31
+ '6.conclusions': 3,
32
+ '6.actionability': 2,
33
+ '6.limitations': 2,
34
+ '6.transferability': 1,
35
+ '7.structure': 2,
36
+ '7.figures': 2,
37
+ '7.language': 1,
38
+ '7.notation': 1,
39
+ '7.citations': 1,
40
+ '7.page-efficiency': 1,
41
+ }
42
+
43
+ const CAP_VALUES = {
44
+ MATH_ERROR: 69,
45
+ CORE_UNVALIDATED: 84,
46
+ UNSUPPORTED_SENSITIVE_PARAMETERS: 79,
47
+ NOT_REPRODUCIBLE: 79,
48
+ DATA_LEAKAGE: 69,
49
+ CONCLUSION_CONFLICT: 74,
50
+ NO_QUANTITATIVE_RESULTS: 59,
51
+ }
52
+
53
+ const CEILING_VALUES = {
54
+ MISSING_CORE_TASK: 'Meritorious',
55
+ }
56
+
57
+ const OUTSTANDING_GATES = [
58
+ 'taskComplete',
59
+ 'noMajorError',
60
+ 'coreValidated',
61
+ 'meaningfulSensitivity',
62
+ 'parametersSupported',
63
+ 'summaryStrong',
64
+ 'nonTemplateModeling',
65
+ 'closedLoop',
66
+ 'reproducible',
67
+ 'memorableContribution',
68
+ ]
69
+
70
+ const BAND_ORDER = [
71
+ 'Unsuccessful Risk',
72
+ 'Successful Participant',
73
+ 'Honorable Mention',
74
+ 'Meritorious',
75
+ 'Finalist',
76
+ 'Outstanding Candidate',
77
+ ]
78
+
79
+ function requireEvidence(value, label) {
80
+ const items = Array.isArray(value) ? value : [value]
81
+ if (!items.length || items.some((item) => typeof item !== 'string' || !item.trim())) {
82
+ throw new TypeError(label + ' requires evidence')
83
+ }
84
+ }
85
+
86
+ function scoreBand(score) {
87
+ if (score >= 93) return 'Outstanding Candidate'
88
+ if (score >= 87) return 'Finalist'
89
+ if (score >= 78) return 'Meritorious'
90
+ if (score >= 68) return 'Honorable Mention'
91
+ if (score >= 55) return 'Successful Participant'
92
+ return 'Unsuccessful Risk'
93
+ }
94
+
95
+ function lowerBand(left, right) {
96
+ return BAND_ORDER[Math.min(BAND_ORDER.indexOf(left), BAND_ORDER.indexOf(right))]
97
+ }
98
+
99
+ function validateScores(scores) {
100
+ const expected = Object.keys(RUBRIC).sort()
101
+ const actual = Object.keys(scores ?? {}).sort()
102
+ if (JSON.stringify(actual) !== JSON.stringify(expected)) {
103
+ throw new TypeError('scores must contain every rubric subcriterion exactly once')
104
+ }
105
+
106
+ let total = 0
107
+ const categories = {}
108
+ for (const [id, maximum] of Object.entries(RUBRIC)) {
109
+ const entry = scores[id]
110
+ if (!Number.isFinite(entry.score) || entry.score < 0 || entry.score > maximum) {
111
+ throw new TypeError(id + ' score must be between 0 and ' + maximum)
112
+ }
113
+ requireEvidence(entry.evidence, id)
114
+ total += entry.score
115
+ const category = id.split('.')[0]
116
+ categories[category] = (categories[category] ?? 0) + entry.score
117
+ }
118
+ return { total, categories }
119
+ }
120
+
121
+ function validateRubricTotal() {
122
+ const maximum = Object.values(RUBRIC).reduce((sum, value) => sum + value, 0)
123
+ if (maximum !== 100) throw new TypeError('rubric maxima must total 100')
124
+ }
125
+
126
+ function validateOutstandingGates(gates) {
127
+ for (const gate of OUTSTANDING_GATES) {
128
+ if (typeof gates?.[gate] !== 'boolean') {
129
+ throw new TypeError('missing Outstanding gate: ' + gate)
130
+ }
131
+ }
132
+ return OUTSTANDING_GATES.every((gate) => gates[gate])
133
+ }
134
+
135
+ export function scoreReview(input) {
136
+ if (input.schemaVersion !== 1) throw new TypeError('unsupported schemaVersion')
137
+ validateRubricTotal()
138
+
139
+ if (input.disqualificationRisk) {
140
+ requireEvidence(input.disqualificationRisk.evidence, 'disqualification risk')
141
+ return {
142
+ schemaVersion: 1,
143
+ disqualification: true,
144
+ disqualificationRisk: input.disqualificationRisk,
145
+ categoryScores: null,
146
+ rawScore: null,
147
+ caps: [],
148
+ strictestCap: null,
149
+ cappedScore: null,
150
+ awardCeiling: null,
151
+ outstandingGatePassed: null,
152
+ finalBand: 'Disqualification Risk',
153
+ }
154
+ }
155
+
156
+ const { total: rawScore, categories } = validateScores(input.scores)
157
+ const outstandingGatePassed = validateOutstandingGates(input.outstandingGates)
158
+
159
+ const caps = (input.caps ?? []).map((entry) => {
160
+ if (!(entry.code in CAP_VALUES)) throw new TypeError('unknown cap code: ' + entry.code)
161
+ requireEvidence(entry.evidence, 'cap ' + entry.code)
162
+ return { ...entry, maximum: CAP_VALUES[entry.code] }
163
+ })
164
+ const strictestCap = caps.length
165
+ ? Math.min(...caps.map((entry) => entry.maximum))
166
+ : 100
167
+ const cappedScore = Math.min(rawScore, strictestCap)
168
+
169
+ const ceilings = (input.awardCeilings ?? []).map((entry) => {
170
+ if (!(entry.code in CEILING_VALUES)) {
171
+ throw new TypeError('unknown award ceiling code: ' + entry.code)
172
+ }
173
+ requireEvidence(entry.evidence, 'award ceiling ' + entry.code)
174
+ return { ...entry, maximumBand: CEILING_VALUES[entry.code] }
175
+ })
176
+
177
+ let awardCeiling = ceilings.length
178
+ ? ceilings
179
+ .map((entry) => entry.maximumBand)
180
+ .reduce((current, value) => lowerBand(current, value), 'Outstanding Candidate')
181
+ : 'Outstanding Candidate'
182
+ if (!outstandingGatePassed) awardCeiling = lowerBand(awardCeiling, 'Finalist')
183
+
184
+ const rawBand = scoreBand(rawScore)
185
+ const cappedBand = scoreBand(cappedScore)
186
+ const finalBand = lowerBand(cappedBand, awardCeiling)
187
+
188
+ return {
189
+ schemaVersion: 1,
190
+ disqualification: false,
191
+ disqualificationRisk: null,
192
+ categoryScores: categories,
193
+ rawScore,
194
+ caps,
195
+ strictestCap,
196
+ cappedScore,
197
+ rawBand,
198
+ cappedBand,
199
+ awardCeiling,
200
+ outstandingGatePassed,
201
+ finalBand,
202
+ }
203
+ }
204
+
205
+ async function main() {
206
+ const path = process.argv[2]
207
+ if (!path) throw new Error('usage: mcm-score.mjs <review-score.json>')
208
+ const input = JSON.parse(await readFile(path, 'utf8'))
209
+ process.stdout.write(JSON.stringify(scoreReview(input), null, 2) + '\n')
210
+ }
211
+
212
+ const invokedPath = process.argv[1]
213
+ if (invokedPath && import.meta.url === pathToFileURL(invokedPath).href) {
214
+ main().catch((error) => {
215
+ process.stderr.write(error.message + '\n')
216
+ process.exitCode = 1
217
+ })
218
+ }