[{"data":1,"prerenderedAt":1792},["ShallowReactive",2],{"site-nav-content":3,"hiring-banner-content":179,"blog:/blog/a-loop-is-not-an-agent":191,"blog-index-copy":1216,"blog:/blog/a-loop-is-not-an-agent:surround":1237,"site-cta-content":1773},{"header":4,"productNav":9,"nav":42,"footer":61,"askAI":132,"id":163,"title":164,"archived":165,"authors":166,"badge":166,"body":167,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":175,"relatedHeading":166,"seo":176,"series":166,"sitemap":165,"status":166,"stem":177,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":178},{"productLabel":5,"loginLabel":6,"contactLabel":7,"contactSalesLabel":8},"Product","Log in","Contact","Get started for free",[10,14,18,22,26,30,34,38],{"label":11,"to":12,"description":13},"Overview","/overview","Seven layers. One closed loop.",{"label":15,"to":16,"description":17},"Conflux","/product/conflux","Where your team, workstreams, and agents meet.",{"label":19,"to":20,"description":21},"Agent Teams","/product/agent-teams","Specialist teams - governed from day one.",{"label":23,"to":24,"description":25},"Lifecycle Graph","/product/lifecycle-graph","Intelligence that compounds across every interaction.",{"label":27,"to":28,"description":29},"Company Wiki","/product/wiki","Playbooks and policies where expertise stays.",{"label":31,"to":32,"description":33},"Workstreams","/product/workstreams","From brief to signed-off deliverable on one canvas.",{"label":35,"to":36,"description":37},"Perception Console","/product/perception","Ask your whole business in plain English.",{"label":39,"to":40,"description":41},"Governance","/product/governance","Frontier AI you can actually sign off on.",[43,46,49,52,55,58],{"label":44,"to":45},"Models","/models",{"label":47,"to":48},"Pricing","/pricing",{"label":50,"to":51},"Integrations","/integrations",{"label":53,"to":54},"Security","/security",{"label":56,"to":57},"Partners","/partners",{"label":59,"to":60},"Insights","/blog",{"productHeading":5,"companyHeading":62,"resourcesHeading":63,"legalHeading":64,"docsLabel":65,"docsUrl":66,"statementLines":67,"copyright":70,"companyLinks":71,"resourcesLinks":86,"legalLinks":102,"socialLinks":109,"bottomLinks":119},"Company","Resources","Legal","Docs","https://docs.gonimbus.ai",[68,69],"Stop training someone else's model.","Control your AI.","© 2026 Nimbus Intelligence, Inc. All rights reserved.",[72,73,74,75,76,78,81,84],{"label":47,"to":48},{"label":50,"to":51},{"label":53,"to":54},{"label":59,"to":60},{"label":77,"to":57},"Partner Program",{"label":79,"to":80},"Careers","/careers",{"label":82,"to":83},"System status","/status",{"label":7,"to":85},"/contact",[87,90,93,96,99],{"label":88,"to":89},"Glossary","/glossary",{"label":91,"to":92},"Compare","/compare",{"label":94,"to":95},"Evaluate","/evaluate",{"label":97,"to":98},"Problems","/problems",{"label":100,"to":101},"Use cases","/use-cases",[103,106],{"label":104,"to":105},"Terms of Service","/terms",{"label":107,"to":108},"Privacy Policy","/privacy",[110,113,116],{"label":111,"href":112},"LinkedIn","https://www.linkedin.com/company/gonimbusai/",{"label":114,"href":115},"X","https://x.com/gonimbusai",{"label":117,"href":118},"Instagram","https://www.instagram.com/gonimbus_ai/",[120,122,124,127,128],{"label":121,"to":105},"Terms",{"label":123,"to":108},"Privacy",{"label":125,"to":126},"Compliance","/compliance",{"label":82,"to":83},{"label":129,"to":130,"external":131},"LLMs.txt","/llms.txt",true,{"text":133,"prompt":134},"Ask AI about Nimbus",{"I'm researching enterprise intelligence platforms and want to know how Nimbus combines perception, collaboration, and autonomous agents to drive strategic decision-making":135,"platforms":137},{" Summarize the highlights from Nimbus's website":136},"https://gonimbus.ai",[138,143,148,153,158],{"name":139,"label":140,"icon":141,"hrefPrefix":142},"chatgpt","ChatGPT","simple-icons:openai","https://chatgpt.com/?prompt=",{"name":144,"label":145,"icon":146,"hrefPrefix":147},"perplexity","Perplexity","mdi:magnify","https://www.perplexity.ai/search/new?q=",{"name":149,"label":150,"icon":151,"hrefPrefix":152},"grok","Grok","simple-icons:x","https://x.com/i/grok?text=",{"name":154,"label":155,"icon":156,"hrefPrefix":157},"claude","Claude","simple-icons:anthropic","https://claude.ai/new?q=",{"name":159,"label":160,"icon":161,"hrefPrefix":162},"google-ai","Google AI","simple-icons:google","https://www.google.com/search?udm=50&aep=11&q=","content/shared/nav.md","Site navigation",false,null,{"type":168,"value":169,"toc":170},"minimark",[],{"title":171,"searchDepth":172,"depth":172,"links":173},"",2,[],"md","/shared/nav",{"title":164,"description":171},"shared/nav","1dD7ahDRl0SQ4hz53-kKo0tEFrGaLuaztZ3PPfp6a9k",{"enabled":165,"message":180,"linkLabel":79,"linkHref":80,"id":181,"title":182,"archived":165,"authors":166,"badge":166,"body":183,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":187,"relatedHeading":166,"seo":188,"series":166,"sitemap":165,"status":166,"stem":189,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":190},"We're hiring! Join the team building the Sentient Enterprise.","content/shared/hiring.md","Hiring banner",{"type":168,"value":184,"toc":185},[],{"title":171,"searchDepth":172,"depth":172,"links":186},[],"/shared/hiring",{"title":182,"description":171},"shared/hiring","1zs3boivKda1e-b-hAyuNcmZSKjZUAXmecnwHVgcHzk",{"id":192,"title":193,"archived":165,"authors":194,"badge":197,"body":199,"date":1188,"definedTerm":166,"department":166,"description":1189,"extension":174,"eyebrow":166,"faqHeader":1190,"faqs":1193,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":165,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":1206,"relatedHeading":166,"seo":1207,"series":1208,"sitemap":131,"status":166,"stem":1209,"subhead":166,"tags":1210,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1215},"content/blog/a-loop-is-not-an-agent.md","A Loop Is Not an Agent",[195],{"name":196,"to":136},"Nimbus Research",{"label":198},"Architecture",{"type":168,"value":200,"toc":1173},[201,217,227,230,270,282,287,298,301,327,339,347,350,354,368,370,402,409,418,422,479,482,486,491,494,497,529,581,584,595,604,607,611,620,630,639,645,653,661,669,673,676,681,698,703,720,725,742,745,752,756,759,769,777,786,793,801,809,813,819,825,834,845,854,860,866,869,873,876,902,919,926,953,963,971,975,978,1020,1027,1031,1042,1058,1067,1071,1096,1100,1169],[202,203,204,205,209,210,213,214,216],"p",{},"A ",[206,207,208],"strong",{},"loop"," is not an ",[206,211,212],{},"agent",". On the normal path a loop never invokes a model. It runs a compiled recipe — read, rule, output, notify — and records skips when the world does not match. An ",[206,215,212],{}," reasons step by step with tools when the path is not fully known.",[202,218,219,226],{},[220,221,225],"a",{"href":222,"rel":223},"https://www.anthropic.com/engineering/building-effective-agents",[224],"nofollow","Anthropic’s guidance on building effective agents"," is explicit: do not wrap a problem in agentic machinery when a fixed pipeline will complete the job. Monday’s exception table is usually that problem. Enterprise programmes collapse the two because vendors sell “agents” and operators still need the weekly report. Collapse them and you pay twice: tokens for repetition, and incidents for guesses overnight.",[202,228,229],{},"Three terms, separated:",[231,232,233,245,260],"ul",{},[234,235,236,239,240,244],"li",{},[206,237,238],{},"Eval loop"," — sensor that grades a run after the fact. Not an agent either. See ",[220,241,243],{"href":242},"eval-loops-for-enterprise-agent-harnesses","eval loops for enterprise agent harnesses",".",[234,246,247,250,251,255,256,244],{},[206,248,249],{},"Standing-order loop"," — job on a ",[220,252,254],{"href":253},"what-is-an-ai-workstream","workstream"," that admits a run. See ",[220,257,259],{"href":258},"what-is-a-nimbus-loop","what is a standing-order loop",[234,261,262,265,266,244],{},[206,263,264],{},"Agentic workflow"," — interactive path that still reasons. See ",[220,267,269],{"href":268},"what-is-an-agentic-workflow","what is an agentic workflow",[202,271,272,276,277,281],{},[220,273,275],{"href":274},"what-is-loop-engineering","Loop engineering"," compiles the known path. ",[220,278,280],{"href":279},"what-is-harness-engineering","Harness engineering"," wraps the model when you truly need one. This page is the guardrail between them.",[283,284,286],"h2",{"id":285},"what-a-loop-is","What a loop is",[202,288,289,290,293,294,244],{},"A loop is a ",[206,291,292],{},"standing order",": trigger fires, recipe runs, run page appears, team notified. See ",[220,295,297],{"href":296},"six-things-that-start-a-loop","six things that start a loop",[202,299,300],{},"Properties that matter:",[231,302,303,309,315,321],{},[234,304,305,308],{},[206,306,307],{},"Deterministic happy path."," Same inputs and rules → same outputs, modulo real-world data changes you detect with sensors.",[234,310,311,314],{},[206,312,313],{},"No reinterpretation step."," Nobody re-describes the job in natural language before work begins.",[234,316,317,320],{},[206,318,319],{},"Skips are first-class."," Unknown vendor code → skip, not guess. Missing file → hard stop, not “try anyway.”",[234,322,323,326],{},[206,324,325],{},"Evidence by default."," Run page lists inputs, recipe version, outputs, skips. Audit walks records, not transcripts.",[202,328,329,334,335,338],{},[220,330,333],{"href":331,"rel":332},"https://docs.langchain.com/oss/python/langchain/agents",[224],"LangChain"," defines Agent = Model + Harness. A loop is intentionally ",[206,336,337],{},"not"," that object on the happy path. It is a scheduled pipeline with operator UX: form to configure, run page to inspect, roster to notify.",[202,340,341,342,346],{},"Compare ",[220,343,345],{"href":344},"loop-vs-workflow-vs-agent","loop vs workflow vs agent",": workflow is the abstract sequence; loop is the deployed, unattended instance; agent is the reasoning actor for unknown branches.",[202,348,349],{},"If you cannot show a run where the happy path invoked zero models, you do not have a loop in this sense. You have an agent on a timer.",[283,351,353],{"id":352},"what-an-agent-is","What an agent is",[202,355,356,357,359,360,363,364,244],{},"An ",[206,358,212],{}," (in the product sense) is a model inside a ",[206,361,362],{},"harness"," — tools, memory, hooks, budget — choosing actions over multiple steps until a stop condition. See ",[220,365,367],{"href":366},"what-is-an-agent-harness","what is an agent harness",[202,369,300],{},[231,371,372,378,384,396],{},[234,373,374,377],{},[206,375,376],{},"Non-determinism."," Same prompt can yield different tool choices. That is feature and bug.",[234,379,380,383],{},[206,381,382],{},"Tool dispatch."," The model decides which API to call based on context.",[234,385,386,389,390,395],{},[206,387,388],{},"Harness dependency."," Without sensors and stops, agents claim victory early. ",[220,391,394],{"href":392,"rel":393},"https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents",[224],"Anthropic on long-running harnesses"," names premature completion as a failure mode.",[234,397,398,401],{},[206,399,400],{},"Cost scales with steps."," Every reasoning turn spends tokens.",[202,403,404,408],{},[220,405,407],{"href":406},"agents-should-be-disposable","Agents should be disposable",": swap models, retire experiments, keep the compiled loop. If your “loop” breaks when you change flagship, it was an agent wearing a schedule.",[202,410,411,412,417],{},"Agents are the right tool for exploration: a new incident, a messy inbox of unknown layout, a first draft that needs judgement. They are the wrong tool for a job two people can already perform from a checklist. ",[220,413,416],{"href":414,"rel":415},"https://www.thoughtworks.com/insights/articles/operating-system-enterprise-ai",[224],"Thoughtworks’ operating system for enterprise AI"," argues for layered harnesses. The loop is the deterministic layer. Agents sit above it, not instead of it.",[283,419,421],{"id":420},"words-youll-hear","Words you’ll hear",[231,423,424,430,436,442,448,454,465,471],{},[234,425,426,429],{},[206,427,428],{},"Happy path."," The route that should complete without judgement. No model.",[234,431,432,435],{},[206,433,434],{},"Unknown path."," Ambiguity, missing source, novel case. Skip or escalate — do not invent.",[234,437,438,441],{},[206,439,440],{},"Skip."," Recorded halt with a reason. First-class outcome.",[234,443,444,447],{},[206,445,446],{},"Escalation."," Human on the roster, or an explicit agentic workflow on a named exception class.",[234,449,450,453],{},[206,451,452],{},"Scheduled prompt."," Calendar plus chat. Not a loop.",[234,455,456,459,460,464],{},[206,457,458],{},"Agentic loop."," Marketing merge of ",[220,461,463],{"href":462},"loop-engineering-vs-harness-engineering","loop engineering vs harness engineering",". Ask whether a model runs on the happy path.",[234,466,467,470],{},[206,468,469],{},"Disposable agent."," The exploration branch you can retire. The standing order stays.",[234,472,473,476,477,244],{},[206,474,475],{},"Eval loop."," Grades a run. Not a standing order. See ",[220,478,243],{"href":242},[202,480,481],{},"If a vendor cannot use these words without collapsing them, you will not be able to staff the exception queue.",[283,483,485],{"id":484},"the-unknown-path-rule","The unknown-path rule",[202,487,488],{},[206,489,490],{},"When the path is unknown, escalate to a person. Do not guess overnight.",[202,492,493],{},"Operational incidents from “helpful” automation share a shape: ambiguous input, silent default, wrong row updated, inbox quiet until finance opens the file in the morning.",[202,495,496],{},"Loops enforce:",[498,499,500,506,512,518],"ol",{},[234,501,502,505],{},[206,503,504],{},"Detect"," ambiguity with explicit rules.",[234,507,508,511],{},[206,509,510],{},"Skip"," with a human-readable reason.",[234,513,514,517],{},[206,515,516],{},"Notify"," someone on the roster.",[234,519,520,523,524,528],{},[206,521,522],{},"Wait"," for a decision on the workstream — ",[220,525,527],{"href":526},"what-is-collaborative-ai","collaborative AI",", not a side message.",[530,531,535],"pre",{"className":532,"code":533,"language":534,"meta":171,"style":171},"language-mermaid shiki shiki-themes github-light github-dark","flowchart TD\n  start[\"Work starts\"] --> known{\"Do we already know the steps?\"}\n  known -->|yes| recipe[\"Loop: run the recipe\"]\n  known -->|no| person[\"Ask a person\"]\n  recipe --> match{\"Did the world match?\"}\n  match -->|yes| done[\"Outputs and notify\"]\n  match -->|no| person\n","mermaid",[536,537,538,546,551,557,563,569,575],"code",{"__ignoreMap":171},[539,540,543],"span",{"class":541,"line":542},"line",1,[539,544,545],{},"flowchart TD\n",[539,547,548],{"class":541,"line":172},[539,549,550],{},"  start[\"Work starts\"] --> known{\"Do we already know the steps?\"}\n",[539,552,554],{"class":541,"line":553},3,[539,555,556],{},"  known -->|yes| recipe[\"Loop: run the recipe\"]\n",[539,558,560],{"class":541,"line":559},4,[539,561,562],{},"  known -->|no| person[\"Ask a person\"]\n",[539,564,566],{"class":541,"line":565},5,[539,567,568],{},"  recipe --> match{\"Did the world match?\"}\n",[539,570,572],{"class":541,"line":571},6,[539,573,574],{},"  match -->|yes| done[\"Outputs and notify\"]\n",[539,576,578],{"class":541,"line":577},7,[539,579,580],{},"  match -->|no| person\n",[202,582,583],{},"Agents tempt the opposite: “figure it out” is in the system prompt. Overnight, nobody is there to reject the figure.",[202,585,586,590,591,244],{},[220,587,589],{"href":588},"what-is-human-in-the-loop-ai","Human-in-the-loop"," is not a bumper sticker. It is a named person on this job for this class of exception. Loops route to that person. Agents only work if the harness refuses to act without them — see ",[220,592,594],{"href":593},"what-is-write-back-governance","write-back governance",[202,596,597,598,603],{},"Research on human–AI collaboration (",[220,599,602],{"href":600,"rel":601},"https://www.nature.com/articles/s41562-022-01358-0",[224],"Yang et al., Nature Human Behaviour, 2022",") shows teams outperform when humans retain meaningful override. Loops encode override by construction; agents require harness discipline to encode it at all.",[202,605,606],{},"The rule is operational, not aesthetic. A model that “usually gets it” will be wrong on the night you are not watching. Skip rates are how you learn; silent accuracy is how you accumulate debt.",[283,608,610],{"id":609},"when-vendors-blur-the-line","When vendors blur the line",[202,612,613,615,616,619],{},[206,614,452],{}," “Run this chat task every hour.” That is a scheduled ",[206,617,618],{},"agent call",". No compiled recipe version. No skip semantics. No diff against last week’s baseline.",[202,621,622,625,626,244],{},[206,623,624],{},"RPA with a language-model step."," Screen bot plus “interpret the popup.” Fragile interface replay plus non-determinism. See ",[220,627,629],{"href":628},"loop-vs-rpa","loop vs RPA",[202,631,632,635,636,638],{},[206,633,634],{},"“Agentic loop”."," Marketing merges ",[220,637,463],{"href":462},". Ask: on the happy path, is a model invoked? If yes, it is not a loop in the sense of this series.",[202,640,641,644],{},[206,642,643],{},"Auto-fix skips."," The system “helps” by filling missing values. That is an agent decision without a harness you configured. It violates the unknown-path rule.",[202,646,647,650,651,244],{},[206,648,649],{},"Eval as the product."," A grading harness without a standing order still starts from chat. See ",[220,652,243],{"href":242},[202,654,655,660],{},[220,656,659],{"href":657,"rel":658},"https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai",[224],"McKinsey’s State of AI"," reports adoption ahead of control design. Blurring loop and agent is a control design failure — interesting demo, expensive production.",[202,662,663,668],{},[220,664,667],{"href":665,"rel":666},"https://aiindex.stanford.edu/",[224],"Stanford HAI’s AI Index"," tracks agent capability rising faster than enterprise discipline. Discipline starts with naming: loop for repetition, agent for exploration.",[283,670,672],{"id":671},"a-worked-example-licence-true-up","A worked example: licence true-up",[202,674,675],{},"Software operations reconciles licence counts every Sunday: read the identity-provider export, read the billing export, apply entitlement rules, output a mismatch list, notify the IT lead.",[202,677,678],{},[206,679,680],{},"As a loop (correct).",[231,682,683,686,689,692,695],{},[234,684,685],{},"Recipe version 2.1 configured on the workstream",[234,687,688],{},"Skips: unknown SKU, duplicate email, missing billing row",[234,690,691],{},"Output: table on the run page",[234,693,694],{},"Zero model calls on the happy path",[234,696,697],{},"IT lead works two skips Monday morning on the shared job",[202,699,700],{},[206,701,702],{},"As an agent (incorrect for this job).",[231,704,705,708,711,714,717],{},[234,706,707],{},"Weekly prompt: “Compare these files and tell me what looks wrong”",[234,709,710],{},"Model invents categories not in the entitlement wiki",[234,712,713],{},"No skip for unknown SKU — row assigned to “misc”",[234,715,716],{},"Transcript is the only artefact",[234,718,719],{},"Cost every Sunday; drift every quarter",[202,721,722],{},[206,723,724],{},"Hybrid (acceptable after the loop proves).",[231,726,727,730,736,739],{},[234,728,729],{},"Loop handles most rows with skips for edge SKUs",[234,731,732,735],{},[206,733,734],{},"Separate"," agentic workflow on the skip queue only: propose mapping with citations to prior approvals",[234,737,738],{},"Harness: read-only history, eval sample, no write until signer",[234,740,741],{},"Loop remains; agent is disposable on the branch",[202,743,744],{},"Walk four Sundays. Week one: 12 mismatches, 2 skips, list matches the manual spreadsheet. Week two: identity export adds a contractor flag; the loop skips those rows instead of counting them as unused seats. Week three: owner versions the recipe. Week four: skip rate returns to baseline. If week two had been a prompt, the model might have “helpfully” classified contractors as unused — and finance would have cancelled seats.",[202,746,747,748,751],{},"That is why ",[220,749,750],{"href":274},"loop engineering"," treats skips as product feedback, not as failure.",[283,753,755],{"id":754},"escalation-paths-that-work","Escalation paths that work",[202,757,758],{},"When a loop skips, three legitimate next steps:",[202,760,761,764,765,244],{},[206,762,763],{},"1. Human decision on the workstream."," Default. FP&A resolves an ambiguous business unit. Controller picks a mapping. ",[220,766,768],{"href":767},"governance-as-a-multiplayer-primitive","Governance as a multiplayer primitive",[202,770,771,774,775,244],{},[206,772,773],{},"2. Agentic workflow on the exception queue."," Optional, scoped, harnessed. Not silent injection into the compiled recipe. See ",[220,776,269],{"href":268},[202,778,779,782,783,785],{},[206,780,781],{},"3. Recipe update."," If the same skip appears ten times, the world changed — update rules or wiki, version the recipe. That is ",[220,784,750],{"href":274},", not fine-tuning a persona.",[202,787,788,789,792],{},"Illegitimate next step: ",[206,790,791],{},"silent best-effort fill"," by a model inside the loop’s normal path.",[202,794,795,800],{},[220,796,799],{"href":797,"rel":798},"https://www.nist.gov/itl/ai-risk-management-framework",[224],"NIST AI RMF"," Manage function: change controls after observed harm. Skip logs are harm sensors. “The agent tried” is not a control change.",[202,802,803,808],{},[220,804,807],{"href":805,"rel":806},"https://www.iso.org/standard/42001",[224],"ISO/IEC 42001"," wants named actors. Escalation to “the bot” is not a named actor. Escalation to a roster role is.",[283,810,812],{"id":811},"what-goes-wrong","What goes wrong",[202,814,815,818],{},[206,816,817],{},"Hope as a skip policy."," “It will probably be fine.” Overnight, probably is a write.",[202,820,821,824],{},[206,822,823],{},"Transcript as evidence."," Audit cannot reconstruct which rules version ran from a chat log. Recipe version on a run page can.",[202,826,827,830,831,244],{},[206,828,829],{},"Irreplaceable prompt."," The compiled “loop” dies when the flagship model changes. You hid a harness inside a schedule. See ",[220,832,833],{"href":406},"agents should be disposable",[202,835,836,839,840,844],{},[206,837,838],{},"Multi-agent checklist."," Three models hand the same exception table between themselves. That is ",[220,841,843],{"href":842},"multiplayer-ai-and-multi-agent-ai","multi-agent"," theatre, not repetition.",[202,846,847,850,851,244],{},[206,848,849],{},"Writes on first schedule."," The clock is not a signer. See ",[220,852,853],{"href":593},"what is write-back governance",[202,855,856,859],{},[206,857,858],{},"No owner for skip trends."," Skips pile up; people ignore notifications; they return to the private spreadsheet.",[202,861,862,865],{},[206,863,864],{},"Eval-only programme."," You can grade an agent and still have no standing order. Monday still starts in chat.",[202,867,868],{},"Failure looks like a green check and a wrong category. Success looks like a skip, a reason, and a person who can change the recipe.",[283,870,872],{"id":871},"implications-for-buying-and-building","Implications for buying and building",[202,874,875],{},"Ask vendors:",[231,877,878,884,890,896],{},[234,879,880,883],{},[206,881,882],{},"Show a run where the happy path invoked zero models."," If they cannot, they sell agents.",[234,885,886,889],{},[206,887,888],{},"Show a skip."," If skips do not exist, they sell hope.",[234,891,892,895],{},[206,893,894],{},"Show recipe version on the run page."," If only prompts version, it is an agent.",[234,897,898,901],{},[206,899,900],{},"Show escalation to a named roster member."," If escalation is “try again,” it is an agent without a harness.",[202,903,904,908,909,913,914,918],{},[220,905,907],{"href":906},"how-to-evaluate-loop-engineering","How to evaluate loop engineering"," and ",[220,910,912],{"href":911},"how-to-evaluate-an-agent-harness","how to evaluate an agent harness"," are different scorecards. ",[220,915,917],{"href":916},"how-to-evaluate-collaborative-ai","How to evaluate collaborative AI"," applies when humans resolve skips together.",[202,920,921,925],{},[220,922,924],{"href":923},"four-pillars-of-an-enterprise-ai-platform","Four pillars of an enterprise AI platform",": host loops and harnesses on the same workstream; do not merge the concepts in procurement.",[202,927,928,929,932,933,932,938,932,943,948,949,952],{},"Regulatory readers — ",[220,930,807],{"href":805,"rel":931},[224],", ",[220,934,937],{"href":935,"rel":936},"https://artificialintelligenceact.eu/",[224],"EU AI Act",[220,939,942],{"href":940,"rel":941},"https://gdpr.eu/",[224],"GDPR",[220,944,947],{"href":945,"rel":946},"https://www.govinfo.gov/content/pkg/PLAW-107publ204/html/PLAW-107publ204.htm",[224],"Sarbanes-Oxley"," — care about accountability, not vocabulary. Loops make accountability cheap for repetitive segments: who was notified, what was skipped, what version ran. Agents can support accountability ",[206,950,951],{},"if"," harnessed. Unguarded agents subtract it.",[202,954,955,958,959,962],{},[220,956,957],{"href":842},"Multiplayer AI and multi-agent AI",": several people in the room versus several models handing work off. A loop can notify multiple people; that is not multi-agent. Adding three models to a checklist is multi-agent ",[206,960,961],{},"and"," usually a mistake.",[202,964,965,966,970],{},"Use ",[220,967,969],{"href":968},"loops-for-finance-and-planning","loops for finance and planning"," when the output becomes a signed pack — not when you need a chatbot in the close channel.",[283,972,974],{"id":973},"how-to-start-this-quarter","How to start this quarter",[202,976,977],{},"Audit one recurring job you already automated or attempted to automate.",[498,979,980,986,992,998,1008,1014],{},[234,981,982,985],{},[206,983,984],{},"List last month’s runs."," Were models invoked on every run? If yes, you likely have an agent, not a loop.",[234,987,988,991],{},[206,989,990],{},"Find one silent default."," Row filled, field inferred, email sent without skip. Remove it; add skip plus notify.",[234,993,994,997],{},[206,995,996],{},"Re-run ten times."," Happy path should show zero model steps on the run page.",[234,999,1000,1003,1004,1007],{},[206,1001,1002],{},"Pick one exception class"," worth an agentic workflow. Attach it ",[206,1005,1006],{},"only"," to that queue with harness controls.",[234,1009,1010,1013],{},[206,1011,1012],{},"Document the unknown-path rule"," for the roster: unknown → skip → person. Not unknown → model → hope.",[234,1015,1016,1019],{},[206,1017,1018],{},"Review skip count"," after four weeks. Version the recipe or the wiki. Do not tune a persona to hide a stale rule.",[202,1021,1022,1023,1026],{},"If step 3 fails, re-implement as a standing order with a form, not a scheduled prompt. ",[220,1024,1025],{"href":274},"What is loop engineering"," is the practice; this page is the refusal.",[283,1028,1030],{"id":1029},"how-this-shows-up-in-nimbus","How this shows up in Nimbus",[202,1032,204,1033,1036,1037,1039,1040,244],{},[206,1034,1035],{},"Loop"," on a ",[220,1038,254],{"href":253}," is the standing order: trigger, compiled recipe, run page. On the happy path it does not invoke a model. Skips notify the roster. Writes still require ",[220,1041,594],{"href":593},[202,1043,1044,1045,1048,1049,1052,1053,908,1056,244],{},"If you attach an ",[220,1046,1047],{"href":268},"agentic workflow"," to a named exception class, that branch sits under ",[220,1050,1051],{"href":279},"harness engineering",". The Loop remains; the agent stays disposable. See ",[220,1054,1055],{"href":258},"what is a Nimbus Loop",[220,1057,833],{"href":406},[202,1059,1060,1061,908,1064,244],{},"Product surfaces: ",[220,1062,1063],{"href":32},"workstreams",[220,1065,1066],{"href":40},"governance",[283,1068,1070],{"id":1069},"related-reading","Related reading",[231,1072,1073,1078,1082,1087,1092],{},[234,1074,1075],{},[220,1076,1077],{"href":258},"What is a Nimbus Loop",[234,1079,1080],{},[220,1081,1025],{"href":274},[234,1083,1084],{},[220,1085,1086],{"href":462},"Loop engineering vs harness engineering",[234,1088,1089],{},[220,1090,1091],{"href":268},"What is an agentic workflow",[234,1093,1094],{},[220,1095,407],{"href":406},[283,1097,1099],{"id":1098},"sources","Sources",[231,1101,1102,1108,1114,1120,1126,1132,1137,1142,1148,1153,1159,1164],{},[234,1103,1104],{},[220,1105,1107],{"href":331,"rel":1106},[224],"LangChain, Agents",[234,1109,1110],{},[220,1111,1113],{"href":222,"rel":1112},[224],"Anthropic, Building effective agents",[234,1115,1116],{},[220,1117,1119],{"href":392,"rel":1118},[224],"Anthropic, Effective harnesses for long-running agents",[234,1121,1122],{},[220,1123,1125],{"href":414,"rel":1124},[224],"Thoughtworks, The operating system for enterprise AI",[234,1127,1128],{},[220,1129,1131],{"href":657,"rel":1130},[224],"McKinsey, The state of AI in 2025",[234,1133,1134],{},[220,1135,799],{"href":797,"rel":1136},[224],[234,1138,1139],{},[220,1140,807],{"href":805,"rel":1141},[224],[234,1143,1144],{},[220,1145,1147],{"href":665,"rel":1146},[224],"Stanford HAI, AI Index",[234,1149,1150],{},[220,1151,602],{"href":600,"rel":1152},[224],[234,1154,1155],{},[220,1156,1158],{"href":945,"rel":1157},[224],"Sarbanes-Oxley Act of 2002",[234,1160,1161],{},[220,1162,937],{"href":935,"rel":1163},[224],[234,1165,1166],{},[220,1167,942],{"href":940,"rel":1168},[224],[1170,1171,1172],"style",{},"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":171,"searchDepth":172,"depth":172,"links":1174},[1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187],{"id":285,"depth":172,"text":286},{"id":352,"depth":172,"text":353},{"id":420,"depth":172,"text":421},{"id":484,"depth":172,"text":485},{"id":609,"depth":172,"text":610},{"id":671,"depth":172,"text":672},{"id":754,"depth":172,"text":755},{"id":811,"depth":172,"text":812},{"id":871,"depth":172,"text":872},{"id":973,"depth":172,"text":974},{"id":1029,"depth":172,"text":1030},{"id":1069,"depth":172,"text":1070},{"id":1098,"depth":172,"text":1099},"2026-09-12","On the normal path a loop never invokes a model. When the path is unknown, escalate to a person — do not guess at 3am. Agents are for exploration; loops are for repetition.",{"eyebrow":1191,"title":1192},"Common questions","Repetition vs reasoning",[1194,1197,1200,1203],{"question":1195,"answer":1196},"Should a loop ever call a model?","Not on the normal path. If you add a model for an exception class, treat that branch as an explicit agentic workflow with harness controls — not as part of the compiled recipe. The compiled path should remain replayable without tokens. Use a model when the route is not fully known and a person has already decided that class is worth generation. Refuse a silent injection of “figure it out” into the happy path, and refuse to call the result a loop merely because it is scheduled. See what is an agentic workflow and what is harness engineering.",{"question":1198,"answer":1199},"Is a scheduled ChatGPT prompt a loop?","No. That is a scheduled agent call. A loop compiles deterministic steps, records skips, and produces a run page without re-deriving the job each time. A prompt that says “compare these files” will invent categories, skip skip-semantics, and leave a transcript as the only artefact. Use a scheduled prompt only as a discovery tool while you write the real recipe. Then retire it. Refuse to treat calendar-plus-chat as loop engineering, even if the output looks tidy for a week.",{"question":1201,"answer":1202},"What happens when a loop hits something unexpected?","It skips with a reason and notifies the roster. A person decides next. Guessing is how operational debt compounds overnight: ambiguous input, silent default, wrong row updated, quiet inbox until morning. Use the skip queue as a first-class surface — same workstream, named exception worker. Review repeated skips as a signal to version the recipe. Refuse best-effort fills, auto-mapped categories, and “try again” as the only escalation. See what is loop engineering.",{"question":1204,"answer":1205},"Can agents and loops share a workstream?","Yes. The workstream holds the job: brief, connectors, roster, budget. The standing-order loop owns repetition. An agentic workflow, if attached, owns a named exception class under harness controls. Keep the objects distinct so you can dispose of the agent and keep the recipe. Use collaborative AI for humans working the skip queue. Refuse a design where three models hand a checklist between themselves and call that multiplayer. See multiplayer AI and multi-agent AI.","/blog/a-loop-is-not-an-agent",{"title":193,"description":1189},"loops","blog/a-loop-is-not-an-agent",[1208,1211,1212,1213,1214],"agents","operations","enterprise-ai","architecture","DlmK7CcOtURwI27qhgTNgsJXLMont6E6zuQle2VvgE4",{"hero":1217,"id":1219,"title":1220,"archived":165,"authors":166,"badge":166,"body":1221,"date":166,"definedTerm":166,"department":166,"description":1225,"extension":174,"eyebrow":1226,"faqHeader":166,"faqs":166,"footerBand":1227,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":60,"relatedHeading":1233,"seo":1234,"series":166,"sitemap":131,"status":166,"stem":1235,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1236},{"filename":1218},"u2221455217_Flat_design_of_a_futuristic_minimalist_landscape__5d589295-cdea-4ea9-a262-be766881accf_1.png","content/blog/index.md","Exploring the future of intelligence.",{"type":168,"value":1222,"toc":1223},[],{"title":171,"searchDepth":172,"depth":172,"links":1224},[],"Deep dives into pre-cognitive intelligence, sentient enterprises, and the evolving landscape of AI-driven business transformation.","Latest Research",{"headline":1228,"description":1229,"primaryLabel":1230,"primaryTo":1231,"secondaryLabel":1232,"secondaryTo":12},"Stay at the frontier.","Subscribe for product updates and new insights.","Subscribe","/newsletter","Explore the platform","More research",{"title":1220,"description":1225},"blog/index","BFSWGYO9bcTlaulivKYWyg08_DJHsdGg3OC6g_CG1Hw",[1238,166],{"id":1239,"title":1240,"archived":165,"authors":1241,"badge":1243,"body":1245,"date":1188,"definedTerm":166,"department":166,"description":1749,"extension":174,"eyebrow":166,"faqHeader":1750,"faqs":1752,"footerBand":166,"headline":166,"image":166,"industry":166,"jobType":166,"listed":165,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":1765,"relatedHeading":166,"seo":1766,"series":1208,"sitemap":131,"status":166,"stem":1767,"subhead":166,"tags":1768,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1772},"content/blog/six-things-that-start-a-loop.md","Six Things That Start a Loop",[1242],{"name":196,"to":136},{"label":1244},"Explainer",{"type":168,"value":1246,"toc":1736},[1247,1255,1258,1295,1304,1311,1314,1318,1321,1332,1339,1345,1348,1352,1355,1364,1370,1376,1388,1392,1395,1404,1407,1415,1418,1422,1425,1432,1439,1442,1448,1452,1458,1466,1472,1475,1479,1482,1488,1491,1497,1501,1504,1550,1558,1562,1565,1597,1603,1610,1614,1620,1626,1635,1641,1644,1648,1651,1683,1697,1710,1712,1724,1731,1734],[202,1248,1249,1250,1254],{},"A standing-order loop starts when the world moves — a clock ticks, a file arrives, a record changes, a person drops an artefact, another system emits an event, or an operator presses run. ",[220,1251,1253],{"href":657,"rel":1252},[224],"McKinsey’s 2025 State of AI"," keeps showing the same gap: most organisations now use AI in at least one function, while far fewer have redesigned how recurring work actually begins. Triggers are that redesign. They are how habit forms: the job starts because a signal fired, not because someone remembered to open a tab.",[202,1256,1257],{},"Before the six doors, three nouns that sound alike and mean different things:",[231,1259,1260,1273,1286],{},[234,1261,1262,1265,1266,1268,1269,244],{},[206,1263,1264],{},"Loop (this article)."," A compiled standing order in ",[220,1267,750],{"href":274},". Something starts it; it runs the same recipe; you read the result on a run page. See ",[220,1270,1272],{"href":1271},"a-loop-is-not-an-agent","a loop is not an agent",[234,1274,1275,1277,1278,1280,1281,1285],{},[206,1276,475],{}," An independent check that the job is actually done — schema, read-back, a human signer — that does not take the model’s word. See ",[220,1279,243],{"href":242},". A standing-order loop may ",[1282,1283,1284],"em",{},"include"," eval steps; “eval loop” is not a synonym for “automation.”",[234,1287,1288,1291,1292,1294],{},[206,1289,1290],{},"Agentic workflow."," A sequence of steps a person designed, with stops and approvals, often when the path is known but the inputs are messy. See ",[220,1293,269],{"href":268},". Workflows are authored; loops are standing orders you reuse.",[202,1296,1297,1298,1303],{},"If a vendor collapses those three into one slide, ask where the run page lives. ",[220,1299,1302],{"href":1300,"rel":1301},"https://www.gartner.com/en/documents/5505695",[224],"Gartner’s Hype Cycle for Artificial Intelligence"," has spent several years documenting the distance between experimentation and operational habit. Triggers are how that distance closes for work that already has a finish line.",[202,1305,1306,1307,1310],{},"Operators do not care which door opened the loop. They care whether Monday’s close ran, whether nothing changed so nothing was written, and whether Legal can open the run without asking the person who “knows the prompt.” ",[220,1308,667],{"href":665,"rel":1309},[224]," tracks capability rising faster than operational maturity. Capability without a start condition is a demo. A start condition without a run page is folklore.",[202,1312,1313],{},"All six triggers below should land in the same place — one kernel, one run page — even if a team describes them as “the cron,” “the shared folder,” or “when the CRM sneezes.”",[283,1315,1317],{"id":1316},"_1-schedule-the-calendar-as-a-contract","1. Schedule — the calendar as a contract",[202,1319,1320],{},"The oldest trigger is still the right one for rhythm work: weekly pipeline hygiene, monthly accrual prep, quarter-end pack assembly, a Friday exception list that Finance has run by hand for a decade.",[202,1322,1323,1324,1327,1328,1331],{},"A schedule is not “AI that runs sometimes.” It is a contract with the calendar. McKinsey’s survey is useful here because it separates ",[1282,1325,1326],{},"usage"," from ",[1282,1329,1330],{},"redesign",". Scheduled loops are how redesign looks to an operator: the job exists whether or not anyone opened Slack. The recipe does not wait for a hero to remember the steps.",[202,1333,1334,1335,1338],{},"Good schedule design names the skip condition up front. If the source file is empty, the loop should record ",[206,1336,1337],{},"quiet success"," — ran, nothing to do — not fail loudly and not invent work to look busy. That distinction separates a standing order from a brittle script that emails the on-call every public holiday. Quiet success is a first-class outcome. Silence without a record is indistinguishable from a missed run.",[202,1340,1341,1342,1344],{},"Finance teams often start here because the calendar already owns the work. Same extract, same variance template, same roster notified when the pack is ready for sign. See ",[220,1343,969],{"href":968},". The educational question is not “can a model summarise last month?” The question is “does Tuesday’s run exist as an object if the author is on leave?”",[202,1346,1347],{},"Schedule triggers fail when teams treat them as cron plus a prompt. A prompt that is re-derived each Monday is not a recipe. A recipe that cannot skip is not ready for unattended hours. If you cannot point to ten consecutive skipped runs on a quiet week, you do not have a schedule. You have a reminder.",[283,1349,1351],{"id":1350},"_2-file-lands-in-a-folder-arrival-as-an-event","2. File lands in a folder — arrival as an event",[202,1353,1354],{},"Many operational jobs still begin when a file shows up: a bank statement, a carrier invoice, a partner’s CSV, a signed PDF from outside counsel. The operator’s job today is often “notice the file, download it, start the ritual.” A folder trigger is the standing-order version of that notice.",[202,1356,1357,1358,1363],{},"Folder triggers match how people already work. Someone drops a file; the loop picks it up. The operator does not copy paths into a chat box. ",[220,1359,1362],{"href":1360,"rel":1361},"https://www.dropbox.com/business/solutions/automation",[224],"Dropbox’s enterprise automation guidance"," treats “file arrived” as a first-class event for a reason — it is how documents still enter companies, even in organisations that have spent years buying “digital transformation.”",[202,1365,1366,1367,1369],{},"The run page should show which file version ran, not only “processed.” If two files land ten minutes apart, you want two runs, not one overwritten thread. That is the difference between ",[220,1368,527],{"href":526}," on a shared job object and a personal assistant that read the wrong attachment. Lineage is not a nice-to-have. It is how an independent reader answers “which statement produced this pack?”",[202,1371,1372,1373,1375],{},"Folder triggers fail when the watch is pointed at a personal drive, when versions collide without a new run, or when the loop treats “a file appeared” as permission to write to a live system. Arrival is a start condition. It is not a signature. Pair file intake with ",[220,1374,594],{"href":593}," if the next step touches a system of record.",[202,1377,1378,1379,1383,1384,1387],{},"This door is also how partner-heavy work enters legal and compliance. A redline lands; the loop extracts obligations and routes a summary to the roster. See ",[220,1380,1382],{"href":1381},"loops-for-legal-and-compliance","loops for legal and compliance",". The artefact ",[1282,1385,1386],{},"is"," the trigger. The run page is the evidence that the artefact was seen.",[283,1389,1391],{"id":1390},"_3-data-changes-a-field-crosses-a-line","3. Data changes — a field crosses a line",[202,1393,1394],{},"Record-driven triggers start the loop when a field crosses a line you defined: opportunity stage, case status, contract effective date, inventory below threshold, a period that just closed.",[202,1396,1397,1398,1403],{},"This is where revenue operations already lives. ",[220,1399,1402],{"href":1400,"rel":1401},"https://help.salesforce.com/s/articleView?id=sf.process_automation.htm",[224],"Salesforce’s process automation documentation"," has taught a generation that “when field X changes, do Y.” A standing-order loop is the recipe on the other side of that event — not fifteen disconnected flows copied from a sandbox, but one versioned sequence with a run page. The CRM remains the system of record. The loop is the system of work that reacts.",[202,1405,1406],{},"Data-change triggers demand a skip rule. If the field flapped twice in an hour, did you run twice or dedupe intelligently? Operators should see both attempts on the run page, with the second marked skipped because nothing material changed. Without that, you train people to ignore alerts, which is how real exceptions get lost.",[202,1408,1409,1410,1414],{},"See ",[220,1411,1413],{"href":1412},"loops-for-revenue-operations","loops for revenue operations"," for the roster and notification patterns that keep sales from learning about a write from a random direct message. The educational point is ownership: the people who own the stage definition should own the recipe that fires when the stage moves. If RevOps cannot open last Tuesday’s run, the automation belongs to whoever still has the sandbox password.",[202,1416,1417],{},"Data-change triggers fail when every field is treated as equally material, when test records in a shared org fire production recipes, or when the loop writes back into the same object without a quoted payload and a signer. A stage change is a signal. It is not consent.",[283,1419,1421],{"id":1420},"_4-someone-drops-a-file-urgency-without-a-new-ritual","4. Someone drops a file — urgency without a new ritual",[202,1423,1424],{},"Not every job waits for the calendar or the CRM. Sometimes a controller drops the corrected extract at 4pm and wants the pack before a board call. Sometimes counsel forwards a redline that cannot sit until Monday’s schedule.",[202,1426,1427,1428,1431],{},"Manual drop is a trigger, not an apology for missing automation. It preserves the same recipe and the same run page as the scheduled job — so “emergency rerun” does not become “whoever had the best prompt that afternoon.” The habit to enforce: dropping a file starts a ",[206,1429,1430],{},"new run",". It does not edit the old one. Audit readers care about that distinction even when the operator just wants speed.",[202,1433,1434,1435,1438],{},"This door is how you keep dignity in exception weeks. The recipe does not change because the clock did. The roster does not change because the file arrived late. ",[220,1436,1437],{"href":588},"What is human-in-the-loop AI"," is relevant here: a person is allowed to start work; a person is not allowed to silently rewrite the definition of work.",[202,1440,1441],{},"Manual drop fails when it becomes a side channel with weaker controls than the scheduled path. If the 4pm run can write without the signer the 6am run requires, you do not have a loop. You have a bypass. The same skip rules, the same quoted writes, and the same notification list should apply. Urgency is a start condition. It is not a policy exception.",[202,1443,1444,1445,1447],{},"Legal and compliance teams use this door constantly because the artefact arrives when the counterparties are ready, not when the calendar is. The loop should still refuse to send anything customer-facing without a designed stop. See ",[220,1446,269],{"href":268}," when the drop needs a person mid-flight rather than an unattended recipe.",[283,1449,1451],{"id":1450},"_5-another-system-pings-react-without-becoming-the-stack","5. Another system pings — react without becoming the stack",[202,1453,1454,1455,1457],{},"Modern stacks emit events: a charge succeeded, a period closed, a ticket reopened, a warehouse scan completed, a partner API posted a payload. An external ping is how loops sit in a stack without becoming the stack. The billing system remains authoritative. The loop reacts with the company’s recipe — notify finance, attach the invoice to the ",[220,1456,254],{"href":253},", draft the matching journal for sign, refuse to post if the roster is empty.",[202,1459,1460,1465],{},[220,1461,1464],{"href":1462,"rel":1463},"https://www.ibm.com/think/topics/event-driven-architecture",[224],"IBM’s overview of event-driven architecture"," is useful vocabulary: something happened elsewhere; your process responds with idempotence and a record. If the same webhook delivers twice, the run page should show one outcome and one duplicate skipped — not two posts. Idempotence is not an implementation detail. It is the difference between a standing order and a double-entry incident.",[202,1467,1468,1469,1471],{},"This trigger is often how loops complement agentic workflows. The workflow handles the messy multi-step case; the loop handles the repeated reaction when the world sends the same signal again. Compare ",[220,1470,345],{"href":344},". Novelty belongs to the reasoner. Repetition belongs to the standing order.",[202,1473,1474],{},"External pings fail when the loop trusts the event more than the system of record, when retries are not visible, or when a test topic in a lower environment can reach a production recipe. They also fail when “we have a webhook” is treated as governance. A ping is a start condition. The write still needs a quoted payload and a named signer if a live system will change.",[283,1476,1478],{"id":1477},"_6-run-now-the-same-recipe-on-purpose","6. Run now — the same recipe, on purpose",[202,1480,1481],{},"Run now is the trigger you use in proof of value, in training, and on the day the scheduled job failed because someone forgot daylight saving time. It must produce the same run page as every other door. If “manual” runs hide their outputs in a private chat, you will never pass an audit that asks what happened on March 12.",[202,1483,1484,1485,1487],{},"Run now is also how operators recover with dignity: rerun the recipe, do not re-prompt from memory. ",[220,1486,907],{"href":906}," treats “can I rerun without copying the old Slack channel?” as a buying test for good reason. Recovery that depends on folklore is not recovery. It is a second incident.",[202,1489,1490],{},"This door is easy to underestimate because it looks like a button. The educational content is the sameness. Training environments, dry runs, and production reruns should share a recipe version and a comparable run page. If the training button calls a different prompt than the Monday schedule, you have taught operators a lie.",[202,1492,1493,1494,1496],{},"Run now fails when it is the only trigger a team ever ships. A button that requires a person is not a standing order; it is a nicer checklist. Use it to prove the kernel. Then attach the door the team already watches. ",[220,1495,1086],{"href":462}," is the sibling distinction: compiling repeat work is not the same craft as wrapping an interactive model.",[283,1498,1500],{"id":1499},"one-kernel-six-doors","One kernel, six doors",[202,1502,1503],{},"Conceptually there is one kernel. Triggers are inputs; the recipe is the standing order; the run page is the output contract.",[530,1505,1507],{"className":532,"code":1506,"language":534,"meta":171,"style":171},"flowchart LR\n  schedule[\"A clock ticks\"] --> kernel[\"Same standing order\"]\n  folder[\"A file lands in a folder\"] --> kernel\n  dataChange[\"A record changes\"] --> kernel\n  manualDrop[\"Someone drops a file\"] --> kernel\n  externalPing[\"Another system pings\"] --> kernel\n  runNow[\"Someone presses Run\"] --> kernel\n  kernel --> runPage[\"One run page\"]\n",[536,1508,1509,1514,1519,1524,1529,1534,1539,1544],{"__ignoreMap":171},[539,1510,1511],{"class":541,"line":542},[539,1512,1513],{},"flowchart LR\n",[539,1515,1516],{"class":541,"line":172},[539,1517,1518],{},"  schedule[\"A clock ticks\"] --> kernel[\"Same standing order\"]\n",[539,1520,1521],{"class":541,"line":553},[539,1522,1523],{},"  folder[\"A file lands in a folder\"] --> kernel\n",[539,1525,1526],{"class":541,"line":559},[539,1527,1528],{},"  dataChange[\"A record changes\"] --> kernel\n",[539,1530,1531],{"class":541,"line":565},[539,1532,1533],{},"  manualDrop[\"Someone drops a file\"] --> kernel\n",[539,1535,1536],{"class":541,"line":571},[539,1537,1538],{},"  externalPing[\"Another system pings\"] --> kernel\n",[539,1540,1541],{"class":541,"line":577},[539,1542,1543],{},"  runNow[\"Someone presses Run\"] --> kernel\n",[539,1545,1547],{"class":541,"line":1546},8,[539,1548,1549],{},"  kernel --> runPage[\"One run page\"]\n",[202,1551,1552,1553,1557],{},"That diagram is intentionally boring. Boring is the point. Operators should not learn six products. They should learn six ways work begins and one place it ends. ",[220,1554,1556],{"href":414,"rel":1555},[224],"Thoughtworks’ operating-system framing for enterprise AI"," is useful here if you keep it modest: isolation, permissions, and durable state belong to the job, not to the chat session that happened to start it.",[283,1559,1561],{"id":1560},"what-good-looks-like-on-the-run-page","What good looks like on the run page",[202,1563,1564],{},"A useful run page answers five questions without a tour guide:",[498,1566,1567,1573,1579,1585,1591],{},[234,1568,1569,1572],{},[206,1570,1571],{},"Which trigger fired?"," Schedule, file, field, drop, ping, or manual — with timestamps.",[234,1574,1575,1578],{},[206,1576,1577],{},"What recipe version ran?"," Policies change; Tuesday needs a definition you can still open.",[234,1580,1581,1584],{},[206,1582,1583],{},"Was anything skipped?"," “No op” is a success if nothing changed. Silence is not.",[234,1586,1587,1590],{},[206,1588,1589],{},"What was produced?"," Files, drafts, quoted writes waiting on sign — attached to the run, not scattered in email.",[234,1592,1593,1596],{},[206,1594,1595],{},"Who was notified?"," The roster on the job, not a channel that was copied when someone left the company.",[202,1598,1599,1600,1602],{},"Compare that to ",[220,1601,1272],{"href":1271},": an agent reasons when the path is unknown; a loop executes a recipe you already trust. Triggers do not turn a standing order into an improviser. If a trigger fires and the system “figures it out,” you bought a scheduled agent call. That may be useful. It is not a loop.",[202,1604,1605,1609],{},[220,1606,807],{"href":1607,"rel":1608},"https://www.iso.org/standard/81230.html",[224]," wants named actors and records around AI systems. A run page is how that requirement becomes something a controller can open. “The bot ran” is not a record. “Sarah said it looked fine in Slack” is not a record.",[283,1611,1613],{"id":1612},"how-this-differs-from-we-already-automate","How this differs from “we already automate”",[202,1615,1616,1619],{},[206,1617,1618],{},"Spreadsheet macros"," die with the laptop. Loops belong to an organisational recipe library.",[202,1621,1622,1625],{},[206,1623,1624],{},"Personal automation chains"," often lack a run page, skip semantics, and a roster. Fine for personal glue; thin for regulated work. The test is whether a second person can reconstruct last month without the author’s inbox.",[202,1627,1628,1631,1632,1634],{},[206,1629,1630],{},"RPA bots"," click the UI. Loops prefer APIs and structured payloads when available — and skip when the screen, file, or field did not change. See ",[220,1633,629],{"href":628}," for when clicks are still the right tool. Do not pretend a selector farm is a standing-order library.",[202,1636,1637,1640],{},[206,1638,1639],{},"Chat triggers"," (“@bot run close”) produce transcripts, not runs. Transcripts are not controls. They are useful for exploration. They are a poor home for month-end.",[202,1642,1643],{},"The pattern underneath all four contrasts is the same: automation that cannot name its start condition, its skip, and its outcome is not operational. It is a convenience that will fail the first time the author is out.",[283,1645,1647],{"id":1646},"starting-with-one-trigger","Starting with one trigger",[202,1649,1650],{},"Pick the door your team already watches:",[231,1652,1653,1659,1665,1671,1677],{},[234,1654,1655,1656],{},"If close is calendar-driven → ",[206,1657,1658],{},"schedule",[234,1660,1661,1662],{},"If partners email files → ",[206,1663,1664],{},"folder or drop",[234,1666,1667,1668],{},"If CRM stage drives handoffs → ",[206,1669,1670],{},"data change",[234,1672,1673,1674],{},"If billing already emits webhooks → ",[206,1675,1676],{},"ping",[234,1678,1679,1680],{},"If you are proving value this week → ",[206,1681,1682],{},"run now",[202,1684,1685,1686,1688,1689,1692,1693,1696],{},"Wire one recipe. Run it ten times. Require a quiet outcome when inputs are empty. Only then add a second trigger to the same kernel. ",[220,1687,907],{"href":906}," is the RFP version of that week. ",[220,1690,1691],{"href":923},"The four pillars of an enterprise AI platform"," situates loops beside communication, collaboration, and ",[220,1694,1066],{"href":1695},"what-is-ai-governance"," — as a platform pattern, not as a feature list.",[202,1698,1699,1700,932,1703,1705,1706,1709],{},"Related reading: ",[220,1701,1702],{"href":274},"what is loop engineering",[220,1704,345],{"href":344},", and ",[220,1707,1708],{"href":916},"how to evaluate collaborative AI"," when the loop feeds a signed pack rather than a silent write.",[283,1711,1030],{"id":1029},[202,1713,1714,1715,1717,1718,1720,1721,1723],{},"Nimbus treats the six doors as start conditions on the same Loop object, not as six products. A schedule, a file landing in ",[220,1716,15],{"href":16},", a CRM field change, a manual drop, an inbound event, and Run now all open a run on a ",[220,1719,254],{"href":32},". The recipe, skip rules, and ",[220,1722,1066],{"href":40}," gates do not change because the door did.",[202,1725,1726,1727,1730],{},"That mapping is an example of the pattern, not a requirement for the pattern. If you are scoring vendors, take the eight tests in ",[220,1728,1729],{"href":906},"how to evaluate loop engineering"," and run them on any platform that claims standing orders. Nimbus is one place those tests can be exercised; it is not the definition of a trigger.",[202,1732,1733],{},"The useful question for a buyer is still operational: can an independent reader open Tuesday’s run, see which door fired, and see what was skipped — without asking the person who configured it?",[1170,1735,1172],{},{"title":171,"searchDepth":172,"depth":172,"links":1737},[1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748],{"id":1316,"depth":172,"text":1317},{"id":1350,"depth":172,"text":1351},{"id":1390,"depth":172,"text":1391},{"id":1420,"depth":172,"text":1421},{"id":1450,"depth":172,"text":1451},{"id":1477,"depth":172,"text":1478},{"id":1499,"depth":172,"text":1500},{"id":1560,"depth":172,"text":1561},{"id":1612,"depth":172,"text":1613},{"id":1646,"depth":172,"text":1647},{"id":1029,"depth":172,"text":1030},"A standing-order loop starts the same way every time — on a schedule, when a file lands, when data changes, when someone drops a file, when another system pings, or when someone presses run. All six paths should end on the same run page.",{"eyebrow":1191,"title":1751},"Triggers, kernels, and run pages",[1753,1756,1759,1762],{"question":1754,"answer":1755},"Is a loop the same thing as an eval loop?","No, and treating them as synonyms is how RFPs get scored on the wrong object. A standing-order loop is a compiled recipe that starts when a signal fires and leaves a run page. An eval loop is an independent check that the job actually finished — a schema test, a read-back against the system of record, or a named signer who will not take the model’s word. They can sit on the same job: the standing order runs Monday’s pack, the eval loop confirms the write matched the signed payload. Use a standing-order loop when the same work should start without a meeting. Use an eval loop when you need proof of completion that does not live in a chat transcript. Refuse any vendor slide that collapses both into one checkbox labelled “closed-loop AI.”",{"question":1757,"answer":1758},"Do all six triggers need different products?","They should not. Six front doors to one kernel is the operational test; six products with six log formats is how audit debt accumulates. Pick the door that matches how the team already notices work — Monday morning, a folder watch, a CRM field, a drag-and-drop, a webhook from billing, or a manual run before close. The recipe, skip rules, and run page should be the same object regardless of which door opened. If schedule runs look different from file-drop runs, you are buying two automations that happen to share a logo. Refuse a design that trains operators on a new console per trigger type.",{"question":1760,"answer":1761},"Where should operators see what happened?","On a run page that an independent reader can open without the person who authored the recipe. The page should name the trigger, the recipe version, what was skipped, what was produced, and who was notified. That record is what [NIST’s AI Risk Management Framework](https://www.nist.gov/itl/ai-risk-management-framework) means by Measure: you cannot tighten a control you cannot observe. Chat transcripts are not that record, even when they look busy. Use a run page when a controller, counsel, or auditor will ask what happened on the twelfth. Refuse a vendor that hides outcomes in a private thread and calls the thread an audit trail.",{"question":1763,"answer":1764},"Which trigger should a team start with?","Start with the door the team already watches, not the one that looks most automated in a demo. If close is calendar-driven, start with a schedule. If partners email files, start with a folder or a manual drop. If CRM stage drives handoffs, start with a data change. If billing already emits webhooks, start with an external ping. Prove skip semantics on empty inputs before you add a second door to the same recipe. Refuse the temptation to wire all six triggers in week one; that is how you hide a broken skip rule behind a busy dashboard.","/blog/six-things-that-start-a-loop",{"title":1240,"description":1749},"blog/six-things-that-start-a-loop",[1208,1769,1770,1771],"explainer","automation","triggers","RaTbUR6Pu3Tz2sZp-ZiVG04SoKnXmLvokMC5ob_1POk",{"fold":1774,"id":1778,"title":1779,"archived":165,"authors":166,"badge":166,"body":1780,"date":166,"definedTerm":166,"department":166,"description":171,"extension":174,"eyebrow":166,"faqHeader":166,"faqs":166,"footerBand":1784,"headline":166,"image":166,"industry":166,"jobType":166,"listed":131,"location":166,"navigation":131,"openRoles":166,"pageLayout":166,"path":1788,"relatedHeading":166,"seo":1789,"series":166,"sitemap":165,"status":166,"stem":1790,"subhead":166,"tags":166,"video":166,"whyJoin":166,"workplaceType":166,"__hash__":1791},{"headline":1775,"description":1776,"primaryLabel":8,"primaryTo":1777,"secondaryLabel":1232,"secondaryTo":12},"Run frontier AI your business actually owns.","Governed agent swarms, 2,000+ integrations, and a knowledge graph that stays inside your walls. Start on Free.","/signup?plan=free","content/shared/cta.md","Site CTAs",{"type":168,"value":1781,"toc":1782},[],{"title":171,"searchDepth":172,"depth":172,"links":1783},[],{"headline":1785,"description":1786,"primaryLabel":8,"primaryTo":1777,"secondaryLabel":1787,"secondaryTo":85},"See what governed AI looks like on your stack.","Connect your tools, run a workstream, and keep every decision on your ledger. Start on Free.","Talk to our team","/shared/cta",{"title":1779,"description":171},"shared/cta","PS2VPJsszmUpMBZT6nEp8cWXCdeiN6zDRl-p8d0uY2k",1789797877892]