# AGENTS - Gateway WebService ## Mission - Provide a single HTTP/HTTPS ingress that authenticates callers, routes to microservices over the Router binary protocol, and aggregates OpenAPI and health signals. ## Roles - Backend engineer (.NET 10, C# preview) for Gateway host, routing, and transport integration. - QA engineer (xUnit, WebApplicationFactory, deterministic fixtures). - Docs maintainer for gateway module/runbook updates when behavior changes. ## Required Reading - docs/README.md - docs/07_HIGH_LEVEL_ARCHITECTURE.md - docs/modules/platform/architecture-overview.md - docs/modules/gateway/architecture.md - docs/modules/gateway/openapi.md - docs/modules/router/architecture.md - docs/modules/authority/architecture.md - docs/product-advisories/archived/2025-12-21-reference-architecture/20-Dec-2025 - Stella Ops Reference Architecture.md ## Working Directory & Boundaries - Primary scope: src/Gateway/** - Tests: src/Gateway/__Tests/** - Allowed shared libraries: src/__Libraries/StellaOps.Router.Gateway, src/__Libraries/StellaOps.Router.Transport.Tcp, src/__Libraries/StellaOps.Router.Transport.Tls, src/__Libraries/StellaOps.Configuration, src/Authority/StellaOps.Authority/StellaOps.Auth.ServerIntegration - Avoid cross-module edits unless the sprint explicitly calls them out. ## Determinism & Offline Rules - Deterministic ordering for routing selections, OpenAPI output, and metrics labels. - No network calls in tests; use in-memory transports or local fixtures. - Use UTC timestamps and stable correlation IDs. ## Configuration & Security - Use StellaOps.Configuration defaults and environment prefix GATEWAY_. - Validate options on startup; fail fast on invalid TLS/auth settings. - Do not log secrets or raw tokens; redact or hash where needed. ## Testing Expectations - Unit tests for routing decisions, transport client, OpenAPI caching, and options validation. - Integration tests using Router.Transport.InMemory to validate request routing and streaming. ## Workflow - Update sprint status in docs/implplan/SPRINT_*.md when starting/finishing work. - If blocked by missing contracts or docs, mark the task BLOCKED in the sprint and record in Decisions & Risks.