Skip to content

Search Route Rehearsals

Status: Pending.

Search-service currently has internal rebuild/search foundations, but it has no approved public gateway route rehearsal. This page is the guardrail for that gap: service agents may improve copied-index freshness and owner projection tests, but they must not promote or invent public search routes until a real legacy route is selected and mapped to search-service.

Current Mapping

/api/public/catalog* remains course-service-owned. The legacy route snapshot contains PublicCatalogController.catalog and PublicCatalogController.detail, and docs/architecture/legacy-api-map.md maps the current public catalog entries to course-service, not search-service.

Search-service may index copied COURSE, QUESTION, EXAM, and DOCUMENT documents from owner-service projection APIs. Copied index ownership is not enough to move a public catalog route to search-service.

No Search Route Table Yet

There must be no deploy/gateway/routes.search*.json file and no gateway route targeting search-service until an orchestrator-owned route mapping task names:

  • the exact legacy controller route from docs/contracts/legacy/legacy-route-snapshot.json
  • the target owner mapping in docs/architecture/legacy-api-map.md
  • the non-default route table name
  • the live/browser parity command
  • the rollback proof command

Until that task exists, do not invent synthetic /api/search compatibility routes.

Verification

bash
make test-search-routes

The guard checks:

  • default /api/public remains legacy_proxy
  • no routes.search*.json example exists
  • no gateway route table targets search-service
  • no route table introduces /api/search or forwards to /v1/search
  • legacy public catalog routes remain mapped to course-service

Current Guard Recheck (2026-07-13)

make test-search-routes passed with the default route table unchanged. The separate four-source rebuild self-test also passed two paginated pages each for course, document, exam, and question-bank; its evidence is in output/qa/search-legacy-owner-rebuild-proof-20260713/. This is copied-index freshness evidence only. It does not select a legacy route, add a Gateway rehearsal, or provide browser proof for search-service.

Promotion Conditions

A future search route rehearsal can replace this pending guard only after:

  • the legacy route and native target are explicitly mapped to search-service
  • the route table is non-default and narrower than broad /api/public or fallback routes
  • scope and visibility rules are enforced at gateway/BFF or owner-service contracts
  • browser/runtime parity evidence is attached
  • rollback proof restores the default legacy route table

Go-platform documentation is generated from repository Markdown.