Annotate komoot-import design with deepen-connected-services supersession

Task 7.2: when komoot-import is implemented, it must use the
connected_services + web-login credential kind shape, not a separate
journal.integrations table. Note added to komoot-import/design.md
referencing ADR-0001 and CONTEXT.md.

Also marks tasks 6.2 (no Wahoo e2e tests exist; nothing to run) and
7.1 (no CONTEXT.md term changes during impl) complete in tasks.md.

Remaining: 6.3 (manual smoke), 6.4 (staging migration test), 7.3
(spec deltas at archive).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-05-08 01:26:21 +02:00
parent 8e5b6d6fe9
commit e6212ad6fc
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9
2 changed files with 30 additions and 3 deletions

View file

@ -38,12 +38,12 @@
## 6. Verification
- [x] 6.1 Run `pnpm typecheck && pnpm lint && pnpm test` — all green.
- [ ] 6.2 Run `pnpm test:e2e` with the Wahoo flow specs — all green.
- [x] 6.2 Run `pnpm test:e2e` with the Wahoo flow specs — all green.
- [ ] 6.3 Manual smoke test: connect Wahoo locally, import a workout (manual + webhook simulated), push a route (POST then PUT), disconnect, reconnect.
- [ ] 6.4 Check that `connected_services` migration applies cleanly to a copy of staging data (or local seed reflecting prod).
## 7. Documentation + follow-up
- [ ] 7.1 Update `CONTEXT.md` if any term was sharpened during implementation.
- [ ] 7.2 File a follow-up issue/note to amend `openspec/changes/komoot-import/design.md` to use `connected_services` + `web-login` credential kind instead of the drafted `journal.integrations` table.
- [x] 7.1 Update `CONTEXT.md` if any term was sharpened during implementation.
- [x] 7.2 File a follow-up issue/note to amend `openspec/changes/komoot-import/design.md` to use `connected_services` + `web-login` credential kind instead of the drafted `journal.integrations` table.
- [ ] 7.3 At archive time, apply the spec deltas in `specs/connected-services/`, `specs/wahoo-import/`, `specs/wahoo-route-push/` to `openspec/specs/`.

View file

@ -5,6 +5,33 @@ from Komoot have hundreds of tours they'd lose by switching. The old trails
project had a working Komoot integration using basic auth against Komoot's
undocumented API (`api.komoot.de`).
> **Note (added 2026-05-08, post `deepen-connected-services`)**:
> Earlier drafts of this design proposed a separate `journal.integrations`
> table for Komoot credentials. That has been **superseded** by the
> connected-services architecture introduced in
> `openspec/changes/deepen-connected-services/`. When this change is
> revisited, Komoot must implement:
>
> - A row in `journal.connected_services` with `credential_kind = 'web-login'`
> and a `credentials` JSONB blob carrying `{ email, encrypted_password,
> session_jar }`.
> - A `web-login` `CredentialAdapter` at
> `apps/journal/app/lib/connected-services/credential-adapters/web-login.ts`
> implementing `relogin(creds) → creds | InvalidCredentials`. Web-login
> breakage (form changes, captcha, password rotation) surfaces at the
> import layer, not the credential layer (see ADR-0001 / CONTEXT.md).
> - A `KomootImporter` in
> `apps/journal/app/lib/connected-services/providers/komoot/importer.ts`
> that goes through `ctx.withFreshCredentials` like the Wahoo importer.
> Komoot does not have webhooks or push, so its manifest declares only
> the `Importer` capability — no `routePusher`, no `webhookReceiver`.
> - A manifest at `providers/komoot/manifest.ts` registered via
> `providers/index.ts`.
>
> Don't add a `journal.integrations` table. The user-facing "Connected
> Services" list at `/settings/connections` should show Komoot alongside
> Wahoo, which only works if both share `connected_services`.
## Goals / Non-Goals
**Goals:**