[{"data":1,"prerenderedAt":1219},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Fkernel-contract":3},{"id":4,"title":5,"body":6,"description":1211,"extension":1212,"meta":1213,"navigation":1214,"path":1215,"seo":1216,"stem":1217,"__hash__":1218},"docs\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Fkernel-contract.md","The Kernel Contract",{"type":7,"value":8,"toc":1188},"minimark",[9,13,17,20,25,28,36,91,94,98,372,375,383,420,426,429,436,511,518,607,614,625,632,680,683,702,705,712,735,738,745,773,785,792,822,825,832,839,937,945,949,952,958,968,978,984,990,996,1002,1006,1012,1015,1025,1029,1032,1075,1100,1103,1113,1117,1120,1175,1181,1184],[10,11,5],"h1",{"id":12},"the-kernel-contract",[14,15,16],"p",{},"A cognet is versioned against the kernel exactly like a binary is versioned against\nsyscalls. The kernel evolves freely underneath; the contract is this shape, and it is the\nonly thing a cognet ever holds.",[14,18,19],{},"Read this page before the others. Everything that follows is a consequence of it.",[21,22,24],"h2",{"id":23},"the-privilege-inversion","The privilege inversion",[14,26,27],{},"Axon already treats model-authored code as untrusted. The capsule can request; only the\nkernel can take.",[14,29,30,31,35],{},"Cognets extend the same inversion one ring further in. ",[32,33,34],"strong",{},"The cognet is the cognition, and\nthe kernel protects the user's resources from it with equal severity."," Not because a\ncognet is malicious — you wrote it — but because a boundary that only holds for\nwell-behaved code isn't a boundary.",[37,38,39,55],"table",{},[40,41,42],"thead",{},[43,44,45,49,52],"tr",{},[46,47,48],"th",{},"Ring",[46,50,51],{},"Component",[46,53,54],{},"Holds",[56,57,58,70,81],"tbody",{},[43,59,60,64,67],{},[61,62,63],"td",{},"0",[61,65,66],{},"kernel",[61,68,69],{},"engine, scheduler, the capsule constructor, the session log",[43,71,72,75,78],{},[61,73,74],{},"3",[61,76,77],{},"cognet",[61,79,80],{},"seven verbs",[43,82,83,85,88],{},[61,84,74],{},[61,86,87],{},"capsule",[61,89,90],{},"model-authored code, policy-gated",[14,92,93],{},"The cognet and the capsule are both unprivileged, for different reasons and through\ndifferent doors.",[21,95,97],{"id":96},"the-seven-verbs","The seven verbs",[99,100,105],"pre",{"className":101,"code":102,"language":103,"meta":104,"style":104},"language-ts shiki shiki-themes dark-plus","type KernelAbi = {\n    output\u003CK>(type: K, data: AxonOutputEvent[K]): Promise\u003Cvoid>\n    stream(req: AxonEngineRequest): AsyncGenerator\u003CAxonEngineEvent>\n    run(code: string,   opts?: { signal?: AbortSignal }): Promise\u003CAxonRunResult>\n    run(code: string[], opts?: { signal?: AbortSignal }): Promise\u003CAxonRunResult[]>\n    scope(): AxonScope\n    base(): Promise\u003Cstring>\n    emit\u003CK>(type: K, data: CognetEventMap[K]): void\n    store: KernelStore\n}\n","ts","",[106,107,108,125,179,209,254,291,303,319,355,366],"code",{"__ignoreMap":104},[109,110,113,117,121],"span",{"class":111,"line":112},"line",1,[109,114,116],{"class":115},"scz_3","type",[109,118,120],{"class":119},"sNl3T"," KernelAbi",[109,122,124],{"class":123},"sTNBD"," = {\n",[109,126,128,132,135,138,141,144,147,149,152,155,157,160,163,165,168,171,173,176],{"class":111,"line":127},2,[109,129,131],{"class":130},"sCudf","    output",[109,133,134],{"class":123},"\u003C",[109,136,137],{"class":119},"K",[109,139,140],{"class":123},">(",[109,142,116],{"class":143},"s3F5K",[109,145,146],{"class":123},": ",[109,148,137],{"class":119},[109,150,151],{"class":123},", ",[109,153,154],{"class":143},"data",[109,156,146],{"class":123},[109,158,159],{"class":119},"AxonOutputEvent",[109,161,162],{"class":123},"[",[109,164,137],{"class":119},[109,166,167],{"class":123},"]): ",[109,169,170],{"class":119},"Promise",[109,172,134],{"class":123},[109,174,175],{"class":119},"void",[109,177,178],{"class":123},">\n",[109,180,182,185,188,191,193,196,199,202,204,207],{"class":111,"line":181},3,[109,183,184],{"class":130},"    stream",[109,186,187],{"class":123},"(",[109,189,190],{"class":143},"req",[109,192,146],{"class":123},[109,194,195],{"class":119},"AxonEngineRequest",[109,197,198],{"class":123},"): ",[109,200,201],{"class":119},"AsyncGenerator",[109,203,134],{"class":123},[109,205,206],{"class":119},"AxonEngineEvent",[109,208,178],{"class":123},[109,210,212,215,217,219,221,224,227,230,233,236,239,242,245,247,249,252],{"class":111,"line":211},4,[109,213,214],{"class":130},"    run",[109,216,187],{"class":123},[109,218,106],{"class":143},[109,220,146],{"class":123},[109,222,223],{"class":119},"string",[109,225,226],{"class":123},",   ",[109,228,229],{"class":143},"opts",[109,231,232],{"class":123},"?: { ",[109,234,235],{"class":143},"signal",[109,237,238],{"class":123},"?: ",[109,240,241],{"class":119},"AbortSignal",[109,243,244],{"class":123}," }): ",[109,246,170],{"class":119},[109,248,134],{"class":123},[109,250,251],{"class":119},"AxonRunResult",[109,253,178],{"class":123},[109,255,257,259,261,263,265,267,270,272,274,276,278,280,282,284,286,288],{"class":111,"line":256},5,[109,258,214],{"class":130},[109,260,187],{"class":123},[109,262,106],{"class":143},[109,264,146],{"class":123},[109,266,223],{"class":119},[109,268,269],{"class":123},"[], ",[109,271,229],{"class":143},[109,273,232],{"class":123},[109,275,235],{"class":143},[109,277,238],{"class":123},[109,279,241],{"class":119},[109,281,244],{"class":123},[109,283,170],{"class":119},[109,285,134],{"class":123},[109,287,251],{"class":119},[109,289,290],{"class":123},"[]>\n",[109,292,294,297,300],{"class":111,"line":293},6,[109,295,296],{"class":130},"    scope",[109,298,299],{"class":123},"(): ",[109,301,302],{"class":119},"AxonScope\n",[109,304,306,309,311,313,315,317],{"class":111,"line":305},7,[109,307,308],{"class":130},"    base",[109,310,299],{"class":123},[109,312,170],{"class":119},[109,314,134],{"class":123},[109,316,223],{"class":119},[109,318,178],{"class":123},[109,320,322,325,327,329,331,333,335,337,339,341,343,346,348,350,352],{"class":111,"line":321},8,[109,323,324],{"class":130},"    emit",[109,326,134],{"class":123},[109,328,137],{"class":119},[109,330,140],{"class":123},[109,332,116],{"class":143},[109,334,146],{"class":123},[109,336,137],{"class":119},[109,338,151],{"class":123},[109,340,154],{"class":143},[109,342,146],{"class":123},[109,344,345],{"class":119},"CognetEventMap",[109,347,162],{"class":123},[109,349,137],{"class":119},[109,351,167],{"class":123},[109,353,354],{"class":119},"void\n",[109,356,358,361,363],{"class":111,"line":357},9,[109,359,360],{"class":143},"    store",[109,362,146],{"class":123},[109,364,365],{"class":119},"KernelStore\n",[109,367,369],{"class":111,"line":368},10,[109,370,371],{"class":123},"}\n",[14,373,374],{},"That's the whole surface. There is no eighth verb and no escape hatch.",[376,377,379,382],"h3",{"id":378},"output-unmediated-emission",[106,380,381],{},"output"," — unmediated emission",[99,384,386],{"className":101,"code":385,"language":103,"meta":104,"style":104},"await kernel.output(\"cognet:output:text\", { content: \"done\" })\n",[106,387,388],{"__ignoreMap":104},[109,389,390,394,397,400,402,404,408,411,414,417],{"class":111,"line":112},[109,391,393],{"class":392},"sYbnZ","await",[109,395,396],{"class":143}," kernel",[109,398,399],{"class":123},".",[109,401,381],{"class":130},[109,403,187],{"class":123},[109,405,407],{"class":406},"sKc5r","\"cognet:output:text\"",[109,409,410],{"class":123},", { ",[109,412,413],{"class":143},"content:",[109,415,416],{"class":406}," \"done\"",[109,418,419],{"class":123}," })\n",[14,421,422,423,399],{},"The cognet already has the full content and nothing external can fail it, so this is\nunmediated at the call site — writing to your own stdout can't itself harm anything. The\nkernel commits it durably and forwards it live, but ",[32,424,425],{},"never refuses it",[14,427,428],{},"Filtering or redaction, if a host wants it, happens downstream on the delivery path. It's\nnever a gate this call has to pass.",[376,430,432,435],{"id":431},"run-mediated-request",[106,433,434],{},"run"," — mediated request",[99,437,439],{"className":101,"code":438,"language":103,"meta":104,"style":104},"const result = await kernel.run(code, { signal })\nconst results = await kernel.run([blockA, blockB], { signal })   \u002F\u002F concurrent\n",[106,440,441,471],{"__ignoreMap":104},[109,442,443,446,450,453,455,457,459,461,463,465,467,469],{"class":111,"line":112},[109,444,445],{"class":115},"const",[109,447,449],{"class":448},"s9McN"," result",[109,451,452],{"class":123}," = ",[109,454,393],{"class":392},[109,456,396],{"class":143},[109,458,399],{"class":123},[109,460,434],{"class":130},[109,462,187],{"class":123},[109,464,106],{"class":143},[109,466,410],{"class":123},[109,468,235],{"class":143},[109,470,419],{"class":123},[109,472,473,475,478,480,482,484,486,488,491,494,496,499,502,504,507],{"class":111,"line":127},[109,474,445],{"class":115},[109,476,477],{"class":448}," results",[109,479,452],{"class":123},[109,481,393],{"class":392},[109,483,396],{"class":143},[109,485,399],{"class":123},[109,487,434],{"class":130},[109,489,490],{"class":123},"([",[109,492,493],{"class":143},"blockA",[109,495,151],{"class":123},[109,497,498],{"class":143},"blockB",[109,500,501],{"class":123},"], { ",[109,503,235],{"class":143},[109,505,506],{"class":123}," })   ",[109,508,510],{"class":509},"sOLPB","\u002F\u002F concurrent\n",[14,512,513,514,517],{},"The cognet doesn't know the outcome until the capsule responds, so this is policy-gated.\nIt ",[32,515,516],{},"never rejects",": success and failure are both ordinary values on the result.",[99,519,521],{"className":101,"code":520,"language":103,"meta":104,"style":104},"type AxonRunResult = {\n    ok: boolean\n    value?: unknown\n    stdout: string[]\n    error?: { kind: \"timeout\" | \"interrupt\" | \"exception\"; message: string }\n}\n",[106,522,523,532,542,552,564,603],{"__ignoreMap":104},[109,524,525,527,530],{"class":111,"line":112},[109,526,116],{"class":115},[109,528,529],{"class":119}," AxonRunResult",[109,531,124],{"class":123},[109,533,534,537,539],{"class":111,"line":127},[109,535,536],{"class":143},"    ok",[109,538,146],{"class":123},[109,540,541],{"class":119},"boolean\n",[109,543,544,547,549],{"class":111,"line":181},[109,545,546],{"class":143},"    value",[109,548,238],{"class":123},[109,550,551],{"class":119},"unknown\n",[109,553,554,557,559,561],{"class":111,"line":211},[109,555,556],{"class":143},"    stdout",[109,558,146],{"class":123},[109,560,223],{"class":119},[109,562,563],{"class":123},"[]\n",[109,565,566,569,571,574,576,579,582,585,587,590,593,596,598,600],{"class":111,"line":256},[109,567,568],{"class":143},"    error",[109,570,232],{"class":123},[109,572,573],{"class":143},"kind",[109,575,146],{"class":123},[109,577,578],{"class":406},"\"timeout\"",[109,580,581],{"class":123}," | ",[109,583,584],{"class":406},"\"interrupt\"",[109,586,581],{"class":123},[109,588,589],{"class":406},"\"exception\"",[109,591,592],{"class":123},"; ",[109,594,595],{"class":143},"message",[109,597,146],{"class":123},[109,599,223],{"class":119},[109,601,602],{"class":123}," }\n",[109,604,605],{"class":111,"line":293},[109,606,371],{"class":123},[14,608,609,610,613],{},"Timeout, abort, and exception collapse into one ",[106,611,612],{},"error.kind"," rather than three control\nflows you'd have to catch and re-discriminate. An array of blocks runs concurrently and\nreturns results in order — the common \"await several tool calls\" case needs no manual\nfan-out.",[14,615,616,617,620,621,624],{},"The kernel commits both ",[106,618,619],{},"cognet:action:typescript"," and ",[106,622,623],{},"cognet:action:result"," to the log\nitself, the moment each block settles. The cognet reads the returned value for its own\ncontrol flow and writes nothing.",[376,626,628,631],{"id":627},"stream-inference",[106,629,630],{},"stream"," — inference",[99,633,635],{"className":101,"code":634,"language":103,"meta":104,"style":104},"for await (const event of kernel.stream({ messages, signal })) { \u002F* ... *\u002F }\n",[106,636,637],{"__ignoreMap":104},[109,638,639,642,645,648,650,653,656,658,660,662,665,668,670,672,675,678],{"class":111,"line":112},[109,640,641],{"class":392},"for",[109,643,644],{"class":392}," await",[109,646,647],{"class":123}," (",[109,649,445],{"class":115},[109,651,652],{"class":448}," event",[109,654,655],{"class":115}," of",[109,657,396],{"class":143},[109,659,399],{"class":123},[109,661,630],{"class":130},[109,663,664],{"class":123},"({ ",[109,666,667],{"class":143},"messages",[109,669,151],{"class":123},[109,671,235],{"class":143},[109,673,674],{"class":123}," })) { ",[109,676,677],{"class":509},"\u002F* ... *\u002F",[109,679,602],{"class":123},[14,681,682],{},"The kernel mediates provider access — auth, metering, quotas. The cognet owns everything\nabout what the messages contain.",[14,684,685,686,689,690,693,694,697,698,701],{},"It yields raw ",[106,687,688],{},"engine:*"," wire events. The kernel does ",[32,691,692],{},"not"," pre-label them as the\ncognet's output: when a text block arrives, it's the cognet that decides whether to\n",[106,695,696],{},"output()"," it; when a typescript block arrives, it's the cognet that decides whether to\n",[106,699,700],{},"run()"," it. That decision belongs to the cognet alone.",[14,703,704],{},"This is one verb of seven. A cognet that never calls it is still a cognet.",[376,706,708,711],{"id":707},"scope-executable-reality",[106,709,710],{},"scope"," — executable reality",[99,713,715],{"className":101,"code":714,"language":103,"meta":104,"style":104},"const scope = kernel.scope()\n",[106,716,717],{"__ignoreMap":104},[109,718,719,721,724,726,728,730,732],{"class":111,"line":112},[109,720,445],{"class":115},[109,722,723],{"class":448}," scope",[109,725,452],{"class":123},[109,727,66],{"class":143},[109,729,399],{"class":123},[109,731,710],{"class":130},[109,733,734],{"class":123},"()\n",[14,736,737],{},"The complete TypeScript surface implemented by the current capsule incarnation. The\nkernel reports what's executable; the cognet decides whether and how that enters model\ncontext.",[376,739,741,744],{"id":740},"base-the-users-identity-contract",[106,742,743],{},"base"," — the user's identity contract",[99,746,748],{"className":101,"code":747,"language":103,"meta":104,"style":104},"const identity = await kernel.base()   \u002F\u002F \"\" when none declared, never undefined\n",[106,749,750],{"__ignoreMap":104},[109,751,752,754,757,759,761,763,765,767,770],{"class":111,"line":112},[109,753,445],{"class":115},[109,755,756],{"class":448}," identity",[109,758,452],{"class":123},[109,760,393],{"class":392},[109,762,396],{"class":143},[109,764,399],{"class":123},[109,766,743],{"class":130},[109,768,769],{"class":123},"()   ",[109,771,772],{"class":509},"\u002F\u002F \"\" when none declared, never undefined\n",[14,774,775,776,779,780,784],{},"The agent's rendered ",[106,777,778],{},"boot.vue",". Kernel-mediated because it's the ",[781,782,783],"em",{},"user's"," contract, not\ncognet strategy: a swapped brain decides where the base context sits in its rendering,\nnever what it says.",[376,786,788,791],{"id":787},"emit-narrate-your-own-world",[106,789,790],{},"emit"," — narrate your own world",[99,793,795],{"className":101,"code":794,"language":103,"meta":104,"style":104},"kernel.emit(\"cognet:phase:start\", { tick, phase })\n",[106,796,797],{"__ignoreMap":104},[109,798,799,801,803,805,807,810,812,815,817,820],{"class":111,"line":112},[109,800,66],{"class":143},[109,802,399],{"class":123},[109,804,790],{"class":130},[109,806,187],{"class":123},[109,808,809],{"class":406},"\"cognet:phase:start\"",[109,811,410],{"class":123},[109,813,814],{"class":143},"tick",[109,816,151],{"class":123},[109,818,819],{"class":143},"phase",[109,821,419],{"class":123},[14,823,824],{},"Fire-and-forget for the cognet, durable in the machine: committed to the log and\nforwarded to the runtime bus as flame-graph material.",[14,826,827,828,831],{},"Restricted to ",[106,829,830],{},"cognet:*"," and enforced at the call site, not just in the types. A cognet\nnarrates its own world; it can never forge kernel machinery events.",[376,833,835,838],{"id":834},"store-private-state-read-only-history",[106,836,837],{},"store"," — private state, read-only history",[99,840,842],{"className":101,"code":841,"language":103,"meta":104,"style":104},"kernel.store.session.get({ after: seq })   \u002F\u002F read-only, entries only, synchronous\nawait kernel.store.get(\"checkpoint\")\nawait kernel.store.set(\"checkpoint\", { seq, savedAt: Date.now() })\n",[106,843,844,875,897],{"__ignoreMap":104},[109,845,846,848,850,852,854,857,859,862,864,867,870,872],{"class":111,"line":112},[109,847,66],{"class":143},[109,849,399],{"class":123},[109,851,837],{"class":143},[109,853,399],{"class":123},[109,855,856],{"class":143},"session",[109,858,399],{"class":123},[109,860,861],{"class":130},"get",[109,863,664],{"class":123},[109,865,866],{"class":143},"after:",[109,868,869],{"class":143}," seq",[109,871,506],{"class":123},[109,873,874],{"class":509},"\u002F\u002F read-only, entries only, synchronous\n",[109,876,877,879,881,883,885,887,889,891,894],{"class":111,"line":127},[109,878,393],{"class":392},[109,880,396],{"class":143},[109,882,399],{"class":123},[109,884,837],{"class":143},[109,886,399],{"class":123},[109,888,861],{"class":130},[109,890,187],{"class":123},[109,892,893],{"class":406},"\"checkpoint\"",[109,895,896],{"class":123},")\n",[109,898,899,901,903,905,907,909,912,914,916,918,921,923,926,929,931,934],{"class":111,"line":181},[109,900,393],{"class":392},[109,902,396],{"class":143},[109,904,399],{"class":123},[109,906,837],{"class":143},[109,908,399],{"class":123},[109,910,911],{"class":130},"set",[109,913,187],{"class":123},[109,915,893],{"class":406},[109,917,410],{"class":123},[109,919,920],{"class":143},"seq",[109,922,151],{"class":123},[109,924,925],{"class":143},"savedAt:",[109,927,928],{"class":143}," Date",[109,930,399],{"class":123},[109,932,933],{"class":130},"now",[109,935,936],{"class":123},"() })\n",[14,938,939,940,399],{},"Covered in full in ",[941,942,944],"a",{"href":943},"\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Fmemory","Memory",[21,946,948],{"id":947},"what-a-cognet-cannot-do","What a cognet cannot do",[14,950,951],{},"The absences are the design. None of these are enforced by convention — there is no API\nto call.",[14,953,954,957],{},[32,955,956],{},"No filesystem, no network, no shell."," Not restricted: absent. The only path to any of\nthem is asking the kernel to run code in a capsule the kernel alone constructs, under the\nagent's policy.",[14,959,960,963,964,967],{},[32,961,962],{},"No writing to the log."," There is no ",[106,965,966],{},"commit"," verb. The cognet emits and requests; the\nkernel writes on its behalf. A cognet cannot forge history, backdate a decision, or\nrecord something it didn't do.",[14,969,970,973,974,977],{},[32,971,972],{},"No reading kernel telemetry."," ",[106,975,976],{},"store.session.get()"," returns entries only — the same\nenvelopes stimuli arrive as. Kernel spans and error machinery aren't filtered out, they're\nunreachable: the store reads a projection already classified by type namespace before the\ncognet asks.",[14,979,980,983],{},[32,981,982],{},"No configuration."," A cognet cannot read the agent's config, paths, deploy settings,\nengine choice, or module list. It does not know what kind of world it is in — which is\nprecisely what makes it portable to a different one.",[14,985,986,989],{},[32,987,988],{},"No clock of its own."," Wakes are scheduled by the kernel. A cognet cannot decide to run.",[14,991,992,995],{},[32,993,994],{},"No thread or session concept."," There is no id to address anything by. One cognet\ninstance is exactly one continuous stream. Multiple conversations are multiple Axon\ninstances — a host concern this ABI has no opinion on.",[14,997,998,1001],{},[32,999,1000],{},"No identity."," A cognet has no name it can act on, no owner it can query, no\ncredentials. Identity belongs to the perimeter, not the mind inside it.",[21,1003,1005],{"id":1004},"what-the-kernel-will-not-do","What the kernel will not do",[14,1007,1008,1009,399],{},"The boundary runs both ways. The kernel has ",[32,1010,1011],{},"no opinion on cognition",[14,1013,1014],{},"No grammar. No context assembly. No prompt format. No loop strategy, no stop condition,\nno compression, no memory policy. It guards the user's base identity and reports the\ncapsule's executable scope; the cognet alone decides how either enters model context.",[14,1016,1017,1018,1021,1022,1024],{},"The AIR format that ",[106,1019,1020],{},"zero"," uses is ",[106,1023,1020],{},"'s choice, not the platform's. Another cognet\ncan use a different grammar, or no grammar at all. Nothing above this line has an opinion.",[21,1026,1028],{"id":1027},"wake-scope","Wake scope",[14,1030,1031],{},"Process-lifetime things are ambient. Wake-scoped things arrive as arguments:",[99,1033,1035],{"className":101,"code":1034,"language":103,"meta":104,"style":104},"loop(async ({ stimuli, signal, stop }) => { \u002F* ... *\u002F })\n",[106,1036,1037],{"__ignoreMap":104},[109,1038,1039,1042,1044,1047,1050,1053,1055,1057,1059,1062,1065,1068,1071,1073],{"class":111,"line":112},[109,1040,1041],{"class":130},"loop",[109,1043,187],{"class":123},[109,1045,1046],{"class":115},"async",[109,1048,1049],{"class":123}," ({ ",[109,1051,1052],{"class":143},"stimuli",[109,1054,151],{"class":123},[109,1056,235],{"class":143},[109,1058,151],{"class":123},[109,1060,1061],{"class":143},"stop",[109,1063,1064],{"class":123}," }) ",[109,1066,1067],{"class":115},"=>",[109,1069,1070],{"class":123}," { ",[109,1072,677],{"class":509},[109,1074,419],{"class":123},[1076,1077,1078,1084,1094],"ul",{},[1079,1080,1081,1083],"li",{},[106,1082,1052],{}," — what arrived since the last wake. An empty diff is ordinary, not an edge case.",[1079,1085,1086,1088,1089,620,1092,399],{},[106,1087,235],{}," — the wake's abort leash. Forward it to ",[106,1090,1091],{},"stream()",[106,1093,700],{},[1079,1095,1096,1099],{},[106,1097,1098],{},"stop()"," — end the wake after this tick. The brain stays warm.",[14,1101,1102],{},"The ABI itself carries nothing per-wake. It's one process-lifetime object, and it is the\nonly thing a cognet ever holds.",[14,1104,1105,1106,1108,1109,1112],{},"There is deliberately no push or delta channel. A temporally-extended emission — streaming\nspeech, a progressive result — is expressed through ",[106,1107,696],{}," itself using the chunking\nstandard: correlated entries, closed by a ",[106,1110,1111],{},"final"," marker. Chunks are ordinary committed\nentries, so they reach every observer through the same commit pipeline as any other fact.",[21,1114,1116],{"id":1115},"versioning","Versioning",[14,1118,1119],{},"A cognet declares the ABI it targets:",[99,1121,1123],{"className":101,"code":1122,"language":103,"meta":104,"style":104},"export default defineCognet({\n    name: \"zero\",\n    version: \"0.1.0\",\n    abi: \"9\",\n})\n",[106,1124,1125,1139,1150,1160,1170],{"__ignoreMap":104},[109,1126,1127,1130,1133,1136],{"class":111,"line":112},[109,1128,1129],{"class":392},"export",[109,1131,1132],{"class":392}," default",[109,1134,1135],{"class":130}," defineCognet",[109,1137,1138],{"class":123},"({\n",[109,1140,1141,1144,1147],{"class":111,"line":127},[109,1142,1143],{"class":143},"    name:",[109,1145,1146],{"class":406}," \"zero\"",[109,1148,1149],{"class":123},",\n",[109,1151,1152,1155,1158],{"class":111,"line":181},[109,1153,1154],{"class":143},"    version:",[109,1156,1157],{"class":406}," \"0.1.0\"",[109,1159,1149],{"class":123},[109,1161,1162,1165,1168],{"class":111,"line":211},[109,1163,1164],{"class":143},"    abi:",[109,1166,1167],{"class":406}," \"9\"",[109,1169,1149],{"class":123},[109,1171,1172],{"class":111,"line":256},[109,1173,1174],{"class":123},"})\n",[14,1176,1177,1180],{},[106,1178,1179],{},"axon prepare"," verifies that against the kernel this Axon provides and fails loudly on a\nmismatch, naming both versions. A cognet built for an older ABI never half-loads.",[14,1182,1183],{},"The kernel is free to change anything beneath this contract. The contract itself changes\nonly with the ABI number.",[1185,1186,1187],"style",{},"html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .sNl3T, html code.shiki .sNl3T{--shiki-default:#4EC9B0}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}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 pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}html pre.shiki code .s9McN, html code.shiki .s9McN{--shiki-default:#4FC1FF}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}",{"title":104,"searchDepth":127,"depth":127,"links":1189},[1190,1191,1207,1208,1209,1210],{"id":23,"depth":127,"text":24},{"id":96,"depth":127,"text":97,"children":1192},[1193,1195,1197,1199,1201,1203,1205],{"id":378,"depth":181,"text":1194},"output — unmediated emission",{"id":431,"depth":181,"text":1196},"run — mediated request",{"id":627,"depth":181,"text":1198},"stream — inference",{"id":707,"depth":181,"text":1200},"scope — executable reality",{"id":740,"depth":181,"text":1202},"base — the user's identity contract",{"id":787,"depth":181,"text":1204},"emit — narrate your own world",{"id":834,"depth":181,"text":1206},"store — private state, read-only history",{"id":947,"depth":127,"text":948},{"id":1004,"depth":127,"text":1005},{"id":1027,"depth":127,"text":1028},{"id":1115,"depth":127,"text":1116},"The seven verbs a cognet has, and everything it structurally cannot do.","md",{},true,"\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Fkernel-contract",{"title":5,"description":1211},"docs\u002Fv2\u002Fcognets\u002Fengine\u002Fkernel-contract","UgGIeQ0epvdQUMOAKDqwTSAob1q12M21IxRLOAhvmIw",1785156432071]