[{"data":1,"prerenderedAt":722},["ShallowReactive",2],{"navigation_docs":3,"-docs-intelligence-extraction":356,"-docs-intelligence-extraction-surround":717},[4,8,34,64,90,139,157,171,193,227,241,266,312,334],{"title":5,"path":6,"stem":7},"Documentation","\u002Fdocs","docs\u002Findex",{"title":9,"path":10,"stem":11,"children":12},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F01.getting-started\u002Findex",[13,14,18,22,26,30],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F01.getting-started\u002F01.introduction",{"title":19,"path":20,"stem":21},"Concepts","\u002Fdocs\u002Fgetting-started\u002Fconcepts","docs\u002F01.getting-started\u002F02.concepts",{"title":23,"path":24,"stem":25},"Quickstart (5 minutes)","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F01.getting-started\u002F03.quickstart",{"title":27,"path":28,"stem":29},"Local development","\u002Fdocs\u002Fgetting-started\u002Flocal-development","docs\u002F01.getting-started\u002F04.local-development",{"title":31,"path":32,"stem":33},"FAQ","\u002Fdocs\u002Fgetting-started\u002Ffaq","docs\u002F01.getting-started\u002F05.faq",{"title":35,"path":36,"stem":37,"children":38},"Architecture","\u002Fdocs\u002Farchitecture","docs\u002F02.architecture\u002Findex",[39,40,44,48,52,56,60],{"title":35,"path":36,"stem":37},{"title":41,"path":42,"stem":43},"Architecture overview","\u002Fdocs\u002Farchitecture\u002Foverview","docs\u002F02.architecture\u002F01.overview",{"title":45,"path":46,"stem":47},"Services","\u002Fdocs\u002Farchitecture\u002Fservices","docs\u002F02.architecture\u002F02.services",{"title":49,"path":50,"stem":51},"Request lifecycle","\u002Fdocs\u002Farchitecture\u002Frequest-lifecycle","docs\u002F02.architecture\u002F03.request-lifecycle",{"title":53,"path":54,"stem":55},"Data model","\u002Fdocs\u002Farchitecture\u002Fdata-model","docs\u002F02.architecture\u002F04.data-model",{"title":57,"path":58,"stem":59},"Status and evidence","\u002Fdocs\u002Farchitecture\u002Fstatus-and-evidence","docs\u002F02.architecture\u002F05.status-and-evidence",{"title":61,"path":62,"stem":63},"Target architecture and authority","\u002Fdocs\u002Farchitecture\u002Ftarget-architecture","docs\u002F02.architecture\u002F06.target-architecture",{"title":65,"path":66,"stem":67,"children":68},"Auth","\u002Fdocs\u002Fauth","docs\u002F03.auth\u002Findex",[69,70,74,78,82,86],{"title":65,"path":66,"stem":67},{"title":71,"path":72,"stem":73},"Overview","\u002Fdocs\u002Fauth\u002Foverview","docs\u002F03.auth\u002F01.overview",{"title":75,"path":76,"stem":77},"Organization and agent model","\u002Fdocs\u002Fauth\u002Forg-project-model","docs\u002F03.auth\u002F02.org-project-model",{"title":79,"path":80,"stem":81},"Issuing API keys","\u002Fdocs\u002Fauth\u002Fissuing-api-keys","docs\u002F03.auth\u002F03.issuing-api-keys",{"title":83,"path":84,"stem":85},"Multi-tenant RLS","\u002Fdocs\u002Fauth\u002Fmulti-tenant-rls","docs\u002F03.auth\u002F04.multi-tenant-rls",{"title":87,"path":88,"stem":89},"Operator sessions and step-up","\u002Fdocs\u002Fauth\u002Foperator-sessions","docs\u002F03.auth\u002F05.operator-sessions",{"title":91,"path":92,"stem":93,"children":94},"Proxy","\u002Fdocs\u002Fproxy","docs\u002F04.proxy\u002Findex",[95,96,99,103,107,111,115,119,123,127,131,135],{"title":91,"path":92,"stem":93},{"title":71,"path":97,"stem":98},"\u002Fdocs\u002Fproxy\u002Foverview","docs\u002F04.proxy\u002F01.overview",{"title":100,"path":101,"stem":102},"Authentication","\u002Fdocs\u002Fproxy\u002Fauthentication","docs\u002F04.proxy\u002F02.authentication",{"title":104,"path":105,"stem":106},"Request routing","\u002Fdocs\u002Fproxy\u002Frequest-routing","docs\u002F04.proxy\u002F03.request-routing",{"title":108,"path":109,"stem":110},"Sessions","\u002Fdocs\u002Fproxy\u002Fsessions","docs\u002F04.proxy\u002F04.sessions",{"title":112,"path":113,"stem":114},"Directives","\u002Fdocs\u002Fproxy\u002Fdirectives","docs\u002F04.proxy\u002F05.directives",{"title":116,"path":117,"stem":118},"Idempotency and budgets","\u002Fdocs\u002Fproxy\u002Fidempotency-and-budgets","docs\u002F04.proxy\u002F06.idempotency-and-budgets",{"title":120,"path":121,"stem":122},"Rate limiting","\u002Fdocs\u002Fproxy\u002Frate-limiting","docs\u002F04.proxy\u002F07.rate-limiting",{"title":124,"path":125,"stem":126},"Provider adapters","\u002Fdocs\u002Fproxy\u002Fprovider-adapters","docs\u002F04.proxy\u002F08.provider-adapters",{"title":128,"path":129,"stem":130},"Auth caching","\u002Fdocs\u002Fproxy\u002Fauth-caching","docs\u002F04.proxy\u002F09.auth-caching",{"title":132,"path":133,"stem":134},"Configuration","\u002Fdocs\u002Fproxy\u002Fconfiguration","docs\u002F04.proxy\u002F10.configuration",{"title":136,"path":137,"stem":138},"Provider routing and resilience","\u002Fdocs\u002Fproxy\u002Fprovider-routing-and-resilience","docs\u002F04.proxy\u002F11.provider-routing-and-resilience",{"title":140,"path":141,"stem":142,"children":143},"Memory","\u002Fdocs\u002Fmemory","docs\u002F05.memory\u002Findex",[144,145,149,153],{"title":140,"path":141,"stem":142},{"title":146,"path":147,"stem":148},"Memory overview","\u002Fdocs\u002Fmemory\u002Foverview","docs\u002F05.memory\u002F01.overview",{"title":150,"path":151,"stem":152},"Write path","\u002Fdocs\u002Fmemory\u002Fwrite-path","docs\u002F05.memory\u002F02.write-path",{"title":154,"path":155,"stem":156},"Search and lifecycle","\u002Fdocs\u002Fmemory\u002Fsearch-and-lifecycle","docs\u002F05.memory\u002F03.search-and-lifecycle",{"title":158,"path":159,"stem":160,"children":161},"Context","\u002Fdocs\u002Fcontext","docs\u002F06.context\u002Findex",[162,163,167],{"title":158,"path":159,"stem":160},{"title":164,"path":165,"stem":166},"Assembly pipeline","\u002Fdocs\u002Fcontext\u002Foverview","docs\u002F06.context\u002F01.overview",{"title":168,"path":169,"stem":170},"Ranking and packing","\u002Fdocs\u002Fcontext\u002Franking-and-packing","docs\u002F06.context\u002F02.ranking-and-packing",{"title":172,"path":173,"stem":174,"children":175},"Intelligence","\u002Fdocs\u002Fintelligence","docs\u002F07.intelligence\u002Findex",[176,177,181,185,189],{"title":172,"path":173,"stem":174},{"title":178,"path":179,"stem":180},"Workers","\u002Fdocs\u002Fintelligence\u002Fworkers","docs\u002F07.intelligence\u002F01.workers",{"title":182,"path":183,"stem":184},"Extraction","\u002Fdocs\u002Fintelligence\u002Fextraction","docs\u002F07.intelligence\u002F02.extraction",{"title":186,"path":187,"stem":188},"Embedder","\u002Fdocs\u002Fintelligence\u002Fembedder","docs\u002F07.intelligence\u002F03.embedder",{"title":190,"path":191,"stem":192},"Extraction evaluation","\u002Fdocs\u002Fintelligence\u002Fevaluation","docs\u002F07.intelligence\u002F04.evaluation",{"title":194,"path":195,"stem":196,"children":197},"API reference","\u002Fdocs\u002Fapi-reference","docs\u002F08.api-reference\u002Findex",[198,199,203,207,211,215,219,223],{"title":194,"path":195,"stem":196},{"title":200,"path":201,"stem":202},"Chat completions","\u002Fdocs\u002Fapi-reference\u002Fchat-completions","docs\u002F08.api-reference\u002F01.chat-completions",{"title":204,"path":205,"stem":206},"Responses","\u002Fdocs\u002Fapi-reference\u002Fresponses","docs\u002F08.api-reference\u002F02.responses",{"title":208,"path":209,"stem":210},"Errors","\u002Fdocs\u002Fapi-reference\u002Ferrors","docs\u002F08.api-reference\u002F03.errors",{"title":212,"path":213,"stem":214},"Health and metrics","\u002Fdocs\u002Fapi-reference\u002Fproxy-health","docs\u002F08.api-reference\u002F04.proxy-health",{"title":216,"path":217,"stem":218},"HTTP route inventory","\u002Fdocs\u002Fapi-reference\u002Fhttp-routes","docs\u002F08.api-reference\u002F05.http-routes",{"title":220,"path":221,"stem":222},"Management API","\u002Fdocs\u002Fapi-reference\u002Fmanagement-api","docs\u002F08.api-reference\u002F06.management-api",{"title":224,"path":225,"stem":226},"Auth gRPC (ValidateToken, ValidateAgent)","\u002Fdocs\u002Fapi-reference\u002Fauth-grpc","docs\u002F08.api-reference\u002F07.auth-grpc",{"title":228,"path":229,"stem":230,"children":231},"MCP","\u002Fdocs\u002Fmcp","docs\u002F09.mcp\u002Findex",[232,233,237],{"title":228,"path":229,"stem":230},{"title":234,"path":235,"stem":236},"Memory server","\u002Fdocs\u002Fmcp\u002Fmemory-server","docs\u002F09.mcp\u002F01.memory-server",{"title":238,"path":239,"stem":240},"Operator gateway","\u002Fdocs\u002Fmcp\u002Foperator-gateway","docs\u002F09.mcp\u002F02.operator-gateway",{"title":242,"path":243,"stem":244,"children":245},"Security","\u002Fdocs\u002Fsecurity","docs\u002F10.security\u002Findex",[246,247,251,254,258,262],{"title":242,"path":243,"stem":244},{"title":248,"path":249,"stem":250},"Security overview","\u002Fdocs\u002Fsecurity\u002Foverview","docs\u002F10.security\u002F01.overview",{"title":100,"path":252,"stem":253},"\u002Fdocs\u002Fsecurity\u002Fauthentication","docs\u002F10.security\u002F02.authentication",{"title":255,"path":256,"stem":257},"Tenant isolation","\u002Fdocs\u002Fsecurity\u002Ftenant-isolation","docs\u002F10.security\u002F03.tenant-isolation",{"title":259,"path":260,"stem":261},"Secrets and keys","\u002Fdocs\u002Fsecurity\u002Fsecrets-and-keys","docs\u002F10.security\u002F04.secrets-and-keys",{"title":263,"path":264,"stem":265},"Prompt injection","\u002Fdocs\u002Fsecurity\u002Fprompt-injection","docs\u002F10.security\u002F05.prompt-injection",{"title":267,"path":268,"stem":269,"children":270},"Operations","\u002Fdocs\u002Foperations","docs\u002F11.operations\u002Findex",[271,272,276,280,284,288,292,296,300,304,308],{"title":267,"path":268,"stem":269},{"title":273,"path":274,"stem":275},"Observability","\u002Fdocs\u002Foperations\u002Fobservability","docs\u002F11.operations\u002F01.observability",{"title":277,"path":278,"stem":279},"Traces and ClickHouse","\u002Fdocs\u002Foperations\u002Ftraces-and-clickhouse","docs\u002F11.operations\u002F02.traces-and-clickhouse",{"title":281,"path":282,"stem":283},"Health checks","\u002Fdocs\u002Foperations\u002Fhealth-checks","docs\u002F11.operations\u002F03.health-checks",{"title":285,"path":286,"stem":287},"Incident response","\u002Fdocs\u002Foperations\u002Fincident-response","docs\u002F11.operations\u002F04.incident-response",{"title":289,"path":290,"stem":291},"Troubleshooting","\u002Fdocs\u002Foperations\u002Ftroubleshooting","docs\u002F11.operations\u002F05.troubleshooting",{"title":293,"path":294,"stem":295},"Billing and budgets","\u002Fdocs\u002Foperations\u002Fbilling-and-budgets","docs\u002F11.operations\u002F06.billing-and-budgets",{"title":297,"path":298,"stem":299},"Evidence and relay","\u002Fdocs\u002Foperations\u002Fevidence-and-relay","docs\u002F11.operations\u002F07.evidence-and-relay",{"title":301,"path":302,"stem":303},"Console","\u002Fdocs\u002Foperations\u002Fconsole","docs\u002F11.operations\u002F08.console",{"title":305,"path":306,"stem":307},"Failure modes and recovery","\u002Fdocs\u002Foperations\u002Ffailure-and-recovery","docs\u002F11.operations\u002F09.failure-and-recovery",{"title":309,"path":310,"stem":311},"Data lifecycle and deletion","\u002Fdocs\u002Foperations\u002Fdata-lifecycle-and-deletion","docs\u002F11.operations\u002F10.data-lifecycle-and-deletion",{"title":313,"path":314,"stem":315,"children":316},"Deployment","\u002Fdocs\u002Fdeployment","docs\u002F12.deployment\u002Findex",[317,318,322,326,330],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321},"Docker Compose (dev)","\u002Fdocs\u002Fdeployment\u002Fdocker-compose","docs\u002F12.deployment\u002F01.docker-compose",{"title":323,"path":324,"stem":325},"Environment variables","\u002Fdocs\u002Fdeployment\u002Fenvironment-variables","docs\u002F12.deployment\u002F02.environment-variables",{"title":327,"path":328,"stem":329},"Kubernetes","\u002Fdocs\u002Fdeployment\u002Fkubernetes","docs\u002F12.deployment\u002F03.kubernetes",{"title":331,"path":332,"stem":333},"Production readiness","\u002Fdocs\u002Fdeployment\u002Fproduction-readiness","docs\u002F12.deployment\u002F04.production-readiness",{"title":335,"path":336,"stem":337,"children":338},"Reference","\u002Fdocs\u002Freference","docs\u002F13.reference\u002Findex",[339,340,344,348,352],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Glossary","\u002Fdocs\u002Freference\u002Fglossary","docs\u002F13.reference\u002F01.glossary",{"title":345,"path":346,"stem":347},"Roadmap and gates","\u002Fdocs\u002Freference\u002Froadmap","docs\u002F13.reference\u002F02.roadmap",{"title":349,"path":350,"stem":351},"Architecture decisions","\u002Fdocs\u002Freference\u002Fadr","docs\u002F13.reference\u002F03.adr",{"title":353,"path":354,"stem":355},"Compatibility and versioning","\u002Fdocs\u002Freference\u002Fcompatibility","docs\u002F13.reference\u002F04.compatibility",{"id":357,"title":182,"audience":358,"author":359,"authorUrl":359,"body":360,"coverIndex":359,"coverLabel":359,"coverTone":359,"date":359,"decisionStatus":359,"description":708,"excerpt":359,"extension":709,"featured":710,"historical":710,"meta":711,"navigation":712,"path":183,"readingTime":359,"scope":713,"seo":714,"sourceOfTruth":715,"status":371,"stem":184,"tags":359,"verifiedDate":372,"__hash__":716},"docs\u002Fdocs\u002F07.intelligence\u002F02.extraction.md","operator",null,{"type":361,"value":362,"toc":700},"minimark",[363,367,373,378,381,404,415,419,472,479,537,540,544,547,561,564,568,574,628,639,643,678,682,696],[364,365,366],"p",{},"Extraction turns a completed session into candidate memories. It is a batch job, not an inline proxy step. The extraction path is implemented and locally evaluated; the live vLLM path is manual because CI has no GPU runner.",[368,369],"page-status",{"note":370,"status":371,"verified":372},"Cassette-backed evaluation; live vLLM is manual","PROVISIONAL","2026-10-21",[374,375,377],"h2",{"id":376},"input-contract","Input contract",[364,379,380],{},"The extraction task receives:",[382,383,384,391,396,401],"ul",{},[385,386,387],"li",{},[388,389,390],"code",{},"org_id",[385,392,393],{},[388,394,395],{},"agent_id",[385,397,398],{},[388,399,400],{},"session_id",[385,402,403],{},"a list of turns with indices and content",[364,405,406,407,410,411,414],{},"The task returns ",[388,408,409],{},"status=ok"," or ",[388,412,413],{},"skipped"," for an intentional session gate. A skipped session is not an error, but it is also not an extraction result.",[374,416,418],{"id":417},"provider-modes","Provider modes",[420,421,422,438],"table",{},[423,424,425],"thead",{},[426,427,428,432,435],"tr",{},[429,430,431],"th",{},"Mode",[429,433,434],{},"Provider",[429,436,437],{},"Evidence",[439,440,441,455],"tbody",{},[426,442,443,449,452],{},[444,445,446],"td",{},[388,447,448],{},"openai",[444,450,451],{},"OpenAI-compatible chat completion",[444,453,454],{},"Cassette and unit tests in CI",[426,456,457,462,465],{},[444,458,459],{},[388,460,461],{},"vllm",[444,463,464],{},"Self-hosted OpenAI-compatible endpoint",[444,466,467,468,471],{},"Unit tests with ",[388,469,470],{},"httpx.MockTransport","; real GPU run is manual",[364,473,474,475,478],{},"The model must return JSON matching ",[388,476,477],{},"BatchExtractionResult",":",[480,481,486],"pre",{"className":482,"code":483,"language":484,"meta":485,"style":485},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{\"turns\":[{\"turn_index\":0,\"memories\":[]}]}\n","json","",[388,487,488],{"__ignoreMap":485},[489,490,493,497,501,505,507,510,512,516,518,520,524,527,529,532,534],"span",{"class":491,"line":492},"line",1,[489,494,496],{"class":495},"soVBu","{",[489,498,500],{"class":499},"s4Jsk","\"",[489,502,504],{"class":503},"sLorS","turns",[489,506,500],{"class":499},[489,508,509],{"class":495},":[{",[489,511,500],{"class":499},[489,513,515],{"class":514},"sa2tF","turn_index",[489,517,500],{"class":499},[489,519,478],{"class":495},[489,521,523],{"class":522},"s7CZa","0",[489,525,526],{"class":495},",",[489,528,500],{"class":499},[489,530,531],{"class":514},"memories",[489,533,500],{"class":499},[489,535,536],{"class":495},":[]}]}\n",[364,538,539],{},"No markdown fences. No prose wrapper. A schema violation must fail the task rather than persist malformed memory.",[374,541,543],{"id":542},"memory-writes","Memory writes",[364,545,546],{},"For each extracted memory, the worker posts to the memory service with:",[382,548,549,552,555],{},[385,550,551],{},"the session ID",[385,553,554],{},"labels and optional temporal fields",[385,556,557,558],{},"a bearer token carrying ",[388,559,560],{},"memory:write",[364,562,563],{},"The worker must not log extracted content. Use memory IDs, turn indices, and task IDs for diagnosis.",[374,565,567],{"id":566},"quality-evaluation","Quality evaluation",[364,569,570,571,478],{},"The gold-set harness lives under ",[388,572,573],{},"services\u002Fworker\u002Feval\u002F",[480,575,579],{"className":576,"code":577,"language":578,"meta":485,"style":485},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","cd services\u002Fworker\n.venv\u002Fbin\u002Fpytest -q eval\u002F\n.venv\u002Fbin\u002Fpython eval\u002Frun_eval.py --mode cassette\n.venv\u002Fbin\u002Fpython eval\u002Fregression_gate.py\n","bash",[388,580,581,591,605,620],{"__ignoreMap":485},[489,582,583,587],{"class":491,"line":492},[489,584,586],{"class":585},"sJdAF","cd",[489,588,590],{"class":589},"sTbE_"," services\u002Fworker\n",[489,592,594,598,602],{"class":491,"line":593},2,[489,595,597],{"class":596},"sYn-s",".venv\u002Fbin\u002Fpytest",[489,599,601],{"class":600},"sz9Cv"," -q",[489,603,604],{"class":589}," eval\u002F\n",[489,606,608,611,614,617],{"class":491,"line":607},3,[489,609,610],{"class":596},".venv\u002Fbin\u002Fpython",[489,612,613],{"class":589}," eval\u002Frun_eval.py",[489,615,616],{"class":600}," --mode",[489,618,619],{"class":589}," cassette\n",[489,621,623,625],{"class":491,"line":622},4,[489,624,610],{"class":596},[489,626,627],{"class":589}," eval\u002Fregression_gate.py\n",[364,629,630,631,634,635,638],{},"The cassette path is the CI signal. The checked-in OpenAI baseline is oracle-aligned, so a perfect score proves scoring and gate wiring rather than live model quality. ",[388,632,633],{},"run_eval.py --mode vllm"," is a manual comparison with no published metrics, not a merge gate. Contract hashes for the prompt and schema are part of the evaluation contract. See ",[636,637,190],"a",{"href":191},".",[374,640,642],{"id":641},"live-vllm-checklist","Live vLLM checklist",[644,645,646,649,659,668,671],"ol",{},[385,647,648],{},"Start an OpenAI-compatible vLLM server with a model name that matches configuration.",[385,650,651,652,655,656,638],{},"Set ",[388,653,654],{},"IBEX_WORKER_EXTRACTION_PROVIDER=vllm"," and ",[388,657,658],{},"IBEX_WORKER_EXTRACTION_BASE_URL",[385,660,651,661,664,665,667],{},[388,662,663],{},"IBEX_WORKER_MEMORY_BASE_URL"," and a ",[388,666,560],{}," token.",[385,669,670],{},"Enqueue a completed session.",[385,672,673,674,677],{},"Confirm the task returns ",[388,675,676],{},"ok",", the JSON matches the schema, memory receives one POST per memory, and trace rows contain counts but no prompt or completion text.",[374,679,681],{"id":680},"limits","Limits",[382,683,684,687,690,693],{},[385,685,686],{},"Mocked unit tests are not live integration evidence.",[385,688,689],{},"The evaluation gate is not a hosted quality guarantee, and the oracle-aligned 1.0 baseline is not live quality evidence.",[385,691,692],{},"Prompt and schema hashes do not prove extraction correctness.",[385,694,695],{},"Queue durability and exactly-once projection remain open.",[697,698,699],"style",{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}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);}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}",{"title":485,"searchDepth":593,"depth":593,"links":701},[702,703,704,705,706,707],{"id":376,"depth":593,"text":377},{"id":417,"depth":593,"text":418},{"id":542,"depth":593,"text":543},{"id":566,"depth":593,"text":567},{"id":641,"depth":593,"text":642},{"id":680,"depth":593,"text":681},"Session-to-memory extraction, provider adapters, gold-set evaluation, and live vLLM limitations.","md",false,{},true,"provisional",{"title":182,"description":708},"services\u002Fworker\u002Fapp\u002Ftasks\u002Fextraction.py; services\u002Fworker\u002Fapp\u002Fextraction; services\u002Fworker\u002Feval","I-NUmtLEW1DEufB5ZvQGX-Dh4X5eItBtgUKO4O5Rwy0",[718,720],{"title":178,"path":179,"stem":180,"description":719,"children":-1},"Celery queues, task lifecycle, dead letters, enqueue admission, and operational limits.",{"title":186,"path":187,"stem":188,"description":721,"children":-1},"Embedding profiles, backend geometry checks, tenant-scoped caching, and readiness boundaries.",1792875076395]