From 8b18021b7fe568bbccf9a9ae68c6819da832faf3 Mon Sep 17 00:00:00 2001 From: ascandone Date: Tue, 13 Oct 2026 11:27:10 +0200 Subject: [PATCH] test(vm): frozen bytecode corpus for backward compatibility Freeze the bytecode compiled from every script fixture, with each case's vars blob, inputs and output, and check that this build runs it to the same result or rejects it with UnsupportedBytecodeVersionError. A guard fails when CurrentBytecodeVersion has no freeze. --- Justfile | 4 + bytecode_corpus_test.go | 374 ++++++++++++++++++ compiler-architecture.md | 15 + .../0.1/add-monetaries-same-currency.numb | Bin 0 -> 192 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/add-numbers.numb | Bin 0 -> 100 bytes .../0.1/add-numbers/case/balances.json | 1 + .../0.1/add-numbers/case/postings.json | 7 + .../bytecode/0.1/add-numbers/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/allocate-dont-take-too-much.numb | Bin 0 -> 406 bytes .../case/balances.json | 12 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/allocation.numb | Bin 0 -> 359 bytes .../0.1/allocation/case/balances.json | 7 + .../0.1/allocation/case/postings.json | 24 ++ .../bytecode/0.1/allocation/case/vars.nvar | Bin 0 -> 56 bytes testdata/bytecode/0.1/ask-balance-twice.numb | Bin 0 -> 186 bytes .../0.1/ask-balance-twice/case/balances.json | 7 + .../0.1/ask-balance-twice/case/postings.json | 12 + .../0.1/ask-balance-twice/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/balance-not-found.numb | Bin 0 -> 182 bytes .../0.1/balance-not-found/case/balances.json | 1 + .../0.1/balance-not-found/case/postings.json | 5 + .../0.1/balance-not-found/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/balance-simple.numb | Bin 0 -> 186 bytes .../0.1/balance-simple/case/balances.json | 7 + .../0.1/balance-simple/case/postings.json | 12 + .../0.1/balance-simple/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/balance.numb | Bin 0 -> 182 bytes .../bytecode/0.1/balance/case/balances.json | 7 + .../bytecode/0.1/balance/case/postings.json | 12 + testdata/bytecode/0.1/balance/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/big-int-monetary.numb | Bin 0 -> 242 bytes .../0.1/big-int-monetary/case/balances.json | 1 + .../0.1/big-int-monetary/case/postings.json | 12 + .../0.1/big-int-monetary/case/vars.nvar | Bin 0 -> 56 bytes testdata/bytecode/0.1/big-int.numb | Bin 0 -> 251 bytes .../bytecode/0.1/big-int/case/balances.json | 1 + .../bytecode/0.1/big-int/case/postings.json | 12 + testdata/bytecode/0.1/big-int/case/vars.nvar | Bin 0 -> 45 bytes testdata/bytecode/0.1/bigint-literal.numb | Bin 0 -> 211 bytes .../bigint-literal/example-spec/balances.json | 1 + .../bigint-literal/example-spec/postings.json | 12 + .../0.1/bigint-literal/example-spec/vars.nvar | Bin 0 -> 30 bytes .../0.1/capped-when-less-than-needed.numb | Bin 0 -> 300 bytes .../case/balances.json | 12 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/capped-when-more-than-balance.numb | Bin 0 -> 291 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/cascading-sources.numb | Bin 0 -> 629 bytes .../0.1/cascading-sources/case/balances.json | 22 ++ .../0.1/cascading-sources/case/postings.json | 30 ++ .../0.1/cascading-sources/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/dest-inorder-lazy-clause-eval.numb | Bin 0 -> 354 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/destination-complex.numb | Bin 0 -> 437 bytes .../destination-complex/case/balances.json | 1 + .../destination-complex/case/postings.json | 24 ++ .../0.1/destination-complex/case/vars.nvar | Bin 0 -> 30 bytes .../do-not-exceed-overdraft-on-send-all.numb | Bin 0 -> 146 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...exceed-overdraft-when-double-spending.numb | Bin 0 -> 303 bytes .../case/balances.json | 1 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/do-not-exceed-overdraft.numb | Bin 0 -> 245 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../do-not-exceed-overdraft/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/dynamic-allocation.numb | Bin 0 -> 335 bytes .../0.1/dynamic-allocation/case/balances.json | 7 + .../0.1/dynamic-allocation/case/postings.json | 18 + .../0.1/dynamic-allocation/case/vars.nvar | Bin 0 -> 42 bytes .../0.1/dynamic-world-bounded-overdraft.numb | Bin 0 -> 240 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 39 bytes .../balances.json | 1 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 37 bytes .../bytecode/0.1/dynamic-world-source.numb | Bin 0 -> 170 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 39 bytes .../balances.json | 1 + .../error.json | 8 + .../vars.nvar | Bin 0 -> 39 bytes ...e-account-interpolation-account-alias.numb | Bin 0 -> 203 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-account-interpolation-number.numb | Bin 0 -> 209 bytes .../interpolates-a-number-var/balances.json | 1 + .../interpolates-a-number-var/postings.json | 12 + .../interpolates-a-number-var/vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-account-interpolation-string.numb | Bin 0 -> 232 bytes .../interpolates-a-string-var/balances.json | 1 + .../interpolates-a-string-var/postings.json | 12 + .../interpolates-a-string-var/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-account-var-origin.numb | Bin 0 -> 178 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-allotment-beyond-int64.numb | Bin 0 -> 280 bytes .../balances.json | 1 + .../postings.json | 18 + .../splits-an-amount-beyond-int64/vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-allotment-exact-no-remaining.numb | Bin 0 -> 291 bytes .../balances.json | 1 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../e2e-allotment-halves-of-odd-amount.numb | Bin 0 -> 269 bytes .../balances.json | 1 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-allotment-leftover-two-units.numb | Bin 0 -> 326 bytes .../balances.json | 1 + .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes ...-allotment-percentages-divide-exactly.numb | Bin 0 -> 276 bytes .../balances.json | 1 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-allotment-remaining-only.numb | Bin 0 -> 205 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-allotment-sevenths.numb | Bin 0 -> 333 bytes .../balances.json | 1 + .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-balance-var.numb | Bin 0 -> 184 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-bounded-overdraft.numb | Bin 0 -> 190 bytes .../overdraws-within-the-bound/balances.json | 7 + .../overdraws-within-the-bound/postings.json | 12 + .../overdraws-within-the-bound/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-colored-source.numb | Bin 0 -> 192 bytes .../balances.json | 13 + .../postings.json | 13 + .../pulls-only-the-colored-balance/vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-destination-allotment-thirds.numb | Bin 0 -> 326 bytes .../balances.json | 1 + .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-destination-allotment.numb | Bin 0 -> 269 bytes .../splits-by-portion/balances.json | 1 + .../splits-by-portion/postings.json | 18 + .../splits-by-portion/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-destination-inorder.numb | Bin 0 -> 267 bytes .../balances.json | 1 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-destination-kept.numb | Bin 0 -> 258 bytes .../balances.json | 1 + .../postings.json | 12 + .../a-kept-clause-emits-no-posting/vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-dynamic-world-source.numb | Bin 0 -> 171 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 39 bytes testdata/bytecode/0.1/e2e-get-amount.numb | Bin 0 -> 182 bytes .../balances.json | 7 + .../postings.json | 12 + .../reads-the-amount-of-a-monetary/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-get-asset.numb | Bin 0 -> 188 bytes .../balances.json | 7 + .../postings.json | 12 + .../reads-the-asset-of-a-monetary/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-inorder-with-cap.numb | Bin 0 -> 340 bytes .../balances.json | 17 + .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-inorder.numb | Bin 0 -> 286 bytes .../balances.json | 17 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-int-addition.numb | Bin 0 -> 192 bytes .../adds-numbers/balances.json | 7 + .../adds-numbers/postings.json | 12 + .../e2e-int-addition/adds-numbers/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-int-subtraction.numb | Bin 0 -> 192 bytes .../subtracts-numbers/balances.json | 7 + .../subtracts-numbers/postings.json | 12 + .../subtracts-numbers/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-monetary-addition.numb | Bin 0 -> 200 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-monetary-subtraction.numb | Bin 0 -> 200 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-nested-destination.numb | Bin 0 -> 368 bytes .../splits-a-share-again/balances.json | 1 + .../splits-a-share-again/postings.json | 24 ++ .../splits-a-share-again/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-oneof-nested.numb | Bin 0 -> 391 bytes .../balances.json | 22 ++ .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../balances.json | 22 ++ .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-oneof.numb | Bin 0 -> 318 bytes .../balances.json | 17 + .../postings.json | 12 + .../backtracks-past-a-short-branch/vars.nvar | Bin 0 -> 30 bytes .../balances.json | 17 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../balances.json | 17 + .../fails-when-no-branch-covers-it/error.json | 8 + .../fails-when-no-branch-covers-it/vars.nvar | Bin 0 -> 30 bytes .../the-first-branch-covers-it/balances.json | 17 + .../the-first-branch-covers-it/postings.json | 12 + .../the-first-branch-covers-it/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-overdraft-function.numb | Bin 0 -> 204 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../balances.json | 7 + .../postings.json | 5 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-prefix-minus-monetary.numb | Bin 0 -> 186 bytes .../negates-a-monetary/balances.json | 7 + .../negates-a-monetary/postings.json | 12 + .../negates-a-monetary/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-prefix-minus-number.numb | Bin 0 -> 186 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-save-then-send-all.numb | Bin 0 -> 168 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-send-all-bounded-overdraft.numb | Bin 0 -> 147 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-send-all-multi-source.numb | Bin 0 -> 274 bytes .../balances.json | 17 + .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes ...e2e-send-all-negative-overdraft-bound.numb | Bin 0 -> 150 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-send-all.numb | Bin 0 -> 138 bytes .../sends-the-whole-balance/balances.json | 7 + .../sends-the-whole-balance/postings.json | 12 + .../sends-the-whole-balance/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-send.numb | Bin 0 -> 178 bytes .../balances.json | 7 + .../error.json | 8 + .../vars.nvar | Bin 0 -> 30 bytes .../sends-from-a-funded-source/balances.json | 7 + .../sends-from-a-funded-source/postings.json | 12 + .../sends-from-a-funded-source/vars.nvar | Bin 0 -> 30 bytes .../e2e-source-allotment-insufficient.numb | Bin 0 -> 355 bytes .../balances.json | 12 + .../error.json | 8 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/e2e-source-allotment-thirds.numb | Bin 0 -> 462 bytes .../balances.json | 17 + .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/e2e-source-allotment.numb | Bin 0 -> 355 bytes .../balances.json | 12 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/e2e-world-source.numb | Bin 0 -> 171 bytes .../world-is-unbounded/balances.json | 1 + .../world-is-unbounded/postings.json | 12 + .../world-is-unbounded/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/empty-postings.numb | Bin 0 -> 137 bytes .../0.1/empty-postings/case/balances.json | 7 + .../0.1/empty-postings/case/postings.json | 5 + .../0.1/empty-postings/case/vars.nvar | Bin 0 -> 30 bytes ...-account-interpolation-account-interp.numb | Bin 0 -> 144 bytes .../case/balances.json | 1 + .../case/postings.json | 7 + .../case/vars.nvar | Bin 0 -> 59 bytes ...ount-interpolation-interpolated-world.numb | Bin 0 -> 174 bytes .../balances.json | 1 + .../error.json | 8 + .../vars.nvar | Bin 0 -> 41 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 39 bytes ...maining-clause-skipped-when-exhausted.numb | Bin 0 -> 289 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 54 bytes ...n-zero-cap-clause-skips-interpolation.numb | Bin 0 -> 289 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 54 bytes ...l-asset-colors-color-allotment-source.numb | Bin 0 -> 383 bytes .../balances.json | 13 + .../postings.json | 19 + .../vars.nvar | Bin 0 -> 30 bytes ...-asset-colors-color-bounded-overdraft.numb | Bin 0 -> 206 bytes .../balances.json | 13 + .../postings.json | 13 + .../vars.nvar | Bin 0 -> 30 bytes ...ntal-asset-colors-color-capped-source.numb | Bin 0 -> 302 bytes .../balances.json | 13 + .../postings.json | 19 + .../vars.nvar | Bin 0 -> 30 bytes ...-asset-colors-color-destination-split.numb | Bin 0 -> 288 bytes .../balances.json | 8 + .../postings.json | 20 + .../vars.nvar | Bin 0 -> 30 bytes ...ntal-asset-colors-color-from-variable.numb | Bin 0 -> 185 bytes .../balances.json | 13 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 34 bytes .../pulls-the-colored-balance/balances.json | 13 + .../pulls-the-colored-balance/postings.json | 13 + .../pulls-the-colored-balance/vars.nvar | Bin 0 -> 37 bytes ...l-asset-colors-color-inorder-send-all.numb | Bin 0 -> 258 bytes .../case/balances.json | 19 + .../case/postings.json | 26 ++ .../case/vars.nvar | Bin 0 -> 30 bytes ...perimental-asset-colors-color-inorder.numb | Bin 0 -> 308 bytes .../case/balances.json | 19 + .../case/postings.json | 26 ++ .../case/vars.nvar | Bin 0 -> 30 bytes .../experimental-asset-colors-color-kept.numb | Bin 0 -> 290 bytes .../balances.json | 8 + .../postings.json | 13 + .../vars.nvar | Bin 0 -> 30 bytes ...experimental-asset-colors-color-oneof.numb | Bin 0 -> 280 bytes .../balances.json | 14 + .../postings.json | 13 + .../vars.nvar | Bin 0 -> 30 bytes ...r-restrict-balance-when-missing-funds.numb | Bin 0 -> 192 bytes .../case/balances.json | 13 + .../case/error.json | 8 + .../case/vars.nvar | Bin 0 -> 30 bytes ...l-asset-colors-color-restrict-balance.numb | Bin 0 -> 192 bytes .../case/balances.json | 13 + .../case/postings.json | 13 + .../case/vars.nvar | Bin 0 -> 30 bytes ...-colors-color-restriction-in-send-all.numb | Bin 0 -> 154 bytes .../case/balances.json | 8 + .../case/postings.json | 13 + .../case/vars.nvar | Bin 0 -> 30 bytes .../experimental-asset-colors-color-save.numb | Bin 0 -> 208 bytes .../balances.json | 13 + .../postings.json | 13 + .../vars.nvar | Bin 0 -> 30 bytes ...ntal-asset-colors-color-send-overdrat.numb | Bin 0 -> 168 bytes .../case/balances.json | 1 + .../case/postings.json | 13 + .../case/vars.nvar | Bin 0 -> 30 bytes .../experimental-asset-colors-color-send.numb | Bin 0 -> 185 bytes .../case/balances.json | 1 + .../case/postings.json | 13 + .../case/vars.nvar | Bin 0 -> 30 bytes ...color-two-colors-to-split-destination.numb | Bin 0 -> 378 bytes .../balances.json | 14 + .../postings.json | 20 + .../vars.nvar | Bin 0 -> 30 bytes ...set-colors-color-with-asset-precision.numb | Bin 0 -> 169 bytes .../case/balances.json | 1 + .../case/postings.json | 13 + .../case/vars.nvar | Bin 0 -> 30 bytes ...perimental-asset-colors-colored-world.numb | Bin 0 -> 311 bytes .../balances.json | 1 + .../postings.json | 20 + .../vars.nvar | Bin 0 -> 30 bytes ...experimental-asset-colors-empty-color.numb | Bin 0 -> 151 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...o-double-spending-in-colored-send-all.numb | Bin 0 -> 248 bytes .../case/balances.json | 13 + .../case/postings.json | 19 + .../case/vars.nvar | Bin 0 -> 30 bytes ...rs-no-double-spending-in-colored-send.numb | Bin 0 -> 298 bytes .../case/balances.json | 13 + .../case/postings.json | 19 + .../case/vars.nvar | Bin 0 -> 30 bytes ...t-amount-function-get-amount-function.numb | Bin 0 -> 99 bytes .../case/balances.json | 1 + .../case/postings.json | 7 + .../case/vars.nvar | Bin 0 -> 30 bytes ...get-asset-function-get-asset-function.numb | Bin 0 -> 97 bytes .../case/balances.json | 1 + .../case/postings.json | 7 + .../case/vars.nvar | Bin 0 -> 30 bytes ...ript-function-call-expr-in-var-origin.numb | Bin 0 -> 83 bytes .../case/balances.json | 1 + .../case/postings.json | 5 + .../case/vars.nvar | Bin 0 -> 30 bytes ...call-midscript-balance-after-decrease.numb | Bin 0 -> 274 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes ...cript-function-call-midscript-balance.numb | Bin 0 -> 184 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../experimental-oneof-oneof-all-failing.numb | Bin 0 -> 331 bytes .../case/balances.json | 1 + .../case/error.json | 8 + .../case/vars.nvar | Bin 0 -> 30 bytes ...-oneof-oneof-destination-first-clause.numb | Bin 0 -> 235 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...-oneof-oneof-destination-in-allotment.numb | Bin 0 -> 351 bytes .../balances.json | 1 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes ...of-oneof-destination-remaining-clause.numb | Bin 0 -> 298 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...oneof-oneof-destination-second-clause.numb | Bin 0 -> 292 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../experimental-oneof-oneof-in-send-all.numb | Bin 0 -> 137 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...eof-oneof-in-source-send-first-branch.numb | Bin 0 -> 231 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../experimental-oneof-oneof-in-source.numb | Bin 0 -> 260 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...-oneof-partial-last-branch-in-inorder.numb | Bin 0 -> 312 bytes .../balances.json | 12 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../experimental-oneof-oneof-singleton.numb | Bin 0 -> 174 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...ntal-oneof-oneof-source-middle-branch.numb | Bin 0 -> 316 bytes .../balances.json | 12 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes ...xperimental-oneof-oneof-source-nested.numb | Bin 0 -> 328 bytes .../balances.json | 12 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes ...ntal-oneof-update-balances-with-oneof.numb | Bin 0 -> 306 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes ...erdraft-function-use-case-remove-debt.numb | Bin 0 -> 332 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...tion-overdraft-function-when-negative.numb | Bin 0 -> 204 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...tion-overdraft-function-when-positive.numb | Bin 0 -> 204 bytes .../case/balances.json | 7 + .../case/postings.json | 5 + .../case/vars.nvar | Bin 0 -> 30 bytes ...function-overdraft-function-when-zero.numb | Bin 0 -> 204 bytes .../case/balances.json | 1 + .../case/postings.json | 5 + .../case/vars.nvar | Bin 0 -> 30 bytes ...imental-overdraft-function-reach-zero.numb | Bin 0 -> 475 bytes .../it-keeps-the-spare-amount/balances.json | 12 + .../it-keeps-the-spare-amount/postings.json | 18 + .../it-keeps-the-spare-amount/vars.nvar | Bin 0 -> 36 bytes .../balances.json | 12 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 36 bytes .../balances.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 36 bytes ...xperimental-scoped-function-allotment.numb | Bin 0 -> 393 bytes .../balances.json | 13 + .../postings.json | 19 + .../vars.nvar | Bin 0 -> 30 bytes .../experimental-scoped-function-balance.numb | Bin 0 -> 208 bytes .../balances.json | 13 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../experimental-scoped-function-capped.numb | Bin 0 -> 303 bytes .../balances.json | 13 + .../postings.json | 19 + .../vars.nvar | Bin 0 -> 30 bytes ...ental-scoped-function-color-and-scope.numb | Bin 0 -> 165 bytes .../balances.json | 21 + .../postings.json | 14 + .../vars.nvar | Bin 0 -> 30 bytes ...xperimental-scoped-function-overdraft.numb | Bin 0 -> 169 bytes .../balances.json | 1 + .../postings.json | 13 + .../vars.nvar | Bin 0 -> 30 bytes ...tal-scoped-function-read-account-meta.numb | Bin 0 -> 197 bytes .../balances.json | 1 + .../metadata.json | 13 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../experimental-scoped-function-save.numb | Bin 0 -> 188 bytes .../balances.json | 13 + .../postings.json | 13 + .../vars.nvar | Bin 0 -> 30 bytes ...ntal-scoped-function-set-account-meta.numb | Bin 0 -> 152 bytes .../balances.json | 1 + .../postings.json | 17 + .../vars.nvar | Bin 0 -> 30 bytes .../experimental-scoped-function-simple.numb | Bin 0 -> 202 bytes .../scopes-the-accounts/balances.json | 8 + .../scopes-the-accounts/postings.json | 14 + .../scopes-the-accounts/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/feature-flag-syntax.numb | Bin 0 -> 193 bytes .../example-spec/balances.json | 7 + .../example-spec/postings.json | 12 + .../example-spec/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/floating-perc.numb | Bin 0 -> 263 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/floating-perc2.numb | Bin 0 -> 264 bytes .../floating-perc2/example-spec/balances.json | 1 + .../floating-perc2/example-spec/postings.json | 12 + .../0.1/floating-perc2/example-spec/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/inoder-destination.numb | Bin 0 -> 274 bytes .../0.1/inoder-destination/case/balances.json | 7 + .../0.1/inoder-destination/case/postings.json | 18 + .../0.1/inoder-destination/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/insufficient-funds.numb | Bin 0 -> 217 bytes .../0.1/insufficient-funds/case/balances.json | 12 + .../0.1/insufficient-funds/case/error.json | 8 + .../0.1/insufficient-funds/case/vars.nvar | Bin 0 -> 72 bytes .../0.1/kept-in-send-all-inorder.numb | Bin 0 -> 229 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../kept-in-send-all-inorder/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/kept-inorder.numb | Bin 0 -> 260 bytes .../0.1/kept-inorder/case/balances.json | 1 + .../0.1/kept-inorder/case/postings.json | 12 + .../bytecode/0.1/kept-inorder/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/kept-with-balance.numb | Bin 0 -> 267 bytes .../0.1/kept-with-balance/case/balances.json | 7 + .../0.1/kept-with-balance/case/postings.json | 12 + .../0.1/kept-with-balance/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/many-kept-dest.numb | Bin 0 -> 348 bytes .../0.1/many-kept-dest/case/balances.json | 7 + .../0.1/many-kept-dest/case/postings.json | 18 + .../0.1/many-kept-dest/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/many-max-dest.numb | Bin 0 -> 358 bytes .../0.1/many-max-dest/case/balances.json | 7 + .../0.1/many-max-dest/case/postings.json | 24 ++ .../bytecode/0.1/many-max-dest/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/max-with-unbounded-overdraft.numb | Bin 0 -> 272 bytes .../case/balances.json | 12 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/metadata.numb | Bin 0 -> 297 bytes .../bytecode/0.1/metadata/case/balances.json | 12 + .../bytecode/0.1/metadata/case/metadata.json | 12 + .../bytecode/0.1/metadata/case/postings.json | 18 + testdata/bytecode/0.1/metadata/case/vars.nvar | Bin 0 -> 43 bytes .../0.1/midscript-balance-after-credit.numb | Bin 0 -> 228 bytes .../balances.json | 12 + .../postings.json | 15 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/minus-infix-monetary.numb | Bin 0 -> 193 bytes .../balances.json | 1 + .../postings.json | 12 + .../should-subtract-the-monetaries/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/minus-infix-number.numb | Bin 0 -> 185 bytes .../should-subtract-the-numbers/balances.json | 1 + .../should-subtract-the-numbers/postings.json | 12 + .../should-subtract-the-numbers/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/minus-prefix-number.numb | Bin 0 -> 179 bytes .../should-subtract-the-numbers/balances.json | 1 + .../should-subtract-the-numbers/postings.json | 12 + .../should-subtract-the-numbers/vars.nvar | Bin 0 -> 30 bytes .../0.1/movements-fold-same-pair.numb | Bin 0 -> 271 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../movements-fold-same-pair/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/multiple-world-sources.numb | Bin 0 -> 486 bytes .../balances.json | 7 + .../postings.json | 30 ++ .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/neg-max-dest.numb | Bin 0 -> 335 bytes .../0.1/neg-max-dest/case/balances.json | 7 + .../0.1/neg-max-dest/case/postings.json | 12 + .../bytecode/0.1/neg-max-dest/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/negative-amount.numb | Bin 0 -> 174 bytes .../0.1/negative-amount/case/balances.json | 1 + .../0.1/negative-amount/case/error.json | 6 + .../0.1/negative-amount/case/vars.nvar | Bin 0 -> 30 bytes .../negative-max-over-allotment-source.numb | Bin 0 -> 475 bytes .../balances.json | 12 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/negative-max-send-all.numb | Bin 0 -> 182 bytes .../negative-max-send-all/case/balances.json | 7 + .../negative-max-send-all/case/postings.json | 5 + .../0.1/negative-max-send-all/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/negative-max.numb | Bin 0 -> 292 bytes .../0.1/negative-max/case/balances.json | 7 + .../0.1/negative-max/case/postings.json | 12 + .../bytecode/0.1/negative-max/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/nested-remaining-complex.numb | Bin 0 -> 774 bytes .../case/balances.json | 7 + .../case/postings.json | 30 ++ .../nested-remaining-complex/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/nested-remaining.numb | Bin 0 -> 431 bytes .../0.1/nested-remaining/case/balances.json | 1 + .../0.1/nested-remaining/case/postings.json | 18 + .../0.1/nested-remaining/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/nested-world-inorder.numb | Bin 0 -> 431 bytes .../balances.json | 22 ++ .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/no-empty-postings.numb | Bin 0 -> 289 bytes .../0.1/no-empty-postings/case/balances.json | 1 + .../0.1/no-empty-postings/case/postings.json | 12 + .../0.1/no-empty-postings/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/ovedrafts-playground-example.numb | Bin 0 -> 481 bytes .../case/balances.json | 7 + .../case/postings.json | 24 ++ .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/overdraft-in-send-all-when-noop.numb | Bin 0 -> 149 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/overdraft-in-send-all.numb | Bin 0 -> 149 bytes .../overdraft-in-send-all/case/balances.json | 7 + .../overdraft-in-send-all/case/postings.json | 12 + .../0.1/overdraft-in-send-all/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/overdraft-not-enough-funds.numb | Bin 0 -> 375 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../overdraft-not-enough-funds/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/overdraft-when-enough-funds.numb | Bin 0 -> 216 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...aft-when-negative-balance-in-send-all.numb | Bin 0 -> 159 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/overdraft-when-negative-balance.numb | Bin 0 -> 199 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...ft-when-negative-ovedraft-in-send-all.numb | Bin 0 -> 163 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/overdraft-when-not-enough-funds.numb | Bin 0 -> 222 bytes .../case/balances.json | 7 + .../case/error.json | 8 + .../case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/override-account-meta.numb | Bin 0 -> 147 bytes .../override-account-meta/case/balances.json | 1 + .../override-account-meta/case/metadata.json | 12 + .../override-account-meta/case/postings.json | 16 + .../0.1/override-account-meta/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/portion-syntax.numb | Bin 0 -> 253 bytes .../0.1/portion-syntax/case/balances.json | 1 + .../0.1/portion-syntax/case/postings.json | 12 + .../0.1/portion-syntax/case/vars.nvar | Bin 0 -> 42 bytes .../remaining-kept-in-send-all-inorder.numb | Bin 0 -> 229 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/remaining-kept-inorder.numb | Bin 0 -> 257 bytes .../remaining-kept-inorder/case/balances.json | 1 + .../remaining-kept-inorder/case/postings.json | 12 + .../0.1/remaining-kept-inorder/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/remaining-none-in-send-all.numb | Bin 0 -> 235 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../remaining-none-in-send-all/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/remaining-none.numb | Bin 0 -> 260 bytes .../0.1/remaining-none/case/balances.json | 1 + .../0.1/remaining-none/case/postings.json | 12 + .../0.1/remaining-none/case/vars.nvar | Bin 0 -> 30 bytes ...ave-save-from-account__multi-postings.numb | Bin 0 -> 353 bytes .../case/balances.json | 7 + .../case/postings.json | 24 ++ .../case/vars.nvar | Bin 0 -> 30 bytes ...-from-account__save-a-different-asset.numb | Bin 0 -> 271 bytes .../case/balances.json | 12 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes ...om-account__save-all-negative-balance.numb | Bin 0 -> 200 bytes .../case/balances.json | 7 + .../case/error.json | 8 + .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/save-save-from-account__save-all.numb | Bin 0 -> 249 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes ...ave-from-account__save-causes-failure.numb | Bin 0 -> 209 bytes .../case/balances.json | 7 + .../case/error.json | 8 + .../case/vars.nvar | Bin 0 -> 30 bytes ...-from-account__save-more-than-balance.numb | Bin 0 -> 257 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/save-save-from-account__simple.numb | Bin 0 -> 263 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 30 bytes ...ave-save-from-account__with-asset-var.numb | Bin 0 -> 252 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 37 bytes ...-save-from-account__with-monetary-var.numb | Bin 0 -> 257 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 43 bytes .../send-all-after-unbounded-overdraft.numb | Bin 0 -> 208 bytes .../balances.json | 7 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../send-all-destinatio-allot-complex.numb | Bin 0 -> 363 bytes .../case/balances.json | 12 + .../case/postings.json | 24 ++ .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/send-all-destinatio-allot.numb | Bin 0 -> 292 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../send-all-destinatio-allot/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/send-all-many-max-in-dest.numb | Bin 0 -> 326 bytes .../case/balances.json | 7 + .../case/postings.json | 18 + .../send-all-many-max-in-dest/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/send-all-multi.numb | Bin 0 -> 290 bytes .../0.1/send-all-multi/case/balances.json | 12 + .../0.1/send-all-multi/case/postings.json | 18 + .../0.1/send-all-multi/case/vars.nvar | Bin 0 -> 30 bytes .../send-all-negative-max-over-allotment.numb | Bin 0 -> 262 bytes .../balances.json | 7 + .../postings.json | 5 + .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/send-all-variable.numb | Bin 0 -> 125 bytes .../0.1/send-all-variable/case/balances.json | 7 + .../0.1/send-all-variable/case/postings.json | 12 + .../0.1/send-all-variable/case/vars.nvar | Bin 0 -> 55 bytes ...send-all-when-negative-with-overdraft.numb | Bin 0 -> 183 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/send-all-when-negative.numb | Bin 0 -> 174 bytes .../send-all-when-negative/case/balances.json | 7 + .../send-all-when-negative/case/postings.json | 5 + .../0.1/send-all-when-negative/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/send-all.numb | Bin 0 -> 174 bytes .../bytecode/0.1/send-all/case/balances.json | 7 + .../bytecode/0.1/send-all/case/postings.json | 12 + testdata/bytecode/0.1/send-all/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/send-allt-max-in-dest.numb | Bin 0 -> 238 bytes .../send-allt-max-in-dest/case/balances.json | 7 + .../send-allt-max-in-dest/case/postings.json | 18 + .../0.1/send-allt-max-in-dest/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/send-allt-max-in-src.numb | Bin 0 -> 235 bytes .../send-allt-max-in-src/case/balances.json | 12 + .../send-allt-max-in-src/case/postings.json | 18 + .../0.1/send-allt-max-in-src/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/send-allt-max-when-no-amount.numb | Bin 0 -> 178 bytes .../case/balances.json | 7 + .../case/postings.json | 5 + .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/send-when-negative-balance.numb | Bin 0 -> 231 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../send-when-negative-balance/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/send-zero.numb | Bin 0 -> 171 bytes .../bytecode/0.1/send-zero/case/balances.json | 1 + .../bytecode/0.1/send-zero/case/postings.json | 5 + .../bytecode/0.1/send-zero/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/send.numb | Bin 0 -> 179 bytes testdata/bytecode/0.1/send/case/balances.json | 7 + testdata/bytecode/0.1/send/case/postings.json | 12 + testdata/bytecode/0.1/send/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/set-account-meta.numb | Bin 0 -> 320 bytes .../0.1/set-account-meta/case/balances.json | 1 + .../0.1/set-account-meta/case/postings.json | 36 ++ .../0.1/set-account-meta/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/set-tx-meta.numb | Bin 0 -> 220 bytes .../0.1/set-tx-meta/case/balances.json | 1 + .../0.1/set-tx-meta/case/postings.json | 11 + .../bytecode/0.1/set-tx-meta/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/source-allotment-invalid-amt.numb | Bin 0 -> 344 bytes .../case/balances.json | 7 + .../case/error.json | 8 + .../case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/source-allotment.numb | Bin 0 -> 498 bytes .../0.1/source-allotment/case/balances.json | 17 + .../0.1/source-allotment/case/postings.json | 24 ++ .../0.1/source-allotment/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/source-complex.numb | Bin 0 -> 568 bytes .../0.1/source-complex/case/balances.json | 22 ++ .../0.1/source-complex/case/postings.json | 30 ++ .../0.1/source-complex/case/vars.nvar | Bin 0 -> 44 bytes testdata/bytecode/0.1/source-overlapping.numb | Bin 0 -> 516 bytes .../0.1/source-overlapping/case/balances.json | 12 + .../0.1/source-overlapping/case/postings.json | 18 + .../0.1/source-overlapping/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/source.numb | Bin 0 -> 217 bytes .../bytecode/0.1/source/case/balances.json | 12 + .../bytecode/0.1/source/case/postings.json | 18 + testdata/bytecode/0.1/source/case/vars.nvar | Bin 0 -> 72 bytes testdata/bytecode/0.1/sub-monetaries.numb | Bin 0 -> 121 bytes .../0.1/sub-monetaries/case/balances.json | 1 + .../0.1/sub-monetaries/case/postings.json | 7 + .../0.1/sub-monetaries/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/sub-numbers.numb | Bin 0 -> 100 bytes .../0.1/sub-numbers/case/balances.json | 1 + .../0.1/sub-numbers/case/postings.json | 7 + .../bytecode/0.1/sub-numbers/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/track-balances-send-all.numb | Bin 0 -> 201 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../track-balances-send-all/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/track-balances.numb | Bin 0 -> 262 bytes .../0.1/track-balances/case/balances.json | 7 + .../0.1/track-balances/case/postings.json | 18 + .../0.1/track-balances/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/track-balances2.numb | Bin 0 -> 256 bytes .../0.1/track-balances2/case/balances.json | 7 + .../0.1/track-balances2/case/error.json | 8 + .../0.1/track-balances2/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/track-balances3.numb | Bin 0 -> 281 bytes .../0.1/track-balances3/case/balances.json | 7 + .../0.1/track-balances3/case/postings.json | 18 + .../0.1/track-balances3/case/vars.nvar | Bin 0 -> 30 bytes ...unded-overdraft-when-not-enough-funds.numb | Bin 0 -> 156 bytes .../case/balances.json | 7 + .../case/postings.json | 12 + .../case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/update-balances.numb | Bin 0 -> 278 bytes .../0.1/update-balances/case/balances.json | 7 + .../0.1/update-balances/case/postings.json | 18 + .../0.1/update-balances/case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/use-balance-twice.numb | Bin 0 -> 183 bytes .../0.1/use-balance-twice/case/balances.json | 7 + .../0.1/use-balance-twice/case/postings.json | 12 + .../0.1/use-balance-twice/case/vars.nvar | Bin 0 -> 30 bytes ...erent-assets-with-same-source-account.numb | Bin 0 -> 248 bytes .../case/balances.json | 12 + .../case/postings.json | 18 + .../case/vars.nvar | Bin 0 -> 39 bytes testdata/bytecode/0.1/variable-asset.numb | Bin 0 -> 398 bytes .../0.1/variable-asset/case/balances.json | 12 + .../0.1/variable-asset/case/postings.json | 30 ++ .../0.1/variable-asset/case/vars.nvar | Bin 0 -> 37 bytes .../bytecode/0.1/variable-balance__1.numb | Bin 0 -> 339 bytes .../variable-balance__1/case/balances.json | 12 + .../variable-balance__1/case/postings.json | 18 + .../0.1/variable-balance__1/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/variable-balance__2.numb | Bin 0 -> 339 bytes .../variable-balance__2/case/balances.json | 12 + .../variable-balance__2/case/postings.json | 12 + .../0.1/variable-balance__2/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/variable-balance__3.numb | Bin 0 -> 330 bytes .../variable-balance__3/case/balances.json | 12 + .../variable-balance__3/case/postings.json | 18 + .../0.1/variable-balance__3/case/vars.nvar | Bin 0 -> 35 bytes .../bytecode/0.1/variable-balance__4.numb | Bin 0 -> 330 bytes .../variable-balance__4/case/balances.json | 12 + .../variable-balance__4/case/postings.json | 12 + .../0.1/variable-balance__4/case/vars.nvar | Bin 0 -> 35 bytes .../bytecode/0.1/variable-balance__5.numb | Bin 0 -> 590 bytes .../variable-balance__5/case/balances.json | 27 ++ .../variable-balance__5/case/postings.json | 30 ++ .../0.1/variable-balance__5/case/vars.nvar | Bin 0 -> 30 bytes .../bytecode/0.1/variable-portion-part.numb | Bin 0 -> 298 bytes .../variable-portion-part/case/balances.json | 1 + .../variable-portion-part/case/postings.json | 18 + .../0.1/variable-portion-part/case/vars.nvar | Bin 0 -> 42 bytes testdata/bytecode/0.1/variables-json.numb | Bin 0 -> 237 bytes .../0.1/variables-json/case/balances.json | 7 + .../0.1/variables-json/case/postings.json | 16 + .../0.1/variables-json/case/vars.nvar | Bin 0 -> 100 bytes testdata/bytecode/0.1/variables.numb | Bin 0 -> 206 bytes .../bytecode/0.1/variables/case/balances.json | 7 + .../bytecode/0.1/variables/case/postings.json | 15 + .../bytecode/0.1/variables/case/vars.nvar | Bin 0 -> 88 bytes testdata/bytecode/0.1/world-from-meta.numb | Bin 0 -> 192 bytes .../balances.json | 1 + .../metadata.json | 7 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 40 bytes .../bytecode/0.1/world-in-capped-source.numb | Bin 0 -> 329 bytes .../balances.json | 7 + .../postings.json | 24 ++ .../vars.nvar | Bin 0 -> 30 bytes .../0.1/world-in-source-allotment.numb | Bin 0 -> 363 bytes .../balances.json | 7 + .../postings.json | 18 + .../vars.nvar | Bin 0 -> 30 bytes .../0.1/world-prefix-is-not-world.numb | Bin 0 -> 361 bytes .../balances.json | 1 + .../postings.json | 12 + .../vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/world-source.numb | Bin 0 -> 227 bytes .../0.1/world-source/case/balances.json | 7 + .../0.1/world-source/case/postings.json | 18 + .../bytecode/0.1/world-source/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/zero-postings-destination.numb | Bin 0 -> 262 bytes .../case/balances.json | 1 + .../case/postings.json | 12 + .../zero-postings-destination/case/vars.nvar | Bin 0 -> 30 bytes .../0.1/zero-postings-explicit-allotment.numb | Bin 0 -> 362 bytes .../case/balances.json | 1 + .../case/postings.json | 5 + .../case/vars.nvar | Bin 0 -> 30 bytes .../0.1/zero-postings-explicit-inorder.numb | Bin 0 -> 279 bytes .../case/balances.json | 1 + .../case/postings.json | 5 + .../case/vars.nvar | Bin 0 -> 30 bytes testdata/bytecode/0.1/zero-postings.numb | Bin 0 -> 231 bytes .../0.1/zero-postings/case/balances.json | 1 + .../0.1/zero-postings/case/postings.json | 12 + .../bytecode/0.1/zero-postings/case/vars.nvar | Bin 0 -> 30 bytes 943 files changed, 5495 insertions(+) create mode 100644 bytecode_corpus_test.go create mode 100644 testdata/bytecode/0.1/add-monetaries-same-currency.numb create mode 100644 testdata/bytecode/0.1/add-monetaries-same-currency/case/balances.json create mode 100644 testdata/bytecode/0.1/add-monetaries-same-currency/case/postings.json create mode 100644 testdata/bytecode/0.1/add-monetaries-same-currency/case/vars.nvar create mode 100644 testdata/bytecode/0.1/add-numbers.numb create mode 100644 testdata/bytecode/0.1/add-numbers/case/balances.json create mode 100644 testdata/bytecode/0.1/add-numbers/case/postings.json create mode 100644 testdata/bytecode/0.1/add-numbers/case/vars.nvar create mode 100644 testdata/bytecode/0.1/allocate-dont-take-too-much.numb create mode 100644 testdata/bytecode/0.1/allocate-dont-take-too-much/case/balances.json create mode 100644 testdata/bytecode/0.1/allocate-dont-take-too-much/case/postings.json create mode 100644 testdata/bytecode/0.1/allocate-dont-take-too-much/case/vars.nvar create mode 100644 testdata/bytecode/0.1/allocation.numb create mode 100644 testdata/bytecode/0.1/allocation/case/balances.json create mode 100644 testdata/bytecode/0.1/allocation/case/postings.json create mode 100644 testdata/bytecode/0.1/allocation/case/vars.nvar create mode 100644 testdata/bytecode/0.1/ask-balance-twice.numb create mode 100644 testdata/bytecode/0.1/ask-balance-twice/case/balances.json create mode 100644 testdata/bytecode/0.1/ask-balance-twice/case/postings.json create mode 100644 testdata/bytecode/0.1/ask-balance-twice/case/vars.nvar create mode 100644 testdata/bytecode/0.1/balance-not-found.numb create mode 100644 testdata/bytecode/0.1/balance-not-found/case/balances.json create mode 100644 testdata/bytecode/0.1/balance-not-found/case/postings.json create mode 100644 testdata/bytecode/0.1/balance-not-found/case/vars.nvar create mode 100644 testdata/bytecode/0.1/balance-simple.numb create mode 100644 testdata/bytecode/0.1/balance-simple/case/balances.json create mode 100644 testdata/bytecode/0.1/balance-simple/case/postings.json create mode 100644 testdata/bytecode/0.1/balance-simple/case/vars.nvar create mode 100644 testdata/bytecode/0.1/balance.numb create mode 100644 testdata/bytecode/0.1/balance/case/balances.json create mode 100644 testdata/bytecode/0.1/balance/case/postings.json create mode 100644 testdata/bytecode/0.1/balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/big-int-monetary.numb create mode 100644 testdata/bytecode/0.1/big-int-monetary/case/balances.json create mode 100644 testdata/bytecode/0.1/big-int-monetary/case/postings.json create mode 100644 testdata/bytecode/0.1/big-int-monetary/case/vars.nvar create mode 100644 testdata/bytecode/0.1/big-int.numb create mode 100644 testdata/bytecode/0.1/big-int/case/balances.json create mode 100644 testdata/bytecode/0.1/big-int/case/postings.json create mode 100644 testdata/bytecode/0.1/big-int/case/vars.nvar create mode 100644 testdata/bytecode/0.1/bigint-literal.numb create mode 100644 testdata/bytecode/0.1/bigint-literal/example-spec/balances.json create mode 100644 testdata/bytecode/0.1/bigint-literal/example-spec/postings.json create mode 100644 testdata/bytecode/0.1/bigint-literal/example-spec/vars.nvar create mode 100644 testdata/bytecode/0.1/capped-when-less-than-needed.numb create mode 100644 testdata/bytecode/0.1/capped-when-less-than-needed/case/balances.json create mode 100644 testdata/bytecode/0.1/capped-when-less-than-needed/case/postings.json create mode 100644 testdata/bytecode/0.1/capped-when-less-than-needed/case/vars.nvar create mode 100644 testdata/bytecode/0.1/capped-when-more-than-balance.numb create mode 100644 testdata/bytecode/0.1/capped-when-more-than-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/capped-when-more-than-balance/case/postings.json create mode 100644 testdata/bytecode/0.1/capped-when-more-than-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/cascading-sources.numb create mode 100644 testdata/bytecode/0.1/cascading-sources/case/balances.json create mode 100644 testdata/bytecode/0.1/cascading-sources/case/postings.json create mode 100644 testdata/bytecode/0.1/cascading-sources/case/vars.nvar create mode 100644 testdata/bytecode/0.1/dest-inorder-lazy-clause-eval.numb create mode 100644 testdata/bytecode/0.1/dest-inorder-lazy-clause-eval/clauses-after-the-amount-is-exhausted-are-not-evaluated-wrong-asset-cap-included/balances.json create mode 100644 testdata/bytecode/0.1/dest-inorder-lazy-clause-eval/clauses-after-the-amount-is-exhausted-are-not-evaluated-wrong-asset-cap-included/postings.json create mode 100644 testdata/bytecode/0.1/dest-inorder-lazy-clause-eval/clauses-after-the-amount-is-exhausted-are-not-evaluated-wrong-asset-cap-included/vars.nvar create mode 100644 testdata/bytecode/0.1/destination-complex.numb create mode 100644 testdata/bytecode/0.1/destination-complex/case/balances.json create mode 100644 testdata/bytecode/0.1/destination-complex/case/postings.json create mode 100644 testdata/bytecode/0.1/destination-complex/case/vars.nvar create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-on-send-all.numb create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-on-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-on-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-on-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-when-double-spending.numb create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-when-double-spending/case/balances.json create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-when-double-spending/case/postings.json create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft-when-double-spending/case/vars.nvar create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft.numb create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft/case/balances.json create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft/case/postings.json create mode 100644 testdata/bytecode/0.1/do-not-exceed-overdraft/case/vars.nvar create mode 100644 testdata/bytecode/0.1/dynamic-allocation.numb create mode 100644 testdata/bytecode/0.1/dynamic-allocation/case/balances.json create mode 100644 testdata/bytecode/0.1/dynamic-allocation/case/postings.json create mode 100644 testdata/bytecode/0.1/dynamic-allocation/case/vars.nvar create mode 100644 testdata/bytecode/0.1/dynamic-world-bounded-overdraft.numb create mode 100644 testdata/bytecode/0.1/dynamic-world-bounded-overdraft/but-world-discards-it-and-covers-the-whole-cap/balances.json create mode 100644 testdata/bytecode/0.1/dynamic-world-bounded-overdraft/but-world-discards-it-and-covers-the-whole-cap/postings.json create mode 100644 testdata/bytecode/0.1/dynamic-world-bounded-overdraft/but-world-discards-it-and-covers-the-whole-cap/vars.nvar create mode 100644 testdata/bytecode/0.1/dynamic-world-bounded-overdraft/the-overdraft-bound-applies-to-a-regular-account/balances.json create mode 100644 testdata/bytecode/0.1/dynamic-world-bounded-overdraft/the-overdraft-bound-applies-to-a-regular-account/postings.json create mode 100644 testdata/bytecode/0.1/dynamic-world-bounded-overdraft/the-overdraft-bound-applies-to-a-regular-account/vars.nvar create mode 100644 testdata/bytecode/0.1/dynamic-world-source.numb create mode 100644 testdata/bytecode/0.1/dynamic-world-source/an-account-known-only-at-run-time-is-unbounded-when-it-is-world/balances.json create mode 100644 testdata/bytecode/0.1/dynamic-world-source/an-account-known-only-at-run-time-is-unbounded-when-it-is-world/postings.json create mode 100644 testdata/bytecode/0.1/dynamic-world-source/an-account-known-only-at-run-time-is-unbounded-when-it-is-world/vars.nvar create mode 100644 testdata/bytecode/0.1/dynamic-world-source/but-any-other-account-is-still-bounded-by-its-balance/balances.json create mode 100644 testdata/bytecode/0.1/dynamic-world-source/but-any-other-account-is-still-bounded-by-its-balance/error.json create mode 100644 testdata/bytecode/0.1/dynamic-world-source/but-any-other-account-is-still-bounded-by-its-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-account-alias.numb create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-account-alias/interpolates-the-name-of-an-account-var-whose-origin-is-another-account/balances.json create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-account-alias/interpolates-the-name-of-an-account-var-whose-origin-is-another-account/postings.json create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-account-alias/interpolates-the-name-of-an-account-var-whose-origin-is-another-account/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-number.numb create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-number/interpolates-a-number-var/balances.json create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-number/interpolates-a-number-var/postings.json create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-number/interpolates-a-number-var/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-string.numb create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-string/interpolates-a-string-var/balances.json create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-string/interpolates-a-string-var/postings.json create mode 100644 testdata/bytecode/0.1/e2e-account-interpolation-string/interpolates-a-string-var/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-account-var-origin.numb create mode 100644 testdata/bytecode/0.1/e2e-account-var-origin/uses-an-account-var-initialized-from-a-literal/balances.json create mode 100644 testdata/bytecode/0.1/e2e-account-var-origin/uses-an-account-var-initialized-from-a-literal/postings.json create mode 100644 testdata/bytecode/0.1/e2e-account-var-origin/uses-an-account-var-initialized-from-a-literal/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-allotment-beyond-int64.numb create mode 100644 testdata/bytecode/0.1/e2e-allotment-beyond-int64/splits-an-amount-beyond-int64/balances.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-beyond-int64/splits-an-amount-beyond-int64/postings.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-beyond-int64/splits-an-amount-beyond-int64/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-allotment-exact-no-remaining.numb create mode 100644 testdata/bytecode/0.1/e2e-allotment-exact-no-remaining/portions-summing-to-exactly-1-need-no-remaining/balances.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-exact-no-remaining/portions-summing-to-exactly-1-need-no-remaining/postings.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-exact-no-remaining/portions-summing-to-exactly-1-need-no-remaining/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-allotment-halves-of-odd-amount.numb create mode 100644 testdata/bytecode/0.1/e2e-allotment-halves-of-odd-amount/the-odd-unit-goes-to-the-earliest-share/balances.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-halves-of-odd-amount/the-odd-unit-goes-to-the-earliest-share/postings.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-halves-of-odd-amount/the-odd-unit-goes-to-the-earliest-share/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-allotment-leftover-two-units.numb create mode 100644 testdata/bytecode/0.1/e2e-allotment-leftover-two-units/each-of-the-first-shares-gets-one-leftover-unit/balances.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-leftover-two-units/each-of-the-first-shares-gets-one-leftover-unit/postings.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-leftover-two-units/each-of-the-first-shares-gets-one-leftover-unit/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-allotment-percentages-divide-exactly.numb create mode 100644 testdata/bytecode/0.1/e2e-allotment-percentages-divide-exactly/no-share-is-adjusted-when-the-split-is-exact/balances.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-percentages-divide-exactly/no-share-is-adjusted-when-the-split-is-exact/postings.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-percentages-divide-exactly/no-share-is-adjusted-when-the-split-is-exact/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-allotment-remaining-only.numb create mode 100644 testdata/bytecode/0.1/e2e-allotment-remaining-only/a-lone-remaining-clause-takes-everything/balances.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-remaining-only/a-lone-remaining-clause-takes-everything/postings.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-remaining-only/a-lone-remaining-clause-takes-everything/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-allotment-sevenths.numb create mode 100644 testdata/bytecode/0.1/e2e-allotment-sevenths/the-shares-sum-back-to-the-amount/balances.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-sevenths/the-shares-sum-back-to-the-amount/postings.json create mode 100644 testdata/bytecode/0.1/e2e-allotment-sevenths/the-shares-sum-back-to-the-amount/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-balance-var.numb create mode 100644 testdata/bytecode/0.1/e2e-balance-var/sends-the-balance-read-into-a-var/balances.json create mode 100644 testdata/bytecode/0.1/e2e-balance-var/sends-the-balance-read-into-a-var/postings.json create mode 100644 testdata/bytecode/0.1/e2e-balance-var/sends-the-balance-read-into-a-var/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-bounded-overdraft.numb create mode 100644 testdata/bytecode/0.1/e2e-bounded-overdraft/overdraws-within-the-bound/balances.json create mode 100644 testdata/bytecode/0.1/e2e-bounded-overdraft/overdraws-within-the-bound/postings.json create mode 100644 testdata/bytecode/0.1/e2e-bounded-overdraft/overdraws-within-the-bound/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-colored-source.numb create mode 100644 testdata/bytecode/0.1/e2e-colored-source/pulls-only-the-colored-balance/balances.json create mode 100644 testdata/bytecode/0.1/e2e-colored-source/pulls-only-the-colored-balance/postings.json create mode 100644 testdata/bytecode/0.1/e2e-colored-source/pulls-only-the-colored-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment-thirds.numb create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment-thirds/the-leftover-unit-goes-to-the-earliest-share/balances.json create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment-thirds/the-leftover-unit-goes-to-the-earliest-share/postings.json create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment-thirds/the-leftover-unit-goes-to-the-earliest-share/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment.numb create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment/splits-by-portion/balances.json create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment/splits-by-portion/postings.json create mode 100644 testdata/bytecode/0.1/e2e-destination-allotment/splits-by-portion/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-destination-inorder.numb create mode 100644 testdata/bytecode/0.1/e2e-destination-inorder/a-capped-clause-takes-its-cap-and-remaining-takes-the-rest/balances.json create mode 100644 testdata/bytecode/0.1/e2e-destination-inorder/a-capped-clause-takes-its-cap-and-remaining-takes-the-rest/postings.json create mode 100644 testdata/bytecode/0.1/e2e-destination-inorder/a-capped-clause-takes-its-cap-and-remaining-takes-the-rest/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-destination-kept.numb create mode 100644 testdata/bytecode/0.1/e2e-destination-kept/a-kept-clause-emits-no-posting/balances.json create mode 100644 testdata/bytecode/0.1/e2e-destination-kept/a-kept-clause-emits-no-posting/postings.json create mode 100644 testdata/bytecode/0.1/e2e-destination-kept/a-kept-clause-emits-no-posting/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-dynamic-world-source.numb create mode 100644 testdata/bytecode/0.1/e2e-dynamic-world-source/world-passed-as-a-var-is-unbounded/balances.json create mode 100644 testdata/bytecode/0.1/e2e-dynamic-world-source/world-passed-as-a-var-is-unbounded/postings.json create mode 100644 testdata/bytecode/0.1/e2e-dynamic-world-source/world-passed-as-a-var-is-unbounded/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-get-amount.numb create mode 100644 testdata/bytecode/0.1/e2e-get-amount/reads-the-amount-of-a-monetary/balances.json create mode 100644 testdata/bytecode/0.1/e2e-get-amount/reads-the-amount-of-a-monetary/postings.json create mode 100644 testdata/bytecode/0.1/e2e-get-amount/reads-the-amount-of-a-monetary/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-get-asset.numb create mode 100644 testdata/bytecode/0.1/e2e-get-asset/reads-the-asset-of-a-monetary/balances.json create mode 100644 testdata/bytecode/0.1/e2e-get-asset/reads-the-asset-of-a-monetary/postings.json create mode 100644 testdata/bytecode/0.1/e2e-get-asset/reads-the-asset-of-a-monetary/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-inorder-with-cap.numb create mode 100644 testdata/bytecode/0.1/e2e-inorder-with-cap/the-cap-binds-inside-an-inorder-source/balances.json create mode 100644 testdata/bytecode/0.1/e2e-inorder-with-cap/the-cap-binds-inside-an-inorder-source/postings.json create mode 100644 testdata/bytecode/0.1/e2e-inorder-with-cap/the-cap-binds-inside-an-inorder-source/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-inorder.numb create mode 100644 testdata/bytecode/0.1/e2e-inorder/stops-pulling-once-the-amount-is-covered/balances.json create mode 100644 testdata/bytecode/0.1/e2e-inorder/stops-pulling-once-the-amount-is-covered/postings.json create mode 100644 testdata/bytecode/0.1/e2e-inorder/stops-pulling-once-the-amount-is-covered/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-int-addition.numb create mode 100644 testdata/bytecode/0.1/e2e-int-addition/adds-numbers/balances.json create mode 100644 testdata/bytecode/0.1/e2e-int-addition/adds-numbers/postings.json create mode 100644 testdata/bytecode/0.1/e2e-int-addition/adds-numbers/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-int-subtraction.numb create mode 100644 testdata/bytecode/0.1/e2e-int-subtraction/subtracts-numbers/balances.json create mode 100644 testdata/bytecode/0.1/e2e-int-subtraction/subtracts-numbers/postings.json create mode 100644 testdata/bytecode/0.1/e2e-int-subtraction/subtracts-numbers/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-monetary-addition.numb create mode 100644 testdata/bytecode/0.1/e2e-monetary-addition/adds-monetaries-of-the-same-asset/balances.json create mode 100644 testdata/bytecode/0.1/e2e-monetary-addition/adds-monetaries-of-the-same-asset/postings.json create mode 100644 testdata/bytecode/0.1/e2e-monetary-addition/adds-monetaries-of-the-same-asset/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-monetary-subtraction.numb create mode 100644 testdata/bytecode/0.1/e2e-monetary-subtraction/subtracts-monetaries-of-the-same-asset/balances.json create mode 100644 testdata/bytecode/0.1/e2e-monetary-subtraction/subtracts-monetaries-of-the-same-asset/postings.json create mode 100644 testdata/bytecode/0.1/e2e-monetary-subtraction/subtracts-monetaries-of-the-same-asset/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-nested-destination.numb create mode 100644 testdata/bytecode/0.1/e2e-nested-destination/splits-a-share-again/balances.json create mode 100644 testdata/bytecode/0.1/e2e-nested-destination/splits-a-share-again/postings.json create mode 100644 testdata/bytecode/0.1/e2e-nested-destination/splits-a-share-again/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-oneof-nested.numb create mode 100644 testdata/bytecode/0.1/e2e-oneof-nested/an-inner-backtrack-keeps-the-outer-branch-s-funds/balances.json create mode 100644 testdata/bytecode/0.1/e2e-oneof-nested/an-inner-backtrack-keeps-the-outer-branch-s-funds/postings.json create mode 100644 testdata/bytecode/0.1/e2e-oneof-nested/an-inner-backtrack-keeps-the-outer-branch-s-funds/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-oneof-nested/an-outer-backtrack-discards-the-inner-region-too/balances.json create mode 100644 testdata/bytecode/0.1/e2e-oneof-nested/an-outer-backtrack-discards-the-inner-region-too/postings.json create mode 100644 testdata/bytecode/0.1/e2e-oneof-nested/an-outer-backtrack-discards-the-inner-region-too/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-oneof.numb create mode 100644 testdata/bytecode/0.1/e2e-oneof/backtracks-past-a-short-branch/balances.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/backtracks-past-a-short-branch/postings.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/backtracks-past-a-short-branch/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-oneof/backtracks-twice-to-the-last-branch/balances.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/backtracks-twice-to-the-last-branch/postings.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/backtracks-twice-to-the-last-branch/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-oneof/fails-when-no-branch-covers-it/balances.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/fails-when-no-branch-covers-it/error.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/fails-when-no-branch-covers-it/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-oneof/the-first-branch-covers-it/balances.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/the-first-branch-covers-it/postings.json create mode 100644 testdata/bytecode/0.1/e2e-oneof/the-first-branch-covers-it/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-overdraft-function.numb create mode 100644 testdata/bytecode/0.1/e2e-overdraft-function/a-negative-balance-s-overdraft-is-the-debt/balances.json create mode 100644 testdata/bytecode/0.1/e2e-overdraft-function/a-negative-balance-s-overdraft-is-the-debt/postings.json create mode 100644 testdata/bytecode/0.1/e2e-overdraft-function/a-negative-balance-s-overdraft-is-the-debt/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-overdraft-function/a-positive-balance-has-no-overdraft/balances.json create mode 100644 testdata/bytecode/0.1/e2e-overdraft-function/a-positive-balance-has-no-overdraft/postings.json create mode 100644 testdata/bytecode/0.1/e2e-overdraft-function/a-positive-balance-has-no-overdraft/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-monetary.numb create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-monetary/negates-a-monetary/balances.json create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-monetary/negates-a-monetary/postings.json create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-monetary/negates-a-monetary/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-number.numb create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-number/negates-a-literal-and-a-variable/balances.json create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-number/negates-a-literal-and-a-variable/postings.json create mode 100644 testdata/bytecode/0.1/e2e-prefix-minus-number/negates-a-literal-and-a-variable/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-save-then-send-all.numb create mode 100644 testdata/bytecode/0.1/e2e-save-then-send-all/send-all-takes-only-what-was-not-saved/balances.json create mode 100644 testdata/bytecode/0.1/e2e-save-then-send-all/send-all-takes-only-what-was-not-saved/postings.json create mode 100644 testdata/bytecode/0.1/e2e-save-then-send-all/send-all-takes-only-what-was-not-saved/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-send-all-bounded-overdraft.numb create mode 100644 testdata/bytecode/0.1/e2e-send-all-bounded-overdraft/send-all-includes-the-overdraft-bound/balances.json create mode 100644 testdata/bytecode/0.1/e2e-send-all-bounded-overdraft/send-all-includes-the-overdraft-bound/postings.json create mode 100644 testdata/bytecode/0.1/e2e-send-all-bounded-overdraft/send-all-includes-the-overdraft-bound/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-send-all-multi-source.numb create mode 100644 testdata/bytecode/0.1/e2e-send-all-multi-source/pulls-everything-from-each-source-in-order/balances.json create mode 100644 testdata/bytecode/0.1/e2e-send-all-multi-source/pulls-everything-from-each-source-in-order/postings.json create mode 100644 testdata/bytecode/0.1/e2e-send-all-multi-source/pulls-everything-from-each-source-in-order/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-send-all-negative-overdraft-bound.numb create mode 100644 testdata/bytecode/0.1/e2e-send-all-negative-overdraft-bound/a-negative-overdraft-bound-is-clamped-to-zero/balances.json create mode 100644 testdata/bytecode/0.1/e2e-send-all-negative-overdraft-bound/a-negative-overdraft-bound-is-clamped-to-zero/postings.json create mode 100644 testdata/bytecode/0.1/e2e-send-all-negative-overdraft-bound/a-negative-overdraft-bound-is-clamped-to-zero/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-send-all.numb create mode 100644 testdata/bytecode/0.1/e2e-send-all/sends-the-whole-balance/balances.json create mode 100644 testdata/bytecode/0.1/e2e-send-all/sends-the-whole-balance/postings.json create mode 100644 testdata/bytecode/0.1/e2e-send-all/sends-the-whole-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-send.numb create mode 100644 testdata/bytecode/0.1/e2e-send/fails-when-the-source-cannot-cover-the-amount/balances.json create mode 100644 testdata/bytecode/0.1/e2e-send/fails-when-the-source-cannot-cover-the-amount/error.json create mode 100644 testdata/bytecode/0.1/e2e-send/fails-when-the-source-cannot-cover-the-amount/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-send/sends-from-a-funded-source/balances.json create mode 100644 testdata/bytecode/0.1/e2e-send/sends-from-a-funded-source/postings.json create mode 100644 testdata/bytecode/0.1/e2e-send/sends-from-a-funded-source/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-insufficient.numb create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-insufficient/a-source-that-cannot-cover-its-share-fails/balances.json create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-insufficient/a-source-that-cannot-cover-its-share-fails/error.json create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-insufficient/a-source-that-cannot-cover-its-share-fails/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-thirds.numb create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-thirds/the-leftover-unit-goes-to-the-earliest-share/balances.json create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-thirds/the-leftover-unit-goes-to-the-earliest-share/postings.json create mode 100644 testdata/bytecode/0.1/e2e-source-allotment-thirds/the-leftover-unit-goes-to-the-earliest-share/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-source-allotment.numb create mode 100644 testdata/bytecode/0.1/e2e-source-allotment/pulls-each-share-from-its-source/balances.json create mode 100644 testdata/bytecode/0.1/e2e-source-allotment/pulls-each-share-from-its-source/postings.json create mode 100644 testdata/bytecode/0.1/e2e-source-allotment/pulls-each-share-from-its-source/vars.nvar create mode 100644 testdata/bytecode/0.1/e2e-world-source.numb create mode 100644 testdata/bytecode/0.1/e2e-world-source/world-is-unbounded/balances.json create mode 100644 testdata/bytecode/0.1/e2e-world-source/world-is-unbounded/postings.json create mode 100644 testdata/bytecode/0.1/e2e-world-source/world-is-unbounded/vars.nvar create mode 100644 testdata/bytecode/0.1/empty-postings.numb create mode 100644 testdata/bytecode/0.1/empty-postings/case/balances.json create mode 100644 testdata/bytecode/0.1/empty-postings/case/postings.json create mode 100644 testdata/bytecode/0.1/empty-postings/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-account-interp.numb create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-account-interp/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-account-interp/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-account-interp/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-interpolated-world.numb create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-interpolated-world/an-interpolation-that-lands-on-another-name-stays-bounded/balances.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-interpolated-world/an-interpolation-that-lands-on-another-name-stays-bounded/error.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-interpolated-world/an-interpolation-that-lands-on-another-name-stays-bounded/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-interpolated-world/unboundedness-is-decided-on-the-interpolated-name-not-on-the-syntax/balances.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-interpolated-world/unboundedness-is-decided-on-the-interpolated-name-not-on-the-syntax/postings.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-interpolated-world/unboundedness-is-decided-on-the-interpolated-name-not-on-the-syntax/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-remaining-clause-skipped-when-exhausted.numb create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-remaining-clause-skipped-when-exhausted/the-remaining-clause-is-not-evaluated-when-nothing-remains/balances.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-remaining-clause-skipped-when-exhausted/the-remaining-clause-is-not-evaluated-when-nothing-remains/postings.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-remaining-clause-skipped-when-exhausted/the-remaining-clause-is-not-evaluated-when-nothing-remains/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-zero-cap-clause-skips-interpolation.numb create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-zero-cap-clause-skips-interpolation/a-zero-amount-clause-never-evaluates-its-destination-invalid-interpolation-included/balances.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-zero-cap-clause-skips-interpolation/a-zero-amount-clause-never-evaluates-its-destination-invalid-interpolation-included/postings.json create mode 100644 testdata/bytecode/0.1/experimental-account-interpolation-zero-cap-clause-skips-interpolation/a-zero-amount-clause-never-evaluates-its-destination-invalid-interpolation-included/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-allotment-source.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-allotment-source/each-allotment-share-keeps-its-own-source-color/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-allotment-source/each-allotment-share-keeps-its-own-source-color/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-allotment-source/each-allotment-share-keeps-its-own-source-color/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-bounded-overdraft.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-bounded-overdraft/the-overdraft-applies-to-the-colored-balance-only/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-bounded-overdraft/the-overdraft-applies-to-the-colored-balance-only/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-bounded-overdraft/the-overdraft-applies-to-the-colored-balance-only/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-capped-source.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-capped-source/caps-the-colored-pull-then-falls-back-to-the-uncolored-balance/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-capped-source/caps-the-colored-pull-then-falls-back-to-the-uncolored-balance/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-capped-source/caps-the-colored-pull-then-falls-back-to-the-uncolored-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-destination-split.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-destination-split/every-posting-of-the-split-keeps-the-source-color/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-destination-split/every-posting-of-the-split-keeps-the-source-color/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-destination-split/every-posting-of-the-split-keeps-the-source-color/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-from-variable.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-from-variable/an-empty-color-pulls-the-uncolored-balance/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-from-variable/an-empty-color-pulls-the-uncolored-balance/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-from-variable/an-empty-color-pulls-the-uncolored-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-from-variable/pulls-the-colored-balance/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-from-variable/pulls-the-colored-balance/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-from-variable/pulls-the-colored-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder-send-all.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-inorder/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-kept.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-kept/refunds-the-kept-funds-to-the-source-color/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-kept/refunds-the-kept-funds-to-the-source-color/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-kept/refunds-the-kept-funds-to-the-source-color/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-oneof.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-oneof/rolls-the-short-branch-back-to-its-own-color-and-commits-the-next-one/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-oneof/rolls-the-short-branch-back-to-its-own-color-and-commits-the-next-one/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-oneof/rolls-the-short-branch-back-to-its-own-color-and-commits-the-next-one/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance-when-missing-funds.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance-when-missing-funds/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance-when-missing-funds/case/error.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance-when-missing-funds/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restrict-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restriction-in-send-all.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restriction-in-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restriction-in-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-restriction-in-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-save.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-save/saving-the-uncolored-balance-leaves-the-colored-one-spendable/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-save/saving-the-uncolored-balance-leaves-the-colored-one-spendable/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-save/saving-the-uncolored-balance-leaves-the-colored-one-spendable/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send-overdrat.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send-overdrat/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send-overdrat/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send-overdrat/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-send/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-two-colors-to-split-destination.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-two-colors-to-split-destination/splits-two-colors-across-the-two-destinations/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-two-colors-to-split-destination/splits-two-colors-across-the-two-destinations/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-two-colors-to-split-destination/splits-two-colors-across-the-two-destinations/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-with-asset-precision.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-with-asset-precision/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-with-asset-precision/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-color-with-asset-precision/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-colored-world.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-colored-world/an-unbounded-pull-keeps-its-color/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-colored-world/an-unbounded-pull-keeps-its-color/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-colored-world/an-unbounded-pull-keeps-its-color/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-empty-color.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-empty-color/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-empty-color/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-empty-color/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send-all.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send.numb create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-asset-colors-no-double-spending-in-colored-send/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-get-amount-function-get-amount-function.numb create mode 100644 testdata/bytecode/0.1/experimental-get-amount-function-get-amount-function/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-get-amount-function-get-amount-function/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-get-amount-function-get-amount-function/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-get-asset-function-get-asset-function.numb create mode 100644 testdata/bytecode/0.1/experimental-get-asset-function-get-asset-function/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-get-asset-function-get-asset-function/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-get-asset-function-get-asset-function/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-expr-in-var-origin.numb create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-expr-in-var-origin/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-expr-in-var-origin/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-expr-in-var-origin/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance-after-decrease.numb create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance-after-decrease/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance-after-decrease/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance-after-decrease/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance.numb create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-mid-script-function-call-midscript-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-all-failing.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-all-failing/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-all-failing/case/error.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-all-failing/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-first-clause.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-first-clause/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-first-clause/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-first-clause/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-in-allotment.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-in-allotment/routes-half-to-the-oneof-capped-and-half-to-c/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-in-allotment/routes-half-to-the-oneof-capped-and-half-to-c/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-in-allotment/routes-half-to-the-oneof-capped-and-half-to-c/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-remaining-clause.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-remaining-clause/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-remaining-clause/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-remaining-clause/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-second-clause.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-second-clause/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-second-clause/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-destination-second-clause/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-send-all.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source-send-first-branch.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source-send-first-branch/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source-send-first-branch/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source-send-first-branch/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-in-source/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-partial-last-branch-in-inorder.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-partial-last-branch-in-inorder/keeps-the-partially-satisfying-last-branch-and-takes-the-rest-from-the-next-inorder-source/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-partial-last-branch-in-inorder/keeps-the-partially-satisfying-last-branch-and-takes-the-rest-from-the-next-inorder-source/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-partial-last-branch-in-inorder/keeps-the-partially-satisfying-last-branch-and-takes-the-rest-from-the-next-inorder-source/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-singleton.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-singleton/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-singleton/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-singleton/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-middle-branch.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-middle-branch/commits-the-middle-branch-rolling-back-the-first-and-never-pulling-the-third/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-middle-branch/commits-the-middle-branch-rolling-back-the-first-and-never-pulling-the-third/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-middle-branch/commits-the-middle-branch-rolling-back-the-first-and-never-pulling-the-third/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-nested.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-nested/outer-oneof-rolls-back-an-inner-oneof-s-partial-pull-then-takes-from-the-next-branch/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-nested/outer-oneof-rolls-back-an-inner-oneof-s-partial-pull-then-takes-from-the-next-branch/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-oneof-source-nested/outer-oneof-rolls-back-an-inner-oneof-s-partial-pull-then-takes-from-the-next-branch/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-oneof-update-balances-with-oneof.numb create mode 100644 testdata/bytecode/0.1/experimental-oneof-update-balances-with-oneof/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-update-balances-with-oneof/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-oneof-update-balances-with-oneof/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-use-case-remove-debt.numb create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-use-case-remove-debt/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-use-case-remove-debt/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-use-case-remove-debt/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-negative.numb create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-negative/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-negative/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-negative/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-positive.numb create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-positive/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-positive/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-positive/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-zero.numb create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-zero/case/balances.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-zero/case/postings.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-overdraft-function-when-zero/case/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero.numb create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/it-keeps-the-spare-amount/balances.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/it-keeps-the-spare-amount/postings.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/it-keeps-the-spare-amount/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/it-sends-to-the-second-source-after-topping-up-the-first-one/balances.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/it-sends-to-the-second-source-after-topping-up-the-first-one/postings.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/it-sends-to-the-second-source-after-topping-up-the-first-one/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/only-sends-to-the-first-one-if-there-s-not-enough-funds-to-top-up-its-balance/balances.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/only-sends-to-the-first-one-if-there-s-not-enough-funds-to-top-up-its-balance/postings.json create mode 100644 testdata/bytecode/0.1/experimental-overdraft-function-reach-zero/only-sends-to-the-first-one-if-there-s-not-enough-funds-to-top-up-its-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-allotment.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-allotment/a-scoped-account-works-as-an-allotment-sub-source/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-allotment/a-scoped-account-works-as-an-allotment-sub-source/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-allotment/a-scoped-account-works-as-an-allotment-sub-source/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-balance.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-balance/balance-reads-the-scoped-balance-42-not-the-unscoped-one-100/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-balance/balance-reads-the-scoped-balance-42-not-the-unscoped-one-100/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-balance/balance-reads-the-scoped-balance-42-not-the-unscoped-one-100/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-capped.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-capped/a-scoped-source-can-be-capped-with-max/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-capped/a-scoped-source-can-be-capped-with-max/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-capped/a-scoped-source-can-be-capped-with-max/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-color-and-scope.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-color-and-scope/color-and-scope-are-orthogonal-send-all-draws-exactly-the-scope-s-color-red-balance-50-not-the-scope-only-or-color-only-999s/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-color-and-scope/color-and-scope-are-orthogonal-send-all-draws-exactly-the-scope-s-color-red-balance-50-not-the-scope-only-or-color-only-999s/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-color-and-scope/color-and-scope-are-orthogonal-send-all-draws-exactly-the-scope-s-color-red-balance-50-not-the-scope-only-or-color-only-999s/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-overdraft.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-overdraft/a-scoped-source-can-overdraft-with-no-balance/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-overdraft/a-scoped-source-can-overdraft-with-no-balance/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-overdraft/a-scoped-source-can-overdraft-with-no-balance/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-read-account-meta.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-read-account-meta/reads-metadata-from-the-scoped-account-amt-2-not-the-unscoped-one-amt-1/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-read-account-meta/reads-metadata-from-the-scoped-account-amt-2-not-the-unscoped-one-amt-1/metadata.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-read-account-meta/reads-metadata-from-the-scoped-account-amt-2-not-the-unscoped-one-amt-1/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-read-account-meta/reads-metadata-from-the-scoped-account-amt-2-not-the-unscoped-one-amt-1/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-save.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-save/save-protects-30-on-the-scoped-balance-send-all-then-takes-the-remaining-70-unscoped-999-untouched/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-save/save-protects-30-on-the-scoped-balance-send-all-then-takes-the-remaining-70-unscoped-999-untouched/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-save/save-protects-30-on-the-scoped-balance-send-all-then-takes-the-remaining-70-unscoped-999-untouched/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-set-account-meta.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-set-account-meta/sets-metadata-scoped-by-the-account-s-scope-distinct-from-the-unscoped-entry/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-set-account-meta/sets-metadata-scoped-by-the-account-s-scope-distinct-from-the-unscoped-entry/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-set-account-meta/sets-metadata-scoped-by-the-account-s-scope-distinct-from-the-unscoped-entry/vars.nvar create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-simple.numb create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-simple/scopes-the-accounts/balances.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-simple/scopes-the-accounts/postings.json create mode 100644 testdata/bytecode/0.1/experimental-scoped-function-simple/scopes-the-accounts/vars.nvar create mode 100644 testdata/bytecode/0.1/feature-flag-syntax.numb create mode 100644 testdata/bytecode/0.1/feature-flag-syntax/example-spec/balances.json create mode 100644 testdata/bytecode/0.1/feature-flag-syntax/example-spec/postings.json create mode 100644 testdata/bytecode/0.1/feature-flag-syntax/example-spec/vars.nvar create mode 100644 testdata/bytecode/0.1/floating-perc.numb create mode 100644 testdata/bytecode/0.1/floating-perc/should-handle-the-floating-syntax/balances.json create mode 100644 testdata/bytecode/0.1/floating-perc/should-handle-the-floating-syntax/postings.json create mode 100644 testdata/bytecode/0.1/floating-perc/should-handle-the-floating-syntax/vars.nvar create mode 100644 testdata/bytecode/0.1/floating-perc2.numb create mode 100644 testdata/bytecode/0.1/floating-perc2/example-spec/balances.json create mode 100644 testdata/bytecode/0.1/floating-perc2/example-spec/postings.json create mode 100644 testdata/bytecode/0.1/floating-perc2/example-spec/vars.nvar create mode 100644 testdata/bytecode/0.1/inoder-destination.numb create mode 100644 testdata/bytecode/0.1/inoder-destination/case/balances.json create mode 100644 testdata/bytecode/0.1/inoder-destination/case/postings.json create mode 100644 testdata/bytecode/0.1/inoder-destination/case/vars.nvar create mode 100644 testdata/bytecode/0.1/insufficient-funds.numb create mode 100644 testdata/bytecode/0.1/insufficient-funds/case/balances.json create mode 100644 testdata/bytecode/0.1/insufficient-funds/case/error.json create mode 100644 testdata/bytecode/0.1/insufficient-funds/case/vars.nvar create mode 100644 testdata/bytecode/0.1/kept-in-send-all-inorder.numb create mode 100644 testdata/bytecode/0.1/kept-in-send-all-inorder/case/balances.json create mode 100644 testdata/bytecode/0.1/kept-in-send-all-inorder/case/postings.json create mode 100644 testdata/bytecode/0.1/kept-in-send-all-inorder/case/vars.nvar create mode 100644 testdata/bytecode/0.1/kept-inorder.numb create mode 100644 testdata/bytecode/0.1/kept-inorder/case/balances.json create mode 100644 testdata/bytecode/0.1/kept-inorder/case/postings.json create mode 100644 testdata/bytecode/0.1/kept-inorder/case/vars.nvar create mode 100644 testdata/bytecode/0.1/kept-with-balance.numb create mode 100644 testdata/bytecode/0.1/kept-with-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/kept-with-balance/case/postings.json create mode 100644 testdata/bytecode/0.1/kept-with-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/many-kept-dest.numb create mode 100644 testdata/bytecode/0.1/many-kept-dest/case/balances.json create mode 100644 testdata/bytecode/0.1/many-kept-dest/case/postings.json create mode 100644 testdata/bytecode/0.1/many-kept-dest/case/vars.nvar create mode 100644 testdata/bytecode/0.1/many-max-dest.numb create mode 100644 testdata/bytecode/0.1/many-max-dest/case/balances.json create mode 100644 testdata/bytecode/0.1/many-max-dest/case/postings.json create mode 100644 testdata/bytecode/0.1/many-max-dest/case/vars.nvar create mode 100644 testdata/bytecode/0.1/max-with-unbounded-overdraft.numb create mode 100644 testdata/bytecode/0.1/max-with-unbounded-overdraft/case/balances.json create mode 100644 testdata/bytecode/0.1/max-with-unbounded-overdraft/case/postings.json create mode 100644 testdata/bytecode/0.1/max-with-unbounded-overdraft/case/vars.nvar create mode 100644 testdata/bytecode/0.1/metadata.numb create mode 100644 testdata/bytecode/0.1/metadata/case/balances.json create mode 100644 testdata/bytecode/0.1/metadata/case/metadata.json create mode 100644 testdata/bytecode/0.1/metadata/case/postings.json create mode 100644 testdata/bytecode/0.1/metadata/case/vars.nvar create mode 100644 testdata/bytecode/0.1/midscript-balance-after-credit.numb create mode 100644 testdata/bytecode/0.1/midscript-balance-after-credit/mid-script-balance-sees-the-running-balance-starting-balance-included/balances.json create mode 100644 testdata/bytecode/0.1/midscript-balance-after-credit/mid-script-balance-sees-the-running-balance-starting-balance-included/postings.json create mode 100644 testdata/bytecode/0.1/midscript-balance-after-credit/mid-script-balance-sees-the-running-balance-starting-balance-included/vars.nvar create mode 100644 testdata/bytecode/0.1/minus-infix-monetary.numb create mode 100644 testdata/bytecode/0.1/minus-infix-monetary/should-subtract-the-monetaries/balances.json create mode 100644 testdata/bytecode/0.1/minus-infix-monetary/should-subtract-the-monetaries/postings.json create mode 100644 testdata/bytecode/0.1/minus-infix-monetary/should-subtract-the-monetaries/vars.nvar create mode 100644 testdata/bytecode/0.1/minus-infix-number.numb create mode 100644 testdata/bytecode/0.1/minus-infix-number/should-subtract-the-numbers/balances.json create mode 100644 testdata/bytecode/0.1/minus-infix-number/should-subtract-the-numbers/postings.json create mode 100644 testdata/bytecode/0.1/minus-infix-number/should-subtract-the-numbers/vars.nvar create mode 100644 testdata/bytecode/0.1/minus-prefix-number.numb create mode 100644 testdata/bytecode/0.1/minus-prefix-number/should-subtract-the-numbers/balances.json create mode 100644 testdata/bytecode/0.1/minus-prefix-number/should-subtract-the-numbers/postings.json create mode 100644 testdata/bytecode/0.1/minus-prefix-number/should-subtract-the-numbers/vars.nvar create mode 100644 testdata/bytecode/0.1/movements-fold-same-pair.numb create mode 100644 testdata/bytecode/0.1/movements-fold-same-pair/case/balances.json create mode 100644 testdata/bytecode/0.1/movements-fold-same-pair/case/postings.json create mode 100644 testdata/bytecode/0.1/movements-fold-same-pair/case/vars.nvar create mode 100644 testdata/bytecode/0.1/multiple-world-sources.numb create mode 100644 testdata/bytecode/0.1/multiple-world-sources/several-world-sources-across-several-sends/balances.json create mode 100644 testdata/bytecode/0.1/multiple-world-sources/several-world-sources-across-several-sends/postings.json create mode 100644 testdata/bytecode/0.1/multiple-world-sources/several-world-sources-across-several-sends/vars.nvar create mode 100644 testdata/bytecode/0.1/neg-max-dest.numb create mode 100644 testdata/bytecode/0.1/neg-max-dest/case/balances.json create mode 100644 testdata/bytecode/0.1/neg-max-dest/case/postings.json create mode 100644 testdata/bytecode/0.1/neg-max-dest/case/vars.nvar create mode 100644 testdata/bytecode/0.1/negative-amount.numb create mode 100644 testdata/bytecode/0.1/negative-amount/case/balances.json create mode 100644 testdata/bytecode/0.1/negative-amount/case/error.json create mode 100644 testdata/bytecode/0.1/negative-amount/case/vars.nvar create mode 100644 testdata/bytecode/0.1/negative-max-over-allotment-source.numb create mode 100644 testdata/bytecode/0.1/negative-max-over-allotment-source/a-negative-max-clause-over-an-allotment-clamps-to-zero-before-the-split/balances.json create mode 100644 testdata/bytecode/0.1/negative-max-over-allotment-source/a-negative-max-clause-over-an-allotment-clamps-to-zero-before-the-split/postings.json create mode 100644 testdata/bytecode/0.1/negative-max-over-allotment-source/a-negative-max-clause-over-an-allotment-clamps-to-zero-before-the-split/vars.nvar create mode 100644 testdata/bytecode/0.1/negative-max-send-all.numb create mode 100644 testdata/bytecode/0.1/negative-max-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/negative-max-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/negative-max-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/negative-max.numb create mode 100644 testdata/bytecode/0.1/negative-max/case/balances.json create mode 100644 testdata/bytecode/0.1/negative-max/case/postings.json create mode 100644 testdata/bytecode/0.1/negative-max/case/vars.nvar create mode 100644 testdata/bytecode/0.1/nested-remaining-complex.numb create mode 100644 testdata/bytecode/0.1/nested-remaining-complex/case/balances.json create mode 100644 testdata/bytecode/0.1/nested-remaining-complex/case/postings.json create mode 100644 testdata/bytecode/0.1/nested-remaining-complex/case/vars.nvar create mode 100644 testdata/bytecode/0.1/nested-remaining.numb create mode 100644 testdata/bytecode/0.1/nested-remaining/case/balances.json create mode 100644 testdata/bytecode/0.1/nested-remaining/case/postings.json create mode 100644 testdata/bytecode/0.1/nested-remaining/case/vars.nvar create mode 100644 testdata/bytecode/0.1/nested-world-inorder.numb create mode 100644 testdata/bytecode/0.1/nested-world-inorder/world-covers-the-rest-from-two-levels-deep-and-nothing-after-it-is-reached/balances.json create mode 100644 testdata/bytecode/0.1/nested-world-inorder/world-covers-the-rest-from-two-levels-deep-and-nothing-after-it-is-reached/postings.json create mode 100644 testdata/bytecode/0.1/nested-world-inorder/world-covers-the-rest-from-two-levels-deep-and-nothing-after-it-is-reached/vars.nvar create mode 100644 testdata/bytecode/0.1/no-empty-postings.numb create mode 100644 testdata/bytecode/0.1/no-empty-postings/case/balances.json create mode 100644 testdata/bytecode/0.1/no-empty-postings/case/postings.json create mode 100644 testdata/bytecode/0.1/no-empty-postings/case/vars.nvar create mode 100644 testdata/bytecode/0.1/ovedrafts-playground-example.numb create mode 100644 testdata/bytecode/0.1/ovedrafts-playground-example/case/balances.json create mode 100644 testdata/bytecode/0.1/ovedrafts-playground-example/case/postings.json create mode 100644 testdata/bytecode/0.1/ovedrafts-playground-example/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all-when-noop.numb create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all-when-noop/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all-when-noop/case/postings.json create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all-when-noop/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all.numb create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/overdraft-in-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-not-enough-funds.numb create mode 100644 testdata/bytecode/0.1/overdraft-not-enough-funds/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-not-enough-funds/case/postings.json create mode 100644 testdata/bytecode/0.1/overdraft-not-enough-funds/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-when-enough-funds.numb create mode 100644 testdata/bytecode/0.1/overdraft-when-enough-funds/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-when-enough-funds/case/postings.json create mode 100644 testdata/bytecode/0.1/overdraft-when-enough-funds/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance-in-send-all.numb create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance-in-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance-in-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance-in-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance.numb create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance/case/postings.json create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-ovedraft-in-send-all.numb create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-ovedraft-in-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-ovedraft-in-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/overdraft-when-negative-ovedraft-in-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/overdraft-when-not-enough-funds.numb create mode 100644 testdata/bytecode/0.1/overdraft-when-not-enough-funds/case/balances.json create mode 100644 testdata/bytecode/0.1/overdraft-when-not-enough-funds/case/error.json create mode 100644 testdata/bytecode/0.1/overdraft-when-not-enough-funds/case/vars.nvar create mode 100644 testdata/bytecode/0.1/override-account-meta.numb create mode 100644 testdata/bytecode/0.1/override-account-meta/case/balances.json create mode 100644 testdata/bytecode/0.1/override-account-meta/case/metadata.json create mode 100644 testdata/bytecode/0.1/override-account-meta/case/postings.json create mode 100644 testdata/bytecode/0.1/override-account-meta/case/vars.nvar create mode 100644 testdata/bytecode/0.1/portion-syntax.numb create mode 100644 testdata/bytecode/0.1/portion-syntax/case/balances.json create mode 100644 testdata/bytecode/0.1/portion-syntax/case/postings.json create mode 100644 testdata/bytecode/0.1/portion-syntax/case/vars.nvar create mode 100644 testdata/bytecode/0.1/remaining-kept-in-send-all-inorder.numb create mode 100644 testdata/bytecode/0.1/remaining-kept-in-send-all-inorder/case/balances.json create mode 100644 testdata/bytecode/0.1/remaining-kept-in-send-all-inorder/case/postings.json create mode 100644 testdata/bytecode/0.1/remaining-kept-in-send-all-inorder/case/vars.nvar create mode 100644 testdata/bytecode/0.1/remaining-kept-inorder.numb create mode 100644 testdata/bytecode/0.1/remaining-kept-inorder/case/balances.json create mode 100644 testdata/bytecode/0.1/remaining-kept-inorder/case/postings.json create mode 100644 testdata/bytecode/0.1/remaining-kept-inorder/case/vars.nvar create mode 100644 testdata/bytecode/0.1/remaining-none-in-send-all.numb create mode 100644 testdata/bytecode/0.1/remaining-none-in-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/remaining-none-in-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/remaining-none-in-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/remaining-none.numb create mode 100644 testdata/bytecode/0.1/remaining-none/case/balances.json create mode 100644 testdata/bytecode/0.1/remaining-none/case/postings.json create mode 100644 testdata/bytecode/0.1/remaining-none/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__multi-postings.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__multi-postings/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__multi-postings/case/postings.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__multi-postings/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-a-different-asset.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-a-different-asset/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-a-different-asset/case/postings.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-a-different-asset/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all-negative-balance.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all-negative-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all-negative-balance/case/error.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all-negative-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all/case/postings.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-causes-failure.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-causes-failure/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-causes-failure/case/error.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-causes-failure/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-more-than-balance.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-more-than-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-more-than-balance/case/postings.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__save-more-than-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__simple.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__simple/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__simple/case/postings.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__simple/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-asset-var.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-asset-var/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-asset-var/case/postings.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-asset-var/case/vars.nvar create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-monetary-var.numb create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-monetary-var/case/balances.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-monetary-var/case/postings.json create mode 100644 testdata/bytecode/0.1/save-save-from-account__with-monetary-var/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-after-unbounded-overdraft.numb create mode 100644 testdata/bytecode/0.1/send-all-after-unbounded-overdraft/send-all-sees-the-starting-balance-after-an-unbounded-overdraft-debit/balances.json create mode 100644 testdata/bytecode/0.1/send-all-after-unbounded-overdraft/send-all-sees-the-starting-balance-after-an-unbounded-overdraft-debit/postings.json create mode 100644 testdata/bytecode/0.1/send-all-after-unbounded-overdraft/send-all-sees-the-starting-balance-after-an-unbounded-overdraft-debit/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot-complex.numb create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot-complex/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot-complex/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot-complex/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot.numb create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all-destinatio-allot/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-many-max-in-dest.numb create mode 100644 testdata/bytecode/0.1/send-all-many-max-in-dest/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all-many-max-in-dest/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all-many-max-in-dest/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-multi.numb create mode 100644 testdata/bytecode/0.1/send-all-multi/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all-multi/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all-multi/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-negative-max-over-allotment.numb create mode 100644 testdata/bytecode/0.1/send-all-negative-max-over-allotment/a-negative-max-over-an-allotment-under-send-all-clamps-to-zero-and-moves-nothing/balances.json create mode 100644 testdata/bytecode/0.1/send-all-negative-max-over-allotment/a-negative-max-over-an-allotment-under-send-all-clamps-to-zero-and-moves-nothing/postings.json create mode 100644 testdata/bytecode/0.1/send-all-negative-max-over-allotment/a-negative-max-over-an-allotment-under-send-all-clamps-to-zero-and-moves-nothing/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-variable.numb create mode 100644 testdata/bytecode/0.1/send-all-variable/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all-variable/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all-variable/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-when-negative-with-overdraft.numb create mode 100644 testdata/bytecode/0.1/send-all-when-negative-with-overdraft/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all-when-negative-with-overdraft/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all-when-negative-with-overdraft/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all-when-negative.numb create mode 100644 testdata/bytecode/0.1/send-all-when-negative/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all-when-negative/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all-when-negative/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-all.numb create mode 100644 testdata/bytecode/0.1/send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-allt-max-in-dest.numb create mode 100644 testdata/bytecode/0.1/send-allt-max-in-dest/case/balances.json create mode 100644 testdata/bytecode/0.1/send-allt-max-in-dest/case/postings.json create mode 100644 testdata/bytecode/0.1/send-allt-max-in-dest/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-allt-max-in-src.numb create mode 100644 testdata/bytecode/0.1/send-allt-max-in-src/case/balances.json create mode 100644 testdata/bytecode/0.1/send-allt-max-in-src/case/postings.json create mode 100644 testdata/bytecode/0.1/send-allt-max-in-src/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-allt-max-when-no-amount.numb create mode 100644 testdata/bytecode/0.1/send-allt-max-when-no-amount/case/balances.json create mode 100644 testdata/bytecode/0.1/send-allt-max-when-no-amount/case/postings.json create mode 100644 testdata/bytecode/0.1/send-allt-max-when-no-amount/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-when-negative-balance.numb create mode 100644 testdata/bytecode/0.1/send-when-negative-balance/case/balances.json create mode 100644 testdata/bytecode/0.1/send-when-negative-balance/case/postings.json create mode 100644 testdata/bytecode/0.1/send-when-negative-balance/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send-zero.numb create mode 100644 testdata/bytecode/0.1/send-zero/case/balances.json create mode 100644 testdata/bytecode/0.1/send-zero/case/postings.json create mode 100644 testdata/bytecode/0.1/send-zero/case/vars.nvar create mode 100644 testdata/bytecode/0.1/send.numb create mode 100644 testdata/bytecode/0.1/send/case/balances.json create mode 100644 testdata/bytecode/0.1/send/case/postings.json create mode 100644 testdata/bytecode/0.1/send/case/vars.nvar create mode 100644 testdata/bytecode/0.1/set-account-meta.numb create mode 100644 testdata/bytecode/0.1/set-account-meta/case/balances.json create mode 100644 testdata/bytecode/0.1/set-account-meta/case/postings.json create mode 100644 testdata/bytecode/0.1/set-account-meta/case/vars.nvar create mode 100644 testdata/bytecode/0.1/set-tx-meta.numb create mode 100644 testdata/bytecode/0.1/set-tx-meta/case/balances.json create mode 100644 testdata/bytecode/0.1/set-tx-meta/case/postings.json create mode 100644 testdata/bytecode/0.1/set-tx-meta/case/vars.nvar create mode 100644 testdata/bytecode/0.1/source-allotment-invalid-amt.numb create mode 100644 testdata/bytecode/0.1/source-allotment-invalid-amt/case/balances.json create mode 100644 testdata/bytecode/0.1/source-allotment-invalid-amt/case/error.json create mode 100644 testdata/bytecode/0.1/source-allotment-invalid-amt/case/vars.nvar create mode 100644 testdata/bytecode/0.1/source-allotment.numb create mode 100644 testdata/bytecode/0.1/source-allotment/case/balances.json create mode 100644 testdata/bytecode/0.1/source-allotment/case/postings.json create mode 100644 testdata/bytecode/0.1/source-allotment/case/vars.nvar create mode 100644 testdata/bytecode/0.1/source-complex.numb create mode 100644 testdata/bytecode/0.1/source-complex/case/balances.json create mode 100644 testdata/bytecode/0.1/source-complex/case/postings.json create mode 100644 testdata/bytecode/0.1/source-complex/case/vars.nvar create mode 100644 testdata/bytecode/0.1/source-overlapping.numb create mode 100644 testdata/bytecode/0.1/source-overlapping/case/balances.json create mode 100644 testdata/bytecode/0.1/source-overlapping/case/postings.json create mode 100644 testdata/bytecode/0.1/source-overlapping/case/vars.nvar create mode 100644 testdata/bytecode/0.1/source.numb create mode 100644 testdata/bytecode/0.1/source/case/balances.json create mode 100644 testdata/bytecode/0.1/source/case/postings.json create mode 100644 testdata/bytecode/0.1/source/case/vars.nvar create mode 100644 testdata/bytecode/0.1/sub-monetaries.numb create mode 100644 testdata/bytecode/0.1/sub-monetaries/case/balances.json create mode 100644 testdata/bytecode/0.1/sub-monetaries/case/postings.json create mode 100644 testdata/bytecode/0.1/sub-monetaries/case/vars.nvar create mode 100644 testdata/bytecode/0.1/sub-numbers.numb create mode 100644 testdata/bytecode/0.1/sub-numbers/case/balances.json create mode 100644 testdata/bytecode/0.1/sub-numbers/case/postings.json create mode 100644 testdata/bytecode/0.1/sub-numbers/case/vars.nvar create mode 100644 testdata/bytecode/0.1/track-balances-send-all.numb create mode 100644 testdata/bytecode/0.1/track-balances-send-all/case/balances.json create mode 100644 testdata/bytecode/0.1/track-balances-send-all/case/postings.json create mode 100644 testdata/bytecode/0.1/track-balances-send-all/case/vars.nvar create mode 100644 testdata/bytecode/0.1/track-balances.numb create mode 100644 testdata/bytecode/0.1/track-balances/case/balances.json create mode 100644 testdata/bytecode/0.1/track-balances/case/postings.json create mode 100644 testdata/bytecode/0.1/track-balances/case/vars.nvar create mode 100644 testdata/bytecode/0.1/track-balances2.numb create mode 100644 testdata/bytecode/0.1/track-balances2/case/balances.json create mode 100644 testdata/bytecode/0.1/track-balances2/case/error.json create mode 100644 testdata/bytecode/0.1/track-balances2/case/vars.nvar create mode 100644 testdata/bytecode/0.1/track-balances3.numb create mode 100644 testdata/bytecode/0.1/track-balances3/case/balances.json create mode 100644 testdata/bytecode/0.1/track-balances3/case/postings.json create mode 100644 testdata/bytecode/0.1/track-balances3/case/vars.nvar create mode 100644 testdata/bytecode/0.1/unbounded-overdraft-when-not-enough-funds.numb create mode 100644 testdata/bytecode/0.1/unbounded-overdraft-when-not-enough-funds/case/balances.json create mode 100644 testdata/bytecode/0.1/unbounded-overdraft-when-not-enough-funds/case/postings.json create mode 100644 testdata/bytecode/0.1/unbounded-overdraft-when-not-enough-funds/case/vars.nvar create mode 100644 testdata/bytecode/0.1/update-balances.numb create mode 100644 testdata/bytecode/0.1/update-balances/case/balances.json create mode 100644 testdata/bytecode/0.1/update-balances/case/postings.json create mode 100644 testdata/bytecode/0.1/update-balances/case/vars.nvar create mode 100644 testdata/bytecode/0.1/use-balance-twice.numb create mode 100644 testdata/bytecode/0.1/use-balance-twice/case/balances.json create mode 100644 testdata/bytecode/0.1/use-balance-twice/case/postings.json create mode 100644 testdata/bytecode/0.1/use-balance-twice/case/vars.nvar create mode 100644 testdata/bytecode/0.1/use-different-assets-with-same-source-account.numb create mode 100644 testdata/bytecode/0.1/use-different-assets-with-same-source-account/case/balances.json create mode 100644 testdata/bytecode/0.1/use-different-assets-with-same-source-account/case/postings.json create mode 100644 testdata/bytecode/0.1/use-different-assets-with-same-source-account/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variable-asset.numb create mode 100644 testdata/bytecode/0.1/variable-asset/case/balances.json create mode 100644 testdata/bytecode/0.1/variable-asset/case/postings.json create mode 100644 testdata/bytecode/0.1/variable-asset/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variable-balance__1.numb create mode 100644 testdata/bytecode/0.1/variable-balance__1/case/balances.json create mode 100644 testdata/bytecode/0.1/variable-balance__1/case/postings.json create mode 100644 testdata/bytecode/0.1/variable-balance__1/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variable-balance__2.numb create mode 100644 testdata/bytecode/0.1/variable-balance__2/case/balances.json create mode 100644 testdata/bytecode/0.1/variable-balance__2/case/postings.json create mode 100644 testdata/bytecode/0.1/variable-balance__2/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variable-balance__3.numb create mode 100644 testdata/bytecode/0.1/variable-balance__3/case/balances.json create mode 100644 testdata/bytecode/0.1/variable-balance__3/case/postings.json create mode 100644 testdata/bytecode/0.1/variable-balance__3/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variable-balance__4.numb create mode 100644 testdata/bytecode/0.1/variable-balance__4/case/balances.json create mode 100644 testdata/bytecode/0.1/variable-balance__4/case/postings.json create mode 100644 testdata/bytecode/0.1/variable-balance__4/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variable-balance__5.numb create mode 100644 testdata/bytecode/0.1/variable-balance__5/case/balances.json create mode 100644 testdata/bytecode/0.1/variable-balance__5/case/postings.json create mode 100644 testdata/bytecode/0.1/variable-balance__5/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variable-portion-part.numb create mode 100644 testdata/bytecode/0.1/variable-portion-part/case/balances.json create mode 100644 testdata/bytecode/0.1/variable-portion-part/case/postings.json create mode 100644 testdata/bytecode/0.1/variable-portion-part/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variables-json.numb create mode 100644 testdata/bytecode/0.1/variables-json/case/balances.json create mode 100644 testdata/bytecode/0.1/variables-json/case/postings.json create mode 100644 testdata/bytecode/0.1/variables-json/case/vars.nvar create mode 100644 testdata/bytecode/0.1/variables.numb create mode 100644 testdata/bytecode/0.1/variables/case/balances.json create mode 100644 testdata/bytecode/0.1/variables/case/postings.json create mode 100644 testdata/bytecode/0.1/variables/case/vars.nvar create mode 100644 testdata/bytecode/0.1/world-from-meta.numb create mode 100644 testdata/bytecode/0.1/world-from-meta/an-account-read-from-metadata-is-unbounded-when-it-is-world/balances.json create mode 100644 testdata/bytecode/0.1/world-from-meta/an-account-read-from-metadata-is-unbounded-when-it-is-world/metadata.json create mode 100644 testdata/bytecode/0.1/world-from-meta/an-account-read-from-metadata-is-unbounded-when-it-is-world/postings.json create mode 100644 testdata/bytecode/0.1/world-from-meta/an-account-read-from-metadata-is-unbounded-when-it-is-world/vars.nvar create mode 100644 testdata/bytecode/0.1/world-in-capped-source.numb create mode 100644 testdata/bytecode/0.1/world-in-capped-source/a-capped-world-source-is-clamped-and-a-later-world-source-covers-the-rest/balances.json create mode 100644 testdata/bytecode/0.1/world-in-capped-source/a-capped-world-source-is-clamped-and-a-later-world-source-covers-the-rest/postings.json create mode 100644 testdata/bytecode/0.1/world-in-capped-source/a-capped-world-source-is-clamped-and-a-later-world-source-covers-the-rest/vars.nvar create mode 100644 testdata/bytecode/0.1/world-in-source-allotment.numb create mode 100644 testdata/bytecode/0.1/world-in-source-allotment/world-can-be-an-allotment-sub-source/balances.json create mode 100644 testdata/bytecode/0.1/world-in-source-allotment/world-can-be-an-allotment-sub-source/postings.json create mode 100644 testdata/bytecode/0.1/world-in-source-allotment/world-can-be-an-allotment-sub-source/vars.nvar create mode 100644 testdata/bytecode/0.1/world-prefix-is-not-world.numb create mode 100644 testdata/bytecode/0.1/world-prefix-is-not-world/only-the-account-named-exactly-world-is-unbounded/balances.json create mode 100644 testdata/bytecode/0.1/world-prefix-is-not-world/only-the-account-named-exactly-world-is-unbounded/postings.json create mode 100644 testdata/bytecode/0.1/world-prefix-is-not-world/only-the-account-named-exactly-world-is-unbounded/vars.nvar create mode 100644 testdata/bytecode/0.1/world-source.numb create mode 100644 testdata/bytecode/0.1/world-source/case/balances.json create mode 100644 testdata/bytecode/0.1/world-source/case/postings.json create mode 100644 testdata/bytecode/0.1/world-source/case/vars.nvar create mode 100644 testdata/bytecode/0.1/zero-postings-destination.numb create mode 100644 testdata/bytecode/0.1/zero-postings-destination/case/balances.json create mode 100644 testdata/bytecode/0.1/zero-postings-destination/case/postings.json create mode 100644 testdata/bytecode/0.1/zero-postings-destination/case/vars.nvar create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-allotment.numb create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-allotment/case/balances.json create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-allotment/case/postings.json create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-allotment/case/vars.nvar create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-inorder.numb create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-inorder/case/balances.json create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-inorder/case/postings.json create mode 100644 testdata/bytecode/0.1/zero-postings-explicit-inorder/case/vars.nvar create mode 100644 testdata/bytecode/0.1/zero-postings.numb create mode 100644 testdata/bytecode/0.1/zero-postings/case/balances.json create mode 100644 testdata/bytecode/0.1/zero-postings/case/postings.json create mode 100644 testdata/bytecode/0.1/zero-postings/case/vars.nvar diff --git a/Justfile b/Justfile index b586574f..5d150150 100644 --- a/Justfile +++ b/Justfile @@ -32,3 +32,7 @@ release-ci: release: @goreleaser release --clean + +freeze-bytecode suffix="": + @go test ./internal/compiler -run 'TestCompilerScripts|TestCompiledCorpusPassesVerify' -count=1 + @NUMSCRIPT_FREEZE_BYTECODE=1 NUMSCRIPT_FREEZE_SUFFIX={{suffix}} go test . -run TestFreezeBytecodeCorpus -count=1 -v diff --git a/bytecode_corpus_test.go b/bytecode_corpus_test.go new file mode 100644 index 00000000..4ea7cc4a --- /dev/null +++ b/bytecode_corpus_test.go @@ -0,0 +1,374 @@ +package numscript_test + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "fmt" + "io/fs" + "maps" + "math/big" + "os" + "path/filepath" + "reflect" + "regexp" + "slices" + "strings" + "testing" + + "github.com/formancehq/numscript" + "github.com/formancehq/numscript/internal/interpreter" + "github.com/formancehq/numscript/internal/specs_format" + "github.com/stretchr/testify/require" +) + +// See compiler-architecture.md, "Frozen bytecode". +const ( + bytecodeCorpusDir = "testdata/bytecode" + bytecodeFixturesDir = "internal/interpreter/testdata/script-tests" + + corpusProgramExt = ".numb" + corpusVarsFile = "vars.nvar" + corpusBalancesFile = "balances.json" + corpusMetadataFile = "metadata.json" + corpusPostingsFile = "postings.json" + corpusErrorFile = "error.json" +) + +type corpusError struct { + Type string `json:"type"` + Value json.RawMessage `json:"value"` +} + +type corpusStore struct { + balances map[[4]string]*big.Int + metadata map[[3]string]string +} + +func newCorpusStore(balances interpreter.Balances, metadata interpreter.AccountsMetadata) corpusStore { + s := corpusStore{balances: map[[4]string]*big.Int{}, metadata: map[[3]string]string{}} + for _, row := range balances { + amount := row.Amount + if amount == nil { + amount = new(big.Int) + } + s.balances[[4]string{row.Account, row.Scope, row.Asset, row.Color}] = amount + } + for _, row := range metadata { + s.metadata[[3]string{row.Account, row.Scope, row.Key}] = row.Value + } + return s +} + +func (s corpusStore) GetBalance(_ context.Context, account, scope, asset, color string) (*big.Int, error) { + if v, ok := s.balances[[4]string{account, scope, asset, color}]; ok { + return new(big.Int).Set(v), nil + } + return new(big.Int), nil +} + +func (s corpusStore) GetMetadata(_ context.Context, account, scope, key string) (string, bool, error) { + v, ok := s.metadata[[3]string{account, scope, key}] + return v, ok, nil +} + +func TestFreezeBytecodeCorpus(t *testing.T) { + if os.Getenv("NUMSCRIPT_FREEZE_BYTECODE") == "" { + t.Skip("set NUMSCRIPT_FREEZE_BYTECODE=1 to write a freeze (`just freeze-bytecode`)") + } + + name := numscript.CurrentBytecodeVersion.String() + if suffix := os.Getenv("NUMSCRIPT_FREEZE_SUFFIX"); suffix != "" { + name += "-" + suffix + } + dir := filepath.Join(bytecodeCorpusDir, name) + _, statErr := os.Stat(dir) + require.ErrorIs(t, statErr, fs.ErrNotExist, "%s exists: a freeze is never overwritten, pick a suffix", dir) + + rawSpecs, err := specs_format.ReadSpecsFiles([]string{bytecodeFixturesDir}) + require.NoError(t, err) + require.NotEmpty(t, rawSpecs) + + frozen := 0 + for _, rawSpec := range rawSpecs { + rel, err := filepath.Rel(bytecodeFixturesDir, rawSpec.NumscriptPath) + require.NoError(t, err) + programName := strings.ReplaceAll(strings.TrimSuffix(filepath.ToSlash(rel), ".num"), "/", "-") + + var specs specs_format.Specs + require.NoError(t, json.Unmarshal(rawSpec.SpecsFileContent, &specs), rel) + require.NotEmpty(t, specs.TestCases, "%s: no test cases", rel) + for _, tc := range specs.TestCases { + require.False(t, tc.Focus || tc.Skip, "%s: a freeze covers every case, remove focus/skip from %q", rel, tc.It) + } + + featureFlags := map[string]struct{}{} + for _, flag := range specs.FeatureFlags { + featureFlags[flag] = struct{}{} + } + + enc, program, cErr := numscript.CompileWithFeatureFlags(rawSpec.NumscriptContent, featureFlags) + if notImplemented, ok := errors.AsType[numscript.CompilerFeatureNotImplemented](cErr); ok { + t.Logf("skip %s: compiler has no %s yet", rel, notImplemented.Feature) + continue + } + require.NoError(t, cErr, rel) + + require.NoError(t, os.MkdirAll(filepath.Join(dir, programName), 0o755)) + require.NoError(t, os.WriteFile(filepath.Join(dir, programName+corpusProgramExt), program.Encode(), 0o644)) + + used := map[string]bool{} + for _, tc := range specs.TestCases { + caseVars := interpreter.VariablesMap{} + maps.Copy(caseVars, specs.Vars) + maps.Copy(caseVars, tc.Vars) + vars, encErr := enc.Encode(caseVars) + require.NoError(t, encErr, "%s %q", rel, tc.It) + + balances := specs_format.MergeBalances(specs.Balances, tc.Balances) + metadata := mergeMetadata(specs.Meta, tc.Meta) + + res, execErr := numscript.ExecVm(context.Background(), numscript.NewVm(program), &vars, newCorpusStore(balances, metadata)) + + caseDir := filepath.Join(dir, programName, caseFolderName(tc.It, used)) + require.NoError(t, os.MkdirAll(caseDir, 0o755)) + require.NoError(t, os.WriteFile(filepath.Join(caseDir, corpusVarsFile), vars.Encode(), 0o644)) + writeCorpusJSON(t, filepath.Join(caseDir, corpusBalancesFile), balances) + if len(metadata) != 0 { + writeCorpusJSON(t, filepath.Join(caseDir, corpusMetadataFile), metadata) + } + if execErr != nil { + writeCorpusJSON(t, filepath.Join(caseDir, corpusErrorFile), corpusErrorOf(t, execErr)) + } else { + writeCorpusJSON(t, filepath.Join(caseDir, corpusPostingsFile), corpusResult(res)) + } + frozen++ + } + } + t.Logf("froze %d cases into %s", frozen, dir) +} + +func TestBytecodeCorpusHasCurrentVersion(t *testing.T) { + current := numscript.CurrentBytecodeVersion + for _, name := range readCorpusFreezes(t) { + if freezeVersion(t, name) == current { + return + } + } + t.Fatalf("no frozen bytecode for version %s: run `just freeze-bytecode`", current) +} + +func TestBytecodeCorpus(t *testing.T) { + freezes := readCorpusFreezes(t) + require.NotEmpty(t, freezes) + + for _, freeze := range freezes { + t.Run(freeze, func(t *testing.T) { + version := freezeVersion(t, freeze) + dir := filepath.Join(bytecodeCorpusDir, freeze) + entries, err := os.ReadDir(dir) + require.NoError(t, err) + + programs := map[string]bool{} + caseDirs := map[string]bool{} + for _, e := range entries { + switch { + case e.IsDir(): + caseDirs[e.Name()] = true + case strings.HasSuffix(e.Name(), corpusProgramExt): + programs[strings.TrimSuffix(e.Name(), corpusProgramExt)] = true + default: + t.Errorf("unexpected file %s", e.Name()) + } + } + require.Equal(t, sortedKeys(programs), sortedKeys(caseDirs), "every program has a folder of cases and vice versa") + + for _, name := range sortedKeys(programs) { + t.Run(name, func(t *testing.T) { + checkFrozenProgram(t, dir, name, version) + }) + } + }) + } +} + +func checkFrozenProgram(t *testing.T, dir, name string, version numscript.BytecodeVersion) { + programBytes, err := os.ReadFile(filepath.Join(dir, name+corpusProgramExt)) + require.NoError(t, err) + programVersion, err := numscript.PeekCompiledProgramVersion(programBytes) + require.NoError(t, err) + require.Equal(t, version, programVersion, "program version differs from the freeze directory name") + + cases, err := os.ReadDir(filepath.Join(dir, name)) + require.NoError(t, err) + require.NotEmpty(t, cases, "no cases") + + readable := numscript.CurrentBytecodeVersion.CanRead(programVersion) + for _, c := range cases { + require.True(t, c.IsDir(), "%s: not a case folder", c.Name()) + t.Run(c.Name(), func(t *testing.T) { + caseDir := filepath.Join(dir, name, c.Name()) + varsBytes, err := os.ReadFile(filepath.Join(caseDir, corpusVarsFile)) + require.NoError(t, err) + varsVersion, err := numscript.PeekVarsVersion(varsBytes) + require.NoError(t, err) + require.Equal(t, programVersion, varsVersion) + + if !readable { + var unsupported numscript.UnsupportedBytecodeVersionError + _, err := numscript.DecodeCompiledProgram(programBytes) + require.ErrorAs(t, err, &unsupported) + require.Equal(t, programVersion, unsupported.Encoded) + _, err = numscript.DecodeVars(varsBytes) + require.ErrorAs(t, err, &unsupported) + require.Equal(t, varsVersion, unsupported.Encoded) + return + } + + program, err := numscript.DecodeCompiledProgram(programBytes) + require.NoError(t, err) + vars, err := numscript.DecodeVars(varsBytes) + require.NoError(t, err) + if programVersion == numscript.CurrentBytecodeVersion { + require.Equal(t, programBytes, program.Encode(), "re-encoding changed the program bytes") + require.Equal(t, varsBytes, vars.Encode(), "re-encoding changed the vars bytes") + } + info, err := numscript.VerifyCompiledProgramWithVars(program, &vars) + require.NoError(t, err) + require.True(t, info.CheckVars(&vars)) + + var balances interpreter.Balances + readCorpusJSON(t, filepath.Join(caseDir, corpusBalancesFile), &balances) + var metadata interpreter.AccountsMetadata + if _, statErr := os.Stat(filepath.Join(caseDir, corpusMetadataFile)); statErr == nil { + readCorpusJSON(t, filepath.Join(caseDir, corpusMetadataFile), &metadata) + } + + res, execErr := numscript.ExecVm(context.Background(), numscript.NewVm(program), &vars, newCorpusStore(balances, metadata)) + + wantPostings, postingsErr := os.ReadFile(filepath.Join(caseDir, corpusPostingsFile)) + wantError, errorErr := os.ReadFile(filepath.Join(caseDir, corpusErrorFile)) + require.NotEqual(t, postingsErr == nil, errorErr == nil, "a case has exactly one of %s and %s", corpusPostingsFile, corpusErrorFile) + + if errorErr == nil { + require.Error(t, execErr, "the frozen run failed, this one succeeded") + var want corpusError + require.NoError(t, json.Unmarshal(wantError, &want)) + got := corpusErrorOf(t, execErr) + require.Equal(t, want.Type, got.Type) + requireSameJSON(t, want.Value, got.Value) + return + } + require.NoError(t, execErr, "the frozen run succeeded, this one failed") + got, err := json.Marshal(corpusResult(res)) + require.NoError(t, err) + requireSameJSON(t, wantPostings, got) + }) + } +} + +func readCorpusFreezes(t *testing.T) []string { + entries, err := os.ReadDir(bytecodeCorpusDir) + require.NoError(t, err) + var names []string + for _, e := range entries { + require.True(t, e.IsDir(), "%s: not a freeze directory", e.Name()) + names = append(names, e.Name()) + } + return names +} + +func freezeVersion(t *testing.T, name string) numscript.BytecodeVersion { + base, _, _ := strings.Cut(name, "-") + var v numscript.BytecodeVersion + _, err := fmt.Sscanf(base, "%d.%d", &v.Major, &v.Minor) + require.NoError(t, err, "freeze directory %q is not named .[-suffix]", name) + return v +} + +func corpusResult(res numscript.ExecutionResult) numscript.ExecutionResult { + if res.Postings == nil { + res.Postings = []numscript.Posting{} + } + return res +} + +// Marshalled through a pointer: big.Int and big.Rat fields only have a +// pointer-receiver MarshalText, and a value field would encode as {}. +func corpusErrorOf(t *testing.T, err error) corpusError { + v := reflect.ValueOf(err) + if v.Kind() == reflect.Pointer { + v = v.Elem() + } + ptr := reflect.New(v.Type()) + ptr.Elem().Set(v) + value, mErr := json.Marshal(ptr.Interface()) + require.NoError(t, mErr) + return corpusError{Type: v.Type().Name(), Value: value} +} + +func mergeMetadata(outer, inner interpreter.AccountsMetadata) interpreter.AccountsMetadata { + merged := interpreter.AccountsMetadata{} + index := map[[3]string]int{} + for _, rows := range []interpreter.AccountsMetadata{outer, inner} { + for _, row := range rows { + key := [3]string{row.Account, row.Scope, row.Key} + if i, ok := index[key]; ok { + merged[i] = row + } else { + index[key] = len(merged) + merged = append(merged, row) + } + } + } + return merged +} + +var nonSlug = regexp.MustCompile(`[^a-z0-9]+`) + +func caseFolderName(it string, used map[string]bool) string { + base := strings.Trim(nonSlug.ReplaceAllString(strings.ToLower(it), "-"), "-") + if base == "" { + base = "case" + } + name := base + for i := 2; used[name]; i++ { + name = fmt.Sprintf("%s-%d", base, i) + } + used[name] = true + return name +} + +func sortedKeys(m map[string]bool) []string { + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + slices.Sort(keys) + return keys +} + +func writeCorpusJSON(t *testing.T, path string, v any) { + data, err := json.MarshalIndent(v, "", " ") + require.NoError(t, err) + require.NoError(t, os.WriteFile(path, append(data, '\n'), 0o644)) +} + +func readCorpusJSON(t *testing.T, path string, v any) { + data, err := os.ReadFile(path) + require.NoError(t, err) + require.NoError(t, json.Unmarshal(data, v)) +} + +func requireSameJSON(t *testing.T, want, got []byte) { + require.Equal(t, decodeJSONExact(t, want), decodeJSONExact(t, got)) +} + +func decodeJSONExact(t *testing.T, data []byte) any { + dec := json.NewDecoder(bytes.NewReader(data)) + dec.UseNumber() + var v any + require.NoError(t, dec.Decode(&v)) + return v +} diff --git a/compiler-architecture.md b/compiler-architecture.md index d5af560a..ecae0f63 100644 --- a/compiler-architecture.md +++ b/compiler-architecture.md @@ -186,6 +186,21 @@ Major 0 is **unstable**, and the format is at `0.1` today. Any 0.x change may ch `Encode` always stamps `vm.CurrentBytecodeVersion`; the decoders return `vm.UnsupportedBytecodeVersionError` (carrying the encoded and the supported version) for a payload they cannot read. `PeekProgramVersion` / `PeekVarsVersion` read the version off the raw header without decoding the rest and without applying the rule, so a host can report which version an unreadable payload was written with. A host that stores bytecode compiled by one build and executes it with another should compare the stored payload's version with `CurrentBytecodeVersion` (or `CanRead`, if it accepts older minors) before trusting it to run. +#### Frozen bytecode + +`testdata/bytecode/` holds, per freeze, the bytecode the compiler produced from every script fixture at one point in time, with each test case's vars blob, inputs and the output it produced then. A freeze directory is named after the bytecode version (`0.1`, or `0.1-` for a later freeze at the same version) and is never edited once committed. Inside it, `