FileStore.listAgents (src/core/store.ts) wraps the directory read and schema-parse loop in a try/catch that returns [], so a stored record that fails AgentIdentitySchema.parse looks like "no agents" instead of an error. Since the entity schemas gained a required version field (#29), any record written by an older build now hits this path: reading a legacy data directory silently yields an empty mesh.
The store has no internal consumers (MeshStore superseded it) but is exported from the public API via src/core/index.ts, so external users are exposed.
Preferred fix per the fail-loudly convention: propagate the parse error (a corrupt or incompatible record is a real failure, and a silent empty list hides it). If migration is genuinely wanted instead — defaulting a missing version to 1 at the FileStore read boundary — that is a deliberate compatibility decision to make explicitly, not a default.
FileStore.listAgents(src/core/store.ts) wraps the directory read and schema-parse loop in a try/catch that returns[], so a stored record that failsAgentIdentitySchema.parselooks like "no agents" instead of an error. Since the entity schemas gained a requiredversionfield (#29), any record written by an older build now hits this path: reading a legacy data directory silently yields an empty mesh.The store has no internal consumers (MeshStore superseded it) but is exported from the public API via
src/core/index.ts, so external users are exposed.Preferred fix per the fail-loudly convention: propagate the parse error (a corrupt or incompatible record is a real failure, and a silent empty list hides it). If migration is genuinely wanted instead — defaulting a missing
versionto 1 at the FileStore read boundary — that is a deliberate compatibility decision to make explicitly, not a default.