Produced with model assistance. Every page on this site, and every document in the dev packs area, was drafted with a large language model and reviewed by a person before publication. Nothing on this site is a compliance assessment, and no page claims conformity to any standard. What we do not say, and why · how every claim here is evidenced

store.sgit.ai / versions / v0.3.5

v0.3.5 — describe your agent, in words this store did not invent

The page the project lead expects to use most in conversation, and it is free. Somebody builds their agent by clicking capabilities onto it, and what comes out is a document a model session can turn into a vault. It produces the GRANT — everything the agent can do — which is one of four objects in an Agent Behaviour Policy, and every prototype has to say so or the release fails: a reader who thought this was the whole document would be taking three quarters of the £500 level for nothing in their own head.

It also closes a proposal this store recorded in a review and did not act on. The partner found that MAP-A-GRANT already exists, is already free, ships in every public template pack, and was only ever surfaced AFTER a £500 purchase — and that moving it to the front door is a re-ordering rather than a build. This is that re-ordering with an interface on it.

THE VOCABULARY IS NOT THIS STORE'S AND THAT IS THE LOAD-BEARING PART. Twenty-three primitives on a verb.object.reach grammar, read out of riskmandate.ai's own template vault with its published read key and promoted by a new tool with the hash of the bytes it came from. If this store had made up a palette, a buyer would describe their agent in one vocabulary and receive a document written in another, which is the worst outcome available to a page whose entire job is producing an input to that document. The ultimate source turned out to be what-can-it-do.games.sgit.ai — one of the games the memo was pointing at when it asked for a UI like the games we created.

TWO PROTOTYPES, BECAUSE TWO WERE ASKED FOR. A canvas with all nine families on one screen, for somebody being walked through it by a person; and one family per screen, for somebody working alone. Both render the same primitives and emit the same document, which is what makes them an experiment rather than two drafts — and each carries what is wrong with it, because two options presented with only their strengths is a menu.

WHAT THE GATE CAN AND CANNOT DO, SAID PLAINLY. It checks every invariant that survives offline: three segments, the verb matches, the reach is one the file defines, every chip on every page is a real primitive and none is missing. It CANNOT tell a promoted file from a hand-edited one, because the content hash is self-reported and anybody editing the rows could edit the hash beside them — a deliberate break proved exactly that. So the tool grew a --check mode that re-fetches and diffs, which needs a connection and is therefore a person's command rather than a build step. Both were run; the gate missed the hand-edit and --check caught it.

AND ONE ASSERTION WAS WRONG ABOUT THE DATA AND THE DATA WON. The first version rebuilt each id from verb.object.reach and demanded a match. Five real primitives failed: the id uses a short form, and its last segment is sometimes a discriminator rather than the reach — send.endpoint.allowed has reach tenant. Two primitives can share a verb, an object and a reach and still be different things, which is what that segment is for. Anything tighter would have been this store's opinion about somebody else's vocabulary.

One more thing caught by the gate rather than by reading: explaining that a clause was removed for using a barred word, by quoting the clause. The rule demonstrating itself. It is described now and not quoted, the same way the disclosures page has always handled it.

Versionv0.3.5
Released2026-09-16
Built from commit44c6f6e36ffa740dd345cfc08f858386c7d1c8fd
Sitestore.sgit.ai

Touched: assets · build.py · data · tools

← v0.3.6v0.3.4 →

Every release of this site is listed on the release history, and the same records are served as JSON so a script can read them without parsing a page.