Skip to content

fix(cli): clarify readiness and configuration refusals - #4702

Merged
ScriptedAlchemy merged 1 commit into
masterfrom
fix/issue-4451-cli-diagnostics
Nov 3, 2026
Merged

ScriptedAlchemy merged 1 commit into
masterfrom
fix/issue-4451-cli-diagnostics

Conversation

@ScriptedAlchemy

@ScriptedAlchemy ScriptedAlchemy commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Problem

The readiness timeout text included the word “reached,” making a failed wait easy to misread. Configuration decoding also discarded the actionable missing-field reason, so a project-layer request without project_id produced only a generic contract error.

Changes

  • Render timeouts as wait: timed_out; last state: ... while preserving the typed timeout code and process exit 75.
  • Retain canonical configuration deserialization detail, including missing field project_id.
  • Preserve application_surface_invalid_request, nonretryable classification, and rejection before dispatch.
  • Keep successful payloads and structured status output unchanged.

The diagnostic comes from the caller's submitted request and existing validators, without additional profile or store reads.

Verification

Passed 6 focused tests: 3 canonical decoder regressions, 2 CLI unit tests (missing project identity and readiness wait outcomes), and the real application configuration-batch behavior test.

A separate direct invocation of the compiled CLI also passed: a project-layer request without project_id returns JSON application_surface_invalid_request, retry: never, the precise missing-field message on stderr, and process exit 1.

Local limitation: tool_json_reports_argument_refusals_as_typed_problems compiled but failed during daemon fixture setup, before its assertions, with Operation not permitted. An independent socket probe confirms this environment denies Unix socket creation. The daemon-backed subprocess test requires hosted CI; it is not counted as a pass. The timeout unit test checks the typed result and wording; the existing process-exit mapping to 75 is unchanged.

Local validation used the combined worktree for #4698–#4703 with pinned Rust 1.99.1. Native Cargo compilation includes #4703 and the checked-in scripts/bazel/patches/grafeo-core-read-allocation.patch applied to Cargo's pinned Grafeo checkout, matching MODULE.bazel; dependency revisions and the lockfile are unchanged. Profile fixtures ran on supported tmpfs because this container's overlay filesystem is rejected by existing storage admission. Production project admission remained enabled. Formatting, whitespace checks, and independent source review pass. Hosted CI still needs to verify each PR branch independently.

Refs #4451. The prose-query search-ranking complaint and other remaining issue requirements are not claimed as fixed by this diagnostic change.

@changeset-bot

changeset-bot Bot commented Nov 3, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 500d7bb

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@ScriptedAlchemy
ScriptedAlchemy marked this pull request as ready for review November 3, 2026 02:09

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

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