{
  "schema_version": "1.1",
  "experiment_id": "AIEL-2026-0009",
  "source_type": "current_project_activity",
  "title": {
    "en": "Reconstructing NORITZ daily water-heater aggregates from one-minute raw data after collector sampling gaps",
    "ja": "NORITZ給湯器の1分Rawから欠測後の日次集計を安全に再構築する検証"
  },
  "status": "COMPLETED",
  "timestamps": {
    "created_at": "2026-09-06T22:42:29+09:00",
    "started_at": "2026-08-31T00:00:00+09:00",
    "observed_at": "2026-09-07T00:13:41+09:00",
    "completed_at": "2026-09-07T00:13:41+09:00",
    "published_at": null,
    "last_verified": "2026-09-07T00:13:41+09:00",
    "updated_at": "2026-09-07T00:31:55+09:00"
  },
  "objective": {
    "summary_en": "Determine whether retained one-minute raw observations can serve as the source of truth for auditing NORITZ daily aggregates and limiting repair to demonstrated mismatches.",
    "summary_ja": "保持された1分Raw観測を正本としてNORITZ日次集計を監査し、実証された不一致だけに修復を限定できるか検証する。",
    "success_criteria": [
      {
        "id": "SC-001",
        "description_en": "Every reconstructable field in each audited daily row is independently compared with a raw-derived value.",
        "description_ja": "監査対象の日次行について、再構築可能な全項目をRaw由来値と独立比較する。"
      },
      {
        "id": "SC-002",
        "description_en": "Only demonstrated mismatches are eligible for repair; matching fields remain unchanged.",
        "description_ja": "実証された不一致だけを修復対象とし、一致列は変更しない。"
      },
      {
        "id": "SC-003",
        "description_en": "sample_count is derived from admitted retained observations, with missing observations remaining missing rather than being converted to zero or forced to 1,440.",
        "description_ja": "sample_countは採用された保持観測から算出し、欠測を0へ変換せず、1,440へ強制しない。"
      }
    ]
  },
  "scope": {
    "included": [
      "Raspberry Pi one-minute NORITZ hybrid water-heater collector",
      "retained private one-minute raw observations and a pre-archive backup",
      "daily aggregate rows derived from the raw observations",
      "all 21 daily aggregate columns including status and note",
      "field-by-field read-only reconciliation",
      "verification of the current Apps Script status and note rules"
    ],
    "excluded": [
      "Re-opening the AIEL-2026-0003 conclusion about network access to heat-pump electrical power or energy",
      "Treating missing one-minute samples as zero-valued measurements",
      "Forcing sample_count to 1,440 independently of retained raw observations",
      "Changing production daily rows without evidence of a mismatch",
      "Publication excludes authentication or authorization secrets, identifying information, private raw observation data, and sensitive internal system or network details that are not needed to understand or reproduce the experiment."
    ],
    "limitations": [
      "The audited completed-day range is 2026-08-09 through 2026-09-05 JST; the then-current 2026-09-06 row was excluded because it was still accumulating at the audit snapshot.",
      "The result demonstrates consistency for the audited retained range and does not guarantee that future daily rows will remain mismatch-free.",
      "The mismatch-repair branch was not exercised because the audit found no mismatch to repair."
    ]
  },
  "environment": {
    "hardware": [
      {
        "role": "collector_host",
        "manufacturer": "Raspberry Pi",
        "model": "Raspberry Pi 4 Model B",
        "revision": null,
        "serial_number_public": false
      },
      {
        "role": "water_heater_system",
        "manufacturer": "NORITZ",
        "model": "Hybrid water-heater system with RC-G057MPW-2 remote-controller environment",
        "revision": null,
        "serial_number_public": false
      }
    ],
    "software": [
      {"name": "Raspberry Pi OS", "version": null, "role": "collector host operating system"},
      {"name": "systemd", "version": null, "role": "collector scheduling"},
      {"name": "Google Sheets", "version": null, "role": "private raw and daily aggregate data store"},
      {"name": "Google Apps Script", "version": null, "role": "daily derivation and finalization logic"}
    ],
    "firmware": [],
    "network": {
      "type": "private_residential_network_and_cloud_sync",
      "ip_addresses_redacted": true,
      "protocols_observed": []
    },
    "environmental_conditions": []
  },
  "hypotheses": [
    {
      "id": "H-001",
      "statement_en": "Retained one-minute raw observations are sufficiently complete and granular to reconstruct the stored daily table for the audited range.",
      "statement_ja": "保持1分Raw観測は、監査範囲の保存済み日次テーブルを再構築するのに十分な粒度と情報を持つ。",
      "status": "SUPPORTED",
      "created_at": "2026-08-31T00:00:00+09:00",
      "evidence_refs": ["O-005", "O-006"]
    },
    {
      "id": "H-002",
      "statement_en": "Historical daily values remained stale or inconsistent after collector changes in the audited range.",
      "statement_ja": "監査範囲では、collector変更後も過去日次値がstaleまたは不整合のまま残っている。",
      "status": "NOT_SUPPORTED_IN_AUDITED_RANGE",
      "created_at": "2026-09-06T00:00:00+09:00",
      "evidence_refs": ["O-005", "O-007"]
    },
    {
      "id": "H-003",
      "statement_en": "Selective mismatch repair can be exercised without changing fields that already match raw evidence.",
      "statement_ja": "Raw証拠と一致済みの列を変更せず、不一致列だけの選択的修復を実行できる。",
      "status": "UNTESTED_REPAIR_PATH_NOT_REQUIRED",
      "created_at": "2026-09-06T00:00:00+09:00",
      "evidence_refs": ["O-004", "O-005"]
    }
  ],
  "procedures": [
    {
      "id": "P-001",
      "sequence": 1,
      "description_en": "Reconstruct completed daily rows from retained one-minute raw observations under explicit admission rules.",
      "description_ja": "明示した採用規則に従って、保持1分Rawから完了済み日次行を再構築する。",
      "status": "EXECUTED"
    },
    {
      "id": "P-002",
      "sequence": 2,
      "description_en": "Compare all reconstructable fields with stored daily values and classify each comparison.",
      "description_ja": "再構築可能な全項目を保存済み日次値と比較し、各比較を分類する。",
      "status": "EXECUTED"
    },
    {
      "id": "P-003",
      "sequence": 3,
      "description_en": "Inspect the current Apps Script to establish the deterministic status and note rules.",
      "description_ja": "現行Apps Scriptを確認し、statusとnoteの決定論的生成規則を確定する。",
      "status": "EXECUTED"
    },
    {
      "id": "P-004",
      "sequence": 4,
      "description_en": "Repair only demonstrated mismatches; if none exist, preserve the production table unchanged.",
      "description_ja": "実証された不一致だけを修復し、不一致がなければ本番テーブルを変更しない。",
      "status": "EXECUTED_NO_CHANGES_REQUIRED"
    }
  ],
  "actions": [
    {
      "id": "A-001",
      "type": "historical_reconstruction_request",
      "description": {
        "en": "Historical daily aggregates were designated for a raw-first read-only audit before any repair.",
        "ja": "修復前に過去日次集計をRaw優先で読み取り専用監査する方針を指定。"
      },
      "actor": {"type": "HUMAN", "role": "operator"},
      "state": "EXECUTED",
      "executed_at": null,
      "result_refs": ["O-004", "O-005"]
    },
    {
      "id": "A-002",
      "type": "current_source_provision",
      "description": {
        "en": "The current Apps Script source needed to verify the status and note derivation rules was provided for the audit.",
        "ja": "status・note派生規則の確認に必要な現行Apps Scriptソースを監査用に提供。"
      },
      "actor": {"type": "HUMAN", "role": "operator"},
      "state": "EXECUTED",
      "executed_at": null,
      "result_refs": ["O-006"]
    },
    {
      "id": "A-003",
      "type": "read_only_full_column_audit",
      "description": {
        "en": "A read-only audit compared 21 daily columns for 28 completed JST days with independently reconstructed values.",
        "ja": "読み取り専用監査で、完了済みJST 28日分の21日次列を独立再構築値と比較。"
      },
      "actor": {"type": "AI", "role": "audit analyst"},
      "state": "EXECUTED",
      "executed_at": "2026-09-07T00:13:41+09:00",
      "result_refs": ["O-005", "O-006", "O-007"]
    }
  ],
  "observations": [
    {
      "id": "O-001",
      "timestamp": null,
      "description_en": "The NORITZ collector uses one-minute raw observations as the intended sampling basis for the daily dataset.",
      "description_ja": "NORITZ collectorは日次データセットの収集基盤として1分Raw観測を使用する。",
      "observation_type": "system_configuration",
      "source_type": "retained_project_activity",
      "artifact_refs": [],
      "quality": "VALID"
    },
    {
      "id": "O-002",
      "timestamp": null,
      "description_en": "sample_count represents admitted one-minute observations rather than a value forced to 1,440.",
      "description_ja": "sample_countは1,440へ固定する値ではなく、採用された1分観測数を表す。",
      "observation_type": "data_semantics",
      "source_type": "collector_and_derivation_logic",
      "artifact_refs": [],
      "quality": "VALID"
    },
    {
      "id": "O-003",
      "timestamp": null,
      "description_en": "Historical daily values were suspected of possibly requiring raw-based reconstruction after collector changes.",
      "description_ja": "collector変更後の過去日次値がRaw基準の再構築を要する可能性が疑われた。",
      "observation_type": "audit_trigger",
      "source_type": "retained_project_activity",
      "artifact_refs": [],
      "quality": "VALID"
    },
    {
      "id": "O-004",
      "timestamp": null,
      "description_en": "The repair scope was constrained so that mutation was allowed only for demonstrated field-level mismatches.",
      "description_ja": "変更対象は列単位で実証された不一致だけに限定された。",
      "observation_type": "procedure_decision",
      "source_type": "operator_instruction",
      "artifact_refs": [],
      "quality": "VALID"
    },
    {
      "id": "O-005",
      "timestamp": "2026-09-07T00:13:41+09:00",
      "description_en": "For 28 completed JST days from 2026-08-09 through 2026-09-05, all 21 daily columns were reconstructable and all 588 date-by-field comparisons matched: MATCH=588, MISMATCH=0, NOT_RECONSTRUCTABLE_FROM_RETAINED_RAW=0.",
      "description_ja": "2026-08-09から2026-09-05までの完了済みJST 28日について、21日次列すべてを再構築でき、588項目すべてが一致した。MATCH=588、MISMATCH=0、NOT_RECONSTRUCTABLE_FROM_RETAINED_RAW=0。",
      "observation_type": "field_level_reconciliation",
      "source_type": "private_retained_raw_and_daily_aggregate",
      "artifact_refs": ["DA-001", "DA-002", "DA-003"],
      "quality": "VALID"
    },
    {
      "id": "O-006",
      "timestamp": "2026-09-07T00:13:41+09:00",
      "description_en": "Current Apps Script defines a completed past day as 日次確定 only when observed_hours >= 23.5 and sample_count >= 1200; current days are 集計中, incomplete past days are 観測不完全, and an invalid gas delta is 要確認. note is generated deterministically from this state and residual-hot-water availability.",
      "description_ja": "現行Apps Scriptでは、完了済み過去日はobserved_hours >= 23.5かつsample_count >= 1200の場合のみ日次確定となり、当日は集計中、不完全な過去日は観測不完全、gas delta無効時は要確認となる。noteはこの状態と残湯量可用性から決定論的に生成される。",
      "observation_type": "source_code_rule_verification",
      "source_type": "current_apps_script_source",
      "artifact_refs": ["DA-003"],
      "quality": "VALID"
    },
    {
      "id": "O-007",
      "timestamp": "2026-09-07T00:13:41+09:00",
      "description_en": "No duplicate source key was found in the audited reconstruction and no production daily field required modification.",
      "description_ja": "監査した再構築ではsource key重複は検出されず、本番日次列に修正が必要な項目はなかった。",
      "observation_type": "no_op_repair_result",
      "source_type": "read_only_audit",
      "artifact_refs": ["DA-001", "DA-002"],
      "quality": "VALID"
    }
  ],
  "claims": [
    {
      "id": "C-001",
      "statement_en": "Retained one-minute raw observations are an appropriate Evidence layer for auditing the derived daily table in this collector architecture.",
      "statement_ja": "このcollector architectureでは、保持1分Raw観測は派生日次テーブルを監査する適切なEvidence Layerである。",
      "evidence_state": "VERIFIED",
      "confidence": "HIGH",
      "evidence_refs": ["O-001", "O-005", "O-006"],
      "source_refs": []
    },
    {
      "id": "C-002",
      "statement_en": "sample_count must be derived from admitted retained observations rather than forced to 1,440; values below 1,440 can be valid.",
      "statement_ja": "sample_countは1,440へ強制せず採用された保持観測から算出すべきであり、1,440未満でも正当な値になり得る。",
      "evidence_state": "VERIFIED",
      "confidence": "HIGH",
      "evidence_refs": ["O-002", "O-005", "O-006"],
      "source_refs": []
    },
    {
      "id": "C-003",
      "statement_en": "Within the audited 28-day range, no stored daily field mismatched the retained one-minute evidence and current derivation rules.",
      "statement_ja": "監査した28日間では、保存済み日次列に保持1分Evidenceおよび現行派生規則との不一致は存在しなかった。",
      "evidence_state": "VERIFIED",
      "confidence": "HIGH",
      "evidence_refs": ["O-005", "O-006"],
      "source_refs": []
    },
    {
      "id": "C-004",
      "statement_en": "Because MISMATCH=0, evidence-preserving selective reconstruction requires no production mutation for the audited range.",
      "statement_ja": "MISMATCH=0であるため、Evidenceを保全する選択的再構築では監査範囲の本番変更は不要である。",
      "evidence_state": "VERIFIED",
      "confidence": "HIGH",
      "evidence_refs": ["O-005", "O-007"],
      "source_refs": []
    }
  ],
  "analysis": [
    {
      "id": "AN-001",
      "method": "raw_to_derived_reconciliation",
      "summary_en": "Retained one-minute observations were normalized by unique source key and observation time, grouped by JST day, independently aggregated, and compared field by field with stored daily rows. Current Apps Script supplied the exact status and note rules, completing the 21-column reconstruction.",
      "summary_ja": "保持1分観測を一意source keyと観測時刻で正規化し、JST日付ごとに独立集計して保存日次行と列単位で比較した。現行Apps Scriptからstatusとnoteの正確な規則を確認し、21列すべての再構築を完了した。",
      "evidence_refs": ["O-005", "O-006", "O-007"]
    }
  ],
  "results": {
    "status": "COMPLETED",
    "summary_en": "The read-only audit completed for 28 completed JST days and all 21 daily columns. All 588 date-by-field comparisons matched; MISMATCH=0 and NOT_RECONSTRUCTABLE_FROM_RETAINED_RAW=0. No production daily value was rewritten.",
    "summary_ja": "読み取り専用監査を完了済みJST 28日・全21日次列について完了した。588項目はすべて一致し、MISMATCH=0、NOT_RECONSTRUCTABLE_FROM_RETAINED_RAW=0だった。本番日次値は書き換えていない。",
    "metrics": [
      {"name": "audited_completed_days", "value": 28, "unit": "days", "quality": "VALID"},
      {"name": "audited_daily_columns", "value": 21, "unit": "columns", "quality": "VALID"},
      {"name": "field_day_comparisons", "value": 588, "unit": "comparisons", "quality": "VALID"},
      {"name": "match_count", "value": 588, "unit": "comparisons", "quality": "VALID"},
      {"name": "mismatch_count", "value": 0, "unit": "comparisons", "quality": "VALID"},
      {"name": "not_reconstructable_count", "value": 0, "unit": "comparisons", "quality": "VALID"},
      {"name": "production_fields_modified", "value": 0, "unit": "fields", "quality": "VALID"},
      {"name": "duplicate_source_key_count", "value": 0, "unit": "duplicates", "quality": "VALID"},
      {"name": "daily_complete_observed_hours_threshold", "value": 23.5, "unit": "hours", "quality": "VALID"},
      {"name": "daily_complete_sample_count_threshold", "value": 1200, "unit": "samples", "quality": "VALID"}
    ],
    "established_claim_refs": ["C-001", "C-002", "C-003", "C-004"],
    "unresolved_claim_refs": [],
    "disproven_claim_refs": []
  },
  "conclusion": {
    "en": "AIEL-2026-0009 completed as a zero-mismatch data-integrity audit. For 28 completed JST days from 2026-08-09 through 2026-09-05, all 21 NORITZ daily aggregate columns were reproducible from retained one-minute evidence plus the current derivation rules. All 588 comparisons matched, so no production change was justified. sample_count below 1,440 is not intrinsically erroneous; the implemented completed-day rule requires observed_hours >= 23.5 and sample_count >= 1200 while the stored count remains the admitted raw-observation count.",
    "ja": "AIEL-2026-0009はMISMATCH=0のデータ完全性監査として完了した。2026-08-09から2026-09-05までの完了済みJST 28日について、NORITZ日次集計21列すべてを保持1分Evidenceと現行派生規則から再現でき、588項目は全て一致したため、本番変更の根拠はなかった。sample_countが1,440未満であること自体は異常ではなく、完了済み過去日の日次確定条件はobserved_hours >= 23.5かつsample_count >= 1200であり、保存件数自体は採用されたRaw観測数である。",
    "evidence_basis_refs": ["O-005", "O-006", "O-007", "C-001", "C-002", "C-003", "C-004"],
    "remaining_uncertainties": [
      "The audit does not guarantee that future daily rows will remain mismatch-free."
    ],
    "recommended_next_actions": [
      "Re-run the same read-only audit after future collector or aggregation-code changes when data-integrity verification is warranted."
    ]
  },
  "open_questions": [],
  "data_artifacts": [
    {
      "id": "DA-001",
      "name": "Private one-minute NORITZ raw observations and pre-archive backup",
      "type": "raw_timeseries",
      "availability": "PRIVATE_RETAINED",
      "public": false
    },
    {
      "id": "DA-002",
      "name": "Private daily aggregate rows",
      "type": "derived_table",
      "availability": "PRIVATE_RETAINED",
      "public": false
    },
    {
      "id": "DA-003",
      "name": "Current Apps Script hybrid daily derivation source",
      "type": "source_code_evidence",
      "availability": "PRIVATE_RETAINED",
      "public": false
    },
    {
      "id": "DA-004",
      "name": "Sanitized aggregate reconstruction audit summary",
      "type": "sanitized_aggregate_audit",
      "availability": "PUBLIC_RETAINED",
      "public": true,
      "path": "/data/experiments/AIEL-2026-0009/audit-summary.json"
    }
  ],
  "artifact_availability": {
    "raw_data": {"retention": "RETAINED", "public": false},
    "source_code": {"retention": "PARTIAL", "public": false},
    "derived_daily_data": {"retention": "RETAINED", "public": false},
    "sanitized_reconstruction_audit": {"retention": "RETAINED", "public": true}
  },
  "sources": [],
  "provenance": {
    "generated_by": "GPT-5.6 Sol assisted analysis and documentation",
    "ai_systems": ["GPT-5.6 Sol"],
    "human_roles": ["operator", "publication approver"],
    "automation_systems": ["Google Apps Script", "GitHub Actions"],
    "human_editing": "The operator selected the audit scope, provided the current derivation source, and explicitly authorized bilingual publication.",
    "no_fabricated_execution": true
  },
  "publication": {
    "public": false,
    "public_candidate": true,
    "draft_only": false,
    "languages": {
      "en": {"published": false, "url": null, "canonical": false},
      "ja": {"published": false, "url": null, "canonical": false}
    },
    "machine_readable_url": null,
    "primary_language": "en",
    "secondary_language": "ja",
    "publication_blockers": [],
    "content_review_protocol": "pre-publication-content-review-v1.2",
    "content_review_decision": "PASS",
    "reviewer_mode": "SAME_AGENT_COLD_READ",
    "sanitized_audit_artifact": "/data/experiments/AIEL-2026-0009/audit-summary.json"
  },
  "relationships": [
    {
      "type": "EXTENDS",
      "target_experiment_id": "AIEL-2026-0003",
      "description_en": "AIEL-2026-0009 uses the retained one-minute collector architecture documented in AIEL-2026-0003 as the basis for a raw-to-daily data-integrity experiment without reopening the earlier protocol conclusion.",
      "description_ja": "AIEL-2026-0009はAIEL-2026-0003で記録した1分collector architectureをRaw→日次データ完全性Experimentの基盤として利用し、先行protocol結論は再検討しない。"
    }
  ],
  "revisions": [
    {
      "revision": 1,
      "timestamp": "2026-09-06T22:42:29+09:00",
      "type": "INITIAL_REGISTRATION",
      "summary": "Created the canonical in-progress record."
    },
    {
      "revision": 2,
      "timestamp": "2026-09-07T00:13:41+09:00",
      "type": "ANALYSIS_ADDED",
      "summary": "Completed the read-only 21-column audit for 28 completed days and recorded MATCH=588, MISMATCH=0."
    },
    {
      "revision": 3,
      "timestamp": "2026-09-07T00:31:55+09:00",
      "type": "PUBLICATION_REVIEW",
      "summary": "Added the sanitized aggregate audit artifact, completed the bilingual semantic publication review, cleared publication blockers, and staged the public release without advancing last_verified."
    }
  ],
  "security": {
    "contains_sensitive_data": true,
    "redactions_applied": true,
    "secret_scan_performed": false,
    "publication_reviewed": true
  }
}
