[{"data":1,"prerenderedAt":1134},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Fcognets":3},{"id":4,"title":5,"body":6,"description":1127,"extension":1128,"meta":1129,"navigation":229,"path":1130,"seo":1131,"stem":1132,"__hash__":1133},"docs\u002Fdocs\u002Fv2\u002Fcognets\u002Findex.md","Cognets",{"type":7,"value":8,"toc":1117},"minimark",[9,13,17,20,23,26,29,36,39,44,47,137,143,335,350,354,357,363,424,430,492,495,507,511,514,608,615,618,927,940,943,947,950,994,997,1000,1004,1011,1014,1017,1021,1024,1027,1035,1039,1042,1045,1049,1058,1077,1086,1095,1104,1113],[10,11,5],"h1",{"id":12},"cognets",[14,15,16],"p",{},"A cognet is a cognitive engine: the loop, the world model, the clock, and the\ninstrumentation you need to build a mind — with no opinion about what that mind is for.",[14,18,19],{},"A game engine gives you a frame loop, an entity system, and a profiler, then gets out of\nthe way. Nobody ships the engine as the product; they ship the game. This is the same\nbargain, one domain over. You get a wake loop, an entity-component world, a phase clock,\nand a flame graph of every thought. Whether you build a coding agent, a research\npipeline, a control loop, or an embodied butler is entirely yours.",[14,21,22],{},"The engine can afford to have no opinion because of what a cognet is denied.",[14,24,25],{},"It has no filesystem. No network. No clock of its own. It cannot read its own\nconfiguration, cannot write to its own log, and cannot discover anything about the\nmachine it runs on.",[14,27,28],{},"It has seven verbs.",[14,30,31,35],{},[32,33,34],"strong",{},"Stimuli in, actions or data out."," Everything else — what a stimulus physically is,\nwhat an action does to the world, whether either involves a language model — lives on the\nother side of a boundary the cognet cannot see across.",[14,37,38],{},"Which is why the same engine runs a chat agent, a 120Hz perception stack, and a robot.",[40,41,43],"h2",{"id":42},"what-a-brain-looks-like","What a brain looks like",[14,45,46],{},"Three files. The middle one is the mind:",[48,49,54],"pre",{"className":50,"code":51,"language":52,"meta":53,"style":53},"language-bash shiki shiki-themes dark-plus","my-cognet\u002F\n├── src\u002F\n│   ├── main.ts        # the brain — declares loop()\n│   └── state.ts       # resident memory, shaped however you like\n├── plugins\u002F           # lifecycle hooks: boot, wake, tick, shutdown\n├── cognet.config.ts   # identity and ABI version\n└── package.json\n","bash","",[55,56,57,66,76,92,106,117,128],"code",{"__ignoreMap":53},[58,59,62],"span",{"class":60,"line":61},"line",1,[58,63,65],{"class":64},"sCudf","my-cognet\u002F\n",[58,67,69,72],{"class":60,"line":68},2,[58,70,71],{"class":64},"├──",[58,73,75],{"class":74},"sKc5r"," src\u002F\n",[58,77,79,82,85,88],{"class":60,"line":78},3,[58,80,81],{"class":64},"│",[58,83,84],{"class":74},"   ├──",[58,86,87],{"class":74}," main.ts",[58,89,91],{"class":90},"sOLPB","        # the brain — declares loop()\n",[58,93,95,97,100,103],{"class":60,"line":94},4,[58,96,81],{"class":64},[58,98,99],{"class":74},"   └──",[58,101,102],{"class":74}," state.ts",[58,104,105],{"class":90},"       # resident memory, shaped however you like\n",[58,107,109,111,114],{"class":60,"line":108},5,[58,110,71],{"class":64},[58,112,113],{"class":74}," plugins\u002F",[58,115,116],{"class":90},"           # lifecycle hooks: boot, wake, tick, shutdown\n",[58,118,120,122,125],{"class":60,"line":119},6,[58,121,71],{"class":64},[58,123,124],{"class":74}," cognet.config.ts",[58,126,127],{"class":90},"   # identity and ABI version\n",[58,129,131,134],{"class":60,"line":130},7,[58,132,133],{"class":64},"└──",[58,135,136],{"class":74}," package.json\n",[14,138,139,142],{},[55,140,141],{},"src\u002Fmain.ts"," is a raw script with typed ambient globals. It runs once at load and\ndeclares exactly one loop:",[48,144,148],{"className":145,"code":146,"language":147,"meta":53,"style":53},"language-ts shiki shiki-themes dark-plus","loop(async ({ stimuli, signal, stop }) => {\n    await phase(\"sense\", async () => {\n        \u002F\u002F fold what's new into your own model\n    })\n\n    await phase(\"think\", async () => {\n        \u002F\u002F your strategy. the kernel has no opinion past this line.\n    })\n\n    await phase(\"act\", async () => {\n        \u002F\u002F effects leave through exactly two doors:\n        \u002F\u002F   kernel.output(type, data)  — emit a fact\n        \u002F\u002F   kernel.run(code)           — request execution\n    })\n\n    stop()   \u002F\u002F nothing pending — this wake is over, the brain stays warm\n})\n","ts",[55,149,150,190,215,220,225,231,252,257,262,267,289,295,301,307,312,317,329],{"__ignoreMap":53},[58,151,152,155,159,163,166,170,173,176,178,181,184,187],{"class":60,"line":61},[58,153,154],{"class":64},"loop",[58,156,158],{"class":157},"sTNBD","(",[58,160,162],{"class":161},"scz_3","async",[58,164,165],{"class":157}," ({ ",[58,167,169],{"class":168},"s3F5K","stimuli",[58,171,172],{"class":157},", ",[58,174,175],{"class":168},"signal",[58,177,172],{"class":157},[58,179,180],{"class":168},"stop",[58,182,183],{"class":157}," }) ",[58,185,186],{"class":161},"=>",[58,188,189],{"class":157}," {\n",[58,191,192,196,199,201,204,206,208,211,213],{"class":60,"line":68},[58,193,195],{"class":194},"sYbnZ","    await",[58,197,198],{"class":64}," phase",[58,200,158],{"class":157},[58,202,203],{"class":74},"\"sense\"",[58,205,172],{"class":157},[58,207,162],{"class":161},[58,209,210],{"class":157}," () ",[58,212,186],{"class":161},[58,214,189],{"class":157},[58,216,217],{"class":60,"line":78},[58,218,219],{"class":90},"        \u002F\u002F fold what's new into your own model\n",[58,221,222],{"class":60,"line":94},[58,223,224],{"class":157},"    })\n",[58,226,227],{"class":60,"line":108},[58,228,230],{"emptyLinePlaceholder":229},true,"\n",[58,232,233,235,237,239,242,244,246,248,250],{"class":60,"line":119},[58,234,195],{"class":194},[58,236,198],{"class":64},[58,238,158],{"class":157},[58,240,241],{"class":74},"\"think\"",[58,243,172],{"class":157},[58,245,162],{"class":161},[58,247,210],{"class":157},[58,249,186],{"class":161},[58,251,189],{"class":157},[58,253,254],{"class":60,"line":130},[58,255,256],{"class":90},"        \u002F\u002F your strategy. the kernel has no opinion past this line.\n",[58,258,260],{"class":60,"line":259},8,[58,261,224],{"class":157},[58,263,265],{"class":60,"line":264},9,[58,266,230],{"emptyLinePlaceholder":229},[58,268,270,272,274,276,279,281,283,285,287],{"class":60,"line":269},10,[58,271,195],{"class":194},[58,273,198],{"class":64},[58,275,158],{"class":157},[58,277,278],{"class":74},"\"act\"",[58,280,172],{"class":157},[58,282,162],{"class":161},[58,284,210],{"class":157},[58,286,186],{"class":161},[58,288,189],{"class":157},[58,290,292],{"class":60,"line":291},11,[58,293,294],{"class":90},"        \u002F\u002F effects leave through exactly two doors:\n",[58,296,298],{"class":60,"line":297},12,[58,299,300],{"class":90},"        \u002F\u002F   kernel.output(type, data)  — emit a fact\n",[58,302,304],{"class":60,"line":303},13,[58,305,306],{"class":90},"        \u002F\u002F   kernel.run(code)           — request execution\n",[58,308,310],{"class":60,"line":309},14,[58,311,224],{"class":157},[58,313,315],{"class":60,"line":314},15,[58,316,230],{"emptyLinePlaceholder":229},[58,318,320,323,326],{"class":60,"line":319},16,[58,321,322],{"class":64},"    stop",[58,324,325],{"class":157},"()   ",[58,327,328],{"class":90},"\u002F\u002F nothing pending — this wake is over, the brain stays warm\n",[58,330,332],{"class":60,"line":331},17,[58,333,334],{"class":157},"})\n",[14,336,337,338,341,342,345,346,349],{},"That's a cognet. ",[55,339,340],{},"phase()"," names a stage and times it. ",[55,343,344],{},"stop()"," ends the wake. Module\nscope is the brain's resident RAM: alive across wakes, rebuildable from the log, and lost\nwithout consequence on ",[55,347,348],{},"kill -9",".",[40,351,353],{"id":352},"two-ways-to-be-alive","Two ways to be alive",[14,355,356],{},"A cognet declares how it is triggered, and that single choice is the difference between a\nchat agent and a control loop.",[14,358,359,362],{},[32,360,361],{},"Invocation"," — the brain wakes when a stimulus arrives. A coding agent, a support\nagent, anything conversational: it sleeps until there's something to think about.",[48,364,366],{"className":145,"code":365,"language":147,"meta":53,"style":53},"export default defineCognet({\n    name: \"reviewer\",\n    abi: \"9\",\n    mode: { kind: \"invocation\" },\n})\n",[55,367,368,382,393,403,420],{"__ignoreMap":53},[58,369,370,373,376,379],{"class":60,"line":61},[58,371,372],{"class":194},"export",[58,374,375],{"class":194}," default",[58,377,378],{"class":64}," defineCognet",[58,380,381],{"class":157},"({\n",[58,383,384,387,390],{"class":60,"line":68},[58,385,386],{"class":168},"    name:",[58,388,389],{"class":74}," \"reviewer\"",[58,391,392],{"class":157},",\n",[58,394,395,398,401],{"class":60,"line":78},[58,396,397],{"class":168},"    abi:",[58,399,400],{"class":74}," \"9\"",[58,402,392],{"class":157},[58,404,405,408,411,414,417],{"class":60,"line":94},[58,406,407],{"class":168},"    mode:",[58,409,410],{"class":157}," { ",[58,412,413],{"class":168},"kind:",[58,415,416],{"class":74}," \"invocation\"",[58,418,419],{"class":157}," },\n",[58,421,422],{"class":60,"line":108},[58,423,334],{"class":157},[14,425,426,429],{},[32,427,428],{},"Continuous"," — the brain wakes on a clock, whether or not anything arrived. A\nperception stack, a controller, an embodied agent that must keep acting whether or not\nthe world spoke to it.",[48,431,433],{"className":145,"code":432,"language":147,"meta":53,"style":53},"export default defineCognet({\n    name: \"gait\",\n    abi: \"9\",\n    mode: { kind: \"continuous\", tickMs: 8 },   \u002F\u002F 125Hz\n})\n",[55,434,435,445,454,462,488],{"__ignoreMap":53},[58,436,437,439,441,443],{"class":60,"line":61},[58,438,372],{"class":194},[58,440,375],{"class":194},[58,442,378],{"class":64},[58,444,381],{"class":157},[58,446,447,449,452],{"class":60,"line":68},[58,448,386],{"class":168},[58,450,451],{"class":74}," \"gait\"",[58,453,392],{"class":157},[58,455,456,458,460],{"class":60,"line":78},[58,457,397],{"class":168},[58,459,400],{"class":74},[58,461,392],{"class":157},[58,463,464,466,468,470,473,475,478,482,485],{"class":60,"line":94},[58,465,407],{"class":168},[58,467,410],{"class":157},[58,469,413],{"class":168},[58,471,472],{"class":74}," \"continuous\"",[58,474,172],{"class":157},[58,476,477],{"class":168},"tickMs:",[58,479,481],{"class":480},"sDGX8"," 8",[58,483,484],{"class":157}," },   ",[58,486,487],{"class":90},"\u002F\u002F 125Hz\n",[58,489,490],{"class":60,"line":108},[58,491,334],{"class":157},[14,493,494],{},"Both call the same wake machinery, and the loop body doesn't change shape between them.\nAn empty stimuli diff is the ordinary steady state for a continuous cognet, not an edge\ncase it has to special-case.",[14,496,497,498,501,502,349],{},"Continuous mode is ",[32,499,500],{},"declared but not yet implemented"," — selecting it throws today. The\ntype, wiring, and lifecycle are landed; what's deliberately unanswered is wake-overlap\npolicy, which needs a real workload rather than a guess. See\n",[503,504,506],"a",{"href":505},"\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Floop","The Loop",[40,508,510],{"id":509},"the-engine-is-not-about-llms","The engine is not about LLMs",[14,512,513],{},"Inference is one verb of seven:",[515,516,517,530],"table",{},[518,519,520],"thead",{},[521,522,523,527],"tr",{},[524,525,526],"th",{},"Verb",[524,528,529],{},"What it does",[531,532,533,544,554,564,574,584,598],"tbody",{},[521,534,535,541],{},[536,537,538],"td",{},[55,539,540],{},"kernel.output(type, data)",[536,542,543],{},"Unmediated emission. Commits to the log; never refuses.",[521,545,546,551],{},[536,547,548],{},[55,549,550],{},"kernel.run(code)",[536,552,553],{},"Mediated request. The kernel executes and commits both sides.",[521,555,556,561],{},[536,557,558],{},[55,559,560],{},"kernel.stream(req)",[536,562,563],{},"Inference.",[521,565,566,571],{},[536,567,568],{},[55,569,570],{},"kernel.scope()",[536,572,573],{},"The tool surface currently available.",[521,575,576,581],{},[536,577,578],{},[55,579,580],{},"kernel.base()",[536,582,583],{},"The agent's standing identity text.",[521,585,586,591],{},[536,587,588],{},[55,589,590],{},"kernel.emit(type, data)",[536,592,593,594,597],{},"Its own telemetry. ",[55,595,596],{},"cognet:*"," only, refused otherwise.",[521,599,600,605],{},[536,601,602],{},[55,603,604],{},"kernel.store",[536,606,607],{},"Private key\u002Fvalue state, plus a read-only view of the episodic log.",[14,609,610,611,614],{},"Not the axis the others hang off — one row. A cognet that never calls ",[55,612,613],{},"stream()"," is still\na cognet: same loop, same clock, same telemetry, same durable record.",[14,616,617],{},"Here is a classical controller, with no model anywhere in it:",[48,619,621],{"className":145,"code":620,"language":147,"meta":53,"style":53},"let integral = 0\nlet previous = 0\n\nloop(async ({ stop }) => {\n    const { error, dt } = await phase(\"sense\", async () => readSensor())\n\n    const command = await phase(\"compute\", async () => {\n        integral += error * dt\n        const derivative = (error - previous) \u002F dt\n        previous = error\n        return Kp * error + Ki * integral + Kd * derivative\n    })\n\n    await phase(\"actuate\", async () => {\n        await kernel.output(\"cognet:output:field\", {\n            reading: { value: command, unit: \"throttle\" },\n        })\n    })\n\n    stop()\n})\n",[55,622,623,637,648,652,670,712,716,744,760,784,794,827,831,835,856,877,899,904,909,914,922],{"__ignoreMap":53},[58,624,625,628,631,634],{"class":60,"line":61},[58,626,627],{"class":161},"let",[58,629,630],{"class":168}," integral",[58,632,633],{"class":157}," = ",[58,635,636],{"class":480},"0\n",[58,638,639,641,644,646],{"class":60,"line":68},[58,640,627],{"class":161},[58,642,643],{"class":168}," previous",[58,645,633],{"class":157},[58,647,636],{"class":480},[58,649,650],{"class":60,"line":78},[58,651,230],{"emptyLinePlaceholder":229},[58,653,654,656,658,660,662,664,666,668],{"class":60,"line":94},[58,655,154],{"class":64},[58,657,158],{"class":157},[58,659,162],{"class":161},[58,661,165],{"class":157},[58,663,180],{"class":168},[58,665,183],{"class":157},[58,667,186],{"class":161},[58,669,189],{"class":157},[58,671,672,675,677,681,683,686,689,692,694,696,698,700,702,704,706,709],{"class":60,"line":108},[58,673,674],{"class":161},"    const",[58,676,410],{"class":157},[58,678,680],{"class":679},"s9McN","error",[58,682,172],{"class":157},[58,684,685],{"class":679},"dt",[58,687,688],{"class":157}," } = ",[58,690,691],{"class":194},"await",[58,693,198],{"class":64},[58,695,158],{"class":157},[58,697,203],{"class":74},[58,699,172],{"class":157},[58,701,162],{"class":161},[58,703,210],{"class":157},[58,705,186],{"class":161},[58,707,708],{"class":64}," readSensor",[58,710,711],{"class":157},"())\n",[58,713,714],{"class":60,"line":119},[58,715,230],{"emptyLinePlaceholder":229},[58,717,718,720,723,725,727,729,731,734,736,738,740,742],{"class":60,"line":130},[58,719,674],{"class":161},[58,721,722],{"class":679}," command",[58,724,633],{"class":157},[58,726,691],{"class":194},[58,728,198],{"class":64},[58,730,158],{"class":157},[58,732,733],{"class":74},"\"compute\"",[58,735,172],{"class":157},[58,737,162],{"class":161},[58,739,210],{"class":157},[58,741,186],{"class":161},[58,743,189],{"class":157},[58,745,746,749,752,754,757],{"class":60,"line":259},[58,747,748],{"class":168},"        integral",[58,750,751],{"class":157}," += ",[58,753,680],{"class":168},[58,755,756],{"class":157}," * ",[58,758,759],{"class":168},"dt\n",[58,761,762,765,768,771,773,776,779,782],{"class":60,"line":264},[58,763,764],{"class":161},"        const",[58,766,767],{"class":679}," derivative",[58,769,770],{"class":157}," = (",[58,772,680],{"class":168},[58,774,775],{"class":157}," - ",[58,777,778],{"class":168},"previous",[58,780,781],{"class":157},") \u002F ",[58,783,759],{"class":168},[58,785,786,789,791],{"class":60,"line":269},[58,787,788],{"class":168},"        previous",[58,790,633],{"class":157},[58,792,793],{"class":168},"error\n",[58,795,796,799,802,804,806,809,812,814,817,819,822,824],{"class":60,"line":291},[58,797,798],{"class":194},"        return",[58,800,801],{"class":168}," Kp",[58,803,756],{"class":157},[58,805,680],{"class":168},[58,807,808],{"class":157}," + ",[58,810,811],{"class":168},"Ki",[58,813,756],{"class":157},[58,815,816],{"class":168},"integral",[58,818,808],{"class":157},[58,820,821],{"class":168},"Kd",[58,823,756],{"class":157},[58,825,826],{"class":168},"derivative\n",[58,828,829],{"class":60,"line":297},[58,830,224],{"class":157},[58,832,833],{"class":60,"line":303},[58,834,230],{"emptyLinePlaceholder":229},[58,836,837,839,841,843,846,848,850,852,854],{"class":60,"line":309},[58,838,195],{"class":194},[58,840,198],{"class":64},[58,842,158],{"class":157},[58,844,845],{"class":74},"\"actuate\"",[58,847,172],{"class":157},[58,849,162],{"class":161},[58,851,210],{"class":157},[58,853,186],{"class":161},[58,855,189],{"class":157},[58,857,858,861,864,866,869,871,874],{"class":60,"line":314},[58,859,860],{"class":194},"        await",[58,862,863],{"class":168}," kernel",[58,865,349],{"class":157},[58,867,868],{"class":64},"output",[58,870,158],{"class":157},[58,872,873],{"class":74},"\"cognet:output:field\"",[58,875,876],{"class":157},", {\n",[58,878,879,882,884,887,889,891,894,897],{"class":60,"line":319},[58,880,881],{"class":168},"            reading:",[58,883,410],{"class":157},[58,885,886],{"class":168},"value:",[58,888,722],{"class":168},[58,890,172],{"class":157},[58,892,893],{"class":168},"unit:",[58,895,896],{"class":74}," \"throttle\"",[58,898,419],{"class":157},[58,900,901],{"class":60,"line":331},[58,902,903],{"class":157},"        })\n",[58,905,907],{"class":60,"line":906},18,[58,908,224],{"class":157},[58,910,912],{"class":60,"line":911},19,[58,913,230],{"emptyLinePlaceholder":229},[58,915,917,919],{"class":60,"line":916},20,[58,918,322],{"class":64},[58,920,921],{"class":157},"()\n",[58,923,925],{"class":60,"line":924},21,[58,926,334],{"class":157},[14,928,929,930,933,934,936,937,349],{},"Same ",[55,931,932],{},"loop()",". Same ",[55,935,340],{},". Same telemetry, same flame graph, same durability. The\nonly difference between that and a language-model agent is what happens inside ",[55,938,939],{},"think",[14,941,942],{},"That is what makes this a substrate rather than an agent framework. You can put a\nperception stack in here and run it with models entirely out of the hot loop, or build a\npipeline where three different models each do a job a brain needs done, or write\nsomething with no learned component at all.",[40,944,946],{"id":945},"where-a-cognet-sits","Where a cognet sits",[14,948,949],{},"A cognet is one layer of three, and it's the only one that thinks.",[515,951,952,962],{},[518,953,954],{},[521,955,956,959],{},[524,957,958],{},"Layer",[524,960,961],{},"What it owns",[531,963,964,974,984],{},[521,965,966,971],{},[536,967,968],{},[32,969,970],{},"Axon",[536,972,973],{},"identity, policy, ownership, the deployable handle",[521,975,976,981],{},[536,977,978],{},[32,979,980],{},"Cognet",[536,982,983],{},"the cognition — just code, against a kernel",[521,985,986,991],{},[536,987,988],{},[32,989,990],{},"Body",[536,992,993],{},"ROS, a simulator, an HTTP endpoint, a microphone",[14,995,996],{},"Robotics middleware like ROS is a nervous system: it moves messages between drivers,\nsensors, and actuators, and does that well. It has no opinion about the entity those\nparts belong to — who owns it, what it is permitted to do, what it decided and why. Axon\nis that outer layer. A module bridges ROS into it: topics become stimuli, actions become\neffects, and the cognet — which knows about neither — thinks.",[14,998,999],{},"The same holds with no hardware anywhere. A cognet reviewing code has exactly the same\nrelationship to its environment as one driving a servo. Neither can tell which it is.",[40,1001,1003],{"id":1002},"the-boundary-is-enforced-not-agreed","The boundary is enforced, not agreed",[14,1005,1006,1007,1010],{},"Axon already treats model-authored code as untrusted: the capsule can request, only the\nkernel can take. Cognets extend that inversion one ring further in. ",[32,1008,1009],{},"The cognet is the\ncognition, and the kernel protects the user's resources from it with equal severity"," —\nnot because your brain is malicious, but because a boundary that only holds for\nwell-behaved code isn't a boundary.",[14,1012,1013],{},"A cognet cannot commit to the session log; it emits, and the kernel writes on its behalf.\nIt cannot read kernel telemetry, only entries. It cannot touch the filesystem except by\nasking the kernel to run code in a capsule the kernel alone constructs, under the agent's\npolicy.",[14,1015,1016],{},"Strip all of that away and what remains is portable. A mind that never learned what kind\nof world it was in doesn't need porting when the world changes.",[40,1018,1020],{"id":1019},"who-this-is-for","Who this is for",[14,1022,1023],{},"Most people building on Axon never open a cognet. They write an agent — identity, tools,\npolicy — and the runtime handles cognition. That's the point of the platform.",[14,1025,1026],{},"This section is for the people who want to build the cognition itself: researchers,\nrobotics engineers, anyone who looks at an agent loop and wants to replace it rather than\nconfigure it. The material stays engineer-facing. A cognitive engine doesn't have a\nbeginner mode.",[14,1028,1029,1030,1034],{},"If you're building an agent, start with ",[503,1031,1033],{"href":1032},"\u002Fdocs\u002Fv2\u002Fagent","Agent",". If you want to program\nthe mind inside one, keep reading.",[40,1036,1038],{"id":1037},"why-its-public","Why it's public",[14,1040,1041],{},"Axon began as two projects — a cognitive engine and an agent runtime — that turned out to\nbe one system written twice. Collapsing them produced this boundary, which is why it sits\nwhere it does rather than where a design document would have put it.",[14,1043,1044],{},"It was meant to stay private. It isn't, because the platform is the product: every layer\npeople can build on directly is a layer that compounds.",[40,1046,1048],{"id":1047},"start-here","Start here",[14,1050,1051,1057],{},[32,1052,1053],{},[503,1054,1056],{"href":1055},"\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Fkernel-contract","The Kernel Contract"," — the seven verbs in\nfull, and everything a cognet structurally cannot do. Read this first; every page after\nit is a consequence.",[14,1059,1060,1064,1065,172,1067,172,1070,172,1073,1076],{},[32,1061,1062],{},[503,1063,506],{"href":505}," — ",[55,1066,154],{},[55,1068,1069],{},"tick",[55,1071,1072],{},"phase",[55,1074,1075],{},"system",", and the\nworld clock.",[14,1078,1079,1085],{},[32,1080,1081],{},[503,1082,1084],{"href":1083},"\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Fworld","The World"," — the entity-component model, and why\ncognition is shaped like a game world.",[14,1087,1088,1094],{},[32,1089,1090],{},[503,1091,1093],{"href":1092},"\u002Fdocs\u002Fv2\u002Fcognets\u002Fengine\u002Fmemory","Memory"," — the log-shaped mind, and why cold boot and\na steady-state tick are the same operation.",[14,1096,1097,1103],{},[32,1098,1099],{},[503,1100,1102],{"href":1101},"\u002Fdocs\u002Fv2\u002Fcognets\u002Fbuilding\u002Fzero","Anatomy of zero"," — the reference cognet, read in\nfull. The one you'll clone.",[14,1105,1106,1112],{},[32,1107,1108],{},[503,1109,1111],{"href":1110},"\u002Fdocs\u002Fv2\u002Fcognets\u002Fbuilding\u002Fbeyond-llm","Cognition Beyond the LLM"," — control loops,\nperception stacks, embodied agents, simulated organisms.",[1114,1115,1116],"style",{},"html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}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 .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html pre.shiki code .sDGX8, html code.shiki .sDGX8{--shiki-default:#B5CEA8}html pre.shiki code .s9McN, html code.shiki .s9McN{--shiki-default:#4FC1FF}",{"title":53,"searchDepth":68,"depth":68,"links":1118},[1119,1120,1121,1122,1123,1124,1125,1126],{"id":42,"depth":68,"text":43},{"id":352,"depth":68,"text":353},{"id":509,"depth":68,"text":510},{"id":945,"depth":68,"text":946},{"id":1002,"depth":68,"text":1003},{"id":1019,"depth":68,"text":1020},{"id":1037,"depth":68,"text":1038},{"id":1047,"depth":68,"text":1048},"A cognitive engine — the loop, the world model, and the instrumentation for building minds.","md",{},"\u002Fdocs\u002Fv2\u002Fcognets",{"title":5,"description":1127},"docs\u002Fv2\u002Fcognets\u002Findex","TihWBtBuU6oT90b_8PrzvXkUP8w5UJkHKx0JQZvTYbE",1785156432083]