Agno published v3.0.3 on 30 August at 20:45:21 UTC, introducing a knowledge-management toolset. It published v3.0.4 at 22:40:41 UTC — one hour and fifty-five minutes later — and used that patch release to rewrite the toolset's public interface.
What changed in a patch
Three things that do not belong in a patch version. The module path moved, with no compatibility shim left behind. The four constructor flags were renamed. And the constructor's handling of unknown keyword arguments means the old names are not rejected — they are silently ignored.
Why silent beats loud, badly
That last detail is the one with teeth. If a flag rename raises an error, every affected deployment fails loudly at start-up and someone fixes it in minutes. If the old name is quietly dropped, the constructor falls back to its own default — and an operator who wrote a flag specifically to disable a capability gets that capability switched on after upgrading, with no error, no warning and no log line. The upgrade appears to succeed. The configuration it was carrying does not survive it.
The bug bullet that is a safety fix
The same release corrects a defaulting bug that had been dropping the confirmation gate on the one tool in the set capable of destroying stored content. That is a safety-relevant fix. It is filed in the notes as an ordinary bug bullet, alongside cosmetic items, with nothing marking it as the reason an operator might want to upgrade urgently.
What the common framing gets wrong
Semantic versioning is widely read as a contract: a patch bump means safe to take. Here the patch digit covers a module move without a shim, four renamed flags, and a changed effective default — the definition of a breaking change. And the project knew the principle: an earlier release the same day argued for rejecting silently-ignored keyword arguments rather than swallowing them. The position was stated and then not applied to its own rename hours later.
How to take the upgrade
Do not treat 3.0.3 to 3.0.4 as a routine bump. Grep for the old flag names and the old module path before upgrading, because neither the installer nor the runtime will tell you they stopped meaning anything.
