Repository navigation
Conversation
2 new issues
|
|
Coverage Impact Unable to calculate total coverage change because base branch coverage was not found. Modified Files with Diff Coverage (16) 🤖 Increase coverage with AI coding...🚦 See full report on Qlty Cloud » 🛟 Help
|
nbouliol
left a comment
There was a problem hiding this comment.
Spec (PRD-1354): conforms, except the addBff() 503 messages, which keep "The embedded BFF" against ruling 4 of the grill.
…-key origin warning
nbouliol
left a comment
There was a problem hiding this comment.
Approved after /verify-fixes run 1979-20261007084553-nbouliol-verify: 4 findings of 1979-20261007073258-nbouliol closed or accepted, none reopened.

Customer-facing strings say "Gateway API" instead of "BFF", config errors from
addGateway({ api })name the option the customer wrote, and browsers can read the deprecation and version headers. refs PRD-1354What
info.title→Forest Gateway API, and every product-noun "BFF" in document descriptions (errors, retry-after headers, AI relay, timezone, servers, security schemes — "a Gateway API key") → "Gateway API"; env-var mentions (BFF_AGENT_TIMEOUT_MS,BFF_OPENAPI_ENABLED,BFF_PUBLIC_URL) unchanged.sessionExpireddefault,Invalid Gateway API base patherror, embedded 503 messages underaddGateway()→ "Gateway API" (theaddBff()503s stay byte-identical per AC2; errortypecodes unchanged).Access-Control-Expose-Headers: Deprecation, Link, Retry-After, X-Forest-Gateway-Version, X-Forest-Bff-Versionon allowed responses.X-Forest-Gateway-Versioncarries@forestadmin/agent's version in embedded mode (bothaddBff()andaddGateway({ api })), next to the unchangedX-Forest-Bff-Version.parseConfig(env, labels?)+buildBff({ labels?, name? }): a label map covering every key their messages name;addGateway({ api })passes option labels (api.tokenEncryptionKey, …),addBff()andforest-bffkeep today's messages byte-identical.addGateway():[Gateway API]log tag, "The Gateway API mounted on …" mount log, Gateway API wording of the no-allowed-origin boot warning.Why
The embedded API is sold as the Gateway API; every string the customer reads must name it, and errors must point at the option the customer actually wrote rather than an internal env key the embedded mode never reads.
How
agent-bff: label resolver (CONFIG_KEYS/ConfigLabels) feeds every config-error message and boot warning; CORS middleware exposes the five headers next toAccess-Control-Allow-Origin; string sweep inopenapi-document.ts,schemas.ts,unfolded-paths.ts,docs-page.ts,docs-samples.ts.agent:EmbeddedBffMount.gatewayflag drives tag/labels/name;buildBffgetsgatewayVersion= the agent's own version.gatewayVersionoption) frommain: the train was cut before it landed, and this story builds on the option. No edits to its content, so the wave merge back to main sees identical bytes on both sides.Definition of Done
General
Security
Verification
yarn workspace @forestadmin/agent-bff testyarn workspace @forestadmin/agent testlerna run build(agent-bff, agent + deps)api.tokenEncryptionKeynames the optionaddBff()invalid option keeps today's message/bffrouteForest Gateway API, no "BFF"addGateway()warnings say "Gateway API"feat/gateway-r1)addBff()/forest-bffmessages byte-identical across legs; OpenAPI titleForest Gateway API, 0 bare "BFF" (env-var mentions literal);Access-Control-Expose-Headers+X-Forest-Gateway-Versioncarrying the agent version;[Gateway API]boot tags. Guards identical across legs: conformance, context/discovery signatures, boot no-drift, errortypecodes. Not replayed: MCP describe (diff touches 0 mcp-server files). Replayed on fix head562284e84after review fixes: exhaustive probe-output diff vs the previous run = exactly the 2 restoredaddBff()503 strings, every other frozen value byte-identical, guards identical; CI 23 pass / 0 fail. Replayed on review-fix head010887a98: subject exit 0 PASS (all measurable cells), baseline exit 3 negative-confirmed (frozen pre-rename strings refuse as expected); CI 29 pass / 0 fail. Review threads on this head: OpenAPIGateway API keydedup, per-key-origin label namingapi.allowedOriginsunderaddGateway(), gateway drain log pin — fixed;addBff()503 wording — byte-identical per AC2/AC3 of the ticket (amended 2026-10-07)