Commit Graph

116 Commits

Author SHA1 Message Date
eea6c846c2 feat(gps-tracks): GPX download from public track popup
Some checks failed
CI / lint (push) Failing after 5s
CI / test (push) Failing after 6s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
Реализация ET-011: кнопка «Скачать GPX» в popup публичного GPS-трека и
новый эндпоинт GET /api/gps-tracks/{track_id}/download (GPX 1.1 +
Content-Disposition с UTF-8 именем по RFC 5987). Реэкспорт защищён
per-source флагом `download_allowed` в `config/gps_sources.yaml`
(default-deny, MVP whitelist = `osm`).

Backend:
- `src/api/gps_tracks/export.py` — чистый stdlib-builder GPX 1.1
  (`build_gpx`) + санитизация имени файла (`safe_filename`, RFC 5987).
- `src/api/gps_tracks/endpoint.py` — новый route с проверками
  400 / 403 / 404 / 413; cap 200 000 точек (REQ-NF-02).
- `src/api/gps_tracks/config.py` — `load_download_allowed_sources()`
  читает YAML, default-deny при отсутствии поля; fallback на `{"osm"}`
  при отсутствии конфига.
- `src/api/main.py` — пробрасывает `GPS_SOURCES_CONFIG_PATH` в router.

Frontend:
- `src/web/gps_tracks.js` — кнопка в `_renderTrackPopupHtml`,
  обработчик `_downloadPublicTrack` (fetch + Blob + a.download — тот же
  паттерн, что в `app.js::downloadGPX`, R-1 митигирован), парсер
  `_parseFilenameFromCD` для RFC 5987, маппинг ошибок
  `_handleDownloadError` (403/404/413/5xx → showToast).
- `src/web/app.css` — стиль кнопки, 32×32 CSS px (REQ-NF-04).

Тесты:
- 13 unit для GPX-builder (UT-01/02/03/05; XSD-валидация против
  `tests/fixtures/gpx-1.1/gpx.xsd`).
- 10 unit для `safe_filename` (UT-04).
- 11 integration для download-эндпоинта (IT-01..08 +
  ANY-rule license check + default-deny без конфига).

ADR-014 (gpx-download-endpoint), ADR-015 (source-redistribution-policy).
Refs: ET-011

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-03 20:59:53 +00:00
6fe2ecf12b architect(ET): auto-commit from architect run_id=64
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Successful in 6s
CI / build (push) Has been skipped
2026-06-03 20:44:55 +00:00
2bf08a10e3 analyst(ET): auto-commit from analyst run_id=63
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Successful in 6s
CI / build (push) Has been skipped
2026-06-03 20:05:12 +00:00
44b7af9ad0 docs: init ET-011 business request
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Successful in 6s
CI / build (push) Has been skipped
2026-06-03 22:59:55 +03:00
d379e48c08 Merge pull request 'ORCH-3 (S-3) + M-5: safe deploy rollback + infra hardcode cleanup' (#20) from feature/ORCH-3-deploy-rollback into main
Some checks failed
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
2026-06-03 09:39:38 +03:00
Dev (OpenClaw)
39b15bec65 refactor(agents): parametrize infra hardcode (M-5)
Some checks failed
CI / lint (push) Failing after 5s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
architect.md: server host 82.22.50.71/mva154 -> ${DEPLOY_SSH_HOST:-mva154}. tester.md: repo path -> ${REPO_DIR:-...}, ui-test runner -> ${UI_TEST_RUNNER:-...}. Defaults preserve current behavior; prompts become portable.
2026-06-03 09:37:24 +03:00
Dev (OpenClaw)
c6b8826a66 fix(deploy): move rollback into deploy hook (S-3)
Remove dangerous git checkout $LAST_TAG from deployer prompt: it left the shared working copy in detached HEAD (breaking the next git pull) and did not roll back prod at all. Rollback now goes through the deploy hook (ssh ... bash ${HOOK} --rollback), which restores the app container to the previously running image. Narrow tools to Bash (git, curl) since the deployer no longer invokes docker directly.
2026-06-03 09:37:24 +03:00
65bb0d91bb Merge pull request 'chore: stop tracking runtime task files (.task*.md)' (#19) from chore/gitignore-task-files into main
Some checks failed
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
2026-06-02 20:31:26 +03:00
orchestrator-bot
d4a4855d7b docs(reviewer): require machine-readable verdict in 12-review.md frontmatter (S-5)
Some checks failed
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-02 20:05:03 +03:00
orchestrator-bot
4fadb789a1 chore: stop tracking runtime task files
Some checks failed
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 6s
CI / build (pull_request) Has been skipped
Add .task*.md to .gitignore and remove already-tracked task files from
the index. These are orchestrator runtime artifacts (B-3) and should not
be committed.
2026-06-02 20:02:18 +03:00
97f15379d7 Merge pull request 'deploy(ET-009): upgrade deploy log to FULL PASS' (#18) from deploy/ET-009-v0.0.2-update into main 2026-06-02 11:29:04 +03:00
ef5380f558 deploy(ET-009): upgrade deploy log to FULL PASS after nginx reload
Some checks failed
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
Operator reloaded nginx; public URL now returns 200 on all smoke endpoints.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-02 08:28:53 +00:00
8f5872e1cc Merge pull request 'deploy(ET-009): deploy log v0.0.2 + CHANGELOG' (#17) from deploy/ET-009-v0.0.2 into main 2026-06-02 10:02:06 +03:00
5521e7ab7b deploy(ET-009): deploy log v0.0.2 + CHANGELOG
Some checks failed
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
- Tag v0.0.2 cut from main b5ba7b2 (PR #16 merged).
- enduro_russia pipeline run: ok, 5 new + 36 updated, 0 errors (39 tracks in DB).
- wikiloc: 403 from WAF on first request, graceful stop (config-complete, scrape-blocked).
- Public URL returns 502 due to pre-existing nginx config bug
  (sites-enabled pointed to :5558, app listens on :5556). Patched the
  config file in place; awaits operator-side `systemctl reload nginx`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-02 07:01:38 +00:00
b5ba7b24f6 Merge pull request 'feat(ET-009): activate EnduroRussia + Wikiloc GPS sources' (#16) from feature/ET-009-et-009-gps-endurorussia-wikilo into main v0.0.2 2026-06-02 08:58:17 +03:00
45f3a95b91 test(ET-009): test report — 25/25 pytest, 24/24 js, PASS, ready to deploy
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 3s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-02 05:55:57 +00:00
94f6517742 docs(ET-009): reviewer round 2 — F-01/F-02 CLOSED, APPROVED
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 6s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 4s
CI / build (pull_request) Has been skipped
2026-06-02 05:27:07 +00:00
fc03746e4f fix(ET-009): dynamic source filter + working attribution (F-01, F-02)
Some checks failed
CI / lint (push) Failing after 5s
CI / test (push) Failing after 6s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
F-01 (P1): _buildGpsFiltersUI больше не хардкодит список источников —
подтягивает source_id из /api/gps-tracks/health.tracks_by_source
(ADR-013 §3 Решение D, опция D2). Маппинг source_id → label вынесен
в JS-константу GPS_SOURCE_LABELS. Активация четвёртого источника
теперь не требует изменений в этом коде.

F-02 (P1): attribution фиксируется в момент addSource, а не мутацией
src.attribution после. MapLibre AttributionControl не реагирует на
прямое присвоение — потому до этого фикса AC-15 проваливался бы в
UI-тестах. Теперь onPublicTracksCheckbox / restorePublicTracksState
сначала await _fetchGpsHealth() → _buildGpsAttributionString(),
потом _ensureGpsSources(map, attribution).

Добавлен кэш + in-flight Promise (window.gpsTracksLayer._healthCache /
_healthFetchPromise) — переоткрытие sheet'а фильтров не плодит
дублирующих сетевых запросов.

Все 24 node-теста gps_tracks.test.js зелёные.

Refs: ET-009
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 21:12:35 +00:00
3577ff32ac feat(ET-009): activate EnduroRussia + Wikiloc GPS sources
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
Конфиг-only активация двух новых источников GPS-треков поверх
pipeline ET-008. Не вводит новых компонентов, БД-таблиц, endpoint'ов.

Config:
- config/gps_sources.yaml: enduro_russia enabled=true, base_url исправлен
  на endurorussia.ru (без дефиса); добавлена запись wikiloc с
  max_tracks_per_run=50, activity_filter=[motorcycle, enduro].
- config/gps_regions.yaml: wikiloc добавлен в tsfo_plus_chuvashia.sources.

Parser:
- wikiloc.py: добавлен soft-cap max_tracks_per_run в collect(),
  извлечение created_at из GPX metadata/первого trkpt — для корректной
  межисточниковой дедупликации с EnduroRussia.

UI (src/web/gps_tracks.js):
- GPS_SOURCE_COLORS: добавлен цвет wikiloc (#4363d8).
- Дефолтный фильтр sources включает wikiloc.
- GPS_SOURCE_ATTRIBUTIONS: маппинг source_id → строка атрибуции;
  _updateGpsAttribution() подтягивает /api/gps-tracks/health и
  выставляет attribution с теми источниками, у которых tracks > 0.
- _buildGpsFiltersUI: чекбокс «Wikiloc» в #gps-source-grid.

Tests:
- Fixtures: 7 файлов в tests/fixtures/gps-tracks/.
- Unit: 10 UT-ER + 10 UT-WL — парсеры, MAPPING, bbox-фильтр,
  pagination, 429/403 graceful-stop, rate-limit, max_tracks_per_run.
- Integration: IT-ER-01, IT-WL-01, IT-WL-02, IT-DEDUP-01, IT-LIC-01
  через scripts.gps_collect.main + httpx.MockTransport.
- Contract: 2 CT-ER с маркером @pytest.mark.network (nightly only).
- JS: 2 новых теста на наличие wikiloc в SOURCE_COLORS и в фильтрах.

Linters/Tests: ruff clean (новые файлы), 166 pytest passed,
24 JS-tests passed.

Refs: ET-009
Acceptance: AC-01..AC-08, AC-14..AC-17 (для AC-09..AC-13 — продакшн-прогон)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 19:38:55 +00:00
4be7fbf3de feat(ET-009): architect deliverables — ADR, infra requirements, data requirements, tech risks, wikiloc parser stub
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 6s
CI / build (push) Has been skipped
2026-06-01 19:20:15 +00:00
eaa6b4cd27 feat(ET-009): analyst artifacts — BRD, TRZ, AC, test plan
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
2026-06-01 17:51:47 +00:00
9d7e5cd7e8 docs: init ET-009 business request
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
2026-06-01 20:30:37 +03:00
4c3d2da5e4 Merge pull request 'docs: operations runbook + README update' (#15) from docs/update-operations-runbook into main
Some checks failed
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
2026-06-01 20:10:26 +03:00
claude-bot
37af99eb6b docs: add operations runbook, update README with work items and infra
Some checks failed
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-01 20:10:02 +03:00
5ad4e76f95 Merge pull request 'feat(deploy): SSH deploy hook, Dockerfile includes scripts/docs' (#14) from fix/deploy-hook-ssh into main 2026-06-01 20:03:59 +03:00
claude-bot
e2bf99d05f feat(deploy): SSH deploy hook, Dockerfile includes scripts/docs
Some checks failed
CI / test (pull_request) Failing after 4s
CI / lint (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-01 20:03:41 +03:00
506ef2a6dc Merge pull request 'deploy(ET-008): deploy log v0.0.1 + CHANGELOG' (#13) from deploy/ET-008-v0.0.1 into main 2026-06-01 17:34:42 +03:00
5769217cc5 deploy(ET-008): merge feature/ET-008-gps → v0.0.1, write deploy log
Some checks failed
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
PR #12 merged. Frontend static deployed (gps_tracks.js 200).
Backend service gps-collector pending docker compose up.
Smoke: 7/8 PASS; api/gps-tracks/health 404 until service starts.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 14:34:14 +00:00
04d9d3e028 Merge pull request 'feat: ET-008-gps' (#12) from feature/ET-008-gps into main v0.0.1 2026-06-01 17:32:42 +03:00
claude-bot
af1a493cbf test(ET-008): round 3 - all P0/P1 PASS, 141+22 tests green
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-01 14:31:53 +00:00
1ffa178b38 fix(gps-tracks): aggregate last_pipeline_run in health endpoint (REQ-F-12)
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 3s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
Replace raw single-row fetch with aggregation over all pipeline_runs
rows sharing the latest started_at. Returns structured object with
regions[], sources_ok[], sources_error[], tracks_added instead of
a raw DB row with region_id/source_id strings.

Returns null when no runs exist (empty DB).

Update test_i40_health_endpoint: add db_with_pipeline_runs fixture
(two rows, same started_at, two regions) and assert the full
aggregated shape including concrete values.

Refs: ET-008
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 14:27:52 +00:00
claude-bot
7c9cb37ecd test(ET-008): round 2 - F-04 partial, E2E blocked (not deployed)
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 3s
CI / test (pull_request) Failing after 4s
CI / build (pull_request) Has been skipped
2026-06-01 14:24:27 +00:00
ba356ae317 fix(gps-tracks): rename health fields and fix layer insert priority (F-04, F-05)
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
F-04: rename gps_health() response fields per tester feedback:
  - total_tracks → tracks_total
  - by_activity  → tracks_by_activity
  - recent_pipeline_runs (list) → last_pipeline_run (object | null)
  Change LIMIT from 10 to 1; fetch single row instead of a list.

F-05: rewrite _findGpsInsertPosition with explicit priority order:
  1. gpx-layer-* (ET-006 GPX file layers) — highest priority
  2. route-* (ET-002 routing layers)
  Remove old combined find() that lacked clear priority semantics.

Add tests/web/gps_tracks.test.js (22 JS unit tests via node:test):
  - _findGpsInsertPosition priority logic (9 cases)
  - Filter state management — default state assertions (5 cases)
  - Color palette mapping and _buildColorExpression (8 cases)

Add tests/web/test_gps_tracks.py — Python pytest runner (8 static
  checks + node --test invocation).

Refs: ET-008

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 14:18:06 +00:00
claude-bot
3a6017cc82 test(ET-008): 132/132 pass, back-to:dev for F-04/F-05/web-tests
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 4s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-01 14:11:02 +00:00
edbe9a3044 fix(gps-tracks): normalise GeoJSON props, add health fields, OSM meta fetch, z-order fix
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 4s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 3s
CI / test (pull_request) Failing after 4s
CI / build (pull_request) Has been skipped
Refs: ET-008

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 12:42:36 +00:00
claude-bot
37190049db review(ET-008): findings - 1xP0, 4xP1, 3xP2, 4xP3
Some checks failed
CI / lint (push) Failing after 3s
CI / test (push) Failing after 5s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-01 12:36:30 +00:00
claude-bot
3734b98168 feat(ET-008): GPS tracks pipeline, API, frontend layer
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 4s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 5s
CI / build (pull_request) Has been skipped
2026-06-01 12:29:22 +00:00
0060003f28 feat(gps-tracks): ET-008 публичные GPS-треки с публичных платформ
Some checks failed
CI / lint (push) Failing after 4s
CI / test (push) Failing after 4s
CI / build (push) Has been skipped
CI / lint (pull_request) Failing after 4s
CI / test (pull_request) Failing after 4s
CI / build (pull_request) Has been skipped
Backend:
- Миграция gps_tracks_001_init.sql: таблицы tracks + pipeline_runs
- Пакет src/api/gps_tracks/: models, db (WAL+upsert с dedup), dedup
  (bbox+length+date bucket-hash), mvt (LRU-кэш 1024 тайла), endpoint
  (GET /api/gps-tracks, GET /api/gps-tracks/tiles/{z}/{x}/{y}.mvt,
   GET /api/gps-tracks/health, POST /api/gps-tracks/cache/clear), config
- Парсеры: osm (split_bbox, haversine, defusedxml XXE-защита),
  enduro_russia + ttrails — заглушки (ADR-010/011 proposed, блокированы)
- Licensing guard: pipeline проверяет status ADR-файла до запуска источника
- scripts/gps_collect.py: CLI с --region/--source/--dry-run/--gc

Frontend:
- src/web/gps_tracks.js: двухрежимный слой (MVT z≤11, GeoJSON z≥12),
  debounced fetch + AbortController, фильтры активности/источника,
  цветовая палитра by-source/by-activity, halo на спутнике, popup трека,
  restorePublicTracksState(), localStorage persistence
- index.html: чекбокс «Публичные треки» в terrain-popup, #sheet-gps-filters
- app.css: .terrain-link-btn, .gps-filter-grid, .track-popup
- app.js: вызов restorePublicTracksState() в rebuildMapOverlays(),
  applyGpsHaloVisibility() в applyBaseLayer()

Конфиги:
- config/gps_sources.yaml: osm (enabled), enduro_russia/ttrails (disabled)
- config/gps_regions.yaml: ЦФО+Чувашия (enabled), Кавказ (disabled)

Docker:
- gps-collector service с profiles: [batch]

Тесты: 48 новых тестов (unit + integration), 125/125 pass

Refs: ET-008

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 12:28:54 +00:00
a0284e046b reviewer(ET): auto-commit from reviewer run_id=41
All checks were successful
CI / lint (push) Successful in 4s
CI / test (push) Successful in 6s
CI / lint (pull_request) Successful in 4s
CI / build (push) Successful in 1s
CI / test (pull_request) Successful in 5s
CI / build (pull_request) Successful in 1s
2026-06-01 12:17:33 +00:00
bd8f60879e developer(ET): auto-commit from developer run_id=40
All checks were successful
CI / lint (push) Successful in 3s
CI / lint (pull_request) Successful in 3s
CI / test (push) Successful in 6s
CI / build (push) Successful in 2s
CI / test (pull_request) Successful in 5s
CI / build (pull_request) Successful in 1s
2026-06-01 12:17:09 +00:00
claude-bot
f5fc8b121d chore: advance to development stage
All checks were successful
CI / lint (push) Successful in 4s
CI / test (push) Successful in 5s
CI / build (push) Successful in 1s
2026-06-01 12:15:18 +00:00
claude-bot
d33f360a2f architect(ET-008): ADRs, infra/data requirements, tech risks
All checks were successful
CI / lint (push) Successful in 4s
CI / test (push) Successful in 6s
CI / build (push) Successful in 2s
2026-06-01 12:15:05 +00:00
claude-bot
0840818c9a analyst(ET-008): BRD, TRZ, AC, TestPlan, UI tests v2
All checks were successful
CI / lint (push) Successful in 5s
CI / test (push) Successful in 5s
CI / build (push) Successful in 1s
2026-06-01 11:44:40 +00:00
claude-bot
dc557ab884 docs(ET-008): clean business request + merged analyst prompt fix
All checks were successful
CI / lint (push) Successful in 4s
CI / test (push) Successful in 5s
CI / build (push) Successful in 2s
2026-06-01 11:29:29 +00:00
e8dbea6f13 merge main 2026-06-01 11:29:29 +00:00
fd28a53e12 Merge pull request 'fix(analyst): add explicit Write tool instruction' (#11) from fix/analyst-prompt into main 2026-06-01 14:27:50 +03:00
019d944557 fix(analyst): add explicit Write tool instruction
All checks were successful
CI / lint (pull_request) Successful in 4s
CI / test (pull_request) Successful in 6s
CI / build (pull_request) Successful in 3s
2026-06-01 14:27:29 +03:00
bd7903e191 analyst(ET): auto-commit from analyst run_id=34 2026-06-01 11:10:50 +00:00
514490efd9 docs: init ET-008 business request
All checks were successful
CI / lint (push) Successful in 4s
CI / test (push) Successful in 6s
CI / build (push) Successful in 2s
2026-06-01 14:01:37 +03:00
c18b4280f4 feat(infra): update deployer agent system prompt
Some checks failed
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
2026-06-01 06:26:53 +00:00