Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "cite", "solve", "verify_dataset" and 3 more
⟨17 unchanged words⟩ and its address) and the paper (https://doi.org/10.5281/zenodo.23305697//doi.org/10.5281/zenodo.23517223), then the people whose measurements the model ⟨53 unchanged words⟩
⟨130 unchanged words⟩ such answers is not a sign of tampering. A chained solve, from a sealed card run through a coupling (from), takes each handed value in parameters bit for bit: decode it from the run's frame_hex or a _hex value, not a decimal readout, or it is refused as CouplingLedgerBreach. verify_solution verifies a solution later from this request, ⟨95 unchanged words⟩
⟨67 unchanged words⟩ in through a coupling, as run_trajectory takes it. Each handed value goes into parameters bit for bit, read from the run's frame_hex or a _hex value, not a decimal (CouplingLedgerBreach).","properties":{"coupling":{"type": ⟨249 unchanged words⟩
⟨239 unchanged words⟩ issued_at, expires_at and nonce) has its signaturecheckedverified first, against public_key or else this engine's ⟨22 unchanged words⟩ there is none), and nothing is computed. A signed answer a client wrote again in its own spacing or key order has its signature verified over the receipt it carries; where that receipt does not cover the bytes sent, signature names ReceiptDoesNotMatch with written_again, and the answer is computed again: holds, values_hold and differs_at say what changed. The signature of a dataset follows its head's ⟨112 unchanged words⟩ ML-DSA-87 public key (2,592 bytes) tocheckverify the answer's signature with; without it, this ⟨184 unchanged words⟩
⟨22 unchanged words⟩ JSON text. A signature after the receipt ischeckedverified against public_key or else this engine's own key ⟨11 unchanged words⟩ ML-DSA-87 public key (2,592 bytes) tocheckverify the answer's signature with; without it, this ⟨59 unchanged words⟩
⟨256 unchanged words⟩ issued_at, expires_at and nonce) has its signaturecheckedverified first, against public_key or else this engine's ⟨22 unchanged words⟩ there is none), and nothing is computed. A signed answer a client wrote again in its own spacing or key order has its signature verified over the receipt it carries; where that receipt does not cover the bytes sent, signature names ReceiptDoesNotMatch with written_again, and the answer is computed again: holds, values_hold and differs_at say what changed.","properties":{"engine_version":{"type": ⟨108 unchanged words⟩ ML-DSA-87 public key (2,592 bytes) tocheckverify the answer's signature with; without it, this ⟨169 unchanged words⟩
⟨333 unchanged words⟩ issued_at, expires_at and nonce) has its signaturecheckedverified first, against public_key or else this engine's ⟨22 unchanged words⟩ there is none), and nothing is computed. A signed answer a client wrote again in its own spacing or key order has its signature verified over the receipt it carries; where that receipt does not cover the bytes sent, signature names ReceiptDoesNotMatch with written_again, and the answer is computed again: holds, values_hold and differs_at say what changed.","properties":{"chain_seal":{"description": ⟨121 unchanged words⟩ ML-DSA-87 public key (2,592 bytes) tocheckverify the answer's signature with; without it, this ⟨192 unchanged words⟩
Changed the definition of "compute_step", "find_model", "run_dataset" and 8 more
⟨16 unchanged words⟩ and exact hex, with its cryptographic proof (sha256_sealsha384_seal) and a receipt. parameters holds the card's ⟨150 unchanged words⟩
⟨66 unchanged words⟩ ,"run_seal":{"pattern":"^[0-9a-f]{6496}$","type":"string"}},"required ⟨84 unchanged words⟩
Changed the definition of "describe_card", "describe_solver", "find_model" and 5 more
⟨34 unchanged words⟩ first request: what the model is of,howtheitevidencedidbehindagainstitmeasurementin numbers, each input with its unit and range, the names of its stops, and a worked request.Only theThe full form, the answer when form is left out,hasadds each bound's reason, the validation record and each stop'smeaning: it is the form that explains a refusal and the form a result is relied on with.meaning.
Changed the definition of "find_flip", "run_dataset", "run_trajectory" and 3 more
⟨229 unchanged words⟩ ), the ends included, and no newrunsolveafteronce20thosesecondsmadeofarecomputingcounted at 20 s (FLIP_MAX_SECONDS); the pair it gives, sent ⟨116 unchanged words⟩
Changed the definition of "find_model", "list_cards" and "list_solvers"
⟨61 unchanged words⟩ data held back and compared, and accuracy_against_measurement:whetherhow itpasseddid against the pass marksfixed before ititswasrecordcomparedstates); a model's range and stops are in ⟨5 unchanged words⟩ that verdict in one of six words,"met",the word list_cards and list_solvers give on every row: "missedmet
Changed the definition of "find_model", "list_cards", "list_solvers" and 3 more
⟨89 unchanged words⟩ describe_solver. against_measurement gives that verdict in one offivesix words, "met", "missed", "met in part", "calibrated to the record", "held to a reference calculation" or "not ⟨11 unchanged words⟩ every row: it is accuracy and not fit. A model calibrated to the record had its structure or constants chosen with the record it is compared with open, so its comparison is not a blind test, and the original model, compared blind, is served beside it under its own word. The two are separate: a model that ⟨122 unchanged words⟩
Certificate recorded, valid to 2027-01-02
Authorization not required
Added "compute_step" and "design_run"; changed the definition of "find_flip", "find_model", "list_cards" and 10 more (16 tools before, 18 now)
⟨304 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨89 unchanged words⟩ describe_solver. against_measurement gives that verdict in one offourfive words, "met", "missed", "met in part", "held to a reference calculation" or "not held to a measurement", ⟨144 unchanged words⟩
Unknown → Live
First tool surface recorded: 16 tools (server version 0.10.1)
https://mcp.zerotrustphysics.com/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 12 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨116 unchanged words⟩ is still the served model of its thing.A model a newer one supersedes carries superseded_by and comes after it, still served under its own ID.The names it gives (domain and card, ⟨112 unchanged words⟩
⟨230 unchanged words⟩ the plan at 4194304 bytes (OPEN_MAX_DATASET_ANSWER_BYTES) and4000042500 characters, up to about140150 summary rows; a plan of solves holds the ⟨110 unchanged words⟩
before
{"additionalProperties":false,"description":"A plan of runs on one card (domain, card, plan, store and return, all required) or of solves of one solver (solver and plan). Rows <= 100000, steps in total <= 100000000, stored frames <= 16777216; inline: an answer counted from the plan <= 40000 characters, which a plan reaches first, a grid on one axis at about 140 summary rows and a list sooner, its head repeating each run's request (a plan of more than 1000 rows is refused before it is counted, as too large to return inline), and frames <= 10000; solves <= 64. With return \"file\" the answer is the head and the names of the files stored, on a connection started with a directory for them.","properties":{"answer":{"description":"Leave out, or \"summary\", for the head and one short summary row per row: the values it sets, outcome, steps landed, refusal name and seal; \"states\" adds each run's final state in decimals; \"full\" gives every row whole. With return \"file\" the answer is the head and the names of the files whatever this says. Not part of the sealed request. The head and the dataset_seal are the same in all three forms. A summary row holds row, set (the values a grid's or a sample's row sets), outcome, steps_landed, reject and run_seal; the quantities of one row are read by sending its request to run_trajectory with a readout. An ended row is a run that stopped at an end its card declares: it has a run seal, the end's reject name in reject and the sentence naming the end in reject_detail. A refused row is a run the card refused part way: it has a run seal, the refusal's name in reject and its sentence in reject_detail. An unadmitted row is a request turned away before computing: it has no run seal, and its sentence, with the refusal's name in round brackets when the sentence gives one, is its reject_detail; its summary row gives that name in reject. What a sentence that begins \"Physical Failure\" or \"Physical Violation\" means is in the description of run_trajectory. An inline answer is counted from the plan before anything runs, and one above 40000 characters is refused with what to change: a summary row counts 220 characters and the values it sets; with states, each number of the final state adds its name and 28 characters (84 for a 3-vector, 9 for a flag); a whole row counts its own request and 1900 characters, and for each number twice its name and 60 characters (150 for a 3-vector, 9 for a flag); store \"frames\" adds 128 characters for each recorded state to a full answer; the head repeats the request.","enum":["summary","states","full"],"type":"string"},"card":{"type":"string"},"domain":{"type":"string"},"plan":{"description":"A path names one number: initial.<field>, dt_s, or segments[0].load.<field>, with the segment's number in square brackets and [0], [1] or [2] after a 3-vector field for one of its components. steps and record_every are not paths and cannot vary: every row of a grid or a sample takes them from the base run. A value an axis or a draw sets replaces the base's value of that field, and the answer's base_replaced names each field replaced; a 3-vector the base sets whole is replaced only when the paths set all three of its components. Two paths may not set one number. Each row of a grid is held to the card's bounds alone, as each run of a list is: a value outside a bound makes that row unadmitted and the other rows run. A sample's interval or choice outside a bound refuses the plan. One worked plan of each kind, each a whole request: list: {\"domain\":\"energy\",\"card\":\"thermal\",\"plan\":{\"kind\":\"list\",\"runs\":[{\"initial\":{\"temperature_k\":293.15},\"dt_s\":1.0,\"segments\":[{\"steps\":60,\"load\":{\"heat_power_w\":5.0,\"ambient_k\":293.15}}],\"record_every\":60}]},\"store\":\"none\",\"return\":\"inline\"} grid: {\"domain\":\"energy\",\"card\":\"thermal\",\"plan\":{\"kind\":\"grid\",\"base\":{\"initial\":{},\"dt_s\":1.0,\"segments\":[{\"steps\":60,\"load\":{\"ambient_k\":293.15}}],\"record_every\":60},\"axes\":[{\"path\":\"initial.temperature_k\",\"values\":[283.15,293.15]},{\"path\":\"segments[0].load.heat_power_w\",\"values\":[0.0,5.0,10.0]}]},\"store\":\"none\",\"return\":\"inline\"} sample: {\"domain\":\"energy\",\"card\":\"thermal\",\"plan\":{\"kind\":\"sample\",\"base\":{\"initial\":{},\"dt_s\":1.0,\"segments\":[{\"steps\":60,\"load\":{\"ambient_k\":293.15}}],\"record_every\":60},\"rows\":4,\"generator\":\"splitmix64_counter_v1\",\"seed_hex\":\"0000000000000001\",\"draws\":[{\"path\":\"initial.temperature_k\",\"choice\":[283.15,293.15]},{\"path\":\"segments[0].load.heat_power_w\",\"uniform\":{\"low\":0.0,\"high\":10.0}}]},\"store\":\"none\",\"return\":\"inline\"}.","oneOf":[{"additionalProperties":false,"description":"A list of runs. Each is a run_trajectory request without domain and card.","properties":{"kind":{"const":"list"},"runs":{"items":{"type":"object"},"minItems":1,"type":"array"}},"required":["kind","runs"],"type":"object"},{"additionalProperties":false,"description":"With solver: a list of solves. Each is a solve request without solver.","properties":{"kind":{"const":"list"},"solves":{"items":{"type":"object"},"minItems":1,"type":"array"}},"required":["kind","solves"],"type":"object"},{"additionalProperties":false,"description":"A base run (with solver: a base solve request without solver) and axes of explicit values. The rows are the product of the axes, the last axis varying fastest.","properties":{"axes":{"items":{"additionalProperties":false,"properties":{"path":{"type":"string"},"values":{"minItems":1,"type":"array"}},"required":["path","values"],"type":"object"},"minItems":1,"type":"array"},"base":{"type":"object"},"kind":{"const":"grid"}},"required":["kind","base","axes"],"type":"object"},{"additionalProperties":false,"description":"A base run and draws from the counter sampler. Row n is worked out without the rows before it.","properties":{"base":{"type":"object"},"draws":{"items":{"additionalProperties":false,"properties":{"choice":{"minItems":1,"type":"array"},"path":{"type":"string"},"uniform":{"additionalProperties":false,"properties":{"high":{"type":"number"},"low":{"type":"number"}},"required":["low","high"],"type":"object"}},"required":["path"],"type":"object"},"minItems":1,"type":"array"},"generator":{"const":"splitmix64_counter_v1"},"kind":{"const":"sample"},"rows":{"minimum":1,"type":"integer"},"seed_hex":{"pattern":"^[0-9a-f]{16}$","type":"string"}},"required":["kind","base","rows","generator","seed_hex","draws"],"type":"object"}]},"return":{"enum":["inline","file"],"type":"string"},"solver":{"description":"A plan of solves: the solver, in place of domain and card. It takes no store and no return. A plan of solves is answered inline: a list, {\"kind\":\"list\",\"solves\":[{\"parameters\":{...}}]}, or a grid, {\"kind\":\"grid\",\"base\":{\"parameters\":{...}},\"axes\":[{\"path\":\"parameters.<input>\",\"values\":[...]}]}, of at most 64 solves. Each row is a solve request, solved as solve solves it and carrying the solution_seal solve gives it; a request turned away without a seal, by the rules of a request or by the solver, is an unadmitted row. The rows are sealed under one dataset_seal by the rules of a plan of runs, with solution_seal in the leaf in the place of run_seal, and completed in the counts counts the solves that converged. A summary row has row, set, outcome, reject, solution_seal and every single number of the result in decimals; answer \"full\" gives every solution whole, and is refused when it comes to more than 40000 characters. verify_dataset verifies a plan of solves by its request and dataset_seal, and validate_series compares one number of its results with measurements. Worked plan of solves: {\"solver\":\"atom_dft\",\"plan\":{\"kind\":\"list\",\"solves\":[{\"parameters\":{\"atomic_number\":10}}]}}.","type":"string"},"store":{"enum":["frames","none"],"type":"string"}},"required":["plan"],"type":"object"}after
{"additionalProperties":false,"description":"A plan of runs on one card (domain, card, plan, store and return, all required) or of solves of one solver (solver and plan). Rows <= 100000, steps in total <= 100000000, stored frames <= 16777216; inline: an answer counted from the plan <= 42500 characters, which a plan reaches first, a grid on one axis at about 150 summary rows and a list sooner, its head repeating each run's request (a plan of more than 1000 rows is refused before it is counted, as too large to return inline), and frames <= 10000; solves <= 64. With return \"file\" the answer is the head and the names of the files stored, on a connection started with a directory for them.","properties":{"answer":{"description":"Leave out, or \"summary\", for the head and one short summary row per row: the values it sets, outcome, steps landed, refusal name and seal; \"states\" adds each run's final state in decimals; \"full\" gives every row whole. With return \"file\" the answer is the head and the names of the files whatever this says. Not part of the sealed request. The head and the dataset_seal are the same in all three forms. A summary row holds row, set (the values a grid's or a sample's row sets), outcome, steps_landed, reject and run_seal; the quantities of one row are read by sending its request to run_trajectory with a readout. An ended row is a run that stopped at an end its card declares: it has a run seal, the end's reject name in reject and the sentence naming the end in reject_detail. A refused row is a run the card refused part way: it has a run seal, the refusal's name in reject and its sentence in reject_detail. An unadmitted row is a request turned away before computing: it has no run seal, and its sentence, with the refusal's name in round brackets when the sentence gives one, is its reject_detail; its summary row gives that name in reject. What a sentence that begins \"Physical Failure\" or \"Physical Violation\" means is in the description of run_trajectory. An inline answer is counted from the plan before anything runs, and one above 42500 characters is refused with what to change: a summary row counts 220 characters and the values it sets; with states, each number of the final state adds its name and 28 characters (84 for a 3-vector, 9 for a flag); a whole row counts its own request and 1900 characters, and for each number twice its name and 60 characters (150 for a 3-vector, 9 for a flag); store \"frames\" adds 128 characters for each recorded state to a full answer; the head repeats the request.","enum":["summary","states","full"],"type":"string"},"card":{"type":"string"},"domain":{"type":"string"},"plan":{"description":"A path names one number: initial.<field>, dt_s, or segments[0].load.<field>, with the segment's number in square brackets and [0], [1] or [2] after a 3-vector field for one of its components. steps and record_every are not paths and cannot vary: every row of a grid or a sample takes them from the base run. A value an axis or a draw sets replaces the base's value of that field, and the answer's base_replaced names each field replaced; a 3-vector the base sets whole is replaced only when the paths set all three of its components. Two paths may not set one number. Each row of a grid is held to the card's bounds alone, as each run of a list is: a value outside a bound makes that row unadmitted and the other rows run. A sample's interval or choice outside a bound refuses the plan. One worked plan of each kind, each a whole request: list: {\"domain\":\"energy\",\"card\":\"thermal\",\"plan\":{\"kind\":\"list\",\"runs\":[{\"initial\":{\"temperature_k\":293.15},\"dt_s\":1.0,\"segments\":[{\"steps\":60,\"load\":{\"heat_power_w\":5.0,\"ambient_k\":293.15}}],\"record_every\":60}]},\"store\":\"none\",\"return\":\"inline\"} grid: {\"domain\":\"energy\",\"card\":\"thermal\",\"plan\":{\"kind\":\"grid\",\"base\":{\"initial\":{},\"dt_s\":1.0,\"segments\":[{\"steps\":60,\"load\":{\"ambient_k\":293.15}}],\"record_every\":60},\"axes\":[{\"path\":\"initial.temperature_k\",\"values\":[283.15,293.15]},{\"path\":\"segments[0].load.heat_power_w\",\"values\":[0.0,5.0,10.0]}]},\"store\":\"none\",\"return\":\"inline\"} sample: {\"domain\":\"energy\",\"card\":\"thermal\",\"plan\":{\"kind\":\"sample\",\"base\":{\"initial\":{},\"dt_s\":1.0,\"segments\":[{\"steps\":60,\"load\":{\"ambient_k\":293.15}}],\"record_every\":60},\"rows\":4,\"generator\":\"splitmix64_counter_v1\",\"seed_hex\":\"0000000000000001\",\"draws\":[{\"path\":\"initial.temperature_k\",\"choice\":[283.15,293.15]},{\"path\":\"segments[0].load.heat_power_w\",\"uniform\":{\"low\":0.0,\"high\":10.0}}]},\"store\":\"none\",\"return\":\"inline\"}.","oneOf":[{"additionalProperties":false,"description":"A list of runs. Each is a run_trajectory request without domain and card.","properties":{"kind":{"const":"list"},"runs":{"items":{"type":"object"},"minItems":1,"type":"array"}},"required":["kind","runs"],"type":"object"},{"additionalProperties":false,"description":"With solver: a list of solves. Each is a solve request without solver.","properties":{"kind":{"const":"list"},"solves":{"items":{"type":"object"},"minItems":1,"type":"array"}},"required":["kind","solves"],"type":"object"},{"additionalProperties":false,"description":"A base run (with solver: a base solve request without solver) and axes of explicit values. The rows are the product of the axes, the last axis varying fastest.","properties":{"axes":{"items":{"additionalProperties":false,"properties":{"path":{"type":"string"},"values":{"minItems":1,"type":"array"}},"required":["path","values"],"type":"object"},"minItems":1,"type":"array"},"base":{"type":"object"},"kind":{"const":"grid"}},"required":["kind","base","axes"],"type":"object"},{"additionalProperties":false,"description":"A base run and draws from the counter sampler. Row n is worked out without the rows before it.","properties":{"base":{"type":"object"},"draws":{"items":{"additionalProperties":false,"properties":{"choice":{"minItems":1,"type":"array"},"path":{"type":"string"},"uniform":{"additionalProperties":false,"properties":{"high":{"type":"number"},"low":{"type":"number"}},"required":["low","high"],"type":"object"}},"required":["path"],"type":"object"},"minItems":1,"type":"array"},"generator":{"const":"splitmix64_counter_v1"},"kind":{"const":"sample"},"rows":{"minimum":1,"type":"integer"},"seed_hex":{"pattern":"^[0-9a-f]{16}$","type":"string"}},"required":["kind","base","rows","generator","seed_hex","draws"],"type":"object"}]},"return":{"enum":["inline","file"],"type":"string"},"solver":{"description":"A plan of solves: the solver, in place of domain and card. It takes no store and no return. A plan of solves is answered inline: a list, {\"kind\":\"list\",\"solves\":[{\"parameters\":{...}}]}, or a grid, {\"kind\":\"grid\",\"base\":{\"parameters\":{...}},\"axes\":[{\"path\":\"parameters.<input>\",\"values\":[...]}]}, of at most 64 solves. Each row is a solve request, solved as solve solves it and carrying the solution_seal solve gives it; a request turned away without a seal, by the rules of a request or by the solver, is an unadmitted row. The rows are sealed under one dataset_seal by the rules of a plan of runs, with solution_seal in the leaf in the place of run_seal, and completed in the counts counts the solves that converged. A summary row has row, set, outcome, reject, solution_seal and every single number of the result in decimals; answer \"full\" gives every solution whole, and is refused when it comes to more than 42500 characters. verify_dataset verifies a plan of solves by its request and dataset_seal, and validate_series compares one number of its results with measurements. Worked plan of solves: {\"solver\":\"atom_dft\",\"plan\":{\"kind\":\"list\",\"solves\":[{\"parameters\":{\"atomic_number\":10}}]}}.","type":"string"},"store":{"enum":["frames","none"],"type":"string"}},"required":["plan"],"type":"object"}⟨44 unchanged words⟩ record_every sets which steps are recorded, about230262 characters each; the final state comes back in ⟨299 unchanged words⟩
⟨562 unchanged words⟩ ,"run_seal":{"pattern":"^[0-9a-f]{6496}$","type":"string"}},"required ⟨305 unchanged words⟩ the answer follows from the request: about230262 characters for each recorded state, plus the ⟨8 unchanged words⟩ 8000 characters for the final state and theseals.seals; a flagged state adds about 400 characters for each limit it is past (exceedances). So 10,000 steps with record_every 1 answer ⟨537 unchanged words⟩
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
⟨82 unchanged words⟩ ,"run_seal":{"pattern":"^[0-9a-f]{6496}$","type":"string"}},"required ⟨236 unchanged words⟩
⟨85 unchanged words⟩ who computed. commitment, optional, opens a saltedSHA-256SHA-384 the measurements were locked with before the comparison ⟨234 unchanged words⟩
⟨54 unchanged words⟩ before this comparison, opened by this request.sha256sha384 is theSHA-256SHA-384 of these bytes: the linezero-trust-physics/measurement-commitment/v1zero-trust-physics/measurement-commitment/v2 and a line break; the sealed form ( ⟨74 unchanged words⟩ that the data are not found from thesha256sha384 by trying values. The engine makes the digest ⟨43 unchanged words⟩ of the wrong form as CommitmentMalformed, andsha256sha384 or salt left out as InputMissing; nothing is ⟨43 unchanged words⟩ it was made is shown by where itssha256sha384 was published before the comparison.","properties":{"salt":{"description":"The salt thesha256sha384 was made with: 32 to 128 lowercase hex digits, 16 to 64 bytes.","type":"string"},"sha256sha384":{"description":"TheSHA-256SHA-384 committed,6496 lowercase hex digits.","pattern":"^[0-9a-f]{6496}$","type":"string"}},"required":["sha256sha384","salt"],"type":"object"}, ⟨607 unchanged words⟩
⟨201 unchanged words⟩ the plan at 4194304 bytes (OPEN_MAX_DATASET_ANSWER_BYTES) and4000042500 characters, up to about140150 summary rows; a plan of solves holds the ⟨110 unchanged words⟩
⟨220 unchanged words⟩ differs_at names the first place its text differs. An answer the engine signed (signature, ML-DSA-87 over its receipt, with issued_at, expires_at and nonce) has its signature checked first, against public_key or else this engine's own key: one that does not hold is cause signature, named (SignatureDoesNotVerify, SignatureExpired, SignatureNonceReplayed, SignatureKeyMismatch, ReceiptDoesNotMatch, SignatureAbsent when public_key is given and there is none), and nothing is computed. The signature of a dataset follows its head's receipt.","properties":{"dataset_seal":{"description": ⟨57 unchanged words⟩ and frames_hex.","pattern":"^[0-9a-f]{6496}$","type":"string"},"frames_hex" ⟨31 unchanged words⟩ answer carries.","type":"object"},"public_key":{"description":"The base64 of the ML-DSA-87 public key (2,592 bytes) to check the answer's signature with; without it, this engine's own.","type":"string"},"request":{"description":"With dataset_seal alone: ⟨115 unchanged words⟩ :\"<the dataset_seal of its run_dataset answer,6496 lowercase hex digits>\"}.","type":" ⟨16 unchanged words⟩ ) carries.","items":{"type":"object"},"type":"array"},"seen_nonces":{"description":"Nonces of signatures already seen: one of them again is SignatureNonceReplayed.","items":{"pattern":"^[0-9a-f]{64}$","type":"string"},"type":"array"}},"type":"object"}
⟨41 unchanged words⟩ in no way: it has no key. matches true proves only that those bytes are unchanged since the receipt was written; anyone can write a matching receipt for any text, so it is not a verification of the answer. A response that names an engine_version has it said beside matches, with whether it is thisengine's.engine's; origin needs engine_version_is_this_engines true and a replay. match_proves says this in each answer. The receipt covers the request as it was ⟨74 unchanged words⟩
⟨16 unchanged words⟩ of a dataset written as its JSON text. A signature after the receipt is checked against public_key or else this engine's own key, and reported under signature.","properties":{"public_key":{"description":"The base64 of the ML-DSA-87 public key (2,592 bytes) to check the answer's signature with; without it, this engine's own.","type":"string"},"response_text":{"description":"The exact text of a response as it was received, ending with thereceipt.receipt, and the engine's signature after it when it carries one.","type":"string"},"seen_nonces":{"description":"Nonces of signatures already seen: one of them again is SignatureNonceReplayed.","items":{"pattern":"^[0-9a-f]{64}$","type":"string"},"type":"array"}},"required":["response_text"],"type":"object"}
⟨64 unchanged words⟩ seal the request solves to), recomputed_solution_seal andrecomputed_receipt_sha256recomputed_receipt_sha384 when it holds (else no seal: solve ⟨246 unchanged words⟩
⟨39 unchanged words⟩ outcome, iterations, reject, result, invariants,field_sha256field_sha384, seal_parts and solution_seal are then all required. ⟨185 unchanged words⟩ differs_at names the first place its text differs. An answer the engine signed (signature, ML-DSA-87 over its receipt, with issued_at, expires_at and nonce) has its signature checked first, against public_key or else this engine's own key: one that does not hold is cause signature, named (SignatureDoesNotVerify, SignatureExpired, SignatureNonceReplayed, SignatureKeyMismatch, ReceiptDoesNotMatch, SignatureAbsent when public_key is given and there is none), and nothing is computed.","properties":{"engine_version":{"type":"string"},"field_sha256field_sha384":{"type":["string","null"] ⟨94 unchanged words⟩ ,"outcome":{"type":"string"},"public_key":{"description":"The base64 of the ML-DSA-87 public key (2,592 bytes) to check the answer's signature with; without it, this engine's own.","type":"string"},"reject":{"type":["string","null" ⟨63 unchanged words⟩ :\"<the solution_seal of its solve answer,6496 lowercase hex digits>\"}.","type":" ⟨9 unchanged words⟩ {"engine_version":{"type":"string"},"field_sha256field_sha384":{"type":"string"},"inputs": ⟨12 unchanged words⟩ inputs","engine_version","result","invariants","field_sha256field_sha384","outcome"],"type":"object"},"seen_nonces":{"description":"Nonces of signatures already seen: one of them again is SignatureNonceReplayed.","items":{"pattern":"^[0-9a-f]{64}$","type":"string"},"type":"array"},"solution_seal":{"description":"The solution_seal of the ⟨9 unchanged words⟩ whole answer.","pattern":"^[0-9a-f]{6496}$","type":"string"}},"type":"object"}
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
⟨66 unchanged words⟩ ,"run_seal":{"pattern":"^[0-9a-f]{6496}$","type":"string"}},"required ⟨84 unchanged words⟩
⟨83 unchanged words⟩ " when it is not), recomputed_run_seal andrecomputed_receipt_sha256recomputed_receipt_sha384 when it holds (else no seal: run_trajectory ⟨247 unchanged words⟩
⟨314 unchanged words⟩ differs_at names the first place its text differs. An answer the engine signed (signature, ML-DSA-87 over its receipt, with issued_at, expires_at and nonce) has its signature checked first, against public_key or else this engine's own key: one that does not hold is cause signature, named (SignatureDoesNotVerify, SignatureExpired, SignatureNonceReplayed, SignatureKeyMismatch, ReceiptDoesNotMatch, SignatureAbsent when public_key is given and there is none), and nothing is computed.","properties":{"chain_seal":{"description": ⟨6 unchanged words⟩ answer's chain_seal.","pattern":"^[0-9a-f]{6496}$","type":"string"},"final_residual_conservation_error_hex" ⟨96 unchanged words⟩ ,"outcome":{"type":"string"},"public_key":{"description":"The base64 of the ML-DSA-87 public key (2,592 bytes) to check the answer's signature with; without it, this engine's own.","type":"string"},"reject":{"type":["string","null" ⟨112 unchanged words⟩ :\"<the run_seal of its run_trajectory answer,6496 lowercase hex digits>\"}.","type":" ⟨16 unchanged words⟩ whole answer.","pattern":"^[0-9a-f]{96}$","type":"string"},"seen_nonces":{"description":"Nonces of signatures already seen: one of them again is SignatureNonceReplayed.","items":{"pattern":"^[0-9a-f]{64}$","type":"string"},"type":"array"},"state_digest":{"type":["string" ⟨8 unchanged words⟩
⟨33 unchanged words⟩ first request: what the model is of,howtheitevidencedidbehindagainstitmeasurementin numbers, each input with its unit and range, the names of its stops, and a worked request.Only theThe full form, the answer when form is left out,hasadds each bound's reason, the validation record and each stop'smeaning: it is the form that explains a refusal and the form a result is relied on with.meaning.
⟨33 unchanged words⟩ first (the words that matched, and model_of,: the one real thing it is a model of) and then accuracy (compared_with,the data it was fitted toandthe data held back and compared, and accuracy_against_measurement: how it did against the pass marksitsrecord states); a model'srange) andstops are in describe_card orthendescribe_solver.accuracy: against_measurement,givesthethatevidenceverdictbehind it in one ofsixthree words,the wordas list_cards and list_solvers giveonitevery("comparedrow:with"metmeasurement", "metheldintopart"aandreference"missedcalculation"say how the model did against the pass marks its record states, and its validation record says whether that comparisonorwas"companyblindspecimen");andcompared_with,wherewhat it wasnot, what wasfittedseenon; andwhen; "calibrated to the record" is a companion whose structureaccuracy_against_measurement,orwhatconstantsitwerewaschosencompared withthe record of a scoredoutsideoriginaltheopenfit,so its comparison is not a blindwithintestwhat, and theoriginal is served besidegap,itinundernumbers.itsFitownandword;accuracy"heldaretoseparate: areference calculation" is comparedmodel with apublished calculation, and "not held to a measurement"gap isthe company's own specimen.stillIttheisservedaccuracymodelandofnotitsfit.thing.TheAtwomodelareaseparate:neweraonemodelsupersedesthatcarriesfailedsuperseded_byitsandpasscomesmarksafterisit, stilltheservedmodel ofunder itsthing.own ID. The names it gives (domain and card, ⟨12 unchanged words⟩ describe_card, describe_solver, cite and every other tooltake.take; describe_card or describe_solver gives the range and every refusal. When nothing served fits it says so, ⟨76 unchanged words⟩
⟨12 unchanged words⟩ and count, how many there are. against_measurementsays in one ofnamessixthewordsevidencehowbehind the modelstands against measurement. "met","metinpart" and "missed" say how itonedidofagainstthreethewords:pass"comparedmarkswithitsmeasurement"record(astates,realandobject; itsvalidation record, in describe_card or describe_solver,description sayswhether thatwhatcomparisonit wasblindfittedandon,wherewhat it wasnot, what was seen and when. "calibrated to the record" is a companion whose structure or constants were chosencompared withthe recordoutsideoftheafitscoredandoriginalwithinopenwhat,so its comparison is not a blind test;theoriginal isgap,servedandbesidewhere itunder its own word.refuses), "held to a reference calculation"is(compared with a published calculation),andor "not held to acompanymeasurementspecimen"is the company's own specimen. It is(anaccuracyobjectandthenotcompanyfitspecified,and a model thateverymissedconstantisstated).stillThethenumbersservedsaymodelhowofgooditsitthing.is.
⟨11 unchanged words⟩ and count, how many there are. against_measurementsays in one ofnamessixthewordsevidencehowbehind the modelstands against measurement. "met","metinpart" and "missed" say how itonedidofagainstthreethewords:pass"comparedmarkswithitsmeasurement"record(astates,realandobject; itsvalidation record, in describe_card or describe_solver,description sayswhether thatwhatcomparisonit wasblindfittedandon,wherewhat it wasnot, what was seen and when. "calibrated to the record" is a companion whose structure or constants were chosencompared withthe recordoutsideoftheafitscoredandoriginalwithinopenwhat,so its comparison is not a blind test;theoriginal isgap,servedandbesidewhere itunder its own word.refuses), "held to a reference calculation"is(compared with a published calculation),andor "not held to acompanymeasurementspecimen"is the company's own specimen. It is(anaccuracyobjectandthenotcompanyfitspecified,and a model thateverymissedconstantisstated).stillThethenumbersservedsaymodelhowofgooditsitthing.is.
⟨53 unchanged words⟩ as inputs.","type":"string"},"from":{"additionalProperties":false,"description":"Optional: a sealed card run handed in through a coupling, as run_trajectory takes it.","properties":{"coupling":{"type":"string"},"request":{"type":"object"},"run_seal":{"pattern":"^[0-9a-f]{64}$","type":"string"}},"required":["request","run_seal","coupling"],"type":"object"},"parameters":{"description":"The inputs of the ⟨225 unchanged words⟩
⟨56 unchanged words⟩ hash of the measurements, under one seal.There is no pass or failItandsets no threshold: the numbers arenot atheverdict.answer. The seal has no key, so it ⟨256 unchanged words⟩
⟨22 unchanged words⟩ sealed with a hash of the measurements. Itholdssets noverdict.threshold. A request holds run or solves, not ⟨895 unchanged words⟩
⟨186 unchanged words⟩ engine_version (an answer of another version). A chained solve: its whole answer with from beside it; the upstream run is computed again and the chain held too (cause chain), with recomputed_chain_seal. Alone it is refused (AnswerCarriesNoRequest). Nothing is stored, so each form answers the ⟨93 unchanged words⟩
⟨250 unchanged words⟩ "type":["string","null"]},"from":{"description":"Beside the whole answer of a chained solve: the from solve took (request, run_seal, coupling). The upstream run is computed again and held to its seal, each handed value to it, and the request solved again with it; the answer alone is refused (AnswerCarriesNoRequest).","type":"object"},"inputs":{"description":"The inputs of the ⟨183 unchanged words⟩
⟨202 unchanged words⟩ On this open connection a dataset is returnedin the answer (return "inline")and holds at most 300 runs (OPEN_MAX_DATASET_ROWS), 1000000 steps intotalall (OPEN_MAX_DATASET_STEPS), 10000recorded statesframes and an answer counted from the plan at 4194304 bytes (OPEN_MAX_DATASET_ANSWER_BYTES);and 40000 characters, up to about 140 summary rows; a plan of solves holds the engine's own 64 and at most 15 s of them,each solveorcountedone, atitseach solver's measured time, which describe_solver states with ⟨89 unchanged words⟩
⟨34 unchanged words⟩ <= 100000000, stored frames <= 16777216; inline:rowsan answer counted from the plan <=100040000 characters,frameswhich<=a10000plan reaches first,anaanswergridcountedonfromonetheaxis at about 140 summary rows and a list sooner, its head repeating each run's request (a plan<=of40000morecharacters;than 1000 rows is refused before it is counted, as too large to return inline), and frames <= 10000; solves <= 64. With return \"file\" ⟨1183 unchanged words⟩
⟨451 unchanged words⟩ sealed run. request: that run_trajectory request as sent, less its readout if it had one: a readout is not part of a run's seal, and a request here that carries one is refused (it may hold its own from); ⟨962 unchanged words⟩
⟨234 unchanged words⟩ and at most 15 s of them,each solveorcountedone, atitseach solver's measured time, which describe_solver states with ⟨89 unchanged words⟩
⟨173 unchanged words⟩ On this open connection a dataset is returnedin the answer (return "inline")and holds at most 300 runs (OPEN_MAX_DATASET_ROWS), 1000000 steps intotalall (OPEN_MAX_DATASET_STEPS), 10000recorded statesframes and an answer counted from the plan at 4194304 bytes (OPEN_MAX_DATASET_ANSWER_BYTES);and 40000 characters, up to about 140 summary rows; a plan of solves holds the engine's own 64 and at most 15 s of them,each solveorcountedone, atitseach solver's measured time, which describe_solver states with ⟨89 unchanged words⟩
⟨21 unchanged words⟩ was sent, with its readout and its from, whose request has none, when it had them (the answer's inputs ⟨304 unchanged words⟩
⟨463 unchanged words⟩ it had them (the answer's inputs holdsneitherneither; the upstream request in that from goes without a readout, as run_trajectory took it). It is run again, under a ⟨113 unchanged words⟩
⟨12 unchanged words⟩ and count, how many there are. against_measurementis how thesaysmodelindidoneagainstofitssixownwordsmeasurements,howintheonemodelofstandssixagainstwords,measurement. "met", "missed", "met in part","calibratedandto"missed"thesayrecord",how"heldittodidaagainstreferencethecalculation"passormarks"notitsheldrecordtostates,aandmeasurement":itsitvalidationisrecord,accuracyinanddescribe_cardnotorfitdescribe_solver,and asaysmodelwhether thatmissedcomparisoniswasstillblindtheand,servedwheremodelitofwasitsnot,thing.what was seen and when. "calibrated to the record":theismodel'sa companion whose structure or constants were chosen with the recorditofisacomparedscoredwithoriginal open, sotheits comparisonshownis not a blind test; the originalmodel, compared blind,is served beside it under its own word. "held to a reference calculation" is compared with a published calculation, and "not held to a measurement" is the company's own specimen. It is accuracy and not fit, and a model that missed is still the served model of its thing.
⟨11 unchanged words⟩ and count, how many there are. against_measurementis how thesaysmodelindidoneagainstofitssixownwordsmeasurements,howintheonemodelofstandssixagainstwords,measurement. "met", "missed", "met in part","calibratedandto"missed"thesayrecord",how"heldittodidaagainstreferencethecalculation"passormarks"notitsheldrecordtostates,aandmeasurement":itsitvalidationisrecord,accuracyinanddescribe_cardnotorfitdescribe_solver,and asaysmodelwhether thatmissedcomparisoniswasstillblindtheand,servedwheremodelitofwasitsnot,thing.what was seen and when. "calibrated to the record":theismodel'sa companion whose structure or constants were chosen with the recorditofisacomparedscoredwithoriginal open, sotheits comparisonshownis not a blind test; the originalmodel, compared blind,is served beside it under its own word. "held to a reference calculation" is compared with a published calculation, and "not held to a measurement" is the company's own specimen. It is accuracy and not fit, and a model that missed is still the served model of its thing.
⟨23 unchanged words⟩ against its own measurements, in one offivesix words, "met", "missed", "met in part", "calibrated to the record", "held to a reference calculation" or "not ⟨15 unchanged words⟩ is still the served model of its thing. "calibrated to the record": the model's structure or constants were chosen with the record it is compared with open, so the comparison shown is not a blind test; the original model, compared blind, is served beside it under its own word.
⟨183 unchanged words⟩ burst, a capsule's flown parachute deployment, amission'scraterlastthatdaystops growing,theaendcell'sofrunawayaoncerecord'severyclockreactantoristrackconsumed) is not refused: outcome is \"ended\ ⟨1219 unchanged words⟩
⟨85 unchanged words⟩ does not show who measured or who computed.genesis_sealcommitment,verify-validationoptional,rebuildsopens a salted SHA-256 thesealmeasurementsandwere locked with before thestatisticscomparison:fromdata that are not theanswercommittedaloneones are refused before computing (CommitmentDoesNotMatch),ofandatherunsealorcoversofit.agenesis_sealplanverify-validationofrebuildssolves.the seal, the statistics and the commitment from the answer alone. In place of run, solves takes a plan ⟨6 unchanged words⟩ (solver and plan, at most 64 solves): quantity is one number the solver publishes in its result,andeach measurementis {"row": <theatplan'sa row,fromof0>,the"value"plan:<number>}. Thethe solves are sealed under one dataset_sealas run_dataset seals them, and the comparisonis sealedby the samestatistics, measurement hash and validation seal as a run's,rules with the dataset_seal in the place of the ⟨153 unchanged words⟩
⟨37 unchanged words⟩ or solves, not both.","properties":{"commitment":{"additionalProperties":false,"description":"Optional: a commitment the measurements were locked with before this comparison, opened by this request. sha256 is the SHA-256 of these bytes: the line zero-trust-physics/measurement-commitment/v1 and a line break; the sealed form (the text a request's seal is taken over: keys sorted by their bytes, each number x and the 16 hex digits of its 64-bit float, no spaces) of {\"component\": <this request's component, or null>, \"measurements\": <this request's measurements>, \"quantity\": <this request's quantity>}; a line break; and the salt's bytes, its hex decoded. salt is 32 to 128 lowercase hex digits, 16 to 64 bytes, kept back until the comparison so that the data are not found from the sha256 by trying values. The engine makes the digest again from the request before computing: data that do not open it (a value, a step or a row changed, moved, added or dropped, another quantity or another salt) are refused as CommitmentDoesNotMatch, a salt shorter than 16 bytes as CommitmentSaltTooShort, a field of the wrong form as CommitmentMalformed, and sha256 or salt left out as InputMissing; nothing is computed and nothing is sealed. Opened, the comparison runs as it runs without one, validation_seal takes the commitment as a sixth part, and the answer says so in commitment_opened. A commitment shows that the data were not changed after it was made; when it was made is shown by where its sha256 was published before the comparison.","properties":{"salt":{"description":"The salt the sha256 was made with: 32 to 128 lowercase hex digits, 16 to 64 bytes.","type":"string"},"sha256":{"description":"The SHA-256 committed, 64 lowercase hex digits.","pattern":"^[0-9a-f]{64}$","type":"string"}},"required":["sha256","salt"],"type":"object"},"component":{"description":"0, 1 or ⟨602 unchanged words⟩
⟨41 unchanged words⟩ in no way: it has no key. A response that names an engine_version has it said beside matches, with whether it is this engine's. The receipt covers the request as it was ⟨74 unchanged words⟩
⟨24 unchanged words⟩ against its own measurements, in one offourfive words, "met", "missed", "met in part", "held to a reference calculation" or "not held to a measurement": ⟨19 unchanged words⟩
⟨23 unchanged words⟩ against its own measurements, in one offourfive words, "met", "missed", "met in part", "held to a reference calculation" or "not held to a measurement": ⟨19 unchanged words⟩
⟨240 unchanged words⟩ (OPEN_MAX_DATASET_ANSWER_BYTES); a plan of solves holdsatthemostengine's5ownof64step_flow_armaly,and at most 15 s oftokamak_dt_beam_targetthem,15eachofsolveablator_slab,counted30atofitsatom_dftsolver'sandmeasured64time,ofwhicheverydescribe_solverotherstatessolverwith the count (OPEN_PLAN_SECONDS). One address holds at most 1 ⟨19 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨1184 unchanged words⟩ it comes to more than 40000 characters. verify_datasetchecksverifies a plan of solves by its request and ⟨45 unchanged words⟩
⟨245 unchanged words⟩ it, is not one the engine takes. A load may be signed; load_source says by whom. The input schema says each of these in ⟨30 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨319 unchanged words⟩ or a value that is not finite. A required key left out is named InputMissing, and a card the engine does not serve UnknownCard. A sentence with no name in round brackets is of a request that is not well formed (a keymissing orunknown, a value of the wrong type, ⟨202 unchanged words⟩ array of three numbers), and no otherkey.key but signed: an instrument's signature over the rest of initial, under the key \"initial\", by the rule of a segment's signed. describe_card givesthemthe fields, with each unit and bound.","type" ⟨314 unchanged words⟩ ,"type":"integer"},"segments":{"description":"A segment may carry signed beside its load: an instrument's signature over the load. signed holds alg \"ed25519\"; key, the instrument's public key as 64 hex digits, its identity; instrument, the name it gives itself, a label of at most 200 characters; time, its clock, RFC 3339 in UTC ending in Z; seq, its reading counter, below 2^53; prev, the SHA-256 of its previous reading's signed text, or null; challenge, hex the relying party chose, or null; and sig, the signature as 128 hex digits. The instrument signs the bytes \"zero-trust-physics/signed-reading/v1\" and a line break, then the sealed form (the text a request's seal is taken over: keys sorted by their bytes, each number x and the 16 hex digits of its 64-bit float, no spaces) of the object of alg, key, instrument, time, seq, prev and challenge with the reading under its place's key: \"load\" for a segment's load, \"initial\", \"parameters\" or \"measurement\" for the object it sits in, without signed. Ed25519 as RFC 8032 section 5.1.7, strict: the key and R canonical points of more than small order, S below the group order, the cofactorless equation. It is verified before computing, every field required and none filled in: a signature that does not verify is refused as LoadSignatureDoesNotVerify, a field of the wrong form as LoadSignatureMalformed, an alg other than \"ed25519\" as LoadSignatureAlgorithmNotServed, and a plan or search that would set a signed value as SignedLoadReplaced. The seal covers the signature, since it covers the request. A signature shows that the holder of the key stated the reading; whether the key is a real instrument's is the verifier's list. Every run answer carries load_source: for a run with no signed load, the count of segments, none signed, and a sentence that each load is the number the request states; for a signed run, how many loads are signed, whether initial is, whether each key's readings form one unbroken stream (prev and seq), and for each key its fingerprint, the name it gives itself, its places, times, seq and challenges. It is outside the run seal, follows from inputs, which the seal covers, and is covered by the receipt.","items":{"additionalProperties":false,"properties":{" ⟨16 unchanged words⟩ gives them, with each unit and bound.","type":"object"},"signed":{"additionalProperties":false,"description":"An instrument's Ed25519 signature over this reading, by the rule run_trajectory's input schema gives at segments.","properties":{"alg":{"enum":["ed25519"],"type":"string"},"challenge":{"type":["string","null"]},"instrument":{"maxLength":200,"minLength":1,"type":"string"},"key":{"pattern":"^[0-9a-f]{64}$","type":"string"},"prev":{"type":["string","null"]},"seq":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sig":{"pattern":"^[0-9a-f]{128}$","type":"string"},"time":{"type":"string"}},"required":["alg","key","instrument","time","seq","prev","challenge","sig"],"type":"object"},"steps":{" ⟨22 unchanged words⟩
⟨131 unchanged words⟩ answers is not a sign of tampering. verify_solutionchecksverifies a solution later from this request, or ⟨34 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨80 unchanged words⟩ as describe_solver gives it, and no otherkey.key but signed. Every number of a solve request must be ⟨66 unchanged words⟩ fit a 32-bit frame slot does not apply. A required input left out is refused as InputMissing, and an input given with a choice it does not go with as InputNotWithChoice, each in a sentence that names the input, and a solver the engine does not serve as UnknownSolver; nothing is filled in. parameters may also carry signed, an instrument's signature over the other parameters under the key \"parameters\", by the rule run_trajectory's input schema gives at segments; it is verified before solving, the solver takes the other parameters, and the answer then carries load_source, naming the key. A solve answer without load_source holds no signed parameter.","type":"object"},"solver":{ ⟨13 unchanged words⟩
⟨227 unchanged words⟩ this open connection a plan of solves holdsatthemostengine's5ownof64step_flow_armaly,and at most 15 s oftokamak_dt_beam_targetthem,15eachofsolveablator_slab,counted30atofitsatom_dftsolver'sandmeasured64time,ofwhicheverydescribe_solverotherstatessolverwith the count (OPEN_PLAN_SECONDS). One address holds at most 1 ⟨19 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨153 unchanged words⟩ "minimum":0,"type":"integer"},"signed":{"additionalProperties":false,"description":"An instrument's Ed25519 signature over this reading, by the rule run_trajectory's input schema gives at segments.","properties":{"alg":{"enum":["ed25519"],"type":"string"},"challenge":{"type":["string","null"]},"instrument":{"maxLength":200,"minLength":1,"type":"string"},"key":{"pattern":"^[0-9a-f]{64}$","type":"string"},"prev":{"type":["string","null"]},"seq":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sig":{"pattern":"^[0-9a-f]{128}$","type":"string"},"time":{"type":"string"}},"required":["alg","key","instrument","time","seq","prev","challenge","sig"],"type":"object"},"step":{"description":"With run: the ⟨170 unchanged words⟩ array of three numbers), and no otherkey.key but signed: an instrument's signature over the rest of initial, under the key \"initial\", by the rule of a segment's signed. describe_card givesthemthe fields, with each unit and bound.","type" ⟨27 unchanged words⟩ gives them, with each unit and bound.","type":"object"},"signed":{"additionalProperties":false,"description":"An instrument's Ed25519 signature over this reading, by the rule run_trajectory's input schema gives at segments.","properties":{"alg":{"enum":["ed25519"],"type":"string"},"challenge":{"type":["string","null"]},"instrument":{"maxLength":200,"minLength":1,"type":"string"},"key":{"pattern":"^[0-9a-f]{64}$","type":"string"},"prev":{"type":["string","null"]},"seq":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"sig":{"pattern":"^[0-9a-f]{128}$","type":"string"},"time":{"type":"string"}},"required":["alg","key","instrument","time","seq","prev","challenge","sig"],"type":"object"},"steps":{" ⟨84 unchanged words⟩
ChecksVerifies the seal of a dataset. Short form: ⟨14 unchanged words⟩ its answer gave. The plan is run again,undertherun_dataset's permits andthe limits of run_dataset, whatever its answer form, andlimits; the answer is holds, cause ("dataset_seal" ⟨10 unchanged words⟩ runs to), recomputed_dataset_seal when it holds (when it does not,else no sealis returned: run_dataset gives the true one),a sentence of what was checkedcompared, and text_not_compared:the short form comparesno rows the agentholds.holds are compared. A plan of solves ischeckedverified by this short form only. Long form, which takes no physics permit: head, rows and frames_hex, the three parts a full answer carries (answer "full"),alltogether,threeastogether.they came. The rows, the root and the seal arerecomputed;recomputed, and row and fault name the first row changed, swapped, dropped orrepeated,repeated;andthenathedecimalplanthatisdiffersrunfromagainitsunderexactrun_dataset'shex,permitswhichandnolimitssealandcovers.theholdsengine'sdoesanswernotcomparedcoverwiththeit,receipt.valueAbydatasetvaluemadeandwithoutbytetheforenginebytecan(causepassanswer_text,thewithlongdiffers_atform;andreplayingrow):aholdsrowisthroughtruerun_trajectoryonlyshowswhen every byte is theengineengine's,madevalues_holdit.when every value is. On this open connection a dataset is returned ⟨30 unchanged words⟩ (OPEN_MAX_DATASET_ANSWER_BYTES); a plan of solves holdsatthemostengine's5ownof64step_flow_armaly,and at most 15 s oftokamak_dt_beam_targetthem,15eachofsolveablator_slab,counted30atofitsatom_dftsolver'sandmeasured64time,ofwhicheverydescribe_solverotherstatessolverwith the count (OPEN_PLAN_SECONDS). One address holds at most 1 ⟨19 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨18 unchanged words⟩ and its seal compared. The three parts a full run_dataset answer carries (head, rows and frames_hex, all three required together, as they came), the long form: the rows, the root and the seal are recomputed from their exact values, then the head's plan is run again under the permits and the limits of run_dataset and the engine's full answer to it compared withnothephysicspartsrun.sent, value by value and then byte for byte, so a dataset that holds is every byte the engine's. dataset_seal alone: the stored dataset of that seal,isitscheckedseals recomputed from its files and its plan run again into a folder of its own, the stored files compared withnothatphysicsrun'srun.byte for byte. The long form's answer carries holds, true when the answer sent is every byte the engine's, and values_hold beside it, true when every value of it is the engine's answer to its request computed again, whatever its spelling: each number by its 64-bit value, strings, flags and null exactly, keys and their order, the receipt string among them. A copy whose numbers a client wrote again in its own spelling (0.0001 for 1.0e-4, 12 for 12.0) has holds false and values_hold true, and differs_at names the first place its text differs.
ChecksVerifies the receipt at the end of one response ⟨91 unchanged words⟩ Replaying the request through run_trajectory, solve orverify_stepcompute_step shows the engine produced it; verify_tape, verify_solution ⟨15 unchanged words⟩
{"additionalProperties":false,"description":"The text of one response fromverify_stepcompute_step, run_trajectory or solve, or the head of ⟨30 unchanged words⟩
ChecksVerifies the seal of a solution. Short form, ⟨61 unchanged words⟩ ), recomputed_solution_seal and recomputed_receipt_sha256 when it holds (when it does not,else no sealis returned: solve gives the true one),a sentence of what was checkedcompared, and text_not_compared:the short form comparesno answer text the agent holds,soisacompared.copyLongwithform:athedecimalwholechangedsolvestillanswerholds;sentverify_receiptbackchecksasaitcopycame,againstwithouttherequest.receiptItsthatsolutioncopysealcarries,is recomputed from its exact hex values and thecheckpart that fails iscompletenamed,onlythenwhenitsthatrequestreceiptisequalssolvedrecomputed_receipt_sha256againhere.underLongaform:physicsthepermitwholeandsolvethe engine's answersentcomparedbackwith it,withoutvaluerequest;byitvaluetakesandnobytephysicsforpermitbyte,recomputesreceipttheincluded:solutionholdssealisandtruenamesonlythewhenparteverythatbytefailsis the engine's,andvalues_holdcheckswhenonlyeverythevalueexactis,hexelsevaluescauseandnames thesealspart,notsolution_seal (thedecimalrequestcopiessolvesoftotheanothervaluesseal),andanswer_textnot(with differs_at, thereceipt,firstasfielditsthat differs) or engine_version (an answersays.of another version). Nothing is stored, so each form answers the ⟨33 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨21 unchanged words⟩ solution_seal. Or the whole solve answer sent back as it came, without request, the long form: inputs, engine_version, outcome, iterations, reject, result, invariants, field_sha256, seal_parts and solution_seal are then allrequired,required.theThe solution seal is recomputed from its exact hex values and the part that fails isnamednamed; then its request is solved again under a physics permit and the limits of solve, and the engine's whole answer to it compared with the answer sent, value by value and then byte for byte, the receipt included, so an answer that holds is every byte the engine's. A seal has nophysicskey:run.an answer whose values were rewritten with its seal parts, seal and receipt worked out again holds every seal, and only the solve shows it is not the engine's (cause solution_seal). The long form's answer carries holds, true when the answer sent is every byte the engine's, and values_hold beside it, true when every value of it is the engine's answer to its request computed again, whatever its spelling: each number by its 64-bit value, strings, flags and null exactly, keys and their order, the receipt string among them. A copy whose numbers a client wrote again in its own spelling (0.0001 for 1.0e-4, 12 for 12.0) has holds false and values_hold true, and differs_at names the first place its text differs.","properties":{"engine_version":{"type": ⟨18 unchanged words⟩
Computes one anchored step of one cardand returns the state it lands on,in decimals and exact hex, with its cryptographic proof (sha256_seal) and a receipt. parameters holds the card's phase fields, its load fields and dt_s,asdescribe_card gives them. A step whose request or whosecompute_steplandingdoes:stateverify_step isoutsidethecard is refusedearlierinnameoneofsentencecompute_step,with the refusal'sservednameforinthisroundonebracketsversionwhenbeside ithas one, andnotakesprooftheissameissuedargumentsforandthatgivesstate.theWithsamefromanswer,the step startsbytefromforabyte.sealedTherun,namewhichcompute_step iscomputedtheagainonefirst.that stays. On this open connection one address holds at ⟨21 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨113 unchanged words⟩ of the pair, with each unit and bound. A required field left out is refused as InputMissing, in a sentence that names the field, and a card the engine does not serve as UnknownCard; nothing is filled in.","type":"object"}},"required": ⟨5 unchanged words⟩
ChecksVerifies the seal of a run. Short form, ⟨75 unchanged words⟩ ), recomputed_run_seal and recomputed_receipt_sha256 when it holds (when it does not,else no sealis returned: run_trajectory gives the true one),a sentence of what was checkedcompared, and text_not_compared:the short form comparesno answer text the agent holds,soisacompared.copyLongwithform:athedecimalwholechangedrun_trajectorystillanswerholds;sentverify_receiptbackchecksasaitcopycame,againstwithouttherequest.receiptItsthatstatecopydigestcarriesand run seal are recomputed from its exact hex values,andthentheitscheckrequest iscompletecomputedonlyagainwhenunderthatareceiptphysicsequalspermitrecomputed_receipt_sha256andhere.theLongengine'sform:answerthecomparedwholewithrun_trajectoryit,answervaluesentbybackvalue and byte for byte,withoutreceiptrequest;included:itholdstakesisnotruephysicsonlypermit,whenrecomputeseverythebytechain,is thestateengine's,digestvalues_holdandwhentheeveryrunvaluesealis,andelsecheckscause names theexactseal,hexload_signaturevalues(aandsignedtheloadseals,that does nottheverify),decimalanswer_textcopies(withofdiffers_at, thevaluesfirstandfieldnotthatthediffers)receipt.or engine_version (an answer of another version). A chain ischeckedverified by its request with from, run_seal and chain_seal,computed again;or by links, its answers in order,witheachnocomputedphysics.again from the links before it; a chained answer alone is refused (AnswerCarriesNoRequest). Nothing is stored, so each form answers the ⟨33 unchanged words⟩ of more than 10000 steps, or acheckverification that computes one again) runs 1 at ⟨45 unchanged words⟩
⟨27 unchanged words⟩ sent back as it was returned, without request, the long form: inputs, frames, outcome, steps_landed, reject, ⟨3 unchanged words⟩ max_residual_conservation_error_hex and state_digest are then all required,andalong with the rest of the answer. The trajectory chain, the state digest and the run seal are recomputed from its exact hex values; then its request is computed again under a physics permit and the limits of run_trajectory, and the engine's whole answer to it compared with the answer sent, value by value and then byte for byte, the receipt included, so an answer that holds is every byte the engine's. A seal has nophysicskey:run.an answer whose values were rewritten with its seals worked out again holds every seal, and only the computation shows it is not the engine's. An answer that continues a sealed upstream run (its chain names upstream_run_seal) carries the upstream's seal and not its request, and its long form is refused (AnswerCarriesNoRequest): its chain's answers in order, as links, carry each request, and each link is computed again from the links before it. Or links alone: a chain's answers in order, held as the long form holds one. A design_run answer sent whole is designed again and held the same way. The long form's answer carries holds, true when the answer sent is every byte the engine's, and values_hold beside it, true when every value of it is the engine's answer to its request computed again, whatever its spelling: each number by its 64-bit value, strings, flags and null exactly, keys and their order, the receipt string among them. A copy whose numbers a client wrote again in its own spelling (0.0001 for 1.0e-4, 12 for 12.0) has holds false and values_hold true, and differs_at names the first place its text differs.
Compute step — Computes one anchored step of one card and returns the state it lands on, in decimals and exact hex, with its cryptographic proof (sha256_seal) and a receipt. parameters holds the card's phase fields, its load fields and dt_s, as describe_card gives them. A step whose request or whose landing state is outside the card is refused in one sentence, with the refusal's name in round brackets when it has one, and no proof is issued for that state. With from, the step starts from a sealed run, which is computed again first. On this open connection one address holds at most 1 physics permit at a time…
Design run — Designs a run: from a target end state to the loads of each segment that reach it, computed by the engine with no randomness, so the same request gives the same bits. request is a run_trajectory request; its numbers at the places vary names are the start, and vary gives each load's span inside the card's bounds. target is a number of the final state, a value and a tolerance. Every candidate is an ordinary run with its run_seal; one that crosses a limit is recorded refused by its name, and no value is moved back. The answer gives the timeline, its run_trajectory request and run_seal, the value…