vestige/crates
NoahToKnow f97dc7d084 fix(intention): accept snake_case in_minutes / file_pattern on TriggerSpec
The public JSON schema in schema() declares `in_minutes` and `file_pattern`
in snake_case, but TriggerSpec uses `#[serde(rename_all = "camelCase")]`
which makes serde expect `inMinutes` / `filePattern`. Snake_case inputs are
silently dropped to None, so time-based intentions with `in_minutes` never
fire (triggerAt becomes null) and file_pattern-only context intentions
never match.

Added `#[serde(alias = ...)]` so both naming conventions deserialize
correctly — purely additive, existing camelCase callers unaffected.

Two regression tests added, verified to FAIL without the aliases
(negative control confirmed the snake_case duration test sees
`triggerAt: null` and the file_pattern test sees an empty `triggered`
array). Both pass with the fix. Full crate suite: 408/408 passing.

Related to #25 (Bug #8 was half-fixed — check-side re-derivation works,
but the set-side was still dropping the value before it could be persisted).
2026-04-09 16:24:17 -06:00
..
vestige-core feat: v2.0.4 "Deep Reference" — cognitive reasoning engine + 10 bug fixes 2026-04-09 16:15:26 -05:00
vestige-mcp fix(intention): accept snake_case in_minutes / file_pattern on TriggerSpec 2026-04-09 16:24:17 -06:00