Windcast
Система прогноза выработки ВЭС на 24–48 ч: агент-контроллер берёт архивный прогноз NOAA GFS, запускает ансамбль из 5 MLP, сохраняет расчёты в…
О проекте
Команда: RentBox
Кейс HackAlem.ai: Энергетика — Самрук-Казына
Стадия: Доведённый продукт
Задача кейса: AI-агент, прогнозирующий выработку ветровой электростанции по погодным данным
Суть
Система прогноза выработки ВЭС на 24–48 ч: агент-контроллер берёт архивный прогноз NOAA GFS, запускает ансамбль из 5 MLP, сохраняет расчёты в DuckDB; дашборд на Next.js с 3D-турбиной.
Как устроено
История турбин и 730 циклов NOAA GFS (GRIB, почасовая интерполяция из трёхчасовых опор) → признаки со строгой исторической доступностью (as_of, проверка S3 Last-Modified, SHA-256) → ансамбль 5 MLP, лучшая конфигурация выбрана поиском (400 конфигураций, эволюционный поиск 984 кандидатов на RTX 5090/Brev A6000) → агент по правилам (policy) валидирует вход, получает погоду, запускает модель, проверяет результат и пишет ревизии в DuckDB → FastAPI + Next.js дашборд, CSV, replay всего февраля (29 выпусков). Опциональный помощник Astra через OpenAI.
Ключевые решения
- MLP ensemble
- NOAA GFS NWP features
- evolutionary model search
- persistence baseline
- replay backtesting
- DuckDB revisions
- ecCodes GRIB parsing
Метрики
Январь 2026, 1–48 ч: MAE 0.15947, RMSE 0.23190 (норм. мощность) против persistence MAE 0.34268 — MAE ниже на 53.5%; 1–24 ч MAE 0.15226; 25–48 ч MAE 0.16692
Особенности
Строгое соблюдение исторической доступности погоды: для каждого решения используется только выпуск GFS, опубликованный до as_of, с сохранением URL и хэшей, что исключает утечку будущего. Есть replay всего месяца, ревизии прогнозов в DuckDB и интерфейс на трёх языках (RU/EN/KK).
Стек
Python 3.12 · FastAPI · Pydantic · DuckDB · ecCodes · scikit-learn · PyTorch · Next.js 16 · React 19 · TypeScript · Tailwind · Three.js · Blender · Docker Compose · uv
Модели
OpenAI (опциональный помощник Astra)
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-575875e7-rentbox.
README
README.mdWindcast — прогноз выработки ВЭС
Почасовой прогноз нормализованной мощности двух ветротурбин на 24–48 часов. Агент получает архивный прогноз погоды, запускает обученную модель, анализирует результат и сохраняет расчёт в историю. Интерфейс показывает график, погоду, этапы работы агента и позволяет скачать CSV.
Проект команды RentBox для HackAlem AI, трек «Энергетика». Конкурсный период прогнозирования — 1–28 февраля 2026 года.
Запуск · Проверка · Результаты · Архитектура · Ограничения · Источники
Для чего нужен и в чём преимущества
Пользователь — диспетчер или аналитик ветроэлектростанции. Ему нужно заранее оценивать ожидаемую выработку, замечать резкие изменения мощности и сравнивать выпуски прогноза перед планированием работы станции.
- Прогноз на двое суток: почасовой график по каждой турбине и выгрузка для дальнейших расчётов; агент отмечает резкие изменения ожидаемой мощности.
- Проверяемые источники: у расчёта сохраняются версия модели, погодный выпуск, время доступности и хэши данных. Можно проследить, на чём основан результат.
- Воспроизведение прошлого: система последовательно рассчитывает февраль, используя только погодные прогнозы, доступные на момент каждого решения.
- Запуск без специального оборудования: готовая модель работает на CPU; основной сценарий не требует GPU, личных аккаунтов или API-ключей.
На январском периоде мониторинга MAE модели на 53,5% ниже, чем у прогноза «повторить последний известный час». Это результат исторического эксперимента; экономический эффект в эксплуатации ещё не измерялся.
Быстрый старт
Для сайта нужны: Git, Bash, curl, запущенный Docker с Compose 2.24+,
Node.js 22.20+ и npm 11. Поддерживаются Linux, macOS и Windows через WSL2.
Интернет нужен для первоначальной загрузки образов и зависимостей.
git clone https://github.com/BAITC-Hacks/hack-575875e7-rentbox.git hack-rentbox
cd hack-rentbox
./run.sh all
Скрипт создаёт .env, если его нет, запускает backend и дашборд.
Обычно сайт доступен на http://localhost:3000, документация API —
на http://localhost:8000/docs. Используйте адреса, напечатанные скриптом:
при занятом порте он выбирает свободный. Продолжительность первого запуска
зависит от загрузки зависимостей и сборки.
Проверить только расчёт, без Node.js и браузера:
./run.sh demo
Ожидаемый результат — artifacts/demo-forecast.csv: 96 строк данных
(48 часов × 2 турбины) и заголовок. Момент решения — 31 января 2026, 18:00 UTC;
прогноз покрывает 1–2 февраля по принятому в эксперименте UTC+5.
Временные настройки пока исследовательские: UTC+5, метка начала десятиминутного интервала, ежедневный выпуск в 23:00 местного времени. Они явно помечены как неподтверждённые. Существующий
.envсохраняется.
Команды запуска и диагностики
| Команда | Что делает |
|---|---|
./run.sh | Интерактивное меню; без терминала — запуск backend |
./run.sh start | Только backend |
./run.sh web | Перезапуск дашборда с адресом уже работающего backend |
./run.sh check | Проверка окружения и наличия данных |
./run.sh logs | Последние строки журнала backend |
tail -50 .run/web.log | Журнал дашборда |
./run.sh stop | Остановка сервисов проекта |
./run.sh setup | Настройка времени, портов и обучения |
./run.sh settings | Подключение OpenAI: аккаунт ChatGPT / API key |
Для других портов: BACKEND_PORT=9000 WEB_PORT=3100 ./run.sh all.
Если сайт пишет «Сервер недоступен» после смены порта API, выполните
./run.sh web; если backend остановлен — ./run.sh all.
Без Docker
Установите Python 3.12 и uv; для сайта также нужны Node.js и npm.
Если рабочий Docker отсутствует, тот же скрипт выберет локальный запуск:
./run.sh all
Он подготовит окружение backend по backend/uv.lock при первом запуске
и передаст дашборду фактический порт API. Для одного расчёта используйте
./run.sh demo.
Проверка основного сценария
Без собственных ключей: достаточно быстрого старта. Модель, исходные CSV и сохранённые погодные выпуски входят в репозиторий. Расчёт выполняется настоящей моделью; необязательные языковые помощники на него не влияют.
- Откройте сайт по адресу из терминала, раздел «Прогноз выработки».
- Выберите 1 февраля 2026, 48 часов и обе турбины; нажмите «Рассчитать прогноз».
- Дождитесь завершения в разделе «AI-агент»: доступны этапы и сообщения.
- Посмотрите график и таблицу, скачайте CSV. В нём должны быть 96 строк данных, мощность в шкале 0–1 и сведения о происхождении погоды.
- Откройте «История запусков», обновите страницу и выберите сохранённый выпуск. Готовые расчёты хранятся в DuckDB и сохраняются после перезапуска backend.
Единицы: исходные значения мощности лежат в диапазоне 0–1; интерфейс показывает их как 0–100% этой шкалы. Формула нормализации не предоставлена. Для перевода в МВт/МВт·ч нужны её параметры и характеристики турбин.
Режим «Симуляция» — отдельный учебный сценарий. Погода, состояния турбины и мощность в нём синтетические; МВт рассчитываются из заданного пользователем условного номинала. Симуляция не использует NOAA или обученную модель, не сохраняется в историю API и не является результатом конкурсного прогноза.
Воспроизвести весь февраль
После ./run.sh all можно использовать прокси сайта. Если сайт запущен
на другом порту, замените 3000:
curl --fail-with-body -sS http://localhost:3000/api/agent/replays \
-H 'Content-Type: application/json' \
-d '{"first_as_of":"2026-01-31T18:00:00Z","last_as_of":"2026-02-28T18:00:00Z","step_hours":24,"horizon_hours":48,"turbine_ids":[1,2]}'
Ответ содержит replay_id. Прогресс — GET /api/agent/replays/{replay_id};
дочерние run_ids дают доступ к статусу, прогнозу и CSV каждого выпуска.
Ожидается 29 завершённых выпусков, по 96 значений в каждом.
Последние полные горизонты захватывают март.
Уже рассчитанные результаты: 2784 прогнозных строки
(поле in_february выделяет целевой месяц),
отчёт агента: 29/29 без ошибок.
Форматы всех запросов — в контракте API.
Как устроено решение
flowchart LR
H["История турбин"] --> T["Обучение"] --> M["Ансамбль 5 MLP"]
U["Дашборд / API"] --> Q["Очередь"] --> A["Агент"]
W["Архив NOAA GFS"] --> A
M --> A
A --> D["DuckDB: прогнозы, события, ревизии"]
D --> R["График, история, JSON, CSV"]
Агент — контроллер инструментов с заданными правилами (policy). После
запроса он проверяет входы, получает погоду по координатам, готовит признаки,
запускает модель, проверяет результат и сохраняет историю. Численный прогноз
рассчитывает ансамбль; Astra помогает пользователю ориентироваться на сайте.
Повторный запрос с refresh_weather=true запрашивает обновление погоды. При изменении
входов создаётся новая ревизия, при совпадении используется сохранённый результат.
Постоянный фоновый опрос погоды не включён: обновление запускается запросом
API. Последовательность исторических дат выполняется через replay.
Соблюдение исторической доступности погоды
as_of — момент, на который воспроизводится решение. Для каждого выпуска
в 18:00 UTC используется операционный цикл NOAA GFS 12:00 UTC того же дня.
- Инициализация и горизонт проверяются внутри GRIB; публикация исходного объекта
S3 (
Last-Modified) должна быть не позжеas_of. - Сохраняются URL, метаданные публикации и SHA-256 погодных данных. В репозитории — 730 циклов с 1 марта 2024 по 28 февраля 2026.
- Почасовая погода интерполируется из 17 трёхчасовых опор прогноза.
- Будущие фактические погода и мощность не входят в признаки; конец истории
обучения модели проверяется относительно
as_of.
Подробности: протокол прогнозирования, соответствие ТЗ, аудит данных.
Качество прогноза
Январь 2026 — период мониторинга экспериментов, не новый независимый тест. MAE — средняя абсолютная ошибка, RMSE сильнее учитывает крупные ошибки. Обе метрики выражены в долях нормализованной мощности; меньше — лучше.
| Модель / горизонт | MAE | RMSE |
|---|---|---|
| Ансамбль NOAA, 1–48 ч | 0.15947 | 0.23190 |
| Тот же ансамбль, 1–24 ч | 0.15226 | 0.21898 |
| Тот же ансамбль, 25–48 ч | 0.16692 | 0.24453 |
| Повтор последнего известного полного часа, 1–48 ч | 0.34268 | 0.45155 |
Сравнение выполнено на одинаковых 2928 прогнозных строках; один целевой час может встречаться в нескольких выпусках. Снижение MAE относительно базового прогноза — 53,5%. Основной поиск включал 400 конфигураций на CPU, RTX 5090 и Brev A6000; отбор выполнен по ноябрю–декабрю 2025.
Точность за февраль неизвестна: фактическая мощность за этот месяц не дана. Метрики · Базовые прогнозы · Отчёт об обучении.
Технологии и настройки
| Часть | Стек и зафиксированные зависимости |
|---|---|
| Данные и модель | Python 3.12, NumPy, pandas, scikit-learn; requirements.txt |
| Агент и API | FastAPI, Pydantic, DuckDB, ecCodes; pyproject.toml, uv.lock |
| Интерфейс | Next.js 16, React 19, TypeScript, Tailwind, Three.js; package-lock.json |
| Обучение | PyTorch с CUDA, локальная GPU и NVIDIA Brev; готовый прогноз работает без PyTorch |
Backend читает .env, затем backend/.env; переменные процесса имеют
приоритет. Полный пример — .env.example. Ключи остаются на сервере.
| Параметры | Назначение / значение |
|---|---|
RENTBOX_SOURCE_TIMEZONE / RENTBOX_TIMESTAMP_MEANING | Для поставляемой модели: Etc/GMT-5 / interval_start |
RENTBOX_ALLOW_RESEARCH_TIME_SETTINGS / RENTBOX_TIME_CONFIGURATION_CONFIRMED | Быстрый старт: true / false; подтверждение менять только после ответа организаторов |
BACKEND_PORT / WEB_PORT | Порты запуска; обычно 8000 / 3000, задаются перед командой run.sh |
RENTBOX_DATABASE_PATH | Локально data/forecasts.duckdb; Docker использует сохраняемый том /app/state |
RENTBOX_AGENT_FACTORY | src.agent:create_agent |
RENTBOX_MODEL_DIR / RENTBOX_GFS_CACHE | Модель / изменяемый кэш; задаются окружением процесса, подробнее в инструкции агента |
RENTBOX_CORS_ORIGINS | JSON-массив разрешённых адресов интерфейса |
OPENAI_HELPER_AUTH_MODE / OPENAI_API_KEY | Способ подключения Astra / серверный API-ключ |
OPENAI_HELPER_ENABLED | Включение Astra; без доступного подключения работает обычная справка |
NVIDIA_ENABLED / NVIDIA_API_KEY | Необязательные пояснения NVIDIA NIM; по умолчанию отключены |
При CONFIGURATION_REQUIRED прочитайте сообщение API и проверьте временные
настройки в существующем .env. При изменении подтверждённого часового пояса
или координат потребуется пересобрать данные и переобучить модель.
Помощник сайта и NVIDIA
Astra: откройте «Помощник» на сайте. Модель gpt-6-astra получает справку
и контекст выбранного выпуска; системный промпт ограничивает ответы известными
сведениями, сервер проверяет источники и кнопки перехода.
Подключение — ./run.sh settings: API key для сервера или аккаунт ChatGPT
через установленный Codex CLI для локальной проверки. В последнем режиме
backend запускается на компьютере, история проверки хранится отдельно в
.run/chatgpt/forecasts.duckdb; токены входа Codex в проект не копируются.
Модель в обоих случаях работает в облаке OpenAI. Применение настроек — ./run.sh all.
Без подключения и при ошибке доступна явно обозначенная справка платформы.
NVIDIA NIM: необязательные пояснения и рекомендации. Обучение модели ВЭС
выполняется на CPU/CUDA/Brev отдельной командой ./scripts/train.sh;
результаты сохраняются в artifacts/retraining/, отдельно от поставляемой модели.
Настройки Astra · Системный промпт ·
NVIDIA и обучение.
Известные ограничения
- Часовой пояс и смысл меток измерений требуют подтверждения; результаты исследовательские.
- Нет февральского факта, параметров нормализации и подтверждённого номинала турбин. Вероятностные интервалы и денежная оценка эффекта не рассчитываются.
- NOAA-сценарий рассчитан на ежедневный выпуск в 18:00 UTC; сетка 0.25° и интерполяция ограничивают детализацию погоды.
- Нет фонового обновления погоды и автоматического дообучения по датчикам.
- 3D-сцена иллюстративная: вращение не измеряет обороты, лёд не является диагнозом. В старых сохранённых выпусках могут отсутствовать погодные значения для отображения.
- DuckDB используется с одним процессом-писателем; backend — с одним worker.
- Проверка схемы ответа Astra не гарантирует фактическую безошибочность текста.
- Развёрнутая публичная версия и видео: пока отсутствуют; проверка — локально.
Дальнейшее развитие: фоновые обновления, приём измерений с датчиков, проверяемое переобучение на новых данных, интервалы неопределённости и планирование окон обслуживания. Диагностика простоев требует эксплуатационных статусов; расхождение двух прогнозов само по себе не измеряет ошибку. Бэклог.
Проверки и структура репозитория
Проверен запрос через прокси дашборда к реальному backend: расчёт 48 часов для двух турбин завершился, CSV содержит 96 строк. Сохранён отчёт полного февральского replay. Это не заменяет проверку итогового коммита из чистого клона.
make test # тесты backend (нужен uv)
make lint # статический анализ backend
npm test # тесты frontend
npm run typecheck # TypeScript
./scripts/check-clean-env.sh # чистый клон: сборка Docker и health
Последний скрипт проверяет запуск контейнера; работу интерфейса и расчёт проверяют шаги раздела «Проверка основного сценария».
| Каталог | Содержимое |
|---|---|
data/incoming/, data/gfs-runs/ | Исходные CSV и архив прогнозов погоды |
artifacts/gfs-model/, artifacts/gfs-search/ | Модель, метрики, прогнозы и результаты отбора |
src/, backend/app/ | Агент, расчёт, API и хранение |
apps/web/, packages/ui/ | Интерфейс и компоненты |
reports/, docs/ | Аудит, отчёты, ТЗ и инструкции |
ТЗ и критерии · API · Подключение фронта · Журнал изменений.
Внешние материалы
Источники данных, библиотеки и лицензии
| Материал | Источник | Лицензия / условия |
|---|---|---|
| CSV двух турбин | Организаторы, ссылки в reports/data-audit.md | Предоставлены для кейса; отдельная открытая лицензия не указана |
| Операционные прогнозы NOAA GFS | NOAA GFS в AWS | Открытые данные NOAA; использовать с указанием источника. Сохранены точки, метаданные и хэши GRIB-полей |
| Архивные прогнозы GFS / ICON | Open-Meteo, NOAA / DWD | CC BY 4.0; исходные ответы сохранены, признаки преобразованы нами |
| ecCodes, чтение GRIB | ECMWF ecCodes | Apache-2.0 |
| Python | python.org | PSF |
| FastAPI | fastapi.tiangolo.com | MIT |
| Pydantic / settings | docs.pydantic.dev | MIT |
| NumPy, pandas, scikit-learn | NumPy, pandas, scikit-learn | BSD-3-Clause |
| Joblib, threadpoolctl | Joblib, threadpoolctl | BSD-3-Clause |
| HTTPX / Uvicorn | python-httpx.org, uvicorn.org | BSD-3-Clause |
| DuckDB | duckdb.org | MIT |
| PyArrow | Apache Arrow | Apache-2.0 |
| PyTorch, только обучение | PyTorch | BSD-3-Clause |
| OpenAI GPT-6 Astra, помощник сайта | Модель и API | Облачный сервис OpenAI; серверный API-ключ или локальный вход Codex через ChatGPT, обычная справка без подключения |
| NVIDIA Nemotron, необязательные пояснения NIM | Модель и API | NVIDIA Open Model License и Llama 3.3 Community License; hosted API — условия NVIDIA API |
| CatBoost, дополнительное обучение на Brev | CatBoost | Apache-2.0; в обязательные зависимости инференса не входит |
| uv | docs.astral.sh | MIT / Apache-2.0 |
| ESLint / Prettier | ESLint, Prettier | MIT |
| pytest / Ruff | pytest.org, docs.astral.sh/ruff | MIT |
| Three.js, просмотр 3D-турбины | Three.js | MIT; версия и лицензия закреплены в package-lock.json |
| next (frontend) | npm | MIT |
| react (frontend) | npm | MIT |
| shadcn (frontend) | npm | MIT |
| @base-ui/react (frontend) | npm | MIT |
| tailwindcss (frontend) | npm | MIT |
| typescript (frontend) | npm | Apache-2.0 |
| turbo (frontend) | npm | MIT |
| lucide-react (frontend) | npm | ISC |
| next-themes (frontend) | npm | MIT |
| tw-animate-css (frontend) | npm | MIT |
| class-variance-authority (frontend) | npm | Apache-2.0 |
| zod (frontend) | npm | MIT |
| cn (frontend) | npm | MIT |
Погодные данные: Weather data by Open-Meteo.com. Транзитивные зависимости backend закреплены в uv.lock.
3D-турбина создана командой в Blender; исходная сцена и генератор включены в репозиторий. Blender и MCP использовались при создании сцены и не требуются для запуска. Источники и ограничения иллюстрации — в документации frontend.
Заранее подготовленные компоненты
До хакатона подготовлены организационные материалы, служебные скрипты и локальное Python/CUDA-окружение. Модель, погодный модуль, агент, API и интерфейс для этого кейса разрабатывались в репозитории 23.09.2026. Для интерфейса использованы Next.js и компоненты shadcn/ui (Vega, Base UI); внешние материалы указаны выше.
Команда и AI-инструменты
| Участник | Учётная запись | Зона ответственности | Основные каталоги |
|---|---|---|---|
| Поляков Александр Викторович (капитан) | flyperry | Данные и аудит, погодный модуль NOAA, обучение и отбор моделей, агент, хранилище прогнозов, запуск и документация | src/, scripts/, artifacts/, data/, reports/ |
| Устименко Роман Викторович | Romario | HTTP API: маршруты, схемы, сервисы, очередь запусков, контракт и OpenAPI | backend/app/, docs/API.md |
| Ныгметов Нурсултан Жолдыбаевич | Carcadju | Дашборд Windcast: интерфейс, библиотека компонентов, 3D-визуализация турбины | apps/web/, packages/ui/ |
Использовались OpenAI Codex (данные, модель, агент, API, интеграция, документация),
Claude Code (DuckDB, аудит, обучение, запуск и интеграция) и Blender MCP
(создание 3D-сцены). Результаты работы и вклад участников отражены в истории
коммитов и CHANGELOG.md; авторов можно посмотреть через
git shortlog -sn HEAD.
Авторы коммитов
История коммитов
- 2026-09-23 17:56Обновление дашборда: добавлены новые функции синтетической симуляции и улучшена документация. Теперь дашборд поддерживает отображение значений с погодными сценариями и обледенением, а также обновлены Romario
- 2026-09-23 17:56README на английском и казахском рядом с основным; переключатель языковRomario
- 2026-09-23 17:53Служебные файлы, создаваемые next devflyperry
- 2026-09-23 17:44Подключена Astra и настройки OpenAIflyperry
- 2026-09-23 17:44Упрощён README и обновлено описание проектаflyperry
- 2026-09-23 17:44Исправлен фронт и проигрываниеflyperry
- 2026-09-23 17:43Адрес API задаётся на этапе сборки фронтаflyperry
- 2026-09-23 17:39Дашборд в Docker и раскрытие синтетической симуляцииflyperry
Все коммиты (70)
- 2026-09-23 17:39Вкладки «Обзор» и «Прогноз выработки» разведены по содержаниюRomario
- 2026-09-23 17:35FRONTEND.md: убрано описание отсутствующего автовоспроизведения периодаRomario
- 2026-09-23 17:32Панель помощника: отменено центрирующее смещение диалогаRomario
- 2026-09-23 17:30Помощник как боковая чат-панель; восстановлен дашборд, подключённый к APIRomario
- 2026-09-23 17:26fix: animate live icing simulations and add hourly playbackCarcadju
- 2026-09-23 17:26Docker: добавлена нативная библиотека ecCodesflyperry
- 2026-09-23 17:25Плавающая кнопка помощника с подсказкой «Нужна помощь?»Romario
- 2026-09-23 17:21Журнал изменений и документация интеграции: погода в ответе, ошибка 405Romario
- 2026-09-23 17:16Помощник в новом интерфейсе Windcastflyperry
- 2026-09-23 17:14Все команды в одном блоке README и рабочий make testflyperry
- 2026-09-23 17:12Сайдбар: квадратная иконка станции и подписи без сжатияRomario
- 2026-09-23 17:08README: раздел о нереализованных идеяхflyperry
- 2026-09-23 17:06Исправлено повторное обучениеflyperry
- 2026-09-23 17:05Merge remote-tracking branch 'origin/main'Romario
- 2026-09-23 17:05Merge design/dashboard-v2: новый интерфейс поверх реального APIRomario
- 2026-09-23 17:00README: порядок быстрого старта и пояснение терминовflyperry
- 2026-09-23 16:59fix: animate live icing simulations and add hourly playbackCarcadju
- 2026-09-23 16:47Подписи 3D-сцены: ветер и температура теперь приходят из прогнозаRomario
- 2026-09-23 16:47feat: simulate wind generation over custom periods and weather scenariosCarcadju
- 2026-09-23 16:46Тест health приведён к текущему ответу APIRomario
- 2026-09-23 16:43Заполнены ФИО участников в READMEflyperry
- 2026-09-23 16:41Мастер первоначальной настройки: ./run.sh setupflyperry
- 2026-09-23 16:29Обучение одной командой с автоматическим выбором NVIDIAflyperry
- 2026-09-23 16:27Исправлен запуск проектаflyperry
- 2026-09-23 16:26Ветер и температура в точках прогноза: API, CSV и дашбордRomario
- 2026-09-23 16:24docs: restore README before appearance updateCarcadju
- 2026-09-23 16:23feat: add dark theme and accessible low-vision modeCarcadju
- 2026-09-23 16:18README: пример читаемого вывода рядом с машинным CSVflyperry
- 2026-09-23 16:18Читаемый вывод прогноза и быстрая диагностика занятого портаflyperry
- 2026-09-23 16:13Понятная формулировка в меню запускаflyperry
- 2026-09-23 16:12Уточнены цифры в документацииflyperry
- 2026-09-23 16:11Меню запуска и проверка чистой сборки после перехода на NOAAflyperry
- 2026-09-23 16:06Обновлён README и документация по API, добавлены маршруты для получения истории запусков агента. Подключён реальный backend к дашборду, улучшена обработка данных и интерфейс. Исправлены ошибки в отобрRomario
- 2026-09-23 15:59feat: add dashboard v2 with synchronized insights and RU EN KK localesCarcadju
- 2026-09-23 15:59README: ценность в цифрах, пример вывода и чеклист проверкиflyperry
- 2026-09-23 15:32Упрощён READMEflyperry
- 2026-09-23 15:22feat: connect Blender turbine scenes to dashboard interactionsCarcadju
- 2026-09-23 15:18Подключена новая модельflyperry
- 2026-09-23 15:18Обучена модель NOAAflyperry
- 2026-09-23 15:08Стенд для интеграции фронта: run.sh all, гайд и живые примеры APIflyperry
- 2026-09-23 15:00Журнал: запуск одной командой и починка целостности CSVflyperry
- 2026-09-23 15:00Исходные CSV хранятся без нормализации переводов строкflyperry
- 2026-09-23 14:59Запуск одной командой: run.sh и быстрый старт в READMEflyperry
- 2026-09-23 14:58Merge remote-tracking branch 'origin/main'flyperry
- 2026-09-23 14:58Сохранены результаты обучения моделейflyperry
- 2026-09-23 14:56Подключён агент и архив NOAAflyperry
- 2026-09-23 14:50Обновлены разделы AGENTS.md, CHANGELOG.md и README.md для отражения изменений в контракте v0.3. Включены уточнения по обработке данных, проверкам выполнения и формату API. Реальный агент всё ещё требуRomario
- 2026-09-23 14:47Merge branch 'main' of github.com:BAITC-Hacks/hack-575875e7-rentboxflyperry
- 2026-09-23 14:46Поиск моделей на RTX 5090: 984 кандидата, плато подтвержденоflyperry
- 2026-09-23 14:46Обновление версии API до 0.3, добавление поддержки новых погодных источников и улучшение обработки данных. Обновлены схемы и документация, включая изменения в структуре ответов и форматах CSV. ИсправлRomario
- 2026-09-23 14:35Трассировка требований кейса и эволюционный поиск моделейflyperry
- 2026-09-23 14:32Объединены модель, сервер и интерфейсflyperry
- 2026-09-23 14:30Улучшена модель прогнозаflyperry
- 2026-09-23 14:20feat: add Windcast dashboard with mock forecasting dataCarcadju
- 2026-09-23 14:16first commitRomario
- 2026-09-23 14:05Обучена модель прогноза ВЭСflyperry
- 2026-09-23 14:05Добавлены архивы погоды и подготовка данныхflyperry
- 2026-09-23 14:02Бэклог отраслевых сценариев и находки по простоям турбинflyperry
- 2026-09-23 13:31Добавлены план работы и описание APIflyperry
- 2026-09-23 13:29Турбина определяется по имени файла, а не по порядку в каталогеflyperry
- 2026-09-23 13:24Хранилище истории прогнозов на DuckDB и журнал измененийflyperry
- 2026-09-23 13:18Добавлены данные ВЭС и отчёт проверкиflyperry
Структура репозитория (1847 файлов)
.dockerignore .env.example .eslintrc.js .gitattributes .gitignore .npmrc .prettierignore .prettierrc AGENTS.md CHANGELOG.md CLAUDE.md Makefile README.en.md README.md START-HERE.md apps/web/.env.example apps/web/AGENTS.md apps/web/CLAUDE.md apps/web/Dockerfile apps/web/app/appearance.css apps/web/app/assistant-launcher.css apps/web/app/dashboard-v2.css apps/web/app/dashboard.css apps/web/app/favicon.ico apps/web/app/icon.svg apps/web/app/layout.tsx apps/web/app/page.tsx apps/web/app/platform-helper.css apps/web/app/simulation.css apps/web/components.json apps/web/components/.gitkeep apps/web/components/appearance-provider.tsx apps/web/components/assistant-launcher.tsx apps/web/components/forecast-focus.tsx apps/web/components/locale-provider.tsx apps/web/components/motion-preference.ts apps/web/components/platform-helper.tsx apps/web/components/simulation-controls.tsx apps/web/components/theme-provider.tsx apps/web/components/turbine-hero.tsx apps/web/components/turbine-stage.tsx apps/web/components/wind-dashboard.tsx apps/web/eslint.config.js apps/web/hooks/.gitkeep apps/web/lib/.gitkeep apps/web/lib/forecast-api.ts apps/web/lib/forecast-data.ts apps/web/lib/forecast-insights.ts apps/web/lib/helper-api.ts apps/web/lib/translations.ts apps/web/lib/turbine-renderer.ts apps/web/lib/turbine-scene.ts apps/web/lib/use-forecast-dashboard.ts apps/web/lib/wind-simulation.ts apps/web/next.config.ts apps/web/package.json apps/web/postcss.config.mjs apps/web/public/models/windcast-turbine.glb apps/web/public/models/windcast-turbine.png apps/web/tsconfig.json artifacts/ensemble/february_replay.csv artifacts/ensemble/january_predictions.csv artifacts/ensemble/metrics.json artifacts/ensemble/model.joblib artifacts/ensemble/report.md artifacts/ensemble/validation_model.joblib artifacts/expanded/february_replay.csv artifacts/expanded/january_predictions.csv artifacts/expanded/metrics.json artifacts/expanded/model.joblib artifacts/expanded/report.md artifacts/expanded/validation_model.joblib artifacts/forecast/february_replay.csv artifacts/forecast/january_predictions.csv artifacts/forecast/metrics.json artifacts/forecast/model.joblib artifacts/forecast/report.md artifacts/forecast/validation_model.joblib artifacts/gfs-model/baselines.json artifacts/gfs-model/february_replay.csv artifacts/gfs-model/first-forecast.csv artifacts/gfs-model/january_predictions.csv artifacts/gfs-model/metrics.json artifacts/gfs-model/model.joblib artifacts/gfs-model/report.md artifacts/gfs-model/validation_model.joblib artifacts/gfs-search/protocol.json artifacts/gfs-search/selection.json artifacts/power_curve/january_diagnostic.csv artifacts/power_curve/metrics.json artifacts/power_curve/model.joblib artifacts/rtx5090-local/best.joblib artifacts/rtx5090-local/ensemble/metrics.json artifacts/rtx5090-local/ensemble/model.joblib artifacts/rtx5090-local/generations/champion.joblib artifacts/rtx5090-local/generations/champion.json artifacts/rtx5090-local/generations/history.json artifacts/rtx5090-local/generations/leaderboard.csv artifacts/rtx5090-local/leaderboard.csv artifacts/rtx5090-local/run.json artifacts/rtx5090-local/summary.json artifacts/search/cloud-environment.json artifacts/search/expanded-selection.json artifacts/search/protocol.json artifacts/search/selection.json artifacts/search/winter-shortlist.json artifacts/search/winter-validation.json assets/blender/windcast-turbine.blend backend/.dockerignore backend/.python-version backend/Dockerfile backend/README.en.md backend/README.kk.md backend/README.md backend/__init__.py backend/app/__init__.py backend/app/api/__init__.py backend/app/api/deps.py backend/app/api/router.py backend/app/api/routes/__init__.py backend/app/api/routes/data.py backend/app/api/routes/forecasts.py backend/app/api/routes/health.py backend/app/api/routes/helper.py backend/app/api/routes/nvidia.py backend/app/api/routes/turbines.py backend/app/core/__init__.py backend/app/core/config.py backend/app/core/errors.py backend/app/integrations/__init__.py backend/app/integrations/forecasting.py backend/app/integrations/storage.py backend/app/main.py backend/app/prompts/helper-knowledge.json backend/app/prompts/helper-system.md backend/app/schemas/__init__.py backend/app/schemas/common.py backend/app/schemas/data.py backend/app/schemas/forecast.py backend/app/schemas/helper.py backend/app/schemas/turbine.py backend/app/schemas/weather.py backend/app/services/__init__.py backend/app/services/data.py backend/app/services/forecasts.py backend/app/services/helper.py backend/app/services/helper_codex.py backend/app/services/turbines.py backend/config/turbines.json backend/openapi.json backend/pyproject.toml backend/scripts/export_openapi.py backend/tests/conftest.py backend/tests/test_api.py backend/tests/test_forecast_gateway.py backend/tests/test_nvidia_api.py backend/tests/test_training_workers.py backend/uv.lock compose.yml data/gfs-runs/2024-03-01.csv data/gfs-runs/2024-03-01.meta.json data/gfs-runs/2024-03-02.csv data/gfs-runs/2024-03-02.meta.json data/gfs-runs/2024-03-03.csv data/gfs-runs/2024-03-03.meta.json data/gfs-runs/2024-03-04.csv data/gfs-runs/2024-03-04.meta.json data/gfs-runs/2024-03-05.csv data/gfs-runs/2024-03-05.meta.json data/gfs-runs/2024-03-06.csv data/gfs-runs/2024-03-06.meta.json data/gfs-runs/2024-03-07.csv data/gfs-runs/2024-03-07.meta.json data/gfs-runs/2024-03-08.csv data/gfs-runs/2024-03-08.meta.json data/gfs-runs/2024-03-09.csv data/gfs-runs/2024-03-09.meta.json data/gfs-runs/2024-03-10.csv data/gfs-runs/2024-03-10.meta.json data/gfs-runs/2024-03-11.csv data/gfs-runs/2024-03-11.meta.json data/gfs-runs/2024-03-12.csv data/gfs-runs/2024-03-12.meta.json data/gfs-runs/2024-03-13.csv data/gfs-runs/2024-03-13.meta.json data/gfs-runs/2024-03-14.csv data/gfs-runs/2024-03-14.meta.json data/gfs-runs/2024-03-15.csv data/gfs-runs/2024-03-15.meta.json data/gfs-runs/2024-03-16.csv data/gfs-runs/2024-03-16.meta.json data/gfs-runs/2024-03-17.csv data/gfs-runs/2024-03-17.meta.json data/gfs-runs/2024-03-18.csv data/gfs-runs/2024-03-18.meta.json data/gfs-runs/2024-03-19.csv data/gfs-runs/2024-03-19.meta.json data/gfs-runs/2024-03-20.csv data/gfs-runs/2024-03-20.meta.json data/gfs-runs/2024-03-21.csv data/gfs-runs/2024-03-21.meta.json data/gfs-runs/2024-03-22.csv data/gfs-runs/2024-03-22.meta.json data/gfs-runs/2024-03-23.csv data/gfs-runs/2024-03-23.meta.json data/gfs-runs/2024-03-24.csv data/gfs-runs/2024-03-24.meta.json data/gfs-runs/2024-03-25.csv data/gfs-runs/2024-03-25.meta.json data/gfs-runs/2024-03-26.csv data/gfs-runs/2024-03-26.meta.json data/gfs-runs/2024-03-27.csv data/gfs-runs/2024-03-27.meta.json data/gfs-runs/2024-03-28.csv data/gfs-runs/2024-03-28.meta.json data/gfs-runs/2024-03-29.csv data/gfs-runs/2024-03-29.meta.json data/gfs-runs/2024-03-30.csv data/gfs-runs/2024-03-30.meta.json data/gfs-runs/2024-03-31.csv data/gfs-runs/2024-03-31.meta.json data/gfs-runs/2024-04-01.csv data/gfs-runs/2024-04-01.meta.json data/gfs-runs/2024-04-02.csv data/gfs-runs/2024-04-02.meta.json data/gfs-runs/2024-04-03.csv data/gfs-runs/2024-04-03.meta.json data/gfs-runs/2024-04-04.csv data/gfs-runs/2024-04-04.meta.json data/gfs-runs/2024-04-05.csv data/gfs-runs/2024-04-05.meta.json data/gfs-runs/2024-04-06.csv data/gfs-runs/2024-04-06.meta.json data/gfs-runs/2024-04-07.csv data/gfs-runs/2024-04-07.meta.json data/gfs-runs/2024-04-08.csv data/gfs-runs/2024-04-08.meta.json data/gfs-runs/2024-04-09.csv data/gfs-runs/2024-04-09.meta.json data/gfs-runs/2024-04-10.csv data/gfs-runs/2024-04-10.meta.json data/gfs-runs/2024-04-11.csv data/gfs-runs/2024-04-11.meta.json data/gfs-runs/2024-04-12.csv data/gfs-runs/2024-04-12.meta.json data/gfs-runs/2024-04-13.csv data/gfs-runs/2024-04-13.meta.json data/gfs-runs/2024-04-14.csv data/gfs-runs/2024-04-14.meta.json data/gfs-runs/2024-04-15.csv data/gfs-runs/2024-04-15.meta.json data/gfs-runs/2024-04-16.csv data/gfs-runs/2024-04-16.meta.json data/gfs-runs/2024-04-17.csv data/gfs-runs/2024-04-17.meta.json data/gfs-runs/2024-04-18.csv data/gfs-runs/2024-04-18.meta.json data/gfs-runs/2024-04-19.csv data/gfs-runs/2024-04-19.meta.json data/gfs-runs/2024-04-20.csv data/gfs-runs/2024-04-20.meta.json data/gfs-runs/2024-04-21.csv data/gfs-runs/2024-04-21.meta.json data/gfs-runs/2024-04-22.csv data/gfs-runs/2024-04-22.meta.json data/gfs-runs/2024-04-23.csv data/gfs-runs/2024-04-23.meta.json data/gfs-runs/2024-04-24.csv data/gfs-runs/2024-04-24.meta.json data/gfs-runs/2024-04-25.csv data/gfs-runs/2024-04-25.meta.json data/gfs-runs/2024-04-26.csv data/gfs-runs/2024-04-26.meta.json data/gfs-runs/2024-04-27.csv data/gfs-runs/2024-04-27.meta.json data/gfs-runs/2024-04-28.csv data/gfs-runs/2024-04-28.meta.json data/gfs-runs/2024-04-29.csv data/gfs-runs/2024-04-29.meta.json data/gfs-runs/2024-04-30.csv data/gfs-runs/2024-04-30.meta.json data/gfs-runs/2024-05-01.csv data/gfs-runs/2024-05-01.meta.json data/gfs-runs/2024-05-02.csv data/gfs-runs/2024-05-02.meta.json data/gfs-runs/2024-05-03.csv data/gfs-runs/2024-05-03.meta.json data/gfs-runs/2024-05-04.csv data/gfs-runs/2024-05-04.meta.json data/gfs-runs/2024-05-05.csv data/gfs-runs/2024-05-05.meta.json data/gfs-runs/2024-05-06.csv data/gfs-runs/2024-05-06.meta.json data/gfs-runs/2024-05-07.csv data/gfs-runs/2024-05-07.meta.json data/gfs-runs/2024-05-08.csv data/gfs-runs/2024-05-08.meta.json data/gfs-runs/2024-05-09.csv data/gfs-runs/2024-05-09.meta.json data/gfs-runs/2024-05-10.csv data/gfs-runs/2024-05-10.meta.json data/gfs-runs/2024-05-11.csv data/gfs-runs/2024-05-11.meta.json data/gfs-runs/2024-05-12.csv data/gfs-runs/2024-05-12.meta.json data/gfs-runs/2024-05-13.csv data/gfs-runs/2024-05-13.meta.json data/gfs-runs/2024-05-14.csv data/gfs-runs/2024-05-14.meta.json data/gfs-runs/2024-05-15.csv data/gfs-runs/2024-05-15.meta.json data/gfs-runs/2024-05-16.csv data/gfs-runs/2024-05-16.meta.json data/gfs-runs/2024-05-17.csv data/gfs-runs/2024-05-17.meta.json data/gfs-runs/2024-05-18.csv data/gfs-runs/2024-05-18.meta.json data/gfs-runs/2024-05-19.csv data/gfs-runs/2024-05-19.meta.json data/gfs-runs/2024-05-20.csv data/gfs-runs/2024-05-20.meta.json data/gfs-runs/2024-05-21.csv data/gfs-runs/2024-05-21.meta.json data/gfs-runs/2024-05-22.csv data/gfs-runs/2024-05-22.meta.json data/gfs-runs/2024-05-23.csv data/gfs-runs/2024-05-23.meta.json data/gfs-runs/2024-05-24.csv data/gfs-runs/2024-05-24.meta.json data/gfs-runs/2024-05-25.csv data/gfs-runs/2024-05-25.meta.json data/gfs-runs/2024-05-26.csv data/gfs-runs/2024-05-26.meta.json data/gfs-runs/2024-05-27.csv data/gfs-runs/2024-05-27.meta.json data/gfs-runs/2024-05-28.csv data/gfs-runs/2024-05-28.meta.json data/gfs-runs/2024-05-29.csv data/gfs-runs/2024-05-29.meta.json data/gfs-runs/2024-05-30.csv data/gfs-runs/2024-05-30.meta.json data/gfs-runs/2024-05-31.csv data/gfs-runs/2024-05-31.meta.json data/gfs-runs/2024-06-01.csv data/gfs-runs/2024-06-01.meta.json data/gfs-runs/2024-06-02.csv data/gfs-runs/2024-06-02.meta.json data/gfs-runs/2024-06-03.csv data/gfs-runs/2024-06-03.meta.json data/gfs-runs/2024-06-04.csv data/gfs-runs/2024-06-04.meta.json data/gfs-runs/2024-06-05.csv data/gfs-runs/2024-06-05.meta.json data/gfs-runs/2024-06-06.csv data/gfs-runs/2024-06-06.meta.json data/gfs-runs/2024-06-07.csv data/gfs-runs/2024-06-07.meta.json data/gfs-runs/2024-06-08.csv data/gfs-runs/2024-06-08.meta.json data/gfs-runs/2024-06-09.csv data/gfs-runs/2024-06-09.meta.json data/gfs-runs/2024-06-10.csv data/gfs-runs/2024-06-10.meta.json data/gfs-runs/2024-06-11.csv data/gfs-runs/2024-06-11.meta.json data/gfs-runs/2024-06-12.csv data/gfs-runs/2024-06-12.meta.json data/gfs-runs/2024-06-13.csv data/gfs-runs/2024-06-13.meta.json data/gfs-runs/2024-06-14.csv data/gfs-runs/2024-06-14.meta.json data/gfs-runs/2024-06-15.csv data/gfs-runs/2024-06-15.meta.json data/gfs-runs/2024-06-16.csv data/gfs-runs/2024-06-16.meta.json data/gfs-runs/2024-06-17.csv data/gfs-runs/2024-06-17.meta.json data/gfs-runs/2024-06-18.csv data/gfs-runs/2024-06-18.meta.json data/gfs-runs/2024-06-19.csv data/gfs-runs/2024-06-19.meta.json data/gfs-runs/2024-06-20.csv data/gfs-runs/2024-06-20.meta.json data/gfs-runs/2024-06-21.csv data/gfs-runs/2024-06-21.meta.json data/gfs-runs/2024-06-22.csv data/gfs-runs/2024-06-22.meta.json data/gfs-runs/2024-06-23.csv data/gfs-runs/2024-06-23.meta.json data/gfs-runs/2024-06-24.csv data/gfs-runs/2024-06-24.meta.json data/gfs-runs/2024-06-25.csv data/gfs-runs/2024-06-25.meta.json data/gfs-runs/2024-06-26.csv data/gfs-runs/2024-06-26.meta.json data/gfs-runs/2024-06-27.csv data/gfs-runs/2024-06-27.meta.json data/gfs-runs/2024-06-28.csv data/gfs-runs/2024-06-28.meta.json data/gfs-runs/2024-06-29.csv data/gfs-runs/2024-06-29.meta.json data/gfs-runs/2024-06-30.csv data/gfs-runs/2024-06-30.meta.json data/gfs-runs/2024-07-01.csv data/gfs-runs/2024-07-01.meta.json data/gfs-runs/2024-07-02.csv data/gfs-runs/2024-07-02.meta.json data/gfs-runs/2024-07-03.csv data/gfs-runs/2024-07-03.meta.json data/gfs-runs/2024-07-04.csv data/gfs-runs/2024-07-04.meta.json data/gfs-runs/2024-07-05.csv data/gfs-runs/2024-07-05.meta.json data/gfs-runs/2024-07-06.csv data/gfs-runs/2024-07-06.meta.json data/gfs-runs/2024-07-07.csv data/gfs-runs/2024-07-07.meta.json data/gfs-runs/2024-07-08.csv data/gfs-runs/2024-07-08.meta.json data/gfs-runs/2024-07-09.csv data/gfs-runs/2024-07-09.meta.json data/gfs-runs/2024-07-10.csv data/gfs-runs/2024-07-10.meta.json data/gfs-runs/2024-07-11.csv data/gfs-runs/2024-07-11.meta.json data/gfs-runs/2024-07-12.csv data/gfs-runs/2024-07-12.meta.json data/gfs-runs/2024-07-13.csv data/gfs-runs/2024-07-13.meta.json data/gfs-runs/2024-07-14.csv data/gfs-runs/2024-07-14.meta.json data/gfs-runs/2024-07-15.csv data/gfs-runs/2024-07-15.meta.json data/gfs-runs/2024-07-16.csv data/gfs-runs/2024-07-16.meta.json data/gfs-runs/2024-07-17.csv data/gfs-runs/2024-07-17.meta.json data/gfs-runs/2024-07-18.csv data/gfs-runs/2024-07-18.meta.json data/gfs-runs/2024-07-19.csv data/gfs-runs/2024-07-19.meta.json data/gfs-runs/2024-07-20.csv data/gfs-runs/2024-07-20.meta.json data/gfs-runs/2024-07-21.csv data/gfs-runs/2024-07-21.meta.json data/gfs-runs/2024-07-22.csv data/gfs-runs/2024-07-22.meta.json data/gfs-runs/2024-07-23.csv data/gfs-runs/2024-07-23.meta.json data/gfs-runs/2024-07-24.csv data/gfs-runs/2024-07-24.meta.json data/gfs-runs/2024-07-25.csv data/gfs-runs/2024-07-25.meta.json data/gfs-runs/2024-07-26.csv data/gfs-runs/2024-07-26.meta.json data/gfs-runs/2024-07-27.csv data/gfs-runs/2024-07-27.meta.json data/gfs-runs/2024-07-28.csv data/gfs-runs/2024-07-28.meta.json data/gfs-runs/2024-07-29.csv data/gfs-runs/2024-07-29.meta.json data/gfs-runs/2024-07-30.csv data/gfs-runs/2024-07-30.meta.json data/gfs-runs/2024-07-31.csv data/gfs-runs/2024-07-31.meta.json data/gfs-runs/2024-08-01.csv data/gfs-runs/2024-08-01.meta.json data/gfs-runs/2024-08-02.csv data/gfs-runs/2024-08-02.meta.json data/gfs-runs/2024-08-03.csv data/gfs-runs/2024-08-03.meta.json data/gfs-runs/2024-08-04.csv data/gfs-runs/2024-08-04.meta.json data/gfs-runs/2024-08-05.csv data/gfs-runs/2024-08-05.meta.json data/gfs-runs/2024-08-06.csv data/gfs-runs/2024-08-06.meta.json data/gfs-runs/2024-08-07.csv data/gfs-runs/2024-08-07.meta.json data/gfs-runs/2024-08-08.csv data/gfs-runs/2024-08-08.meta.json data/gfs-runs/2024-08-09.csv data/gfs-runs/2024-08-09.meta.json data/gfs-runs/2024-08-10.csv data/gfs-runs/2024-08-10.meta.json data/gfs-runs/2024-08-11.csv data/gfs-runs/2024-08-11.meta.json data/gfs-runs/2024-08-12.csv data/gfs-runs/2024-08-12.meta.json data/gfs-runs/2024-08-13.csv data/gfs-runs/2024-08-13.meta.json data/gfs-runs/2024-08-14.csv data/gfs-runs/2024-08-14.meta.json data/gfs-runs/2024-08-15.csv data/gfs-runs/2024-08-15.meta.json data/gfs-runs/2024-08-16.csv data/gfs-runs/2024-08-16.meta.json data/gfs-runs/2024-08-17.csv data/gfs-runs/2024-08-17.meta.json data/gfs-runs/2024-08-18.csv data/gfs-runs/2024-08-18.meta.json data/gfs-runs/2024-08-19.csv data/gfs-runs/2024-08-19.meta.json data/gfs-runs/2024-08-20.csv data/gfs-runs/2024-08-20.meta.json data/gfs-runs/2024-08-21.csv data/gfs-runs/2024-08-21.meta.json data/gfs-runs/2024-08-22.csv data/gfs-runs/2024-08-22.meta.json data/gfs-runs/2024-08-23.csv data/gfs-runs/2024-08-23.meta.json data/gfs-runs/2024-08-24.csv data/gfs-runs/2024-08-24.meta.json data/gfs-runs/2024-08-25.csv data/gfs-runs/2024-08-25.meta.json data/gfs-runs/2024-08-26.csv data/gfs-runs/2024-08-26.meta.json data/gfs-runs/2024-08-27.csv data/gfs-runs/2024-08-27.meta.json data/gfs-runs/2024-08-28.csv data/gfs-runs/2024-08-28.meta.json data/gfs-runs/2024-08-29.csv data/gfs-runs/2024-08-29.meta.json data/gfs-runs/2024-08-30.csv data/gfs-runs/2024-08-30.meta.json data/gfs-runs/2024-08-31.csv data/gfs-runs/2024-08-31.meta.json data/gfs-runs/2024-09-01.csv data/gfs-runs/2024-09-01.meta.json data/gfs-runs/2024-09-02.csv data/gfs-runs/2024-09-02.meta.json data/gfs-runs/2024-09-03.csv data/gfs-runs/2024-09-03.meta.json data/gfs-runs/2024-09-04.csv data/gfs-runs/2024-09-04.meta.json data/gfs-runs/2024-09-05.csv data/gfs-runs/2024-09-05.meta.json data/gfs-runs/2024-09-06.csv data/gfs-runs/2024-09-06.meta.json data/gfs-runs/2024-09-07.csv data/gfs-runs/2024-09-07.meta.json data/gfs-runs/2024-09-08.csv data/gfs-runs/2024-09-08.meta.json data/gfs-runs/2024-09-09.csv data/gfs-runs/2024-09-09.meta.json data/gfs-runs/2024-09-10.csv data/gfs-runs/2024-09-10.meta.json data/gfs-runs/2024-09-11.csv data/gfs-runs/2024-09-11.meta.json data/gfs-runs/2024-09-12.csv data/gfs-runs/2024-09-12.meta.json data/gfs-runs/2024-09-13.csv data/gfs-runs/2024-09-13.meta.json data/gfs-runs/2024-09-14.csv data/gfs-runs/2024-09-14.meta.json data/gfs-runs/2024-09-15.csv data/gfs-runs/2024-09-15.meta.json data/gfs-runs/2024-09-16.csv data/gfs-runs/2024-09-16.meta.json data/gfs-runs/2024-09-17.csv data/gfs-runs/2024-09-17.meta.json data/gfs-runs/2024-09-18.csv data/gfs-runs/2024-09-18.meta.json data/gfs-runs/2024-09-19.csv data/gfs-runs/2024-09-19.meta.json data/gfs-runs/2024-09-20.csv data/gfs-runs/2024-09-20.meta.json data/gfs-runs/2024-09-21.csv data/gfs-runs/2024-09-21.meta.json data/gfs-runs/2024-09-22.csv data/gfs-runs/2024-09-22.meta.json data/gfs-runs/2024-09-23.csv data/gfs-runs/2024-09-23.meta.json data/gfs-runs/2024-09-24.csv data/gfs-runs/2024-09-24.meta.json data/gfs-runs/2024-09-25.csv data/gfs-runs/2024-09-25.meta.json data/gfs-runs/2024-09-26.csv data/gfs-runs/2024-09-26.meta.json data/gfs-runs/2024-09-27.csv data/gfs-runs/2024-09-27.meta.json data/gfs-runs/2024-09-28.csv data/gfs-runs/2024-09-28.meta.json data/gfs-runs/2024-09-29.csv data/gfs-runs/2024-09-29.meta.json data/gfs-runs/2024-09-30.csv data/gfs-runs/2024-09-30.meta.json data/gfs-runs/2024-10-01.csv data/gfs-runs/2024-10-01.meta.json data/gfs-runs/2024-10-02.csv data/gfs-runs/2024-10-02.meta.json data/gfs-runs/2024-10-03.csv data/gfs-runs/2024-10-03.meta.json data/gfs-runs/2024-10-04.csv data/gfs-runs/2024-10-04.meta.json data/gfs-runs/2024-10-05.csv data/gfs-runs/2024-10-05.meta.json data/gfs-runs/2024-10-06.csv data/gfs-runs/2024-10-06.meta.json data/gfs-runs/2024-10-07.csv data/gfs-runs/2024-10-07.meta.json data/gfs-runs/2024-10-08.csv data/gfs-runs/2024-10-08.meta.json data/gfs-runs/2024-10-09.csv data/gfs-runs/2024-10-09.meta.json data/gfs-runs/2024-10-10.csv data/gfs-runs/2024-10-10.meta.json data/gfs-runs/2024-10-11.csv data/gfs-runs/2024-10-11.meta.json data/gfs-runs/2024-10-12.csv data/gfs-runs/2024-10-12.meta.json data/gfs-runs/2024-10-13.csv data/gfs-runs/2024-10-13.meta.json data/gfs-runs/2024-10-14.csv data/gfs-runs/2024-10-14.meta.json data/gfs-runs/2024-10-15.csv data/gfs-runs/2024-10-15.meta.json data/gfs-runs/2024-10-16.csv data/gfs-runs/2024-10-16.meta.json data/gfs-runs/2024-10-17.csv data/gfs-runs/2024-10-17.meta.json data/gfs-runs/2024-10-18.csv data/gfs-runs/2024-10-18.meta.json data/gfs-runs/2024-10-19.csv data/gfs-runs/2024-10-19.meta.json data/gfs-runs/2024-10-20.csv data/gfs-runs/2024-10-20.meta.json data/gfs-runs/2024-10-21.csv data/gfs-runs/2024-10-21.meta.json data/gfs-runs/2024-10-22.csv data/gfs-runs/2024-10-22.meta.json data/gfs-runs/2024-10-23.csv data/gfs-runs/2024-10-23.meta.json data/gfs-runs/2024-10-24.csv data/gfs-runs/2024-10-24.meta.json data/gfs-runs/2024-10-25.csv data/gfs-runs/2024-10-25.meta.json data/gfs-runs/2024-10-26.csv data/gfs-runs/2024-10-26.meta.json data/gfs-runs/2024-10-27.csv data/gfs-runs/2024-10-27.meta.json data/gfs-runs/2024-10-28.csv data/gfs-runs/2024-10-28.meta.json data/gfs-runs/2024-10-29.csv data/gfs-runs/2024-10-29.meta.json data/gfs-runs/2024-10-30.csv data/gfs-runs/2024-10-30.meta.json data/gfs-runs/2024-10-31.csv data/gfs-runs/2024-10-31.meta.json data/gfs-runs/2024-11-01.csv data/gfs-runs/2024-11-01.meta.json data/gfs-runs/2024-11-02.csv data/gfs-runs/2024-11-02.meta.json data/gfs-runs/2024-11-03.csv data/gfs-runs/2024-11-03.meta.json data/gfs-runs/2024-11-04.csv data/gfs-runs/2024-11-04.meta.json data/gfs-runs/2024-11-05.csv data/gfs-runs/2024-11-05.meta.json data/gfs-runs/2024-11-06.csv data/gfs-runs/2024-11-06.meta.json data/gfs-runs/2024-11-07.csv data/gfs-runs/2024-11-07.meta.json data/gfs-runs/2024-11-08.csv data/gfs-runs/2024-11-08.meta.json data/gfs-runs/2024-11-09.csv data/gfs-runs/2024-11-09.meta.json data/gfs-runs/2024-11-10.csv data/gfs-runs/2024-11-10.meta.json data/gfs-runs/2024-11-11.csv data/gfs-runs/2024-11-11.meta.json data/gfs-runs/2024-11-12.csv data/gfs-runs/2024-11-12.meta.json data/gfs-runs/2024-11-13.csv data/gfs-runs/2024-11-13.meta.json data/gfs-runs/2024-11-14.csv data/gfs-runs/2024-11-14.meta.json data/gfs-runs/2024-11-15.csv data/gfs-runs/2024-11-15.meta.json data/gfs-runs/2024-11-16.csv data/gfs-runs/2024-11-16.meta.json data/gfs-runs/2024-11-17.csv data/gfs-runs/2024-11-17.meta.json data/gfs-runs/2024-11-18.csv data/gfs-runs/2024-11-18.meta.json data/gfs-runs/2024-11-19.csv data/gfs-runs/2024-11-19.meta.json data/gfs-runs/2024-11-20.csv data/gfs-runs/2024-11-20.meta.json data/gfs-runs/2024-11-21.csv data/gfs-runs/2024-11-21.meta.json data/gfs-runs/2024-11-22.csv data/gfs-runs/2024-11-22.meta.json data/gfs-runs/2024-11-23.csv data/gfs-runs/2024-11-23.meta.json data/gfs-runs/2024-11-24.csv data/gfs-runs/2024-11-24.meta.json data/gfs-runs/2024-11-25.csv data/gfs-runs/2024-11-25.meta.json data/gfs-runs/2024-11-26.csv data/gfs-runs/2024-11-26.meta.json data/gfs-runs/2024-11-27.csv data/gfs-runs/2024-11-27.meta.json data/gfs-runs/2024-11-28.csv data/gfs-runs/2024-11-28.meta.json data/gfs-runs/2024-11-29.csv data/gfs-runs/2024-11-29.meta.json data/gfs-runs/2024-11-30.csv data/gfs-runs/2024-11-30.meta.json data/gfs-runs/2024-12-01.csv data/gfs-runs/2024-12-01.meta.json data/gfs-runs/2024-12-02.csv data/gfs-runs/2024-12-02.meta.json data/gfs-runs/2024-12-03.csv data/gfs-runs/2024-12-03.meta.json data/gfs-runs/2024-12-04.csv data/gfs-runs/2024-12-04.meta.json data/gfs-runs/2024-12-05.csv data/gfs-runs/2024-12-05.meta.json data/gfs-runs/2024-12-06.csv data/gfs-runs/2024-12-06.meta.json data/gfs-runs/2024-12-07.csv data/gfs-runs/2024-12-07.meta.json data/gfs-runs/2024-12-08.csv data/gfs-runs/2024-12-08.meta.json data/gfs-runs/2024-12-09.csv data/gfs-runs/2024-12-09.meta.json data/gfs-runs/2024-12-10.csv data/gfs-runs/2024-12-10.meta.json data/gfs-runs/2024-12-11.csv data/gfs-runs/2024-12-11.meta.json data/gfs-runs/2024-12-12.csv data/gfs-runs/2024-12-12.meta.json data/gfs-runs/2024-12-13.csv data/gfs-runs/2024-12-13.meta.json data/gfs-runs/2024-12-14.csv data/gfs-runs/2024-12-14.meta.json data/gfs-runs/2024-12-15.csv data/gfs-runs/2024-12-15.meta.json data/gfs-runs/2024-12-16.csv data/gfs-runs/2024-12-16.meta.json data/gfs-runs/2024-12-17.csv data/gfs-runs/2024-12-17.meta.json data/gfs-runs/2024-12-18.csv data/gfs-runs/2024-12-18.meta.json data/gfs-runs/2024-12-19.csv data/gfs-runs/2024-12-19.meta.json data/gfs-runs/2024-12-20.csv data/gfs-runs/2024-12-20.meta.json data/gfs-runs/2024-12-21.csv data/gfs-runs/2024-12-21.meta.json data/gfs-runs/2024-12-22.csv data/gfs-runs/2024-12-22.meta.json data/gfs-runs/2024-12-23.csv data/gfs-runs/2024-12-23.meta.json data/gfs-runs/2024-12-24.csv data/gfs-runs/2024-12-24.meta.json data/gfs-runs/2024-12-25.csv data/gfs-runs/2024-12-25.meta.json data/gfs-runs/2024-12-26.csv data/gfs-runs/2024-12-26.meta.json data/gfs-runs/2024-12-27.csv data/gfs-runs/2024-12-27.meta.json data/gfs-runs/2024-12-28.csv data/gfs-runs/2024-12-28.meta.json data/gfs-runs/2024-12-29.csv data/gfs-runs/2024-12-29.meta.json data/gfs-runs/2024-12-30.csv data/gfs-runs/2024-12-30.meta.json data/gfs-runs/2024-12-31.csv data/gfs-runs/2024-12-31.meta.json data/gfs-runs/2025-01-01.csv data/gfs-runs/2025-01-01.meta.json data/gfs-runs/2025-01-02.csv data/gfs-runs/2025-01-02.meta.json data/gfs-runs/2025-01-03.csv data/gfs-runs/2025-01-03.meta.json data/gfs-runs/2025-01-04.csv data/gfs-runs/2025-01-04.meta.json data/gfs-runs/2025-01-05.csv data/gfs-runs/2025-01-05.meta.json data/gfs-runs/2025-01-06.csv data/gfs-runs/2025-01-06.meta.json data/gfs-runs/2025-01-07.csv data/gfs-runs/2025-01-07.meta.json data/gfs-runs/2025-01-08.csv data/gfs-runs/2025-01-08.meta.json data/gfs-runs/2025-01-09.csv data/gfs-runs/2025-01-09.meta.json data/gfs-runs/2025-01-10.csv data/gfs-runs/2025-01-10.meta.json data/gfs-runs/2025-01-11.csv data/gfs-runs/2025-01-11.meta.json data/gfs-runs/2025-01-12.csv data/gfs-runs/2025-01-12.meta.json data/gfs-runs/2025-01-13.csv data/gfs-runs/2025-01-13.meta.json data/gfs-runs/2025-01-14.csv data/gfs-runs/2025-01-14.meta.json data/gfs-runs/2025-01-15.csv data/gfs-runs/2025-01-15.meta.json data/gfs-runs/2025-01-16.csv data/gfs-runs/2025-01-16.meta.json data/gfs-runs/2025-01-17.csv data/gfs-runs/2025-01-17.meta.json data/gfs-runs/2025-01-18.csv data/gfs-runs/2025-01-18.meta.json data/gfs-runs/2025-01-19.csv data/gfs-runs/2025-01-19.meta.json data/gfs-runs/2025-01-20.csv data/gfs-runs/2025-01-20.meta.json data/gfs-runs/2025-01-21.csv data/gfs-runs/2025-01-21.meta.json data/gfs-runs/2025-01-22.csv data/gfs-runs/2025-01-22.meta.json data/gfs-runs/2025-01-23.csv data/gfs-runs/2025-01-23.meta.json data/gfs-runs/2025-01-24.csv data/gfs-runs/2025-01-24.meta.json data/gfs-runs/2025-01-25.csv data/gfs-runs/2025-01-25.meta.json data/gfs-runs/2025-01-26.csv data/gfs-runs/2025-01-26.meta.json data/gfs-runs/2025-01-27.csv data/gfs-runs/2025-01-27.meta.json data/gfs-runs/2025-01-28.csv data/gfs-runs/2025-01-28.meta.json data/gfs-runs/2025-01-29.csv data/gfs-runs/2025-01-29.meta.json data/gfs-runs/2025-01-30.csv data/gfs-runs/2025-01-30.meta.json data/gfs-runs/2025-01-31.csv data/gfs-runs/2025-01-31.meta.json data/gfs-runs/2025-02-01.csv data/gfs-runs/2025-02-01.meta.json data/gfs-runs/2025-02-02.csv data/gfs-runs/2025-02-02.meta.json data/gfs-runs/2025-02-03.csv data/gfs-runs/2025-02-03.meta.json data/gfs-runs/2025-02-04.csv data/gfs-runs/2025-02-04.meta.json data/gfs-runs/2025-02-05.csv data/gfs-runs/2025-02-05.meta.json data/gfs-runs/2025-02-06.csv data/gfs-runs/2025-02-06.meta.json data/gfs-runs/2025-02-07.csv data/gfs-runs/2025-02-07.meta.json data/gfs-runs/2025-02-08.csv data/gfs-runs/2025-02-08.meta.json data/gfs-runs/2025-02-09.csv data/gfs-runs/2025-02-09.meta.json data/gfs-runs/2025-02-10.csv data/gfs-runs/2025-02-10.meta.json data/gfs-runs/2025-02-11.csv data/gfs-runs/2025-02-11.meta.json data/gfs-runs/2025-02-12.csv data/gfs-runs/2025-02-12.meta.json data/gfs-runs/2025-02-13.csv data/gfs-runs/2025-02-13.meta.json data/gfs-runs/2025-02-14.csv data/gfs-runs/2025-02-14.meta.json data/gfs-runs/2025-02-15.csv data/gfs-runs/2025-02-15.meta.json data/gfs-runs/2025-02-16.csv data/gfs-runs/2025-02-16.meta.json data/gfs-runs/2025-02-17.csv data/gfs-runs/2025-02-17.meta.json data/gfs-runs/2025-02-18.csv data/gfs-runs/2025-02-18.meta.json data/gfs-runs/2025-02-19.csv data/gfs-runs/2025-02-19.meta.json data/gfs-runs/2025-02-20.csv data/gfs-runs/2025-02-20.meta.json data/gfs-runs/2025-02-21.csv data/gfs-runs/2025-02-21.meta.json data/gfs-runs/2025-02-22.csv data/gfs-runs/2025-02-22.meta.json data/gfs-runs/2025-02-23.csv data/gfs-runs/2025-02-23.meta.json data/gfs-runs/2025-02-24.csv data/gfs-runs/2025-02-24.meta.json data/gfs-runs/2025-02-25.csv data/gfs-runs/2025-02-25.meta.json data/gfs-runs/2025-02-26.csv data/gfs-runs/2025-02-26.meta.json data/gfs-runs/2025-02-27.csv data/gfs-runs/2025-02-27.meta.json data/gfs-runs/2025-02-28.csv data/gfs-runs/2025-02-28.meta.json data/gfs-runs/2025-03-01.csv data/gfs-runs/2025-03-01.meta.json data/gfs-runs/2025-03-02.csv data/gfs-runs/2025-03-02.meta.json data/gfs-runs/2025-03-03.csv data/gfs-runs/2025-03-03.meta.json data/gfs-runs/2025-03-04.csv data/gfs-runs/2025-03-04.meta.json data/gfs-runs/2025-03-05.csv data/gfs-runs/2025-03-05.meta.json data/gfs-runs/2025-03-06.csv data/gfs-runs/2025-03-06.meta.json data/gfs-runs/2025-03-07.csv data/gfs-runs/2025-03-07.meta.json data/gfs-runs/2025-03-08.csv data/gfs-runs/2025-03-08.meta.json data/gfs-runs/2025-03-09.csv data/gfs-runs/2025-03-09.meta.json data/gfs-runs/2025-03-10.csv data/gfs-runs/2025-03-10.meta.json data/gfs-runs/2025-03-11.csv data/gfs-runs/2025-03-11.meta.json data/gfs-runs/2025-03-12.csv data/gfs-runs/2025-03-12.meta.json data/gfs-runs/2025-03-13.csv data/gfs-runs/2025-03-13.meta.json data/gfs-runs/2025-03-14.csv data/gfs-runs/2025-03-14.meta.json data/gfs-runs/2025-03-15.csv data/gfs-runs/2025-03-15.meta.json data/gfs-runs/2025-03-16.csv data/gfs-runs/2025-03-16.meta.json data/gfs-runs/2025-03-17.csv data/gfs-runs/2025-03-17.meta.json data/gfs-runs/2025-03-18.csv data/gfs-runs/2025-03-18.meta.json data/gfs-runs/2025-03-19.csv data/gfs-runs/2025-03-19.meta.json data/gfs-runs/2025-03-20.csv data/gfs-runs/2025-03-20.meta.json data/gfs-runs/2025-03-21.csv data/gfs-runs/2025-03-21.meta.json data/gfs-runs/2025-03-22.csv data/gfs-runs/2025-03-22.meta.json data/gfs-runs/2025-03-23.csv data/gfs-runs/2025-03-23.meta.json data/gfs-runs/2025-03-24.csv data/gfs-runs/2025-03-24.meta.json data/gfs-runs/2025-03-25.csv data/gfs-runs/2025-03-25.meta.json data/gfs-runs/2025-03-26.csv data/gfs-runs/2025-03-26.meta.json data/gfs-runs/2025-03-27.csv data/gfs-runs/2025-03-27.meta.json data/gfs-runs/2025-03-28.csv data/gfs-runs/2025-03-28.meta.json data/gfs-runs/2025-03-29.csv data/gfs-runs/2025-03-29.meta.json data/gfs-runs/2025-03-30.csv data/gfs-runs/2025-03-30.meta.json data/gfs-runs/2025-03-31.csv data/gfs-runs/2025-03-31.meta.json data/gfs-runs/2025-04-01.csv data/gfs-runs/2025-04-01.meta.json data/gfs-runs/2025-04-02.csv data/gfs-runs/2025-04-02.meta.json data/gfs-runs/2025-04-03.csv data/gfs-runs/2025-04-03.meta.json data/gfs-runs/2025-04-04.csv data/gfs-runs/2025-04-04.meta.json data/gfs-runs/2025-04-05.csv data/gfs-runs/2025-04-05.meta.json data/gfs-runs/2025-04-06.csv data/gfs-runs/2025-04-06.meta.json data/gfs-runs/2025-04-07.csv data/gfs-runs/2025-04-07.meta.json data/gfs-runs/2025-04-08.csv data/gfs-runs/2025-04-08.meta.json data/gfs-runs/2025-04-09.csv data/gfs-runs/2025-04-09.meta.json data/gfs-runs/2025-04-10.csv data/gfs-runs/2025-04-10.meta.json data/gfs-runs/2025-04-11.csv data/gfs-runs/2025-04-11.meta.json data/gfs-runs/2025-04-12.csv data/gfs-runs/2025-04-12.meta.json data/gfs-runs/2025-04-13.csv data/gfs-runs/2025-04-13.meta.json data/gfs-runs/2025-04-14.csv data/gfs-runs/2025-04-14.meta.json data/gfs-runs/2025-04-15.csv data/gfs-runs/2025-04-15.meta.json data/gfs-runs/2025-04-16.csv data/gfs-runs/2025-04-16.meta.json data/gfs-runs/2025-04-17.csv data/gfs-runs/2025-04-17.meta.json data/gfs-runs/2025-04-18.csv data/gfs-runs/2025-04-18.meta.json data/gfs-runs/2025-04-19.csv data/gfs-runs/2025-04-19.meta.json data/gfs-runs/2025-04-20.csv data/gfs-runs/2025-04-20.meta.json data/gfs-runs/2025-04-21.csv data/gfs-runs/2025-04-21.meta.json data/gfs-runs/2025-04-22.csv data/gfs-runs/2025-04-22.meta.json data/gfs-runs/2025-04-23.csv data/gfs-runs/2025-04-23.meta.json data/gfs-runs/2025-04-24.csv data/gfs-runs/2025-04-24.meta.json data/gfs-runs/2025-04-25.csv data/gfs-runs/2025-04-25.meta.json data/gfs-runs/2025-04-26.csv data/gfs-runs/2025-04-26.meta.json data/gfs-runs/2025-04-27.csv data/gfs-runs/2025-04-27.meta.json data/gfs-runs/2025-04-28.csv data/gfs-runs/2025-04-28.meta.json data/gfs-runs/2025-04-29.csv data/gfs-runs/2025-04-29.meta.json data/gfs-runs/2025-04-30.csv data/gfs-runs/2025-04-30.meta.json data/gfs-runs/2025-05-01.csv data/gfs-runs/2025-05-01.meta.json data/gfs-runs/2025-05-02.csv data/gfs-runs/2025-05-02.meta.json data/gfs-runs/2025-05-03.csv data/gfs-runs/2025-05-03.meta.json data/gfs-runs/2025-05-04.csv data/gfs-runs/2025-05-04.meta.json data/gfs-runs/2025-05-05.csv data/gfs-runs/2025-05-05.meta.json data/gfs-runs/2025-05-06.csv data/gfs-runs/2025-05-06.meta.json data/gfs-runs/2025-05-07.csv data/gfs-runs/2025-05-07.meta.json data/gfs-runs/2025-05-08.csv data/gfs-runs/2025-05-08.meta.json data/gfs-runs/2025-05-09.csv data/gfs-runs/2025-05-09.meta.json data/gfs-runs/2025-05-10.csv data/gfs-runs/2025-05-10.meta.json data/gfs-runs/2025-05-11.csv data/gfs-runs/2025-05-11.meta.json data/gfs-runs/2025-05-12.csv data/gfs-runs/2025-05-12.meta.json data/gfs-runs/2025-05-13.csv data/gfs-runs/2025-05-13.meta.json data/gfs-runs/2025-05-14.csv data/gfs-runs/2025-05-14.meta.json data/gfs-runs/2025-05-15.csv data/gfs-runs/2025-05-15.meta.json data/gfs-runs/2025-05-16.csv data/gfs-runs/2025-05-16.meta.json data/gfs-runs/2025-05-17.csv data/gfs-runs/2025-05-17.meta.json data/gfs-runs/2025-05-18.csv data/gfs-runs/2025-05-18.meta.json data/gfs-runs/2025-05-19.csv data/gfs-runs/2025-05-19.meta.json data/gfs-runs/2025-05-20.csv data/gfs-runs/2025-05-20.meta.json data/gfs-runs/2025-05-21.csv data/gfs-runs/2025-05-21.meta.json data/gfs-runs/2025-05-22.csv data/gfs-runs/2025-05-22.meta.json data/gfs-runs/2025-05-23.csv data/gfs-runs/2025-05-23.meta.json data/gfs-runs/2025-05-24.csv data/gfs-runs/2025-05-24.meta.json data/gfs-runs/2025-05-25.csv data/gfs-runs/2025-05-25.meta.json data/gfs-runs/2025-05-26.csv data/gfs-runs/2025-05-26.meta.json data/gfs-runs/2025-05-27.csv data/gfs-runs/2025-05-27.meta.json data/gfs-runs/2025-05-28.csv data/gfs-runs/2025-05-28.meta.json data/gfs-runs/2025-05-29.csv data/gfs-runs/2025-05-29.meta.json data/gfs-runs/2025-05-30.csv data/gfs-runs/2025-05-30.meta.json data/gfs-runs/2025-05-31.csv data/gfs-runs/2025-05-31.meta.json data/gfs-runs/2025-06-01.csv data/gfs-runs/2025-06-01.meta.json data/gfs-runs/2025-06-02.csv data/gfs-runs/2025-06-02.meta.json data/gfs-runs/2025-06-03.csv data/gfs-runs/2025-06-03.meta.json data/gfs-runs/2025-06-04.csv data/gfs-runs/2025-06-04.meta.json data/gfs-runs/2025-06-05.csv data/gfs-runs/2025-06-05.meta.json data/gfs-runs/2025-06-06.csv data/gfs-runs/2025-06-06.meta.json data/gfs-runs/2025-06-07.csv data/gfs-runs/2025-06-07.meta.json data/gfs-runs/2025-06-08.csv data/gfs-runs/2025-06-08.meta.json data/gfs-runs/2025-06-09.csv data/gfs-runs/2025-06-09.meta.json data/gfs-runs/2025-06-10.csv data/gfs-runs/2025-06-10.meta.json data/gfs-runs/2025-06-11.csv data/gfs-runs/2025-06-11.meta.json data/gfs-runs/2025-06-12.csv data/gfs-runs/2025-06-12.meta.json data/gfs-runs/2025-06-13.csv data/gfs-runs/2025-06-13.meta.json data/gfs-runs/2025-06-14.csv data/gfs-runs/2025-06-14.meta.json data/gfs-runs/2025-06-15.csv data/gfs-runs/2025-06-15.meta.json data/gfs-runs/2025-06-16.csv data/gfs-runs/2025-06-16.meta.json data/gfs-runs/2025-06-17.csv data/gfs-runs/2025-06-17.meta.json data/gfs-runs/2025-06-18.csv data/gfs-runs/2025-06-18.meta.json data/gfs-runs/2025-06-19.csv data/gfs-runs/2025-06-19.meta.json data/gfs-runs/2025-06-20.csv data/gfs-runs/2025-06-20.meta.json data/gfs-runs/2025-06-21.csv data/gfs-runs/2025-06-21.meta.json data/gfs-runs/2025-06-22.csv data/gfs-runs/2025-06-22.meta.json data/gfs-runs/2025-06-23.csv data/gfs-runs/2025-06-23.meta.json data/gfs-runs/2025-06-24.csv data/gfs-runs/2025-06-24.meta.json data/gfs-runs/2025-06-25.csv data/gfs-runs/2025-06-25.meta.json data/gfs-runs/2025-06-26.csv data/gfs-runs/2025-06-26.meta.json data/gfs-runs/2025-06-27.csv data/gfs-runs/2025-06-27.meta.json data/gfs-runs/2025-06-28.csv data/gfs-runs/2025-06-28.meta.json data/gfs-runs/2025-06-29.csv data/gfs-runs/2025-06-29.meta.json data/gfs-runs/2025-06-30.csv data/gfs-runs/2025-06-30.meta.json data/gfs-runs/2025-07-01.csv data/gfs-runs/2025-07-01.meta.json data/gfs-runs/2025-07-02.csv data/gfs-runs/2025-07-02.meta.json data/gfs-runs/2025-07-03.csv data/gfs-runs/2025-07-03.meta.json data/gfs-runs/2025-07-04.csv data/gfs-runs/2025-07-04.meta.json data/gfs-runs/2025-07-05.csv data/gfs-runs/2025-07-05.meta.json data/gfs-runs/2025-07-06.csv data/gfs-runs/2025-07-06.meta.json data/gfs-runs/2025-07-07.csv data/gfs-runs/2025-07-07.meta.json data/gfs-runs/2025-07-08.csv data/gfs-runs/2025-07-08.meta.json data/gfs-runs/2025-07-09.csv data/gfs-runs/2025-07-09.meta.json data/gfs-runs/2025-07-10.csv data/gfs-runs/2025-07-10.meta.json data/gfs-runs/2025-07-11.csv data/gfs-runs/2025-07-11.meta.json data/gfs-runs/2025-07-12.csv data/gfs-runs/2025-07-12.meta.json data/gfs-runs/2025-07-13.csv data/gfs-runs/2025-07-13.meta.json data/gfs-runs/2025-07-14.csv data/gfs-runs/2025-07-14.meta.json data/gfs-runs/2025-07-15.csv data/gfs-runs/2025-07-15.meta.json data/gfs-runs/2025-07-16.csv data/gfs-runs/2025-07-16.meta.json data/gfs-runs/2025-07-17.csv data/gfs-runs/2025-07-17.meta.json data/gfs-runs/2025-07-18.csv data/gfs-runs/2025-07-18.meta.json data/gfs-runs/2025-07-19.csv data/gfs-runs/2025-07-19.meta.json data/gfs-runs/2025-07-20.csv data/gfs-runs/2025-07-20.meta.json data/gfs-runs/2025-07-21.csv data/gfs-runs/2025-07-21.meta.json data/gfs-runs/2025-07-22.csv data/gfs-runs/2025-07-22.meta.json data/gfs-runs/2025-07-23.csv data/gfs-runs/2025-07-23.meta.json data/gfs-runs/2025-07-24.csv data/gfs-runs/2025-07-24.meta.json data/gfs-runs/2025-07-25.csv data/gfs-runs/2025-07-25.meta.json data/gfs-runs/2025-07-26.csv data/gfs-runs/2025-07-26.meta.json data/gfs-runs/2025-07-27.csv data/gfs-runs/2025-07-27.meta.json data/gfs-runs/2025-07-28.csv data/gfs-runs/2025-07-28.meta.json data/gfs-runs/2025-07-29.csv data/gfs-runs/2025-07-29.meta.json data/gfs-runs/2025-07-30.csv data/gfs-runs/2025-07-30.meta.json data/gfs-runs/2025-07-31.csv data/gfs-runs/2025-07-31.meta.json data/gfs-runs/2025-08-01.csv data/gfs-runs/2025-08-01.meta.json data/gfs-runs/2025-08-02.csv data/gfs-runs/2025-08-02.meta.json data/gfs-runs/2025-08-03.csv data/gfs-runs/2025-08-03.meta.json data/gfs-runs/2025-08-04.csv data/gfs-runs/2025-08-04.meta.json data/gfs-runs/2025-08-05.csv data/gfs-runs/2025-08-05.meta.json data/gfs-runs/2025-08-06.csv data/gfs-runs/2025-08-06.meta.json data/gfs-runs/2025-08-07.csv data/gfs-runs/2025-08-07.meta.json data/gfs-runs/2025-08-08.csv data/gfs-runs/2025-08-08.meta.json data/gfs-runs/2025-08-09.csv data/gfs-runs/2025-08-09.meta.json data/gfs-runs/2025-08-10.csv data/gfs-runs/2025-08-10.meta.json data/gfs-runs/2025-08-11.csv data/gfs-runs/2025-08-11.meta.json data/gfs-runs/2025-08-12.csv data/gfs-runs/2025-08-12.meta.json data/gfs-runs/2025-08-13.csv data/gfs-runs/2025-08-13.meta.json data/gfs-runs/2025-08-14.csv data/gfs-runs/2025-08-14.meta.json data/gfs-runs/2025-08-15.csv data/gfs-runs/2025-08-15.meta.json data/gfs-runs/2025-08-16.csv data/gfs-runs/2025-08-16.meta.json data/gfs-runs/2025-08-17.csv data/gfs-runs/2025-08-17.meta.json data/gfs-runs/2025-08-18.csv data/gfs-runs/2025-08-18.meta.json data/gfs-runs/2025-08-19.csv data/gfs-runs/2025-08-19.meta.json data/gfs-runs/2025-08-20.csv data/gfs-runs/2025-08-20.meta.json data/gfs-runs/2025-08-21.csv data/gfs-runs/2025-08-21.meta.json data/gfs-runs/2025-08-22.csv data/gfs-runs/2025-08-22.meta.json data/gfs-runs/2025-08-23.csv data/gfs-runs/2025-08-23.meta.json data/gfs-runs/2025-08-24.csv data/gfs-runs/2025-08-24.meta.json data/gfs-runs/2025-08-25.csv data/gfs-runs/2025-08-25.meta.json data/gfs-runs/2025-08-26.csv data/gfs-runs/2025-08-26.meta.json data/gfs-runs/2025-08-27.csv data/gfs-runs/2025-08-27.meta.json data/gfs-runs/2025-08-28.csv data/gfs-runs/2025-08-28.meta.json data/gfs-runs/2025-08-29.csv data/gfs-runs/2025-08-29.meta.json data/gfs-runs/2025-08-30.csv data/gfs-runs/2025-08-30.meta.json data/gfs-runs/2025-08-31.csv data/gfs-runs/2025-08-31.meta.json data/gfs-runs/2025-09-01.csv data/gfs-runs/2025-09-01.meta.json data/gfs-runs/2025-09-02.csv data/gfs-runs/2025-09-02.meta.json data/gfs-runs/2025-09-03.csv data/gfs-runs/2025-09-03.meta.json data/gfs-runs/2025-09-04.csv data/gfs-runs/2025-09-04.meta.json data/gfs-runs/2025-09-05.csv data/gfs-runs/2025-09-05.meta.json data/gfs-runs/2025-09-06.csv data/gfs-runs/2025-09-06.meta.json data/gfs-runs/2025-09-07.csv data/gfs-runs/2025-09-07.meta.json data/gfs-runs/2025-09-08.csv data/gfs-runs/2025-09-08.meta.json data/gfs-runs/2025-09-09.csv data/gfs-runs/2025-09-09.meta.json data/gfs-runs/2025-09-10.csv data/gfs-runs/2025-09-10.meta.json data/gfs-runs/2025-09-11.csv data/gfs-runs/2025-09-11.meta.json data/gfs-runs/2025-09-12.csv data/gfs-runs/2025-09-12.meta.json data/gfs-runs/2025-09-13.csv data/gfs-runs/2025-09-13.meta.json data/gfs-runs/2025-09-14.csv data/gfs-runs/2025-09-14.meta.json data/gfs-runs/2025-09-15.csv data/gfs-runs/2025-09-15.meta.json data/gfs-runs/2025-09-16.csv data/gfs-runs/2025-09-16.meta.json data/gfs-runs/2025-09-17.csv data/gfs-runs/2025-09-17.meta.json data/gfs-runs/2025-09-18.csv data/gfs-runs/2025-09-18.meta.json data/gfs-runs/2025-09-19.csv data/gfs-runs/2025-09-19.meta.json data/gfs-runs/2025-09-20.csv data/gfs-runs/2025-09-20.meta.json data/gfs-runs/2025-09-21.csv data/gfs-runs/2025-09-21.meta.json data/gfs-runs/2025-09-22.csv data/gfs-runs/2025-09-22.meta.json data/gfs-runs/2025-09-23.csv data/gfs-runs/2025-09-23.meta.json data/gfs-runs/2025-09-24.csv data/gfs-runs/2025-09-24.meta.json data/gfs-runs/2025-09-25.csv data/gfs-runs/2025-09-25.meta.json data/gfs-runs/2025-09-26.csv data/gfs-runs/2025-09-26.meta.json data/gfs-runs/2025-09-27.csv data/gfs-runs/2025-09-27.meta.json data/gfs-runs/2025-09-28.csv data/gfs-runs/2025-09-28.meta.json data/gfs-runs/2025-09-29.csv data/gfs-runs/2025-09-29.meta.json data/gfs-runs/2025-09-30.csv data/gfs-runs/2025-09-30.meta.json data/gfs-runs/2025-10-01.csv data/gfs-runs/2025-10-01.meta.json data/gfs-runs/2025-10-02.csv data/gfs-runs/2025-10-02.meta.json data/gfs-runs/2025-10-03.csv data/gfs-runs/2025-10-03.meta.json data/gfs-runs/2025-10-04.csv data/gfs-runs/2025-10-04.meta.json data/gfs-runs/2025-10-05.csv data/gfs-runs/2025-10-05.meta.json data/gfs-runs/2025-10-06.csv data/gfs-runs/2025-10-06.meta.json data/gfs-runs/2025-10-07.csv data/gfs-runs/2025-10-07.meta.json data/gfs-runs/2025-10-08.csv data/gfs-runs/2025-10-08.meta.json data/gfs-runs/2025-10-09.csv data/gfs-runs/2025-10-09.meta.json data/gfs-runs/2025-10-10.csv data/gfs-runs/2025-10-10.meta.json data/gfs-runs/2025-10-11.csv data/gfs-runs/2025-10-11.meta.json data/gfs-runs/2025-10-12.csv data/gfs-runs/2025-10-12.meta.json data/gfs-runs/2025-10-13.csv data/gfs-runs/2025-10-13.meta.json data/gfs-runs/2025-10-14.csv data/gfs-runs/2025-10-14.meta.json data/gfs-runs/2025-10-15.csv data/gfs-runs/2025-10-15.meta.json data/gfs-runs/2025-10-16.csv data/gfs-runs/2025-10-16.meta.json data/gfs-runs/2025-10-17.csv data/gfs-runs/2025-10-17.meta.json data/gfs-runs/2025-10-18.csv data/gfs-runs/2025-10-18.meta.json data/gfs-runs/2025-10-19.csv data/gfs-runs/2025-10-19.meta.json data/gfs-runs/2025-10-20.csv data/gfs-runs/2025-10-20.meta.json data/gfs-runs/2025-10-21.csv data/gfs-runs/2025-10-21.meta.json data/gfs-runs/2025-10-22.csv data/gfs-runs/2025-10-22.meta.json data/gfs-runs/2025-10-23.csv data/gfs-runs/2025-10-23.meta.json data/gfs-runs/2025-10-24.csv data/gfs-runs/2025-10-24.meta.json data/gfs-runs/2025-10-25.csv data/gfs-runs/2025-10-25.meta.json data/gfs-runs/2025-10-26.csv data/gfs-runs/2025-10-26.meta.json data/gfs-runs/2025-10-27.csv data/gfs-runs/2025-10-27.meta.json data/gfs-runs/2025-10-28.csv data/gfs-runs/2025-10-28.meta.json data/gfs-runs/2025-10-29.csv data/gfs-runs/2025-10-29.meta.json data/gfs-runs/2025-10-30.csv data/gfs-runs/2025-10-30.meta.json data/gfs-runs/2025-10-31.csv data/gfs-runs/2025-10-31.meta.json data/gfs-runs/2025-11-01.csv data/gfs-runs/2025-11-01.meta.json data/gfs-runs/2025-11-02.csv data/gfs-runs/2025-11-02.meta.json data/gfs-runs/2025-11-03.csv data/gfs-runs/2025-11-03.meta.json data/gfs-runs/2025-11-04.csv data/gfs-runs/2025-11-04.meta.json data/gfs-runs/2025-11-05.csv data/gfs-runs/2025-11-05.meta.json data/gfs-runs/2025-11-06.csv data/gfs-runs/2025-11-06.meta.json data/gfs-runs/2025-11-07.csv data/gfs-runs/2025-11-07.meta.json data/gfs-runs/2025-11-08.csv data/gfs-runs/2025-11-08.meta.json data/gfs-runs/2025-11-09.csv data/gfs-runs/2025-11-09.meta.json data/gfs-runs/2025-11-10.csv data/gfs-runs/2025-11-10.meta.json data/gfs-runs/2025-11-11.csv data/gfs-runs/2025-11-11.meta.json data/gfs-runs/2025-11-12.csv data/gfs-runs/2025-11-12.meta.json data/gfs-runs/2025-11-13.csv data/gfs-runs/2025-11-13.meta.json data/gfs-runs/2025-11-14.csv data/gfs-runs/2025-11-14.meta.json data/gfs-runs/2025-11-15.csv data/gfs-runs/2025-11-15.meta.json data/gfs-runs/2025-11-16.csv data/gfs-runs/2025-11-16.meta.json data/gfs-runs/2025-11-17.csv data/gfs-runs/2025-11-17.meta.json data/gfs-runs/2025-11-18.csv data/gfs-runs/2025-11-18.meta.json data/gfs-runs/2025-11-19.csv data/gfs-runs/2025-11-19.meta.json data/gfs-runs/2025-11-20.csv data/gfs-runs/2025-11-20.meta.json data/gfs-runs/2025-11-21.csv data/gfs-runs/2025-11-21.meta.json data/gfs-runs/2025-11-22.csv data/gfs-runs/2025-11-22.meta.json data/gfs-runs/2025-11-23.csv data/gfs-runs/2025-11-23.meta.json data/gfs-runs/2025-11-24.csv data/gfs-runs/2025-11-24.meta.json data/gfs-runs/2025-11-25.csv data/gfs-runs/2025-11-25.meta.json data/gfs-runs/2025-11-26.csv data/gfs-runs/2025-11-26.meta.json data/gfs-runs/2025-11-27.csv data/gfs-runs/2025-11-27.meta.json data/gfs-runs/2025-11-28.csv data/gfs-runs/2025-11-28.meta.json data/gfs-runs/2025-11-29.csv data/gfs-runs/2025-11-29.meta.json data/gfs-runs/2025-11-30.csv data/gfs-runs/2025-11-30.meta.json data/gfs-runs/2025-12-01.csv data/gfs-runs/2025-12-01.meta.json data/gfs-runs/2025-12-02.csv data/gfs-runs/2025-12-02.meta.json data/gfs-runs/2025-12-03.csv data/gfs-runs/2025-12-03.meta.json data/gfs-runs/2025-12-04.csv data/gfs-runs/2025-12-04.meta.json data/gfs-runs/2025-12-05.csv data/gfs-runs/2025-12-05.meta.json data/gfs-runs/2025-12-06.csv data/gfs-runs/2025-12-06.meta.json data/gfs-runs/2025-12-07.csv data/gfs-runs/2025-12-07.meta.json data/gfs-runs/2025-12-08.csv data/gfs-runs/2025-12-08.meta.json data/gfs-runs/2025-12-09.csv data/gfs-runs/2025-12-09.meta.json data/gfs-runs/2025-12-10.csv data/gfs-runs/2025-12-10.meta.json data/gfs-runs/2025-12-11.csv data/gfs-runs/2025-12-11.meta.json data/gfs-runs/2025-12-12.csv data/gfs-runs/2025-12-12.meta.json data/gfs-runs/2025-12-13.csv data/gfs-runs/2025-12-13.meta.json data/gfs-runs/2025-12-14.csv data/gfs-runs/2025-12-14.meta.json data/gfs-runs/2025-12-15.csv data/gfs-runs/2025-12-15.meta.json data/gfs-runs/2025-12-16.csv data/gfs-runs/2025-12-16.meta.json data/gfs-runs/2025-12-17.csv data/gfs-runs/2025-12-17.meta.json data/gfs-runs/2025-12-18.csv data/gfs-runs/2025-12-18.meta.json data/gfs-runs/2025-12-19.csv data/gfs-runs/2025-12-19.meta.json data/gfs-runs/2025-12-20.csv data/gfs-runs/2025-12-20.meta.json data/gfs-runs/2025-12-21.csv data/gfs-runs/2025-12-21.meta.json data/gfs-runs/2025-12-22.csv data/gfs-runs/2025-12-22.meta.json data/gfs-runs/2025-12-23.csv data/gfs-runs/2025-12-23.meta.json data/gfs-runs/2025-12-24.csv data/gfs-runs/2025-12-24.meta.json data/gfs-runs/2025-12-25.csv data/gfs-runs/2025-12-25.meta.json data/gfs-runs/2025-12-26.csv data/gfs-runs/2025-12-26.meta.json data/gfs-runs/2025-12-27.csv data/gfs-runs/2025-12-27.meta.json data/gfs-runs/2025-12-28.csv data/gfs-runs/2025-12-28.meta.json data/gfs-runs/2025-12-29.csv data/gfs-runs/2025-12-29.meta.json data/gfs-runs/2025-12-30.csv data/gfs-runs/2025-12-30.meta.json data/gfs-runs/2025-12-31.csv data/gfs-runs/2025-12-31.meta.json data/gfs-runs/2026-01-01.csv data/gfs-runs/2026-01-01.meta.json data/gfs-runs/2026-01-02.csv data/gfs-runs/2026-01-02.meta.json data/gfs-runs/2026-01-03.csv data/gfs-runs/2026-01-03.meta.json data/gfs-runs/2026-01-04.csv data/gfs-runs/2026-01-04.meta.json data/gfs-runs/2026-01-05.csv data/gfs-runs/2026-01-05.meta.json data/gfs-runs/2026-01-06.csv data/gfs-runs/2026-01-06.meta.json data/gfs-runs/2026-01-07.csv data/gfs-runs/2026-01-07.meta.json data/gfs-runs/2026-01-08.csv data/gfs-runs/2026-01-08.meta.json data/gfs-runs/2026-01-09.csv data/gfs-runs/2026-01-09.meta.json data/gfs-runs/2026-01-10.csv data/gfs-runs/2026-01-10.meta.json data/gfs-runs/2026-01-11.csv data/gfs-runs/2026-01-11.meta.json data/gfs-runs/2026-01-12.csv data/gfs-runs/2026-01-12.meta.json data/gfs-runs/2026-01-13.csv data/gfs-runs/2026-01-13.meta.json data/gfs-runs/2026-01-14.csv data/gfs-runs/2026-01-14.meta.json data/gfs-runs/2026-01-15.csv data/gfs-runs/2026-01-15.meta.json data/gfs-runs/2026-01-16.csv data/gfs-runs/2026-01-16.meta.json data/gfs-runs/2026-01-17.csv data/gfs-runs/2026-01-17.meta.json data/gfs-runs/2026-01-18.csv data/gfs-runs/2026-01-18.meta.json data/gfs-runs/2026-01-19.csv data/gfs-runs/2026-01-19.meta.json data/gfs-runs/2026-01-20.csv data/gfs-runs/2026-01-20.meta.json data/gfs-runs/2026-01-21.csv data/gfs-runs/2026-01-21.meta.json data/gfs-runs/2026-01-22.csv data/gfs-runs/2026-01-22.meta.json data/gfs-runs/2026-01-23.csv data/gfs-runs/2026-01-23.meta.json data/gfs-runs/2026-01-24.csv data/gfs-runs/2026-01-24.meta.json data/gfs-runs/2026-01-25.csv data/gfs-runs/2026-01-25.meta.json data/gfs-runs/2026-01-26.csv data/gfs-runs/2026-01-26.meta.json data/gfs-runs/2026-01-27.csv data/gfs-runs/2026-01-27.meta.json data/gfs-runs/2026-01-28.csv data/gfs-runs/2026-01-28.meta.json data/gfs-runs/2026-01-29.csv data/gfs-runs/2026-01-29.meta.json data/gfs-runs/2026-01-30.csv data/gfs-runs/2026-01-30.meta.json data/gfs-runs/2026-01-31.csv data/gfs-runs/2026-01-31.meta.json data/gfs-runs/2026-02-01.csv data/gfs-runs/2026-02-01.meta.json data/gfs-runs/2026-02-02.csv data/gfs-runs/2026-02-02.meta.json data/gfs-runs/2026-02-03.csv data/gfs-runs/2026-02-03.meta.json data/gfs-runs/2026-02-04.csv data/gfs-runs/2026-02-04.meta.json data/gfs-runs/2026-02-05.csv data/gfs-runs/2026-02-05.meta.json data/gfs-runs/2026-02-06.csv data/gfs-runs/2026-02-06.meta.json data/gfs-runs/2026-02-07.csv data/gfs-runs/2026-02-07.meta.json data/gfs-runs/2026-02-08.csv data/gfs-runs/2026-02-08.meta.json data/gfs-runs/2026-02-09.csv data/gfs-runs/2026-02-09.meta.json data/gfs-runs/2026-02-10.csv data/gfs-runs/2026-02-10.meta.json data/gfs-runs/2026-02-11.csv data/gfs-runs/2026-02-11.meta.json data/gfs-runs/2026-02-12.csv data/gfs-runs/2026-02-12.meta.json data/gfs-runs/2026-02-13.csv data/gfs-runs/2026-02-13.meta.json data/gfs-runs/2026-02-14.csv data/gfs-runs/2026-02-14.meta.json data/gfs-runs/2026-02-15.csv data/gfs-runs/2026-02-15.meta.json data/gfs-runs/2026-02-16.csv data/gfs-runs/2026-02-16.meta.json data/gfs-runs/2026-02-17.csv data/gfs-runs/2026-02-17.meta.json data/gfs-runs/2026-02-18.csv data/gfs-runs/2026-02-18.meta.json data/gfs-runs/2026-02-19.csv data/gfs-runs/2026-02-19.meta.json data/gfs-runs/2026-02-20.csv data/gfs-runs/2026-02-20.meta.json data/gfs-runs/2026-02-21.csv data/gfs-runs/2026-02-21.meta.json data/gfs-runs/2026-02-22.csv data/gfs-runs/2026-02-22.meta.json data/gfs-runs/2026-02-23.csv data/gfs-runs/2026-02-23.meta.json data/gfs-runs/2026-02-24.csv data/gfs-runs/2026-02-24.meta.json data/gfs-runs/2026-02-25.csv data/gfs-runs/2026-02-25.meta.json data/gfs-runs/2026-02-26.csv data/gfs-runs/2026-02-26.meta.json data/gfs-runs/2026-02-27.csv data/gfs-runs/2026-02-27.meta.json data/gfs-runs/2026-02-28.csv data/gfs-runs/2026-02-28.meta.json data/gfs-runs/download-failures-2024-03-01-2024-08-31.json data/gfs-runs/download-failures-2024-09-01-2025-02-28.json data/gfs-runs/download-failures-2025-03-01-2025-08-31.json data/gfs-runs/download-failures-2025-09-01-2026-01-30.json data/gfs-runs/download-failures.json data/incoming/turbine_1.csv data/incoming/turbine_2.csv data/weather/gfs_global/2024-01.json data/weather/gfs_global/2024-01.meta.json data/weather/gfs_global/2024-02.json data/weather/gfs_global/2024-02.meta.json data/weather/gfs_global/2024-03.json data/weather/gfs_global/2024-03.meta.json data/weather/gfs_global/2024-04.json data/weather/gfs_global/2024-04.meta.json data/weather/gfs_global/2024-05.json data/weather/gfs_global/2024-05.meta.json data/weather/gfs_global/2024-06.json data/weather/gfs_global/2024-06.meta.json data/weather/gfs_global/2024-07.json data/weather/gfs_global/2024-07.meta.json data/weather/gfs_global/2024-08.json data/weather/gfs_global/2024-08.meta.json data/weather/gfs_global/2024-09.json data/weather/gfs_global/2024-09.meta.json data/weather/gfs_global/2024-10.json data/weather/gfs_global/2024-10.meta.json data/weather/gfs_global/2024-11.json data/weather/gfs_global/2024-11.meta.json data/weather/gfs_global/2024-12.json data/weather/gfs_global/2024-12.meta.json data/weather/gfs_global/2025-01.json data/weather/gfs_global/2025-01.meta.json data/weather/gfs_global/2025-02.json data/weather/gfs_global/2025-02.meta.json data/weather/gfs_global/2025-03.json data/weather/gfs_global/2025-03.meta.json data/weather/gfs_global/2025-04.json data/weather/gfs_global/2025-04.meta.json data/weather/gfs_global/2025-05.json data/weather/gfs_global/2025-05.meta.json data/weather/gfs_global/2025-06.json data/weather/gfs_global/2025-06.meta.json data/weather/gfs_global/2025-07.json data/weather/gfs_global/2025-07.meta.json data/weather/gfs_global/2025-08.json data/weather/gfs_global/2025-08.meta.json data/weather/gfs_global/2025-09.json data/weather/gfs_global/2025-09.meta.json data/weather/gfs_global/2025-10.json data/weather/gfs_global/2025-10.meta.json data/weather/gfs_global/2025-11.json data/weather/gfs_global/2025-11.meta.json data/weather/gfs_global/2025-12.json data/weather/gfs_global/2025-12.meta.json data/weather/gfs_global/2026-01.json data/weather/gfs_global/2026-01.meta.json data/weather/gfs_global/2026-02.json data/weather/gfs_global/2026-02.meta.json data/weather/gfs_global/2026-03.json data/weather/gfs_global/2026-03.meta.json data/weather/icon_global/2024-01.json data/weather/icon_global/2024-01.meta.json data/weather/icon_global/2024-02.json data/weather/icon_global/2024-02.meta.json data/weather/icon_global/2024-03.json data/weather/icon_global/2024-03.meta.json data/weather/icon_global/2024-04.json data/weather/icon_global/2024-04.meta.json data/weather/icon_global/2024-05.json data/weather/icon_global/2024-05.meta.json data/weather/icon_global/2024-06.json data/weather/icon_global/2024-06.meta.json data/weather/icon_global/2024-07.json data/weather/icon_global/2024-07.meta.json data/weather/icon_global/2024-08.json data/weather/icon_global/2024-08.meta.json data/weather/icon_global/2024-09.json data/weather/icon_global/2024-09.meta.json data/weather/icon_global/2024-10.json data/weather/icon_global/2024-10.meta.json data/weather/icon_global/2024-11.json data/weather/icon_global/2024-11.meta.json data/weather/icon_global/2024-12.json data/weather/icon_global/2024-12.meta.json data/weather/icon_global/2025-01.json data/weather/icon_global/2025-01.meta.json data/weather/icon_global/2025-02.json data/weather/icon_global/2025-02.meta.json data/weather/icon_global/2025-03.json data/weather/icon_global/2025-03.meta.json data/weather/icon_global/2025-04.json data/weather/icon_global/2025-04.meta.json data/weather/icon_global/2025-05.json data/weather/icon_global/2025-05.meta.json data/weather/icon_global/2025-06.json data/weather/icon_global/2025-06.meta.json data/weather/icon_global/2025-07.json data/weather/icon_global/2025-07.meta.json data/weather/icon_global/2025-08.json data/weather/icon_global/2025-08.meta.json data/weather/icon_global/2025-09.json data/weather/icon_global/2025-09.meta.json data/weather/icon_global/2025-10.json data/weather/icon_global/2025-10.meta.json data/weather/icon_global/2025-11.json data/weather/icon_global/2025-11.meta.json data/weather/icon_global/2025-12.json data/weather/icon_global/2025-12.meta.json data/weather/icon_global/2026-01.json data/weather/icon_global/2026-01.meta.json data/weather/icon_global/2026-02.json data/weather/icon_global/2026-02.meta.json data/weather/icon_global/2026-03.json data/weather/icon_global/2026-03.meta.json data/weather/manifest.json docs/AI-HELP.md docs/API.md docs/BACKLOG.md docs/FORECAST_PROTOCOL.md docs/FRONTEND.md docs/NVIDIA.md docs/PLAN.md docs/README-AUDIT.md docs/REQUIREMENTS.md docs/backend/agent-integration.md docs/backend/duckdb.md docs/backend/weather-provenance.md docs/frontend-integration.md docs/hackathon/README.md docs/hackathon/about.md docs/hackathon/cheatsheet.md docs/hackathon/regulations.md docs/hackathon/scoring.md docs/hackathon/sources/about-tab.txt docs/hackathon/sources/archive-2026-09-22/hackalem-ai-landing.txt docs/hackathon/sources/archive-2026-09-22/regulations_raw.json docs/hackathon/sources/hackalem-ai-landing.txt docs/hackathon/sources/regulations_raw.json docs/hackathon/sources/track-energy-google-doc-2026-09-23.txt docs/hackathon/templates/README-template.md docs/hackathon/track-energy.md docs/samples/agent-forecast.json docs/samples/agent-run.json docs/samples/data-summary.json docs/samples/health.json docs/samples/turbines.json package-lock.json package.json packages/eslint-config/base.js packages/eslint-config/next.js packages/eslint-config/package.json packages/eslint-config/react-internal.js packages/typescript-config/base.json packages/typescript-config/nextjs.json packages/typescript-config/package.json packages/typescript-config/react-library.json packages/ui/components.json packages/ui/eslint.config.js packages/ui/package.json packages/ui/postcss.config.mjs packages/ui/src/components/.gitkeep packages/ui/src/components/badge.tsx packages/ui/src/components/button.tsx packages/ui/src/components/card.tsx packages/ui/src/components/dialog.tsx packages/ui/src/components/table.tsx packages/ui/src/components/tooltip.tsx packages/ui/src/hooks/.gitkeep packages/ui/src/lib/.gitkeep packages/ui/src/lib/utils.ts packages/ui/src/styles/globals.css packages/ui/tsconfig.json packages/ui/tsconfig.lint.json reports/agent-first-run.json reports/agent-noaa-first-forecast.json reports/agent-noaa-first-run.json reports/agent-noaa-replay.json reports/agent-noaa-reuse.json reports/agent-replay.json reports/data-audit.json reports/data-audit.md reports/persistence-baseline.json requirements.txt run.sh scripts/audit_data.py scripts/blender/create_wind_turbine.py scripts/brev-train.sh scripts/check-clean-env.sh scripts/collect_gfs_training.sh scripts/configure_openai.py scripts/evaluate_baselines.py scripts/evolve_rtx5090.py scripts/fetch_gfs_runs.py scripts/finalize_rtx5090.py scripts/finalize_search.py scripts/hourly-commit.sh scripts/nvidia_api.py scripts/predict.py scripts/search_models.py scripts/test-nvidia-api.sh scripts/train.sh scripts/train_catboost.py scripts/train_cloud_wide.py scripts/train_forecast.py scripts/train_gfs.py scripts/train_power_curve.py scripts/train_rtx5090.py scripts/validate_winter.py src/__init__.py src/agent.py src/api.py src/data.py src/gfs_model.py src/gfs_weather.py src/model.py src/nvidia_api.py src/storage.py src/weather.py tests/appearance.test.mjs tests/forecast-data.test.mjs tests/forecast-insights.test.mjs tests/localization.test.mjs tests/test_storage.py tests/turbine-scene.test.mjs tests/wind-simulation.test.mjs tsconfig.json turbo.json
Ветки (2)
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.