[{"data":1,"prerenderedAt":1616},["ShallowReactive",2],{"docs-navigation":3,"docs-page-\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Frust":252,"docs-surround-\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Frust":1613},[4],{"title":5,"path":6,"stem":7,"children":8,"page":251},"Docs","\u002Fdocs","docs",[9,36,101,197,232],{"title":10,"path":11,"stem":12,"children":13},"GET STARTED","\u002Fdocs\u002Fget-started","docs\u002F1.get-started\u002F1.index",[14,16,20,24,28,32],{"title":15,"path":11,"stem":12},"Welcome",{"title":17,"path":18,"stem":19},"Quickstart","\u002Fdocs\u002Fget-started\u002Fquickstart","docs\u002F1.get-started\u002F2.quickstart",{"title":21,"path":22,"stem":23},"API","\u002Fdocs\u002Fget-started\u002Fapi","docs\u002F1.get-started\u002F3.api",{"title":25,"path":26,"stem":27},"SDKs and CLI","\u002Fdocs\u002Fget-started\u002Fsdks-cli","docs\u002F1.get-started\u002F4.sdks-cli",{"title":29,"path":30,"stem":31},"Sandbox testing","\u002Fdocs\u002Fget-started\u002Flocal-development","docs\u002F1.get-started\u002F5.local-development",{"title":33,"path":34,"stem":35},"Authentication","\u002Fdocs\u002Fget-started\u002Fauthentication","docs\u002F1.get-started\u002F6.authentication",{"title":37,"path":38,"stem":39,"children":40},"FUNDAMENTALS","\u002Fdocs\u002Ffundamentals","docs\u002F2.fundamentals\u002F01.index",[41,43,47,51,55,59,63,67,71,75],{"title":42,"path":38,"stem":39},"Fundamentals",{"title":44,"path":45,"stem":46},"Architecture","\u002Fdocs\u002Ffundamentals\u002Farchitecture","docs\u002F2.fundamentals\u002F02.architecture",{"title":48,"path":49,"stem":50},"Memory model","\u002Fdocs\u002Ffundamentals\u002Fmemory-model","docs\u002F2.fundamentals\u002F03.memory-model",{"title":52,"path":53,"stem":54},"Compression","\u002Fdocs\u002Ffundamentals\u002Fcompression","docs\u002F2.fundamentals\u002F04.compression",{"title":56,"path":57,"stem":58},"RAG and cached context","\u002Fdocs\u002Ffundamentals\u002Frag-cag","docs\u002F2.fundamentals\u002F05.rag-cag",{"title":60,"path":61,"stem":62},"Context cache","\u002Fdocs\u002Ffundamentals\u002Fcontext-cache","docs\u002F2.fundamentals\u002F06.context-cache",{"title":64,"path":65,"stem":66},"Security","\u002Fdocs\u002Ffundamentals\u002Fsecurity","docs\u002F2.fundamentals\u002F07.security",{"title":68,"path":69,"stem":70},"Languages","\u002Fdocs\u002Ffundamentals\u002Flanguages","docs\u002F2.fundamentals\u002F08.languages",{"title":72,"path":73,"stem":74},"UI patterns","\u002Fdocs\u002Ffundamentals\u002Fui","docs\u002F2.fundamentals\u002F09.ui",{"title":76,"path":77,"stem":78,"children":79},"Global, Regional, and Jurisdictional Memory","\u002Fdocs\u002Ffundamentals\u002Fdata-placement","docs\u002F2.fundamentals\u002F10.data-placement\u002F1.index",[80,81,85,89,93,97],{"title":76,"path":77,"stem":78},{"title":82,"path":83,"stem":84},"TypeScript \u002F JavaScript","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Ftypescript","docs\u002F2.fundamentals\u002F10.data-placement\u002F2.typescript",{"title":86,"path":87,"stem":88},"Python","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fpython","docs\u002F2.fundamentals\u002F10.data-placement\u002F3.python",{"title":90,"path":91,"stem":92},"PHP","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fphp","docs\u002F2.fundamentals\u002F10.data-placement\u002F4.php",{"title":94,"path":95,"stem":96},"Go","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Fgo","docs\u002F2.fundamentals\u002F10.data-placement\u002F5.go",{"title":98,"path":99,"stem":100},"Rust","\u002Fdocs\u002Ffundamentals\u002Fdata-placement\u002Frust","docs\u002F2.fundamentals\u002F10.data-placement\u002F6.rust",{"title":102,"path":103,"stem":104,"children":105},"AGENTS & CODE NUCLEI","\u002Fdocs\u002Fagents","docs\u002F3.agents\u002F01.index",[106,108,112,116,120,124,128,132,136,140,158,193],{"title":107,"path":103,"stem":104},"Agents",{"title":109,"path":110,"stem":111},"Codex Code Nucleus","\u002Fdocs\u002Fagents\u002Fcodex-code-nucleus","docs\u002F3.agents\u002F02.codex-code-nucleus",{"title":113,"path":114,"stem":115},"Claude Code Nucleus","\u002Fdocs\u002Fagents\u002Fclaude-code-nucleus","docs\u002F3.agents\u002F03.claude-code-nucleus",{"title":117,"path":118,"stem":119},"Google Gemini Code Nucleus","\u002Fdocs\u002Fagents\u002Fgoogle-gemini-code-nucleus","docs\u002F3.agents\u002F04.google-gemini-code-nucleus",{"title":121,"path":122,"stem":123},"GitHub Copilot Code Nucleus","\u002Fdocs\u002Fagents\u002Fgithub-copilot-code-nucleus","docs\u002F3.agents\u002F05.github-copilot-code-nucleus",{"title":125,"path":126,"stem":127},"Cursor Code Nucleus","\u002Fdocs\u002Fagents\u002Fcursor-code-nucleus","docs\u002F3.agents\u002F06.cursor-code-nucleus",{"title":129,"path":130,"stem":131},"Windsurf Code Nucleus","\u002Fdocs\u002Fagents\u002Fwindsurf-code-nucleus","docs\u002F3.agents\u002F07.windsurf-code-nucleus",{"title":133,"path":134,"stem":135},"Agent skills","\u002Fdocs\u002Fagents\u002Fagent-skills","docs\u002F3.agents\u002F08.agent-skills",{"title":137,"path":138,"stem":139},"Admin UI prompt","\u002Fdocs\u002Fagents\u002Fadmin-ui-prompt","docs\u002F3.agents\u002F09.admin-ui-prompt",{"title":141,"path":142,"stem":143,"children":144},"Team Code Governance","\u002Fdocs\u002Fagents\u002Fcode-governance","docs\u002F3.agents\u002F10.code-governance\u002F1.index",[145,146,150,154],{"title":141,"path":142,"stem":143},{"title":147,"path":148,"stem":149},"Local Team Setup","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Flocal-team-setup","docs\u002F3.agents\u002F10.code-governance\u002F2.local-team-setup",{"title":151,"path":152,"stem":153},"Language Governance Packs","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Flanguage-packs","docs\u002F3.agents\u002F10.code-governance\u002F3.language-packs",{"title":155,"path":156,"stem":157},"GitHub CI\u002FCD Governance","\u002Fdocs\u002Fagents\u002Fcode-governance\u002Fgithub-cicd","docs\u002F3.agents\u002F10.code-governance\u002F4.github-cicd",{"title":159,"path":160,"stem":161,"children":162},"Memory + Consequence Agents","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F1.index",[163,164,185,189],{"title":159,"path":160,"stem":161},{"title":165,"path":166,"stem":167,"children":168},"End-to-End Agent Example","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F1.index",[169,170,173,176,179,182],{"title":165,"path":166,"stem":167},{"title":82,"path":171,"stem":172},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Ftypescript","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F2.typescript",{"title":86,"path":174,"stem":175},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fpython","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F3.python",{"title":90,"path":177,"stem":178},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fphp","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F4.php",{"title":94,"path":180,"stem":181},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Fgo","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F5.go",{"title":98,"path":183,"stem":184},"\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fend-to-end\u002Frust","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F2.end-to-end\u002F6.rust",{"title":186,"path":187,"stem":188},"Industry Agent Use Cases","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Findustry-use-cases","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F3.industry-use-cases",{"title":190,"path":191,"stem":192},"Historical Actions and Learning","\u002Fdocs\u002Fagents\u002Fmemory-consequence-agents\u002Fhistorical-learning","docs\u002F3.agents\u002F11.memory-consequence-agents\u002F4.historical-learning",{"title":194,"path":195,"stem":196},"Consequence decision support","\u002Fdocs\u002Fagents\u002Fconsequence","docs\u002F3.agents\u002F12.consequence",{"title":198,"path":199,"stem":200,"children":201},"MODEL PROVIDERS","\u002Fdocs\u002Fproviders","docs\u002F4.providers\u002F1.index",[202,204,208,212,216,220,224,228],{"title":203,"path":199,"stem":200},"Providers",{"title":205,"path":206,"stem":207},"OpenAI and Azure OpenAI","\u002Fdocs\u002Fproviders\u002Fopenai","docs\u002F4.providers\u002F2.openai",{"title":209,"path":210,"stem":211},"Anthropic Claude","\u002Fdocs\u002Fproviders\u002Fanthropic","docs\u002F4.providers\u002F3.anthropic",{"title":213,"path":214,"stem":215},"Google Gemini and Vertex AI","\u002Fdocs\u002Fproviders\u002Fgoogle-gemini","docs\u002F4.providers\u002F4.google-gemini",{"title":217,"path":218,"stem":219},"OpenAI-compatible providers","\u002Fdocs\u002Fproviders\u002Fopenai-compatible","docs\u002F4.providers\u002F5.openai-compatible",{"title":221,"path":222,"stem":223},"Groq","\u002Fdocs\u002Fproviders\u002Fgroq","docs\u002F4.providers\u002F6.groq",{"title":225,"path":226,"stem":227},"Cohere","\u002Fdocs\u002Fproviders\u002Fcohere","docs\u002F4.providers\u002F7.cohere",{"title":229,"path":230,"stem":231},"Amazon Bedrock","\u002Fdocs\u002Fproviders\u002Famazon-bedrock","docs\u002F4.providers\u002F8.amazon-bedrock",{"title":233,"path":234,"stem":235,"children":236},"CHANGELOG","\u002Fdocs\u002Fchangelog","docs\u002F5.changelog\u002F1.index",[237,239,243,247],{"title":238,"path":234,"stem":235},"Changelog",{"title":240,"path":241,"stem":242},"Roadmap","\u002Fdocs\u002Fchangelog\u002Froadmap","docs\u002F5.changelog\u002F2.roadmap",{"title":244,"path":245,"stem":246},"Release notes","\u002Fdocs\u002Fchangelog\u002Frelease-runbook","docs\u002F5.changelog\u002F3.release-runbook",{"title":248,"path":249,"stem":250},"Testing","\u002Fdocs\u002Fchangelog\u002Ftesting","docs\u002F5.changelog\u002F4.testing",false,{"id":253,"title":98,"body":254,"description":1608,"extension":1609,"meta":1610,"navigation":348,"path":99,"seo":1611,"stem":100,"__hash__":1612},"docs\u002Fdocs\u002F2.fundamentals\u002F10.data-placement\u002F6.rust.md",{"type":255,"value":256,"toc":1603},"minimark",[257,262,271,312,317,831,834,838,1210,1213,1217,1580,1591,1599],[258,259,261],"h1",{"id":260},"rust-data-placement","Rust Data Placement",[263,264,265,266,270],"p",{},"Use Rust 1.85 or newer. The application uses the official SDK for memory and ",[267,268,269],"code",{},"reqwest"," for control-plane endpoints that are not yet exposed as typed SDK methods:",[272,273,278],"pre",{"className":274,"code":275,"language":276,"meta":277,"style":277},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nneutron-ai = \"0.2\"\nreqwest = { version = \"0.13\", default-features = false, features = [\"json\", \"rustls\"] }\nserde_json = \"1.0\"\ntokio = { version = \"1.53\", features = [\"macros\", \"rt-multi-thread\"] }\n","toml","",[267,279,280,288,294,300,306],{"__ignoreMap":277},[281,282,285],"span",{"class":283,"line":284},"line",1,[281,286,287],{},"[dependencies]\n",[281,289,291],{"class":283,"line":290},2,[281,292,293],{},"neutron-ai = \"0.2\"\n",[281,295,297],{"class":283,"line":296},3,[281,298,299],{},"reqwest = { version = \"0.13\", default-features = false, features = [\"json\", \"rustls\"] }\n",[281,301,303],{"class":283,"line":302},4,[281,304,305],{},"serde_json = \"1.0\"\n",[281,307,309],{"class":283,"line":308},5,[281,310,311],{},"tokio = { version = \"1.53\", features = [\"macros\", \"rt-multi-thread\"] }\n",[313,314,316],"h2",{"id":315},"control-plane-helper-and-provisioning","Control-plane helper and provisioning",[272,318,322],{"className":319,"code":320,"language":321,"meta":277,"style":277},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use neutron_ai::{ClientOptions, NeutronAIClient};\nuse reqwest::{Client as HttpClient, Method};\nuse serde_json::{Value, json};\nuse std::{env, error::Error};\n\nfn required_env(name: &str) -> Result\u003CString, Box\u003Cdyn Error>> {\n    let value = env::var(name)?;\n    if value.trim().is_empty() {\n        return Err(format!(\"{name} is required\").into());\n    }\n    Ok(value)\n}\n\nasync fn neutron_request(\n    http: &HttpClient,\n    base_url: &str,\n    token: &str,\n    method: Method,\n    path: &str,\n    body: Option\u003CValue>,\n) -> Result\u003CValue, Box\u003Cdyn Error>> {\n    let mut request = http\n        .request(method, format!(\"{}{}\", base_url.trim_end_matches('\u002F'), path))\n        .bearer_auth(token);\n    if let Some(payload) = body {\n        request = request.json(&payload);\n    }\n    let response = request.send().await?.error_for_status()?;\n    Ok(response.json::\u003CValue>().await?)\n}\n\nasync fn provision_nuclei(\n    http: &HttpClient,\n    base_url: &str,\n    workspace_key: &str,\n) -> Result\u003C(), Box\u003Cdyn Error>> {\n    let profiles = [\n        json!({\n            \"nucleusId\": \"product-knowledge-global\",\n            \"name\": \"Global product knowledge\",\n            \"placement\": {\n                \"mode\": \"global\",\n                \"guarantee\": \"none\",\n                \"notes\": [\"Approved global knowledge; no jurisdictional storage guarantee.\"]\n            }\n        }),\n        json!({\n            \"nucleusId\": \"support-operations-weur\",\n            \"name\": \"Western Europe support operations\",\n            \"placement\": {\n                \"mode\": \"regional\",\n                \"regionHint\": \"weur\",\n                \"r2LocationHint\": \"weur\",\n                \"guarantee\": \"best_effort_regional\",\n                \"notes\": [\"Latency preference only; not a legal residency boundary.\"]\n            }\n        }),\n        json!({\n            \"nucleusId\": \"regulated-cases-eu\",\n            \"name\": \"EU regulated case memory\",\n            \"placement\": {\n                \"mode\": \"jurisdictional\",\n                \"jurisdiction\": \"eu\",\n                \"regionalServicesRequired\": true,\n                \"metadataBoundaryRequired\": true,\n                \"geoKeyManagerRequired\": false,\n                \"guarantee\": \"jurisdictional_storage\",\n                \"notes\": [\n                    \"Requires the EU Durable Object jurisdiction and matching EU archive binding.\",\n                    \"Processing, logs, metadata, keys, retention, and contracts require separate verification.\"\n                ]\n            }\n        }),\n    ];\n\n    for profile in profiles {\n        neutron_request(\n            http,\n            base_url,\n            workspace_key,\n            Method::POST,\n            \"\u002Fv1\u002Fnuclei\",\n            Some(profile),\n        )\n        .await?;\n    }\n    Ok(())\n}\n","rust",[267,323,324,329,334,339,344,350,356,362,368,374,380,386,392,397,403,409,415,421,427,433,439,445,451,457,463,469,475,480,486,492,497,502,508,513,518,524,530,536,542,548,554,560,566,572,578,584,590,595,601,607,612,618,624,630,636,642,647,652,657,663,669,674,680,686,692,698,704,710,716,722,728,734,739,744,750,755,761,767,773,779,785,791,797,803,809,815,820,826],{"__ignoreMap":277},[281,325,326],{"class":283,"line":284},[281,327,328],{},"use neutron_ai::{ClientOptions, NeutronAIClient};\n",[281,330,331],{"class":283,"line":290},[281,332,333],{},"use reqwest::{Client as HttpClient, Method};\n",[281,335,336],{"class":283,"line":296},[281,337,338],{},"use serde_json::{Value, json};\n",[281,340,341],{"class":283,"line":302},[281,342,343],{},"use std::{env, error::Error};\n",[281,345,346],{"class":283,"line":308},[281,347,349],{"emptyLinePlaceholder":348},true,"\n",[281,351,353],{"class":283,"line":352},6,[281,354,355],{},"fn required_env(name: &str) -> Result\u003CString, Box\u003Cdyn Error>> {\n",[281,357,359],{"class":283,"line":358},7,[281,360,361],{},"    let value = env::var(name)?;\n",[281,363,365],{"class":283,"line":364},8,[281,366,367],{},"    if value.trim().is_empty() {\n",[281,369,371],{"class":283,"line":370},9,[281,372,373],{},"        return Err(format!(\"{name} is required\").into());\n",[281,375,377],{"class":283,"line":376},10,[281,378,379],{},"    }\n",[281,381,383],{"class":283,"line":382},11,[281,384,385],{},"    Ok(value)\n",[281,387,389],{"class":283,"line":388},12,[281,390,391],{},"}\n",[281,393,395],{"class":283,"line":394},13,[281,396,349],{"emptyLinePlaceholder":348},[281,398,400],{"class":283,"line":399},14,[281,401,402],{},"async fn neutron_request(\n",[281,404,406],{"class":283,"line":405},15,[281,407,408],{},"    http: &HttpClient,\n",[281,410,412],{"class":283,"line":411},16,[281,413,414],{},"    base_url: &str,\n",[281,416,418],{"class":283,"line":417},17,[281,419,420],{},"    token: &str,\n",[281,422,424],{"class":283,"line":423},18,[281,425,426],{},"    method: Method,\n",[281,428,430],{"class":283,"line":429},19,[281,431,432],{},"    path: &str,\n",[281,434,436],{"class":283,"line":435},20,[281,437,438],{},"    body: Option\u003CValue>,\n",[281,440,442],{"class":283,"line":441},21,[281,443,444],{},") -> Result\u003CValue, Box\u003Cdyn Error>> {\n",[281,446,448],{"class":283,"line":447},22,[281,449,450],{},"    let mut request = http\n",[281,452,454],{"class":283,"line":453},23,[281,455,456],{},"        .request(method, format!(\"{}{}\", base_url.trim_end_matches('\u002F'), path))\n",[281,458,460],{"class":283,"line":459},24,[281,461,462],{},"        .bearer_auth(token);\n",[281,464,466],{"class":283,"line":465},25,[281,467,468],{},"    if let Some(payload) = body {\n",[281,470,472],{"class":283,"line":471},26,[281,473,474],{},"        request = request.json(&payload);\n",[281,476,478],{"class":283,"line":477},27,[281,479,379],{},[281,481,483],{"class":283,"line":482},28,[281,484,485],{},"    let response = request.send().await?.error_for_status()?;\n",[281,487,489],{"class":283,"line":488},29,[281,490,491],{},"    Ok(response.json::\u003CValue>().await?)\n",[281,493,495],{"class":283,"line":494},30,[281,496,391],{},[281,498,500],{"class":283,"line":499},31,[281,501,349],{"emptyLinePlaceholder":348},[281,503,505],{"class":283,"line":504},32,[281,506,507],{},"async fn provision_nuclei(\n",[281,509,511],{"class":283,"line":510},33,[281,512,408],{},[281,514,516],{"class":283,"line":515},34,[281,517,414],{},[281,519,521],{"class":283,"line":520},35,[281,522,523],{},"    workspace_key: &str,\n",[281,525,527],{"class":283,"line":526},36,[281,528,529],{},") -> Result\u003C(), Box\u003Cdyn Error>> {\n",[281,531,533],{"class":283,"line":532},37,[281,534,535],{},"    let profiles = [\n",[281,537,539],{"class":283,"line":538},38,[281,540,541],{},"        json!({\n",[281,543,545],{"class":283,"line":544},39,[281,546,547],{},"            \"nucleusId\": \"product-knowledge-global\",\n",[281,549,551],{"class":283,"line":550},40,[281,552,553],{},"            \"name\": \"Global product knowledge\",\n",[281,555,557],{"class":283,"line":556},41,[281,558,559],{},"            \"placement\": {\n",[281,561,563],{"class":283,"line":562},42,[281,564,565],{},"                \"mode\": \"global\",\n",[281,567,569],{"class":283,"line":568},43,[281,570,571],{},"                \"guarantee\": \"none\",\n",[281,573,575],{"class":283,"line":574},44,[281,576,577],{},"                \"notes\": [\"Approved global knowledge; no jurisdictional storage guarantee.\"]\n",[281,579,581],{"class":283,"line":580},45,[281,582,583],{},"            }\n",[281,585,587],{"class":283,"line":586},46,[281,588,589],{},"        }),\n",[281,591,593],{"class":283,"line":592},47,[281,594,541],{},[281,596,598],{"class":283,"line":597},48,[281,599,600],{},"            \"nucleusId\": \"support-operations-weur\",\n",[281,602,604],{"class":283,"line":603},49,[281,605,606],{},"            \"name\": \"Western Europe support operations\",\n",[281,608,610],{"class":283,"line":609},50,[281,611,559],{},[281,613,615],{"class":283,"line":614},51,[281,616,617],{},"                \"mode\": \"regional\",\n",[281,619,621],{"class":283,"line":620},52,[281,622,623],{},"                \"regionHint\": \"weur\",\n",[281,625,627],{"class":283,"line":626},53,[281,628,629],{},"                \"r2LocationHint\": \"weur\",\n",[281,631,633],{"class":283,"line":632},54,[281,634,635],{},"                \"guarantee\": \"best_effort_regional\",\n",[281,637,639],{"class":283,"line":638},55,[281,640,641],{},"                \"notes\": [\"Latency preference only; not a legal residency boundary.\"]\n",[281,643,645],{"class":283,"line":644},56,[281,646,583],{},[281,648,650],{"class":283,"line":649},57,[281,651,589],{},[281,653,655],{"class":283,"line":654},58,[281,656,541],{},[281,658,660],{"class":283,"line":659},59,[281,661,662],{},"            \"nucleusId\": \"regulated-cases-eu\",\n",[281,664,666],{"class":283,"line":665},60,[281,667,668],{},"            \"name\": \"EU regulated case memory\",\n",[281,670,672],{"class":283,"line":671},61,[281,673,559],{},[281,675,677],{"class":283,"line":676},62,[281,678,679],{},"                \"mode\": \"jurisdictional\",\n",[281,681,683],{"class":283,"line":682},63,[281,684,685],{},"                \"jurisdiction\": \"eu\",\n",[281,687,689],{"class":283,"line":688},64,[281,690,691],{},"                \"regionalServicesRequired\": true,\n",[281,693,695],{"class":283,"line":694},65,[281,696,697],{},"                \"metadataBoundaryRequired\": true,\n",[281,699,701],{"class":283,"line":700},66,[281,702,703],{},"                \"geoKeyManagerRequired\": false,\n",[281,705,707],{"class":283,"line":706},67,[281,708,709],{},"                \"guarantee\": \"jurisdictional_storage\",\n",[281,711,713],{"class":283,"line":712},68,[281,714,715],{},"                \"notes\": [\n",[281,717,719],{"class":283,"line":718},69,[281,720,721],{},"                    \"Requires the EU Durable Object jurisdiction and matching EU archive binding.\",\n",[281,723,725],{"class":283,"line":724},70,[281,726,727],{},"                    \"Processing, logs, metadata, keys, retention, and contracts require separate verification.\"\n",[281,729,731],{"class":283,"line":730},71,[281,732,733],{},"                ]\n",[281,735,737],{"class":283,"line":736},72,[281,738,583],{},[281,740,742],{"class":283,"line":741},73,[281,743,589],{},[281,745,747],{"class":283,"line":746},74,[281,748,749],{},"    ];\n",[281,751,753],{"class":283,"line":752},75,[281,754,349],{"emptyLinePlaceholder":348},[281,756,758],{"class":283,"line":757},76,[281,759,760],{},"    for profile in profiles {\n",[281,762,764],{"class":283,"line":763},77,[281,765,766],{},"        neutron_request(\n",[281,768,770],{"class":283,"line":769},78,[281,771,772],{},"            http,\n",[281,774,776],{"class":283,"line":775},79,[281,777,778],{},"            base_url,\n",[281,780,782],{"class":283,"line":781},80,[281,783,784],{},"            workspace_key,\n",[281,786,788],{"class":283,"line":787},81,[281,789,790],{},"            Method::POST,\n",[281,792,794],{"class":283,"line":793},82,[281,795,796],{},"            \"\u002Fv1\u002Fnuclei\",\n",[281,798,800],{"class":283,"line":799},83,[281,801,802],{},"            Some(profile),\n",[281,804,806],{"class":283,"line":805},84,[281,807,808],{},"        )\n",[281,810,812],{"class":283,"line":811},85,[281,813,814],{},"        .await?;\n",[281,816,818],{"class":283,"line":817},86,[281,819,379],{},[281,821,823],{"class":283,"line":822},87,[281,824,825],{},"    Ok(())\n",[281,827,829],{"class":283,"line":828},88,[281,830,391],{},[263,832,833],{},"Treat an already-existing Nucleus as explicit deployment state. Do not recreate it with a changed placement profile.",[313,835,837],{"id":836},"build-the-memory-router","Build the memory router",[272,839,841],{"className":319,"code":840,"language":321,"meta":277,"style":277},"struct MemoryRouter {\n    global: NeutronAIClient,\n    western_europe: NeutronAIClient,\n    eu_regulated: NeutronAIClient,\n}\n\nfn memory_client(\n    base_url: &str,\n    token_env: &str,\n    nucleus_id: &str,\n) -> Result\u003CNeutronAIClient, Box\u003Cdyn Error>> {\n    Ok(NeutronAIClient::new(ClientOptions {\n        base_url: base_url.to_string(),\n        token: Some(required_env(token_env)?),\n        nucleus_id: Some(nucleus_id.to_string()),\n        tenant_id: None,\n    })?)\n}\n\nimpl MemoryRouter {\n    fn new(base_url: &str) -> Result\u003CSelf, Box\u003Cdyn Error>> {\n        Ok(Self {\n            global: memory_client(\n                base_url,\n                \"NEUTRON_GLOBAL_TOKEN\",\n                \"product-knowledge-global\",\n            )?,\n            western_europe: memory_client(\n                base_url,\n                \"NEUTRON_WEUR_TOKEN\",\n                \"support-operations-weur\",\n            )?,\n            eu_regulated: memory_client(\n                base_url,\n                \"NEUTRON_EU_TOKEN\",\n                \"regulated-cases-eu\",\n            )?,\n        })\n    }\n\n    async fn store_global_product_knowledge(&self, text: &str) -> Result\u003CValue, Box\u003Cdyn Error>> {\n        Ok(self.global.remember(json!({\n            \"scopeId\": \"kb:approved-products\",\n            \"type\": \"knowledge\",\n            \"privacyClass\": \"public\",\n            \"text\": text\n        })).await?)\n    }\n\n    async fn store_western_europe_support_lesson(\n        &self,\n        text: &str,\n    ) -> Result\u003CValue, Box\u003Cdyn Error>> {\n        Ok(self.western_europe.remember(json!({\n            \"scopeId\": \"history:support-resolutions\",\n            \"type\": \"tool_lesson\",\n            \"privacyClass\": \"tenant\",\n            \"text\": text\n        })).await?)\n    }\n\n    async fn store_eu_regulated_case(\n        &self,\n        case_id: &str,\n        minimized_summary: &str,\n    ) -> Result\u003CValue, Box\u003Cdyn Error>> {\n        Ok(self.eu_regulated.remember(json!({\n            \"scopeId\": format!(\"case:{case_id}\"),\n            \"type\": \"experience\",\n            \"privacyClass\": \"user_private\",\n            \"text\": minimized_summary,\n            \"metadata\": {\n                \"dataClass\": \"eu-regulated-case\",\n                \"source\": \"approved-case-summary\"\n            }\n        })).await?)\n    }\n}\n",[267,842,843,848,853,858,863,867,871,876,880,885,890,895,900,905,910,915,920,925,929,933,938,943,948,953,958,963,968,973,978,982,987,992,996,1001,1005,1010,1015,1019,1024,1028,1032,1037,1042,1047,1052,1057,1062,1067,1071,1075,1080,1085,1090,1095,1100,1105,1110,1115,1119,1123,1127,1131,1136,1140,1145,1150,1154,1159,1164,1169,1174,1179,1184,1189,1194,1198,1202,1206],{"__ignoreMap":277},[281,844,845],{"class":283,"line":284},[281,846,847],{},"struct MemoryRouter {\n",[281,849,850],{"class":283,"line":290},[281,851,852],{},"    global: NeutronAIClient,\n",[281,854,855],{"class":283,"line":296},[281,856,857],{},"    western_europe: NeutronAIClient,\n",[281,859,860],{"class":283,"line":302},[281,861,862],{},"    eu_regulated: NeutronAIClient,\n",[281,864,865],{"class":283,"line":308},[281,866,391],{},[281,868,869],{"class":283,"line":352},[281,870,349],{"emptyLinePlaceholder":348},[281,872,873],{"class":283,"line":358},[281,874,875],{},"fn memory_client(\n",[281,877,878],{"class":283,"line":364},[281,879,414],{},[281,881,882],{"class":283,"line":370},[281,883,884],{},"    token_env: &str,\n",[281,886,887],{"class":283,"line":376},[281,888,889],{},"    nucleus_id: &str,\n",[281,891,892],{"class":283,"line":382},[281,893,894],{},") -> Result\u003CNeutronAIClient, Box\u003Cdyn Error>> {\n",[281,896,897],{"class":283,"line":388},[281,898,899],{},"    Ok(NeutronAIClient::new(ClientOptions {\n",[281,901,902],{"class":283,"line":394},[281,903,904],{},"        base_url: base_url.to_string(),\n",[281,906,907],{"class":283,"line":399},[281,908,909],{},"        token: Some(required_env(token_env)?),\n",[281,911,912],{"class":283,"line":405},[281,913,914],{},"        nucleus_id: Some(nucleus_id.to_string()),\n",[281,916,917],{"class":283,"line":411},[281,918,919],{},"        tenant_id: None,\n",[281,921,922],{"class":283,"line":417},[281,923,924],{},"    })?)\n",[281,926,927],{"class":283,"line":423},[281,928,391],{},[281,930,931],{"class":283,"line":429},[281,932,349],{"emptyLinePlaceholder":348},[281,934,935],{"class":283,"line":435},[281,936,937],{},"impl MemoryRouter {\n",[281,939,940],{"class":283,"line":441},[281,941,942],{},"    fn new(base_url: &str) -> Result\u003CSelf, Box\u003Cdyn Error>> {\n",[281,944,945],{"class":283,"line":447},[281,946,947],{},"        Ok(Self {\n",[281,949,950],{"class":283,"line":453},[281,951,952],{},"            global: memory_client(\n",[281,954,955],{"class":283,"line":459},[281,956,957],{},"                base_url,\n",[281,959,960],{"class":283,"line":465},[281,961,962],{},"                \"NEUTRON_GLOBAL_TOKEN\",\n",[281,964,965],{"class":283,"line":471},[281,966,967],{},"                \"product-knowledge-global\",\n",[281,969,970],{"class":283,"line":477},[281,971,972],{},"            )?,\n",[281,974,975],{"class":283,"line":482},[281,976,977],{},"            western_europe: memory_client(\n",[281,979,980],{"class":283,"line":488},[281,981,957],{},[281,983,984],{"class":283,"line":494},[281,985,986],{},"                \"NEUTRON_WEUR_TOKEN\",\n",[281,988,989],{"class":283,"line":499},[281,990,991],{},"                \"support-operations-weur\",\n",[281,993,994],{"class":283,"line":504},[281,995,972],{},[281,997,998],{"class":283,"line":510},[281,999,1000],{},"            eu_regulated: memory_client(\n",[281,1002,1003],{"class":283,"line":515},[281,1004,957],{},[281,1006,1007],{"class":283,"line":520},[281,1008,1009],{},"                \"NEUTRON_EU_TOKEN\",\n",[281,1011,1012],{"class":283,"line":526},[281,1013,1014],{},"                \"regulated-cases-eu\",\n",[281,1016,1017],{"class":283,"line":532},[281,1018,972],{},[281,1020,1021],{"class":283,"line":538},[281,1022,1023],{},"        })\n",[281,1025,1026],{"class":283,"line":544},[281,1027,379],{},[281,1029,1030],{"class":283,"line":550},[281,1031,349],{"emptyLinePlaceholder":348},[281,1033,1034],{"class":283,"line":556},[281,1035,1036],{},"    async fn store_global_product_knowledge(&self, text: &str) -> Result\u003CValue, Box\u003Cdyn Error>> {\n",[281,1038,1039],{"class":283,"line":562},[281,1040,1041],{},"        Ok(self.global.remember(json!({\n",[281,1043,1044],{"class":283,"line":568},[281,1045,1046],{},"            \"scopeId\": \"kb:approved-products\",\n",[281,1048,1049],{"class":283,"line":574},[281,1050,1051],{},"            \"type\": \"knowledge\",\n",[281,1053,1054],{"class":283,"line":580},[281,1055,1056],{},"            \"privacyClass\": \"public\",\n",[281,1058,1059],{"class":283,"line":586},[281,1060,1061],{},"            \"text\": text\n",[281,1063,1064],{"class":283,"line":592},[281,1065,1066],{},"        })).await?)\n",[281,1068,1069],{"class":283,"line":597},[281,1070,379],{},[281,1072,1073],{"class":283,"line":603},[281,1074,349],{"emptyLinePlaceholder":348},[281,1076,1077],{"class":283,"line":609},[281,1078,1079],{},"    async fn store_western_europe_support_lesson(\n",[281,1081,1082],{"class":283,"line":614},[281,1083,1084],{},"        &self,\n",[281,1086,1087],{"class":283,"line":620},[281,1088,1089],{},"        text: &str,\n",[281,1091,1092],{"class":283,"line":626},[281,1093,1094],{},"    ) -> Result\u003CValue, Box\u003Cdyn Error>> {\n",[281,1096,1097],{"class":283,"line":632},[281,1098,1099],{},"        Ok(self.western_europe.remember(json!({\n",[281,1101,1102],{"class":283,"line":638},[281,1103,1104],{},"            \"scopeId\": \"history:support-resolutions\",\n",[281,1106,1107],{"class":283,"line":644},[281,1108,1109],{},"            \"type\": \"tool_lesson\",\n",[281,1111,1112],{"class":283,"line":649},[281,1113,1114],{},"            \"privacyClass\": \"tenant\",\n",[281,1116,1117],{"class":283,"line":654},[281,1118,1061],{},[281,1120,1121],{"class":283,"line":659},[281,1122,1066],{},[281,1124,1125],{"class":283,"line":665},[281,1126,379],{},[281,1128,1129],{"class":283,"line":671},[281,1130,349],{"emptyLinePlaceholder":348},[281,1132,1133],{"class":283,"line":676},[281,1134,1135],{},"    async fn store_eu_regulated_case(\n",[281,1137,1138],{"class":283,"line":682},[281,1139,1084],{},[281,1141,1142],{"class":283,"line":688},[281,1143,1144],{},"        case_id: &str,\n",[281,1146,1147],{"class":283,"line":694},[281,1148,1149],{},"        minimized_summary: &str,\n",[281,1151,1152],{"class":283,"line":700},[281,1153,1094],{},[281,1155,1156],{"class":283,"line":706},[281,1157,1158],{},"        Ok(self.eu_regulated.remember(json!({\n",[281,1160,1161],{"class":283,"line":712},[281,1162,1163],{},"            \"scopeId\": format!(\"case:{case_id}\"),\n",[281,1165,1166],{"class":283,"line":718},[281,1167,1168],{},"            \"type\": \"experience\",\n",[281,1170,1171],{"class":283,"line":724},[281,1172,1173],{},"            \"privacyClass\": \"user_private\",\n",[281,1175,1176],{"class":283,"line":730},[281,1177,1178],{},"            \"text\": minimized_summary,\n",[281,1180,1181],{"class":283,"line":736},[281,1182,1183],{},"            \"metadata\": {\n",[281,1185,1186],{"class":283,"line":741},[281,1187,1188],{},"                \"dataClass\": \"eu-regulated-case\",\n",[281,1190,1191],{"class":283,"line":746},[281,1192,1193],{},"                \"source\": \"approved-case-summary\"\n",[281,1195,1196],{"class":283,"line":752},[281,1197,583],{},[281,1199,1200],{"class":283,"line":757},[281,1201,1066],{},[281,1203,1204],{"class":283,"line":763},[281,1205,379],{},[281,1207,1208],{"class":283,"line":769},[281,1209,391],{},[263,1211,1212],{},"Keep routing behind these domain-specific methods. Do not accept a Nucleus ID, placement mode, or arbitrary scope from an untrusted request or model.",[313,1214,1216],{"id":1215},"recall-and-verify-the-eu-boundary","Recall and verify the EU boundary",[272,1218,1220],{"className":319,"code":1219,"language":321,"meta":277,"style":277},"impl MemoryRouter {\n    async fn eu_case_context(&self) -> Result\u003CValue, Box\u003Cdyn Error>> {\n        Ok(self.eu_regulated.agent_context(json!({\n            \"scopeIds\": [\n                \"case:case-4821\",\n                \"policy:eu-case-handling\",\n                \"kb:approved-products\"\n            ],\n            \"agentId\": \"agent:eu-case-support\",\n            \"task\": \"Prepare the next authorized case-support step.\",\n            \"privacyClasses\": [\"tenant\", \"user_private\"],\n            \"tokenBudget\": 1_200,\n            \"cachePolicy\": {\n                \"mode\": \"prefer_cache\",\n                \"keyMode\": \"intent_profile\",\n                \"ttlSeconds\": 120,\n                \"includeDynamicRag\": true,\n                \"allowSensitive\": false\n            }\n        })).await?)\n    }\n}\n\nasync fn verify_eu_readiness(\n    http: &HttpClient,\n    base_url: &str,\n    eu_token: &str,\n) -> Result\u003C(), Box\u003Cdyn Error>> {\n    neutron_request(\n        http,\n        base_url,\n        eu_token,\n        Method::GET,\n        \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fplacement\",\n        None,\n    )\n    .await?;\n    let health = neutron_request(\n        http,\n        base_url,\n        eu_token,\n        Method::GET,\n        \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fhealth\",\n        None,\n    )\n    .await?;\n\n    let blocking = [\n        \"jurisdictional_do_subnamespace_unavailable\",\n        \"jurisdictional_archive_bucket_missing\",\n    ];\n    let warnings = health[\"warnings\"].as_array().cloned().unwrap_or_default();\n    if warnings.iter().any(|warning| {\n        warning.as_str().is_some_and(|value| blocking.contains(&value))\n    }) {\n        return Err(\"EU Nucleus is not ready\".into());\n    }\n    Ok(())\n}\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn Error>> {\n    let base_url = required_env(\"NEUTRON_API_URL\")?;\n    let workspace_key = required_env(\"NEUTRON_WORKSPACE_API_KEY\")?;\n    let http = HttpClient::new();\n\n    provision_nuclei(&http, &base_url, &workspace_key).await?;\n    let router = MemoryRouter::new(&base_url)?;\n    router.eu_case_context().await?;\n    verify_eu_readiness(\n        &http,\n        &base_url,\n        &required_env(\"NEUTRON_EU_TOKEN\")?,\n    )\n    .await?;\n    Ok(())\n}\n",[267,1221,1222,1226,1231,1236,1241,1246,1251,1256,1261,1266,1271,1276,1281,1286,1291,1296,1301,1306,1311,1315,1319,1323,1327,1331,1336,1340,1344,1349,1353,1358,1363,1368,1373,1378,1383,1388,1393,1398,1403,1407,1411,1415,1419,1424,1428,1432,1436,1440,1445,1450,1455,1459,1464,1469,1474,1479,1484,1488,1492,1496,1500,1505,1510,1515,1520,1525,1529,1534,1539,1544,1549,1554,1559,1564,1568,1572,1576],{"__ignoreMap":277},[281,1223,1224],{"class":283,"line":284},[281,1225,937],{},[281,1227,1228],{"class":283,"line":290},[281,1229,1230],{},"    async fn eu_case_context(&self) -> Result\u003CValue, Box\u003Cdyn Error>> {\n",[281,1232,1233],{"class":283,"line":296},[281,1234,1235],{},"        Ok(self.eu_regulated.agent_context(json!({\n",[281,1237,1238],{"class":283,"line":302},[281,1239,1240],{},"            \"scopeIds\": [\n",[281,1242,1243],{"class":283,"line":308},[281,1244,1245],{},"                \"case:case-4821\",\n",[281,1247,1248],{"class":283,"line":352},[281,1249,1250],{},"                \"policy:eu-case-handling\",\n",[281,1252,1253],{"class":283,"line":358},[281,1254,1255],{},"                \"kb:approved-products\"\n",[281,1257,1258],{"class":283,"line":364},[281,1259,1260],{},"            ],\n",[281,1262,1263],{"class":283,"line":370},[281,1264,1265],{},"            \"agentId\": \"agent:eu-case-support\",\n",[281,1267,1268],{"class":283,"line":376},[281,1269,1270],{},"            \"task\": \"Prepare the next authorized case-support step.\",\n",[281,1272,1273],{"class":283,"line":382},[281,1274,1275],{},"            \"privacyClasses\": [\"tenant\", \"user_private\"],\n",[281,1277,1278],{"class":283,"line":388},[281,1279,1280],{},"            \"tokenBudget\": 1_200,\n",[281,1282,1283],{"class":283,"line":394},[281,1284,1285],{},"            \"cachePolicy\": {\n",[281,1287,1288],{"class":283,"line":399},[281,1289,1290],{},"                \"mode\": \"prefer_cache\",\n",[281,1292,1293],{"class":283,"line":405},[281,1294,1295],{},"                \"keyMode\": \"intent_profile\",\n",[281,1297,1298],{"class":283,"line":411},[281,1299,1300],{},"                \"ttlSeconds\": 120,\n",[281,1302,1303],{"class":283,"line":417},[281,1304,1305],{},"                \"includeDynamicRag\": true,\n",[281,1307,1308],{"class":283,"line":423},[281,1309,1310],{},"                \"allowSensitive\": false\n",[281,1312,1313],{"class":283,"line":429},[281,1314,583],{},[281,1316,1317],{"class":283,"line":435},[281,1318,1066],{},[281,1320,1321],{"class":283,"line":441},[281,1322,379],{},[281,1324,1325],{"class":283,"line":447},[281,1326,391],{},[281,1328,1329],{"class":283,"line":453},[281,1330,349],{"emptyLinePlaceholder":348},[281,1332,1333],{"class":283,"line":459},[281,1334,1335],{},"async fn verify_eu_readiness(\n",[281,1337,1338],{"class":283,"line":465},[281,1339,408],{},[281,1341,1342],{"class":283,"line":471},[281,1343,414],{},[281,1345,1346],{"class":283,"line":477},[281,1347,1348],{},"    eu_token: &str,\n",[281,1350,1351],{"class":283,"line":482},[281,1352,529],{},[281,1354,1355],{"class":283,"line":488},[281,1356,1357],{},"    neutron_request(\n",[281,1359,1360],{"class":283,"line":494},[281,1361,1362],{},"        http,\n",[281,1364,1365],{"class":283,"line":499},[281,1366,1367],{},"        base_url,\n",[281,1369,1370],{"class":283,"line":504},[281,1371,1372],{},"        eu_token,\n",[281,1374,1375],{"class":283,"line":510},[281,1376,1377],{},"        Method::GET,\n",[281,1379,1380],{"class":283,"line":515},[281,1381,1382],{},"        \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fplacement\",\n",[281,1384,1385],{"class":283,"line":520},[281,1386,1387],{},"        None,\n",[281,1389,1390],{"class":283,"line":526},[281,1391,1392],{},"    )\n",[281,1394,1395],{"class":283,"line":532},[281,1396,1397],{},"    .await?;\n",[281,1399,1400],{"class":283,"line":538},[281,1401,1402],{},"    let health = neutron_request(\n",[281,1404,1405],{"class":283,"line":544},[281,1406,1362],{},[281,1408,1409],{"class":283,"line":550},[281,1410,1367],{},[281,1412,1413],{"class":283,"line":556},[281,1414,1372],{},[281,1416,1417],{"class":283,"line":562},[281,1418,1377],{},[281,1420,1421],{"class":283,"line":568},[281,1422,1423],{},"        \"\u002Fv1\u002Fnuclei\u002Fregulated-cases-eu\u002Fhealth\",\n",[281,1425,1426],{"class":283,"line":574},[281,1427,1387],{},[281,1429,1430],{"class":283,"line":580},[281,1431,1392],{},[281,1433,1434],{"class":283,"line":586},[281,1435,1397],{},[281,1437,1438],{"class":283,"line":592},[281,1439,349],{"emptyLinePlaceholder":348},[281,1441,1442],{"class":283,"line":597},[281,1443,1444],{},"    let blocking = [\n",[281,1446,1447],{"class":283,"line":603},[281,1448,1449],{},"        \"jurisdictional_do_subnamespace_unavailable\",\n",[281,1451,1452],{"class":283,"line":609},[281,1453,1454],{},"        \"jurisdictional_archive_bucket_missing\",\n",[281,1456,1457],{"class":283,"line":614},[281,1458,749],{},[281,1460,1461],{"class":283,"line":620},[281,1462,1463],{},"    let warnings = health[\"warnings\"].as_array().cloned().unwrap_or_default();\n",[281,1465,1466],{"class":283,"line":626},[281,1467,1468],{},"    if warnings.iter().any(|warning| {\n",[281,1470,1471],{"class":283,"line":632},[281,1472,1473],{},"        warning.as_str().is_some_and(|value| blocking.contains(&value))\n",[281,1475,1476],{"class":283,"line":638},[281,1477,1478],{},"    }) {\n",[281,1480,1481],{"class":283,"line":644},[281,1482,1483],{},"        return Err(\"EU Nucleus is not ready\".into());\n",[281,1485,1486],{"class":283,"line":649},[281,1487,379],{},[281,1489,1490],{"class":283,"line":654},[281,1491,825],{},[281,1493,1494],{"class":283,"line":659},[281,1495,391],{},[281,1497,1498],{"class":283,"line":665},[281,1499,349],{"emptyLinePlaceholder":348},[281,1501,1502],{"class":283,"line":671},[281,1503,1504],{},"#[tokio::main]\n",[281,1506,1507],{"class":283,"line":676},[281,1508,1509],{},"async fn main() -> Result\u003C(), Box\u003Cdyn Error>> {\n",[281,1511,1512],{"class":283,"line":682},[281,1513,1514],{},"    let base_url = required_env(\"NEUTRON_API_URL\")?;\n",[281,1516,1517],{"class":283,"line":688},[281,1518,1519],{},"    let workspace_key = required_env(\"NEUTRON_WORKSPACE_API_KEY\")?;\n",[281,1521,1522],{"class":283,"line":694},[281,1523,1524],{},"    let http = HttpClient::new();\n",[281,1526,1527],{"class":283,"line":700},[281,1528,349],{"emptyLinePlaceholder":348},[281,1530,1531],{"class":283,"line":706},[281,1532,1533],{},"    provision_nuclei(&http, &base_url, &workspace_key).await?;\n",[281,1535,1536],{"class":283,"line":712},[281,1537,1538],{},"    let router = MemoryRouter::new(&base_url)?;\n",[281,1540,1541],{"class":283,"line":718},[281,1542,1543],{},"    router.eu_case_context().await?;\n",[281,1545,1546],{"class":283,"line":724},[281,1547,1548],{},"    verify_eu_readiness(\n",[281,1550,1551],{"class":283,"line":730},[281,1552,1553],{},"        &http,\n",[281,1555,1556],{"class":283,"line":736},[281,1557,1558],{},"        &base_url,\n",[281,1560,1561],{"class":283,"line":741},[281,1562,1563],{},"        &required_env(\"NEUTRON_EU_TOKEN\")?,\n",[281,1565,1566],{"class":283,"line":746},[281,1567,1392],{},[281,1569,1570],{"class":283,"line":752},[281,1571,1397],{},[281,1573,1574],{"class":283,"line":757},[281,1575,825],{},[281,1577,1578],{"class":283,"line":763},[281,1579,391],{},[263,1581,1582,1583,1586,1587,1590],{},"All scopes in ",[267,1584,1585],{},"eu_case_context"," resolve inside ",[267,1588,1589],{},"regulated-cases-eu","; no cross-Nucleus recall occurs.",[263,1592,1593,1594,1598],{},"Return to the ",[1595,1596,1597],"a",{"href":77},"placement architecture and production checklist",".",[1600,1601,1602],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":277,"searchDepth":290,"depth":290,"links":1604},[1605,1606,1607],{"id":315,"depth":290,"text":316},{"id":836,"depth":290,"text":837},{"id":1215,"depth":290,"text":1216},"Implement global, regional, and jurisdictional Neutron memory with the Rust SDK.","md",{},{"title":98,"description":1608},"lUvZtdh9N_Ba8FTXyPfK3ej7uP_hTg-PYjG618xpSqI",[1614,1615],{"title":94,"path":95,"stem":96,"children":-1},{"title":107,"path":103,"stem":104,"children":-1},1786883757611]