# Andromida (Rituals) - Product Requirements Document > **Version**: 1.0 > **Last Updated**: February 2026 > **Status**: Active Development --- ## 1. Overview ### 1.1 Product Vision Andromida (branded as "Rituals") is a premium, offline-first habit tracker built around customizable "ritual arcs" rather than endless streaks. The app focuses on steady, daily check-ins with a calm visual language, zero paid backend dependencies, and optional iCloud sync. ### 1.2 Target Audience - Health-conscious individuals seeking structured daily routines - Productivity enthusiasts who prefer time-bound goals over infinite streaks - Users who value privacy and offline-first functionality - Apple ecosystem users who want seamless iCloud integration ### 1.3 Key Differentiators - **Arc-Based Approach**: Habits are grouped into ritual arcs (7-365 days) with defined start and end dates, allowing for natural cycles of focus and renewal - **No Paid APIs**: Entirely self-contained with no external service dependencies - **Offline-First**: Full functionality without network connectivity - **Privacy-Focused**: All data stored locally with optional iCloud sync --- ## 2. User Goals | Goal | Description | |------|-------------| | **Build Habits** | Establish and maintain daily rituals through consistent check-ins | | **Track Progress** | Visualize completion rates, streaks, and historical performance | | **Stay Motivated** | Receive milestone achievements and contextual insights | | **Customize Experience** | Create personalized rituals with flexible scheduling | | **Maintain Privacy** | Keep personal data local with optional cloud backup | --- ## 3. Functional Requirements ### 3.1 Today Tab The primary daily interaction surface for habit check-ins. | Requirement | Description | |-------------|-------------| | FR-TODAY-01 | Display focus ritual cards with circular progress rings showing completion percentage | | FR-TODAY-02 | Enable tap-to-complete habit check-ins with haptic and sound feedback | | FR-TODAY-03 | Filter rituals by time of day (morning, midday, afternoon, evening, night, anytime) | | FR-TODAY-04 | Show smart empty states distinguishing "no rituals" from "no rituals for this time" | | FR-TODAY-05 | Display arc renewal prompts when ritual arcs complete | | FR-TODAY-06 | Support adaptive 2-column grid layout on iPad and landscape orientations | | FR-TODAY-07 | Fresh install starts clean with no pre-seeded rituals | ### 3.2 Rituals Tab Ritual creation and management interface. | Requirement | Description | |-------------|-------------| | FR-RITUALS-01 | Display all active rituals with card-based UI | | FR-RITUALS-02 | Create rituals from scratch or browse preset library | | FR-RITUALS-03 | Provide 14 categorized presets across 4 categories (Health, Productivity, Mindfulness, Self-Care) | | FR-RITUALS-04 | Support full ritual lifecycle: create, edit, delete | | FR-RITUALS-05 | Enable drag-to-reorder habits within rituals | #### 3.2.1 Ritual Detail View | Requirement | Description | |-------------|-------------| | FR-DETAIL-01 | Show progress card with day count and completion summary | | FR-DETAIL-02 | Display time remaining countdown (e.g., "12 days remaining") | | FR-DETAIL-03 | Track ritual-specific streaks | | FR-DETAIL-04 | Show milestone achievements (First Day, One Week, Halfway, Three Weeks, Complete) | | FR-DETAIL-05 | Display habit performance breakdown with per-habit completion rates | | FR-DETAIL-06 | Show status badges for time of day and category | | FR-DETAIL-07 | Provide action menu for edit, end arc/start new arc, and delete | #### 3.2.2 Ritual Editor | Requirement | Description | |-------------|-------------| | FR-EDITOR-01 | Support custom ritual creation with title, theme, and notes | | FR-EDITOR-02 | Provide icon picker with 50+ categorized SF Symbols and search | | FR-EDITOR-03 | Provide habit icon picker with 100+ icons organized by category | | FR-EDITOR-04 | Allow custom category input beyond preset categories | | FR-EDITOR-05 | Support flexible duration: slider (7-365 days), quick presets, and custom input | | FR-EDITOR-06 | Enable time-of-day scheduling (morning, midday, afternoon, evening, night, anytime) | | FR-EDITOR-07 | Support drag-to-reorder habits | #### 3.2.3 Arc Renewal System | Requirement | Description | |-------------|-------------| | FR-RENEWAL-01 | Allow rituals to be renewed when arcs complete | | FR-RENEWAL-02 | Preserve historical data (old arcs remain frozen and accessible) | | FR-RENEWAL-03 | Copy habits from previous arc to new arc during renewal | | FR-RENEWAL-04 | Display renewal prompts automatically when arcs complete | ### 3.3 History Tab Historical view of past completions and performance. | Requirement | Description | |-------------|-------------| | FR-HISTORY-01 | Display scrollable month calendar grid (expandable to 12 months) | | FR-HISTORY-02 | Show daily progress rings with color coding (green=100%, accent=50%+, gray=<50%) | | FR-HISTORY-03 | Enable filtering by ritual using horizontal pill picker | | FR-HISTORY-04 | Support tap on any day to open detail sheet | | FR-HISTORY-05 | Detail sheet shows: progress ring with percentage, comparison to weekly average, streak context, motivational message, grouped habit list by ritual | | FR-HISTORY-06 | Support adaptive 2-column grid layout on iPad and landscape | | FR-HISTORY-07 | In "All" filter mode, calculations must include completed and archived arcs (not only currently active arcs) | ### 3.4 Insights Tab Analytics and trend visualization. | Requirement | Description | |-------------|-------------| | FR-INSIGHTS-01 | Display 8 tappable insight cards with full-screen detail sheets | | FR-INSIGHTS-02 | **Active Rituals**: Count with per-ritual breakdown | | FR-INSIGHTS-03 | **Streak**: Current and longest perfect-day streak tracking (100% completion days) | | FR-INSIGHTS-04 | **Habits Today**: Completed count with per-ritual breakdown | | FR-INSIGHTS-05 | **Completion**: Today's percentage with 7-day trend chart | | FR-INSIGHTS-06 | **Days Active**: Total active days with detailed breakdown | | FR-INSIGHTS-07 | **7-Day Avg**: Weekly average completion percentage with trend chart | | FR-INSIGHTS-08 | **Total Check-ins**: All-time habit completions across all rituals | | FR-INSIGHTS-09 | **Best Ritual**: Highest-performing ritual by completion rate | | FR-INSIGHTS-10 | Show trend indicators (up/down/stable) with week-over-week comparison | | FR-INSIGHTS-11 | Display contextual tips based on performance | | FR-INSIGHTS-12 | Enable drag-and-drop card reordering in edit mode | | FR-INSIGHTS-13 | Show sparkline charts for trend visualization | ### 3.5 Settings Tab Application configuration and preferences. | Requirement | Description | |-------------|-------------| | FR-SETTINGS-01 | Configure smart reminders based on ritual time slots (morning 7:00 AM, midday 12:00 PM, evening 6:00 PM) | | FR-SETTINGS-02 | Toggle haptic feedback for habit check-ins | | FR-SETTINGS-03 | Toggle sound feedback for habit check-ins | | FR-SETTINGS-04 | Select theme (light, dark, system) | | FR-SETTINGS-05 | Enable/disable iCloud settings sync | | FR-SETTINGS-06 | Manage categories (create, edit, delete user categories) | | FR-SETTINGS-07 | Provide debug tools in DEBUG builds: reset onboarding, app icon generation, branding preview, preload demo data, clear all completions, simulate arc completion | ### 3.6 Widget Home screen widget for at-a-glance progress. | Requirement | Description | |-------------|-------------| | FR-WIDGET-01 | Support small, medium, and large widget sizes | | FR-WIDGET-02 | Display today's completion rate | | FR-WIDGET-03 | Show current streak | | FR-WIDGET-04 | List next habits (up to 4) | | FR-WIDGET-05 | Indicate current time of day | | FR-WIDGET-06 | Show next ritual information | | FR-WIDGET-07 | Support App Intents for widget configuration | | FR-WIDGET-08 | Update widget content every 15 minutes | | FR-WIDGET-09 | Use App Group shared container for SwiftData access | | FR-WIDGET-10 | "Next ritual" label must correctly distinguish "later today" vs "tomorrow" based on target timeline date | ### 3.7 Onboarding First-launch setup wizard. | Requirement | Description | |-------------|-------------| | FR-ONBOARD-01 | **Welcome**: Introduction to the app | | FR-ONBOARD-02 | **Goal Selection**: Choose from predefined goals | | FR-ONBOARD-03 | **Time Selection**: Select preferred ritual times (morning/evening/both) | | FR-ONBOARD-04 | **Ritual Preview**: Preview and optionally create preset rituals | | FR-ONBOARD-05 | **First Check-In**: Complete first habit check-in | | FR-ONBOARD-06 | **Notifications**: Set up reminder permissions | | FR-ONBOARD-07 | **What's Next**: Orientation to Today, Rituals, and Insights tabs | | FR-ONBOARD-08 | Allow onboarding reset from Settings (DEBUG builds) | ### 3.8 Deep Linking URL scheme support for navigation. | Requirement | Description | |-------------|-------------| | FR-DEEPLINK-01 | Support `andromida://today` to navigate to Today tab | | FR-DEEPLINK-02 | Support `andromida://rituals` to navigate to Rituals tab | | FR-DEEPLINK-03 | Support `andromida://insights` to navigate to Insights tab | | FR-DEEPLINK-04 | Support `andromida://history` to navigate to History tab | --- ## 4. Non-Functional Requirements ### 4.1 Performance | Requirement | Description | |-------------|-------------| | NFR-PERF-01 | Analytics calculations must use caching to avoid recalculation on each access | | NFR-PERF-02 | History view must cache progress data for smooth scrolling | | NFR-PERF-03 | App launch must complete without white flash using native LaunchScreen.storyboard | | NFR-PERF-04 | Widget updates must complete within WidgetKit timeline constraints | ### 4.2 Accessibility | Requirement | Description | |-------------|-------------| | NFR-A11Y-01 | Support Dynamic Type for all text elements | | NFR-A11Y-02 | Provide VoiceOver accessibility labels and hints | | NFR-A11Y-03 | Ensure sufficient color contrast ratios | | NFR-A11Y-04 | Support reduced motion preferences | Implementation note: Onboarding flows and root-level shell transitions should avoid motion-heavy animations when iOS Reduce Motion is enabled. ### 4.3 Localization | Requirement | Description | |-------------|-------------| | NFR-L10N-01 | All user-facing strings must be localized using String Catalogs | | NFR-L10N-02 | Support English (en), Spanish (es-MX), and French (fr-CA) | | NFR-L10N-03 | Use locale-appropriate date and number formatting | ### 4.4 Privacy & Security | Requirement | Description | |-------------|-------------| | NFR-PRIV-01 | All user data must be stored locally on device | | NFR-PRIV-02 | iCloud sync must be opt-in and clearly disclosed | | NFR-PRIV-03 | No user data may be transmitted to external services | | NFR-PRIV-04 | App must function fully offline | --- ## 5. Technical Requirements ### 5.1 Platform | Requirement | Description | |-------------|-------------| | TR-PLAT-01 | iOS 18.6+ minimum deployment target | | TR-PLAT-02 | Swift 5 with modern concurrency (async/await, actors) | | TR-PLAT-03 | SwiftUI for all user interface | | TR-PLAT-04 | SwiftData for persistence with `@Observable` pattern | | TR-PLAT-05 | WidgetKit for Home screen widgets | ### 5.2 Architecture | Requirement | Description | |-------------|-------------| | TR-ARCH-01 | Follow Clean Architecture with separation: Views, State, Services, Models | | TR-ARCH-02 | Use protocol-oriented design for testability | | TR-ARCH-03 | Implement `@Observable` stores (not ObservableObject) | | TR-ARCH-04 | Use dependency injection via protocols | ### 5.3 Data Persistence | Requirement | Description | |-------------|-------------| | TR-DATA-01 | Use SwiftData with optional CloudKit sync for ritual data | | TR-DATA-02 | Use NSUbiquitousKeyValueStore (via Bedrock CloudSyncManager) for settings sync | | TR-DATA-03 | Use UserDefaults for user-created categories and preferences | | TR-DATA-04 | Use App Group shared container for widget data access | | TR-DATA-05 | Run a startup integrity migration to normalize arc date ranges, in-progress arc state, and persisted sort indexes | | TR-DATA-06 | Enable iCloud runtime compatibility by shipping `com.apple.developer.ubiquity-kvstore-identifier` and `remote-notification` background mode when CloudKit/KVS sync is enabled | | TR-DATA-07 | For SwiftData CloudKit sync, ship Push Notifications entitlement (`aps-environment`) with per-configuration environment values | | TR-DATA-08 | Observe `.NSPersistentStoreRemoteChange` and reload SwiftData-backed state when remote merges arrive | | TR-DATA-09 | Maintain a foreground sync safety-net refresh, but do not rely on app relaunch for cross-device update visibility | | TR-DATA-10 | Ensure UI invalidation on each remote merge so batched updates appear without manual pull-to-refresh | | TR-DATA-11 | Emit sync diagnostics (remote event count and timestamp) to support field debugging on physical devices | | TR-DATA-12 | Validate every release with a two-device real-time sync test matrix (single toggle, rapid batch toggles, background/foreground recovery) | #### 5.3.1 SwiftData to CloudKit Reuse Standard Use `SWIFTDATA_CLOUDKIT_SYNC_REQUIREMENTS.md` as the canonical implementation and QA checklist for any app that uses SwiftData with CloudKit. Standard coverage includes: - capabilities/entitlements baseline (CloudKit, Push Notifications, Remote Notifications background mode) - runtime remote-change handling and stale-context mitigation - deterministic UI refresh behavior for remote merges and rapid batched edits - repeatable two-device verification and CloudKit Console validation flow ### 5.4 Third-Party Dependencies | Requirement | Description | |-------------|-------------| | TR-DEPS-01 | Bedrock design system package (internal) for theming, branding, and common UI components | | TR-DEPS-02 | No external third-party frameworks without explicit approval | --- ## 6. Data Model ### 6.1 Core Entities #### Ritual Primary entity representing a habit collection. | Property | Type | Description | |----------|------|-------------| | id | UUID | Unique identifier | | title | String | Ritual name | | theme | String | Visual theme identifier | | notes | String? | Optional user notes | | defaultDurationDays | Int | Default arc duration (7-365) | | timeOfDay | TimeOfDay | Scheduling preference | | iconName | String | SF Symbol name | | category | String | Category identifier | | sortIndex | Int | Display order | | arcs | [RitualArc] | Related arcs (one-to-many, cascade delete) | **Computed Properties**: `currentArc`, `hasActiveArc`, `sortedArcs`, `latestArc`, `completedArcCount`, `habits` #### RitualArc Time-bound period for a ritual. | Property | Type | Description | |----------|------|-------------| | id | UUID | Unique identifier | | startDate | Date | Arc start date | | endDate | Date | Arc end date | | arcNumber | Int | Sequential arc number | | isActive | Bool | Whether arc is currently active | | habits | [ArcHabit] | Related habits (one-to-many, cascade delete) | | ritual | Ritual | Parent ritual (inverse relationship) | **Computed Properties**: `durationDays`, **Methods**: `contains(date:)`, `dayIndex(for:)`, `createRenewalArc()` #### ArcHabit Individual habit within an arc. | Property | Type | Description | |----------|------|-------------| | id | UUID | Unique identifier | | title | String | Habit name | | symbolName | String | SF Symbol name | | goal | Int | Target completions | | completedDayIDs | [String] | Array of date identifiers | | sortIndex | Int | Display order | | arc | RitualArc | Parent arc (inverse relationship) | **Methods**: `copyForNewArc()` ### 6.2 Supporting Models #### Category User-defined or preset category. | Property | Type | Description | |----------|------|-------------| | id | String | Unique identifier | | name | String | Display name | | colorName | String | Color identifier (13 available colors) | | isPreset | Bool | Whether system-defined | **Preset Categories**: Health, Productivity, Mindfulness, Self-Care #### TimeOfDay Scheduling enumeration. | Case | Time Range | |------|------------| | morning | Before 11:00 AM | | midday | 11:00 AM - 2:00 PM | | afternoon | 2:00 PM - 5:00 PM | | evening | 5:00 PM - 9:00 PM | | night | After 9:00 PM | | anytime | Flexible timing | #### InsightCard Analytics display card. | Type | Description | |------|-------------| | Active | Active ritual count with breakdown | | Streak | Current and longest perfect-day streak (100% completion days) | | HabitsToday | Today's completed habits | | Completion | Today's percentage with trend | | DaysActive | Total active days | | SevenDayAvg | Weekly average percentage | | TotalCheckins | All-time completions | | BestRitual | Top-performing ritual | #### Milestone Achievement markers. | Milestone | Description | |-----------|-------------| | First Day | First day completed (day 1) | | One Week | First week completed (day 7) | | Halfway | 50% of arc completed (dynamic based on arc duration) | | Three Weeks | 21 days completed | | Complete | Full arc completed | ### 6.3 Entity Relationships ``` Ritual (1) ──────< RitualArc (many) │ └────< ArcHabit (many) ``` - Ritual → RitualArc: One-to-many with cascade delete - RitualArc → ArcHabit: One-to-many with cascade delete - RitualArc → Ritual: Inverse relationship --- ## 7. Design System ### 7.1 Theme Integration The app uses the Bedrock design system with a custom `RitualsTheme` providing: - **Surface Colors**: primary, secondary, tertiary, card backgrounds - **Text Colors**: primary, secondary, tertiary, disabled, inverse - **Accent Colors**: primary, light, dark, secondary - **Status Colors**: success, warning, error, info - **Border Colors**: subtle, standard, emphasized, selected - **Interactive Colors**: selected, hover, pressed, focus ### 7.2 Color Assets | Asset | Purpose | |-------|---------| | Background, BackgroundAlt, BackgroundTertiary | Surface backgrounds | | Card | Card backgrounds | | Divider | Separator lines | | Accent, AccentLight, AccentDark, AccentSecondary, AccentSoft | Brand and interactive colors | | TextPrimary, TextSecondary, TextTertiary, TextDisabled | Typography | | Success, Warning, Error, Info | Status indicators | ### 7.3 Branding | Element | Specification | |---------|---------------| | App Name | Andromida (displayed as "Rituals") | | Bundle ID | com.mbrucedogs.Andromida | | App Group | group.com.mbrucedogs.Andromida | | CloudKit Container | iCloud.com.mbrucedogs.Andromida | ### 7.4 Adaptive Layout | Requirement | Description | |-------------|-------------| | Max content width constraints for iPad and landscape | | 2-column grid layouts where appropriate | | Responsive spacing and typography | --- ## 8. Preset Library ### 8.1 Health (3 presets) - Morning Hydration - Midday Movement - Sleep Preparation ### 8.2 Productivity (3 presets) - Deep Work Prep - End-of-Day Review - Focus Reset ### 8.3 Mindfulness (4 presets) - Morning Meditation - Gratitude Practice - Breathwork - Evening Reflection ### 8.4 Self-Care (4 presets) - Morning Skincare - Digital Detox - Evening Wind-Down - Weekly Reset --- ## 9. TODO Remaining features and enhancements to be implemented. ### 9.1 HealthKit Integration Sync habit completions to Apple Health for relevant habit types. | Item | Description | |------|-------------| | Water tracking | Sync hydration habits to HealthKit water intake | | Mindfulness | Sync meditation/breathwork habits to HealthKit mindful minutes | | Exercise | Sync movement habits to HealthKit activity | | Implementation plan | See `.cursor/plans/healthkit_integration_plan_ce4f933c.plan.md` | ### 9.2 Watch App Companion watchOS app for quick habit check-ins. | Item | Description | |------|-------------| | Quick check-ins | Allow habit completion directly from Apple Watch | | Complications | Show today's progress on watch face | | Sync | Real-time sync with iOS app via WatchConnectivity | ### 9.3 Export/Import Backup and restore ritual data. | Item | Description | |------|-------------| | Export format | JSON or other portable format for ritual data | | Import | Restore rituals from backup file | | Share | Share ritual templates with others | ### 9.4 Statistics Extended analytics with longer time horizons. | Item | Description | |------|-------------| | Monthly summary | Aggregate completion stats by month | | Yearly summary | Year-in-review style analytics | | Trend analysis | Long-term habit formation insights | --- ## 10. Project Structure ``` Andromida/ ├── Andromida/ # App target │ ├── App/ │ │ ├── Localization/ # String catalogs │ │ ├── Models/ # SwiftData + DTOs │ │ │ ├── Ritual.swift │ │ │ ├── RitualArc.swift │ │ │ ├── ArcHabit.swift │ │ │ ├── Category.swift │ │ │ ├── InsightCard.swift │ │ │ ├── Milestone.swift │ │ │ ├── OnboardingGoal.swift │ │ │ └── RitualPresets.swift │ │ ├── Protocols/ # Interfaces for stores/services │ │ │ ├── RitualStoreProviding.swift │ │ │ ├── RitualSeedProviding.swift │ │ │ └── InsightTipsProviding.swift │ │ ├── Services/ # Stateless logic │ │ │ ├── ReminderScheduler.swift │ │ │ └── RitualSeedService.swift │ │ ├── State/ # @Observable stores │ │ │ ├── RitualStore.swift │ │ │ ├── CategoryStore.swift │ │ │ └── SettingsStore.swift │ │ └── Views/ # SwiftUI features │ │ ├── Today/ │ │ ├── Rituals/ │ │ ├── History/ │ │ ├── Insights/ │ │ ├── Settings/ │ │ └── Onboarding/ │ ├── Shared/ # Theme + branding + analytics │ │ ├── Configuration/ # xcconfig files │ │ ├── Services/ # RitualAnalytics │ │ └── Theme/ # RitualsTheme │ └── Resources/ # LaunchScreen.storyboard ├── AndromidaWidget/ # Widget extension │ ├── Intents/ # App Intents │ ├── Models/ # Widget-specific models │ ├── Providers/ # Timeline provider │ └── Views/ # Widget views ├── AndromidaTests/ # Unit tests ├── AndromidaUITests/ # UI tests └── Bedrock/ # Shared design system package ``` --- ## 11. Key Files Reference | File | Purpose | |------|---------| | `Andromida/AndromidaApp.swift` | App entry point | | `Andromida/Shared/Theme/RitualsTheme.swift` | Bedrock theme configuration | | `Andromida/Shared/BrandingConfig.swift` | Branding constants | | `Andromida/Shared/Configuration/Base.xcconfig` | Build configuration source of truth | | `SWIFTDATA_CLOUDKIT_SYNC_REQUIREMENTS.md` | Reusable SwiftData to CloudKit sync standard and test checklist | | `Andromida/Resources/LaunchScreen.storyboard` | Native launch screen | | `Andromida/App/State/RitualStore.swift` | Primary data store | | `Andromida/App/State/SettingsStore.swift` | Settings with cloud sync | | `Andromida/App/State/CategoryStore.swift` | Category management | | `Andromida/App/Services/ReminderScheduler.swift` | Notification scheduling | | `AndromidaWidget/AndromidaWidget.swift` | Widget entry point | --- ## 12. Testing Requirements | Requirement | Description | |-------------|-------------| | Unit tests in `AndromidaTests/` covering store logic and analytics | | UI tests in `AndromidaUITests/` for critical user flows | | Unit-test harness should use deterministic in-memory SwiftData setup to prevent host-app test instability | | UI-test harness should run app launches with deterministic flags (`UITEST_MODE`, optional reset/onboarding overrides) and in-memory SwiftData | | UI launch coverage should prioritize stable smoke validation over exhaustive simulator configuration matrices | | UI coverage should include onboarding state transition validation and ritual creation flow from the Rituals tab | | Test command: `xcodebuild test -scheme Andromida -destination 'platform=iOS Simulator,name=iPhone 17 Pro Max,OS=26.2'` | --- ## Revision History | Version | Date | Description | |---------|------|-------------| | 1.0 | February 2026 | Initial PRD based on implemented features | | 1.1 | February 2026 | Fixed time-of-day refresh bug in Today view and Widget; added debug time simulation | | 1.2 | February 2026 | Added deterministic UI-test launch harness and expanded critical UI flow coverage | | 1.3 | February 2026 | Added reusable SwiftData to CloudKit sync requirements, runtime expectations, and two-device verification standard | --- ## Known Limitations ### KIB-001 - Mac Runtime Inbound CloudKit Updates May Require Activation Transition - **Summary**: On Mac runtime, inbound SwiftData+CloudKit updates from iPhone/iPad may not appear while app remains active. - **Observed**: iPhone/iPad to iPhone/iPad sync is near-real-time; Mac to iPhone/iPad sync is near-real-time; iPhone/iPad to Mac may require foreground/background transition or relaunch. - **Status**: Known platform/runtime behavior under investigation; not introduced by recent Bedrock safe-core extraction. - **Tracking**: Detailed investigation notes are maintained in `BEDROCK_DEFERRED_REFACTOR_PLAN.md` under `Known Issue Backlog (KIB-001)`.