Skip to content

docs(adr): accept ADR-0001 — shared Semrush client ownership boundary#1781

Open
aliciadriani wants to merge 3 commits into
mainfrom
docs/adr-0001-semrush-client-ownership
Open

docs(adr): accept ADR-0001 — shared Semrush client ownership boundary#1781
aliciadriani wants to merge 3 commits into
mainfrom
docs/adr-0001-semrush-client-ownership

Conversation

@aliciadriani

@aliciadriani aliciadriani commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Spec

LLMO-5975: agree the ownership boundary for the shared Semrush client before the facade
build-out (LLMO-5977) lands, so subsequent PRs don't re-litigate it.

Boundary decided:

  • Shared client owns transport: IMS Bearer auth, retries/backoff, request timeouts, a
    typed error taxonomy.
  • Consumers own: error→HTTP translation, caching, redaction.
  • Test: is it true for every consumer (→ shared) or specific to one (→ consumer)?

LLMO-5980 disposition: investigation confirmed transport behavior has already
diverged between spacecat-shared's client and spacecat-api-service's hand-built
Serenity transport (shared has retry/backoff, api-service has none). That divergence
is closed directly via a targeted retry-parity fix in api-service (tracked separately,
not gated on this ADR). Migrating api-service onto the shared client itself is recorded
as "revisit deliberately" — not funded now, not closed as a non-goal. It's a deliberate
future call, sequenced after the facade exists, not something the resilience gap should
stampede.

Implementation plan

  • Adds docs/adr/0001-shared-semrush-client-ownership.md — status Accepted, starts a
    docs/adr/ practice in this repo (previously no ADR file/directory existed anywhere
    in spacecat-shared; tickets were tracked purely via inline external Jira links).
  • No code changes. Doc-only PR.
  • Follow-on work referenced in the ADR: LLMO-5977 (facade, gated on this), LLMO-5978+5979
    (typed errors + timeouts, one combined hardening PR), LLMO-5980 (deferred), LLMO-5976
    (spec-verify CI gate — independent, already shipped in test(project-engine-client,user-manager-client): spec-verify checksum gate (LLMO-5976) #1777).

Alicia Adriani added 2 commits July 6, 2026 12:58
Records the accepted boundary for LLMO-5975: shared client owns transport
(auth, retry/backoff, timeouts, typed errors); consumers own error->HTTP
translation, caching, redaction. Records LLMO-5980 (api-service migration)
as deliberately deferred, not auto-funded by the confirmed transport-drift
trigger -- the live resilience gap is closed directly in api-service
instead (tracked separately).
Full revision, not a patch: adds Scope + Non-goals sections, rewrites Context
to reflect that api-service already consumes the shared Project Engine/User
Manager clients (retry was disabled via maxRetries:0, restored by #2766),
and replaces the LLMO-5980 duplication framing with the confirmed four-path
coverage map (Project Engine + User Manager migrated; Elements and AI
Visibility are not). Boundary section unchanged.
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown

This PR will trigger no release when merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant