Skip to content

fix(mvp): probe predicates use labels the fake-exporter actually emits - #369

Merged
zzylol merged 1 commit into
mainfrom
fix/mvp-runner-cold-fallback-fixture
May 9, 2026
Merged

zzylol merged 1 commit into
mainfrom
fix/mvp-runner-cold-fallback-fixture

Conversation

@zzylol

@zzylol zzylol commented May 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Three places in the MVP demo hardcoded predicates against `service`, `status` labels that the fake-exporter never produces; those queries returned empty (but HTTP 200) and masked any real cold-path / postings behaviour they were meant to exercise.

The fake-exporter (`deploy/fake-exporter/main.go::attrSetsZRNP`) emits `zone, rack, node, pod` labels. No `service` and no `status` label exists in any series. Previous predicates:

  • `service="payments"` / `service="api"` → matched 0 series
  • `status=~"5.."` → matched 0 series

The cold-path probe verdict was technically PASS (HTTP 200 + `data_source: gorilla_archive` marker present) but the actual `result: []` was always empty. Demo was confirming "archive engine accepts queries", not "archive engine returns data."

Changes

  • `deploy/configs/mvp-workload.yaml` entry 4 (criterion ⑤): `service="payments"` → `zone="z0"`
  • `deploy/scripts/run_mvp_demo.sh` Phase 5 cold-fallback: same fix
  • `deploy/scripts/run_mvp_demo.sh` Phase 4 postings probes: `service="api"` → `zone="z0"`; `status="5.."` → `rack="r0[0-3]"`
  • `deploy/configs/backend-storage-routing.yaml` doc comment

Output file basenames (`cold_payments.*`) kept for backwards compatibility with `mvp_report.py`'s loader.

Test plan

  • `pytest deploy/scripts/tests/test_mvp_report.py deploy/configs/tests/` → 35 passed
  • Diagnostic run with these predicates against thanos-query: non-empty `count` results returned (verified end-to-end before this PR)
  • Re-run `run_mvp_demo.sh` to confirm cold_payments.json now has `result` populated, not empty

Companion

Pairs with #368 (the `mvp-no-resource-limits.yml` override) — without the resource cap fix, agents OOM-restart and produce 1-ms-wide TSDB blocks that the lookback miss compounds; with the cap lifted + correct predicates, the cold-path round-trip should actually return data.

🤖 Generated with Claude Code

Three places in the MVP demo hardcoded predicates against `service`,
`status` labels that the fake-exporter never produces; those queries
returned empty (but HTTP 200) and masked any real cold-path / postings
behaviour they were meant to exercise.

The fake-exporter (`deploy/fake-exporter/main.go::attrSetsZRNP`)
emits `zone, rack, node, pod` labels. There is no `service` and no
`status` label in any series. Previous predicates:

- `service="payments"` / `service="api"` → matched 0 series
- `status=~"5.."` → matched 0 series

The cold-path probe verdict was technically PASS (HTTP 200 + the
`data_source: gorilla_archive` marker is present) but the actual
result was always `[]` — the demo was confirming "the archive
engine accepts queries", not "the archive engine returns data."

Repointed predicates to labels that exist:

- `deploy/configs/mvp-workload.yaml` entry 4 (criterion ⑤
  cold-fallback probe): `service="payments"` → `zone="z0"`
- `deploy/scripts/run_mvp_demo.sh` Phase 5 cold-fallback curl +
  log line: same change
- `deploy/scripts/run_mvp_demo.sh` Phase 4 postings probes:
  `count(http_requests_total{service="api"})` →
  `count(http_requests_total{zone="z0"})`;
  `rate(http_requests_total{status=~"5.."}[5m])` →
  `rate(http_requests_total{rack=~"r0[0-3]"}[5m])`
- `deploy/configs/backend-storage-routing.yaml` doc comment

Verified end-to-end (separate diagnostic run): with `zone="z0"`,
thanos-query returns non-empty `count` results — the cold path
actually serves data instead of returning HTTP-200-but-empty.

Output file basenames (`cold_payments.*`) kept for backwards
compatibility with `mvp_report.py`'s loader.

Verification:
- `pytest deploy/scripts/tests/test_mvp_report.py deploy/configs/tests/`
  → 35 passed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@zzylol
zzylol merged commit a588f23 into main May 9, 2026
@zzylol
zzylol deleted the fix/mvp-runner-cold-fallback-fixture branch May 9, 2026 20:50
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.

1 participant