Two-step validation cycle over a declared model specification, its stated inputs and its reported outputs, routed in through the shipped workbook bridge. Step 1 recomputes the reported outputs independently and returns a per-record and aggregate tolerance diff with the failing segment named, so an independent party reruns the model offline and reaches the same verdict. Step 2 runs the deterministic-given-data battery -- discriminatory power, population and characteristic stability, back-test outcome against predicted, and calibration comparison -- each scored against policy-supplied thresholds. Step 1 is gated hold whenever replication does not succeed, including the honest not-replicable-as-specified verdict. Step 2 is gated dual_control(2) for validation sign-off, where counting distinct approver identities is what mechanically evidences that the validator is independent of the developer; a test breach holds the sign-off for review. The model owner is bound as a separate role on the subject artifact so owner and validator are named apart. This surface evidences replication and testing only. It states no validation opinion, no view on conceptual soundness or fitness for use, and no sufficiency claim under any supervisory model-risk guidance.
hold, including a not-replicable-as-specified verdict.replicate_model_outputs{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "replicate_model_outputs",
"arguments": {}
},
"id": 1
}
dual_control(2). Counting distinct approver identities is what mechanically evidences that the validator is independent of the developer, and the model owner is bound as a separate role so owner and validator are named apart. A test breach holds the sign-off for review.run_model_test_battery{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "run_model_test_battery",
"arguments": {}
},
"id": 1
}