evidence: ponder 504 persistence check 2026-03-28

Test prediction #1185: ponder 504 Gateway Timeout is NOT persistent.
Fresh stack start shows ponder healthy (<50ms, all 200 OK).
Staking still blocked by webapp protocol-stats fetch issue.
0/5 personas completed staking, 5/5 wallet+buy succeeded.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
johba 2026-03-28 07:27:27 +00:00
parent 9406298f3d
commit b3adea399f

View file

@ -0,0 +1,146 @@
{
"date": "2026-03-28",
"test_type": "ponder-504-persistence-check",
"issue_ref": "#1186",
"prediction_ref": "#1185",
"context": "Targeted re-test to determine if the ponder 504 Gateway Timeout observed on 2026-03-27 is persistent or intermittent. Fresh stack startup with cold ponder indexer. All 5 personas run sequentially.",
"methodology": "Fresh stack started from clean state (no prior containers). Ponder health probed at multiple stages: pre-test (8 probes), mid-test (implicit via persona runs), post-test (3 probes). Playwright headless Chromium (1280x720) with 120s test timeout, 15s slider wait timeout.",
"stack_startup": {
"anvil_ready_s": 7,
"postgres_ready_s": 0,
"bootstrap_completed_s": 45,
"ponder_ready_s": 27,
"webapp_ready_s": 180,
"caddy_ready_s": 5,
"note": "Webapp initially timed out at 120s (npm install inside container), succeeded on second health check after ~180s total"
},
"ponder_health": {
"at_test_start": {
"healthy": true,
"probes": [
{"source": "direct_42069", "http_code": 200, "latency_ms": 131},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 43},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 19},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 18},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 17},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 22},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 15}
],
"all_200": true,
"max_latency_ms": 131,
"avg_latency_ms": 38
},
"at_test_end": {
"healthy": true,
"probes": [
{"source": "caddy_8081", "http_code": 200, "latency_ms": 33},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 16},
{"source": "caddy_8081", "http_code": 200, "latency_ms": 14}
],
"all_200": true,
"max_latency_ms": 33,
"avg_latency_ms": 21
},
"504_errors_observed": 0,
"conclusion": "Ponder GraphQL API is healthy and responsive throughout the entire test run. No 504 errors observed at any point. The 504 from 2026-03-27 is NOT reproducible on fresh stack start."
},
"stake_page": {
"html_loads": true,
"html_load_ms": 35,
"slider_renders": false,
"slider_timeout_s": 15,
"browser_error": "Failed to fetch protocol stats: SyntaxError: Unexpected token '<', \"<!--\\n * C\"... is not valid JSON",
"root_cause": "The webapp stake page fetches protocol stats from a URL that returns SPA HTML fallback instead of JSON. This is a webapp routing/fetch issue, NOT a ponder 504. Ponder itself responds correctly to direct GraphQL queries."
},
"personas": [
{
"name": "alex",
"display": "Alex Rivera",
"funnel": "passive-holder",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "marcus",
"display": "Marcus 'Flash' Chen",
"funnel": "staker",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "priya",
"display": "Dr. Priya Malhotra",
"funnel": "staker",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "sarah",
"display": "Sarah Park",
"funnel": "passive-holder",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
},
{
"name": "tyler",
"display": "Tyler 'Bags' Morrison",
"funnel": "passive-holder",
"wallet_connected": true,
"buy_krk": true,
"staking_attempted": true,
"staking_completed": false,
"stake_failure_reason": "Slider not visible within 15s (webapp fetch error, NOT ponder 504)",
"test_passed": true
}
],
"summary": {
"personas_total": 5,
"personas_completed": 5,
"wallet_connections_succeeded": 5,
"buy_krk_succeeded": 5,
"staking_completed": 0,
"staking_attempted": 5,
"test_duration_s": 288
},
"comparison_with_previous": {
"previous_date": "2026-03-27",
"previous_evidence": "2026-03-27-post-stake-fix.json",
"previous_504_errors": "multiple (all personas that reached /stake)",
"current_504_errors": 0,
"previous_staking_completed": 0,
"current_staking_completed": 0,
"previous_buy_krk_failures": 4,
"current_buy_krk_failures": 0,
"improvements": [
"No 504 Gateway Timeout errors (ponder healthy throughout)",
"All 5 personas successfully bought KRK (chain snapshot/revert issues from 2026-03-27 not reproduced)",
"All 5 test specs passed (previously 2 crashed)"
],
"remaining_blocker": "Stake form slider does not render. Root cause shifted from ponder 504 to webapp protocol-stats fetch returning HTML instead of JSON."
},
"verdict": "ponder_504_not_persistent",
"verdict_detail": "The ponder 504 Gateway Timeout from 2026-03-27 is NOT persistent. On fresh stack start, ponder responds in <50ms with 200 OK consistently. The staking form still does not render, but the root cause is now identified as a webapp fetch issue (protocol stats endpoint returns SPA HTML fallback), not a ponder backend error. 0/5 personas completed staking. The chain snapshot/revert issues from 2026-03-27 were also not reproduced.",
"raw_reports": {
"alex": "tmp/usertest-results/alex-rivera.json",
"marcus": "tmp/usertest-results/marcus-flash-chen.json",
"priya": "tmp/usertest-results/dr-priya-malhotra.json",
"sarah": "tmp/usertest-results/sarah-park.json",
"tyler": "tmp/usertest-results/tyler-bags-morrison.json"
}
}