{"abstract":"The decoded time state disagrees with the explicit regression oracle for state.","category":"Time representation","checks":13,"contract":"Clock quality state is determined from oscillator validity, acquisition lock count, elapsed time since last sync, max holdover, phase jump and lock threshold. Unknown oscillator is invalid; otherwise large phase jump requires reacquisition, recent sufficient lock is synchronized, old but bounded history is holdover, and missing/expired history is unsynchronized. Return usability and conservative uncertainty growth for holdover only.","contract_signature":"r","evaluation_group":"s3-time-clock_lock_holdover","failed_approach":"The partial correction still substitutes 'invalid' if not r['oscillator'] else ('locked' if recent and locked else ('holdover' if holdover else 'unsynced')) at the same fault site.","family":"s3-time_representation-clock-lock-holdover-state","id":"FA-18521","implementations":{"attempt":{"sha256":"83bd930530d19a1ef3f00ff32c7a6c072e5cc2dbae74a125c50d45e716bd5ea4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(r):\n    age = r['now'] - r['last_sync']\n    history = r['has_sync'] and age >= 0\n    jumped = abs(r['phase_jump']) > r['jump_limit']\n    locked = r['lock_count'] >= r['required']\n    recent = history and age <= r['fresh_window']\n    holdover = history and age <= r['max_holdover']\n    state = 'invalid' if not r['oscillator'] else ('locked' if recent and locked else ('holdover' if holdover else 'unsynced'))\n    growth = (age * r['drift'] + 999) // 1000 if state == 'holdover' else 0\n    error = r['base_error'] + growth if state in ('locked','holdover') else None\n    usable = state in ('locked','holdover') and error <= r['error_limit']\n    return [state,error,usable]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 2}), ['locked', 2, True])\ncheck('fixture 2', solve({'now': 105, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 3}), ['locked', 2, True])\ncheck('fixture 3', solve({'now': 106, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 2}), ['holdover', 3, False])\ncheck('fixture 4', solve({'now': 120, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['holdover', 4, True])\ncheck('fixture 5', solve({'now': 121, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['unsynced', None, False])\ncheck('fixture 6', solve({'now': 99, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['unsynced', None, False])\ncheck('fixture 7', solve({'now': 100, 'last_sync': 100, 'has_sync': False, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['unsynced', None, False])\ncheck('fixture 8', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': -6, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['acquire', None, False])\ncheck('fixture 9', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 5, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['locked', 2, True])\ncheck('fixture 10', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 1, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['holdover', 2, True])\ncheck('fixture 11', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': False, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['invalid', None, False])\ncheck('fixture 12', solve({'now': 110, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['holdover', 3, True])\nvariant = [({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 3, 'error_limit': 2}, ['locked', 3, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 4, 'error_limit': 2}, ['locked', 4, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 5, 'error_limit': 2}, ['locked', 5, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 6, 'error_limit': 2}, ['locked', 6, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 7, 'error_limit': 2}, ['locked', 7, False])]\ncheck(\"variant capture\", solve(variant[N-1][0]), variant[N-1][1])\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":"5eca4eab4eedd1b966301fddbb9979eb348a8f5d6d36298d78ad82bafed8e11e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(r):\n    age = r['now'] - r['last_sync']\n    history = r['has_sync'] and age >= 0\n    jumped = abs(r['phase_jump']) > r['jump_limit']\n    locked = r['lock_count'] >= r['required']\n    recent = history and age <= r['fresh_window']\n    holdover = history and age <= r['max_holdover']\n    state = 'locked' if recent and locked else ('holdover' if holdover else 'unsynced')\n    growth = (age * r['drift'] + 999) // 1000 if state == 'holdover' else 0\n    error = r['base_error'] + growth if state in ('locked','holdover') else None\n    usable = state in ('locked','holdover') and error <= r['error_limit']\n    return [state,error,usable]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 2}), ['locked', 2, True])\ncheck('fixture 2', solve({'now': 105, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 3}), ['locked', 2, True])\ncheck('fixture 3', solve({'now': 106, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 2}), ['holdover', 3, False])\ncheck('fixture 4', solve({'now': 120, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['holdover', 4, True])\ncheck('fixture 5', solve({'now': 121, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['unsynced', None, False])\ncheck('fixture 6', solve({'now': 99, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['unsynced', None, False])\ncheck('fixture 7', solve({'now': 100, 'last_sync': 100, 'has_sync': False, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['unsynced', None, False])\ncheck('fixture 8', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': -6, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['acquire', None, False])\ncheck('fixture 9', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 5, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['locked', 2, True])\ncheck('fixture 10', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 1, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['holdover', 2, True])\ncheck('fixture 11', solve({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': False, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['invalid', None, False])\ncheck('fixture 12', solve({'now': 110, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 2, 'error_limit': 5}), ['holdover', 3, True])\nvariant = [({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 3, 'error_limit': 2}, ['locked', 3, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 4, 'error_limit': 2}, ['locked', 4, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 5, 'error_limit': 2}, ['locked', 5, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 6, 'error_limit': 2}, ['locked', 6, False]), ({'now': 100, 'last_sync': 100, 'has_sync': True, 'phase_jump': 0, 'jump_limit': 5, 'lock_count': 3, 'required': 3, 'fresh_window': 5, 'max_holdover': 20, 'oscillator': True, 'drift': 100, 'base_error': 7, 'error_limit': 2}, ['locked', 7, False])]\ncheck(\"variant capture\", solve(variant[N-1][0]), variant[N-1][1])\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":"Deterministic integer reference model with stipulated units and policies; not a complete clock, wire standard or platform implementation. 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":"s3-time_representation-clock-lock-holdover-state","generated_at":"2026-09-29T14:39:58.580228+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Clock transfer and timestamp consumers require preserved coordinate, phase, validity and elapsed-time semantics.","root_cause":"Clock lock state overrides oscillator fault or phase-jump reacquisition.","sha256":"26ca567a251b23b4944ba83c9244f97f4ca4c99bd3862ce31db3810cb14604d8","title":"Clock lock state overrides oscillator fault or phase-jump reacquisition · 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":45.125,"exit_code":1,"observations":[{"actual":["locked",2,true],"check":"fixture 1","expected":["locked",2,true],"passed":true},{"actual":["locked",2,true],"check":"fixture 2","expected":["locked",2,true],"passed":true},{"actual":["holdover",3,false],"check":"fixture 3","expected":["holdover",3,false],"passed":true},{"actual":["holdover",4,true],"check":"fixture 4","expected":["holdover",4,true],"passed":true},{"actual":["unsynced",null,false],"check":"fixture 5","expected":["unsynced",null,false],"passed":true},{"actual":["unsynced",null,false],"check":"fixture 6","expected":["unsynced",null,false],"passed":true},{"actual":["unsynced",null,false],"check":"fixture 7","expected":["unsynced",null,false],"passed":true},{"actual":["locked",2,true],"check":"fixture 8","expected":["acquire",null,false],"passed":false},{"actual":["locked",2,true],"check":"fixture 9","expected":["locked",2,true],"passed":true},{"actual":["holdover",2,true],"check":"fixture 10","expected":["holdover",2,true],"passed":true},{"actual":["invalid",null,false],"check":"fixture 11","expected":["invalid",null,false],"passed":true},{"actual":["holdover",3,true],"check":"fixture 12","expected":["holdover",3,true],"passed":true},{"actual":["locked",3,false],"check":"variant capture","expected":["locked",3,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [\"locked\", 2, true], \"expected\": [\"locked\", 2, true], \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": [\"locked\", 2, true], \"expected\": [\"locked\", 2, true], \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": [\"holdover\", 3, false], \"expected\": [\"holdover\", 3, false], \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": [\"holdover\", 4, true], \"expected\": [\"holdover\", 4, true], \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": [\"unsynced\", null, false], \"expected\": [\"unsynced\", null, false], \"passed\": true}, {\"check\": \"fixture 6\", \"actual\": [\"unsynced\", null, false], \"expected\": [\"unsynced\", null, false], \"passed\": true}, {\"check\": \"fixture 7\", \"actual\": [\"unsynced\", null, false], \"expected\": [\"unsynced\", null, false], \"passed\": true}, {\"check\": \"fixture 8\", \"actual\": [\"locked\", 2, true], \"expected\": [\"acquire\", null, false], \"passed\": false}, {\"check\": \"fixture 9\", \"actual\": [\"locked\", 2, true], \"expected\": [\"locked\", 2, true], \"passed\": true}, {\"check\": \"fixture 10\", \"actual\": [\"holdover\", 2, true], \"expected\": [\"holdover\", 2, true], \"passed\": true}, {\"check\": \"fixture 11\", \"actual\": [\"invalid\", null, false], \"expected\": [\"invalid\", null, false], \"passed\": true}, {\"check\": \"fixture 12\", \"actual\": [\"holdover\", 3, true], \"expected\": [\"holdover\", 3, true], \"passed\": true}, {\"check\": \"variant capture\", \"actual\": [\"locked\", 3, false], \"expected\": [\"locked\", 3, false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.446,"exit_code":1,"observations":[{"actual":["locked",2,true],"check":"fixture 1","expected":["locked",2,true],"passed":true},{"actual":["locked",2,true],"check":"fixture 2","expected":["locked",2,true],"passed":true},{"actual":["holdover",3,false],"check":"fixture 3","expected":["holdover",3,false],"passed":true},{"actual":["holdover",4,true],"check":"fixture 4","expected":["holdover",4,true],"passed":true},{"actual":["unsynced",null,false],"check":"fixture 5","expected":["unsynced",null,false],"passed":true},{"actual":["unsynced",null,false],"check":"fixture 6","expected":["unsynced",null,false],"passed":true},{"actual":["unsynced",null,false],"check":"fixture 7","expected":["unsynced",null,false],"passed":true},{"actual":["locked",2,true],"check":"fixture 8","expected":["acquire",null,false],"passed":false},{"actual":["locked",2,true],"check":"fixture 9","expected":["locked",2,true],"passed":true},{"actual":["holdover",2,true],"check":"fixture 10","expected":["holdover",2,true],"passed":true},{"actual":["locked",2,true],"check":"fixture 11","expected":["invalid",null,false],"passed":false},{"actual":["holdover",3,true],"check":"fixture 12","expected":["holdover",3,true],"passed":true},{"actual":["locked",3,false],"check":"variant capture","expected":["locked",3,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [\"locked\", 2, true], \"expected\": [\"locked\", 2, true], \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": [\"locked\", 2, true], \"expected\": [\"locked\", 2, true], \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": [\"holdover\", 3, false], \"expected\": [\"holdover\", 3, false], \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": [\"holdover\", 4, true], \"expected\": [\"holdover\", 4, true], \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": [\"unsynced\", null, false], \"expected\": [\"unsynced\", null, false], \"passed\": true}, {\"check\": \"fixture 6\", \"actual\": [\"unsynced\", null, false], \"expected\": [\"unsynced\", null, false], \"passed\": true}, {\"check\": \"fixture 7\", \"actual\": [\"unsynced\", null, false], \"expected\": [\"unsynced\", null, false], \"passed\": true}, {\"check\": \"fixture 8\", \"actual\": [\"locked\", 2, true], \"expected\": [\"acquire\", null, false], \"passed\": false}, {\"check\": \"fixture 9\", \"actual\": [\"locked\", 2, true], \"expected\": [\"locked\", 2, true], \"passed\": true}, {\"check\": \"fixture 10\", \"actual\": [\"holdover\", 2, true], \"expected\": [\"holdover\", 2, true], \"passed\": true}, {\"check\": \"fixture 11\", \"actual\": [\"locked\", 2, true], \"expected\": [\"invalid\", null, false], \"passed\": false}, {\"check\": \"fixture 12\", \"actual\": [\"holdover\", 3, true], \"expected\": [\"holdover\", 3, true], \"passed\": true}, {\"check\": \"variant capture\", \"actual\": [\"locked\", 3, false], \"expected\": [\"locked\", 3, 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."}}