Время без сюрпризов
now() не существует
Вызов now() или timestamp() — ошибка E0533. Это не пробел, а дизайн-решение
(D13): текущее время сделало бы конфиг невоспроизводимым — сломались бы
--dry-run-сравнения, кэши и сама идея «два прогона дают одинаковый результат».
Если время сборки действительно нужно — его передаёт хост:
built_at: env("BUILD_TIME", "unknown")
BUILD_TIME=$(date -u +%FT%TZ) aura eval app.aura --allow-env=BUILD_TIME
Решение о времени принимает и фиксирует запускающая сторона, конфиг остаётся чистой функцией от входов.
Длительности
Таймауты и TTL — строки с единицами d/h/m/s, парсятся в секунды (Int):
ttl = "1h30m".parse_duration() # → 5400
cache:
ttl_seconds: ttl
refresh_every: (ttl / 3).format_duration() # → "30m"
end
Дальше — обычная целочисленная арифметика: сложение, вычитание, «перевести
сутки в часы» и т.п. Некорректная строка — E0319.
Даты
RFC3339 ↔ epoch-секунды (UTC):
start = "2026-07-18T22:00:00Z".parse_datetime() # → epoch Int
window:
start: start
end: (start + "4h".parse_duration()).format_datetime()
# → "2026-07-19T02:00:00Z" — переход через полночь корректен
end
Поддерживаются смещения (+02:00 указывает на тот же момент времени)
и короткая форма даты ("2026-07-18" — полночь UTC). Некорректная дата — E0320.
Календарная арифметика высокого уровня («+3 месяца», рабочие дни, таймзоны) — намеренно не в ядре: это территория будущих пакетов сообщества поверх epoch-примитивов.