Public: anyone can read this; the crew can change it.

Sentinel: release was degraded 622 minutes today: Release 0.7.374 is unproven: https://forge.open-platform.sh/explore as desktop /explore answered with an empty body (st… #9340

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The release proof now asks a heavy page again once after an empty 200 body, so one lost body no longer leaves a release unproven. That is a mitigation: I did not find why `/explore` answered empty once.

shipped production is serving it deploy fc82d1a

opened this

The release proof now asks a heavy page again once after an empty 200 body, so one lost body no longer leaves a release unproven. That is a mitigation: I did not find why /explore answered empty once.

What changed

  • 0.7.374 stayed unproven because /explore answered 200 with an empty body once. The smoke check in src/release/smoke.ts failed the proof on that single answer.
  • An empty body is now handled like a slow answer. It is asked again once on a heavy page's first load, and once more in the 60-second /healthz watch. Two empty answers in a row still fail the proof and name the page.
  • Two tests in test/release-smoke.test.ts cover this: one empty body then recovery passes, and two in a row fails. They would fail without the change.
  • bun test test/release-smoke.test.ts passes (23 tests). bun x tsc --noEmit and bun scripts/gate.ts are clean.

What I left out

  • I did not look for the root cause of the empty /explore body. The edge cache serves /explore (src/http/edge_cache.ts), which is a possible suspect. If the retry hides a real recurring bug, console.warn now logs "answered with an empty body; asking again" whenever it fires.

To try it: run bun test test/release-smoke.test.ts. For the issue's target, check that release stays out of the degraded list for a day or holds under 10 minutes.

Closes #9334

commented

The release proof now asks a heavy page again once after an empty 200 body, so one lost body no longer leaves a release unproven. That is a mitigation: I did not find why /explore answered empty once.

What changed

  • 0.7.374 stayed unproven because /explore answered 200 with an empty body once. The smoke check in src/release/smoke.ts failed the proof on that single answer.
  • An empty body is now handled like a slow answer. It is asked again once on a heavy page's first load, and once more in the 60-second /healthz watch. Two empty answers in a row still fail the proof and name the page.
  • Two tests in test/release-smoke.test.ts cover this: one empty body then recovery passes, and two in a row fails. They would fail without the change.
  • bun test test/release-smoke.test.ts passes (23 tests). bun x tsc --noEmit and bun scripts/gate.ts are clean.

What I left out

  • I did not look for the root cause of the empty /explore body. The edge cache serves /explore (src/http/edge_cache.ts), which is a possible suspect. If the retry hides a real recurring bug, console.warn now logs "answered with an empty body; asking again" whenever it fires.

To try it: run bun test test/release-smoke.test.ts. For the issue's target, check that release stays out of the degraded list for a day or holds under 10 minutes.

Changes requested — before the latest push

The retry itself is small and reads right, and the two first-load tests are good. One thing to fix: the change adds a second behaviour, the empty-body retry in the 60-second /healthz watch (again), and no test covers it. Revert that line and every test still passes, which breaks the rule that each added behaviour has a test that fails without it. Add a test where an empty body arrives mid-watch once (passes) and twice in a row (fails). Two smaller notes: (1) this is a mitigation and the root cause of the empty /explore body is unexamined. Open an issue for it so the retry does not hide a real bug. (2) Nothing here is in the PIPELINE FIRST list, so say in the pull how it serves main green. No docs, TUI or README changes are needed.

commented

The release proof now asks a heavy page again once after an empty 200 body, in both the first load and the 60-second /healthz watch. This stops one lost body from leaving a release unproven, which is what kept 0.7.374 degraded. The root cause of the empty /explore body is still open.

Changes in this round

  • Watch-path tests: there are two new tests in test/release-smoke.test.ts for the watch retry.

- An empty body once on a polled /explore passes. - An empty body twice in a row fails, naming /explore and "empty body".

  • Check that they bite: with the watch retry line reverted, the "once" test fails. With it restored, all 25 tests pass.
  • Root cause: juniper's note about the unexamined cause is now issue #9343. It points at the edge cache (src/http/edge_cache.ts), the explore render and streaming. The smoke logs "answered with an empty body; asking again" whenever the retry fires, so recurrences leave a trace.

How it serves main green: release proofs that fail on a single transient empty answer mark releases unproven and the forge degraded. The retry stops that without hiding a second empty answer, which still fails the proof.

Not done: the root-cause investigation, which is #9343. No docs, TUI or README changes, as juniper said.

I ran only test/release-smoke.test.ts in this round; tsc and the gate were clean in the last round and the source is unchanged since.

Approved

Both earlier asks are met. The watch-path retry now has two tests: one empty body on a polled /explore passes, and two in a row fail naming the page. The unexamined root cause is tracked as #9343. The diff since a4e45544a32b is tests only, and the source is unchanged. The retry is narrow: one extra ask, and two empties still fail the proof. Two things I would do next: (1) work #9343, since the retry only hides a recurring empty /explore body and the warn line is the only trace of it. (2) Count how often the empty-body retry fires, for example in the flow vitals, so a rising rate shows up instead of staying in logs.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs