{
  "format_version": 1,
  "source_repository": "https://github.com/ChaseHendrick/undeciphered-texts",
  "source_git_commit": "7587352b31d65578a71a2fbef6c1b035073e318a",
  "source_dirty": false,
  "source_sha256": "36e7e4851b9c8afe354e915daa1dd43b0491ca2f3238a281ccd5371a41badd0a",
  "model_sha256": "d8c985dfdaf2d1dd0e17cfdb8412d0f947221b3f9e30318169d9183145c5c825",
  "archive_sha256": "476e67338b6f215fb0cd6b25ec91f1c94ba7d3d06763be4af6bd2c021a4d912f",
  "archive_bytes": 982302,
  "uncompressed_bytes": 3248829,
  "pyodide_version": "314.0.7",
  "pyodide_documentation": "https://pyodide.org/en/stable/usage/webworker.html",
  "files": [
    {
      "path": "LICENSE",
      "bytes": 1071,
      "sha256": "0d092e78edc55e20bdec1407c4e7d73ab126119e62096fa57d0814ac4a9d288f"
    },
    {
      "path": "engine/__init__.py",
      "bytes": 389,
      "sha256": "e8c05f843430ba001446601c1eaa1c0ec1d3246bafc9dd9a2be2e443ee429498"
    },
    {
      "path": "engine/alphabet.py",
      "bytes": 1060,
      "sha256": "b499b27b3a7303984f35f585166087da896156f62b77be5d0271f9978a54f09d"
    },
    {
      "path": "engine/ciphers.py",
      "bytes": 6247,
      "sha256": "e7b12ca561a3ef63b627112835ca29a4e6872152ffdd3b286060bc0a28c5b027"
    },
    {
      "path": "engine/data/english.txt",
      "bytes": 10923,
      "sha256": "829344587eacb985b89bba373a6ffd8059710373f2509a85587e02ad2ff16903"
    },
    {
      "path": "engine/data/hill_inference_certificate.json",
      "bytes": 1841,
      "sha256": "c6d8499cecc6d1080a5fc2eb79665b7e8e2868342c52afd5a3627ce95afa9bae"
    },
    {
      "path": "engine/data/neural_router_v2_audit.json",
      "bytes": 2091,
      "sha256": "864c619a9c24ec070b1a3eca010e8f7e7a7dcdcdd68a612d6e0cb0d843b4dfd5"
    },
    {
      "path": "engine/data/neural_router_v2_metrics.json",
      "bytes": 4267,
      "sha256": "cff3728b057de02b0f06e0aaf86f1a4063e3f93efbebd9ddb18b28622a7a169e"
    },
    {
      "path": "engine/data/neural_router_v2_weights.json",
      "bytes": 2577717,
      "sha256": "d8c985dfdaf2d1dd0e17cfdb8412d0f947221b3f9e30318169d9183145c5c825"
    },
    {
      "path": "engine/data/neural_router_weights.json",
      "bytes": 80471,
      "sha256": "30ea97fba25a30e0ad3f065dd610fa7c83d7bed51ac126f3176002c31c173e93"
    },
    {
      "path": "engine/data/persona_adversary_solver_certificate.json",
      "bytes": 1153,
      "sha256": "df08a9c88c53b5ac9548df8099f944500bf37a91db7205f3123dc428735dbd47"
    },
    {
      "path": "engine/data/persona_cartographer_solver_certificate.json",
      "bytes": 1056,
      "sha256": "3961a3a9d945b4d85ad8d16c44c1409ab3dde935282cf8b9df186a7c5ab7b37c"
    },
    {
      "path": "engine/data/persona_detective_solver_certificate.json",
      "bytes": 1023,
      "sha256": "d8ef84b2cc8c7451dffe72e6d288914f6d91a94886a3c46041680ce2961d8a1a"
    },
    {
      "path": "engine/data/persona_emperor_solver_certificate.json",
      "bytes": 1641,
      "sha256": "7e37a4ce866c83d4247d04c18acbcdc006f5a0dd836df656f039f9ade19ee207"
    },
    {
      "path": "engine/data/persona_hallucinogens_solver_certificate.json",
      "bytes": 1209,
      "sha256": "130f18ef1061b76431d1e25604a5d37458399976eacf9642dfbf7d7669959d80"
    },
    {
      "path": "engine/data/persona_inheritance_solver_certificate.json",
      "bytes": 3818,
      "sha256": "36c073293c57f0d3e9f11c9813e574065d36f244e8588dcd08601bacd82bbfdf"
    },
    {
      "path": "engine/data/persona_mechanic_solver_certificate.json",
      "bytes": 2361,
      "sha256": "c94af1c04adbae11bc64554bc82be8a61b4664f0d8fe29f4dd0c634c145f8ba9"
    },
    {
      "path": "engine/data/persona_normal_man_solver_certificate.json",
      "bytes": 1787,
      "sha256": "98c5d771e1b837fdc0c4c0f3d8357e663427e26eb4b340da1213e7c2fb037035"
    },
    {
      "path": "engine/data/persona_pacifist_solver_certificate.json",
      "bytes": 2501,
      "sha256": "e23d8d6156ed9b0f43afea32dc6ba32939e0375af2f0a7ad55e9a03e223c847d"
    },
    {
      "path": "engine/data/persona_skeptic_solver_certificate.json",
      "bytes": 1364,
      "sha256": "66eafe20d7545e042334cbed03bbbe74a7d210a09af73ea8689f0839a082f87d"
    },
    {
      "path": "engine/data/transposition_ensemble_certificate.json",
      "bytes": 1123,
      "sha256": "e9a9d68a5ec5d534137dd89d4958e02598d8568a384e136cad2f4efafe061d63"
    },
    {
      "path": "engine/german.py",
      "bytes": 5293,
      "sha256": "c281d356d315dcda48e65aa03a25d5d9a7ab4e83584f046b850f6f8b5f72d62b"
    },
    {
      "path": "engine/language.py",
      "bytes": 4304,
      "sha256": "779e12207fd3f9e79369f236b38138e0eb6b7d4473c00024146ed7813f4c56a3"
    },
    {
      "path": "engine/neural.py",
      "bytes": 11318,
      "sha256": "1f1ec96add90629c50897b1e1414ee7d771c957d9581ab54b3e402fca1f31d28"
    },
    {
      "path": "engine/neural_features.py",
      "bytes": 8489,
      "sha256": "60419c236e4ad76476bd657cf09b3a4145ef6137ac87c6904845b864a6fa261f"
    },
    {
      "path": "engine/neural_grade.py",
      "bytes": 44463,
      "sha256": "c080c237eb6b2d706d02f102a8a016128b338cb065604ff61338975d5fe8df35"
    },
    {
      "path": "engine/neural_m209_features.py",
      "bytes": 5683,
      "sha256": "3d84aadd745cb58878a41e1e351ff6635d8aadf8e3309a815a029da8235b7b3f"
    },
    {
      "path": "engine/neural_router_v2.py",
      "bytes": 41029,
      "sha256": "a12872fee10debab62058ae16d2133316055ac29cc4f14570f7d5704482fd9d8"
    },
    {
      "path": "engine/neural_training.py",
      "bytes": 10036,
      "sha256": "95a8bd73f2de4b60316d2472428c2d20095d814ed5fca40ea9c9271332f2fc2b"
    },
    {
      "path": "engine/persona_solver_common.py",
      "bytes": 4173,
      "sha256": "0e447932f896011b9a43721daec6ab94cd1ad482e590a5646c01eda76a9b1b58"
    },
    {
      "path": "engine/persona_solvers.py",
      "bytes": 10612,
      "sha256": "91c42a2c92e5f3ed8103b28bf38150c473f7ff3530db2c7cdab7d7e762c5f96c"
    },
    {
      "path": "engine/result.py",
      "bytes": 654,
      "sha256": "23a068d058e83f035c922e2d6d067351d0b039e46ea7bb23f1b6006ee199e757"
    },
    {
      "path": "engine/reverse_engineer.py",
      "bytes": 7570,
      "sha256": "0af970b7aafa5784929878d1ed7700b664d582be8bc5ecebc816f1226f3d6741"
    },
    {
      "path": "engine/solver_net.py",
      "bytes": 29213,
      "sha256": "02c40aeecc9a239ba67b90cda6107479a0227996ddaee94f79a74391b3779800"
    },
    {
      "path": "engine/solver_reasoning.py",
      "bytes": 25778,
      "sha256": "e14239810bcf6715fb43d8321c47630426f44d9c3a1287a4e226fea9db8daf60"
    },
    {
      "path": "engine/solver_scheduler.py",
      "bytes": 12303,
      "sha256": "7dd91a9c43789bac5a9855ee5b8a5e3945f0b221d96b5a7abacd46b9d72bde8d"
    },
    {
      "path": "engine/solvers/__init__.py",
      "bytes": 815,
      "sha256": "ce21d7845794d324002f0a34a30a66ab4b2c253c27698651ca5619d5f6fe1f1b"
    },
    {
      "path": "engine/solvers/adfgvx.py",
      "bytes": 9693,
      "sha256": "6d656025e15056dae2ccd329e7be1f11e767a28c229fc2a0a3b253e3be617b57"
    },
    {
      "path": "engine/solvers/affine.py",
      "bytes": 4378,
      "sha256": "b5ae983cca7157668b785aeed5a7d0bd2b7e3c513afc163601ce8a64e901f9f4"
    },
    {
      "path": "engine/solvers/autokey.py",
      "bytes": 4167,
      "sha256": "915ab0d7c7013789c3ed8f7f38cbe42711e8b02204a1c5cea313da53e77ecb82"
    },
    {
      "path": "engine/solvers/autokey_inference.py",
      "bytes": 12861,
      "sha256": "5f8929f6d8e97ca0dc658bb1bbd91a4bf876884638a3129b4848cb43054e644c"
    },
    {
      "path": "engine/solvers/beam_search.py",
      "bytes": 7980,
      "sha256": "f9ea9d93dd1f826760446cf09915bd85dac3763206ad9a5e9cdc4e74e25fccff"
    },
    {
      "path": "engine/solvers/beaufort.py",
      "bytes": 3659,
      "sha256": "444b7a01ea4580c3e5c106af084ff2c52003eeaec2a9de3b54ab5d3b2f7253d4"
    },
    {
      "path": "engine/solvers/bifid.py",
      "bytes": 5554,
      "sha256": "cfc70862c69a3754e4861fc15444e7a8fdae192d1b08ff4b490b2e6b542a99e7"
    },
    {
      "path": "engine/solvers/caesar.py",
      "bytes": 1321,
      "sha256": "e6e708456f9990a62023b56343374273de323cd7dd9e241278105a3092a87bd5"
    },
    {
      "path": "engine/solvers/columnar.py",
      "bytes": 8815,
      "sha256": "d1ccfc21ef567cb4e6215f6209b547013a3e90bf9c60308dec0e4b24ca63f63e"
    },
    {
      "path": "engine/solvers/condi.py",
      "bytes": 9204,
      "sha256": "f0dfa2d6a97320ac36f6ea1371754b63ca53d3b3bc8483d68169f65fff43d3ab"
    },
    {
      "path": "engine/solvers/crib.py",
      "bytes": 3335,
      "sha256": "9d9f1f3530c903317a9164a61e642f275e89732d91af51eff54c037c88d7a5d0"
    },
    {
      "path": "engine/solvers/enigma.py",
      "bytes": 11920,
      "sha256": "67336acb67e6b92303a44739d5ee24b4909231616eb8935bcb2f569dfb6b3c93"
    },
    {
      "path": "engine/solvers/four_square.py",
      "bytes": 6134,
      "sha256": "0ce098b39f47592f95c0056f8036d7eb6b4bad7a5e9afbd1485b8efe8fcbc8ff"
    },
    {
      "path": "engine/solvers/fractionated_morse.py",
      "bytes": 7751,
      "sha256": "e637dad43640140413a29a3f70211797fef290c504e6d551a57af8268f99d301"
    },
    {
      "path": "engine/solvers/hill.py",
      "bytes": 5705,
      "sha256": "81209c45d2a295e01b746bcf0a4f587fdd0813a4561310d67f1866b2bc10fa33"
    },
    {
      "path": "engine/solvers/hill_inference.py",
      "bytes": 9228,
      "sha256": "750330e7941861912f5cd2474078990e09b6283160a250dd566681803208b9c8"
    },
    {
      "path": "engine/solvers/keel_sieve.py",
      "bytes": 3511,
      "sha256": "032ad5dbb89b79bf4bbb0c954d6854347ee207832a611f31d537eff9bf83550c"
    },
    {
      "path": "engine/solvers/keyed_vigenere.py",
      "bytes": 5617,
      "sha256": "4231e447970f5d38aae554e3ab2fad94083ca29d1cda62b08d0d6fdd8017a5f0"
    },
    {
      "path": "engine/solvers/lumen_braid.py",
      "bytes": 4276,
      "sha256": "51f6000f9381f7993eec229921b1b24a25441240824d90ad53c34e0eb528201a"
    },
    {
      "path": "engine/solvers/m209.py",
      "bytes": 10555,
      "sha256": "66488db9a5dd6aabde08af5b12f772dec4cb34ec13710a43af552a115a047106"
    },
    {
      "path": "engine/solvers/morbit.py",
      "bytes": 5559,
      "sha256": "a07e4f132b30182a628eba410b3dea3504aa73747888653f17c659a4a862d7fb"
    },
    {
      "path": "engine/solvers/morse_constraints.py",
      "bytes": 12124,
      "sha256": "586429bc6beab4d687b00619ae8e6df219b31b22a6b3b8ee067b23b55d2c554d"
    },
    {
      "path": "engine/solvers/pacifist.py",
      "bytes": 9718,
      "sha256": "dd589747fed9c02931a4b81a9412b06e934cf5a86c4d41c9944c477c8a304762"
    },
    {
      "path": "engine/solvers/persona_adversary.py",
      "bytes": 4610,
      "sha256": "007fed6c872bd0f02a1c547741140f488fd178824d465cf1a045a4330dd47cae"
    },
    {
      "path": "engine/solvers/persona_cartographer.py",
      "bytes": 2034,
      "sha256": "39a8adf1e4a5e62119e129af270f614a1a62d1a9de50783e7f03c7c81fcbb8aa"
    },
    {
      "path": "engine/solvers/persona_court_notice.py",
      "bytes": 4203,
      "sha256": "40d1dc2ef030a96a6b6ba784d6ea473de992f57f044fd727f7148987b0003c93"
    },
    {
      "path": "engine/solvers/persona_detective.py",
      "bytes": 6181,
      "sha256": "8aad6e409ad999593ea144207a2385e4dae6b6d609598a627102acc159eecc1d"
    },
    {
      "path": "engine/solvers/persona_hallucinogens.py",
      "bytes": 9400,
      "sha256": "7159cf8295a9f2a4277cf978a24c2d115447281fe3ecf76fe8f097a52b42a9b0"
    },
    {
      "path": "engine/solvers/persona_inheritance.py",
      "bytes": 14195,
      "sha256": "8ca8bf27f7b0d66d00ce4c9410f871afb8dac7387e7adcd4481e7d005555ed85"
    },
    {
      "path": "engine/solvers/persona_mechanic.py",
      "bytes": 10546,
      "sha256": "58fb882e3e066088375ba24839b49a4aa60ace1e3cf6c51e3d1c91eef52cf815"
    },
    {
      "path": "engine/solvers/persona_normal_man.py",
      "bytes": 2915,
      "sha256": "9ef18332c4f33ba6eba8ab6f90b722669e9407b7762f773cb465d17a6b2da1aa"
    },
    {
      "path": "engine/solvers/persona_skeptic.py",
      "bytes": 8592,
      "sha256": "ba0c28649678eff244a9c8be15d5418ac17d9bb9fc9cad179b7a848c2109c245"
    },
    {
      "path": "engine/solvers/playfair.py",
      "bytes": 5701,
      "sha256": "5951abae0fc81f60a773cdb5fbae1cf38cf2ec9447bfb09edad2f46e4517ea6f"
    },
    {
      "path": "engine/solvers/pollux.py",
      "bytes": 3835,
      "sha256": "b972e78a27195232d3411a51c3d516e0e42d575c616d6400d990c7531378085e"
    },
    {
      "path": "engine/solvers/porta.py",
      "bytes": 3957,
      "sha256": "aa4c020bf4bbfcca98041cb374d56d05e2fa60171d87a61a4a1c42fda357c6be"
    },
    {
      "path": "engine/solvers/prism_latch.py",
      "bytes": 4869,
      "sha256": "189787a3da13b207b1702d06123ec5bf6661ecd2aca57c1199c9b92a6ac0531b"
    },
    {
      "path": "engine/solvers/progressive_key.py",
      "bytes": 8403,
      "sha256": "8a88eee25c227a958d3690d135e9665a3530cba0d4f9ab594019a5ac4f8eace5"
    },
    {
      "path": "engine/solvers/rail_fence.py",
      "bytes": 4768,
      "sha256": "33cceb8655711d930f911f22035f05f40058fad368f726d87c9c771750ab2ff9"
    },
    {
      "path": "engine/solvers/redefence.py",
      "bytes": 8400,
      "sha256": "4ab6b44888c2ce4cdcb878ea6248d3c5e6f90e58fd5ca95224168689b5f518ba"
    },
    {
      "path": "engine/solvers/route.py",
      "bytes": 8303,
      "sha256": "56d0da3cdaf6ae5d91bd368d1bf9362d4caf9ec5e60655e98d9433965bd16476"
    },
    {
      "path": "engine/solvers/substitution.py",
      "bytes": 5790,
      "sha256": "ae34065237b1c2e50fe0ec7e89e8785b2201bc202806b5bb0ccf9fb39da70756"
    },
    {
      "path": "engine/solvers/two_square.py",
      "bytes": 13195,
      "sha256": "ebd531e49f4e955155f08eac79feac40f3d86c8cdf825da2d86ba65d7472e5df"
    },
    {
      "path": "engine/solvers/vigenere.py",
      "bytes": 3130,
      "sha256": "109e9605bc3cc9831e3f1d79593543698613a6821890c68c751c30be91e74555"
    },
    {
      "path": "engine/stats.py",
      "bytes": 3348,
      "sha256": "dfa48db5f9c5f04c067699c422fc0263b1445441a40cfe2ab2b2d80108983d6c"
    },
    {
      "path": "engine/tool_registry.py",
      "bytes": 12493,
      "sha256": "860d8960372701a6f1feed6651ee14df52ba312b8d0353f3a9441db2f661f339"
    },
    {
      "path": "engine/transposition_ensemble.py",
      "bytes": 10050,
      "sha256": "7f43fabbd540b8ecb769d17e7c6778b4413bd7cf680817f041f92d22c03edcf0"
    }
  ],
  "tools": [
    "persona-council",
    "normal-man",
    "emperor",
    "inheritance",
    "hallucinogens",
    "pacifist",
    "detective",
    "cartographer",
    "mechanic",
    "adversary",
    "skeptic",
    "hill-inference",
    "transposition-ensemble"
  ],
  "source_policy": "Source license, explicit Python entry points and their static engine imports; explicit data files. No cases, tests, private work, training corpus files, native OCR or SMT entry point.",
  "limits": {
    "max_letters": 512,
    "max_checks": 10000,
    "max_candidates": 10,
    "max_period": 16,
    "run_seconds": 30
  },
  "period_limit_scope": "The exposed max_period option is capped at16. Existing exact-autokey persona branches test up to32 primer lengths inside the same global work budget; caller keyword guesses are limited to32 letters."
}
