{"abstract":"A relay forgets its state inside the hysteresis band.","category":"Discrete control systems","checks":6,"contract":"Schmitt relay with low<high: boundary equality switches; open interval retains previous boolean output.","contract_signature":"on, value, low, high","evaluation_group":"model-ce4e9543e21452c8","failed_approach":"Using the midpoint while already on shrinks the off hysteresis boundary.","family":"z-control_systems-schmitt-memory","id":"FA-11951","implementations":{"attempt":{"sha256":"895fda49e27cbb285fa4bcb2638b208b18e90c03b4c7bf048031e6f12dbce68f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(on, value, low, high):\n    return value >= ((low+high)//2 if on else high)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('hold on', solve(True, N, 0, 4*N), True)\ncheck('hold off', solve(False, 3*N, 0, 4*N), False)\ncheck('upper equality', solve(False, 4*N, 0, 4*N), True)\ncheck('lower equality', solve(True, 0, 0, 4*N), False)\ncheck('above', solve(False, 5*N, 0, 4*N), True)\ncheck('below', solve(True, -N, 0, 4*N), False)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"b6acc94428dd6a9f4b8b2df411cd6a033b7a2c58b3338ce32a1df237eda1b285","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(on, value, low, high):\n    return value >= high\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('hold on', solve(True, N, 0, 4*N), True)\ncheck('hold off', solve(False, 3*N, 0, 4*N), False)\ncheck('upper equality', solve(False, 4*N, 0, 4*N), True)\ncheck('lower equality', solve(True, 0, 0, 4*N), False)\ncheck('above', solve(False, 5*N, 0, 4*N), True)\ncheck('below', solve(True, -N, 0, 4*N), False)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Integer-valued controlled examples only; no physical plant, stability guarantee, timing jitter, or hardware behavior is modeled. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"z-control_systems-schmitt-memory","generated_at":"2026-09-29T14:38:52.398186+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline discrete controller model isolates this state or arithmetic fault; it makes no physical plant or safety claim.","root_cause":"A single upper threshold is evaluated without retaining relay state.","sha256":"e5e3ef77304239a7bcc4386f350dbc663289505ac9b188da43342a9914b2ee01","title":"A relay forgets its state inside the hysteresis band · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.015,"exit_code":1,"observations":[{"actual":false,"check":"hold on","expected":true,"passed":false},{"actual":false,"check":"hold off","expected":false,"passed":true},{"actual":true,"check":"upper equality","expected":true,"passed":true},{"actual":false,"check":"lower equality","expected":false,"passed":true},{"actual":true,"check":"above","expected":true,"passed":true},{"actual":false,"check":"below","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hold on\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"hold off\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"upper equality\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"lower equality\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"above\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"below\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.024,"exit_code":1,"observations":[{"actual":false,"check":"hold on","expected":true,"passed":false},{"actual":false,"check":"hold off","expected":false,"passed":true},{"actual":true,"check":"upper equality","expected":true,"passed":true},{"actual":false,"check":"lower equality","expected":false,"passed":true},{"actual":true,"check":"above","expected":true,"passed":true},{"actual":false,"check":"below","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"hold on\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"hold off\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"upper equality\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"lower equality\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"above\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"below\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}