Skip to content

doctor prints eight warnings as passes, and sandbox prints its banner before a refusal #462

Description

@edgehero

Two small output defects found while verifying the #446 round (PR #457 and #460 gates). Neither changes a decision the worker makes; both make a surface say something it does not mean.

doctor: { ok: true, warn: true } renders as a plain pass

render in worker/src/doctor.mjs prints ⚠ and the fix line only when ok is false. A check returned as { ok: true, warn: true } prints a green ✓ with no fix. Eight checks use that shape (around doctor.mjs :690, :702, :1016, :1836, :1877, :1905, :1932, :2213), for example "entries under ... are symlinks and are SKIPPED" and "scoped limit(s) name a folder no trigger runs in". The one near :1932 notes that it moved its facts into the label because an ok: true fix line never prints, so some may be deliberate.

To do: decide per check whether it is a warning (⚠ with its fix) or an informational pass, make render able to print a warning without failing doctor's exit code, and pin the rendered output of each.

sandbox: the opening banner prints before a refusal

pi-dispatch sandbox <id> prints "opening pi-sandbox-... no credentials are set in this container. exit the shell to dispose of it." and then refuses with "network already exists". Seen on Podman 4.9.3 and 5.8.1. The banner should follow the last refusal, so a refused open never claims it is opening.

Activity

  1. edgehero commented on Sep 28, 2026

    @edgehero
    OwnerAuthor

    Fixed in #466 (merged).

    Doctor. Twelve checks returned { ok: true, warn: true }, which the renderer printed as a green ✓ with no fix. Each one is now decided on one rule. When something the operator configured is broken or does nothing, doctor prints ⚠ with its fix. When the operator chose a trade-off, doctor prints a ✓ fact line that states it. Every check is pinned through render().

    Sandbox. pi-dispatch sandbox <id> now prints its banner only after every refusal has passed, right before the launch, in the CLI and in the admin panel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions