[{"data":1,"prerenderedAt":1078},["ShallowReactive",2],{"navigation_docs":3,"-docs-architecture-target-architecture":356,"-docs-architecture-target-architecture-surround":1073},[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":61,"audience":358,"author":359,"authorUrl":359,"body":360,"coverIndex":359,"coverLabel":359,"coverTone":359,"date":359,"decisionStatus":359,"description":1064,"excerpt":359,"extension":1065,"featured":1066,"historical":1066,"meta":1067,"navigation":1068,"path":62,"readingTime":359,"scope":1069,"seo":1070,"sourceOfTruth":1071,"status":367,"stem":63,"tags":359,"verifiedDate":368,"__hash__":1072},"docs\u002Fdocs\u002F02.architecture\u002F06.target-architecture.md","architect",null,{"type":361,"value":362,"toc":1054},"minimark",[363,369,387,392,395,473,550,553,557,560,568,571,591,608,612,717,720,735,739,828,831,835,885,892,896,992,996,1019,1023,1050],[364,365],"page-status",{"note":366,"status":367,"verified":368},"Target contract; only the locally evidenced subset is running","PROPOSED","2026-10-21",[370,371,372,373,377,378,382,383,386],"p",{},"This page describes the ",[374,375,376],"strong",{},"target architecture",", not the current deployment. It exists to keep implementation work aligned with the authority boundaries in ",[379,380,381],"code",{},"engineering\u002Farchitecture-v2",". For what is actually running, read ",[384,385,57],"a",{"href":58},".",[388,389,391],"h2",{"id":390},"planes-not-just-services","Planes, not just services",[370,393,394],{},"The target separates five concerns so a dependency failure or model output cannot quietly become authority.",[396,397,398,414],"table",{},[399,400,401],"thead",{},[402,403,404,408,411],"tr",{},[405,406,407],"th",{},"Plane",[405,409,410],{},"Owns",[405,412,413],{},"Must not do",[415,416,417,429,440,451,462],"tbody",{},[402,418,419,423,426],{},[420,421,422],"td",{},"Enforcement",[420,424,425],{},"Verified principal propagation, deterministic authorization, policy epoch, capability admission, reservations, rate\u002Fconcurrency, bounded context calls, provider selection, streaming, final allow\u002Fdeny",[420,427,428],{},"Extract memory, run deep PII, render operator views, or treat classifier output as permission",[402,430,431,434,437],{},[420,432,433],{},"Context and memory",[420,435,436],{},"Sessions\u002Fcheckpoints, typed memory, retrieval, PII\u002Fquarantine, embeddings, context compilation, provenance-bearing manifests",[420,438,439],{},"Widen visibility, promote a candidate into policy, or authorize a provider call",[402,441,442,445,448],{},[420,443,444],{},"Provider",[420,446,447],{},"Immutable deployment identities, adapters, capability manifests, tokenizer\u002Fpricing metadata, streaming normalization, usage reconciliation, retries, breakers",[420,449,450],{},"Authorize a tenant or override a reservation",[402,452,453,456,459],{},[420,454,455],{},"Evidence and control",[420,457,458],{},"Canonical configuration, policy\u002Fdirective lifecycle, provider registry, reservations, operation state, deletion state, transactional outbox, artifact metadata, recovery",[420,460,461],{},"Treat ClickHouse, Redis, queues, or OTel as the sole authority",[402,463,464,467,470],{},[420,465,466],{},"Operator and MCP",[420,468,469],{},"Management API, Console\u002FBFF, narrow authenticated MCP tools",[420,471,472],{},"Write databases directly, become an OAuth identity provider, or let UI state grant authority",[474,475,480],"pre",{"className":476,"code":477,"language":478,"meta":479,"style":479},"language-mermaid shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","flowchart LR\n  A[\"Agent frameworks\"] --> E[\"Enforcement plane\u003Cbr\u002F>Go proxy\"]\n  E --> C[\"Context and memory plane\"]\n  E --> P[\"Provider plane\"]\n  E --> X[\"Evidence and control plane\"]\n  O[\"Console + Management API\"] --> X\n  M[\"MCP boundary\"] --> E\n  W[\"Async workers\"] --> C\n  W --> X\n  C --> X\n  P --> X\n","mermaid","",[379,481,482,490,496,502,508,514,520,526,532,538,544],{"__ignoreMap":479},[483,484,487],"span",{"class":485,"line":486},"line",1,[483,488,489],{},"flowchart LR\n",[483,491,493],{"class":485,"line":492},2,[483,494,495],{},"  A[\"Agent frameworks\"] --> E[\"Enforcement plane\u003Cbr\u002F>Go proxy\"]\n",[483,497,499],{"class":485,"line":498},3,[483,500,501],{},"  E --> C[\"Context and memory plane\"]\n",[483,503,505],{"class":485,"line":504},4,[483,506,507],{},"  E --> P[\"Provider plane\"]\n",[483,509,511],{"class":485,"line":510},5,[483,512,513],{},"  E --> X[\"Evidence and control plane\"]\n",[483,515,517],{"class":485,"line":516},6,[483,518,519],{},"  O[\"Console + Management API\"] --> X\n",[483,521,523],{"class":485,"line":522},7,[483,524,525],{},"  M[\"MCP boundary\"] --> E\n",[483,527,529],{"class":485,"line":528},8,[483,530,531],{},"  W[\"Async workers\"] --> C\n",[483,533,535],{"class":485,"line":534},9,[483,536,537],{},"  W --> X\n",[483,539,541],{"class":485,"line":540},10,[483,542,543],{},"  C --> X\n",[483,545,547],{"class":485,"line":546},11,[483,548,549],{},"  P --> X\n",[370,551,552],{},"The current codebase implements parts of this map: the Go proxy is the enforcement edge today, the Python memory service owns memory writes and reads, and the management API owns some control-plane routes. The target adds explicit contracts between them; it does not mean every plane is independently deployable.",[388,554,556],{"id":555},"authority-lattice","Authority lattice",[370,558,559],{},"The target ordering is:",[474,561,566],{"className":562,"code":564,"language":565,"meta":479},[563],"language-text","verified principal → policy snapshot → capability admission → reservation\n→ authorized context → provider\u002Ftool execution → evidence\u002Freconciliation\n","text",[379,567,564],{"__ignoreMap":479},[370,569,570],{},"A downstream layer cannot manufacture authority an upstream layer did not grant. This is stricter than ordinary service layering:",[572,573,574,578,585,588],"ul",{},[575,576,577],"li",{},"A valid bearer token is necessary but not sufficient; the selected agent must match any token binding.",[575,579,580,581,584],{},"A retrieval score, cache hit, model confidence, memory body, tool description, or provider response is ",[374,582,583],{},"data",", not permission.",[575,586,587],{},"Missing, stale, contradictory, or unavailable security state denies or returns a typed dependency failure. It never becomes an empty allow.",[575,589,590],{},"A run identifier is lineage and correlation only. Reusing or forging a run does not carry authority.",[370,592,593,594,597,598,601,602,386],{},"The proposed ",[379,595,596],{},"PrincipalContext"," and ",[379,599,600],{},"RunEnvelope"," contracts formalize this, but neither is a repo-wide runtime contract today. See ",[384,603,607],{"href":604,"rel":605},"https:\u002F\u002Fgithub.com\u002FRick1330\u002Fibex-harness\u002Fblob\u002Fmain\u002Fengineering\u002Fadr\u002F0084-g0-principal-agent-binding-and-idempotency.md",[606],"nofollow","ADR-0084",[388,609,611],{"id":610},"canonical-ownership","Canonical ownership",[396,613,614,627],{},[399,615,616],{},[402,617,618,621,624],{},[405,619,620],{},"Store or component",[405,622,623],{},"Canonical role",[405,625,626],{},"Not authoritative for",[415,628,629,640,651,662,673,684,695,706],{},[402,630,631,634,637],{},[420,632,633],{},"PostgreSQL",[420,635,636],{},"Tenants, policy, provider registry, reservations, operations, lifecycle, outbox",[420,638,639],{},"Approximate search ranking",[402,641,642,645,648],{},[420,643,644],{},"Redis",[420,646,647],{},"Namespaced cache, bounded counters and leases, hot projection",[420,649,650],{},"Durable auth, billing, audit, deletion truth",[402,652,653,656,659],{},[420,654,655],{},"pgvector and full-text search",[420,657,658],{},"Search projections",[420,660,661],{},"Visibility or semantic truth",[402,663,664,667,670],{},[420,665,666],{},"ClickHouse",[420,668,669],{},"Tenant-filtered analytics and evidence projection",[420,671,672],{},"Sole audit authority",[402,674,675,678,681],{},[420,676,677],{},"Object storage",[420,679,680],{},"Classified large or redacted artifacts; immutable model artifacts",[420,682,683],{},"An undeclared source of truth",[402,685,686,689,692],{},[420,687,688],{},"Queue\u002FCelery\u002Fstreams",[420,690,691],{},"Delivery transport",[420,693,694],{},"Exactly-once effects without idempotent handling",[402,696,697,700,703],{},[420,698,699],{},"OpenTelemetry",[420,701,702],{},"Export and correlation",[420,704,705],{},"Durable audit ledger",[402,707,708,711,714],{},[420,709,710],{},"Browser\u002FConsole",[420,712,713],{},"Presentation and API client",[420,715,716],{},"Policy or direct storage access",[370,718,719],{},"Two consequences matter operationally:",[721,722,723,729],"ol",{},[575,724,725,728],{},[374,726,727],{},"Projections must be rebuildable or explicitly marked otherwise."," A cache or index cannot be the only copy of a deletion or authorization decision.",[575,730,731,734],{},[374,732,733],{},"Tombstones suppress reads immediately."," Physical purge is asynchronous; a delayed projection must not resurrect the row.",[388,736,738],{"id":737},"trust-boundary-matrix","Trust-boundary matrix",[396,740,741,757],{},[399,742,743],{},[402,744,745,748,751,754],{},[405,746,747],{},"Boundary",[405,749,750],{},"Verified authority source",[405,752,753],{},"Caller-controlled selectors",[405,755,756],{},"Required failure behavior",[415,758,759,773,787,801,814],{},[402,760,761,764,767,770],{},[420,762,763],{},"HTTP to proxy",[420,765,766],{},"AuthService validation plus enforcement policy",[420,768,769],{},"Agent, project, session, resource IDs",[420,771,772],{},"Deny or typed 503 before downstream work",[402,774,775,778,781,784],{},[420,776,777],{},"Proxy to context",[420,779,780],{},"Server-bound principal context",[420,782,783],{},"Context selectors only",[420,785,786],{},"Reject mismatch or unavailable verifier; no permissive fallback",[402,788,789,792,795,798],{},[420,790,791],{},"Worker job",[420,793,794],{},"Authenticated operation\u002Frun envelope",[420,796,797],{},"Job payload references",[420,799,800],{},"Revalidate tenant, resource, and policy before mutation",[402,802,803,805,808,811],{},[420,804,228],{},[420,806,807],{},"Resource-server principal plus tool registry\u002Fpolicy",[420,809,810],{},"Tool arguments and resource IDs",[420,812,813],{},"Deny before memory or effect call; avoid existence leaks",[402,815,816,819,822,825],{},[420,817,818],{},"Evidence",[420,820,821],{},"Server-generated operation\u002Fevent envelope",[420,823,824],{},"None for authority fields",[420,826,827],{},"Reject unscoped or unredacted payloads before persistence",[370,829,830],{},"The first row is implemented locally through the proxy's token and agent checks. The rest are target contracts or narrow local slices, not universal enforcement.",[388,832,834],{"id":833},"deployment-profiles","Deployment profiles",[396,836,837,850],{},[399,838,839],{},[402,840,841,844,847],{},[405,842,843],{},"Profile",[405,845,846],{},"Intended use",[405,848,849],{},"What acceptance means",[415,851,852,863,874],{},[402,853,854,857,860],{},[420,855,856],{},"Development Compose",[420,858,859],{},"Local contributor workflow",[420,861,862],{},"Convenience. No availability, recovery, or hosted claim.",[402,864,865,868,871],{},[420,866,867],{},"Single-node self-hosted",[420,869,870],{},"Small controlled installation",[420,872,873],{},"Documented backup, resource, dependency, and operator limits.",[402,875,876,879,882],{},[420,877,878],{},"HA production",[420,880,881],{},"Hosted or engineered production",[420,883,884],{},"Named owners, recovery drills, SLO evidence, isolation proof, and incident ownership.",[370,886,887,888,891],{},"Evidence must name the profile. A feature accepted in Compose is not automatically accepted in HA production. The Helm chart in ",[379,889,890],{},"infra\u002Fhelm\u002Fibex-harness"," is render\u002Flint scaffolding with sentinel images; it is not a deployable production topology.",[388,893,895],{"id":894},"current-versus-target","Current versus target",[396,897,898,911],{},[399,899,900],{},[402,901,902,905,908],{},[405,903,904],{},"Capability",[405,906,907],{},"Local current state",[405,909,910],{},"Target contract",[415,912,913,927,938,949,960,971,981],{},[402,914,915,918,921],{},[420,916,917],{},"Principal propagation",[420,919,920],{},"AuthService validation plus proxy agent checks",[420,922,923,924,926],{},"Signed ",[379,925,596],{}," across protected boundaries",[402,928,929,932,935],{},[420,930,931],{},"Policy authority",[420,933,934],{},"Signed snapshots in selected proxy paths",[420,936,937],{},"Immutable snapshot with epoch, digest, freshness, and deny semantics everywhere",[402,939,940,943,946],{},[420,941,942],{},"Idempotency",[420,944,945],{},"Durable PostgreSQL ledger for registered slices",[420,947,948],{},"Per-operation scope, canonical body hash, replay\u002Fconflict semantics",[402,950,951,954,957],{},[420,952,953],{},"Budget reservation",[420,955,956],{},"Durable hard-cap holds in a bounded path",[420,958,959],{},"Atomic admission and reconciliation with no double-spend",[402,961,962,965,968],{},[420,963,964],{},"Memory lifecycle",[420,966,967],{},"Typed rows, tombstones, revision fences, provisional forget",[420,969,970],{},"Provenance ledger with deletion certificates and projection fencing",[402,972,973,975,978],{},[420,974,818],{},[420,976,977],{},"PostgreSQL outbox plus default-off relay",[420,979,980],{},"Durable-before-ack where required, production sink, recovery proof",[402,982,983,986,989],{},[420,984,985],{},"Operator reads",[420,987,988],{},"Mounted D1\u002FD2 metadata slices",[420,990,991],{},"Versioned support surface with hosted identity, origin, and retention evidence",[388,993,995],{"id":994},"what-this-page-does-not-claim","What this page does not claim",[572,997,998,1007,1010,1013,1016],{},[575,999,1000,1001,1003,1004,1006],{},"No repo-wide ",[379,1002,596],{},", ",[379,1005,600],{},", or policy snapshot is enforced today.",[575,1008,1009],{},"No atomic reservation or exactly-once billing claim is supported.",[575,1011,1012],{},"No production ClickHouse sink, hosted recovery, or HA topology is accepted.",[575,1014,1015],{},"No model classifier or advisory service can authorize, delete, or widen scope.",[575,1017,1018],{},"No current latency number is a hosted SLO.",[388,1020,1022],{"id":1021},"related","Related",[572,1024,1025,1030,1035,1040,1045],{},[575,1026,1027,1029],{},[384,1028,71],{"href":42}," — running components",[575,1031,1032,1034],{},[384,1033,49],{"href":50}," — the current protected path",[575,1036,1037,1039],{},[384,1038,57],{"href":58}," — evidence labels and open gaps",[575,1041,1042,1044],{},[384,1043,248],{"href":249}," — fail-closed rules",[575,1046,1047,1049],{},[384,1048,353],{"href":354}," — supported surfaces and change policy",[1051,1052,1053],"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":479,"searchDepth":492,"depth":492,"links":1055},[1056,1057,1058,1059,1060,1061,1062,1063],{"id":390,"depth":492,"text":391},{"id":555,"depth":492,"text":556},{"id":610,"depth":492,"text":611},{"id":737,"depth":492,"text":738},{"id":833,"depth":492,"text":834},{"id":894,"depth":492,"text":895},{"id":994,"depth":492,"text":995},{"id":1021,"depth":492,"text":1022},"The plane boundaries, authority lattice, and deployment profiles that guide current implementation work.","md",false,{},true,"design-intent",{"title":61,"description":1064},"engineering\u002Farchitecture-v2\u002F01-target-topology.md; engineering\u002Farchitecture-v2\u002F02-plane-boundaries.md; engineering\u002Farchitecture-v2\u002F06-authority-and-data-ownership.md","DQJrpC03zRrFGNyjT23JPMcV0jIuuNdePdu-gJwfI2A",[1074,1076],{"title":57,"path":58,"stem":59,"description":1075,"children":-1},"How IBEX Harness labels claims, what is implemented locally, and what remains open.",{"title":65,"path":66,"stem":67,"description":1077,"children":-1},"Organizations, agents, PATs, permission bitmaps, and tenant-scoped identity.",1792875073782]