warriors/trisha/docs/reference/neptune-submission.md

Validated Neptune transaction submission

The trisha-neptune adapter owns Neptune0.15.1 canonical RPC and transaction codecs pinned to upstream revision 9869b5e35b659dc520fad51ba5a9c812fed46db0. The compiler and generic CPU engine do not own these network transaction types.

trisha deploy prepare PROGRAM --intent intent.json --output prepared.json --state STATE validates a complete caller-supplied transaction. The intent contains schema_version1, network, independently selected expected_kernel, canonical RpcTransaction, and every output's canonical RpcUtxo, sender_randomness, receiver_digest and compiled_lock flag, in kernel order. At least one output must use the actual compiled Program.hash(). Each output preimage is rehashed using the canonical UTXO codec and mutator-set commitment; the complete kernel MAST must equal the explicit expected digest. The complete SingleProof is checked against the pinned policy program, native proof version5, that kernel digest and empty output. Unknown/noncanonical RPC encodings fail.

The preparation artifact contains the exact JSON-RPC request and verification receipt. It excludes output preimage randomness. It is created with private permissions and cannot overwrite an existing file. Preparation does not select wallet coins, construct funded transaction proofs, or establish current-chain admission. Those are separate responsibilities of the transaction producer/node.

trisha deploy submit PROGRAM --intent intent.json --endpoint URL --auth-file private-gateway.json --state STATE repeats all preparation checks and sends exactly that transaction using wallet_submitTransaction. Submission is an explicit external action. Tests use loopback mocks and a real isolated Testnet(1) node.

The native Neptune HTTP JSON-RPC endpoint does not implement bearer/cookie authentication. This adapter requires an explicitly configured authenticated HTTP gateway/proxy. Its private auth file contains schema_version1, network, endpoint and bearer_token. HTTPS is required outside explicit loopback. Redirects are disabled; credentials cannot occur in URL/query; requests time out and responses are capped at64KiB. Gateway acceptance is not chain confirmation. The older authenticated tarpc RPC is a distinct protocol.

Release acceptance requires a genuine transaction proof with a custom compiled lock output, altered kernel/program/output negatives, canonical encoding checks, and mock submission tests. These gates passed with a fresh genuine SingleProof; a real isolated Testnet(1) node also admitted the exact kernel and rejected an altered kernel using the original proof. The audit receipt records this result. Funded wallet deployment remains a separate workflow.

Before assembling a full transaction, trisha deploy output PROGRAM --spec output-spec.json --output new-output.json constructs its canonical custom-lock UTXO and addition record. The bounded spec contains canonical RPC coins, sender_randomness and receiver_digest. The receipt retains the exact preimage for transaction construction and is written privately. This step does not produce a transaction proof. A zero-coin independent oracle fixture exercises the complete construction and proof path; funded wallet coin selection remains outside this caller-supplied transaction interface.

Isolated real-proof network

local-testnet1 is an explicit non-default state: upstream testnet-1, chain4, legacy RPC29799; its local JSON-RPC gate uses127.0.0.1:29797. It is separate from public testnet/testnet-0/chain3. Unmodified RegTest accepts only mock proofs and cannot replace this genuine SingleProof admission gate.

Deployment oracle fixtures use the real Testnet(1) genesis accumulator (including premine and guesser additions) and capture Timestamp::now() immediately before component proving. Timestamp/accumulator cannot be patched after proving: both belong to the authenticated kernel. Node admission rejects transactions older than10hours or at least60,001ms in the future. An archived proof remains a valid mathematical fixture after that window, but must not be reported as a fresh node-admission receipt.

The node, gateway and client must run with loopback-only OS network isolation: upstream enables UPnP without a disable switch. Use a fresh private data root, no peers, no Personal RPC/unsafe mode and no transaction initiation. Admission success must be followed by observing the exact kernel in the node mempool; RPC success alone confirms only channel enqueue. No chain confirmation is claimed. Mining template refresh is a separate gate requiring a real proposal; without a composer the native endpoint returns null.

Graph