stream
7f6b39ab4f
fix(deployer): require deploy_status frontmatter in 14-deploy-log.md (orchestrator БАГ 8 gate)
2026-06-04 02:48:17 +03:00
d1524a61f8
Merge pull request 'deployer(ET-011): tag v0.0.3 + deploy log (FAILED — infra blocker)' ( #22 ) from deploy/ET-011-v0.0.3-log into main
2026-06-04 02:11:59 +03:00
4b529004ba
deployer(ET-011): tag v0.0.3, deploy FAILED — infra blocker on test host
...
CI / lint (pull_request) Successful in 4s
CI / test (pull_request) Successful in 7s
CI / build (pull_request) Successful in 2s
PR #21 merged to main and tag v0.0.3 pushed, but docker-compose roll on
test host did not happen: /home/slin/bin/enduro-deploy-hook.sh exits with
"Permission denied" on /var/log/enduro-trails/deploy-hook.log
(root-owned, no NOPASSWD sudo for slin). Healthcheck/smoke/rollback all
skipped — new code is on main but old image still serves traffic.
Action for ops: see docs/work-items/ET-011/14-deploy-log.md
("Что нужно от ops, чтобы доехать"). After fix, re-run deploy hook —
PR/tag do not need to be redone.
2026-06-03 23:11:31 +00:00
b21f543289
Merge pull request 'feat(gps-tracks): GPX download from public track popup (ET-011)' ( #21 ) from feature/ET-011-popup-enduro-trails into main
v0.0.3
2026-06-04 02:08:44 +03:00
d2bc769160
tester(ET): auto-commit from tester run_id=70
CI / test (push) Failing after 4s
CI / lint (push) Successful in 4s
CI / build (push) Has been skipped
CI / lint (pull_request) Successful in 4s
CI / test (pull_request) Successful in 7s
CI / build (pull_request) Successful in 2s
2026-06-03 23:08:11 +00:00
ff18afed8c
reviewer(ET): auto-commit from reviewer run_id=69
CI / lint (push) Successful in 4s
CI / lint (pull_request) Successful in 4s
CI / test (push) Successful in 7s
CI / build (push) Successful in 2s
CI / test (pull_request) Successful in 6s
CI / build (pull_request) Successful in 1s
2026-06-03 23:04:25 +00:00
721b33a2f6
fix(gps-tracks): address ET-011 review — JS UI tests + flat 403 contract
...
CI / lint (push) Successful in 4s
CI / test (push) Successful in 6s
CI / lint (pull_request) Successful in 4s
CI / build (push) Successful in 2s
CI / test (pull_request) Successful in 6s
CI / build (pull_request) Successful in 4s
Закрывает findings из docs/work-items/ET-011/12-review.md (REQUEST_CHANGES,
попытка 3/3):
P1-01 — добавлены поведенческие JS unit-тесты UI download-flow
- tests/web/track_download.test.js — 28 кейсов (node --test):
• _parseFilenameFromCD — RFC 5987 приоритет, plain fallback,
битый percent-encoding, null/empty (REQ-F-05.2, AC-2 UI)
• _handleDownloadError — 400/403/404/413/5xx тосты, defensive
при отсутствии showToast, поддержка flat (ADR-015 §G) и legacy
wrapped 403-форм (REQ-F-05.4, AC-7 UI)
• _renderTrackPopupHtml — наличие кнопки, aria-label «Скачать GPX»,
data-track-id, отсутствие при невалидном id, регрессия прочих
полей (REQ-F-01, AC-1)
- tests/web/test_track_download.py — pytest-обёртка (статические
проверки + запуск Node-раннера), исполняется в обычном pytest tests/
- 04b-ui-test-cases.md: AC-13 (mobile-bbox) явно маркирован как
MANUAL release-smoke (Playwright-раннер в проекте не настроен;
альтернатива согласована reviewer'ом в P1-01).
P2-01 — устранено расхождение «doc vs runtime» по контракту 403
- endpoint.py: HTTPException(detail={...}) → JSONResponse(content={...}),
чтобы FastAPI не оборачивал dict во второй слой «detail». Контракт
теперь совпадает с ADR-015 §G и ADR-014 §6:
{"detail":"source_forbidden","external_urls":[...]}
- test_gps_tracks_download.py IT-05: упрощено — body уже плоский,
без двухуровневого `body.get("detail", body)` workaround.
- gps_tracks.js::_handleDownloadError: flat-форма стала приоритетной,
wrapped-форма оставлена как defensive fallback (с комментарием).
Регрессия: 89/89 API-тестов + 24/24 предыдущих JS-тестов + 28 новых
JS-тестов download-flow проходят. ruff check — clean.
Refs: ET-011
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-06-03 23:01:19 +00:00
716bff3126
reviewer(ET): auto-commit from reviewer run_id=67
CI / lint (push) Successful in 4s
CI / lint (pull_request) Successful in 4s
CI / test (push) Successful in 7s
CI / build (push) Successful in 3s
CI / test (pull_request) Successful in 8s
CI / build (pull_request) Successful in 2s
2026-06-03 22:53:53 +00:00
7d8407a378
fix(ci): hoist imports to satisfy E402 + declare runtime/test deps in pyproject
...
CI / lint (push) Successful in 5s
CI / test (push) Successful in 7s
CI / lint (pull_request) Successful in 4s
CI / test (pull_request) Successful in 7s
CI / build (pull_request) Successful in 2s
CI / build (push) Successful in 18s
CI failures на feature/ET-011 были вызваны двумя проблемами:
1. ruff `E402 Module level import not at top of file` × 10 в src/api/main.py:
- 9 ошибок от ET-008 (GPS_TRACKS_DB_PATH между импортами) +
1 новая от ET-011 (`from src.api.gps_tracks.endpoint import ...` после
определения `app`). Перенёс все импорты наверх; константы
GPS_TRACKS_DB_PATH и GPS_SOURCES_CONFIG_PATH теперь сразу после import-блока,
а создание router-а остаётся в нижней части файла (зависит от `app`).
2. pyproject.toml не объявлял runtime-deps, которые реально импортируются
в src/ (defusedxml, pyyaml) и в тестах (lxml). Dockerfile брал их из
src/api/requirements.txt, но CI jobs `lint`/`test` ставят `.[dev]` —
поэтому `pytest tests/` падал на ModuleNotFoundError при коллекции
тестов из ET-008/ET-009/ET-011. Добавил недостающие пины в pyproject
(defusedxml/pyyaml в основные deps, lxml — только в dev, нужен для
XSD-валидации в test_gps_tracks_download/_gpx_builder).
Проверено локально в чистом venv после `pip install .[dev]`:
- `ruff check src/` → All checks passed
- `pytest tests/` → 200 passed, 2 deselected
Refs: ET-011
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-06-03 22:48:27 +00:00
eea6c846c2
feat(gps-tracks): GPX download from public track popup
...
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
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
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
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
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)
...
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
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)
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
...
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
...
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
...
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
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
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)
...
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
...
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
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
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
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
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
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
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
...
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
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)
...
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)
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)
...
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
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
...
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
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
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-треки с публичных платформ
...
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
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
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
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