AGENTX / 001
A schema vocabulary agents can't misuse.
Eight field primitives — text, richtext, number, boolean, date, enum, asset, relation — with declarative constraints, computed fields (slugify, template, now, uuid), and per-locale variant maps. The vocabulary is closed and self-describing: an agent discovers it with list_field_types and never guesses.
schema evolution · plan + confirm
agent ▸ define_collection({ name: "posts", fields: { … } })
agentx ◂ plan:
− drop field "subtitle" (212 rows affected)
+ rename "body" → "content" (atomic backfill, incl. trash)
⚠ tighten title.max 80 (3 existing rows exceed)
agent ▸ confirm
agentx ◂ ok · schema v14 live
8 primitives, closed vocabularyunique / min / max / pattern + hintcomputed: slugify · template · now · uuidlocalized {locale: value} maps
honest ▸
Constraint tightening never silently breaks rows — define-time scans report every existing violation before you confirm. Pattern constraints are safe-regex checked at define time so runtime matching is provably bounded.