v2.0.2: Safer Skill Health Records and Cleaner Crush Config¶
v2.0.2 is a small release with a big operational theme: keep local agent state honest, discoverable, and out of the repository.
Skill health now rejects unknown statuses¶
recordSkillObservation() used to normalize anything other than success into failure. That made dashboards look conservative, but it also hid producer bugs. A typo, legacy value, or future enum could silently inflate failure counts.
The writer now accepts only:
successfailure
Anything else throws before the observation is persisted. This keeps .aios/skill-health/observations.jsonl as a reliable telemetry stream instead of a dumping ground for malformed producer output.
Help flags win before positional validation¶
The new skill and session parser surfaces now handle help before enforcing required subcommands or paths. These commands now show usage instead of throwing missing-argument errors:
node scripts/aios.mjs skill --help
node scripts/aios.mjs skill comply --help
node scripts/aios.mjs session --help
node scripts/aios.mjs session changed-files --help
That matters for recovery: if an agent or human lands on a new command surface, --help must always be the escape hatch.
Crush config leaves the repository¶
The tracked .crush.json and crush.json files were removed from git and added to .gitignore.
AIOS still supports generating or reading local Crush config files when a workspace needs Crush MCP wiring. The change is about ownership: local tool config belongs on the machine, not in the shared repository history.
Verification¶
The release adds regression coverage for both fixes:
- invalid skill health statuses reject before writing
skillandsessionhelp flags bypass positional validation
Full release verification also rebuilds the docs and blog site so the generated website matches the source content.