contribution/compass
ray-project/ray

Ray

114 signals · 115 observation events

Open repository ↗

Ray is an AI compute engine. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.

43.5K stars7.9K forksPythonApache-2.0data-sciencedeep-learningdeploymentdistributedhyperparameter-optimizationhyperparameter-searchlarge-language-modelsllmkeyword: Ray distributed computingkeyword: Ray framework
PROJECT NEWS

Release, roadmap, and discussion

All news →
ray-project/ray

Ray

AI Infrastructure
Latest stable

Ray-2.57.0

ray-2.57.0
  • Ray Data: In this Ray release, we've enabled DataSourceV2 by default (#64821), so readparquet and friends use the new scan/listing infrastructure with row-group-aware chunking and predicate splitting. Hash Shuffle V2 eliminates the aggregat
  • HashShuffleV2 supports join (#63598, #64538, #64687). This lets shuffles reuse standard map/reduce scheduling, backpressure, and resource accounting.
  • Ray Serve: The HAProxy ingress is now distributed as the ray-haproxy PyPI package instead of being compiled into images, and it is the default HAProxy binary (#64141, #64163, #64164). We've also added gRPC support to the HAProxy direct-ingr
  • Ray Core: We've added an embedded RocksDB storage backend for GCS fault tolerance (REP-64), selectable with RAYgcsstorage=rocksdb and RAYgcsstoragepath (#63657). GCS fault tolerance no longer requires an external Redis instance. We've also
  • 🎉 New Features
Original release notes ↗

Publicly indicated next

Prereleases and milestones indicate public plans; they are not delivery commitments.

Observation trail

  1. changedupdatedAt
  2. changedupdatedAt, metrics
  3. changedmetrics
  4. discoveredinitial snapshot
  5. discoveredinitial snapshot
  6. changedtext, updatedAt
  7. changedupdatedAt
  8. discoveredinitial snapshot
  9. discoveredinitial snapshot
  10. discoveredinitial snapshot
  11. changedupdatedAt, metrics
  12. changedupdatedAt
  13. discoveredinitial snapshot
  14. changedupdatedAt, metrics
  15. changedupdatedAt, metrics
  16. changedupdatedAt, metrics, state
  17. discoveredinitial snapshot
  18. changedupdatedAt, metrics
  19. discoveredinitial snapshot
  20. changedinitial snapshot
  21. changedinitial snapshot
  22. changedinitial snapshot
  23. changedinitial snapshot
  24. changedinitial snapshot
  25. changedinitial snapshot
  26. changedinitial snapshot
  27. changedinitial snapshot
  28. changedinitial snapshot
  29. changedinitial snapshot
  30. changedinitial snapshot
50 shown
issue

[core] Ray session conflicts with PyArrow+HDFS

### What happened + What you expected to happen Using PyArrow fs with HDFS works fine outside a ray session: ``` file_sys, file_path = pyarrow.fs.FileSystem.from_uri(hdfs_folder) file_infos = file_sys.get_file_info(pyarrow.fs.FileSelector(file_path, recursive=False)) ``` However, after `ray.init()`, the same code results in a segmentation fault: ``` 2023-06-

importance 25@krfrickeopenbugP1corestabilitycore-fundamentalsOriginal evidence ↗
issue

[Umbrella] Ray Sandboxing with gVisor

### Description This is an umbrella issue to track Ray sandboxing support using gVisor. PRs: - [x] https://github.com/ray-project/ray/pull/64964 TODO: - [ ] add support for referencing local tar files for images (specifically with tar files created with `docker save`) - [ ] add modal compatible API for sandboxing - [ ] root cause why --ignore-cgroups is requ

importance 23@andrewsykimopenenhancementtriagecoresecuritycommunity-backlogOriginal evidence ↗
issue

[Data/LLM] Non stop CPU autoscaling with vLLM

### What happened + What you expected to happen I'm doing batch LLM inference using Ray Data, and I've noticed for large batches of prompts, the CPU autoscaler will continuously autoscale until it reaches maximum specified amount of CPU worker nodes as defined in my configuration file, and then it will start launching extra GPU instances even though I specif

importance 21@jiangwu300openbugP1performancedatallmOriginal evidence ↗
issue

Ray Dashboard is susceptible to a Local File Inclusion bug with default settings

### What happened + What you expected to happen **Description** Just as the title suggests, when initially starting up the Ray dashboard I can parse my local file system by supplying the `folder` HTTP parameter in GET requests to the `/logs` API endpoint in conjunction with relative file paths. **Expected Behavior** As a best practice, relative file paths sh

importance 20@rmhowe425closedbugP2dashboardobservabilitysecurityOriginal evidence ↗
issue

[serve][llm] Governance middleware layer for Ray Serve LLM — PII detection, cost budgets, policy enforcement, and audit trails

### Description Ray Serve LLM currently exposes an OpenAI-compatible API (chat completions, completions, embeddings) with no built-in mechanism for governance, guardrails, or policy enforcement at the serving layer. Teams deploying LLMs in production — especially in regulated industries (healthcare, finance, government) — need to add PII detection, cost budg

importance 20@nagasatish007openenhancementservesecuritycommunity-backlogOriginal evidence ↗
issue

[Data] read_webdataset emits one DataFrame per sample, causing per-sample size_bytes overhead in the output buffer

### Problem `WebDatasetDatasource._read_stream` yields one single-row pandas DataFrame per sample. Ray's output buffer estimates block memory on every emitted block: ``` BlockOutputBuffer.has_next -> _exceeded_buffer_size_limit -> get_estimated_memory_usage -> PandasBlockAccessor.size_bytes ``` So with N samples per shard, this deep `size_bytes` pass runs ~N

importance 16@Hyunoh-Yeoclosedperformancedatacommunity-backlogOriginal evidence ↗
issue

[data] Fair-share allocation overstates runnable task-pool demand

### What happened + What you expected to happen Ray Data's fair-share allocator uses a task-pool operator's configured maximum concurrency as its maximum resource demand. When no maximum is configured, the reported demand is unbounded even if the operator currently has only one input block and can only launch one task. This leaves resources assigned to an op

importance 16@praateekmahajanopenperformancedatacommunity-backlogOriginal evidence ↗
issue

[data] BlockOutputBuffer rebuilds the remainder for every row-sized output

### What happened + What you expected to happen `StreamingRepartition(target_num_rows_per_block=1)` can spend a noticeable amount of time turning one large input block into many one-row output blocks. The row-sized path in `BlockOutputBuffer.next()` builds the buffered block, slices off the next output, and puts the remainder back into a new builder. It repe

importance 16@praateekmahajanopenperformancedatacommunity-backlogOriginal evidence ↗
issue

[Train] Share PlacementGroupCleaner across concurrent Train v2 runs

### Description Ray Train v2 currently creates one detached `PlacementGroupCleaner` actor for each Train controller. The cleaner removes placement groups when its controller exits ungracefully. Since #64705, every cleaner is pinned to the head node so it does not prevent worker-node scale-down. However, this concentrates one Python cleaner process per concur

importance 16@OneSizeFitsQuorumopentrainperformancecommunity-backlogOriginal evidence ↗
pull request

[Core] Mobilint Accelerator Support

## Description This PR adds first-class support for Mobilint MBLT NPUs to Ray's accelerator abstraction by introducing a new `MBLTAcceleratorManager` under `ray/_private/accelerators/mblt.py`. This integration is developed and contributed by ETRI (Electronics and Telecommunications Research Institute) in collaboration with Mobilint. Based on the SDKs provide

importance 9@dataminsuopencoregocommunity-contributionOriginal evidence ↗
issue

[Core] Provide a way to disable the worker-log `(pid=…)` prefix without disabling driver forwarding or overriding the root logger

### What happens With `log_to_driver=True` (the default), Ray prepends a prefix to every worker/actor stdout/stderr line it forwards to the driver: ``` (SegmentationActor pid=18654) {"event": "segmenting batch", "job_id": "…", "level": "info"} ``` Our workers emit **structured logs — one JSON object per line** — which a stdout-based collector ships to Loki/G

importance 7@Liquidmaslopenusabilitycorecommunity-backlogOriginal evidence ↗
pull request

[core] Add opt-in swap accounting to memory monitor and scheduler

## Why Ray's OOM monitor kills tasks based on RAM alone, while the Linux OOM killer only fires when **both** RAM and swap are exhausted. On nodes provisioned with swap as overflow, Ray kills workers long before the kernel would. The scheduler's `memory` resource and the dashboard's Node Memory graph have the same RAM-only blind spot, and under `--enable-reso

importance 7@preneondopencoreobservabilitygocommunity-contributionOriginal evidence ↗
issue

[Docs] Run pre-commit hooks on doc/source: a per-directory ratchet

## Why reopen this [#42587](https://github.com/ray-project/ray/issues/42587) asked for pre-commit hooks to run on `doc/`. It was closed as completed, but the configuration change it asked for was never made. I closed it, and that was my error. What actually happened: six PRs in Aug–Sep 2024 ([#47004](https://github.com/ray-project/ray/pull/47004), [#47005](h

importance 6@dstrodtmanopendocsOriginal evidence ↗
issue

[Core] Removing an in-flight placement group can leak prepared bundles and block later placement groups

## What happened + What you expected to happen Removing a placement group while bundle preparation is in flight can leave both prepared raylet resources and the GCS placement-group scheduling gate stuck if one prepare callback never arrives. The scheduler already documents that a `PrepareBundleResources` callback may never be called after node death. In this

importance 5@logical-mishaopencorestabilitycommunity-backlogOriginal evidence ↗
issue

[Data] ObjectRefs passed to map UDFs through `fn_args` are not dereferenced

### What happened + What you expected to happen A direct `ObjectRef` passed as an element of `fn_args` reaches the UDF as an `ObjectRef` instead of its resolved value. Because the reference is captured in the serialized UDF wrapper, Ray's scheduler also cannot wait for the dependency before scheduling the map task. Expected behavior: - Direct `ObjectRef` ele

importance 5@viiccwenopenbugdatastabilitycommunity-backlogOriginal evidence ↗
pull request

[data] Add orc datasource for V2

## Description Support read orc format ## Related issues > Link related issues: "Fixes #1234", "Closes #1234", or "Related to #1234". ## Additional information > Optional: Add implementation details, API changes, usage examples, screenshots, etc.

importance 5@laysfireopendatagocommunity-contributionOriginal evidence ↗
pull request

[doc][KubeRay] Add mTLS for RayClusters user guide

## Description Adding user guide for mTLS configuration with RayClusters via KubeRay as per the new alpha feature in KubeRay 1.7 ## Related issues Relates to https://github.com/ray-project/kuberay/issues/5048 ## Additional information N/A

importance 5@chipspeakopendocscoregocommunity-contributionOriginal evidence ↗
pull request

[core] Enable TCP keepalive on GCS<->Redis connections

## Description Idle GCS↔Redis flows get silently removed by NAT, proxies, load balancers, and managed-service gateways. The GCS only finds out on its next command, which then hangs until a timeout instead of failing fast — and on a managed Redis behind an LB with a 60–350s idle timeout, this is a routine event, not an edge case. This PR enables TCP keepalive

importance 5@zzchunopendocscorecommunity-contributionOriginal evidence ↗
pull request

[docs] vendor the KubeRay CRD API reference into the Ray docs

## Why are these changes needed? The KubeRay CRD API reference — the field-level reference for `RayCluster`, `RayJob`, `RayService`, and `RayCronJob` — is published only on the MkDocs site at `ray-project.github.io/kuberay`. That site has two problems that compound each other: - Its `mkdocs.yml` `nav:` block contains only `index.md`. The API reference builds

importance 5@dstrodtmanopendocsgodocs-goOriginal evidence ↗
issue

[serve] Enable mypy type checking on ray/serve to catch real production bugs (e.g. the rank-corruption bug in #64181)

### What happened + What you expected to happen ### Description Ray Serve's controller code is fully type-annotated but never type-checked. The mypy pre-commit hook covers an allowlist of exactly 7 files repo-wide — from all of Serve, only `python/ray/serve/handle.py` and a handle-typing fixture: # .pre-commit-config.yaml - id: mypy args: ['--follow-imports=

importance 4@johntaylor-cellopenbugtriageservetech-debtOriginal evidence ↗
issue

[Data] OpTask._cancel never passes force=True

## Description `OpTask._cancel` never passes `force=True` to `ray.cancel`, on any path, so a blocked UDF keeps holding its CPU slot after execution fails. The actor-task check is the cause (`python/ray/data/_internal/execution/interfaces/physical_operator.py`): ```python is_actor_task = not self.get_task_id().actor_id().is_nil() ... force=force and not is_ac

importance 4@Hyunoh-Yeoopendatastabilitycommunity-backlogOriginal evidence ↗
issue

The task_id/put_index contract in `GetGeneratorReturnId` is unenforced (the RAY_CHECK is a tautology)

`WorkerContext::GetGeneratorReturnId` (`src/ray/core_worker/context.cc`) documents that the caller supplies both `task_id` and `put_index` or neither, because deducing only one of them keys the ObjectID to one task while drawing the index from another. The `RAY_CHECK` meant to enforce that is a tautology: ```cpp RAY_CHECK((task_id.IsNil() && !put_index.has_v

importance 4@LuciferYangclosedcoretech-debtstabilitycommunity-backlogOriginal evidence ↗
issue

[Core] Randomize worker port allocation to reduce deterministic collisions between raylets

### What happened + What you expected to happen When multiple raylets run in the same host network namespace with the same worker port range, each `WorkerPool` builds its free-port pool in ascending order and allocates from the lower bound. As a result, the raylets deterministically attempt to use the same initial ports, even when most of the configured rang

importance 4@zzchunopenbugtriagecorestabilitycommunity-backlogOriginal evidence ↗
issue

[Core][runtime_env] RuntimeEnv agent leaks one logger (and its file descriptors) per job, eventually failing all setups with EMFILE`

### What happened The RuntimeEnv Agent caches one logger per job in `_per_job_logger_cache` (`python/ray/_private/runtime_env/agent/runtime_env_agent.py:209`), created via `setup_component_logger` in `get_or_create_logger` (`:304-313`). Each logger eagerly opens one `RotatingFileHandler` for `runtime_env_setup-<job_id>.log` plus one per entry in the runtime

importance 4@zzchunopencorestabilitycommunity-backlogOriginal evidence ↗
issue

[Core][KubeRay] Autoscaler sends all log records, including INFO, to stderr

## What happened + What you expected to happen `_setup_logging()` in `python/ray/autoscaler/_private/kuberay/run_autoscaler.py` attaches a single `logging._StderrHandler` to the root logger, so **every** autoscaler log record — INFO included — is written to the container's **stderr**. The function's own docstring says it should be stdout: ```python def _setu

importance 4@vivekmahajanopenusabilitycoreobservabilitystabilitycommunity-backlogOriginal evidence ↗
pull request

[core][rdt] Application-level exclusive NIC assignment for NIXL/UCX t…

## Why Ray actors using RDT/NIXL over UCX don't control which RDMA NIC they use —UCX picks devices on its own. On multi-NIC nodes this means several actors can silently pile onto the same NIC while others sit idle, causing unpredictable tensor-transfer performance with no visible error. Closes/Addresses #64426. ## What Per discussion on the issue (thanks @Sp

importance 4@AyushKashyapIIcorecommunity-contributionunstaleOriginal evidence ↗
pull request

[Data][1/N] add external shuffle runtime library

Adds the file-transport runtime for a new external (on-disk) shuffle variant: TCP wire protocol, per-node ShuffleFileServer actor, connection / fetch primitives, and error classification. This PR lands only the runtime library and its testers required by external shuffle tasks. It's not wired into the plan yet and there's no user-visible behavior change. ##

importance 4@ShockYoungCHNopendatagoOriginal evidence ↗
pull request

[CI] Make the Vale pre-commit hook run, and upgrade Vale to 3.17.1

## Description Two related fixes to the Vale setup. ### 1. The `vale` pre-commit hook has never run The top-level `exclude` in `.pre-commit-config.yaml` lists `doc/source/`, and pre-commit ANDs that global `exclude` with each hook's own `files` pattern. The Vale hook's pattern, `^doc/source/data/.*\.(md|rst)$`, lives entirely inside `doc/source/`, so the two

importance 4@dstrodtmanopendocscoredevprodgoOriginal evidence ↗
pull request

[Data] OpTask._cancel never passes force=True

## Description Current behavior of `OpTask._cancel` never passes `force=True` to `ray.cancel`. It is because whether the task is an actor task is determined by checking if the actor id is nil, which is false for both normal tasks and actor tasks (refer to the issue). Slicing the hex method was withdrawn through discussions with maintainers. Instead, removed

importance 4@Hyunoh-Yeoopendatacommunity-contributionOriginal evidence ↗
pull request

fix(autoscaler): deduplicate cloud instances during termination

Fixes #65416 ## Summary Multiple instance-manager records can refer to the same cloud instance after a Raylet restarts in place. The cloud-instance subscriber previously forwarded every record's ID to the provider, so KubeRay could decrement the same worker more than once while building a scale request and fail with an assertion before submitting the deletio

importance 4@mikemikimikeopencorecommunity-contributionOriginal evidence ↗
pull request

[docs] vendor the KubeRay CRD API reference into the Ray docs

## Why are these changes needed? The KubeRay CRD API reference — the field-level reference for `RayCluster`, `RayJob`, `RayService`, and `RayCronJob` — is published only on the MkDocs site at `ray-project.github.io/kuberay`. That site has two problems that compound each other: - Its `mkdocs.yml` `nav:` block contains only `index.md`. The API reference builds

importance 4@dstrodtmanclosedOriginal evidence ↗
pull request

[train] Share PlacementGroupCleaner across Train runs

## Description Ray Train v2 currently creates one detached `PlacementGroupCleaner` actor per Train controller. Since cleaners are pinned to the head node, their memory use grows linearly with concurrent Train runs. In the workload described in #65443, 24 cleaners use approximately 14.4 GB on the head node. This PR replaces the per-controller actors with one

importance 4@OneSizeFitsQuorumopentraincommunity-contributionOriginal evidence ↗
pull request

[core] Post object info pubsub publishes on a dedicated thread

## Description serve microbenchmark | metric | master before #63983 | PR fix | PR fix vs master before #63983 | |---|--:|--:|--:| | http_p50_latency | 2.157 | 2.210 | +2.4% 🔴 | | http_p90_latency | 2.274 | 2.340 | +2.9% 🔴 | | http_p95_latency | 2.319 | 2.409 | +3.9% 🔴 | | http_p99_latency | 2.500 | 2.572 | +2.9% 🔴 | | http_1mb_p50_latency | 2.329 | 2.377 | +

importance 3@Yicheng-Lu-llllstalecoregoOriginal evidence ↗
pull request

[Data] Fix ResourceBudget backpressure causing pipeline stall

## Why are these changes needed? Two interacting bugs in `ResourceBudgetBackpressurePolicy` can cause a Ray Data pipeline to stall indefinitely — CPU/GPU idle, Object Store filling up, no error logged, no progress. Reproducing this requires enough intermediate output to pressure the Object Store; small pipelines won't hit it. ### Background `ResourceBudgetBa

importance 3@dragonguopendatagocommunity-contributionOriginal evidence ↗
pull request

[core][metrics] Add MetricRegistry: idempotent facade over ray.util.metrics

## Description Adds `ray.util.metric_registry.MetricRegistry` (DeveloperAPI): a thread-safe, get-or-create factory over the three custom-metric primitives (`Counter`/`Gauge`/`Histogram`). It owns the quirks every caller currently re-solves by hand: - **Dedup by name** — the same name returns a handle to the same underlying Ray metric, so callers don't manage

importance 3@xyuzhclosedstalecoregoOriginal evidence ↗
pull request

[serve] Build serve_haproxy_* metrics through MetricRegistry

## Description Replaces the seven raw `ray.util.metrics` constructions in `HAProxyMetricsCollector` with handles from a shared, module-level `MetricRegistry(namespace="serve_haproxy")`. The registry get-or-creates by name, so re-constructing a collector in the same process (tests, actor restarts) reuses the existing Ray metric objects instead of re-creating

importance 3@xyuzhclosedservestaleOriginal evidence ↗
pull request

[Autoscaler][AWS] Retry key pair creation after duplicate

## Description Concurrent `ray up` processes can both observe the same generated EC2 key-pair name as available and then race in `CreateKeyPair`. The losing request receives `InvalidKeyPair.Duplicate`, which currently aborts AWS bootstrap even though the existing loop can safely try another generated name. Catch only `InvalidKeyPair.Duplicate` and continue w

importance 3@hogeheer499-commitsopencorecommunity-contributionunstaleOriginal evidence ↗
pull request

fix(core): fold runtime-env hash instead of truncating to int

## Description `CalculateRuntimeEnvHash` previously did `return static_cast<int>(hash)` on a 64-bit `size_t` hash. That drops the upper 32 bits and can produce a negative key. The value is used as a worker-pool reuse key, so a low-bit collision can silently run a task under the wrong runtime env. This folds with `hash ^ (hash >> 32)` and keeps a non-negative

importance 3@Solaris-starstalecorecommunity-contributionOriginal evidence ↗
pull request

[Train] Add NCCL RAS health callback

## Description This PR adds an opt-in callback that detects hanging distributed training jobs by polling NCCL's RAS (Reliability/Availability/Serviceability) subsystem. NCCL ≥ 2.24 runs a monitoring thread inside every NCCL process that forms a peer mesh tracking per-rank health and collective op-counts. By querying the `ncclras` client and diffing collectiv

importance 3@pseudo-rnd-thoughtsopentrainOriginal evidence ↗
pull request

[Core] Support dynamic node labeling at runtime

## Description Ray only lets you set node labels at startup, through `ray start --labels`, `RAY_OVERRIDE_LABELS`, or `--labels-file`. After a node is up, its labels are fixed for the life of the raylet. On a long-running cluster that is a poor fit: the labels you want on a node change over time, and the only way to change them today is to restart the node. W

importance 3@nadongjuncorecommunity-contributionunstaleOriginal evidence ↗
pull request

[core][dashboard] Return 4xx from node and actor detail APIs

## Description Makes three node/actor dashboard endpoints report client errors with 4xx status codes instead of 200/500. [#51417](https://github.com/ray-project/ray/pull/51417) added the `HTTPStatusCode` enum and the `rest_response(status_code=...)` plumbing, but adoption stalled after one endpoint. Across non-test dashboard source there are currently 28 `OK

importance 3@chenyuan99opendashboardcoregocommunity-contributionOriginal evidence ↗
pull request

[Serve] Optimize RollingWindow metrics using monotonic deque in O(1)

### What is the problem this PR is trying to solve? This PR optimizes the metrics calculations in `RollingWindowMax` and `RollingWindowMin` by replacing the `O(num_buckets)` array scan with an amortized `O(1)` monotonic deque. It also fixes a correctness bug in the legacy implementation where the currently accumulating active bucket was ignored during `get_m

importance 3@pavan51openservecommunity-contributionunstaleOriginal evidence ↗
pull request

[train] set Neuron rendezvous env vars in the XLA backend

## Description `_TorchAwsNeuronXLABackend` cannot bring up a Neuron collective that spans instances. On two `trn1.32xlarge` hosts with 64 workers at one NeuronCore each, backend startup fails inside `_setup_xla_torch_process_group` with ``` Nrt::BuildGlobalComm failed on NeuronCores 0-1(2): nrt_status=1, message="Non specific failure". ``` The Neuron runtime

importance 3@violiveiopenstaletraincommunity-contributionOriginal evidence ↗
pull request

[core] feat(rdt): enable driver-side ray.put with NIXL tensor transport

Allow ray.put(value, _tensor_transport='nixl') from a driver process. Previously this failed because get_runtime_context().current_actor raises RuntimeError in a non-actor context. Changes: - Make RDTMeta.src_actor and TransferMetadata.src_actor Optional - Catch RuntimeError in put_object and set src_actor=None for driver - Reject two-sided transports (NCCL/

importance 3@n3sfanopencorecommunity-contributionOriginal evidence ↗
pull request

fix json bug

## What happened + What you expected to happen Deploying a Ray Serve LLM (`ray.serve.llm.build_openai_app`) with a nested dataclass field in `engine_kwargs` — e.g. `structured_outputs_config` — crashes the vLLM engine on startup with: ``` AttributeError: 'dict' object has no attribute 'reasoning_parser' ``` or, depending on which field is accessed first: ```

importance 3@MiXaiLL76openservestalecommunity-contributionOriginal evidence ↗
pull request

[core][gcs][Actice-Passive] Phase 2.1 Add Active-Passive leader-election interface (protocol, status, client cache)

## Description This is the foundational, interface-only PR for the Active-Passive GCS feature (split from the larger #64422). It introduces the wire-protocol field, status code, config flag, and client-side leadership-caching plumbing — all feature-gated behind `LEADER_ELECT` / `RAY_LEADER_ELECT`, which **defaults to OFF**. No server-side passive behavior is

importance 3@YoyinZycclosedcoregocommunity-contributionOriginal evidence ↗
pull request

[dashboard] Stream job log responses

## Description `GET /api/jobs/{job_or_submission_id}/logs` currently materializes the full driver log at each dashboard hop. Large or concurrent requests can exhaust dashboard memory. This change: - reads driver logs in 64 KiB chunks - JSON-escapes chunks incrementally - streams the response through JobAgent, JobHead, and the parent dashboard proxy with back

importance 3@bvolpatoopendashboardcoregocommunity-contributionOriginal evidence ↗
pull request

[Data] Throttle OutputBackpressureGuard releases with a per-op interval

## Description **Summary:** Add an opt-in, per-operator minimum interval between `OutputBackpressureGuard` releases so the liveness escape hatch can't defeat backpressure on large-block workloads. Disabled by default; no behavior change unless configured. `OutputBackpressureGuard` is a liveness escape hatch: when backpressure policies clamp an operator's out

importance 3@dragonguopendatagocommunity-contributionOriginal evidence ↗
pull request

[docs] Add Kubernetes and KubeRay conventions to the style guide

## Why this change Ray on Kubernetes docs describe Kubernetes API objects alongside Ray concepts, and the two vocabularies collide. Deployment, Job, and Service each name both a Kubernetes API object and a distinct Ray concept, so capitalization is the only thing telling them apart, and the style guide didn't say which form to use where. A contributor asking

importance 3@dstrodtmanopendocscoregoOriginal evidence ↗