{"bind_ticket":{"children_cannot_outlive_parent":true,"command_radiation":"https://gate.velaru.xyz/.well-known/command-radiation.json","demo_redeem":"https://gate.velaru.xyz/demo/pas/bind-ticket/redeem","greater_than_ed25519":"Signatures prove a hop occurred. Tickets prove the hop is still allowed to spend, right now, once, for this job and this write.","license_fuse":"https://gate.velaru.xyz/.well-known/license-fuse.json","married_write":"/job/v1/jobs/{job_id}/bind-only","name":"Bind ticket","redeem":"https://gate.velaru.xyz/v1/pas/bind-ticket/redeem","single_use":true,"spec":"gate-bind-ticket-v1","spend_fingerprint_required":true,"spend_protocol":"https://gate.velaru.xyz/.well-known/spend-protocol.json","stale_hop_cannot_spend":true,"their_production":false,"ttl_seconds":15},"command_radiation":{"abort_does_not_consume":true,"fail_closed":true,"implementor":"https://gate.velaru.xyz/listings/cloudflare-worker-bind.js","lineage":{"command_loss_timer":"Valid uplink resets the timer. Silence is DEAD.","dsn_command_service":"Radiation aborts if monitors fail. No independent copy of the bits.","utc":"CGPM 2018: UTC is the only recommended international time scale."},"mapping":{"cltu":"bind ticket + spend_fingerprint","now":"UTC. Redeem must present now. Skew beyond max_skew_seconds aborts.","radiate":"POST https://gate.velaru.xyz/v1/pas/bind-ticket/redeem then forward bind-only","vehicle":"job_id"},"name":"Command radiation","not":["a hop receipt","Starship","a second speaker for a vehicle you did not book"],"now":{"invalid":"command_now_invalid","max_skew_seconds":15,"missing":"command_now_required","required":true,"scale":"UTC"},"page":"https://gate.velaru.xyz/uplink","radiation_abort":true,"redeem":"https://gate.velaru.xyz/v1/pas/bind-ticket/redeem","spec":"gate-command-radiation-v1","spend_protocol":"https://gate.velaru.xyz/.well-known/spend-protocol.json","their_production":false,"what":"May this CLTU still be radiated, for this vehicle, in this now?"},"counterpart":{"fingerprint":{"alg":"sha256","canonical_json":"sort_keys, separators=(',', ':')","over":["counterpart_id","counterpart_kind","counterpart_path","counterpart_method"]},"license_fuse":"https://gate.velaru.xyz/.well-known/license-fuse.json","married_write":"POST /job/v1/jobs/{job_id}/bind-only","name":"Counterpart fingerprint","not":["a second married spend path","PII","license_number"],"omit":"No counterpart fields \u2192 current scanner behavior.","optional_pas_keys":["counterpart_id","counterpart_kind","counterpart_path","counterpart_method"],"partial":"Any counterpart field without counterpart_id \u2192 no print.","redeem":"If the ticket carries counterpart_fingerprint, redeem must present the same counterpart. Mismatch does not consume the ticket.","spec":"gate-counterpart-v1","their_production":false,"what":"Optional second fingerprint on the same ticket. Not a second bind-only write."},"epoch":{"not_admin_charge":true,"rule":"Latest HALT/BLOCK for a job_id stays HALT until charge_id is presented.","spec":"gate-epoch-v1"},"exclusion":{"greater_than_ed25519":"A signature on a HALT says we said no. An exclusion proof says no spend leaf for this job exists in the append-only map.","lineage":["Laurie\u2013Kasper Revocation Transparency (sorted Merkle non-inclusion)","RFC 9162 Certificate Transparency (inclusion + consistency)"],"lookup":"https://gate.velaru.xyz/.well-known/exclusion.json?job_id={job_id}","name":"Spend exclusion proof","spec":"gate-exclusion-v1","their_production":false},"greater_than_ed25519":"Signatures prove a hop occurred. Tickets, epoch lock, and exclusion prove the hop cannot spend stale, cannot resurrect without CHARGE, and that this job has no spend leaf.","license_fuse":{"armed":"LIVE parent with at least one unredeemed child ticket.","charge":{"demo":"https://gate.velaru.xyz/demo/pas/licenses/{license_id}/charge","from":["UNSIGNED","DEAD"],"not_admin_charge":true,"path":"https://gate.velaru.xyz/v1/pas/licenses/{license_id}/charge","required":["charge_id"],"to":"LIVE"},"children_cannot_outlive_parent":true,"commit_auth":"https://gate.velaru.xyz/.well-known/commit-auth.json","counterpart":"https://gate.velaru.xyz/.well-known/license-fuse.json#counterpart","dead":{"demo":"https://gate.velaru.xyz/demo/pas/licenses/{license_id}/dead","path":"https://gate.velaru.xyz/v1/pas/licenses/{license_id}/dead","to":"DEAD"},"issue":"license_id present \u2192 parent must be stored LIVE or the hop is HALT and no ticket prints.","married_write":"POST /job/v1/jobs/{job_id}/bind-only","name":"License Fuse","not":["iGregulator","BMM BOAT","a license directory that fails open","OCSP in a browser","license_number","a second bind-only write"],"omit":"No license_id \u2192 current scanner behavior.","pas_key":"license_id","redeem":"Ticket remembers license_id. Parent must still be LIVE. Parent DEAD does not consume the ticket.","restraint":"https://gate.velaru.xyz/.well-known/restraint.json","spec":"gate-license-fuse-v1","states":["UNSIGNED","LIVE","ARMED","DEAD"],"stored_states":["UNSIGNED","LIVE","DEAD"],"their_production":false,"what":"Parent permission. Children (tickets) cannot outlive it."},"restraint":"https://gate.velaru.xyz/.well-known/restraint.json","spec":"gate-commit-auth-v1","spend_protocol":{"command_radiation":"https://gate.velaru.xyz/.well-known/command-radiation.json","commit_auth":"https://gate.velaru.xyz/.well-known/commit-auth.json","fingerprint":{"alg":"sha256","canonical_json":"sort_keys, separators=(',', ':')","over":["method","path","job_id","spend_kind"]},"implementor":"https://gate.velaru.xyz/listings/cloudflare-worker-bind.js","license_fuse":"https://gate.velaru.xyz/.well-known/license-fuse.json","married_write":{"method":"POST","path":"/job/v1/jobs/{job_id}/bind-only","spend_kind":"bind"},"name":"Spend protocol","not":["a hop receipt","a second source for the same YES","authorization for bind-and-issue or issue"],"page":"https://gate.velaru.xyz/scanner","redeem":{"fail_closed":true,"mismatch":"ticket_spend_mismatch","missing_write":"spend_write_required","not_in_protocol":"spend_write_not_in_protocol","now":"UTC. Missing or skewed now is radiation_abort; the ticket is not consumed.","optional":["spend_fingerprint","license_id","counterpart_id","counterpart_kind","counterpart_path","counterpart_method"],"path":"https://gate.velaru.xyz/v1/pas/bind-ticket/redeem","recompute":"Hash the write being forwarded, not the fingerprint copied off the ticket.","required":["ticket_id","token","job_id","method","path","now"]},"refused_writes":["POST /job/v1/jobs/{job_id}/bind-and-issue","POST /policy/v1/policies/{policy_id}/issue"],"restraint":"https://gate.velaru.xyz/.well-known/restraint.json","spec":"gate-spend-protocol-v1","their_production":false,"ticket":{"binds_to":"spend_fingerprint","single_use":true,"stale_hop_cannot_spend":true},"what":"The only scanner that can print a YES on this irreversible spend."},"stale_hop_cannot_spend":true,"their_production":false,"ttl_seconds":15}
