Skip to content

Latest commit

 

History

History
302 lines (235 loc) · 37.4 KB

File metadata and controls

302 lines (235 loc) · 37.4 KB

Backend Module Ownership Map & Maintainers Table

This document maps every backend module to its functional domain, primary owner, and secondary reviewer. Use it to route issues, PR reviews, and incident escalations to the correct maintainer quickly.

Related documents:


Maintainer Registry

How to use this table

  1. Find the module or feature area affected by the issue / PR in the Module Ownership Map below.
  2. Look up the Primary and Secondary maintainers in this registry.
  3. Assign or request review from the Primary first. If Primary is unavailable, go to Secondary.
  4. For P0/P1 incidents, page both Primary and Secondary immediately (see escalation rules in TRIAGE_ROTATION_CALENDAR.md).
Handle Name Role Domains of Expertise Slack Timezone
@backend-lead [TBD] Backend Tech Lead All domains; architecture & breaking changes #backend-oncall [TBD]
@auth-owner [TBD] Senior Engineer Authentication, RBAC, Wallet Security #backend-oncall [TBD]
@data-owner [TBD] Senior Engineer Database, Prisma, Migrations, Exports #backend-oncall [TBD]
@vault-domain-owner [TBD] Domain Specialist Vault state, Transactions, APY, Reconciliation #backend-oncall [TBD]
@reliability-owner [TBD] Reliability Engineer Observability, Rate Limiting, Circuit Breakers, Jobs #backend-oncall [TBD]
@integrations-owner [TBD] Integrations Engineer Webhooks, Stellar/Soroban RPC, Email, S3 #backend-oncall [TBD]
@platform-owner [TBD] Platform Engineer CI/CD, Deployment, Infra, Security scanning #platform-oncall [TBD]

To update this registry (e.g., new hire, role change):

  1. Open a docs-only PR modifying this table.
  2. Tag the current Backend Tech Lead for approval.
  3. Notify the team so triage rotation calendars are updated.

Module Ownership Map

Modules are grouped by functional domain. Each entry lists:

  • Domain / Module — High-level area and the specific source files under backend/src/.
  • Primary — Default assignee and first reviewer for changes in this area.
  • Secondary — Backup reviewer and escalation target.
  • CriticalityCore (P0 if broken), High (P1), Medium (P2), Low (P3).
  • Related Tests — Key test files under backend/src/__tests__/ that guard this module.
  • Labels — GitHub labels to apply when routing.

1. Application Bootstrap & Entrypoint

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Server entry, route mounting, dependency wiring @backend-lead @reliability-owner Core index.ts, swagger.ts, prisma.ts, prismaClient.ts, database.ts api.test.ts backend, api, core
Graceful shutdown & drain @reliability-owner @backend-lead High gracefulShutdown.ts backend, reliability
Request context & scoped state @backend-lead @auth-owner High requestContext.ts, types/express.d.ts requestContext.test.ts backend, core
OpenTelemetry tracing @reliability-owner @backend-lead Medium tracing.ts backend, observability

2. Authentication, Authorization & Identity Security

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
JWT login, nonce, refresh, logout @auth-owner @backend-lead Core auth.ts auth.test.ts backend, auth, security
Wallet nonce, signature & replay protection @auth-owner @backend-lead Core walletNonce.ts, walletSignature.ts, walletLock.ts, walletUtils.ts walletNonce.test.ts, walletUtils.test.ts backend, auth, security, wallet
API Key lifecycle & validation @auth-owner @backend-lead Core middleware/apiKeyAuth.ts, scopedAdminTokens.ts rbac.test.ts backend, auth, rbac, security
API Key audit trail @auth-owner @data-owner High apiKeyAudit.ts backend, audit, security
Role-Based Access Control (admin tiers) @auth-owner @backend-lead Core middleware/rbac.ts rbac.test.ts backend, rbac, security
Admin impersonation sessions @auth-owner @backend-lead High impersonationSessionService.ts impersonationSessions.test.ts backend, auth, admin, security
Tenant guard (multi-tenancy hooks) @auth-owner @backend-lead Medium middleware/tenantGuard.ts backend, auth
Wallet query guard (authorization) @auth-owner @vault-domain-owner High middleware/walletQueryGuard.ts walletQueryGuard.test.ts backend, auth, security
Wallet signed-action middleware @auth-owner @vault-domain-owner Core middleware/walletSignedAction.ts backend, auth, wallet

3. Middleware Stack (Request Pipeline)

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
CORS & origin restriction @auth-owner @reliability-owner High middleware/cors.ts cors.test.ts backend, middleware, security
Correlation ID injection @reliability-owner @backend-lead Medium middleware/correlationId.ts backend, observability, middleware
Structured logging @reliability-owner @backend-lead Medium middleware/structuredLogging.ts backend, observability, middleware
Request timeout per route tier @reliability-owner @backend-lead High middleware/timeoutMiddleware.ts timeoutMiddleware.test.ts backend, reliability, middleware
Error boundary & error formatting @reliability-owner @backend-lead High middleware/errorBoundary.ts, redaction.ts, sanitization.ts errorBoundary.test.ts, sanitization.test.ts backend, reliability, middleware
Zod request validation @auth-owner @backend-lead High middleware/validate.ts validation.test.ts backend, middleware
Payload size limits (tiered body parser) @reliability-owner @auth-owner High middleware/payloadLimit.ts payloadLimit.test.ts backend, middleware, security
Geofencing / country-based blocking @auth-owner @reliability-owner High middleware/geofencing.ts geofencing.test.ts backend, middleware, security
Allowlist middleware @auth-owner @vault-domain-owner High middleware/allowlist.ts allowlist.test.ts backend, middleware, whitelist
Response caching middleware @reliability-owner @data-owner High middleware/cache.ts backend, cache, middleware
Adaptive throttling (SLO-driven) @reliability-owner @backend-lead Medium middleware/adaptiveThrottle.ts backend, reliability, middleware
Withdrawal daily limit override @vault-domain-owner @auth-owner High middleware/withdrawalDailyLimit.ts withdrawalDailyLimit.test.ts backend, vault, limits

4. Rate Limiting & Throttling

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Rate limiter factory (Redis + memory tiers) @reliability-owner @auth-owner Core rateLimiter.ts rateLimiter.test.ts, rateLimiter.property.test.ts, rateLimiter.tiers.test.ts backend, rate-limit, reliability
Idempotency store & key handling @reliability-owner @data-owner High idempotency.ts, idempotencyRetention.ts idempotencyRetention.test.ts backend, reliability, idempotency
Retry budget (circuit-breaker adjunct) @reliability-owner @backend-lead Medium retryBudget.ts backend, reliability
Soroban RPC circuit breaker @integrations-owner @reliability-owner High circuitBreaker.ts circuitBreaker.test.ts backend, reliability, stellar
Withdrawal partial-failure recovery (saga journal) @reliability-owner @vault-domain-owner Core withdrawalRecovery.ts withdrawalRecovery.test.ts, withdrawalRecoveryEndpoint.test.ts backend, reliability, vault
Transfer orchestration (idempotent, retry-safe) @reliability-owner @vault-domain-owner Core transferOrchestrator.ts transferOrchestrator.test.ts backend, reliability, idempotency

5. Vault Domain: State, Transactions & APY

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Vault endpoints (summary, metrics, APY) @vault-domain-owner @backend-lead Core vaultEndpoints.ts backend, vault, api
Transaction endpoints & history @vault-domain-owner @data-owner Core transactionEndpoints.ts transactions.test.ts backend, transactions, api
Transaction backfill (catch-up indexing) @vault-domain-owner @integrations-owner High transactionBackfill.ts transactionBackfill.persistence.test.ts backend, transactions, indexer
APY snapshots (scheduler + backfill) @vault-domain-owner @reliability-owner High apySnapshot.ts apySnapshot.test.ts backend, vault, apy
List endpoints (vault history, portfolio, holdings) @vault-domain-owner @data-owner High listEndpoints.ts backend, api, vault
Pagination primitives @data-owner @vault-domain-owner High pagination.ts, dateRange.ts pagination.test.ts backend, pagination, data
Wallet alias endpoints & service @vault-domain-owner @auth-owner Medium walletAliasEndpoints.ts, walletAliasService.ts walletAliasEndpoints.test.ts, walletAliasService.test.ts backend, wallet, alias
Referral endpoints & service @vault-domain-owner @data-owner Medium referralEndpoints.ts, referralService.ts referral.test.ts backend, referrals, growth
On-chain event polling & replay @integrations-owner @vault-domain-owner Core eventPollingService.ts eventPollingService.test.ts backend, indexer, stellar, events

6. Data, Persistence & Exports

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Prisma schema & migrations @data-owner @backend-lead Core prisma/schema.prisma, migrations/, scripts/migrate-postgres.js, scripts/check-postgres-drift.js backend, database, migrations
Database health & connections @data-owner @reliability-owner Core database.ts, prismaClient.ts, prisma.ts backend, database
Transaction export jobs (single-shot) @data-owner @vault-domain-owner High exportJobs.ts backend, exports, data
Bulk export jobs (async, S3-backed) @data-owner @integrations-owner Medium bulkExportJobs.ts backend, exports, data
Export manifest & checksum verification @data-owner @auth-owner High exportManifest.ts exportManifest.test.ts backend, exports, integrity
API contract schema snapshots @data-owner @backend-lead High apiContractSnapshots.ts, schema-snapshots/ backend, api, contract-testing
Audit redaction & PII scrubbing @data-owner @auth-owner High auditRedaction.ts, redaction.ts backend, audit, privacy
Sanitization (input/output cleaning) @data-owner @auth-owner High sanitization.ts sanitization.test.ts backend, security, data

7. Webhooks & Event Delivery

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Webhook delivery, registration, retries @integrations-owner @reliability-owner High webhookDelivery.ts webhookVerification.test.ts, webhookDeadLetter.test.ts, webhookSoftDelete.test.ts backend, webhooks
Webhook deduplication (idempotent ingest) @integrations-owner @reliability-owner High webhookDeduplication.ts webhookDeduplication.test.ts backend, webhooks, reliability

8. Admin Operations, Audit & Governance

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Admin audit logging (every /admin request) @auth-owner @data-owner High auditLog.ts, adminAudit.ts, writeAheadAuditLog.ts backend, audit, admin, security
Admin configuration change audit @auth-owner @data-owner High adminConfigChangeAudit.ts backend, audit, admin
Admin receipts (tamper-evident action proofs) @auth-owner @backend-lead Medium adminReceipt.ts adminReceipt.test.ts backend, admin, audit
Maintenance mode & windows scheduler @reliability-owner @backend-lead High maintenanceMode.ts, maintenanceWindow.ts backend, admin, reliability, maintenance
Feature flag overrides @backend-lead @reliability-owner High featureFlags.ts featureFlags.test.ts backend, admin, feature-flags
Admin features & governance controls @backend-lead @auth-owner Medium adminFeatures.test.ts, governance.test.ts backend, admin, governance
Governance snapshot export @data-owner @backend-lead Medium governanceSnapshotExport.ts governanceSnapshotExport.test.ts backend, exports, governance

9. Background Jobs & Scheduler Governance

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Job governance: registry, health, metrics @reliability-owner @backend-lead High jobGovernance.ts jobGovernanceMetrics.test.ts backend, jobs, reliability
Position & ledger reconciliation jobs @vault-domain-owner @data-owner High positionReconciliationJob.ts ledgerReconciliationJob.test.ts backend, jobs, reconciliation, vault
Reconciliation reports @vault-domain-owner @data-owner Medium reconciliationReport.ts reconciliationReport.test.ts backend, reports, reconciliation
Database backup scheduler @data-owner @reliability-owner High dbBackupJob.ts dbBackupJob.test.ts backend, jobs, database, backup
Diagnostics bundle (support artifact) @reliability-owner @data-owner Medium diagnosticsBundle.ts diagnosticsBundle.test.ts backend, support, diagnostics

10. Observability: Metrics, Health & SLO Monitoring

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Prometheus metrics registry @reliability-owner @backend-lead High metrics.ts backend, observability, metrics
Health & readiness probes @reliability-owner @backend-lead Core healthProbe.ts backend, observability, health
Latency monitoring & SLO tracking @reliability-owner @backend-lead High latencyMonitoring.ts latencyMonitoring.test.ts, sloMetrics.test.ts backend, observability, slo
Endpoint SLA registry @reliability-owner @backend-lead Medium endpointSlaRegistry.ts endpointSlaRegistry.test.ts backend, observability, slo

11. External Integrations

Domain / Module Primary Secondary Criticality Source Files Related Tests Labels
Stellar / Soroban RPC client @integrations-owner @vault-domain-owner Core sorobanClient.ts sorobanClient.test.ts backend, stellar, rpc, integrations
Email service & queue @integrations-owner @reliability-owner Medium emailService.ts, emailQueue.ts emailService.test.ts, emailQueue.test.ts backend, email, integrations

File → Domain Quick Lookup

Use this table when you only know the source filename and need to find the owning domain.

File(s) Domain Primary
index.ts, swagger.ts Bootstrap & Entrypoint @backend-lead
auth.ts, walletNonce.ts, walletSignature.ts, walletLock.ts, walletUtils.ts, scopedAdminTokens.ts, impersonationSessionService.ts Auth & Identity Security @auth-owner
middleware/apiKeyAuth.ts, middleware/rbac.ts, middleware/tenantGuard.ts, middleware/walletQueryGuard.ts, middleware/walletSignedAction.ts Auth & Identity Security @auth-owner
apiKeyAudit.ts, auditLog.ts, adminAudit.ts, adminConfigChangeAudit.ts, writeAheadAuditLog.ts, auditRedaction.ts Admin Audit @auth-owner / @data-owner
adminReceipt.ts Admin Receipts @auth-owner
middleware/correlationId.ts, middleware/structuredLogging.ts, tracing.ts Observability middleware @reliability-owner
middleware/timeoutMiddleware.ts, middleware/errorBoundary.ts, middleware/adaptiveThrottle.ts Reliability middleware @reliability-owner
middleware/cors.ts, middleware/geofencing.ts, middleware/allowlist.ts, middleware/validate.ts, middleware/payloadLimit.ts Security middleware @auth-owner
middleware/cache.ts Cache middleware @reliability-owner
middleware/withdrawalDailyLimit.ts Vault limits @vault-domain-owner
rateLimiter.ts, idempotency.ts, idempotencyRetention.ts, retryBudget.ts, circuitBreaker.ts, withdrawalRecovery.ts, transferOrchestrator.ts Resilience & Throttling @reliability-owner
vaultEndpoints.ts, apySnapshot.ts Vault domain @vault-domain-owner
transactionEndpoints.ts, transactionBackfill.ts Transactions @vault-domain-owner
listEndpoints.ts, pagination.ts, dateRange.ts Data & pagination @data-owner
walletAliasEndpoints.ts, walletAliasService.ts Wallet aliases @vault-domain-owner
referralEndpoints.ts, referralService.ts Referrals @vault-domain-owner
eventPollingService.ts Event indexing @integrations-owner
prismaClient.ts, prisma.ts, database.ts, prisma/schema.prisma, migrations/ Database @data-owner
exportJobs.ts, bulkExportJobs.ts, exportManifest.ts, governanceSnapshotExport.ts Exports @data-owner
apiContractSnapshots.ts, schema-snapshots/ API contracts @data-owner
redaction.ts, sanitization.ts Data hygiene @data-owner
webhookDelivery.ts, webhookDeduplication.ts Webhooks @integrations-owner
maintenanceMode.ts, maintenanceWindow.ts Maintenance @reliability-owner
featureFlags.ts Feature flags @backend-lead
jobGovernance.ts, metrics.ts, healthProbe.ts, latencyMonitoring.ts, endpointSlaRegistry.ts, gracefulShutdown.ts Observability & Job Governance @reliability-owner
positionReconciliationJob.ts, reconciliationReport.ts Reconciliation @vault-domain-owner
dbBackupJob.ts Database backup @data-owner
diagnosticsBundle.ts Diagnostics @reliability-owner
sorobanClient.ts Stellar RPC @integrations-owner
emailService.ts, emailQueue.ts Email @integrations-owner
requestContext.ts, stellar-sdk-shim.d.ts, types/express.d.ts Core scaffolding @backend-lead

PR Review Routing Cheat Sheet

When opening a PR, auto-assign reviewers based on which top-level directories / patterns your changes touch:

If your PR changes… Add these labels… Request review from…
backend/src/auth.ts OR backend/src/wallet*.ts OR backend/src/scopedAdminTokens.ts OR backend/src/middleware/{apiKeyAuth,rbac,tenantGuard,walletQueryGuard,walletSignedAction}.ts backend, auth, security @auth-owner (Primary), @backend-lead (Secondary)
backend/src/middleware/*.ts (any middleware) backend, middleware Primary = owner per module above; Secondary = @backend-lead
backend/src/{rateLimiter,circuitBreaker,idempotency*,retryBudget,withdrawalRecovery,transferOrchestrator}.ts backend, reliability @reliability-owner (Primary), @auth-owner (Secondary)
backend/src/{vaultEndpoints,transactionEndpoints,apySnapshot,listEndpoints,referral*,walletAlias*}.ts backend, vault or backend, transactions @vault-domain-owner (Primary), @data-owner (Secondary)
backend/prisma/schema.prisma OR backend/migrations/ OR backend/scripts/{migrate-postgres,check-postgres-drift}.js backend, database, migrations @data-owner (Primary), @backend-lead (Secondary) — 2 approvals required for schema changes
backend/src/{export*,bulkExport*,exportManifest,apiContractSnapshots,governanceSnapshotExport,pagination,dateRange}.ts OR backend/schema-snapshots/ backend, data @data-owner (Primary), @vault-domain-owner (Secondary)
backend/src/{webhook*,eventPollingService,sorobanClient,email*}.ts backend, webhooks or backend, stellar @integrations-owner (Primary), @reliability-owner (Secondary)
backend/src/{metrics,healthProbe,latencyMonitoring,endpointSlaRegistry,jobGovernance,diagnosticsBundle,gracefulShutdown}.ts backend, observability @reliability-owner (Primary), @backend-lead (Secondary)
backend/src/{maintenanceMode,maintenanceWindow,featureFlags,adminReceipt,adminAudit,auditLog,adminConfigChangeAudit}.ts backend, admin Primary = owner per domain; Secondary = @backend-lead
backend/src/__tests__/* only (test-only change) backend, tests Owner of the module under test
backend/README.md OR backend/docs/ OR any docs/*.md referencing backend documentation, backend @backend-lead

Additional Rules

  • Smart contract changes (contracts/) follow a separate 2-approval rule; see TRIAGE_AND_REVIEW.md.
  • Cross-domain PRs (touches 3+ modules): assign @backend-lead as Primary and one owner per affected module.
  • Docs-only PRs: single approval from any maintainer is sufficient.
  • Dependency upgrades (backend package.json): require @data-owner + @backend-lead review; run npm audit and link output.

Issue Triage Quick Routing

Copy-paste the following command pattern when routing a newly opened issue:

/area backend
/label <module-label> <priority-label>
/assign @<primary-owner>
/cc @<secondary-owner>

Use the Labels column in the module ownership tables to pick <module-label>. Priority labels are P0P3 as defined in TRIAGE_AND_REVIEW.md.

Escalation path for unowned / orphaned work

  1. No obvious owner? → Assign to @backend-lead with label triage-needs-owner.
  2. Owner unresponsive > 48 business hours? → Re-assign to Secondary owner and add label triage-escalated.
  3. Both owners unresponsive > 5 business days? → Follow TRIAGE_ROTATION_CALENDAR.md escalation; tag the on-call Primary team from the weekly rotation.

Maintenance & Updates

  • Quarterly review: At the start of each quarter the Backend Tech Lead audits this document for:
    • New modules added since last review
    • Stale / deprecated modules removed
    • Maintainer handles and roles current
    • Ownership assignments match reality on the ground
  • Immediate updates required when:
    • A new source file is added to backend/src/ at the top level (not a pure test helper)
    • A module is split, merged, or deprecated
    • A maintainer changes team, leaves, or goes on leave > 2 weeks
  • Contributing an update: Open a docs-only PR titled Docs: Update backend module ownership map and tag @backend-lead. No changelog entry needed.

Version: 1.0.0 Last Updated: July 2026 Owned by: Backend Tech Lead (@backend-lead)