fix(tracker-api): wire CoreApi:BaseUrl direct to Core /api/v1 (LV-18 config residual) - #76
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Fixes the committed
CoreApi:BaseUrlin the tracker-api BFF, which pointed at the tracker-gateway's imaginary/api/core/api/v1prefix. With that value thetracker-api → gateway → Coreevaluation 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/v1surface — the intended topology, already decided and documented:/api/v1directly, never through the gateway./api/coreprefix is the gateway's aggregation facade for external consumers; it does not exist on the Core pod ("the/api/coreprefix is imaginary… the real base is/api/v1directly").CoreEvaluationOptions.cs),evolith.satellite.json, all Helmvalues*.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__BaseUrlenv override — only a run against the committed config hit the bug.Change
BaseUrl:http://localhost:4000/api/core/api/v1→http://localhost:3001/api/v1(compose Core host port), with the topology documented inline.Verification (e2e against the running full stack)
POST :5100/api/v1/core/evaluate(tracker-api BFF)provenance=core,coreEndpoint=/api/v1/evaluatePOST :4000/api/core/api/v1/evaluate(old value)POST :3001/api/core/evaluate(on the Core)/api/coreis imaginary on the CoreFiles
src/apps/tracker-api/Tracker.Presentation/appsettings.json— the fix + inline topology noteevolith.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 caveatsdocs/audit/tracker-gap-tracking.md+tracker-gap-reference-catalog.md— recorded the LV-18 config-residual closureDiscovered while building the GT-447 Objective-1 local bring-up.
🤖 Generated with Claude Code