diff --git a/TASK_DETAILS.md b/TASK_DETAILS.md
index b331f7d8..e1690821 100644
--- a/TASK_DETAILS.md
+++ b/TASK_DETAILS.md
@@ -204,7 +204,7 @@ We welcome new engineering problem ideas — even without complete verification
Polarization-multiplexed holography |
- | ComputerSystems |
+ ComputerSystems |
MallocLab |
High-performance C memory allocator (utilization & throughput) |
@@ -212,6 +212,10 @@ We welcome new engineering problem ideas — even without complete verification
DuckDBWorkloadOptimization |
Index / materialized-view selection and query rewriting on official DuckDB workloads |
+
+ AdaptiveCompressedTelemetryExecution |
+ CPU-measured adaptive telemetry compression with lossless decoding, compressed-domain queries, and storage/compute cost trade-offs |
+
| EngDesign |
CY_03, WJ_01, XY_05, AM_02, AM_03, YJ_02, YJ_03 |
diff --git a/TASK_DETAILS_zh-CN.md b/TASK_DETAILS_zh-CN.md
index 44d1b1fa..ff0fc982 100644
--- a/TASK_DETAILS_zh-CN.md
+++ b/TASK_DETAILS_zh-CN.md
@@ -204,7 +204,7 @@ Frontier-Eng 目前已覆盖以下领域的任务。每个任务均配有可运
偏振复用全息 |
- | ComputerSystems |
+ ComputerSystems |
MallocLab |
高性能 C 动态内存分配器(utilization & throughput) |
@@ -212,6 +212,10 @@ Frontier-Eng 目前已覆盖以下领域的任务。每个任务均配有可运
DuckDBWorkloadOptimization |
基于 DuckDB 官方 workload 的索引 / 物化视图选择与查询改写 |
+
+ AdaptiveCompressedTelemetryExecution |
+ 实测 CPU 的自适应遥测数据压缩、无损解码、压缩态查询与存储/计算成本权衡 |
+
| EngDesign |
CY_03, WJ_01, XY_05, AM_02, AM_03, YJ_02, YJ_03 |
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/README.md b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/README.md
new file mode 100644
index 00000000..dd65f981
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/README.md
@@ -0,0 +1,73 @@
+# Adaptive Compressed Telemetry Execution
+
+This CPU benchmark co-designs a telemetry column format and the operators that
+consume it. Candidate C++ code encodes five correlated columns into opaque blocks,
+decodes them losslessly, and answers exact filters and conditional sums directly
+from those blocks. The evaluator compiles and runs the candidate, measures real
+CPU time, checks every decoded byte and query answer, and reports both absolute
+performance and a public cost-per-logical-TiB objective.
+
+The task is motivated by the CPU and representation-efficiency requirements in the
+[OpenTelemetry Logs Data Model](https://opentelemetry.io/docs/specs/otel/logs/data-model/)
+and by recent work on composable, query-aware formats such as
+[FastLanes](https://vldb.org/pvldb/vol18/p4629-afroozeh.pdf).
+
+## Files
+
+- `Task.md`: full API, workload, correctness, measurement, and scoring contract.
+- `references/problem_config.json`: public execution, pricing, and scenario settings.
+- `scripts/init.cpp`: editable raw-column starter implementation.
+- `baseline/solution.cpp`: immutable copy of the raw starter.
+- `baseline/result_log.txt`: recorded starter measurement.
+- `verification/codec_api.h`: immutable candidate ABI.
+- `verification/benchmark_driver.cpp`: immutable timed C++ driver.
+- `verification/evaluator.py`: dataset generator, compiler, oracle, and scorer.
+- `frontier_eval/`: unified-task metadata.
+
+## Requirements
+
+- Python 3.10 or newer; only the standard library is used.
+- `g++` with C++20 support.
+- A Linux-like host for CPU affinity and resource limits.
+
+No database, service, network access, accelerator, or task-specific Python package
+is required. The driver pins each timed process to one available CPU.
+
+## Direct evaluation
+
+From this task directory:
+
+```bash
+python verification/evaluator.py scripts/init.cpp
+```
+
+The uncompressed starter must be correct and scores exactly `1.0`. Measurements
+vary by CPU, but the evaluator measures the immutable baseline in the same run for
+every changed candidate. A score above `1.0` reduces the modeled monthly cost using
+measured storage bytes and CPU time.
+
+To retain detailed measurements:
+
+```bash
+python verification/evaluator.py scripts/init.cpp \
+ --metrics-out metrics.json --artifacts-out artifacts.json
+```
+
+## Unified evaluation
+
+From the repository root:
+
+```bash
+python -m frontier_eval \
+ task=unified \
+ task.benchmark=ComputerSystems/AdaptiveCompressedTelemetryExecution \
+ algorithm=openevolve \
+ algorithm.iterations=0
+```
+
+## Editing contract
+
+Only edit the code between `EVOLVE-BLOCK-START` and `EVOLVE-BLOCK-END` in
+`scripts/init.cpp`. Preserve the function signatures in `verification/codec_api.h`.
+The editable block may add standard or compiler-provided headers, helpers, metadata,
+adaptive encoding selection, SIMD code, and any self-contained block representation.
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/Task.md b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/Task.md
new file mode 100644
index 00000000..34a25651
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/Task.md
@@ -0,0 +1,172 @@
+# Task: Adaptive Compressed Telemetry Execution
+
+## 1. Engineering problem
+
+Telemetry backends continuously ingest timestamped events and later scan them for
+incident response, dashboards, retention, and audit queries. Storing every field as
+an uncompressed 64-bit value is fast but expensive. Aggressive compression can
+reduce storage traffic while making ingestion, full decoding, or selective queries
+more CPU-intensive. The useful engineering problem is therefore not compression in
+isolation: it is joint design of a block representation and the operators that use
+that representation.
+
+The [OpenTelemetry Logs Data Model](https://opentelemetry.io/docs/specs/otel/logs/data-model/)
+defines common timestamp, severity, resource, and attribute concepts and explicitly
+calls out efficient serialization and space use. Modern systems research similarly
+co-designs compression and execution: the
+[FastLanes file format](https://vldb.org/pvldb/vol18/p4629-afroozeh.pdf) uses
+composable data-parallel encodings, multi-column relationships, partial decoding,
+and compressed-vector access, while
+[MorphStore](https://arxiv.org/abs/2004.09350) studies complete analytical pipelines
+over compressed representations.
+
+This benchmark presents the same open design space in a self-contained CPU task.
+Candidate code is actually compiled and timed; there is no analytical prediction of
+codec or query performance.
+
+## 2. Logical schema
+
+Every row contains five unsigned 64-bit columns:
+
+| Index | Column | Meaning |
+|---:|---|---|
+| 0 | `timestamp_ns` | Event time in Unix nanoseconds; nondecreasing within a scenario |
+| 1 | `service_id` | Service or tenant identifier |
+| 2 | `severity` | OpenTelemetry-style numeric severity |
+| 3 | `duration_us` | Request or operation duration in microseconds |
+| 4 | `payload_bytes` | Event payload size in bytes |
+
+Rows are divided into public `block_rows`-sized blocks. The candidate owns the
+entire byte representation inside each block and may encode columns independently,
+jointly, or adaptively.
+
+## 3. Candidate API
+
+The immutable declarations are in `verification/codec_api.h`:
+
+```cpp
+bool encode_block(const BlockView& input,
+ std::vector& encoded);
+
+bool decode_block(const EncodedView& encoded,
+ const MutableBlock& output);
+
+std::uint64_t query_block(const EncodedView& encoded,
+ const QuerySpec& query);
+```
+
+`EncodedView` supplies the opaque bytes and row count to a fresh process. An encoded
+block must therefore be self-contained; pointers, process-global state, source-file
+references, and external side files are invalid representations.
+
+`decode_block` must reproduce every original value exactly. The evaluator allocates
+the output columns.
+
+## 4. Exact query semantics
+
+All ranges are inclusive and arithmetic uses unsigned 64-bit values. Inputs are
+chosen so correct aggregates do not overflow.
+
+- `CountEqual`: count rows where `filter_column == low`.
+- `CountRange`: count rows where `low <= filter_column <= high`.
+- `SumWhereEqual`: sum `value_column` where `filter_column == low`.
+- `SumWhereRange`: sum `value_column` where
+ `low <= filter_column <= high`.
+
+A correct baseline may decode inside `query_block`. More advanced solutions can
+answer from metadata, dictionaries, bit-packed vectors, learned residuals, or other
+compressed representations.
+
+## 5. Workloads
+
+The evaluator generates three deterministic, multi-column datasets:
+
+1. `steady_api_traffic`: regular timestamps, low service cardinality, and mostly
+ informational events.
+2. `bursty_multitenant_observability`: rotating hot tenants, burst boundaries,
+ higher cardinality, and localized error periods.
+3. `incident_distribution_shift`: correlated changes in service popularity,
+ severity, duration, and payload during an incident.
+
+Each scenario uses a separate seed and contains eight exact query templates covering
+equality, ranges, conditional sums, time windows, hot values, and low-selectivity
+conditions. The generator seed can be overridden by the evaluator CLI for robustness
+testing.
+
+## 6. Verification and measurement
+
+The evaluator performs the following steps:
+
+1. Enforce the source-size limit and compile the candidate with
+ `g++ -std=c++20 -O3 -march=native`.
+2. Generate each raw dataset outside the timed region.
+3. Run encoding in a CPU-pinned child process after warm-up.
+4. Delete the raw input, then start a fresh process to decode the encoded file.
+5. Compare the complete decoded binary output byte-for-byte with the original.
+6. Start another fresh process, execute every query over every block, and compare
+ all integer results with an independent Python oracle.
+7. Report median, minimum, and maximum wall time over the configured measured rounds.
+
+File loading, compilation, encoded-file writing, decoded-file writing, and result
+serialization are excluded from the timed regions. Candidate allocation and the
+actual encode/decode/query functions are included. Each child is pinned to one CPU,
+so the elapsed time is a practical single-core performance measurement. A memory
+limit, process CPU limit, wall timeout, encoded-size limit, and output-file limit are
+enforced.
+
+The evaluator reports:
+
+- encode and decode GiB/s;
+- compressed-query batch GiB/s;
+- encoded bytes and compression ratio;
+- per-phase timing samples and peak resident memory; and
+- cost components and score for every scenario.
+
+## 7. Economic objective
+
+Let:
+
+- `r = encoded_bytes / logical_bytes`;
+- `H_e`, `H_d`, and `H_q` be measured encode, full-decode, and fixed-query-batch
+ core-hours extrapolated to one logical TiB;
+- `P_s` be the public storage price coefficient in dollars per GiB-month;
+- `P_c` be the public CPU price coefficient in dollars per core-hour; and
+- `D` and `Q` be scenario-specific monthly full-decode and query-batch counts.
+
+The scenario cost is:
+
+```text
+storage_cost = 1024 * r * P_s
+cpu_cost = P_c * (H_e + D * H_d + Q * H_q)
+monthly_cost_per_logical_TiB = storage_cost + cpu_cost
+```
+
+The coefficients are versioned workload parameters, not claims about a particular
+cloud vendor. They make the storage/CPU trade-off explicit while every performance
+input to the formula comes from executed candidate code.
+
+For scenario `i`:
+
+```text
+ratio_i = baseline_monthly_cost_i / candidate_monthly_cost_i
+```
+
+`combined_score` is the geometric mean of the three ratios. The raw starter is the
+immutable baseline and scores exactly `1.0`; larger is better.
+
+## 8. Correctness and resource gates
+
+Any compilation error, timeout, crash, false return, oversized block, incomplete
+decode, byte mismatch, query mismatch, or non-finite metric yields
+`valid=0.0` and `combined_score=0.0`.
+
+The public limits are in `references/problem_config.json`:
+
+- candidate source: at most 1,000,000 bytes;
+- encoded block: at most twice its raw bytes plus a small fixed allowance;
+- process address space: 1 GiB;
+- one pinned CPU per timed process; and
+- no external libraries, assets, services, or network access.
+
+The task permits portable C++, compiler intrinsics, adaptive block selection, and
+self-contained metadata. Only the code inside the EVOLVE markers may change.
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/baseline/result_log.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/baseline/result_log.txt
new file mode 100644
index 00000000..3f7086d4
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/baseline/result_log.txt
@@ -0,0 +1,21 @@
+Command: python verification/evaluator.py scripts/init.cpp
+
+{
+ "baseline_total_monthly_cost_per_tib": 74.21482581936795,
+ "candidate_compression_ratio": 1.0000755310058593,
+ "candidate_decode_gib_s": 35.02579991081217,
+ "candidate_encode_gib_s": 16.717838409707195,
+ "candidate_query_batch_gib_s": 3.2003934172792485,
+ "candidate_source_matches_baseline": 1.0,
+ "candidate_total_monthly_cost_per_tib": 74.21482581936795,
+ "combined_score": 1.0,
+ "correctness": 1.0,
+ "mean_score_ratio": 1.0,
+ "min_score_ratio": 1.0,
+ "scenario_count": 3.0,
+ "timeout": 0.0,
+ "valid": 1.0
+}
+
+Throughput and cost components are measured and therefore host-dependent. The
+starter score remains exactly 1.0 because its source matches the immutable baseline.
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/baseline/solution.cpp b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/baseline/solution.cpp
new file mode 100644
index 00000000..1e378093
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/baseline/solution.cpp
@@ -0,0 +1,96 @@
+#include "codec_api.h"
+
+// EVOLVE-BLOCK-START
+#include
+#include
+
+namespace frontier_telemetry {
+
+namespace {
+
+constexpr std::size_t column_index(Column column) {
+ return static_cast(column);
+}
+
+bool raw_size(std::size_t count, std::size_t &bytes) {
+ constexpr std::size_t width = kColumnCount * sizeof(std::uint64_t);
+ if (count > std::numeric_limits::max() / width) {
+ return false;
+ }
+ bytes = count * width;
+ return true;
+}
+
+std::uint64_t load_value(const EncodedView &encoded, Column column,
+ std::size_t row) {
+ const std::size_t offset =
+ (column_index(column) * encoded.count + row) * sizeof(std::uint64_t);
+ std::uint64_t value = 0;
+ std::memcpy(&value, encoded.data + offset, sizeof(value));
+ return value;
+}
+
+} // namespace
+
+bool encode_block(const BlockView &input, std::vector &encoded) {
+ std::size_t bytes = 0;
+ if (!raw_size(input.count, bytes)) {
+ return false;
+ }
+ encoded.resize(bytes);
+ for (std::size_t column = 0; column < kColumnCount; ++column) {
+ if (input.count != 0 && input.columns[column] == nullptr) {
+ return false;
+ }
+ std::memcpy(encoded.data() + column * input.count * sizeof(std::uint64_t),
+ input.columns[column], input.count * sizeof(std::uint64_t));
+ }
+ return true;
+}
+
+bool decode_block(const EncodedView &encoded, const MutableBlock &output) {
+ std::size_t expected = 0;
+ if (encoded.count != output.count || !raw_size(encoded.count, expected) ||
+ encoded.size != expected) {
+ return false;
+ }
+ for (std::size_t column = 0; column < kColumnCount; ++column) {
+ if (output.count != 0 && output.columns[column] == nullptr) {
+ return false;
+ }
+ std::memcpy(output.columns[column],
+ encoded.data + column * output.count * sizeof(std::uint64_t),
+ output.count * sizeof(std::uint64_t));
+ }
+ return true;
+}
+
+std::uint64_t query_block(const EncodedView &encoded, const QuerySpec &query) {
+ std::uint64_t result = 0;
+ for (std::size_t row = 0; row < encoded.count; ++row) {
+ const std::uint64_t filter =
+ load_value(encoded, query.filter_column, row);
+ switch (query.kind) {
+ case QueryKind::CountEqual:
+ result += static_cast(filter == query.low);
+ break;
+ case QueryKind::CountRange:
+ result +=
+ static_cast(filter >= query.low && filter <= query.high);
+ break;
+ case QueryKind::SumWhereEqual:
+ if (filter == query.low) {
+ result += load_value(encoded, query.value_column, row);
+ }
+ break;
+ case QueryKind::SumWhereRange:
+ if (filter >= query.low && filter <= query.high) {
+ result += load_value(encoded, query.value_column, row);
+ }
+ break;
+ }
+ }
+ return result;
+}
+} // namespace frontier_telemetry
+// EVOLVE-BLOCK-END
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/agent_files.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/agent_files.txt
new file mode 100644
index 00000000..effc019a
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/agent_files.txt
@@ -0,0 +1,9 @@
+README.md
+Task.md
+scripts/init.cpp
+verification/codec_api.h
+verification/benchmark_driver.cpp
+verification/evaluator.py
+baseline/solution.cpp
+references/problem_config.json
+frontier_eval/constraints.txt
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/artifact_files.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/artifact_files.txt
new file mode 100644
index 00000000..76dc893a
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/artifact_files.txt
@@ -0,0 +1,2 @@
+metrics.json
+artifacts.json
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/candidate_destination.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/candidate_destination.txt
new file mode 100644
index 00000000..d26dd4fb
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/candidate_destination.txt
@@ -0,0 +1 @@
+scripts/init.cpp
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/constraints.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/constraints.txt
new file mode 100644
index 00000000..2e294554
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/constraints.txt
@@ -0,0 +1,16 @@
+AdaptiveCompressedTelemetryExecution constraints:
+1) Only modify code between `// EVOLVE-BLOCK-START` and
+ `// EVOLVE-BLOCK-END` in `scripts/init.cpp`; marker lines must remain intact.
+2) Preserve the three function signatures declared in `verification/codec_api.h`:
+ `encode_block`, `decode_block`, and `query_block`.
+3) Encoded blocks must be self-contained. Do not use external files, network access,
+ subprocesses, process-global source data, or pointers embedded in encoded bytes.
+4) Decoding must reproduce all five uint64 columns exactly, and all four query kinds
+ must implement the inclusive semantics documented in `Task.md`.
+5) Candidate source must stay below 1,000,000 bytes. Each encoded block must stay
+ below the configured size bound, and each timed process has a 1 GiB address-space
+ limit and a single pinned CPU.
+6) Use self-contained C++20 and compiler-provided intrinsics only. No external
+ libraries, downloaded assets, accelerators, or services are available.
+7) Do not modify the API, driver, evaluator, configuration, baseline, documentation,
+ or `frontier_eval` metadata; these paths are checked read-only.
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/copy_files.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/copy_files.txt
new file mode 100644
index 00000000..9c558e35
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/copy_files.txt
@@ -0,0 +1 @@
+.
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/eval_command.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/eval_command.txt
new file mode 100644
index 00000000..527d23b5
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/eval_command.txt
@@ -0,0 +1 @@
+{python} verification/evaluator.py {candidate} --metrics-out metrics.json --artifacts-out artifacts.json
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/eval_cwd.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/eval_cwd.txt
new file mode 100644
index 00000000..9c558e35
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/eval_cwd.txt
@@ -0,0 +1 @@
+.
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/initial_program.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/initial_program.txt
new file mode 100644
index 00000000..d26dd4fb
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/initial_program.txt
@@ -0,0 +1 @@
+scripts/init.cpp
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/readonly_files.txt b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/readonly_files.txt
new file mode 100644
index 00000000..c287d998
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/frontier_eval/readonly_files.txt
@@ -0,0 +1,6 @@
+README.md
+Task.md
+baseline
+references
+verification
+frontier_eval
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/references/problem_config.json b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/references/problem_config.json
new file mode 100644
index 00000000..3bd3b59e
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/references/problem_config.json
@@ -0,0 +1,55 @@
+{
+ "benchmark_id": "adaptive_compressed_telemetry_execution",
+ "evaluation_seed": 20260713,
+ "schema": [
+ {"column": 0, "id": "timestamp_ns", "description": "event timestamp in Unix nanoseconds"},
+ {"column": 1, "id": "service_id", "description": "numeric service or tenant identifier"},
+ {"column": 2, "id": "severity", "description": "OpenTelemetry-style severity number"},
+ {"column": 3, "id": "duration_us", "description": "request or operation duration in microseconds"},
+ {"column": 4, "id": "payload_bytes", "description": "event payload size in bytes"}
+ ],
+ "execution": {
+ "block_rows": 4096,
+ "warmup_rounds": 2,
+ "measured_rounds": 7,
+ "compile_timeout_s": 60,
+ "run_timeout_s": 30,
+ "source_limit_bytes": 1000000,
+ "memory_limit_mb": 1024,
+ "max_encoded_ratio": 2.0
+ },
+ "pricing": {
+ "storage_dollars_per_gib_month": 0.023,
+ "cpu_dollars_per_core_hour": 0.10,
+ "description": "Public scenario coefficients, not a claim about any specific vendor price"
+ },
+ "scenarios": [
+ {
+ "id": "steady_api_traffic",
+ "pattern": "steady",
+ "rows": 262144,
+ "seed": 1103,
+ "monthly_full_decodes": 80.0,
+ "monthly_query_batches": 240.0,
+ "description": "Low-cardinality services, regular timestamps, mostly informational traffic"
+ },
+ {
+ "id": "bursty_multitenant_observability",
+ "pattern": "bursty",
+ "rows": 262144,
+ "seed": 2207,
+ "monthly_full_decodes": 24.0,
+ "monthly_query_batches": 120.0,
+ "description": "Rotating hot tenants, burst boundaries, higher cardinality, and local incidents"
+ },
+ {
+ "id": "incident_distribution_shift",
+ "pattern": "incident",
+ "rows": 262144,
+ "seed": 3301,
+ "monthly_full_decodes": 8.0,
+ "monthly_query_batches": 40.0,
+ "description": "A workload whose service, severity, latency, and payload distributions shift during an incident"
+ }
+ ]
+}
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/scripts/init.cpp b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/scripts/init.cpp
new file mode 100644
index 00000000..1e378093
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/scripts/init.cpp
@@ -0,0 +1,96 @@
+#include "codec_api.h"
+
+// EVOLVE-BLOCK-START
+#include
+#include
+
+namespace frontier_telemetry {
+
+namespace {
+
+constexpr std::size_t column_index(Column column) {
+ return static_cast(column);
+}
+
+bool raw_size(std::size_t count, std::size_t &bytes) {
+ constexpr std::size_t width = kColumnCount * sizeof(std::uint64_t);
+ if (count > std::numeric_limits::max() / width) {
+ return false;
+ }
+ bytes = count * width;
+ return true;
+}
+
+std::uint64_t load_value(const EncodedView &encoded, Column column,
+ std::size_t row) {
+ const std::size_t offset =
+ (column_index(column) * encoded.count + row) * sizeof(std::uint64_t);
+ std::uint64_t value = 0;
+ std::memcpy(&value, encoded.data + offset, sizeof(value));
+ return value;
+}
+
+} // namespace
+
+bool encode_block(const BlockView &input, std::vector &encoded) {
+ std::size_t bytes = 0;
+ if (!raw_size(input.count, bytes)) {
+ return false;
+ }
+ encoded.resize(bytes);
+ for (std::size_t column = 0; column < kColumnCount; ++column) {
+ if (input.count != 0 && input.columns[column] == nullptr) {
+ return false;
+ }
+ std::memcpy(encoded.data() + column * input.count * sizeof(std::uint64_t),
+ input.columns[column], input.count * sizeof(std::uint64_t));
+ }
+ return true;
+}
+
+bool decode_block(const EncodedView &encoded, const MutableBlock &output) {
+ std::size_t expected = 0;
+ if (encoded.count != output.count || !raw_size(encoded.count, expected) ||
+ encoded.size != expected) {
+ return false;
+ }
+ for (std::size_t column = 0; column < kColumnCount; ++column) {
+ if (output.count != 0 && output.columns[column] == nullptr) {
+ return false;
+ }
+ std::memcpy(output.columns[column],
+ encoded.data + column * output.count * sizeof(std::uint64_t),
+ output.count * sizeof(std::uint64_t));
+ }
+ return true;
+}
+
+std::uint64_t query_block(const EncodedView &encoded, const QuerySpec &query) {
+ std::uint64_t result = 0;
+ for (std::size_t row = 0; row < encoded.count; ++row) {
+ const std::uint64_t filter =
+ load_value(encoded, query.filter_column, row);
+ switch (query.kind) {
+ case QueryKind::CountEqual:
+ result += static_cast(filter == query.low);
+ break;
+ case QueryKind::CountRange:
+ result +=
+ static_cast(filter >= query.low && filter <= query.high);
+ break;
+ case QueryKind::SumWhereEqual:
+ if (filter == query.low) {
+ result += load_value(encoded, query.value_column, row);
+ }
+ break;
+ case QueryKind::SumWhereRange:
+ if (filter >= query.low && filter <= query.high) {
+ result += load_value(encoded, query.value_column, row);
+ }
+ break;
+ }
+ }
+ return result;
+}
+} // namespace frontier_telemetry
+// EVOLVE-BLOCK-END
diff --git a/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/verification/benchmark_driver.cpp b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/verification/benchmark_driver.cpp
new file mode 100644
index 00000000..34fda38d
--- /dev/null
+++ b/benchmarks/ComputerSystems/AdaptiveCompressedTelemetryExecution/verification/benchmark_driver.cpp
@@ -0,0 +1,597 @@
+#include "codec_api.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include