Backwards compatibility is a core design principle of AEP. Every v1.0-exp pack can be read by an agent that only understands v0.1 — experimental fields are additive and agents may safely ignore anything they do not recognize.
v1.0-exp extends v0.1 without breaking it. The new fields (applies_to, strength, metrics, history, merge_suggestions) are all optional from the perspective of a v0.1 agent. Agents that do understand v1.0-exp get richer ranking, evolution tracking, and merge guidance.
What v1.0-exp adds
| Field | v0.1 | v1.0-exp |
|---|---|---|
version | "0.1" | "1.0-exp" |
id | yes | yes |
scope | yes | yes |
title | yes | yes |
status | yes | yes |
source | yes | yes |
match | yes | yes |
intent | yes | yes |
constraints | yes | yes |
preferences | yes | yes |
workflow | yes | yes |
failure_traps | yes | yes |
success_checks | yes | yes |
artifacts | yes | yes |
applies_to | — | added |
strength | — | added |
metrics | — | added |
history | — | added |
merge_suggestions | — | added |
Reading packs
Agents should support both"version": "0.1" and "version": "1.0-exp" when reading packs from .agent/aep/. The recommended approach:
- Read
index.jsonto get the list of packs and their versions. - Load each pack file regardless of version.
- Use whatever fields are present. Silently skip fields you do not recognize.
applies_to, metrics, or history handling, it can ignore those fields and rely on the v0.1 subset (match, constraints, preferences, etc.) to operate correctly.
Writing packs
New packs should use"version": "1.0-exp" and include all experimental fields. This gives agents the richest possible signal for ranking and evolution.
Updating existing v0.1 packs — you have two options:
- Keep on v0.1: only update v0.1 fields. Do not change the
versionfield. The pack remains compatible with older agents. - Migrate to v1.0-exp: explicitly update the
versionto"1.0-exp", add the new fields, and record the migration in thehistoryarray.
Coexisting with v0.1 (recommended pattern)
When you are introducing v1.0-exp into a repo that already has v0.1 packs, use this pattern:- Read both v0.1 and v1.0-exp packs from
.agent/aep/. - Prefer v1.0-exp packs when both exist for the same domain — they contain richer scoring metadata.
- Write new packs with
"version": "1.0-exp"while leaving existing v0.1 packs untouched as fallbacks.
index.json may list packs of both versions simultaneously. This is a valid and intentional state:
strength and recency (updated_at) from the index entry to rank candidates before loading individual files. A v0.1 entry without strength should be treated as neutral (0.5).
Migrating a v0.1 pack to v1.0-exp
To migrate an existing pack:Add applies_to
Populate
applies_to with the languages, frameworks, paths, and domains that best describe when the pack applies.Set strength
Assign an initial
strength value based on how proven the pattern is. A pattern that has worked multiple times is typically 0.7–0.8.Initialize metrics
Add a
metrics object. Set times_applied to reflect real usage if you know it, or 0 if uncertain.Platform notes
v1.0-exp is fully opt-in. Adopting it does not break existing v0.1 workflows on any platform.
- Cursor / Codex-style agents: v1.0-exp is adopted purely as a richer JSON format. All agent logic lives in prompts and file operations — no changes to tooling are required.
- Claude Code / OpenCode: v1.0-exp works identically to v0.1 from the file perspective. Future MCP servers may optionally expose structured operations that interpret
strength,metrics, andhistory, but this is not required for basic compatibility.
Related pages
Pack schema reference
Full field reference for v1.0-exp packs, including all new fields.
Integration: repo setup
How to structure your .agent/aep/ directory for mixed-version deployments.