Skip to content

feat: remote preflight, protocol version exposure, retry validation, …#1356

Merged
Timi16 merged 2 commits into
Timi16:mainfrom
B-Hands:feat/remote-preflight-protocol-retry-timestamps
May 29, 2026
Merged

feat: remote preflight, protocol version exposure, retry validation, …#1356
Timi16 merged 2 commits into
Timi16:mainfrom
B-Hands:feat/remote-preflight-protocol-retry-timestamps

Conversation

@Anuoluwapo25
Copy link
Copy Markdown
Contributor

…timestamp helpers

Implements four issues across the remote debugging and output subsystems:

closes #1254 – Remote: add preflight subcommand

  • soroban-debug remote <addr> preflight [--output json|pretty] checks TCP connect, protocol handshake, auth, optional TLS, and an end-to-end ping without loading any contract.
  • Both pretty and JSON output modes are supported; actionable suggestions are embedded in failure entries.

closes #1255 – Remote: expose selected protocol version in inspect output

  • RemoteClient::selected_protocol_version() getter added.
  • Protocol version is now printed in verbose remote output and in the remote inspect output when --verbose is active.
  • doctor --remote now populates selected_protocol in its JSON report and prints it in the human-readable section.

closes #1257 – Remote: validate retry configuration before connecting

  • --retry-attempts 0 is now rejected with a clear error and suggestion.
  • --retry-max-delay-ms less than --retry-base-delay-ms is rejected with values and a correction hint.
  • Help text documents the constraints and environment variable interaction.
  • Man page updated automatically from the arg docstrings.

closes #1252 – Output: add stable timestamp formatting helpers

  • format_timestamp_iso8601(SystemTime) -> String and now_iso8601() added to src/output.rs using the existing chrono dependency.
  • Output is always UTC with a Z suffix; no locale dependency.
  • Three unit tests cover the epoch, a known calendar date, and the structural format of the current-time helper.

Description

Related Issue

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactor / code cleanup
  • Performance improvement
  • Test / CI improvement

CI/Test Behavior Changes

What changed in CI or test behavior?

N/A — no CI/test behavior changes

Migration notes

N/A


Checklist

  • All tests pass locally (cargo test --workspace --all-features)
  • Code is formatted (cargo fmt --all -- --check)
  • Clippy is clean (cargo clippy --workspace --all-targets --all-features -- -D warnings)
  • Commit message follows Conventional Commits
  • PR description mentions the related issue(s)
  • CI/test behavior changes documented above (or marked N/A)
  • If CLI flags/subcommands/help text changed, man pages regenerated (make regen-man) and .1 files committed

…timestamp helpers

Implements four issues across the remote debugging and output subsystems:

Timi16#1254 – Remote: add preflight subcommand
- `soroban-debug remote <addr> preflight [--output json|pretty]` checks
  TCP connect, protocol handshake, auth, optional TLS, and an end-to-end
  ping without loading any contract.
- Both pretty and JSON output modes are supported; actionable suggestions
  are embedded in failure entries.

Timi16#1255 – Remote: expose selected protocol version in inspect output
- `RemoteClient::selected_protocol_version()` getter added.
- Protocol version is now printed in verbose `remote` output and in the
  `remote inspect` output when `--verbose` is active.
- `doctor --remote` now populates `selected_protocol` in its JSON report
  and prints it in the human-readable section.

Timi16#1257 – Remote: validate retry configuration before connecting
- `--retry-attempts 0` is now rejected with a clear error and suggestion.
- `--retry-max-delay-ms` less than `--retry-base-delay-ms` is rejected
  with values and a correction hint.
- Help text documents the constraints and environment variable interaction.
- Man page updated automatically from the arg docstrings.

Timi16#1252 – Output: add stable timestamp formatting helpers
- `format_timestamp_iso8601(SystemTime) -> String` and `now_iso8601()`
  added to `src/output.rs` using the existing `chrono` dependency.
- Output is always UTC with a `Z` suffix; no locale dependency.
- Three unit tests cover the epoch, a known calendar date, and the
  structural format of the current-time helper.
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 28, 2026

@Anuoluwapo25 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Timi16
Copy link
Copy Markdown
Owner

Timi16 commented May 28, 2026

FIx the conflicts

@Anuoluwapo25
Copy link
Copy Markdown
Contributor Author

done @Timi16

@Timi16 Timi16 merged commit c70ba0b into Timi16:main May 29, 2026
6 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants