Skip to content

fix(tracker-api): wire CoreApi:BaseUrl direct to Core /api/v1 (LV-18 config residual) - #76

Merged
beyondnetPeru merged 1 commit into
mainfrom
claude/ecstatic-poincare-29b7a4
Jul 25, 2026
Merged

fix(tracker-api): wire CoreApi:BaseUrl direct to Core /api/v1 (LV-18 config residual)#76
beyondnetPeru merged 1 commit into
mainfrom
claude/ecstatic-poincare-29b7a4

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

What

Fixes the committed CoreApi:BaseUrl in the tracker-api BFF, which pointed at the tracker-gateway's imaginary /api/core/api/v1 prefix. With that value the tracker-api → gateway → Core evaluation hop 404s: the client posts to /api/core/api/v1/evaluate, which falls to the gateway's @All('*') catch-all.

Why this topology (decision)

The hop is wired direct to the Core's /api/v1 surface — the intended topology, already decided and documented:

  • ADR T-038 — the tracker-api BFF is the satellite's sole Core client; it calls /api/v1 directly, never through the gateway.
  • ADR T-052 / gap LV-18 — the /api/core prefix is the gateway's aggregation facade for external consumers; it does not exist on the Core pod ("the /api/core prefix is imaginary… the real base is /api/v1 directly").
  • Every other config already agrees: the code default (CoreEvaluationOptions.cs), evolith.satellite.json, all Helm values*.yaml, docker-compose.fullstack.yml, and the live-test defaults.

This is a sibling residual of gap LV-18, whose earlier closure rebound the MCP tools to the BFF but never corrected the BFF's own Core-client default. It stayed hidden because compose/Helm mask it via a CoreApi__BaseUrl env override — only a run against the committed config hit the bug.

Change

BaseUrl: http://localhost:4000/api/core/api/v1http://localhost:3001/api/v1 (compose Core host port), with the topology documented inline.

Verification (e2e against the running full stack)

Request HTTP Meaning
POST :5100/api/v1/core/evaluate (tracker-api BFF) 200, provenance=core, coreEndpoint=/api/v1/evaluate direct hop works, real Core verdict
POST :4000/api/core/api/v1/evaluate (old value) 404 the bug reproduced
POST :3001/api/core/evaluate (on the Core) 404 /api/core is imaginary on the Core

Files

  • src/apps/tracker-api/Tracker.Presentation/appsettings.json — the fix + inline topology note
  • evolith.satellite.json — corrected the misleading note (the seed of the broken value)
  • docs/LOCAL_DEV_WITH_K8S_CORE.md / .es.md — updated the now-stale caveats
  • docs/audit/tracker-gap-tracking.md + tracker-gap-reference-catalog.md — recorded the LV-18 config-residual closure

Discovered while building the GT-447 Objective-1 local bring-up.

🤖 Generated with Claude Code

…config residual)

The committed CoreApi:BaseUrl pointed at the tracker-gateway's imaginary
/api/core/api/v1 prefix, so the tracker-api -> gateway -> Core evaluation hop
404'd: the client posts to /api/core/api/v1/evaluate, which falls to the
gateway's @ALL('*') catch-all. Every other config already wires this hop
DIRECT to the Core's /api/v1 surface per ADR T-038 (the BFF is the Core's sole
client); the /api/core prefix is the gateway's aggregation facade for external
consumers (ADR T-052), never reachable from the Core pod.

Set BaseUrl to http://localhost:3001/api/v1 (the compose Core host port) and
document the topology inline. This is a sibling residual of gap LV-18, whose
earlier closure rebound the MCP tools to the BFF but never corrected the BFF's
own Core-client default -- compose/Helm mask it via CoreApi__BaseUrl env
override, so only a run against the committed config hit the bug.

Verified e2e against the running full stack (docker-compose.fullstack.yml):
- POST :5100/api/v1/core/evaluate -> 200, provenance=core, coreEndpoint=/api/v1/evaluate
- old path POST :4000/api/core/api/v1/evaluate -> 404

Aligned with the code default (CoreEvaluationOptions.cs), evolith.satellite.json,
all Helm values, the full-stack compose, and the live-test defaults. Also
corrected the misleading evolith.satellite.json note (the seed of the broken
value) and the now-stale LOCAL_DEV_WITH_K8S_CORE caveats (EN+ES), and recorded
the config-residual closure on the gap board + reference catalog.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@beyondnetPeru
beyondnetPeru merged commit 61dc88d into main Jul 25, 2026
10 of 11 checks passed
@beyondnetPeru
beyondnetPeru deleted the claude/ecstatic-poincare-29b7a4 branch July 25, 2026 02:39
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