[{"data":1,"prerenderedAt":998},["ShallowReactive",2],{"navigation_docs":3,"-docs-intelligence-workers":356,"-docs-intelligence-workers-surround":993},[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":178,"audience":358,"author":359,"authorUrl":359,"body":360,"coverIndex":359,"coverLabel":359,"coverTone":359,"date":359,"decisionStatus":359,"description":985,"excerpt":359,"extension":986,"featured":987,"historical":987,"meta":988,"navigation":883,"path":179,"readingTime":359,"scope":989,"seo":990,"sourceOfTruth":991,"status":371,"stem":180,"tags":359,"verifiedDate":372,"__hash__":992},"docs\u002Fdocs\u002F07.intelligence\u002F01.workers.md","operator",null,{"type":361,"value":362,"toc":976},"minimark",[363,367,373,378,429,444,448,536,540,554,569,572,576,590,593,639,649,653,829,833,936,947,951,972],[364,365,366],"p",{},"The worker is a Python Celery process with four logical queues. It is not a single monolith task: each family has a different durability boundary.",[368,369],"page-status",{"note":370,"status":371,"verified":372},"Task families are implemented; queue durability and exactly-once projection are not certified","PROVISIONAL","2026-10-21",[374,375,377],"h2",{"id":376},"queues-and-order","Queues and order",[379,380,385],"pre",{"className":381,"code":382,"language":383,"meta":384,"style":384},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","celery -A app.celery_app:celery_app worker \\\n  -Q extraction,embedding,maintenance,mcp_audit \\\n  --loglevel=info\n","bash","",[386,387,388,412,423],"code",{"__ignoreMap":384},[389,390,393,397,401,405,408],"span",{"class":391,"line":392},"line",1,[389,394,396],{"class":395},"sYn-s","celery",[389,398,400],{"class":399},"sz9Cv"," -A",[389,402,404],{"class":403},"sTbE_"," app.celery_app:celery_app",[389,406,407],{"class":403}," worker",[389,409,411],{"class":410},"se3Ec"," \\\n",[389,413,415,418,421],{"class":391,"line":414},2,[389,416,417],{"class":399},"  -Q",[389,419,420],{"class":403}," extraction,embedding,maintenance,mcp_audit",[389,422,411],{"class":410},[389,424,426],{"class":391,"line":425},3,[389,427,428],{"class":399},"  --loglevel=info\n",[364,430,431,432,435,436,439,440,443],{},"Cross-queue order is the ",[386,433,434],{},"-Q"," order. Intra-extraction priority uses Celery Redis priority steps ",[386,437,438],{},"0–9",". RabbitMQ ",[386,441,442],{},"x-max-priority"," is not used.",[374,445,447],{"id":446},"task-families","Task families",[449,450,451,467],"table",{},[452,453,454],"thead",{},[455,456,457,461,464],"tr",{},[458,459,460],"th",{},"Family",[458,462,463],{},"Responsibility",[458,465,466],{},"Status",[468,469,470,481,492,503,514,525],"tbody",{},[455,471,472,475,478],{},[473,474,182],"td",{},[473,476,477],{},"Read completed session turns, call an extraction provider, write memories",[473,479,480],{},"Implemented; live vLLM manual",[455,482,483,486,489],{},[473,484,485],{},"Embedding",[473,487,488],{},"Async embedding jobs",[473,490,491],{},"Implemented",[455,493,494,497,500],{},[473,495,496],{},"Organization deletion",[473,498,499],{},"Orchestrate tenant deletion and receipts",[473,501,502],{},"Implemented; certification open",[455,504,505,508,511],{},[473,506,507],{},"Billing",[473,509,510],{},"Reconcile usage and roll up budgets",[473,512,513],{},"Implemented; hosted evidence open",[455,515,516,519,522],{},[473,517,518],{},"Maintenance",[473,520,521],{},"Beat sweep and housekeeping",[473,523,524],{},"No-op\u002Fdeferred",[455,526,527,530,533],{},[473,528,529],{},"MCP audit",[473,531,532],{},"Fan out tool-call audit events",[473,534,535],{},"Implemented; sink durability varies",[374,537,539],{"id":538},"retry-and-dead-letters","Retry and dead letters",[364,541,542,545,546,549,550,553],{},[386,543,544],{},"IbexTask"," owns the retry policy. There is no per-task ",[386,547,548],{},"on_failure"," override; lifecycle signals in ",[386,551,552],{},"app\u002Fobservability.py"," handle failures.",[364,555,556,557,560,561,564,565,568],{},"Exhausted retries are persisted to ",[386,558,559],{},"ibex_core.failed_tasks"," and increment ",[386,562,563],{},"ibex_worker_task_dead_letter_total{task_name}",". The alert rule is ",[386,566,567],{},"IBEXWorkerTaskDeadLettered",".",[364,570,571],{},"A dead-letter row is evidence that retries were exhausted. It is not automatic remediation. Operators must inspect the task, decide whether replay is safe, and verify the downstream effect.",[374,573,575],{"id":574},"enqueue-admission","Enqueue admission",[364,577,578,581,582,585,586,589],{},[386,579,580],{},"POST :8007\u002Finternal\u002Fextraction\u002Fenqueue"," accepts extraction work only when ",[386,583,584],{},"IBEX_WORKER_ENQUEUE_API_TOKEN"," is set. The endpoint requires that static bearer plus an ",[386,587,588],{},"Idempotency-Key"," of at most 256 characters.",[364,591,592],{},"Admission behavior:",[594,595,596,600,603,606,612,621,624,634],"ul",{},[597,598,599],"li",{},"The normalized payload, including every turn, is hashed.",[597,601,602],{},"The tenant-scoped PostgreSQL idempotency ledger claims the key before Celery dispatch.",[597,604,605],{},"Replay returns the original task ID.",[597,607,608,609,568],{},"A changed payload returns ",[386,610,611],{},"409",[597,613,614,615,617,618,568],{},"An active claim returns ",[386,616,611],{}," with ",[386,619,620],{},"Retry-After",[597,622,623],{},"Dispatch failure releases the claim.",[597,625,626,627,630,631,633],{},"If dispatch succeeds but finalization does not commit, the endpoint returns ",[386,628,629],{},"503","; retries may see ",[386,632,611],{}," until the 120-second lease expires.",[597,635,636,637,568],{},"Without PostgreSQL, the endpoint fails closed with ",[386,638,629],{},[364,640,641,644,645,648],{},[386,642,643],{},"GET :8007\u002Fhealth"," is unauthenticated liveness only. ",[386,646,647],{},"GET :8007\u002Fready"," checks the token, PostgreSQL ledger, and Redis broker.",[374,650,652],{"id":651},"configuration-highlights","Configuration highlights",[449,654,655,668],{},[452,656,657],{},[455,658,659,662,665],{},[458,660,661],{},"Variable",[458,663,664],{},"Default",[458,666,667],{},"Why it matters",[468,669,670,683,695,710,725,737,752,767,787,799,814],{},[455,671,672,677,680],{},[473,673,674],{},[386,675,676],{},"IBEX_WORKER_BROKER_URL",[473,678,679],{},"derived",[473,681,682],{},"Full broker override",[455,684,685,690,692],{},[473,686,687],{},[386,688,689],{},"IBEX_WORKER_RESULT_BACKEND",[473,691,679],{},[473,693,694],{},"Full result-backend override",[455,696,697,702,707],{},[473,698,699],{},[386,700,701],{},"REDIS_DB_QUEUE",[473,703,704],{},[386,705,706],{},"1",[473,708,709],{},"Keeps queue keys out of cache DB",[455,711,712,717,722],{},[473,713,714],{},[386,715,716],{},"REDIS_DB_RESULTS",[473,718,719],{},[386,720,721],{},"3",[473,723,724],{},"Result TTL storage",[455,726,727,731,734],{},[473,728,729],{},[386,730,584],{},[473,732,733],{},"unset",[473,735,736],{},"Missing means the enqueue server does not start",[455,738,739,744,749],{},[473,740,741],{},[386,742,743],{},"IBEX_WORKER_METRICS_PORT",[473,745,746],{},[386,747,748],{},"8006",[473,750,751],{},"Prometheus exposition",[455,753,754,759,764],{},[473,755,756],{},[386,757,758],{},"IBEX_WORKER_ENQUEUE_PORT",[473,760,761],{},[386,762,763],{},"8007",[473,765,766],{},"Enqueue and readiness HTTP",[455,768,769,774,779],{},[473,770,771],{},[386,772,773],{},"IBEX_WORKER_EXTRACTION_PROVIDER",[473,775,776],{},[386,777,778],{},"openai",[473,780,781,783,784],{},[386,782,778],{}," or ",[386,785,786],{},"vllm",[455,788,789,794,796],{},[473,790,791],{},[386,792,793],{},"IBEX_WORKER_MEMORY_BASE_URL",[473,795,733],{},[473,797,798],{},"Memory service origin",[455,800,801,806,808],{},[473,802,803],{},[386,804,805],{},"IBEX_WORKER_MEMORY_API_TOKEN",[473,807,733],{},[473,809,810,811],{},"Bearer with ",[386,812,813],{},"memory:write",[455,815,816,821,826],{},[473,817,818],{},[386,819,820],{},"OTEL_SAMPLE_RATIO",[473,822,823],{},[386,824,825],{},"0.01",[473,827,828],{},"Trace sampling",[374,830,832],{"id":831},"run-locally","Run locally",[379,834,836],{"className":381,"code":835,"language":383,"meta":384,"style":384},"make compose-dev-up\nmake db-migrate\ncd services\u002Fworker && uv sync --extra dev\n\nexport POSTGRES_DSN='postgres:\u002F\u002Fibex:ibex@127.0.0.1:5432\u002Fibex?sslmode=disable'\ncelery -A app.celery_app:celery_app worker \\\n  -Q extraction,embedding,maintenance,mcp_audit \\\n  --loglevel=info\n",[386,837,838,846,853,878,885,909,922,931],{"__ignoreMap":384},[389,839,840,843],{"class":391,"line":392},[389,841,842],{"class":395},"make",[389,844,845],{"class":403}," compose-dev-up\n",[389,847,848,850],{"class":391,"line":414},[389,849,842],{"class":395},[389,851,852],{"class":403}," db-migrate\n",[389,854,855,859,862,866,869,872,875],{"class":391,"line":425},[389,856,858],{"class":857},"sJdAF","cd",[389,860,861],{"class":403}," services\u002Fworker",[389,863,865],{"class":864},"soVBu"," &&",[389,867,868],{"class":395}," uv",[389,870,871],{"class":403}," sync",[389,873,874],{"class":399}," --extra",[389,876,877],{"class":403}," dev\n",[389,879,881],{"class":391,"line":880},4,[389,882,884],{"emptyLinePlaceholder":883},true,"\n",[389,886,888,892,896,899,903,906],{"class":391,"line":887},5,[389,889,891],{"class":890},"s5Kfy","export",[389,893,895],{"class":894},"sSC40"," POSTGRES_DSN",[389,897,898],{"class":864},"=",[389,900,902],{"class":901},"sbYkP","'",[389,904,905],{"class":403},"postgres:\u002F\u002Fibex:ibex@127.0.0.1:5432\u002Fibex?sslmode=disable",[389,907,908],{"class":901},"'\n",[389,910,912,914,916,918,920],{"class":391,"line":911},6,[389,913,396],{"class":395},[389,915,400],{"class":399},[389,917,404],{"class":403},[389,919,407],{"class":403},[389,921,411],{"class":410},[389,923,925,927,929],{"class":391,"line":924},7,[389,926,417],{"class":399},[389,928,420],{"class":403},[389,930,411],{"class":410},[389,932,934],{"class":391,"line":933},8,[389,935,428],{"class":399},[364,937,938,939,942,943,946],{},"Use ",[386,940,941],{},"make worker-beat-dev"," for beat and ",[386,944,945],{},"make worker-ping"," for a broker health check.",[374,948,950],{"id":949},"limits","Limits",[594,952,953,956,963,966,969],{},[597,954,955],{},"Queue registration is not a production-readiness claim.",[597,957,958,959,962],{},"Result TTL and ",[386,960,961],{},"task_ignore_result"," defaults matter for retry visibility.",[597,964,965],{},"The maintenance sweep is intentionally a no-op.",[597,967,968],{},"There is no GPU CI runner; mock transports do not prove live vLLM behavior.",[597,970,971],{},"Exactly-once projection into PostgreSQL, ClickHouse, and caches is not claimed.",[973,974,975],"style",{},"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}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}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 .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}",{"title":384,"searchDepth":414,"depth":414,"links":977},[978,979,980,981,982,983,984],{"id":376,"depth":414,"text":377},{"id":446,"depth":414,"text":447},{"id":538,"depth":414,"text":539},{"id":574,"depth":414,"text":575},{"id":651,"depth":414,"text":652},{"id":831,"depth":414,"text":832},{"id":949,"depth":414,"text":950},"Celery queues, task lifecycle, dead letters, enqueue admission, and operational limits.","md",false,{},"provisional",{"title":178,"description":985},"services\u002Fworker\u002FREADME.md","5tQVC-7bQWX_W78VFtzxpkCf4msbUB2UwyDhIf4vN08",[994,996],{"title":172,"path":173,"stem":174,"description":995,"children":-1},"Asynchronous workers, extraction, embeddings, deletion orchestration, and billing rollups.",{"title":182,"path":183,"stem":184,"description":997,"children":-1},"Session-to-memory extraction, provider adapters, gold-set evaluation, and live vLLM limitations.",1792875076295]