Status
Built and tested Built, flag off by default
Last reviewed
Source
Agent Genome book, chapters 2 and 6 and 10; AGF 1.0 specification; research paper, sections 3.2 and 3.6.

What a gene is

A gene is one unit of behaviour in plain language. It is short, it says one thing, and it carries enough information to be ranked, checked, overridden and erased. A gene never holds a fact such as an email address, an amount or a phone number. Facts belong in the task or in a tool. Genes hold preferences and rules.

Fields of a gene
FieldMeaning
id3 to 48 characters: lower-case letters, digits and underscore, starting with a letter. Unique in the genome.
kindOne of ten kinds (below).
textOne line, at most 400 characters.
strengthA number from 0 to 1. Only learned genes change strength by themselves.
sourceWhere it came from: base, customer_explicit, learned_from_edits, learned_from_feedback or staff. Each stratum can produce only some of these.
evidence_countHow many outcomes support a learned gene.
scopeUp to 10 terms that limit where the gene applies. Empty means everywhere.
overridesIds of genes in a lower stratum that this gene replaces.
provenanceUp to 50 references to the data the gene came from, so that it can be traced and erased.
when (optional)A condition on the task, for example the language. Up to four conditions that must all hold.

A genome holds at most 200 genes. The same field list, with the file-format rules, is in the AGF summary.

Gene kinds

The ten gene kinds
KindMeaning and limits
identityWhat the agent is for. Only in the kernel. Cannot have a when condition.
approvalWho or what must approve before the agent acts. Never learned directly; it can only arrive as a proposal.
ruleA hard rule for this customer. Never learned directly.
roleA stakeholder by job title, never a person’s name. Needs a role description.
decisionA standing decision of the customer.
businessA statement about the customer’s business that contains no facts.
styleHow results should read. The only kind that nightly learning produces.
traitA behavioural trait of the agent for this customer.
tool_prefA preference about tools.
fact_pointerA pointer to where facts live. The genome holds no facts.

Within one stratum, kinds are shown in this order: what changes what the agent may do comes before how it sounds, and pointers to knowledge come last.

Strata and precedence

Genes live in strata. The order below is the order of precedence. A stronger stratum wins a conflict, and a gene may override only genes in a lower stratum. The kernel, org and team strata are protected: they are never dropped to make the prompt fit.

The eight genome strata, strongest first Eight stacked bars. From the top, strongest first: kernel (read-only), org (protected), team (protected), customer (does not learn), shared, user, learned (the only stratum that learns), and species (defaults). A stronger stratum wins a conflict. The table below the diagram says the same in words. Strongest: wins a conflict 1 kernel read-only 2 org protected 3 team protected 4 customer does not learn 5 shared all agents 6 user personal 7 learned learns 8 species defaults Weakest: gives way
The eight strata of a genome. A stratum nearer the top wins a conflict with one below it.

The strata in words

The eight strata, strongest first
# Stratum Who writes it What it holds In an AGF file Status
1 kernel The agent’s author. Built in. The Identity Core and other non-negotiable rules. Never overridden and never dropped to fit the size budget. Yes, as the read-only germline. An importer never copies it. Built, flag off by default G19
2 org Workspace administrators. Workspace policy for every agent. At most 20 genes. Never dropped to fit the size budget. Yes Built, flag off by default G24
3 team Workspace administrators. Policy for one team. At most 10 genes per team. A run applies at most 3 teams of the person who started it. Yes Built, flag off by default G26
4 customer The customer, for one agent. What the customer stated or confirmed. Its strength never moves. Two contradictions flag it for the customer to review. Yes Built, flag off by default G11
5 shared Workspace administrators. Knowledge served to every agent in the workspace. One agent can opt out of a gene. Yes Built, flag off by default G27
6 user One member, for their own runs. Style and trait genes only, written by the member to their own layer. Yes, only when the person asks for it. Built, flag off by default G24
7 learned Inferred from the customer’s edits and feedback. The only stratum whose strength moves, and the only one whose genes retire themselves. Yes, but an importer turns these into proposals, not live genes. Built, flag off by default G12
8 species The base agent. Default genes that come with the agent type, before any workspace event. No. Never exported. Built and tested G01

Two further limits keep the layers honest. A personal (user) gene must be a style or trait gene, so a member cannot add an approval or a rule that bypasses workspace policy for their own runs. An identity gene can exist only in the kernel, and the identity_ id prefix is reserved for it.

A minimal genome file

This is the smallest useful AGF file: an invoice agent with its four identity genes in the read-only germline and no layers. It is an illustration. The agent, the workspace pseudonym and the seal are made up, and the seal can be checked only by the platform that issued it. The digest at the bottom is the SHA-256 of the rest of the document, and this site’s tests check that it matches. Add genes to a layer to make it do more. The field list is in the AGF summary, and the builder makes valid files for you.

{
  "agf": "1.0",
  "kind": "genome",
  "exporter": {
    "platform": "intellinix",
    "version": "1.0.0"
  },
  "exported_at": "2026-10-13T09:00:00Z",
  "agent": {
    "slug": "bill-banao",
    "species": "Bill Banao",
    "identity_hash": "3f9a1c5d7b2e4a60"
  },
  "germline": {
    "read_only": true,
    "genes": [
      {
        "id": "identity_purpose",
        "kind": "identity",
        "text": "Prepare accurate bills and invoices from the details the customer provides.",
        "strength": 1,
        "source": "base",
        "evidence_count": 0,
        "scope": [],
        "overrides": [],
        "provenance": []
      },
      {
        "id": "identity_deliverable",
        "kind": "identity",
        "text": "Deliver a ready-to-send invoice with line items, taxes and totals.",
        "strength": 1,
        "source": "base",
        "evidence_count": 0,
        "scope": [],
        "overrides": [],
        "provenance": []
      },
      {
        "id": "identity_boundaries",
        "kind": "identity",
        "text": "Never send or file a document without the customer's approval.",
        "strength": 1,
        "source": "base",
        "evidence_count": 0,
        "scope": [],
        "overrides": [],
        "provenance": []
      },
      {
        "id": "identity_scope",
        "kind": "identity",
        "text": "Works on billing documents only and refers other requests back to the customer.",
        "strength": 1,
        "source": "base",
        "evidence_count": 0,
        "scope": [],
        "overrides": [],
        "provenance": []
      }
    ],
    "seal": {
      "kid": "k1",
      "mac": "29f6eb94390fa5c8c0db96261f4461929abca649868db5d061ab44d320f56db5"
    }
  },
  "layers": [],
  "provenance_mode": "pseudonymous",
  "source_tenant": "9c1e5b7a3d2f48e6a0b1c2d3",
  "extensions": {},
  "integrity": {
    "sha256": "6a9a32364df8add5c82800c8eaa91d530d847346befc57b470287fca1e9d5a30"
  }
}

Observations: the fast store

An observation is a recent, tentative statement from a customer: an edit they made, a comment on a thumbs-down, an approval. It appears in the very next call, marked as tentative and ranked below every gene. This is how an agent can react after one or two corrections without waiting for the nightly job.

An observation is at most 300 characters. A genome keeps at most 30 and shows the newest 8. An observation becomes a learned gene only through consolidation. See Learning.

From genes to the prompt

Compiling has two steps. The first chooses which genes and observations go in and builds a neutral outline. The second writes the outline as text in the style of the target model (a “dialect”; see Portability). The identity block comes first. The model is asked to end its answer with a short report of the genes it says it followed. The platform strips that report before anyone sees the answer and keeps it only as a hint. The report never raises a gene’s strength, because a model can be wrong about what it did.

This is an abridged section as the benchmark’s genome arm writes it. The two repeated feedback texts were merged into one learned gene, and one single feedback stayed an observation. The feedback strings are invented for the illustration.

<agent_genome schema="1" id="gb_ca_firm" version="7" species="genome-bench-writer@v0">
<how_to_read> ... precedence and reading rules ... </how_to_read>
<report_contract> ... one <genome_report> JSON line, removed before the user sees it ... </report_contract>
<kernel_genes>
<gene id="kernel_no_invented_facts" kind="rule">Use only facts given in the task; ...</gene>
</kernel_genes>
<learned_genes>
<gene id="lg_9eb0d977b215" kind="style" strength="0.55">Keep it under 60 words.</gene>
</learned_genes>
<recent_observations>
<observation signal="feedback">Always add the GSTIN: line.</observation>
</recent_observations>
</agent_genome>

The size budget

The default budget is 6,000 characters. A per-agent budget is limited to between 500 and 12,000. Protected strata are always included. The remaining genes are added by precedence until the budget is used. The benchmark’s sections are much shorter than the budget. An empty genome section already costs about 1,100 characters of fixed reading rules, so most of the prompt cost seen in the benchmark is that scaffold, not learned content. See Research for the measured cost.

Choosing genes for a task

By default, genes are chosen by precedence. A second, optional policy looks at the task. It reads five things about it (task type, category, whether the input has certain content, language and mode), checks each gene’s when condition, and then picks genes by value per character using an exact selection that keeps customer, shared and personal genes ahead of learned and default ones. If the selector fails, the compiler falls back to precedence.

Built, flag off by default G32, G33 The task-aware policy has code and tests. It is off unless a feature flag turns it on.

Built and tested G01, G14 The gene data model, the outline and the default precedence-based compile have code and tests and no genome feature flag.

Not measured

No result file measures whether choosing genes by task helps. The benchmark exercises only the kernel and learned strata, observations, outcomes and consolidation.