The first run of the new importagents against production refused, which is the
guard working rather than a fault: version 1 of activity-agent was already
published and said something different from the file this repository ships.
The difference is inert. Production's copy adds `webSearch: false`, which is
exactly what the parser defaults to when the key is absent (agent.go:471 reads
`data["webSearch"] == true`), and lists the same three skills in a different
order. Both forms parse to the identical agent — 2 tools, 0 sources, 3 skills,
confirmed by running the importer's own dry-run over each.
What happened is a round trip: somebody edited this agent in the UI, the editor
re-serialised it, and that serialisation is what got snapshotted as v1. The
hand-authored file was never the published artefact for this one.
So the file is updated to match rather than the version being bumped. Bumping
would publish a v2 that differs from v1 only in field order and a defaulted
key, which is noise in a history whose whole purpose is to say what changed.
This unblocks the import. It does not address the underlying awkwardness: the
comparison is textual, so any future UI edit that reformats without changing
meaning will block a deploy the same way. Comparing the PARSED definition
instead would fix that properly and is the right follow-up — it needs a
decision about what counts as semantically equal (skill order, starter order)
and should not be rushed in behind a deploy.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PJvibeSc1JYXjatankqM1g