Skip to content

Define conservative cooldown behavior during sensor faults #4

Description

@danielbrownjr

Follow-up from PR #1 interlock review. This is important safety-policy work, but it is not a Phase-0 merge blocker.

Problem

Current blocked() cooldown behavior only commands fan output when sensors_ok() is true, and sensors_ok() requires all required temperature sensors to be valid and finite.

That means a single failed sensor can suppress cooldown fan output even when another valid sensor still reports residual heat.

Example:

  • chamber sensor: open/invalid
  • outlet sensor: valid and hot
  • case sensor: valid and hot
  • heater: correctly blocked
  • current fan policy: 0% because the aggregate sensor-valid condition fails

The safest behavior is not yet established. We should not casually invent a policy before considering airflow hardware, residual-heat behavior, reboot/brownout handling, and fault recovery.

Decision required

Define the product-level cooldown/fault policy for:

  • one sensor invalid while another valid sensor indicates residual heat;
  • all temperature sensors unavailable or implausible;
  • sensor failure while actively heating;
  • normal stop versus latched fault;
  • reboot/brownout during cooldown;
  • fan failure during required cooldown;
  • minimum/maximum cooldown duration if temperature evidence is unavailable;
  • recovery and fault-clear prerequisites.

Acceptance criteria

  • Conservative cooldown behavior is explicitly documented.
  • The policy distinguishes trustworthy remaining temperature evidence from complete sensor uncertainty.
  • Interlock/fan behavior is updated if required.
  • Host tests cover the chosen fault-state transitions.
  • Bench/HIL tests demonstrate cooldown behavior on release-intent hardware.
  • The safety verification record identifies retained evidence and its location.

Related: PR #1.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions