Skip to content

feat-osapispec - #1125

Open
sean- wants to merge 14 commits into
opensearch-project:mainfrom
sean-:feat-osapispec
Open

feat-osapispec#1125
sean- wants to merge 14 commits into
opensearch-project:mainfrom
sean-:feat-osapispec

Conversation

@sean-

@sean- sean- commented May 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add cmd/osapispec, a Go utility providing merge, lint, test, coverage, and dump subcommands
  • Update CI workflows to use the Go tool instead of Node.js/ts-node
  • Each workflow change is an independent commit for incremental adoption

Motivation

  • Improved CI time — Merge 6x faster, lint 10x faster, install/build 5x faster
  • Improved security — 470 npm packages → 10 Go modules (98% fewer transitive dependencies)
  • Reduced maintenance burden — Eliminates node_modules churn and recurring dependency vulnerability tickets
Metric Node.js (ts-node) Go (osapispec) Improvement
Merge time 1.54s 0.26s 6x faster
Lint time 1.78s 0.17s 10x faster
Transitive dependencies 470 packages 10 modules 98% fewer
Install/build time 3.3s 0.6s 5x faster
Disk footprint 193 MB 11 MB 94% smaller

Fixes: #1124

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@sean-
sean- force-pushed the feat-osapispec branch 22 times, most recently from 9a2d3c4 to 2620033 Compare May 21, 2026 19:26
@sean-
sean- force-pushed the feat-osapispec branch 6 times, most recently from a778a6a to 1df3a64 Compare May 21, 2026 21:38
karenyrx
karenyrx previously approved these changes May 21, 2026
@karenyrx
karenyrx self-requested a review May 21, 2026 21:42
@sean-
sean- force-pushed the feat-osapispec branch 3 times, most recently from b2484cd to d21be04 Compare May 22, 2026 01:12
Go reimplementation of the Node.js spec tooling with subcommands:
merge, lint, test, coverage, and dump. Reduces external dependencies
from ~450 npm packages to 3 Go modules (yaml.v3, x/text, testify),
improving supply-chain security posture.

Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
@sean-
sean- force-pushed the feat-osapispec branch from 21a049d to b00b122 Compare May 22, 2026 01:16
sean- added 13 commits May 22, 2026 00:18
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Bump plugin tests from 3.1.0 to 3.6.0 and default tests from 2.19.2
to 2.19.5 (latest patch releases).

Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
- indices/open.yaml: Add retry to _close prologue steps to handle
  transient 400 when closing a freshly created index before shards
  are fully initialized.
- terms_aggregate_unsigned_long.yaml: Remove size limit from format
  chapter so all buckets are returned (avoids version-dependent
  sum_other_doc_count) and drop key_as_string assertions that vary
  by precision handling across versions.
- ml/models.yaml: Restore retry on "Search model" chapter since model
  indexing has a delay after registration completes.

Observed on: OpenSearch 2.19.5 and 3.6.0

Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
The test validates /_cat/health response formats, not cluster topology.
Hardcoding node.total=1 and node.data=1 breaks on multi-node clusters.

Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[PROPOSAL] Go-based tooling?

2 participants