Repository navigation
Show why hosted requests and cron jobs fail - #395
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🚀 Deploying Preview to Cloudflare 🚀Preview URL: https://fix-observability-ux-void-cloud.voidzero-docs.workers.dev (commit 9f1309d)This URL reflects your latest Preview deploymentPreview Deployments by commit
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c6f3a748a2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
On SSR deploys, `void project requests` showed every worker answer to a path like /sponsors.svg as `static`, including the route's own 500s, which pointed users away from their worker logs. Dispatch now labels such a path `ssr` when the user worker answered it and the asset manifest has no file for it, or the worker returned a server error or ran past the dispatch budget. Listed files, answers from Cloudflare's asset layer and platform asset failures stay `static`. The ISR write-back now checks the path directly, so these routes never enter the ISR cache. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The platform already returns the stack of every logged Error and uncaught exception, but the CLI printed only `Name: message`. Each Error argument now has its frames printed under it (dimmed on a terminal), and exceptions show their frames too. Frames are app data, so they go through the same terminal control-sequence filter as the log text. The docs explain that passing the Error object itself to console.error() is what makes its stack appear. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A failing cron logged only `AggregateError: Scheduled jobs failed`, because Workers log capture keeps an error's own message and stack but not its inner errors. Each job that fails, at import or while running, now logs its project-relative file, the cron and the original error as soon as it fails. The thrown AggregateError still waits for every job, keeps the original errors and now names the failed files in its message. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Deploys published before asset manifests existed may still have an asset layer, so the worker-ownership check is used for successful responses only together with a manifest answer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brooooooklyn
force-pushed
the
fix/observability-ux
branch
from
October 8, 2026 13:46
c6f3a74 to
9f1309d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A hosted app (napi-rs) returned about 100 worker 500s in one day. The 5xx alert email pointed to
void project requestsandvoid project logs. Neither command showed the cause:Three causes:
What this PR changes
Real output from this branch's CLI against the live napi-rs data:
Decisions
worker?ssrssronError?onErrorserves every route; the runner knows the job file and cronerrorInfo[].stackandexception.stackvoid platform deployment logs(operator command)Rollout
Known limits
staticwhen they succeed or return 4xx. This applies to requests with a Cookie or Authorization header, to HEAD, Range and POST requests, and to SSR apps that uploaded no static files. On framework deploys, these requests also staystaticwhen they fail with a 5xx. A correct label would need an asset-manifest read on every credentialed asset request. That is too much cost for a display label. On Void SSR apps, server errors are labeledssrfor every request shape.AggregateErrorline.Testing
vp run test --base origin/mainvp lint,vp run checkvp test runvp devfound busy. It passes on rerun. The race is fixed in #396.vp devfixture with one failing cron job🤖 Generated with Claude Code