{"abstract":"A setpoint step produces an unwanted derivative kick.","category":"Discrete control systems","checks":6,"contract":"Return the derivative contribution -gain*(measurement-previous_measurement) for unit sample time, independent of setpoint motion.","evaluation_group":"model-6995f7be44ff3100","failed_approach":"Suppressing derivative whenever the setpoint changes loses simultaneous measurement movement.","family":"z-control_systems-measurement-derivative","id":"FA-11946","implementations":{"attempt":{"sha256":"d509d4ed0dc1d219c1cd6766c54da5ac925a8c5c6df044c844dff1924c94d092","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(sp, old_sp, y, old_y, gain):\n    return 0 if sp != old_sp else -gain*(y-old_y)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('setpoint only', solve(N, 0, 0, 0, 2), 0)\ncheck('both move', solve(N, 0, N, 0, 2), -2*N)\ncheck('measurement rises', solve(0, 0, N, 0, 3), -3*N)\ncheck('measurement falls', solve(0, 0, 0, N, 3), 3*N)\ncheck('stationary', solve(N, N, N, N, 2), 0)\ncheck('disabled gain', solve(N, 0, N, 0, 0), 0)\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":"05f1064264843596e7db4fd9ac4bf6ab960c181cba24701dd7fcad97e2c4a6ee","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(sp, old_sp, y, old_y, gain):\n    return gain*((sp-y)-(old_sp-old_y))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('setpoint only', solve(N, 0, 0, 0, 2), 0)\ncheck('both move', solve(N, 0, N, 0, 2), -2*N)\ncheck('measurement rises', solve(0, 0, N, 0, 3), -3*N)\ncheck('measurement falls', solve(0, 0, 0, N, 3), 3*N)\ncheck('stationary', solve(N, N, N, N, 2), 0)\ncheck('disabled gain', solve(N, 0, N, 0, 0), 0)\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"},"fixed":{"sha256":"ec5a836357b1383910906369e5455109f4e31f71341c68f3c4b84fadde347b8f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(sp, old_sp, y, old_y, gain):\n    return -gain*(y-old_y)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('setpoint only', solve(N, 0, 0, 0, 2), 0)\ncheck('both move', solve(N, 0, N, 0, 2), -2*N)\ncheck('measurement rises', solve(0, 0, N, 0, 3), -3*N)\ncheck('measurement falls', solve(0, 0, 0, N, 3), 3*N)\ncheck('stationary', solve(N, N, N, N, 2), 0)\ncheck('disabled gain', solve(N, 0, N, 0, 0), 0)\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-measurement-derivative","generated_at":"2026-09-29T14:38:52.391774+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.","repair":"Differentiate measurement with negative sign.","root_cause":"The derivative uses error differences including setpoint changes.","sha256":"b6125313a6f12f541fa194f01f83c31198657c9c45c9ded23b39ae83fb3456ab","title":"A setpoint step produces an unwanted derivative kick · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.965,"exit_code":1,"observations":[{"actual":0,"check":"setpoint only","expected":0,"passed":true},{"actual":0,"check":"both move","expected":-2,"passed":false},{"actual":-3,"check":"measurement rises","expected":-3,"passed":true},{"actual":3,"check":"measurement falls","expected":3,"passed":true},{"actual":0,"check":"stationary","expected":0,"passed":true},{"actual":0,"check":"disabled gain","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"setpoint only\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"both move\", \"actual\": 0, \"expected\": -2, \"passed\": false}, {\"check\": \"measurement rises\", \"actual\": -3, \"expected\": -3, \"passed\": true}, {\"check\": \"measurement falls\", \"actual\": 3, \"expected\": 3, \"passed\": true}, {\"check\": \"stationary\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"disabled gain\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.683,"exit_code":1,"observations":[{"actual":2,"check":"setpoint only","expected":0,"passed":false},{"actual":0,"check":"both move","expected":-2,"passed":false},{"actual":-3,"check":"measurement rises","expected":-3,"passed":true},{"actual":3,"check":"measurement falls","expected":3,"passed":true},{"actual":0,"check":"stationary","expected":0,"passed":true},{"actual":0,"check":"disabled gain","expected":0,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"setpoint only\", \"actual\": 2, \"expected\": 0, \"passed\": false}, {\"check\": \"both move\", \"actual\": 0, \"expected\": -2, \"passed\": false}, {\"check\": \"measurement rises\", \"actual\": -3, \"expected\": -3, \"passed\": true}, {\"check\": \"measurement falls\", \"actual\": 3, \"expected\": 3, \"passed\": true}, {\"check\": \"stationary\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"disabled gain\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.795,"exit_code":0,"observations":[{"actual":0,"check":"setpoint only","expected":0,"passed":true},{"actual":-2,"check":"both move","expected":-2,"passed":true},{"actual":-3,"check":"measurement rises","expected":-3,"passed":true},{"actual":3,"check":"measurement falls","expected":3,"passed":true},{"actual":0,"check":"stationary","expected":0,"passed":true},{"actual":0,"check":"disabled gain","expected":0,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"setpoint only\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"both move\", \"actual\": -2, \"expected\": -2, \"passed\": true}, {\"check\": \"measurement rises\", \"actual\": -3, \"expected\": -3, \"passed\": true}, {\"check\": \"measurement falls\", \"actual\": 3, \"expected\": 3, \"passed\": true}, {\"check\": \"stationary\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"disabled gain\", \"actual\": 0, \"expected\": 0, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}