Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
2f80dcf
docs(ray-docs): align API docs and examples with current code
maskdotdev Feb 6, 2026
fe8f1f2
replication: harden host-runtime OTLP transport
maskdotdev Feb 8, 2026
184e46d
replication: add host-runtime transport snapshot/log exports
maskdotdev Feb 8, 2026
9e97f18
replication: expose transport export APIs in bindings
maskdotdev Feb 8, 2026
902410b
playground: add replication admin transport endpoints
maskdotdev Feb 8, 2026
a397fd5
replication: land phase A-D core + perf gates
maskdotdev Feb 8, 2026
ac4f87d
ts: add replication transport adapter helpers
maskdotdev Feb 8, 2026
7708aa0
docs: update replication carry-over after TS adapter
maskdotdev Feb 8, 2026
b233905
docs: add polyglot replication adapter templates
maskdotdev Feb 8, 2026
03c0d9f
replication: add OTLP protobuf exporter path
maskdotdev Feb 8, 2026
53b7e56
replication: add OTLP gRPC metrics exporter
maskdotdev Feb 8, 2026
55ade48
replication: add OTLP retry and compression controls
maskdotdev Feb 8, 2026
6c9def5
replication: add OTLP jitter and circuit breaker controls
maskdotdev Feb 8, 2026
26e9aae
replication: add adaptive OTLP retry state controls
maskdotdev Feb 8, 2026
07ef60a
replication: add ewma adaptive mode and half-open OTLP probes
maskdotdev Feb 8, 2026
8d27d12
replication: add shared HTTP OTLP breaker state backend
maskdotdev Feb 8, 2026
5c12f2a
replication: verify shared breaker URL state roundtrip
maskdotdev Feb 8, 2026
151464b
replication: add CAS and lease controls for shared OTLP state
maskdotdev Feb 8, 2026
71c5f15
replication: add key-scoped OTLP shared state patch mode
maskdotdev Feb 8, 2026
098b391
replication: add batched and retrying OTLP patch state updates
maskdotdev Feb 8, 2026
dd57295
replication: add OTLP patch merge compaction mode
maskdotdev Feb 8, 2026
7b16137
replication: harden merge CAS etag retries
maskdotdev Feb 8, 2026
21dc144
replication: add host transport admin auth helpers
maskdotdev Feb 8, 2026
2095448
replication: add node-native mtls matcher helpers
maskdotdev Feb 8, 2026
485cf38
replication: add python asgi admin auth helpers
maskdotdev Feb 8, 2026
5496e94
ci: enforce replication perf gate on main
maskdotdev Feb 8, 2026
56c3ccc
replication: enforce vector authority boundary
maskdotdev Feb 8, 2026
406cbcd
replication: add forwarded mTLS auth helper
maskdotdev Feb 8, 2026
de37404
vector: add compaction benchmark and fix live-count invariant
maskdotdev Feb 8, 2026
c67db72
vector: baseline compaction strategy matrix and defaults
maskdotdev Feb 8, 2026
ca6cd5a
vector: add ANN algorithm matrix baseline
maskdotdev Feb 8, 2026
a2c4b42
vector: add ANN PQ tuning and quality gate
maskdotdev Feb 8, 2026
b1bf1a5
ci: enforce ANN quality gate on main
maskdotdev Feb 8, 2026
7f09b65
ci: add scheduled ANN PQ tracking job
maskdotdev Feb 8, 2026
b46ef2b
ci: add fast/full profile for ANN PQ tracking
maskdotdev Feb 8, 2026
4992a7b
ci: isolate ANN artifacts per run stamp
maskdotdev Feb 8, 2026
c209e98
ci: isolate replication gate artifacts per run
maskdotdev Feb 8, 2026
5f3da69
ci: limit scheduled ray-rs runs to tracking jobs
maskdotdev Feb 8, 2026
b90b91e
vector: default ANN path to latency-first IVF-PQ
maskdotdev Feb 8, 2026
98f0895
docs: close open questions and define post-phase-D steps
maskdotdev Feb 8, 2026
d696a24
replication: add soak stability gate and tracking job
maskdotdev Feb 8, 2026
fa37785
replication: add host-runtime adapter example and flow tests
maskdotdev Feb 8, 2026
6f12126
docs: finalize V1 release checklist and preflight
maskdotdev Feb 8, 2026
4a3970b
replication: stabilize soak gate profile for release checks
maskdotdev Feb 8, 2026
d168cf4
docs: add proxy-forwarded replication adapter template
maskdotdev Feb 8, 2026
08ffb40
ci: add fast/full replication soak tracking profiles
maskdotdev Feb 8, 2026
411d2d8
Verify replication production readi
maskdotdev Feb 9, 2026
7529140
Improve replication log formatting
maskdotdev Feb 9, 2026
8dd106f
promo: 30s cinematic video with 6-scene structure
maskdotdev Feb 10, 2026
f9d2603
python: add Database.open factory for persistent connection
maskdotdev Feb 10, 2026
058fa7e
feat(single-file): add open/close benchmarks and expose runtime profiles
maskdotdev Feb 10, 2026
af14239
chore: snapshot remaining workspace updates
maskdotdev Feb 10, 2026
d022690
kite: configurable close checkpoint with 0.2 default
maskdotdev Feb 10, 2026
c1ce5e6
core: persist vector stores in snapshots for faster open
maskdotdev Feb 10, 2026
5be0e55
perf(core): lazy-load vector stores + add open/close vector perf gate
maskdotdev Feb 10, 2026
ed092b4
perf(core): skip vector parsing for non-vector snapshots
maskdotdev Feb 10, 2026
7c2c5d3
perf(core): add bench-profile open phase timings
maskdotdev Feb 10, 2026
295c148
perf(core): split snapshot parse profiling into crc/decode
maskdotdev Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
276 changes: 276 additions & 0 deletions .github/workflows/ray-rs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,26 @@ on:
paths:
- "ray-rs/**"
- ".github/workflows/ray-rs.yml"
schedule:
- cron: "0 9 * * 1"
workflow_dispatch:
inputs:
ann_pq_profile:
description: ANN PQ tracking profile (manual runs only)
type: choice
required: false
default: fast
options:
- fast
- full
replication_soak_profile:
description: Replication soak tracking profile (manual runs only)
type: choice
required: false
default: fast
options:
- fast
- full
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
Expand All @@ -22,6 +41,7 @@ defaults:
jobs:
meta:
name: Release Gate
if: github.event_name != 'schedule'
runs-on: ubuntu-latest
outputs:
all: ${{ steps.flags.outputs.all }}
Expand Down Expand Up @@ -53,6 +73,262 @@ jobs:
if echo "$COMMIT_MSG" | grep -E "^(all|js|ts|py|rs|core): [0-9]+\.[0-9]+\.[0-9]+"; then
echo "any=true" >> "$GITHUB_OUTPUT"
fi

replication-perf-gate:
name: Replication Perf Gate
if: github.event_name != 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
ray-rs/target/
key: replication-perf-gate-${{ hashFiles('ray-rs/Cargo.lock') }}
- name: Run replication perf gate
run: ./scripts/replication-perf-gate.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
# CI-tuned defaults to reduce runtime while keeping meaningful signal.
ITERATIONS: "10000"
SEED_COMMITS: "1000"
BACKLOG_COMMITS: "3000"
ATTEMPTS: "3"
P95_MAX_RATIO: "1.30"
MIN_CATCHUP_FPS: "2500"
MIN_THROUGHPUT_RATIO: "0.10"
- name: Upload replication benchmark logs
if: always()
uses: actions/upload-artifact@v4
with:
name: replication-perf-gate-logs
path: docs/benchmarks/results/ci-${{ github.run_id }}-${{ github.run_attempt }}-replication-*gate*.txt
if-no-files-found: ignore
open-close-vector-gate:
name: Open/Close Vector Gate
if: github.event_name != 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
ray-rs/target/
key: open-close-vector-gate-${{ hashFiles('ray-rs/Cargo.lock') }}
- name: Run open/close vector gate
run: ./scripts/open-close-vector-gate.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
ATTEMPTS: "1"
MAX_SMALL_RW_RATIO: "5.0"
MAX_SMALL_RO_RATIO: "5.0"
MAX_LARGE_RW_RATIO: "2.5"
MAX_LARGE_RO_RATIO: "2.5"
- name: Upload open/close vector gate logs
if: always()
uses: actions/upload-artifact@v4
with:
name: open-close-vector-gate-logs
path: docs/benchmarks/results/ci-${{ github.run_id }}-${{ github.run_attempt }}-open-close-vector-gate*.txt
if-no-files-found: ignore
open-close-non-vector-gate:
name: Open/Close Non-Vector Gate
if: github.event_name != 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
ray-rs/target/
key: open-close-non-vector-gate-${{ hashFiles('ray-rs/Cargo.lock') }}
- name: Run open/close non-vector gate
run: ./scripts/open-close-non-vector-gate.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
ATTEMPTS: "1"
MAX_SMALL_RW_US: "900.0"
MAX_SMALL_RO_US: "900.0"
MAX_LARGE_RW_US: "5000.0"
MAX_LARGE_RO_US: "5000.0"
- name: Upload open/close non-vector gate logs
if: always()
uses: actions/upload-artifact@v4
with:
name: open-close-non-vector-gate-logs
path: docs/benchmarks/results/ci-${{ github.run_id }}-${{ github.run_attempt }}-open-close-non-vector-gate*.txt
if-no-files-found: ignore
ann-quality-gate:
name: ANN Quality Gate
if: github.event_name != 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
ray-rs/target/
key: ann-quality-gate-${{ hashFiles('ray-rs/Cargo.lock') }}
- name: Run ANN quality gate
run: ./scripts/vector-ann-gate.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
# CI defaults tuned from baseline matrix; latency-first IVF-PQ gate.
ATTEMPTS: "3"
ALGORITHM: "ivf_pq"
RESIDUALS: "false"
PQ_SUBSPACES: "48"
PQ_CENTROIDS: "256"
N_PROBE: "16"
MIN_RECALL_AT_K: "0.16"
MAX_P95_MS: "8.0"
- name: Upload ANN gate logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ann-quality-gate-logs
path: docs/benchmarks/results/ci-${{ github.run_id }}-${{ github.run_attempt }}-vector-ann-gate*.txt
if-no-files-found: ignore
replication-soak-tracking:
name: Replication Soak Tracking
if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
ray-rs/target/
key: replication-soak-tracking-${{ hashFiles('ray-rs/Cargo.lock') }}
- name: Run replication soak tracking (fast)
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.replication_soak_profile != 'full')
run: ./scripts/replication-soak-gate.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
# Non-blocking churn/promotion/reseed trend run (scheduled + manual).
ATTEMPTS: "1"
REPLICAS: "5"
CYCLES: "12"
COMMITS_PER_CYCLE: "80"
ACTIVE_REPLICAS: "3"
CHURN_INTERVAL: "3"
PROMOTION_INTERVAL: "4"
RESEED_CHECK_INTERVAL: "2"
MAX_FRAMES: "128"
RECOVERY_MAX_LOOPS: "80"
SEGMENT_MAX_BYTES: "1"
RETENTION_MIN: "48"
MAX_ALLOWED_LAG: "2500"
MIN_PROMOTIONS: "2"
MIN_RESEEDS: "1"
- name: Run replication soak tracking (full)
if: github.event_name == 'workflow_dispatch' && inputs.replication_soak_profile == 'full'
run: ./scripts/replication-soak-gate.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
# Manual deep soak profile for longer churn/promotion trend checks.
ATTEMPTS: "1"
REPLICAS: "5"
CYCLES: "24"
COMMITS_PER_CYCLE: "120"
ACTIVE_REPLICAS: "4"
CHURN_INTERVAL: "2"
PROMOTION_INTERVAL: "3"
RESEED_CHECK_INTERVAL: "2"
MAX_FRAMES: "256"
RECOVERY_MAX_LOOPS: "120"
SEGMENT_MAX_BYTES: "1"
RETENTION_MIN: "64"
MAX_ALLOWED_LAG: "3500"
MIN_PROMOTIONS: "4"
MIN_RESEEDS: "1"
- name: Upload replication soak logs
if: always()
uses: actions/upload-artifact@v4
with:
name: replication-soak-tracking-logs
path: docs/benchmarks/results/ci-${{ github.run_id }}-${{ github.run_attempt }}-replication-soak-gate*.txt
if-no-files-found: ignore
ann-pq-tracking:
name: ANN PQ Tracking
if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
ray-rs/target/
key: ann-pq-tracking-${{ hashFiles('ray-rs/Cargo.lock') }}
- name: Run ANN PQ tuning sweep (fast)
if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && inputs.ann_pq_profile != 'full')
run: ./scripts/vector-ann-pq-tuning.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
# Keep this lightweight enough for periodic trend tracking.
VECTORS: "15000"
QUERIES: "150"
N_PROBES: "8 16"
PQ_SUBSPACES_SET: "24 48"
PQ_CENTROIDS_SET: "128 256"
RESIDUALS_SET: "false"
- name: Run ANN PQ tuning sweep (full)
if: github.event_name == 'workflow_dispatch' && inputs.ann_pq_profile == 'full'
run: ./scripts/vector-ann-pq-tuning.sh
env:
STAMP: ci-${{ github.run_id }}-${{ github.run_attempt }}
# Manual deep sweep for analysis (not part of push/main gating).
VECTORS: "20000"
QUERIES: "200"
N_PROBES: "8 16"
PQ_SUBSPACES_SET: "24 48"
PQ_CENTROIDS_SET: "128 256"
RESIDUALS_SET: "false true"
- name: Upload ANN PQ tuning logs
if: always()
uses: actions/upload-artifact@v4
with:
name: ann-pq-tracking-logs
path: |
docs/benchmarks/results/ci-${{ github.run_id }}-${{ github.run_attempt }}-vector-ann-pq-tuning*.txt
docs/benchmarks/results/ci-${{ github.run_id }}-${{ github.run_attempt }}-vector-ann-pq-tuning*.csv
if-no-files-found: ignore
# ===========================================
# Node.js Builds (napi-rs)
# ===========================================
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,6 @@ ray-rs/python/benchmarks/results/*.txt
# Bench/trace outputs
ray-rs/flamegraph.svg
ray-rs/*.trace/

# code-intelligence
.code-intelligence/
53 changes: 53 additions & 0 deletions code-intelligence.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"cache": {
"enabled": true,
"force": false
},
"inputs": {
"exclude": [
"node_modules",
"dist",
"build",
"target",
".git",
".venv",
"__pycache__",
".code-intelligence"
],
"include": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx",
"*.py",
"*.cpp",
"*.cc",
"*.c",
"*.hpp",
"*.h",
"*.ada"
],
"paths": [
"."
],
"respectGitignore": true
},
"output": {
"incremental": true
},
"phases": {
"graph": true,
"indexPack": false,
"parse": true,
"scip": false,
"vector": true
},
"projectRoot": ".",
"vector": {
"provider": {
"baseUrl": "https://api.openai.com/v1",
"kind": "http",
"model": "text-embedding-3-small"
}
}
}
Loading
Loading