Exemplo Mínimo
O menor arquivo PAM válido — uma entrada de memória com hash de integridade:
{ "schema": "portable-ai-memory", "schema_version": "1.0", "export_date": "2026-02-17T00:00:00Z", "owner": { "id": "user-123" }, "memories": [ { "id": "mem-001", "type": "skill", "content": "User is a cloud infrastructure engineer", "content_hash": "sha256:e1bae3ec291c99eced01fc91b4152a0cef541fccf2034fc11b3f90f4e4d79b6e", "temporal": { "created_at": "2026-02-15T00:00:00Z" }, "provenance": { "platform": "chatgpt" } } ]}Anotações dos Campos
Seção intitulada “Anotações dos Campos”schema/schema_version— Identifica este como um arquivo PAM v1.0export_date— Quando esta exportação foi criada (ISO 8601)owner.id— Identificador único do usuáriomemories[].id— Identificador único desta memóriamemories[].type— Categoria da memória (skillneste caso)memories[].content— O conteúdo real da memória como uma stringmemories[].content_hash— Hash SHA-256 do conteúdo normalizado para verificação de integridadememories[].temporal.created_at— Quando a memória foi criada pela primeira vezmemories[].provenance.platform— De qual provedor esta memória se originou
Content Hash
Seção intitulada “Content Hash”O content_hash é calculado a partir da string de conteúdo normalizada conforme a spec seção 6:
- Remover espaços em branco no início e no fim
- Converter para minúsculas
- Aplicar normalização Unicode NFC
- Colapsar espaços em branco consecutivos em espaços simples
- Calcular o digest hexadecimal SHA-256
Para "User is a cloud infrastructure engineer", após a normalização (torna-se "user is a cloud infrastructure engineer"), o hash é sha256:e1bae3ec291c99eced01fc91b4152a0cef541fccf2034fc11b3f90f4e4d79b6e.
Validar
Seção intitulada “Validar”from jsonschema import Draft202012Validatorimport json
with open("portable-ai-memory.schema.json") as f: schema = json.load(f)with open("memory-store.json") as f: data = json.load(f)errors = list(Draft202012Validator(schema).iter_errors(data))print("valid" if not errors else f"{len(errors)} errors")import Ajv2020 from "ajv/dist/2020.js";import {readFileSync} from "node:fs";
const ajv = new Ajv2020({allErrors: true});const schema = JSON.parse(readFileSync("portable-ai-memory.schema.json", "utf8"));const data = JSON.parse(readFileSync("memory-store.json", "utf8"));
const validate = ajv.compile(schema);console.log(validate(data) ? "valid" : `${validate.errors.length} errors`);