Joint sample-handling history reconciliation and zero-net-transfer checks for shared-source Ca-carbonate-Na-Cl water aliquots
| 核心职责 | 实现与证据 |
|---|---|
| 实际样瓶谱系与体积分配 | lineage.mbt 记录父子状态,检查兄弟分样总体积及处理顺序。 |
| 跨瓶共享原水与上游剂量 | 同一次上游未知处理在所有后代中保持同一个变量;联合测试 覆盖各瓶独立可行但共同冲突。 |
| 检测绑定具体样瓶 | 联合使用 Ca/DIC/TA/Na/Cl 检测区间与实际体积,不把 pH 当作可加检测量。 |
| 基线后的联合零净转移检验 | claims.mbt 先检查共同历史,再检验所选步骤是否能同时为零;反例 展示增加检测后结论变化。 |
| 可复核输出和明确未决 | reconcile.mbt 返回共同历史或原始约束的矛盾证书;独立验证器 重算,超预算返回 ResourceLimit。 |
moon add alicedhaha/moonaqueousspecpython3 scripts/aliquots.py reconcile --input examples/aliquots/common-source-conflict.json
python3 scripts/aliquots.py challenge --input examples/aliquots/masked-acid-base.claim.json
python3 scripts/aliquots.py challenge --input examples/aliquots/mineral-acid.claim.json| 核心反例 | 实际判断 | 增加了什么判断能力 |
|---|---|---|
| 同源分瓶冲突 | 完整输入为 Conflict;分别保留单瓶检测时各为 Compatible | 阻止把各瓶独立选择的原水值拼成不存在的共同历史。 |
| 酸碱效应在 TA 上抵消 | 完整输入为 ZeroTransferRuledOut;删去 Na/Cl 后为 ZeroTransferPossible | 显示反离子检测能排除 TA 单独无法排除的解释。 |
| 方解石/酸效应在 TA 上抵消 | Ca/Cl 证据排除“矿物和酸都为零”;CO₂ 为零仍可行 | 区分明确的净计量解释;不从 SI 推断沉淀,也不把联合排除解释为每一步必然非零。 |
python3 scripts/verify_aliquots.pypython3 scripts/aliquots.py reconcile --input examples/aliquots/acidified-split.json
python3 scripts/aliquots.py challenge --input examples/aliquots/underdetermined-gas.claim.json| 相关项目 | 承认的共同基础 | 当前主任务的区别 |
|---|---|---|
| moonbit-biogeochem | DIC、TA、碳酸盐和 CO₂ | 所查源码为海洋箱模型与气海交换;当前处理样瓶谱系、共享上游量和跨瓶检测的共同历史。 |
| moonkinetics | 化学计量与守恒 | 所查项目演化反应网络;当前检验有限处理记录与检测是否相容。 |
| membrane | 物料网络、并联流与可行设计 | 当前输入是分样及检测,不进行膜分离工艺设计。 |
| moonopt | 可行性与 Farkas 不可行核验 | 当前只接受有限水样处理模型,证书方法本身不是新增贡献。 |
| moonbit-vle、moonbit_extractor | 活度、平衡、物料衡算 | 当前主任务不求相平衡或萃取;保留平衡支持包仍有领域交集。 |
export MOON_HOME="$PWD/.moon" # 系统工具链使用者跳过这两行
export PATH="$MOON_HOME/bin:$PATH"
moon check --deny-warn
moon test --deny-warn
python3 scripts/verify_aliquots.py
python3 scripts/generate_aliquot_examples.py --check
python3 scripts/verify_local.py| 路径 | 职责 |
|---|---|
| lineage.mbt、reconcile.mbt、claims.mbt | 当前主任务:处理谱系、共同历史与联合零净转移检验。 |
| cmd/main/、scripts/aliquots.py | 默认 MoonBit 入口与文件适配器。 |
| examples/aliquots/、docs/scenarios.md | 当前主任务的五个合成场景及对照说明。 |
| equilibrium/、scripts/aqueous.py | 独立保留的水相平衡支持功能,有自己的入口和已知先例。 |
| docs/equilibrium-*.md、根目录早期规划书 | 支持包文档与历史规划,不作为主任务新增承诺。 |
pub(all) struct AliquotAssessment {
status : String
history : HandlingHistory?
conflict : Array[ConflictTerm]
parameter_count : Int
constraint_count : Int
diagnostics : Array[String]
} derive(ToJson, Debug)pub(all) struct AliquotStudy {
schema : String
source : SourceWater
steps : Array[HandlingStep]
assays : Array[BottleAssay]
} derive(ToJson, Debug, FromJson)pub(all) struct ClaimAssessment {
status : String
zero_steps : Array[String]
base : AliquotAssessment
assumed_zero : AliquotAssessment?
diagnostics : Array[String]
} derive(ToJson, Debug)pub(all) struct HandlingHistory {
model : String
parameters : Array[ParameterValue]
samples : Array[PreparedSample]
} derive(ToJson, Debug, FromJson)pub(all) struct ReplayRequest {
study : AliquotStudy
parameters : Array[ParameterValue]
} derive(ToJson, Debug, FromJson)pub(all) struct ZeroTransferClaim {
study : AliquotStudy
zero_steps : Array[String]
} derive(ToJson, Debug, FromJson)fn replay_handling(study : AliquotStudy, choices : Array[ParameterValue]) -> Result[HandlingHistory, String]Install
Download zipJoint sample-handling history reconciliation and zero-net-transfer checks for shared-source Ca-carbonate-Na-Cl water aliquots