STEP 1416 — benchtop-mcp v0.9.0-alpha Akizuki chemistry layer mock spike

2026-08-26 · STEP 1408 MVP path 実装 · SCD40 CO2 + SGP40 VOC, 3 tools, hardware_available:False · benchtop-mcp commit bd3fb35

Corrigendum: 初稿 STEP 1415 → STEP 1416 renumber (別 tab の 「Tang Nano 9K OSC drift counter spike」 が 藤本さん explicit directive で STEP 1415 を 先取 = SAC-4 pattern 50 例目、 hardware evidence stronger claim 尊重で 我側 renumber、 benchtop-mcp commit bd3fb35 の source コメントは follow-up commit で 訂正予定)。

目的

STEP 1407 v0.8 の 3 layer (環境 / 慣性 / 距離) の gap fill 続編として、 STEP 1408 で recon 済 の 気体センサー 10 SKU から MVP 2 SKU (I2C 定番) を benchtop-mcp v0.9.0-alpha として mock 追加。 藤本さん directive 「benchtop-mcp v0.8 拡張 (STEP 1407 続編)」 (別 3 tab 並行の 此方 tab 割当) に (a) 選択で 応答、 STEP 1396 olfact/biosensor v0.7 の pattern を そのまま 継承。

実装内容

① CO2 (光音響 NDIR) — SCD40 mock

② VOC index (金属酸化物) — SGP40 mock

3 MCP tool

tool役割主要 return
list_chem_probes() 内蔵 mock chem probe registry 一覧 (2 SKU) probes / probe_count=2 / hardware_available:False / excluded_from_v09 (v0.10+ candidate 明示)
measure_co2_ndir(probe_id, condition_tag) SCD40 mock (CO2 ppm + temp + humidity + verdict) co2_ppm / temperature_c / humidity_pct / verdict_d8 (TRUE/NEITHER) / principle
measure_voc_index(probe_id, condition_tag) SGP40 mock (VOC index + raw resistance + interpretation + verdict) voc_index / voc_index_interpretation (improving/nominal/degrading) / raw_resistance_ohm / verdict_d8 / principle

selftest 結果

✅ 全 test PASS — module selftest 9/9 + [23a-23f] MCP tool wire 6/6 + [1-22] regression clean。
--- benchtop_akizuki_chem selftest (v0.9.0-alpha) ---
[1] list_chem_probes: count=2 ids=['scd40-co2-d1', 'sgp40-voc-d2']
[2] measure_co2_ndir(scd40, indoor-typical): co2=1112.0ppm t=39.85C h=73.34% verdict=TRUE
[3] measure_co2_ndir determinism: co2_equal=True
[4] measure_co2_ndir tag-variance: crowded=1235.0ppm outdoor=591.0ppm
[5] measure_voc_index(sgp40, indoor-nominal): voc=344.6 r=2118513Ω interp=degrading verdict=TRUE
[6] measure_voc_index determinism: voc_equal=True
[7] measure_voc_index interp variance: observed=['degrading', 'improving', 'nominal'] across 16 tags
[8] cross-sublayer misuse rejected: co2_probe_not_voc=True voc_probe_not_co2=True
[9] unknown probe rejected: co2=True voc=True

 benchtop_akizuki_chem: all 9 test PASS

--- [23] v0.9.0-alpha: Akizuki chemistry layer mock spike (3 MCP tool wire) ---
[23a] list_chem_probes: count=2 hw=False ids=['scd40-co2-d1', 'sgp40-voc-d2']
[23b] measure_co2_ndir(scd40, indoor-typical): co2=1112.0ppm t=39.85C h=73.34% verdict=TRUE
[23c] measure_co2_ndir determinism: co2+temp equal
[23d] measure_voc_index(sgp40, indoor-nominal): voc=344.6 interp=degrading verdict=TRUE
[23e] measure_voc_index determinism: voc+raw equal
[23f] invalid input rejected: cross_sublayer=True+True, unknown=True+True

全テスト成功。実機が無くてもこのサーバーは動作します。

Honest scope (8 条)

  1. hardware 未取得 — 全 return dict で hardware_available: False + is_mock: True marker 徹底。 Sensirion SCD40/SGP40 の 実機発注は 別 STEP candidate。
  2. mock 値は deterministic — probe_id + condition_tag の hashlib.md5 由来 seed で cross-process 再現可能。 md5 は cryptographic 用途ではない (単純 seed 用途、 collision resistance 不要)。
  3. 実 sensor physics 模倣なし — 4.26μm CO2 吸収線 光音響 phonon 共鳴 / SnO2 表面吸着 電気抵抗変化 は 一切 模倣していない = interface skeleton のみ。 実 hardware calibration curve も 未使用。
  4. range subset — SCD40 CO2 は 400-2000 ppm (屋内 realistic) に狭めた、 実 sensor は 0-40,000 ppm operating。 SGP40 raw resistance は 4 decade log-scale hash 選択。
  5. STEP 1350 verdict 2 値 subset — TRUE (in-range) / NEITHER (out-of-range or hardware not present) のみ、 BOTH / FALSE / SELF / ∞ / ○ / 〜 の 6 値 は 未使用 (2/8 subset)。
  6. SafetyGate 対象外 — SCD40/SGP40 は 3.3V I2C 微弱電流 で SafetyGate rule 追加要否 なし。 STEP 1408 で 明示された 可燃性ガス系 (MQ-2/3B/4 = 内蔵ヒーター 5V/150mA + 発火源) は v0.10+ candidate = SafetyGate rule 拡張 と 同時 に 実装予定
  7. 「秋月 気体 module wire-up」 は 定番 pattern で novelty ゼロ — 個人電子工作 + 学生実習 の 定番、 「世界初」 主張なし (SAC-4 [[feedback-world-uniqueness-claim-controllable]] 継承)。
  8. voc_index_interpretation は 簡略分類 — Sensirion documentation の 100=nominal 基準 ±10 で improving/nominal/degrading 分類、 実 hardware の tuning は 別途 対応必要。

v0.10+ candidate (excluded_from_v09 明示)

categorySKUbarrier
UART CO2 MH-Z19C (Akizuki 116142) / MH-Z14B (116388) serial protocol 実装 mock 追加
Analog Odor TGS2450 (100989) / AE-TGS8100 (115562) ADC + calibration curve mock
Analog 可燃性 (SafetyGate 拡張) MQ-2 (116141) / MQ-3B (116269) / MQ-4 (116270) 加熱器 5V/150mA + 発火源 → SafetyGate rule 拡張 + 同時実装
Analog CO2 加熱器 MG812 (116496) 固体電解質 事前加熱 + 電源設計

Rei stack alignment

References