What problem does it solve? Model-generated activity records (workouts, task completions, goal progress, measurements) risk corrupting persistent Janus data files when written directly. This Skill enforces a single controlled gateway that validates, normalizes, de-duplicates, and atomically persists records, preventing data loss and malformed writes. ## Core Features & Use Cases - Typed ActivityRecord Gateway: Construct ActivityRecord values for 10 activity types (task_completed, goal_progress, workout_added, measurement, inbox_captured, and more) and pass them to ingest_activities() for validated, routed persistence. - Dedup and Normalization: Automatic dedup key computation with configurable reject/merge/replace policies, timestamp UTC conversion, text cleanup, and unit conversion (e.g., lb to kg, mi to km). - Data Protection: All writes go through atomic_io and data_protection with backup rotation and conflict detection; direct model edits to data/ files are strictly forbidden. - Use Case: After a user logs a 5.2 km run in chat, construct a WORKOUT_ADDED ActivityRecord with distance, duration, and heart rate, then ingest it alongside a GOAL_PROGRESS record for the half-marathon goal in one batch call. ## Quick Start Ask the agent to record a completed workout or goal progress update, and it will build the appropriate ActivityRecord and ingest it through the activity_ingest gateway.