[{"data":1,"prerenderedAt":898},["ShallowReactive",2],{"navigation_docs":3,"-introduction-built-for-agents":357,"-introduction-built-for-agents-surround":895},[4,22,40,53,78,107,132,153,167,176,347],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Introduction","\u002Fintroduction","1.introduction",[9,13,17],{"title":10,"path":11,"stem":12},"Why the-i18n-kit","\u002Fintroduction\u002Fwhy","1.introduction\u002F1.why",{"title":14,"path":15,"stem":16},"Architecture","\u002Fintroduction\u002Farchitecture","1.introduction\u002F2.architecture",{"title":18,"path":19,"stem":20},"Built for Agents","\u002Fintroduction\u002Fbuilt-for-agents","1.introduction\u002F3.built-for-agents",false,{"title":23,"icon":24,"path":25,"stem":26,"children":27,"page":21},"ESLint Plugin","i-lucide-shield-check","\u002Feslint-plugin","10.eslint-plugin",[28,32,36],{"title":29,"path":30,"stem":31},"Install and Presets","\u002Feslint-plugin\u002Finstall","10.eslint-plugin\u002F1.install",{"title":33,"path":34,"stem":35},"The Rules","\u002Feslint-plugin\u002Frules","10.eslint-plugin\u002F2.rules",{"title":37,"path":38,"stem":39},"Layer-Aware Missing Keys","\u002Feslint-plugin\u002Flayer-aware","10.eslint-plugin\u002F3.layer-aware",{"title":41,"path":42,"stem":43,"children":44,"page":21},"Getting Started","\u002Fgetting-started","2.getting-started",[45,49],{"title":46,"path":47,"stem":48},"Set Up the MCP Server","\u002Fgetting-started\u002Fagent-setup","2.getting-started\u002F1.agent-setup",{"title":50,"path":51,"stem":52},"From an Unconfigured Repository to a Gated CI Job","\u002Fgetting-started\u002Fcold-start","2.getting-started\u002F2.cold-start",{"title":54,"path":55,"stem":56,"children":57,"page":21},"Monorepos","\u002Fmonorepos","3.monorepos",[58,62,66,70,74],{"title":59,"path":60,"stem":61},"Layers","\u002Fmonorepos\u002Flayers","3.monorepos\u002F1.layers",{"title":63,"path":64,"stem":65},"The Consumer Graph","\u002Fmonorepos\u002Fconsumer-graph","3.monorepos\u002F2.consumer-graph",{"title":67,"path":68,"stem":69},"The Shared Library Scenario","\u002Fmonorepos\u002Fshared-libraries","3.monorepos\u002F3.shared-libraries",{"title":71,"path":72,"stem":73},"Duplicates and Divergence","\u002Fmonorepos\u002Fduplicates-and-divergence","3.monorepos\u002F4.duplicates-and-divergence",{"title":75,"path":76,"stem":77},"Misplaced Usages","\u002Fmonorepos\u002Fmisplaced-usages","3.monorepos\u002F5.misplaced-usages",{"title":79,"path":80,"stem":81,"children":82,"page":21},"Frameworks","\u002Fframeworks","4.frameworks",[83,87,91,95,99,103],{"title":84,"path":85,"stem":86},"Detection","\u002Fframeworks\u002Fdetection","4.frameworks\u002F1.detection",{"title":88,"path":89,"stem":90},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F2.nuxt",{"title":92,"path":93,"stem":94},"Laravel","\u002Fframeworks\u002Flaravel","4.frameworks\u002F3.laravel",{"title":96,"path":97,"stem":98},"Vue","\u002Fframeworks\u002Fvue","4.frameworks\u002F4.vue",{"title":100,"path":101,"stem":102},"React \u002F Next.js","\u002Fframeworks\u002Freact-next","4.frameworks\u002F5.react-next",{"title":104,"path":105,"stem":106},"Generic","\u002Fframeworks\u002Fgeneric","4.frameworks\u002F6.generic",{"title":108,"path":109,"stem":110,"children":111,"page":21},"Configuration","\u002Fconfiguration","5.configuration",[112,116,120,124,128],{"title":113,"path":114,"stem":115},"Where Configuration Lives","\u002Fconfiguration\u002Fwhere-config-lives","5.configuration\u002F1.where-config-lives",{"title":117,"path":118,"stem":119},"Precedence and Conflicts","\u002Fconfiguration\u002Fprecedence","5.configuration\u002F2.precedence",{"title":121,"path":122,"stem":123},"Declared vs. Derived Configuration","\u002Fconfiguration\u002Fdeclared-vs-derived","5.configuration\u002F3.declared-vs-derived",{"title":125,"path":126,"stem":127},"Configuration Fields","\u002Fconfiguration\u002Freference","5.configuration\u002F4.reference",{"title":129,"path":130,"stem":131},"Referring to Locales","\u002Fconfiguration\u002Flocale-refs","5.configuration\u002F5.locale-refs",{"title":133,"path":134,"stem":135,"children":136,"page":21},"Nuxt Module","\u002Fnuxt-module","6.nuxt-module",[137,141,145,149],{"title":138,"path":139,"stem":140},"Install and Setup","\u002Fnuxt-module\u002Finstall","6.nuxt-module\u002F1.install",{"title":142,"path":143,"stem":144},"What It Publishes","\u002Fnuxt-module\u002Fwhat-it-publishes","6.nuxt-module\u002F2.what-it-publishes",{"title":146,"path":147,"stem":148},"What It Validates","\u002Fnuxt-module\u002Fvalidation","6.nuxt-module\u002F3.validation",{"title":150,"path":151,"stem":152},"Options and Limits","\u002Fnuxt-module\u002Foptions-and-limits","6.nuxt-module\u002F4.options-and-limits",{"title":154,"icon":155,"path":156,"stem":157,"children":158,"page":21},"CI\u002FCD","i-lucide-git-pull-request","\u002Fci-cd","7.ci-cd",[159,163],{"title":160,"path":161,"stem":162},"GitHub Actions","\u002Fci-cd\u002Fgithub-actions","7.ci-cd\u002F1.github-actions",{"title":164,"path":165,"stem":166},"GitLab CI","\u002Fci-cd\u002Fgitlab-ci","7.ci-cd\u002F2.gitlab-ci",{"title":168,"path":169,"stem":170,"children":171,"page":21},"Concepts","\u002Fconcepts","8.concepts",[172],{"title":173,"path":174,"stem":175},"Translation Modes","\u002Fconcepts\u002Ftranslation-modes","8.concepts\u002F1.translation-modes",{"title":177,"path":178,"stem":179,"children":180,"page":-1},"Reference","\u002Freference","9.reference",[181,183,261,339,343],{"title":177,"path":178,"stem":182},"9.reference\u002Findex",{"title":184,"path":185,"stem":186,"children":187,"page":-1},"CLI Commands","\u002Freference\u002Fcli","9.reference\u002F1.cli\u002Findex",[188,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257],{"title":184,"path":185,"stem":186},{"title":190,"path":191,"stem":192},"add","\u002Freference\u002Fcli\u002Fadd","9.reference\u002F1.cli\u002Fadd",{"title":194,"path":195,"stem":196},"check","\u002Freference\u002Fcli\u002Fcheck","9.reference\u002F1.cli\u002Fcheck",{"title":198,"path":199,"stem":200},"find-duplicates","\u002Freference\u002Fcli\u002Ffind-duplicates","9.reference\u002F1.cli\u002Ffind-duplicates",{"title":202,"path":203,"stem":204},"get","\u002Freference\u002Fcli\u002Fget","9.reference\u002F1.cli\u002Fget",{"title":206,"path":207,"stem":208},"init","\u002Freference\u002Fcli\u002Finit","9.reference\u002F1.cli\u002Finit",{"title":210,"path":211,"stem":212},"missing","\u002Freference\u002Fcli\u002Fmissing","9.reference\u002F1.cli\u002Fmissing",{"title":214,"path":215,"stem":216},"move","\u002Freference\u002Fcli\u002Fmove","9.reference\u002F1.cli\u002Fmove",{"title":218,"path":219,"stem":220},"remove","\u002Freference\u002Fcli\u002Fremove","9.reference\u002F1.cli\u002Fremove",{"title":222,"path":223,"stem":224},"remove-orphans","\u002Freference\u002Fcli\u002Fremove-orphans","9.reference\u002F1.cli\u002Fremove-orphans",{"title":226,"path":227,"stem":228},"rename","\u002Freference\u002Fcli\u002Frename","9.reference\u002F1.cli\u002Frename",{"title":230,"path":231,"stem":232},"scaffold","\u002Freference\u002Fcli\u002Fscaffold","9.reference\u002F1.cli\u002Fscaffold",{"title":234,"path":235,"stem":236},"scan","\u002Freference\u002Fcli\u002Fscan","9.reference\u002F1.cli\u002Fscan",{"title":238,"path":239,"stem":240},"search","\u002Freference\u002Fcli\u002Fsearch","9.reference\u002F1.cli\u002Fsearch",{"title":242,"path":243,"stem":244},"status","\u002Freference\u002Fcli\u002Fstatus","9.reference\u002F1.cli\u002Fstatus",{"title":246,"path":247,"stem":248},"translate","\u002Freference\u002Fcli\u002Ftranslate","9.reference\u002F1.cli\u002Ftranslate",{"title":250,"path":251,"stem":252},"translate-key","\u002Freference\u002Fcli\u002Ftranslate-key","9.reference\u002F1.cli\u002Ftranslate-key",{"title":254,"path":255,"stem":256},"update","\u002Freference\u002Fcli\u002Fupdate","9.reference\u002F1.cli\u002Fupdate",{"title":258,"path":259,"stem":260},"write","\u002Freference\u002Fcli\u002Fwrite","9.reference\u002F1.cli\u002Fwrite",{"title":262,"path":263,"stem":264,"children":265,"page":-1},"MCP Tools","\u002Freference\u002Fmcp","9.reference\u002F2.mcp\u002Findex",[266,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335],{"title":262,"path":263,"stem":264},{"title":268,"path":269,"stem":270},"discover","\u002Freference\u002Fmcp\u002Fdiscover","9.reference\u002F2.mcp\u002Fdiscover",{"title":272,"path":273,"stem":274},"find_duplicate_keys","\u002Freference\u002Fmcp\u002Ffind_duplicate_keys","9.reference\u002F2.mcp\u002Ffind_duplicate_keys",{"title":276,"path":277,"stem":278},"find_empty_translations","\u002Freference\u002Fmcp\u002Ffind_empty_translations","9.reference\u002F2.mcp\u002Ffind_empty_translations",{"title":280,"path":281,"stem":282},"find_orphan_keys","\u002Freference\u002Fmcp\u002Ffind_orphan_keys","9.reference\u002F2.mcp\u002Ffind_orphan_keys",{"title":284,"path":285,"stem":286},"find_undefined_keys","\u002Freference\u002Fmcp\u002Ffind_undefined_keys","9.reference\u002F2.mcp\u002Ffind_undefined_keys",{"title":288,"path":289,"stem":290},"get_missing_translations","\u002Freference\u002Fmcp\u002Fget_missing_translations","9.reference\u002F2.mcp\u002Fget_missing_translations",{"title":292,"path":293,"stem":294},"get_translation_status","\u002Freference\u002Fmcp\u002Fget_translation_status","9.reference\u002F2.mcp\u002Fget_translation_status",{"title":296,"path":297,"stem":298},"get_translations","\u002Freference\u002Fmcp\u002Fget_translations","9.reference\u002F2.mcp\u002Fget_translations",{"title":300,"path":301,"stem":302},"list_namespaces","\u002Freference\u002Fmcp\u002Flist_namespaces","9.reference\u002F2.mcp\u002Flist_namespaces",{"title":304,"path":305,"stem":306},"move_translation_key","\u002Freference\u002Fmcp\u002Fmove_translation_key","9.reference\u002F2.mcp\u002Fmove_translation_key",{"title":308,"path":309,"stem":310},"remove_orphan_keys","\u002Freference\u002Fmcp\u002Fremove_orphan_keys","9.reference\u002F2.mcp\u002Fremove_orphan_keys",{"title":312,"path":313,"stem":314},"remove_translations","\u002Freference\u002Fmcp\u002Fremove_translations","9.reference\u002F2.mcp\u002Fremove_translations",{"title":316,"path":317,"stem":318},"rename_translation_key","\u002Freference\u002Fmcp\u002Frename_translation_key","9.reference\u002F2.mcp\u002Frename_translation_key",{"title":320,"path":321,"stem":322},"scaffold_locale","\u002Freference\u002Fmcp\u002Fscaffold_locale","9.reference\u002F2.mcp\u002Fscaffold_locale",{"title":324,"path":325,"stem":326},"search_translations","\u002Freference\u002Fmcp\u002Fsearch_translations","9.reference\u002F2.mcp\u002Fsearch_translations",{"title":328,"path":329,"stem":330},"translate_key","\u002Freference\u002Fmcp\u002Ftranslate_key","9.reference\u002F2.mcp\u002Ftranslate_key",{"title":332,"path":333,"stem":334},"translate_missing","\u002Freference\u002Fmcp\u002Ftranslate_missing","9.reference\u002F2.mcp\u002Ftranslate_missing",{"title":336,"path":337,"stem":338},"write_translations","\u002Freference\u002Fmcp\u002Fwrite_translations","9.reference\u002F2.mcp\u002Fwrite_translations",{"title":340,"path":341,"stem":342},"GitHub Action","\u002Freference\u002Faction","9.reference\u002F3.action",{"title":344,"path":345,"stem":346},"Programmatic API","\u002Freference\u002Fprogrammatic-api","9.reference\u002F4.programmatic-api",{"title":348,"icon":349,"path":350,"stem":351,"children":352,"page":21},"Extra Topics","i-lucide-microscope","\u002Fextra-topics","91.extra-topics",[353],{"title":354,"path":355,"stem":356},"How Detection Scores Adapters","\u002Fextra-topics\u002Fdetection-scoring","91.extra-topics\u002F1.detection-scoring",{"id":358,"title":18,"body":359,"description":880,"extension":888,"links":889,"meta":890,"navigation":891,"path":19,"seo":892,"stem":20,"__hash__":894},"docs\u002F1.introduction\u002F3.built-for-agents.md",{"type":360,"value":361,"toc":879},"minimark",[362,367,703,707,718,729,747,750,754,757,813,829,833],[363,364,366],"h2",{"id":365},"the-claims-and-their-mechanisms","The Claims and Their Mechanisms",[368,369,370,383],"table",{},[371,372,373],"thead",{},[374,375,376,380],"tr",{},[377,378,379],"th",{},"Claim",[377,381,382],{},"Mechanism",[384,385,386,433,451,470,484,514,532,548,593,615,640,659,677],"tbody",{},[374,387,388,392],{},[389,390,391],"td",{},"A large result never floods a context window",[389,393,394,395,399,400,403,404,407,408,410,411,410,413,410,416,410,418,410,420,422,423,425,426,429,430],{},"Pass ",[396,397,398],"code",{},"--output-file \u003Cpath>"," (CLI) or ",[396,401,402],{},"outputFile"," (MCP) and the full JSON is written to disk; the caller receives ",[396,405,406],{},"{ reportFile, summary }",". Supported by ",[396,409,210],{},", ",[396,412,242],{},[396,414,415],{},"empty",[396,417,194],{},[396,419,234],{},[396,421,198],{}," and ",[396,424,222],{},", and their paired tools. Set ",[396,427,428],{},"reportOutput: true"," in your kit config to make it the default for every run, writing to ",[396,431,432],{},".i18n-reports\u002F\u003Ctool>.json",[374,434,435,438],{},[389,436,437],{},"Report paths cannot escape the project",[389,439,440,443,444,447,448],{},[396,441,442],{},"resolveOutputFile"," resolves relative paths against the project dir, not the process cwd, then rejects anything resolving outside it with a ",[396,445,446],{},"ToolError"," carrying code ",[396,449,450],{},"INVALID_REPORT_PATH",[374,452,453,456],{},[389,454,455],{},"Third-party stdout cannot corrupt machine output",[389,457,458,461,462,465,466,469],{},[396,459,460],{},"guardStdout()"," runs in the CLI entry point before any other module loads. It replaces ",[396,463,464],{},"process.stdout.write"," with a function that writes to stderr, and keeps the original bound reference. Command results go out through ",[396,467,468],{},"writeResult",", which uses that captured reference. A Nuxt module that logs to stdout during config detection lands in stderr, and the JSON your agent parses stays one JSON document",[374,471,472,475],{},[389,473,474],{},"Output is machine-readable without being asked",[389,476,477,480,481],{},[396,478,479],{},"outputResult"," treats a non-TTY stdout as JSON mode. An agent spawning the CLI gets JSON without passing ",[396,482,483],{},"--json",[374,485,486,489],{},[389,487,488],{},"A failed run still returns parseable JSON",[389,490,491,492,495,496,499,500,502,503,506,507,510,511],{},"In JSON mode, ",[396,493,494],{},"emitErrorResult"," writes ",[396,497,498],{},"{ \"error\": { \"code\", \"message\" } }"," to the real stdout and sends the human-readable message to stderr. Zero bytes on stdout is a parse error for whatever is reading; an error object is not. Codes come from ",[396,501,446],{}," \u002F ",[396,504,505],{},"FileIOError",", from Node (",[396,508,509],{},"ENOENT","), or ",[396,512,513],{},"CONFIG_ERROR",[374,515,516,519],{},[389,517,518],{},"Reads are targeted, not whole-file dumps",[389,520,521,524,525,528,529,531],{},[396,522,523],{},"get --layer \u003Cl> --locale \u003Cc> --keys a.b,c.d"," returns those keys' values. ",[396,526,527],{},"search --query"," returns matches. ",[396,530,210],{}," returns what is absent. None of them require reading a locale file to find one string",[374,533,534,537],{},[389,535,536],{},"Translate results account for every key",[389,538,539,540,543,544],{},"Per locale, ",[396,541,542],{},"missing = translated + wouldTranslate + failed + skipped",". A run that quietly loses keys cannot balance, so an agent can verify completeness by arithmetic rather than by re-scanning. See ",[545,546,547],"a",{"href":174},"translation modes",[374,549,550,553],{},[389,551,552],{},"Failures are classified, not narrated",[389,554,555,558,559,410,562,410,565,410,568,410,571,410,574,577,578,581,582,410,585,588,589,592],{},[396,556,557],{},"failed"," entries carry a reason from a closed set: ",[396,560,561],{},"provider-error",[396,563,564],{},"omitted-by-model",[396,566,567],{},"placeholder-mismatch",[396,569,570],{},"plural-mismatch",[396,572,573],{},"write-error",[396,575,576],{},"truncated",". ",[396,579,580],{},"skipped"," entries carry ",[396,583,584],{},"no-provider",[396,586,587],{},"already-translated"," or ",[396,590,591],{},"protected-locale",". An agent branches on the value instead of pattern-matching English",[374,594,595,598],{},[389,596,597],{},"Provider failures are triaged before they cost you a run",[389,599,600,601,604,605,608,609,611,612],{},"HTTP status is mapped at the provider boundary: 401\u002F403 becomes ",[396,602,603],{},"auth"," and aborts the whole run with one error rather than failing key by key; 429 becomes ",[396,606,607],{},"rate-limit"," and is retried with backoff; a response cut off at the token limit is detected from the finish reason and reported as ",[396,610,576],{},", which tells the caller to lower ",[396,613,614],{},"batchSize",[374,616,617,620],{},[389,618,619],{},"Uncertainty never becomes deletion",[389,621,622,624,625,628,629,631,632,635,636,639],{},[396,623,222],{}," defaults to ",[396,626,627],{},"dryRun: true",", and ",[396,630,308],{}," performs a dry run first. Keys reachable through a dynamic pattern, keys with ambiguous evidence (",[396,633,634],{},"uncertainKeys",") and keys used only from a non-consuming app (",[396,637,638],{},"misplacedUsages",") are reported in their own buckets and are never removed, including on a confirmed run",[374,641,642,645],{},[389,643,644],{},"Exit codes are branchable",[389,646,647,650,651,654,655,658],{},[396,648,649],{},"0"," succeeded with no gate tripped, ",[396,652,653],{},"1"," the run itself failed, ",[396,656,657],{},"2"," a requested gate tripped. The split lets a caller tell a bad API key from a project that has untranslated keys, without parsing the result",[374,660,661,664],{},[389,662,663],{},"Which mode ran is always in the result",[389,665,666,667,628,670,672,673,676],{},"Every translate result carries ",[396,668,669],{},"mode: \"provider\" | \"agent\" | \"dry-run\"",[396,671,268],{}," reports ",[396,674,675],{},"translationMode"," before any translation runs, so an agent can check the configuration without spending a call on it",[374,678,679,682],{},[389,680,681],{},"Project context reaches the agent, not only the model",[389,683,684,686,687,410,690,410,693,410,696,410,699,702],{},[396,685,268],{}," loads your kit config — ",[396,688,689],{},"context",[396,691,692],{},"glossary",[396,694,695],{},"translationPrompt",[396,697,698],{},"localeNotes",[396,700,701],{},"layerRules"," — into the session, so terminology decisions are made with the same information whoever wrote the glossary had",[363,704,706],{"id":705},"agent-mode","Agent Mode",[708,709,710,711,714,715,717],"p",{},"With no provider configured — the default in an MCP host — the translate tools do\nnot fail and do not silently do nothing. They return per-locale ",[396,712,713],{},"fallbackContexts",":\nthe source values plus the glossary, style notes and locale notes. Your agent\ntranslates them inline, using the model it is already running on, and persists the\nresult through ",[396,716,336],{},".",[708,719,720,721,725,726,728],{},"That is the difference between agent mode and ",[722,723,724],"strong",{},"provider mode",", where the kit\ncalls OpenAI, Anthropic or Google itself and writes the values directly. Both\nmodes report themselves in the result — see\n",[545,727,547],{"href":174}," for the full contract.",[730,731,732,733,735,736,738,739,742,743,746],"warning",{},"In the CLI, agent mode translates nothing. There is no model on the other end of a\nterminal, so keys are reported as ",[396,734,580],{}," with reason ",[396,737,584],{},". A CI job that\nforgets ",[396,740,741],{},"--provider"," therefore succeeds while translating zero keys — add\n",[396,744,745],{},"--fail-on-missing"," if that should block.",[708,748,749],{},"Partial provider configuration — a provider with no model, or no key — logs a\nwarning to stderr and falls back to agent mode. A misconfigured server degrades at\nstartup rather than surprising a caller mid-request.",[363,751,753],{"id":752},"writes-an-agent-can-reason-about","Writes an Agent Can Reason About",[708,755,756],{},"The write operations are deliberately narrow, so an agent picks by intent rather\nthan by guessing at side effects:",[368,758,759,772],{},[371,760,761],{},[374,762,763,766,769],{},[377,764,765],{},"Tool",[377,767,768],{},"Does",[377,770,771],{},"Does not",[384,773,774,786,798],{},[374,775,776,780,783],{},[389,777,778],{},[396,779,336],{},[389,781,782],{},"Writes the exact values you pass",[389,784,785],{},"Call any model",[374,787,788,792,795],{},[389,789,790],{},[396,791,332],{},[389,793,794],{},"Fills target locales that have no value",[389,796,797],{},"Touch existing values",[374,799,800,804,810],{},[389,801,802],{},[396,803,328],{},[389,805,806,807],{},"Translates one source key into target locales, refreshing stale values when ",[396,808,809],{},"overwrite=true",[389,811,812],{},"Touch other keys",[708,814,815,816,410,819,628,822,825,826,828],{},"Values are validated before they are written: placeholder parity is checked per\nvue-i18n plural variant (",[396,817,818],{},"{placeholders}",[396,820,821],{},"@:linked.refs",[396,823,824],{},":params"," for PHP),\nand the number of pipe-separated plural variants must match the source. A value that\nfails validation is rejected into ",[396,827,557],{}," rather than written, so a model dropping\nan interpolation cannot reach a locale file.",[363,830,832],{"id":831},"limits","Limits",[834,835,836,856,862,871],"ul",{},[837,838,839,842,843,502,846,848,849,852,853,855],"li",{},[722,840,841],{},"Context discipline is opt-in per call."," Without ",[396,844,845],{},"--output-file",[396,847,402],{},"\nor ",[396,850,851],{},"reportOutput"," in the config, a large result is returned inline. Set\n",[396,854,428],{}," once rather than relying on remembering the flag.",[837,857,858,861],{},[722,859,860],{},"The scanner is static and line-based."," Keys built at runtime cannot be\nverified. They are classified as uncertain, which protects them from deletion but\nalso means the orphan count is a floor, not a total.",[837,863,864,867,868,870],{},[722,865,866],{},"Classified failure reasons are a closed set, and reality is not."," A cause with\nno matching reason arrives as ",[396,869,561],{}," with the provider's message\nattached.",[837,872,873,878],{},[722,874,875,877],{},[396,876,268],{}," only knows what the config says."," Layer rules and glossary terms\nnobody wrote down do not reach the agent.",{"title":880,"searchDepth":881,"depth":881,"links":882},"",3,[883,885,886,887],{"id":365,"depth":884,"text":366},2,{"id":705,"depth":884,"text":706},{"id":752,"depth":884,"text":753},{"id":831,"depth":884,"text":832},"md",null,{},true,{"description":893,"title":18},"Every agent-first claim the kit makes, paired with the mechanism in the code that delivers it — context discipline, uncorruptible machine output, classified failures and safe defaults.","vd_dh4VjuV-5jdKb5tao8R5VaoI8cyxixisZ5C1R-4g",[896,897],{"title":14,"path":15,"stem":16,"description":880,"children":-1},{"title":29,"path":30,"stem":31,"description":880,"children":-1},1787604647515]