Skip to content

Absorb website-search-data: essc and search contract move in-repo#3615

Merged
Mpdreamz merged 2 commits into
mainfrom
feature/absorb-website-search-data
Jul 6, 2026
Merged

Absorb website-search-data: essc and search contract move in-repo#3615
Mpdreamz merged 2 commits into
mainfrom
feature/absorb-website-search-data

Conversation

@Mpdreamz

@Mpdreamz Mpdreamz commented Jul 6, 2026

Copy link
Copy Markdown
Member

Why

website-search-data was originally abstracted out of docs-builder to share a search API layer with elastic/website-search. That API layer has since been deleted, and website-search is TypeScript — it consumes the Elasticsearch indices, not the .NET contract package. With no external consumer left, keeping essc and the contract in a separate repository only forced release coordination across two repos for what is effectively one system.

What

Moves the two remaining website-search-data projects in-repo (plain copy of its main @ 34989e8, no history graft):

  • Search contractElastic.Internal.Search.Contract becomes src/services/search/Elastic.Documentation.Search.Contract, consumed as a ProjectReference by Elastic.Documentation and the search service. NuGet publishing is dropped; the package freezes at 0.12.0 on nuget.org. IndexTimeSynonyms moves into the contract so the Markdown exporter uses it directly instead of a hardcoded copy behind a "keep in sync" comment.
  • essc — lands at src/tooling/essc, keeping its Elastic.SiteSearch identity. Distribution is container-only: ghcr.io/elastic/website-search-essc, built and smoke-tested by the existing publishcontainers / run-container pipeline (replaces ghcr.io/elastic/website-ai-search-essc; the 4-RID GitHub-release binaries are discontinued).
  • TestsElastic.SiteSearch.Tests (TUnit / Microsoft.Testing.Platform) joins tests/. Since VSTest's dotnet test hard-errors on MTP-only projects under the .NET 10 SDK, the xunit injection in tests/Directory.Build.props is guarded behind UseTUnit and the project runs via dotnet run in the unit-test target.
  • User secrets — one shared docs-builder store replaces the GUID store and essc's separate store; Elasticsearch settings normalize to Parameters:ElasticsearchUrl / Parameters:ElasticsearchApiKey (env var names unchanged). CI now sets the Parameters:-prefixed keys the fixtures actually read — previously the fetched credentials never reached the integration tests, so those tests now talk to the real readonly cluster for the first time.
  • Package versions reconcile to the highest of both repos (Elastic.Mapping/Ingest 0.49.0, Spectre.Console 0.55.0, TUnit 1.19.74).

Note for deploys: absorbing contract main includes the post-0.12.0 relevance/mapping changes, so the mapping hash changes and indices recreate on the next docs publish. Existing developers need two one-time local migrations (secrets store renames) — documented in docs/development/essc.md and aspire/README.md.

Follow-ups: archive elastic/website-search-data; repoint consumers of the old essc image; restore the parked probe-mode search code now that SearchQueryComponents is in-repo.

🤖 Generated with Claude Code

website-search-data was abstracted out of docs-builder to share a search
API layer with elastic/website-search. That API layer has since been
deleted and website-search (TypeScript) does not consume the .NET
contract, so coordinating releases across two repositories only slowed
the SDLC. This moves both remaining pieces back:

- Elastic.Internal.Search.Contract -> src/services/search/
  Elastic.Documentation.Search.Contract as an internal ProjectReference;
  NuGet publishing is dropped (frozen at 0.12.0 on nuget.org).
  IndexTimeSynonyms moves into the contract so the Markdown exporter
  shares it with essc instead of a keep-in-sync comment.
- essc -> src/tooling/essc, keeping its Elastic.SiteSearch identity;
  ships container-only as ghcr.io/elastic/website-search-essc from the
  existing publishcontainers pipeline.
- tests/Elastic.SiteSearch.Tests (TUnit/MTP) runs via dotnet run in the
  unit-test target; xunit injection in tests/Directory.Build.props is
  now guarded behind UseTUnit.
- User secrets unified into a single `docs-builder` store (was a GUID +
  a separate essc store) and Elasticsearch parameters normalized to
  Parameters:ElasticsearchUrl/ApiKey; env var names are unchanged.
  ci.yml now sets the Parameters:-prefixed keys the fixtures read.

Absorbing contract main includes the post-0.12.0 relevance changes, so
the mapping hash changes and indices recreate on the next docs publish.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Mpdreamz Mpdreamz requested review from a team as code owners July 6, 2026 11:59
@Mpdreamz Mpdreamz requested a review from reakaleek July 6, 2026 11:59
@Mpdreamz Mpdreamz had a problem deploying to integration-tests July 6, 2026 11:59 — with GitHub Actions Failure
Matches the rest of the repo's test projects and deletes all the
TUnit/Microsoft.Testing.Platform special-casing it required: the
UseTUnit guard in tests/Directory.Build.props, the VSTest error
masking, and the separate dotnet run step in the unit-test target.
The suite is 166 tests either way.

Also updates PhysicalDocsetTests' pinned /development TOC counts for
the new docs/development/essc.md page (the actual unit-test failure on
CI), and temporarily disables the integration job with if: false —
the Parameters:-prefixed secrets now actually reach the tests, and
making them pass against the readonly cluster is deferred to a
dedicated PR.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Mpdreamz

Mpdreamz commented Jul 6, 2026

Copy link
Copy Markdown
Member Author

discussed today with @reakaleek merging this one in.

@Mpdreamz Mpdreamz merged commit 807b620 into main Jul 6, 2026
24 checks passed
@Mpdreamz Mpdreamz deleted the feature/absorb-website-search-data branch July 6, 2026 12:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant