{
    "description": "Hardcoded vocabulary and mapping values that are NOT aliases. These are foundational terms built into the system. Aliases (in aliases.json) expand INTO these terms.",
    "dayVocabulary": {
        "description": "Base day/recurrence terms recognized by the pattern validator",
        "terms": [
            "daily",
            "weekly",
            "monthly",
            "yearly",
            "hourly",
            "minutely",
            "today",
            "week",
            "month",
            "quarter",
            "year",
            "weekdays",
            "weekends",
            "su",
            "mo",
            "tu",
            "we",
            "th",
            "fr",
            "sa",
            "1st",
            "2nd",
            "3rd",
            "4th",
            "5th",
            "6th",
            "7th",
            "8th",
            "9th",
            "10th",
            "11th",
            "12th",
            "13th",
            "14th",
            "15th",
            "16th",
            "17th",
            "18th",
            "19th",
            "20th",
            "21st",
            "22nd",
            "23rd",
            "24th",
            "25th",
            "26th",
            "27th",
            "28th",
            "29th",
            "30th",
            "31st"
        ]
    },
    "timeVocabulary": {
        "description": "Base time-of-day terms recognized by the pattern validator",
        "terms": [
            "midnight",
            "early",
            "dawn",
            "breakfast",
            "morning",
            "midday",
            "noon",
            "lunch",
            "afternoon",
            "dusk",
            "dinner",
            "evening",
            "late",
            "night"
        ]
    },
    "recurVocabulary": {
        "description": "Base recurrence/frequency modifiers recognized by the pattern validator",
        "terms": [
            "once",
            "alternate",
            "half",
            "double",
            "every",
            "testing",
            "always"
        ]
    },
    "timeToHour": {
        "description": "Hardcoded mapping of time terms to 24-hour format (hour component). Used during cron/at export.",
        "mappings": {
            "midnight": 0,
            "dawn": 5,
            "early": 6,
            "breakfast": 7,
            "morning": 9,
            "midday": 12,
            "noon": 12,
            "lunch": 12,
            "afternoon": 14,
            "dusk": 17,
            "dinner": 18,
            "evening": 19,
            "late": 22,
            "night": 23
        }
    },
    "dayToCron": {
        "description": "Hardcoded mapping of day abbreviations to cron day-of-week numbers (0=Sunday, 6=Saturday). Used during cron export.",
        "mappings": {
            "su": 0,
            "mo": 1,
            "tu": 2,
            "we": 3,
            "th": 4,
            "fr": 5,
            "sa": 6
        }
    },
    "notes": {
        "vocabulary": "These vocabularies define what terms are valid at each pattern segment. They are hardcoded (not in aliases.json) because they are the foundational set of recognized terms.",
        "mapping": "These mappings convert vocabulary terms to concrete values during schedule export (cron/at generation). They are hardcoded because they define the system's interpretation of time.",
        "extension": "To add new time terms, add them to timeVocabulary AND define their hour mapping in timeToHour. To add new day terms, add them to dayVocabulary AND define their cron mapping in dayToCron. To add aliases that expand to these terms, use aliases.json instead."
    }
}
