[{"data":1,"prerenderedAt":450},["ShallowReactive",2],{"home-products":3},[4,107,169,278,368],{"id":5,"title":6,"bench":7,"body":8,"brand":6,"claim":88,"description":89,"extension":90,"handoff":91,"meta":92,"movement":93,"navigation":94,"order":95,"path":96,"receipt":97,"receiptLabel":98,"receiptStatus":99,"seo":100,"state":101,"stem":102,"substrate":103,"__hash__":106},"products\u002Fproducts\u002Fcolada-db.md","colada-db",null,{"type":9,"value":10,"toc":81},"minimark",[11,24,29,37,44,48,59,63,74],[12,13,14,15,19,20,23],"p",{},"The memory layer. Every other product on this page is about what an agent is ",[16,17,18],"em",{},"allowed","\nto do; this one is about what it and the person around it can ",[16,21,22],{},"remember",", and whether\nthose two memories agree.",[25,26,28],"h2",{"id":27},"the-problem-it-exists-for","The problem it exists for",[12,30,31,32,36],{},"The same record arrives from four places at once — a fetch, a websocket push, an\noptimistic local edit, and an agent writing on your behalf — and the app has to stay\ncorrect. The usual answer is a cache keyed by request, which means the same entity lives\nin four places under four keys and drifts in all four. A ",[33,34,35],"strong",{},"normalized"," store keeps one\ncopy of each entity and lets every view read from it, so \"correct\" is a property of the\nstore rather than a discipline every feature has to remember.",[12,38,39,40,43],{},"Durability is pluggable on purpose. IndexedDB is the default because it is everywhere;\nthe ",[33,41,42],{},"OPFS SQLite"," lane exists because once a working set stops fitting comfortably in\nmemory, the honest answer is a real query engine and not a bigger object.",[25,45,47],{"id":46},"the-handoff","The handoff",[12,49,50,51,54,55,58],{},"This is where the memory layer stops being a storage question. When an agent and a person\nwrite to the same record, someone has to lose, and the interesting design work is entirely\nin the losing: whether the person is told, how quickly, and whether the interface shows a\n",[16,52,53],{},"pending"," state that is actually pending rather than one that is optimistic and lying.\nLab law 05 — ",[33,56,57],{},"state is never claimed before it is true"," — was written from this problem.",[25,60,62],{"id":61},"state-published-and-early","State — published, and early",[12,64,65,66,69,70,73],{},"Version ",[33,67,68],{},"0.1.0",", published ",[33,71,72],{},"2 August 2026",". One version, which is the honest number:\nthe repo is public and installable today, the API will move, and nothing here should be\nread as a stable release. Twenty-four pull requests have gone into it so far.",[12,75,76,77,80],{},"It began as a normalizing cache plugin for Vue's ",[33,78,79],{},"Pinia Colada"," — three of those\npatches were merged into the library itself by its maintainer, a Vue core team member —\nand became its own repository when the storage layer turned out to be the larger half of\nthe problem.",{"title":82,"searchDepth":83,"depth":83,"links":84},"",2,[85,86,87],{"id":27,"depth":83,"text":28},{"id":46,"depth":83,"text":47},{"id":61,"depth":83,"text":62},"A local-first client database for AI-native apps — a normalized reactive entity store over IndexedDB, with an OPFS SQLite lane underneath.","The memory layer. Every other product on this page is about what an agent is allowed\nto do; this one is about what it and the person around it can remember, and whether\nthose two memories agree.","md","An agent writes to the same record a person is editing. Who wins, when does the person find out, and what do they see while the answer is still in flight?",{},"data",true,4,"\u002Fproducts\u002Fcolada-db","https:\u002F\u002Fgithub.com\u002FDanny-Devs\u002Fcolada-db","colada-db 0.1.0 on npm — public repo, published 2 Aug 2026","public",{"title":6,"description":89},"published","products\u002Fcolada-db",[104,105,42],"TypeScript","IndexedDB","b5a4R3q9kPT5-AJIXsnojV-9e6cv1-thn9bDBhSaEhA",{"id":108,"title":109,"bench":110,"body":111,"brand":109,"claim":156,"description":115,"extension":90,"handoff":157,"meta":158,"movement":159,"navigation":94,"order":160,"path":161,"receipt":162,"receiptLabel":163,"receiptStatus":99,"seo":164,"state":101,"stem":165,"substrate":166,"__hash__":168},"products\u002Fproducts\u002Fs402.md","s402","dissector",{"type":9,"value":112,"toc":152},[113,116,124,126,132,135,139,149],[12,114,115],{},"HTTP has had a status code for \"you must pay for this\" since 1997, and almost nobody\nimplemented it, because there was never a payer who could act on it unattended. Agents are\nthat payer.",[12,117,118,119,123],{},"s402 is the protocol layer: an agent requests a resource, receives a ",[120,121,122],"code",{},"402"," that states its\nown price, and settles. On Sui the settlement is a programmable transaction block, so the\npayment and the delivery commit or fail together — there is no window where one has\nhappened and the other has not.",[25,125,47],{"id":46},[12,127,128,129],{},"The design question is not how to pay. It is ",[33,130,131],{},"which prices a person needs to see.",[12,133,134],{},"A protocol that asks about every cent is unusable; one that asks about nothing is a\nliability. The authority has to be granted ahead of time in a shape a person can actually\nreason about — a budget, a scope, a horizon — so that the common case is silent and the\nexceptional case is legible. Getting that boundary right is interface work, not protocol\nwork, and it is the part that decides whether anyone trusts it.",[25,136,138],{"id":137},"state-published","State — published",[12,140,141,144,145,148],{},[33,142,143],{},"v0.9.0",", on npm since ",[33,146,147],{},"2026-02-16",". Installable now.",[12,150,151],{},"s402 is a protocol name rather than a brand tier: it is a specification that SweeFi\nimplements and SweeTrust enforces.",{"title":82,"searchDepth":83,"depth":83,"links":153},[154,155],{"id":46,"depth":83,"text":47},{"id":137,"depth":83,"text":138},"An open protocol for paying over HTTP 402, where the spending authority is delegated by a person and settled atomically on-chain.","An agent meets a paywall it was not told about. Consenting to a price at machine speed, without a person in the loop for every cent.",{},"commerce",3,"\u002Fproducts\u002Fs402","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fs402","s402 v0.9.0 on npm — published since Feb 2026",{"title":109,"description":115},"products\u002Fs402",[104,167],"Sui","wEAKZxvw6cz9y98xarT_qBJq5eqt02-isPkWqDVd140",{"id":170,"title":171,"bench":172,"body":173,"brand":171,"claim":265,"description":266,"extension":90,"handoff":267,"meta":268,"movement":269,"navigation":94,"order":270,"path":271,"receipt":7,"receiptLabel":7,"receiptStatus":272,"seo":273,"state":274,"stem":275,"substrate":276,"__hash__":277},"products\u002Fproducts\u002Fsweeai.md","SweeAI","agent",{"type":9,"value":174,"toc":260},[175,198,205,212,216,227,230,232,235,239,250],[12,176,177,178,181,182,185,186,189,190,193,194,197],{},"SweeAI is the app and the company. Underneath it sits ",[33,179,180],{},"SweeOS",", the orchestration layer —\nthe glue and the scheduling, the part that runs agents. SweeOS ",[16,183,184],{},"hosts"," a harness, and the\ndefault resident one is ",[33,187,188],{},"SweeHarness","; it ",[16,191,192],{},"calls"," ",[33,195,196],{},"SweeTrust"," for enforcement.",[12,199,200,201,204],{},"That second arrow only points one way, and it is the whole reason the hierarchy is worth\nwriting down rather than just drawing. Orchestration may ask the trust kernel whether an\naction is permitted. It may not reconfigure the answer. The tempting simplification — the\nOS is the OS, so it owns everything — is right about the glue and wrong about the cage,\nbecause ",[33,202,203],{},"a guard the guarded thing controls is not a guard."," SweeTrust never depends on\nSweeOS, and SweeOS may not widen its own authority.",[12,206,207,208,211],{},"Listing this card at all is a deliberate choice, and it is the honest one: ",[33,209,210],{},"the\norchestration layer is not built."," There is no execution engine, and that omission is a\ndecision rather than a gap — an ADR concluded it should be bought. The supervision client is\ndesigned through the skeleton plane and no further. The adoption flow, which is the actual\nthesis, has not been started.",[25,213,215],{"id":214},"what-is-real","What is real",[12,217,218,219,222,223,226],{},"The monorepo, and the discipline inside it. Three packages at ",[120,220,221],{},"0.2.0"," with adversarial\nsuites at 51\u002F51, 34\u002F34, and 71\u002F71, arrived at by a pass that found eleven fail-open defects\nin code that already looked finished. Two of those eleven were ",[33,224,225],{},"the same defect shape in\ndifferent packages"," — an empty fold returning the strongest possible claim instead of the\nweakest. That is a blind spot with a signature, and it is now something to grep for.",[12,228,229],{},"That is harness engineering rather than product engineering, which is why it belongs on this\nsite at all.",[25,231,47],{"id":46},[12,233,234],{},"A fleet of agents produces a supervision problem long before it produces a scaling problem.\nTen concurrent runs generate more status than a person can read, and the useful surface is\nnot a dashboard — it is a queue of things that genuinely need a human, ranked, arriving\nsomewhere a person already looks. Designing that queue is the thesis. It is unbuilt, and\nthis page says so.",[25,236,238],{"id":237},"state-designed-nothing-public","State — designed, nothing public",[12,240,241,242,245,246,249],{},"The card says ",[33,243,244],{},"designed"," rather than built, and the distinction is the point. Real code\nexists in the monorepo and it is described above; the ",[16,247,248],{},"orchestration layer this card is\nnamed for"," does not. Claiming \"built\" would have let one true fact — the packages are real —\nstand in as the answer to a different question, which is the exact move the rest of this site\nexists to refuse.",[12,251,252,255,256,259],{},[120,253,254],{},"sweeai\u002Fmonorepo"," is private and ",[120,257,258],{},"@sweetrust\u002F*"," is unpublished, so a visitor can verify none\nof it. Hence no receipt.",{"title":82,"searchDepth":83,"depth":83,"links":261},[262,263,264],{"id":214,"depth":83,"text":215},{"id":46,"depth":83,"text":47},{"id":237,"depth":83,"text":238},"The app and the company. Its orchestration layer, SweeOS, hosts the resident agent and calls the trust kernel — one way only.","SweeAI is the app and the company. Underneath it sits SweeOS, the orchestration layer —\nthe glue and the scheduling, the part that runs agents. SweeOS hosts a harness, and the\ndefault resident one is SweeHarness; it calls SweeTrust for enforcement.","Supervising a fleet. Of N runs happening right now, which one needs you — and can you tell from a phone?",{},"orchestration",5,"\u002Fproducts\u002Fsweeai","none-yet",{"title":171,"description":266},"specced","products\u002Fsweeai",[104,167],"I-Eo7T3PKm4ipgtPPulksAagdTRCv3UyiGI-z_VKZ4s",{"id":279,"title":280,"bench":281,"body":282,"brand":280,"claim":357,"description":286,"extension":90,"handoff":358,"meta":359,"movement":159,"navigation":94,"order":83,"path":360,"receipt":361,"receiptLabel":362,"receiptStatus":99,"seo":363,"state":101,"stem":364,"substrate":365,"__hash__":367},"products\u002Fproducts\u002Fsweefi.md","SweeFi","mandate",{"type":9,"value":283,"toc":353},[284,287,325,327,330,332],[12,285,286],{},"The commerce vertical. A sibling of SweeTrust rather than a layer on top of it — the\nhierarchy is deliberate, and the reasoning is in ADR-0011: the first non-commerce vertical\nwould otherwise force a second rename.",[12,288,289,290,293,294,297,298,301,302,293,305,308,309,312,313,316,317,320,321,324],{},"Nine packages, published and installable: ",[120,291,292],{},"@sweefi\u002Fsui"," and ",[120,295,296],{},"@sweefi\u002Fsolana"," for the\nchain-native implementations, ",[120,299,300],{},"@sweefi\u002Fhono"," for the server middleware,\n",[120,303,304],{},"@sweefi\u002Freact",[120,306,307],{},"@sweefi\u002Fvue"," for the client surfaces, plus ",[120,310,311],{},"cli",", ",[120,314,315],{},"mcp",",\n",[120,318,319],{},"ap2-adapter",", and ",[120,322,323],{},"ui-core",". AP2-compatible on purpose — interop first.",[25,326,47],{"id":46},[12,328,329],{},"Every payment an agent wants to make is a question someone already answered, or a question\nthat has to be asked now. The design work is in telling those two apart fast enough that\nthe second case does not feel like an interruption — and in making a mid-session revoke\nland before the next call goes out, not after.",[25,331,138],{"id":137},[12,333,334,336,337,340,341,344,345,348,349,352],{},[120,335,292],{}," is at ",[33,338,339],{},"0.4.2",", ten versions since ",[33,342,343],{},"2026-04-26",". The others range from\n",[120,346,347],{},"0.1.2"," to ",[120,350,351],{},"0.3.4",". Public repo, public registry, dated: verifiable without asking me.",{"title":82,"searchDepth":83,"depth":83,"links":354},[355,356],{"id":46,"depth":83,"text":47},{"id":137,"depth":83,"text":138},"Agent commerce — a payment SDK where spending authority is granted by a person and enforced before settlement.","Granting and revoking an agent's spending authority — the approval surface, and the revoke that has to work mid-session.",{},"\u002Fproducts\u002Fsweefi","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@sweefi\u002Fsui","@sweefi\u002Fsui v0.4.2 on npm — published Mar 2026",{"title":280,"description":286},"products\u002Fsweefi",[104,167,366],"Solana","0tUSX8z5zvivcKlvFnF_WySXs_aEIIei_O5a0VugN0k",{"id":369,"title":196,"bench":7,"body":370,"brand":196,"claim":439,"description":374,"extension":90,"handoff":440,"meta":441,"movement":442,"navigation":94,"order":443,"path":444,"receipt":7,"receiptLabel":7,"receiptStatus":272,"seo":445,"state":430,"stem":446,"substrate":447,"__hash__":449},"products\u002Fproducts\u002Fsweetrust.md",{"type":9,"value":371,"toc":436},[372,375,394,397,401,415],[12,373,374],{},"An agent asks to do something. Three packages decide what happens next.",[12,376,377,381,382,387,388,393],{},[33,378,379],{},[120,380,281],{}," holds the authority a person granted — what may be spent, on what, until\nwhen. ",[33,383,384],{},[120,385,386],{},"gate"," is the enforcement point every action passes through; nothing reaches a\nsink without clearing it. ",[33,389,390],{},[120,391,392],{},"verify"," produces the record afterwards, in a form that does\nnot require trusting the person who produced it.",[12,395,396],{},"The interesting part is not the refusal. It is the moment before it — when authority runs\nout and a human has to be asked. That ask is an interface problem, and it is the one this\nwhole site is about.",[25,398,400],{"id":399},"state-built-and-tested-nothing-published","State — built and tested, nothing published",[12,402,403,404,406,407,410,411,414],{},"All three packages sit at ",[120,405,221],{}," locally. An adversarial pass on 2026-07-25 found and\nfixed ",[33,408,409],{},"eleven fail-open defects",", several of which mattered: ancestry erasure that\ndefeated a scoping rule, an empty fold returning the ",[16,412,413],{},"strongest"," claim rather than the\nweakest, a sink operation that threw and left no record at all. Coverage after that pass\nis gate 51\u002F51, verify 34\u002F34, mandate 71\u002F71.",[12,416,417,420,421,423,424,427,428,431,432,435],{},[33,418,419],{},"None of this is publicly checkable yet."," The monorepo is private and ",[120,422,258],{}," is\nnot on npm — ",[120,425,426],{},"npm view"," returns 404 for all three. That is why this page says ",[16,429,430],{},"built","\nrather than ",[16,433,434],{},"shipped",", and why the card carries no receipt. The distinction is the point:\na claim a visitor cannot verify is a claim this site does not make.",{"title":82,"searchDepth":83,"depth":83,"links":437},[438],{"id":399,"depth":83,"text":400},"A deny-by-default capability firewall for AI agents — gate, mandate, verify.","The agent reaches the edge of its authority. What does the person see, and can they decide from it alone?",{},"trust",1,"\u002Fproducts\u002Fsweetrust",{"title":196,"description":374},"products\u002Fsweetrust",[104,167,448],"Move","zL_sgEjJBA9yTBx1WLZA9oJ2p62sEylzmRgC4cmfDRA",1786939390827]