[{"data":1,"prerenderedAt":696},["ShallowReactive",2],{"navigation_docs":3,"-docs-memory-write-path":356,"-docs-memory-write-path-surround":691},[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":150,"audience":358,"author":359,"authorUrl":359,"body":360,"coverIndex":359,"coverLabel":359,"coverTone":359,"date":359,"decisionStatus":359,"description":682,"excerpt":359,"extension":683,"featured":684,"historical":684,"meta":685,"navigation":686,"path":151,"readingTime":359,"scope":687,"seo":688,"sourceOfTruth":689,"status":374,"stem":152,"tags":359,"verifiedDate":375,"__hash__":690},"docs\u002Fdocs\u002F05.memory\u002F02.write-path.md","integrator",null,{"type":361,"value":362,"toc":668},"minimark",[363,371,376,381,446,451,458,462,481,484,488,491,495,498,502,509,513,516,540,547,551,562,566,569,573,584,657,661,664],[364,365,366,370],"p",{},[367,368,369],"code",{},"POST \u002Fv1\u002Fmemories"," is an idempotent write pipeline, not a single insert. Each stage has a narrow responsibility and a documented failure mode.",[372,373],"page-status",{"status":374,"verified":375},"IMPLEMENTED","2026-10-21",[377,378,380],"h2",{"id":379},"stage-order","Stage order",[382,383,388],"pre",{"className":384,"code":385,"language":386,"meta":387,"style":387},"language-mermaid shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","flowchart LR\n  Validate[\"Validate\"] --> PII[\"PII detect \u002F redact\"]\n  PII --> Exact[\"Exact dedup\"]\n  Exact --> Embed[\"Embed\"]\n  Embed --> Near[\"Near dedup\"]\n  Near --> Conflict[\"Conflict \u002F supersession\"]\n  Conflict --> Labels[\"Labels\"]\n  Labels --> Persist[\"Transactional persist\"]\n  Persist --> Effects[\"After-commit cache + vector upsert\"]\n","mermaid","",[367,389,390,398,404,410,416,422,428,434,440],{"__ignoreMap":387},[391,392,395],"span",{"class":393,"line":394},"line",1,[391,396,397],{},"flowchart LR\n",[391,399,401],{"class":393,"line":400},2,[391,402,403],{},"  Validate[\"Validate\"] --> PII[\"PII detect \u002F redact\"]\n",[391,405,407],{"class":393,"line":406},3,[391,408,409],{},"  PII --> Exact[\"Exact dedup\"]\n",[391,411,413],{"class":393,"line":412},4,[391,414,415],{},"  Exact --> Embed[\"Embed\"]\n",[391,417,419],{"class":393,"line":418},5,[391,420,421],{},"  Embed --> Near[\"Near dedup\"]\n",[391,423,425],{"class":393,"line":424},6,[391,426,427],{},"  Near --> Conflict[\"Conflict \u002F supersession\"]\n",[391,429,431],{"class":393,"line":430},7,[391,432,433],{},"  Conflict --> Labels[\"Labels\"]\n",[391,435,437],{"class":393,"line":436},8,[391,438,439],{},"  Labels --> Persist[\"Transactional persist\"]\n",[391,441,443],{"class":393,"line":442},9,[391,444,445],{},"  Persist --> Effects[\"After-commit cache + vector upsert\"]\n",[447,448,450],"h3",{"id":449},"_1-validate","1. Validate",[364,452,453,454,457],{},"The request must carry an organization and agent scope, content bounds, a source, and valid optional temporal fields. Explicit ",[367,455,456],{},"labels: []"," is invalid. Duplicate labels are rejected. Label count is limited to five.",[447,459,461],{"id":460},"_2-pii","2. PII",[364,463,464,465,468,469,472,473,476,477,480],{},"Presidio runs a two-tier detect\u002Fredact pass. The default redaction confidence is ",[367,466,467],{},"0.70","; the default spaCy model is ",[367,470,471],{},"en_core_web_md",". High-confidence findings are replaced with typed placeholders such as ",[367,474,475],{},"[EMAIL_ADDRESS]",". Low-confidence or disallowed findings can place the record in ",[367,478,479],{},"quarantined"," status.",[364,482,483],{},"Quarantined content is not ordinary active memory and must not be injected as trusted context.",[447,485,487],{"id":486},"_3-exact-dedup","3. Exact dedup",[364,489,490],{},"Content is normalized after PII processing and hashed with SHA-256. An active row with the same hash is treated as an exact duplicate; retrieval metadata is bumped and embedding is skipped. A partial unique index protects active rows.",[447,492,494],{"id":493},"_4-embed","4. Embed",[364,496,497],{},"The embedder produces the vector for the redacted content. Embedding failures are errors, not a reason to persist a half-written active record.",[447,499,501],{"id":500},"_5-near-dedup","5. Near dedup",[364,503,504,505,508],{},"The service searches for a sufficiently similar existing memory. The default threshold is ",[367,506,507],{},"0.92"," with strict greater-than comparison. A match is reported as a near duplicate; it is not silently treated as semantically identical for all purposes.",[447,510,512],{"id":511},"_6-conflict-and-supersession","6. Conflict and supersession",[364,514,515],{},"Conflict handling is interval-overlap-first:",[517,518,519,531,537],"ul",{},[520,521,522,523,526,527,530],"li",{},"Same subject, newer ",[367,524,525],{},"valid_from",", and non-overlapping intervals can produce ",[367,528,529],{},"supersedes"," without an LLM call.",[520,532,533,534,536],{},"Overlapping intervals or missing ",[367,535,525],{}," may use the pluggable classifier.",[520,538,539],{},"Relationships are persisted with explicit tenant scope.",[364,541,542,543,546],{},"Conflict detection is enabled by default via ",[367,544,545],{},"IBEX_MEMORY_CONFLICT_DETECTION_ENABLED",".",[447,548,550],{"id":549},"_7-labels","7. Labels",[364,552,553,554,557,558,561],{},"Writes may include one to five labels, each with a confidence. If labels are omitted, the service synthesizes a backward-compatible label from scalar ",[367,555,556],{},"category"," and ",[367,559,560],{},"confidence",". The application never updates the primary category directly; a database trigger owns that projection.",[447,563,565],{"id":564},"_8-persist-and-after-commit-effects","8. Persist and after-commit effects",[364,567,568],{},"The memory row, labels, and relationship changes are written in one transaction. After commit, the service updates the optional Redis cache and the vector index. Cache failures do not erase the durable record; they degrade read performance.",[377,570,572],{"id":571},"idempotency","Idempotency",[364,574,575,576,579,580,583],{},"Send ",[367,577,578],{},"X-Idempotency-Key"," for safe retries. The ledger is scoped by ",[367,581,582],{},"(org, agent, key)",":",[585,586,587,600],"table",{},[588,589,590],"thead",{},[591,592,593,597],"tr",{},[594,595,596],"th",{},"Case",[594,598,599],{},"Result",[601,602,603,612,622,636,646],"tbody",{},[591,604,605,609],{},[606,607,608],"td",{},"Same key, same body",[606,610,611],{},"Replay the stored 2xx response",[591,613,614,617],{},[606,615,616],{},"Same key, different body",[606,618,619],{},[367,620,621],{},"409 IDEMPOTENCY_CONFLICT",[591,623,624,627],{},[606,625,626],{},"Claim still active",[606,628,629,632,633],{},[367,630,631],{},"409 IDEMPOTENCY_IN_PROGRESS"," with ",[367,634,635],{},"Retry-After",[591,637,638,641],{},[606,639,640],{},"PostgreSQL unavailable for a keyed write",[606,642,643],{},[367,644,645],{},"503 IDEMPOTENCY_UNAVAILABLE",[591,647,648,651],{},[606,649,650],{},"Row committed but claim cannot finalize",[606,652,653,656],{},[367,654,655],{},"503","; do not report success over an unfinished claim",[377,658,660],{"id":659},"logging-rule","Logging rule",[364,662,663],{},"The pipeline logs identifiers, stage outcomes, and timings. It does not log raw content, embeddings, or credentials. Use the memory ID and request ID for diagnosis.",[665,666,667],"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":387,"searchDepth":400,"depth":400,"links":669},[670,680,681],{"id":379,"depth":400,"text":380,"children":671},[672,673,674,675,676,677,678,679],{"id":449,"depth":406,"text":450},{"id":460,"depth":406,"text":461},{"id":486,"depth":406,"text":487},{"id":493,"depth":406,"text":494},{"id":500,"depth":406,"text":501},{"id":511,"depth":406,"text":512},{"id":549,"depth":406,"text":550},{"id":564,"depth":406,"text":565},{"id":571,"depth":400,"text":572},{"id":659,"depth":400,"text":660},"How a memory moves from validated input through PII, dedup, conflict handling, labels, and durable storage.","md",false,{},true,"shipped-local",{"title":150,"description":682},"services\u002Fmemory\u002Fapp\u002Fpipeline; services\u002Fmemory\u002Fapp\u002Fwrite; services\u002Fmemory\u002Fapp\u002Fdedup; services\u002Fmemory\u002Fapp\u002Fconflict","68BWsfMDtHzyXMTXh4Bhh1QCV3hRXYZkLacrI5EaT0A",[692,694],{"title":146,"path":147,"stem":148,"description":693,"children":-1},"The IBEX memory substrate — writes, dedup, conflict candidates, temporal reads, and pgvector retrieval.",{"title":154,"path":155,"stem":156,"description":695,"children":-1},"The vector-plus-full-text read path, composite ranking, hot cache, feedback, and the provisional tombstone contract.",1792875075672]