diff --git a/fieldtests/milestone-safe-to-embed/embed-host/Cargo.lock b/fieldtests/milestone-safe-to-embed/embed-host/Cargo.lock new file mode 100644 index 0000000..9ced347 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/embed-host/Cargo.lock @@ -0,0 +1,1279 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "aura-analysis" +version = "0.1.0" +dependencies = [ + "serde", +] + +[[package]] +name = "aura-backtest" +version = "0.1.0" +dependencies = [ + "aura-core", + "aura-engine", + "serde", +] + +[[package]] +name = "aura-campaign" +version = "0.1.0" +dependencies = [ + "aura-analysis", + "aura-backtest", + "aura-core", + "aura-engine", + "aura-registry", + "aura-research", + "rayon", + "serde", + "serde_json", +] + +[[package]] +name = "aura-composites" +version = "0.1.0" +dependencies = [ + "aura-backtest", + "aura-core", + "aura-engine", + "aura-std", + "aura-strategy", +] + +[[package]] +name = "aura-core" +version = "0.1.0" +dependencies = [ + "chrono-tz", + "serde", +] + +[[package]] +name = "aura-engine" +version = "0.1.0" +dependencies = [ + "aura-analysis", + "aura-core", + "rayon", + "serde", + "serde_json", +] + +[[package]] +name = "aura-ingest" +version = "0.1.0" +dependencies = [ + "aura-core", + "aura-engine", + "data-server", +] + +[[package]] +name = "aura-market" +version = "0.1.0" +dependencies = [ + "aura-core", + "chrono", + "chrono-tz", +] + +[[package]] +name = "aura-registry" +version = "0.1.0" +dependencies = [ + "aura-analysis", + "aura-backtest", + "aura-core", + "aura-engine", + "aura-research", + "serde", + "serde_json", +] + +[[package]] +name = "aura-research" +version = "0.1.0" +dependencies = [ + "aura-core", + "serde", + "serde_json", + "sha2", +] + +[[package]] +name = "aura-runner" +version = "0.1.0" +dependencies = [ + "aura-backtest", + "aura-campaign", + "aura-composites", + "aura-core", + "aura-engine", + "aura-ingest", + "aura-registry", + "aura-research", + "aura-std", + "aura-strategy", + "aura-vocabulary", + "data-server", + "libloading", + "serde", + "serde_json", + "sha2", + "toml", +] + +[[package]] +name = "aura-std" +version = "0.1.0" +dependencies = [ + "aura-core", +] + +[[package]] +name = "aura-strategy" +version = "0.1.0" +dependencies = [ + "aura-core", +] + +[[package]] +name = "aura-vocabulary" +version = "0.1.0" +dependencies = [ + "aura-backtest", + "aura-core", + "aura-market", + "aura-std", + "aura-strategy", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bzip2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" +dependencies = [ + "bzip2-sys", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "cc" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "chrono-tz" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" +dependencies = [ + "chrono", + "phf", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "data-server" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/data-server.git?branch=main#694f96f2b23453d533c43d4da3b5ac9da4aca25a" +dependencies = [ + "chrono", + "regex", + "serde_json", + "zip", +] + +[[package]] +name = "deflate64" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac6b926516df9c60bfa16e107b21086399f8285a44ca9711344b9e553c5146e2" + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "either" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" + +[[package]] +name = "embed-host" +version = "0.0.0" +dependencies = [ + "aura-core", + "aura-engine", + "aura-runner", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "futures-core" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" + +[[package]] +name = "futures-task" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" + +[[package]] +name = "futures-util" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "lzma-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" +dependencies = [ + "byteorder", + "crc", +] + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "phf" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "time" +version = "0.3.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "aes", + "arbitrary", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "deflate64", + "displaydoc", + "flate2", + "getrandom 0.3.4", + "hmac", + "indexmap", + "lzma-rs", + "memchr", + "pbkdf2", + "sha1", + "thiserror", + "time", + "xz2", + "zeroize", + "zopfli", + "zstd", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/fieldtests/milestone-safe-to-embed/embed-host/Cargo.toml b/fieldtests/milestone-safe-to-embed/embed-host/Cargo.toml new file mode 100644 index 0000000..cf88ebe --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/embed-host/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "embed-host" +version = "0.0.0" +edition = "2021" +publish = false + +# A node crate is its own workspace (docs/project-layout.md); an external +# embedding under the engine checkout hits the same cargo trap, so the same +# empty table applies here. +[workspace] + +# C30 point 2: an external embedding in its own repo pins the engine as a git +# dependency at a rev. This fixture lives INSIDE the engine checkout, so it +# uses the path form of the same edge — the node-crate mechanism. +[dependencies] +aura-core = { path = "../../../crates/aura-core" } +aura-engine = { path = "../../../crates/aura-engine" } +aura-runner = { path = "../../../crates/aura-runner" } diff --git a/fieldtests/milestone-safe-to-embed/embed-host/src/bin/m4_1_refusals_are_values.rs b/fieldtests/milestone-safe-to-embed/embed-host/src/bin/m4_1_refusals_are_values.rs new file mode 100644 index 0000000..083dea9 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/embed-host/src/bin/m4_1_refusals_are_values.rs @@ -0,0 +1,123 @@ +//! Fieldtest, milestone 39 (safe to embed), axis 1 — the embedding consumer. +//! +//! A downstream "World program": it runs one signal blueprint through the +//! engine's library surface (no `aura` binary involved), drains one tap +//! in-process, and then deliberately walks into three refusals — one +//! argv-named-content class, one environment class, one tap-name class. +//! The promise under test: every refusal comes back as a `RunnerError` +//! VALUE, the host keeps running, and the host itself decides what to do +//! with the exit class. +//! +//! Run it from inside the scaffolded project: `cd lab && cargo run +//! --manifest-path ../embed-host/Cargo.toml --bin m4_1_refusals_are_values`. + +use aura_engine::blueprint_from_json; +use aura_runner::member::{run_signal_r, RunData}; +use aura_runner::project; +use aura_runner::tap_plan::{TapPlan, TapSubscription}; +use aura_runner::RunnerError; +use std::path::Path; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::Arc; + +fn main() { + let root = project::discover_from(Path::new(".")) + .expect("run this from inside a project (an Aura.toml directory)"); + let penv = project::load(&root, false).expect("data-only project loads"); + let env = project::Env::with_project(penv); + let doc = std::fs::read_to_string(root.join("blueprints/embed-probe.json")) + .expect("the op-script-built blueprint is on disk"); + + let load = |env: &project::Env| { + blueprint_from_json(&doc, &|type_id| env.resolve(type_id)) + .expect("blueprint parses against the project vocabulary") + }; + + // ---- 1. the happy path, with the tap drained IN PROCESS ------------- + let seen = Arc::new(AtomicUsize::new(0)); + let counter = Arc::clone(&seen); + let mut plan = TapPlan::empty(); + plan.subscribe( + "spread", + TapSubscription::live(move |_ts, _cell| { + counter.fetch_add(1, Ordering::Relaxed); + }), + ); + match run_signal_r(load(&env), &[], RunData::Synthetic, 0, &env, plan, None) { + Ok((report, notes)) => println!( + "[1] ok: {} tap samples reached this process, notes={:?}\n manifest.topology_hash={:?}", + seen.load(Ordering::Relaxed), + notes, + report.manifest.topology_hash + ), + Err(e) => println!("[1] UNEXPECTED refusal: exit {} — {}", e.exit_code, e.message), + } + + // ---- 2. a fold label the registry does not carry -------------------- + let mut plan = TapPlan::empty(); + plan.subscribe("spread", TapSubscription::named("median")); + report_refusal( + "[2] unknown fold label (argv-named content -> expect class 2)", + run_signal_r(load(&env), &[], RunData::Synthetic, 0, &env, plan, None), + ); + + // ---- 3. a tap name the blueprint does not declare ------------------- + let mut plan = TapPlan::empty(); + plan.subscribe("spred", TapSubscription::named("mean")); + report_refusal( + "[3] unknown tap name (argv-named content -> expect class 2)", + run_signal_r(load(&env), &[], RunData::Synthetic, 0, &env, plan, None), + ); + + // ---- 4. a symbol the archive does not have -------------------------- + let data = RunData::Real { + symbol: "NOSUCHSYMBOL".to_string(), + from: None, + to: None, + }; + report_refusal( + "[4] symbol absent from the archive (environment -> expect class 1)", + run_signal_r(load(&env), &[], data, 0, &env, TapPlan::empty(), None), + ); + + // ---- 5. the success path: does the library print into MY stdout? ---- + println!("[5] --- begin record_all run; anything between here and [5-end] is not mine"); + match run_signal_r( + load(&env), + &[], + RunData::Synthetic, + 0, + &env, + TapPlan::record_all(), + None, + ) { + Ok((_, notes)) => println!("[5-end] ok, returned notes={notes:?}"), + Err(e) => println!("[5-end] refused: exit {} — {}", e.exit_code, e.message), + } + + // ---- 6..8. refusals the CLI reports as class 2 on this same leg ----- + // Do they reach an embedder as VALUES too, or only as CLI-side checks? + // NOTE (fieldtest run, 2026-07-26): step [8] never printed — the call + // panicked inside the library and took this host down with exit 101. + for (label, file) in [ + ("[6] open blueprint, free knobs", "blueprints/open-probe.json"), + ("[7] root role no column binds", "blueprints/unbindable-probe.json"), + ("[8] exposes neither bias nor tap", "blueprints/blind-probe.json"), + ] { + let src = std::fs::read_to_string(root.join(file)).expect("fixture on disk"); + let bp = blueprint_from_json(&src, &|t| env.resolve(t)).expect("parses"); + report_refusal( + label, + run_signal_r(bp, &[], RunData::Synthetic, 0, &env, TapPlan::empty(), None), + ); + } + + println!("[host] still alive after 3 refusals — the milestone promise holds"); +} + +fn report_refusal(what: &str, outcome: Result) { + match outcome { + Ok(_) => println!("{what}\n UNEXPECTED: ran to completion, no refusal"), + Err(e) => println!("{what}\n exit_code={} message={:?}", e.exit_code, e.message), + } +} diff --git a/fieldtests/milestone-safe-to-embed/embed-host/src/bin/m4_2_reproduce_as_data.rs b/fieldtests/milestone-safe-to-embed/embed-host/src/bin/m4_2_reproduce_as_data.rs new file mode 100644 index 0000000..8c4cba5 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/embed-host/src/bin/m4_2_reproduce_as_data.rs @@ -0,0 +1,63 @@ +//! Fieldtest, milestone 39 (safe to embed), axis 1 — reproduce as a value. +//! +//! The downstream task: a World program wants to re-verify a persisted +//! family before building on it — "is this stored result still the result +//! this engine produces?" — and wants the answer as DATA, not as a process +//! exit. It then walks into the two mismatch-guard classes: an explicit +//! source that contradicts the stored members (caller's fault, class 2) and +//! an id nothing is stored under (environment, class 1). +//! +//! Usage: `cd lab && cargo run --manifest-path ../embed-host/Cargo.toml \ +//! --bin m4_2_reproduce_as_data -- ` + +use aura_runner::family::{DataChoice, DataSource}; +use aura_runner::project; +use aura_runner::reproduce::{reproduce_family, reproduce_family_in}; +use std::path::Path; + +fn main() { + let id = std::env::args().nth(1).expect("usage: "); + let root = project::discover_from(Path::new(".")).expect("run inside the project"); + let penv = project::load(&root, false).expect("data-only project loads"); + let env = project::Env::with_project(penv); + + // ---- 1. the answer is a report, divergence included ----------------- + match reproduce_family(&id, &env) { + Ok(report) => { + println!("[1] reproduce_family -> Ok, all_identical={}", report.all_identical()); + for (member, identical) in &report.outcomes { + println!(" {member} -> bit-identical={identical}"); + } + } + Err(e) => println!("[1] refused: exit_code={} message={:?}", e.exit_code, e.message), + } + + // ---- 2. explicit source contradicting the stored members ------------ + // The family above was recorded over GER40; hand it EURUSD instead. + let wrong = DataSource::from_choice( + DataChoice::Real { symbol: "EURUSD".to_string(), from_ms: None, to_ms: None }, + &env, + ) + .expect("EURUSD has recorded geometry"); + match reproduce_family_in(&env.registry(), &id, &wrong, &env) { + Ok(report) => println!( + "[2] UNEXPECTED: ran against the wrong instrument, all_identical={}", + report.all_identical() + ), + Err(e) => println!( + "[2] explicit-source mismatch (expect class 2): exit_code={} message={:?}", + e.exit_code, e.message + ), + } + + // ---- 3. an id nothing is stored under ------------------------------- + match reproduce_family("no-such-family-0", &env) { + Ok(_) => println!("[3] UNEXPECTED: reproduced a family that does not exist"), + Err(e) => println!( + "[3] unknown family id (expect class 1): exit_code={} message={:?}", + e.exit_code, e.message + ), + } + + println!("[host] still alive — reproduce never took the process down"); +} diff --git a/fieldtests/milestone-safe-to-embed/external-embed/Cargo.lock b/fieldtests/milestone-safe-to-embed/external-embed/Cargo.lock new file mode 100644 index 0000000..ad969d5 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/external-embed/Cargo.lock @@ -0,0 +1,1292 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "aura-analysis" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "serde", +] + +[[package]] +name = "aura-backtest" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-core", + "aura-engine", + "serde", +] + +[[package]] +name = "aura-campaign" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-analysis", + "aura-backtest", + "aura-core", + "aura-engine", + "aura-registry", + "aura-research", + "rayon", + "serde", + "serde_json", +] + +[[package]] +name = "aura-composites" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-backtest", + "aura-core", + "aura-engine", + "aura-std", + "aura-strategy", +] + +[[package]] +name = "aura-core" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "chrono-tz", + "serde", +] + +[[package]] +name = "aura-engine" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-analysis", + "aura-core", + "rayon", + "serde", + "serde_json", +] + +[[package]] +name = "aura-ingest" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-core", + "aura-engine", + "data-server", +] + +[[package]] +name = "aura-market" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-core", + "chrono", + "chrono-tz", +] + +[[package]] +name = "aura-registry" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-analysis", + "aura-backtest", + "aura-core", + "aura-engine", + "aura-research", + "serde", + "serde_json", +] + +[[package]] +name = "aura-research" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-core", + "serde", + "serde_json", + "sha2", +] + +[[package]] +name = "aura-runner" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-backtest", + "aura-campaign", + "aura-composites", + "aura-core", + "aura-engine", + "aura-ingest", + "aura-registry", + "aura-research", + "aura-std", + "aura-strategy", + "aura-vocabulary", + "data-server", + "libloading", + "serde", + "serde_json", + "sha2", + "toml", +] + +[[package]] +name = "aura-std" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-core", +] + +[[package]] +name = "aura-strategy" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-core", +] + +[[package]] +name = "aura-vocabulary" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/Aura.git?rev=024e8652c0afc186b2718c0c0f5189a6874fa5d7#024e8652c0afc186b2718c0c0f5189a6874fa5d7" +dependencies = [ + "aura-backtest", + "aura-core", + "aura-market", + "aura-std", + "aura-strategy", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bzip2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" +dependencies = [ + "bzip2-sys", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "cc" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "chrono-tz" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3" +dependencies = [ + "chrono", + "phf", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "data-server" +version = "0.1.0" +source = "git+http://192.168.178.103:3000/Brummel/data-server.git?branch=main#694f96f2b23453d533c43d4da3b5ac9da4aca25a" +dependencies = [ + "chrono", + "regex", + "serde_json", + "zip", +] + +[[package]] +name = "deflate64" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac6b926516df9c60bfa16e107b21086399f8285a44ca9711344b9e553c5146e2" + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "either" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "external-embed" +version = "0.0.0" +dependencies = [ + "aura-engine", + "aura-runner", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "futures-core" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" + +[[package]] +name = "futures-task" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" + +[[package]] +name = "futures-util" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "inout" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" +dependencies = [ + "generic-array", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "lzma-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" +dependencies = [ + "byteorder", + "crc", +] + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest", + "hmac", +] + +[[package]] +name = "phf" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "simd-adler32" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "time" +version = "0.3.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1d5e639ff6bab73cb6885cc7e7b1de96c3f32c68ec55f3952614bec1092244" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "zip" +version = "2.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "aes", + "arbitrary", + "bzip2", + "constant_time_eq", + "crc32fast", + "crossbeam-utils", + "deflate64", + "displaydoc", + "flate2", + "getrandom 0.3.4", + "hmac", + "indexmap", + "lzma-rs", + "memchr", + "pbkdf2", + "sha1", + "thiserror", + "time", + "xz2", + "zeroize", + "zopfli", + "zstd", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zopfli" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" +dependencies = [ + "bumpalo", + "crc32fast", + "log", + "simd-adler32", +] + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "7.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" +dependencies = [ + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/fieldtests/milestone-safe-to-embed/external-embed/Cargo.toml b/fieldtests/milestone-safe-to-embed/external-embed/Cargo.toml new file mode 100644 index 0000000..f2290c4 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/external-embed/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "external-embed" +version = "0.0.0" +edition = "2021" +publish = false + +[workspace] + +# C30 point 2, consumer class 2: "an external embedding (a World program in +# its own repo) consumes the workspace crates as a cargo git dependency +# pinned to a rev." This is that mechanism, exercised literally — the rev is +# the newest commit published on origin/main at fieldtest time. +[dependencies] +aura-runner = { git = "http://192.168.178.103:3000/Brummel/Aura.git", rev = "024e8652c0afc186b2718c0c0f5189a6874fa5d7" } +aura-engine = { git = "http://192.168.178.103:3000/Brummel/Aura.git", rev = "024e8652c0afc186b2718c0c0f5189a6874fa5d7" } diff --git a/fieldtests/milestone-safe-to-embed/external-embed/src/main.rs b/fieldtests/milestone-safe-to-embed/external-embed/src/main.rs new file mode 100644 index 0000000..94f72e6 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/external-embed/src/main.rs @@ -0,0 +1,18 @@ +//! Fieldtest, milestone 39, axis 3 — the external-embedding mechanism. +//! +//! The smallest possible World program of C30's second consumer class: it +//! does not live in the engine checkout and does not use the `aura` binary; +//! it pins the engine at a rev and calls the library. All it has to do to +//! count is BUILD and reach one library entry point. + +use aura_runner::project::Env; + +fn main() { + let env = Env::std(); + let types = env.type_ids(); + println!( + "external embedding alive: {} node types visible, runs root {:?}", + types.len(), + env.runs_root() + ); +} diff --git a/fieldtests/milestone-safe-to-embed/lab-nodes/.gitignore b/fieldtests/milestone-safe-to-embed/lab-nodes/.gitignore new file mode 100644 index 0000000..96ef6c0 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab-nodes/.gitignore @@ -0,0 +1,2 @@ +/target +Cargo.lock diff --git a/fieldtests/milestone-safe-to-embed/lab-nodes/CLAUDE.md b/fieldtests/milestone-safe-to-embed/lab-nodes/CLAUDE.md new file mode 100644 index 0000000..e5dce07 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab-nodes/CLAUDE.md @@ -0,0 +1,11 @@ +# lab-nodes — an aura node crate + +Native node logic for an aura research project (extension-dev role). This +crate is attached to its project via `[nodes]` in the project's `Aura.toml`. + +- Build: `cargo build` (the next `aura` invocation in the project loads the + fresh dylib) +- Each node is registered in `vocabulary()`/`type_ids()` under the + `lab_nodes::` namespace prefix; blueprints reference nodes by that id. +- This crate has no data-plane dependencies — nodes are pure stream + transformers over read-only input windows. diff --git a/fieldtests/milestone-safe-to-embed/lab-nodes/Cargo.toml b/fieldtests/milestone-safe-to-embed/lab-nodes/Cargo.toml new file mode 100644 index 0000000..5ef0588 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab-nodes/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "lab-nodes" +version = "0.1.0" +edition = "2024" +publish = false + +[lib] +crate-type = ["cdylib"] + +[dependencies] +# The scaffold emits an ABSOLUTE engine path here (fieldtest finding S2); +# relativized for the committed corpus so the fixture survives the +# worktree it was minted in. +aura-core = { path = "../../../crates/aura-core" } + +# Standalone workspace root: never a member of an enclosing workspace. +[workspace] diff --git a/fieldtests/milestone-safe-to-embed/lab-nodes/src/lib.rs b/fieldtests/milestone-safe-to-embed/lab-nodes/src/lib.rs new file mode 100644 index 0000000..455aff7 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab-nodes/src/lib.rs @@ -0,0 +1,77 @@ +//! lab-nodes — an aura research project: node logic + the exported vocabulary. +//! +//! Every node type this crate provides is registered in `vocabulary()` / +//! `type_ids()` under the `lab_nodes::` namespace prefix; the `aura` host loads +//! this cdylib per invocation and merges it with the std vocabulary. + +use aura_core::{ + Cell, Ctx, FieldSpec, Firing, Node, NodeSchema, ParamSpec, PortSpec, PrimitiveBuilder, + ScalarKind, +}; + +/// One-input scalar gain: emits `input * factor`. Emits `None` until its +/// input has a value (warm-up filter, C8). +pub struct Scale { + factor: f64, + out: [Cell; 1], +} + +impl Scale { + pub fn new(factor: f64) -> Self { + Self { factor, out: [Cell::from_f64(0.0)] } + } + // Replace `doc` below when renaming this sample node — it must keep + // describing the node's own behaviour, not this scaffolding step. + pub fn builder() -> PrimitiveBuilder { + PrimitiveBuilder::new( + "lab_nodes::Scale", + NodeSchema { + inputs: vec![PortSpec { + kind: ScalarKind::F64, + firing: Firing::Any, + name: "value".into(), + }], + output: vec![FieldSpec { name: "value".into(), kind: ScalarKind::F64 }], + params: vec![ParamSpec { name: "factor".into(), kind: ScalarKind::F64 }], + // C29: every vocabulary entry ships a one-line meaning — the + // doc field is required (E0063 without it) and gated at load. + doc: "scalar gain: emits the input times the factor param", + }, + |p| Box::new(Scale::new(p[0].f64())), + ) + } +} + +impl Node for Scale { + fn lookbacks(&self) -> Vec { + vec![1] + } + fn eval(&mut self, ctx: Ctx<'_>) -> Option<&[Cell]> { + let w = ctx.f64_in(0); + if w.is_empty() { + return None; + } + self.out[0] = Cell::from_f64(w[0] * self.factor); + Some(&self.out) + } + fn label(&self) -> String { + format!("lab_nodes::Scale({})", self.factor) + } +} + +fn vocabulary(type_id: &str) -> Option { + match type_id { + "lab_nodes::Scale" => Some(Scale::builder()), + _ => None, + } +} + +fn type_ids() -> &'static [&'static str] { + &["lab_nodes::Scale"] +} + +aura_core::aura_project! { + namespace: "lab_nodes", + vocabulary: vocabulary, + type_ids: type_ids, +} diff --git a/fieldtests/milestone-safe-to-embed/lab/.gitignore b/fieldtests/milestone-safe-to-embed/lab/.gitignore new file mode 100644 index 0000000..306cbf0 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/.gitignore @@ -0,0 +1 @@ +/runs diff --git a/fieldtests/milestone-safe-to-embed/lab/Aura.toml b/fieldtests/milestone-safe-to-embed/lab/Aura.toml new file mode 100644 index 0000000..32f87da --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/Aura.toml @@ -0,0 +1,7 @@ +# Static project context only (C17); paths only. +[paths] +runs = "runs" +# data = "/path/to/archive" # the recorded-data root; defaults to the built-in path + +[nodes] +crates = ["../lab-nodes"] diff --git a/fieldtests/milestone-safe-to-embed/lab/CLAUDE.md b/fieldtests/milestone-safe-to-embed/lab/CLAUDE.md new file mode 100644 index 0000000..5f60288 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/CLAUDE.md @@ -0,0 +1,24 @@ +# lab — an aura research project (data-only) + +This directory is an aura project: blueprints + research documents over the +std vocabulary, anchored by `Aura.toml`. There is no crate and no build step. + +- Run: `aura exec blueprints/signal.json` (single smoke run, synthetic stream + — the starter is closed; all params bound; bound values are defaults — + `--override NODE.PARAM=VALUE` may override one for this run (#246)) +- Campaign: `aura exec ` executes a registered campaign + document (file or content id) — the multi-cell/axis surface +- Axes: `aura graph introspect --params blueprints/signal.json` lists the + open + bound-overridable axes, RAW `.` names (#328) +- Native nodes: when the project needs its first project-specific node, + `aura nodes new ` scaffolds a node crate beside this project and + attaches it via `[nodes]` in `Aura.toml` (build it with `cargo build`). +- Topology is data (`blueprints/*.json`); results land in `runs/`. +- Execution model: a strategy emits a bias in [-1,+1] per cycle, held as the + continuously-tracked target position; a protective stop defines the risk + unit R, and quality metrics are R-based. Entry signals become held state + via the signal-side latch/edge-pulse idiom (see + `aura graph introspect --vocabulary`). +- Data plane: process/campaign documents are authored directly with + `aura process` / `aura campaign`, growing one from a bare `{}` via + `aura campaign introspect --unwired`. diff --git a/fieldtests/milestone-safe-to-embed/lab/blueprints/blind-probe.json b/fieldtests/milestone-safe-to-embed/lab/blueprints/blind-probe.json new file mode 100644 index 0000000..31ec42e --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/blueprints/blind-probe.json @@ -0,0 +1 @@ +{"format_version":1,"blueprint":{"name":"blind-probe","doc":"the same graph with neither a bias output nor a declared tap","nodes":[{"primitive":{"type":"SMA","name":"fast","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":3}}]}},{"primitive":{"type":"SMA","name":"slow","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":8}}]}},{"primitive":{"type":"Sub","name":"sub"}},{"primitive":{"type":"Bias","name":"bias","bound":[{"pos":0,"name":"scale","kind":"F64","value":{"F64":0.5}}]}}],"edges":[{"from":0,"to":2,"slot":0,"from_field":0},{"from":1,"to":2,"slot":1,"from_field":0},{"from":2,"to":3,"slot":0,"from_field":0}],"input_roles":[{"name":"price","targets":[{"node":0,"slot":0},{"node":1,"slot":0}],"source":"F64"}]}} \ No newline at end of file diff --git a/fieldtests/milestone-safe-to-embed/lab/blueprints/embed-probe.json b/fieldtests/milestone-safe-to-embed/lab/blueprints/embed-probe.json new file mode 100644 index 0000000..6f1b681 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/blueprints/embed-probe.json @@ -0,0 +1 @@ +{"format_version":1,"blueprint":{"name":"embed-probe","doc":"fast/slow SMA spread clamped to a bias, with the raw spread tapped","nodes":[{"primitive":{"type":"SMA","name":"fast","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":3}}]}},{"primitive":{"type":"SMA","name":"slow","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":8}}]}},{"primitive":{"type":"Sub","name":"sub"}},{"primitive":{"type":"Bias","name":"bias","bound":[{"pos":0,"name":"scale","kind":"F64","value":{"F64":0.5}}]}}],"edges":[{"from":0,"to":2,"slot":0,"from_field":0},{"from":1,"to":2,"slot":1,"from_field":0},{"from":2,"to":3,"slot":0,"from_field":0}],"input_roles":[{"name":"price","targets":[{"node":0,"slot":0},{"node":1,"slot":0}],"source":"F64"}],"output":[{"node":3,"field":0,"name":"bias"}],"taps":[{"name":"spread","from":{"node":2,"field":0}}]}} \ No newline at end of file diff --git a/fieldtests/milestone-safe-to-embed/lab/blueprints/open-probe.json b/fieldtests/milestone-safe-to-embed/lab/blueprints/open-probe.json new file mode 100644 index 0000000..8004267 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/blueprints/open-probe.json @@ -0,0 +1 @@ +{"format_version":1,"blueprint":{"name":"open-probe","doc":"the same spread-to-bias signal with every knob left open","nodes":[{"primitive":{"type":"SMA","name":"fast"}},{"primitive":{"type":"SMA","name":"slow"}},{"primitive":{"type":"Sub","name":"sub"}},{"primitive":{"type":"Bias","name":"bias"}}],"edges":[{"from":0,"to":2,"slot":0,"from_field":0},{"from":1,"to":2,"slot":1,"from_field":0},{"from":2,"to":3,"slot":0,"from_field":0}],"input_roles":[{"name":"price","targets":[{"node":0,"slot":0},{"node":1,"slot":0}],"source":"F64"}],"output":[{"node":3,"field":0,"name":"bias"}],"taps":[{"name":"spread","from":{"node":2,"field":0}}]}} \ No newline at end of file diff --git a/fieldtests/milestone-safe-to-embed/lab/blueprints/signal.json b/fieldtests/milestone-safe-to-embed/lab/blueprints/signal.json new file mode 100644 index 0000000..46120a2 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/blueprints/signal.json @@ -0,0 +1 @@ +{"format_version":1,"blueprint":{"name":"lab_signal","doc":"fast/slow SMA difference clamped into a directional bias","nodes":[{"primitive":{"type":"SMA","name":"fast","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":2}}]}},{"primitive":{"type":"SMA","name":"slow","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":4}}]}},{"primitive":{"type":"Sub"}},{"primitive":{"type":"Bias","name":"bias","bound":[{"pos":0,"name":"scale","kind":"F64","value":{"F64":0.5}}]}}],"edges":[{"from":0,"to":2,"slot":0,"from_field":0},{"from":1,"to":2,"slot":1,"from_field":0},{"from":2,"to":3,"slot":0,"from_field":0}],"input_roles":[{"name":"price","targets":[{"node":0,"slot":0},{"node":1,"slot":0}],"source":"F64"}],"output":[{"node":3,"field":0,"name":"bias"}]}} \ No newline at end of file diff --git a/fieldtests/milestone-safe-to-embed/lab/blueprints/unbindable-probe.json b/fieldtests/milestone-safe-to-embed/lab/blueprints/unbindable-probe.json new file mode 100644 index 0000000..29458b2 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/lab/blueprints/unbindable-probe.json @@ -0,0 +1 @@ +{"format_version":1,"blueprint":{"name":"unbindable-probe","doc":"the same signal fed by a root role no archive column carries","nodes":[{"primitive":{"type":"SMA","name":"fast","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":3}}]}},{"primitive":{"type":"SMA","name":"slow","bound":[{"pos":0,"name":"length","kind":"I64","value":{"I64":8}}]}},{"primitive":{"type":"Sub","name":"sub"}},{"primitive":{"type":"Bias","name":"bias","bound":[{"pos":0,"name":"scale","kind":"F64","value":{"F64":0.5}}]}}],"edges":[{"from":0,"to":2,"slot":0,"from_field":0},{"from":1,"to":2,"slot":1,"from_field":0},{"from":2,"to":3,"slot":0,"from_field":0}],"input_roles":[{"name":"sentiment","targets":[{"node":0,"slot":0},{"node":1,"slot":0}],"source":"F64"}],"output":[{"node":3,"field":0,"name":"bias"}],"taps":[{"name":"spread","from":{"node":2,"field":0}}]}} \ No newline at end of file diff --git a/fieldtests/milestone-safe-to-embed/m4_0_run_all.sh b/fieldtests/milestone-safe-to-embed/m4_0_run_all.sh new file mode 100644 index 0000000..f4047ab --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_0_run_all.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +# Fieldtest, milestone 39 ("safe to embed") — the whole session, replayed. +# +# Reproduces every example in this directory from a clean checkout, in the +# order a downstream consumer met them. Run it from THIS directory: +# +# bash m4_0_run_all.sh +# +# Prerequisites: `cargo build --workspace --release` at the repo root, the +# Pepperstone archive mounted (GER40 M1 for Sep 2024), and — for example 4's +# stale-dylib probe — `git worktree add --detach /tmp/aura-stale d87f534`. +set -u +HERE=$(cd "$(dirname "$0")" && pwd) +AURA=$HERE/../../target/release/aura + +cd "$HERE" +[ -d lab ] || $AURA new lab +cd lab + +echo "=== build the fixtures (canonical authoring form: op-scripts) ===" +for s in tapped open blind unbindable; do + case $s in + tapped) src=m4_1_tapped_signal.ops.json; out=embed-probe.json ;; + open) src=m4_1_open_signal.ops.json; out=open-probe.json ;; + blind) src=m4_1_blind_signal.ops.json; out=blind-probe.json ;; + unbindable) src=m4_1_unbindable_signal.ops.json; out=unbindable-probe.json ;; + esac + $AURA graph build < "../$src" > "blueprints/$out" || echo "graph build failed for $src" +done +$AURA graph register blueprints/embed-probe.json + +echo +echo "=== example 1 — refusals are values (library face) ===" +cargo run -q --manifest-path ../embed-host/Cargo.toml --bin m4_1_refusals_are_values +echo "host exit: $?" + +echo +echo "=== example 2 — reproduce returns its report ===" +$AURA process register ../m4_2_process_sweep_only.json +$AURA campaign register ../m4_2_campaign_ger40.json +$AURA exec ../m4_2_campaign_ger40.json > /dev/null +FAMILY=$($AURA runs families | tail -1 | sed 's/.*"family_id":"\([^"]*\)".*/\1/') +echo "family: $FAMILY" +cargo run -q --manifest-path ../embed-host/Cargo.toml --bin m4_2_reproduce_as_data -- "$FAMILY" +bash ../m4_2_divergence_probe.sh "$FAMILY" + +echo +echo "=== example 3 — the CLI exit-class partition ===" +bash ../m4_3_exit_classes.sh + +echo +echo "=== example 4 — the compatibility contract ===" +$AURA nodes new lab-nodes 2>/dev/null || echo "(node crate already attached)" +bash ../m4_4_stale_dylib_probe.sh +echo "--- and the external, rev-pinned embedding:" +( cd ../external-embed && CARGO_TARGET_DIR=/tmp/m4-ext-target cargo run -q ) diff --git a/fieldtests/milestone-safe-to-embed/m4_1_blind_signal.ops.json b/fieldtests/milestone-safe-to-embed/m4_1_blind_signal.ops.json new file mode 100644 index 0000000..bf19f0c --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_1_blind_signal.ops.json @@ -0,0 +1,73 @@ +[ + { + "op": "name", + "name": "blind-probe" + }, + { + "op": "doc", + "text": "the same graph with neither a bias output nor a declared tap" + }, + { + "op": "source", + "role": "price", + "kind": "F64" + }, + { + "op": "add", + "type": "SMA", + "name": "fast", + "bind": { + "length": { + "I64": 3 + } + } + }, + { + "op": "add", + "type": "SMA", + "name": "slow", + "bind": { + "length": { + "I64": 8 + } + } + }, + { + "op": "feed", + "role": "price", + "into": [ + "fast.series", + "slow.series" + ] + }, + { + "op": "add", + "type": "Sub", + "name": "sub" + }, + { + "op": "connect", + "from": "fast.value", + "to": "sub.lhs" + }, + { + "op": "connect", + "from": "slow.value", + "to": "sub.rhs" + }, + { + "op": "add", + "type": "Bias", + "name": "bias", + "bind": { + "scale": { + "F64": 0.5 + } + } + }, + { + "op": "connect", + "from": "sub.value", + "to": "bias.signal" + } +] diff --git a/fieldtests/milestone-safe-to-embed/m4_1_open_signal.ops.json b/fieldtests/milestone-safe-to-embed/m4_1_open_signal.ops.json new file mode 100644 index 0000000..73802ce --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_1_open_signal.ops.json @@ -0,0 +1,68 @@ +[ + { + "op": "name", + "name": "open-probe" + }, + { + "op": "doc", + "text": "the same spread-to-bias signal with every knob left open" + }, + { + "op": "source", + "role": "price", + "kind": "F64" + }, + { + "op": "add", + "type": "SMA", + "name": "fast" + }, + { + "op": "add", + "type": "SMA", + "name": "slow" + }, + { + "op": "feed", + "role": "price", + "into": [ + "fast.series", + "slow.series" + ] + }, + { + "op": "add", + "type": "Sub", + "name": "sub" + }, + { + "op": "connect", + "from": "fast.value", + "to": "sub.lhs" + }, + { + "op": "connect", + "from": "slow.value", + "to": "sub.rhs" + }, + { + "op": "add", + "type": "Bias", + "name": "bias" + }, + { + "op": "connect", + "from": "sub.value", + "to": "bias.signal" + }, + { + "op": "tap", + "from": "sub.value", + "as": "spread" + }, + { + "op": "expose", + "from": "bias.bias", + "as": "bias" + } +] diff --git a/fieldtests/milestone-safe-to-embed/m4_1_tapped_signal.ops.json b/fieldtests/milestone-safe-to-embed/m4_1_tapped_signal.ops.json new file mode 100644 index 0000000..4650dfa --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_1_tapped_signal.ops.json @@ -0,0 +1,15 @@ +[ + {"op": "name", "name": "embed-probe"}, + {"op": "doc", "text": "fast/slow SMA spread clamped to a bias, with the raw spread tapped"}, + {"op": "source", "role": "price", "kind": "F64"}, + {"op": "add", "type": "SMA", "name": "fast", "bind": {"length": {"I64": 3}}}, + {"op": "add", "type": "SMA", "name": "slow", "bind": {"length": {"I64": 8}}}, + {"op": "feed", "role": "price", "into": ["fast.series", "slow.series"]}, + {"op": "add", "type": "Sub", "name": "sub"}, + {"op": "connect", "from": "fast.value", "to": "sub.lhs"}, + {"op": "connect", "from": "slow.value", "to": "sub.rhs"}, + {"op": "add", "type": "Bias", "name": "bias", "bind": {"scale": {"F64": 0.5}}}, + {"op": "connect", "from": "sub.value", "to": "bias.signal"}, + {"op": "tap", "from": "sub.value", "as": "spread"}, + {"op": "expose", "from": "bias.bias", "as": "bias"} +] diff --git a/fieldtests/milestone-safe-to-embed/m4_1_unbindable_signal.ops.json b/fieldtests/milestone-safe-to-embed/m4_1_unbindable_signal.ops.json new file mode 100644 index 0000000..e3f4dca --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_1_unbindable_signal.ops.json @@ -0,0 +1,83 @@ +[ + { + "op": "name", + "name": "unbindable-probe" + }, + { + "op": "doc", + "text": "the same signal fed by a root role no archive column carries" + }, + { + "op": "source", + "role": "sentiment", + "kind": "F64" + }, + { + "op": "add", + "type": "SMA", + "name": "fast", + "bind": { + "length": { + "I64": 3 + } + } + }, + { + "op": "add", + "type": "SMA", + "name": "slow", + "bind": { + "length": { + "I64": 8 + } + } + }, + { + "op": "feed", + "role": "sentiment", + "into": [ + "fast.series", + "slow.series" + ] + }, + { + "op": "add", + "type": "Sub", + "name": "sub" + }, + { + "op": "connect", + "from": "fast.value", + "to": "sub.lhs" + }, + { + "op": "connect", + "from": "slow.value", + "to": "sub.rhs" + }, + { + "op": "add", + "type": "Bias", + "name": "bias", + "bind": { + "scale": { + "F64": 0.5 + } + } + }, + { + "op": "connect", + "from": "sub.value", + "to": "bias.signal" + }, + { + "op": "tap", + "from": "sub.value", + "as": "spread" + }, + { + "op": "expose", + "from": "bias.bias", + "as": "bias" + } +] diff --git a/fieldtests/milestone-safe-to-embed/m4_2_campaign_ger40.json b/fieldtests/milestone-safe-to-embed/m4_2_campaign_ger40.json new file mode 100644 index 0000000..6830cae --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_2_campaign_ger40.json @@ -0,0 +1,20 @@ +{ + "format_version": 1, + "kind": "campaign", + "name": "m4-embed-reproduce-probe", + "seed": 7, + "data": { + "instruments": ["GER40"], + "windows": [ { "from_ms": 1725148800000, "to_ms": 1725753600000 } ] + }, + "strategies": [ + { + "ref": { "content_id": "00fd2bc044fe4c9b947aac97da740e6d08bf4103ec376058f0cf52590f7863aa" }, + "axes": { + "fast.length": { "kind": "I64", "values": [2, 3] } + } + } + ], + "process": { "ref": { "content_id": "e4a97c684686c2982f034a27dabb7f26e54c76d7578dd985eaa41ef67c77f275" } }, + "presentation": { "persist_taps": [], "emit": ["family_table"] } +} diff --git a/fieldtests/milestone-safe-to-embed/m4_2_divergence_probe.sh b/fieldtests/milestone-safe-to-embed/m4_2_divergence_probe.sh new file mode 100644 index 0000000..6c0df3a --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_2_divergence_probe.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# Fieldtest, milestone 39, axis 1 — divergence must come back as DATA. +# +# A downstream consumer's realistic worry: the stored family in the registry +# was recorded by a different engine state, so re-deriving it no longer +# matches. We simulate exactly that observable — a stored metric that the +# re-run does not reproduce — by editing the run registry's stored value +# (the registry is a plain JSONL artifact, C18), then asking both faces the +# same question: the embedding library and the `aura` binary. +# +# Run from the `lab/` project directory. +set -u +AURA=${AURA:-../../../target/release/aura} +FAMILY=${1:-ff72bba2-0-GER40-w0-r0-s0-0} +STORE=runs/families.jsonl + +cp "$STORE" "$STORE.orig" +python3 - "$STORE" "$FAMILY" <<'PY' +import json, sys +p, handle = sys.argv[1], sys.argv[2] +family, run = handle.rsplit("-", 1) +lines = open(p).read().splitlines() +for i, line in enumerate(lines): + d = json.loads(line) + if d["family"] == family and str(d["run"]) == run and d["ordinal"] == 0: + # nudge one stored metric of member 0 — nothing else + d["report"]["metrics"]["r"]["expectancy_r"] += 1.0 + lines[i] = json.dumps(d) + break +else: + sys.exit(f"no member 0 of {handle} in {p}") +open(p, "w").write("\n".join(lines) + "\n") +PY +echo "--- tampered: member 0's stored expectancy_r shifted by +1.0" + +echo "--- library face (embedding host):" +cargo run -q --manifest-path ../embed-host/Cargo.toml --bin m4_2_reproduce_as_data -- "$FAMILY" 2>&1 | sed -n '1,4p' +echo " host exit: $?" + +echo "--- CLI face:" +"$AURA" reproduce "$FAMILY" +echo " cli exit: $?" + +mv "$STORE.orig" "$STORE" +echo "--- restored" diff --git a/fieldtests/milestone-safe-to-embed/m4_2_process_sweep_only.json b/fieldtests/milestone-safe-to-embed/m4_2_process_sweep_only.json new file mode 100644 index 0000000..25dbf36 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_2_process_sweep_only.json @@ -0,0 +1,7 @@ +{ + "format_version": 1, + "kind": "process", + "name": "m4-explore-only-sweep", + "description": "Selection-free sweep: the family itself is the result — the smallest thing that persists a reproducible family.", + "pipeline": [ { "block": "std::sweep" } ] +} diff --git a/fieldtests/milestone-safe-to-embed/m4_3_exit_classes.sh b/fieldtests/milestone-safe-to-embed/m4_3_exit_classes.sh new file mode 100644 index 0000000..cc60418 --- /dev/null +++ b/fieldtests/milestone-safe-to-embed/m4_3_exit_classes.sh @@ -0,0 +1,89 @@ +#!/usr/bin/env bash +# Fieldtest, milestone 39, axis 2 — the CLI exit-class partition. +# +# The downstream task: I am writing a CI wrapper around `aura` and I want to +# branch on the failure CLASS without parsing stderr, exactly as C14 promises +# (2 = the content of what argv named, 1 = the environment/recorded state, +# 3 = campaign completed with failed cells, 0 = success). Every probe below +# is a refusal a real author trips over; `want` is the class I derived from +# docs/authoring-guide.md's exit-code passage + C14 BEFORE running it. +# +# Run from the `lab/` project directory. +set -u +AURA=${AURA:-../../../target/release/aura} +BP=blueprints/embed-probe.json +tmp=$(mktemp -d) + +pass=0; fail=0 +probe() { # probe