Generate CLI parity matrix from help output#2134
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ 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".
| | --version | -V | --version | general | off | implemented | Available in oc-rsync CLI help output. | | ||
| | --help | -h (*) | --help | general | off | implemented | Available in oc-rsync CLI help output. | | ||
| | --connect-program=COMMAND | | --connect-program=COMMAND | oc-rsync-only | n/a | divergent | Present in oc-rsync CLI but not listed in upstream rsync --help output. | | ||
| | --remote-option=OPTION | -M | --remote-option=OPTION | oc-rsync-only | n/a | divergent | Present in oc-rsync CLI but not listed in upstream rsync --help output. | |
There was a problem hiding this comment.
Normalize option names before diffing CLI help
The row for --remote-option=OPTION (line 157) claims this flag is “oc-rsync-only”, yet the same file already lists --remote-option=OPT as implemented (line 135) and rsync --help in this repo (rsync --help | rg -- '--remote-option') clearly exposes the option. The generator compared the entire help string (including the argument placeholder) rather than the option name, so any cosmetic difference (OPT vs OPTION, RATE vs RATE[:BURST], FMT vs FORMAT, etc.) creates duplicate entries that simultaneously mark the upstream option as “missing” while adding a divergent oc-only version (see also lines 142↔167 and 138↔183, and the corresponding entries in docs/parity-options.yml). This contradicts the actual CLIs and corrupts the machine-readable dataset automation relies on. Please normalize the option tokens before comparing the two help outputs so shared options aren’t misclassified.
Useful? React with 👍 / 👎.
…ases (#2134) (#4208) Survey the six state machines in the protocol and daemon negotiation paths (SessionState, DynamicProtocolState, ProtocolState<P>, NegotiationPipeline<S>, setup_protocol, handle_legacy_session) with file:line citations, sketch a DaemonConnection<S> shape for the legacy handshake, and recommend selective adoption: type-state the daemon connection lifecycle and the setup_protocol negotiation prologue, keep the runtime enums as registry/observability mirrors, and reject for the multi-thread transfer phase.
…2136) (#4210) Reframe the actor-pattern evaluation around supervised tokio tasks (Erlang/Akka style with bounded mailboxes and a supervisor that restarts crashed actors) to match the post-async-migration target the migration plan commits us to. The recommendation stays: reject the actor reshape for the production hot path because rsync's wire protocol is sequential with no resume primitive, so supervisor restart is a no-op; adopt the actor surface only for multi-host fan-out and fault-injection tests, behind --features async-pipeline. Cross-references #4186 (async migration plan), #4196 (spawn_blocking bridge), #2134 (type-state for protocol phases, recently merged), and #1935 (async daemon listener).
…ases (#2134) (#4208) Survey the six state machines in the protocol and daemon negotiation paths (SessionState, DynamicProtocolState, ProtocolState<P>, NegotiationPipeline<S>, setup_protocol, handle_legacy_session) with file:line citations, sketch a DaemonConnection<S> shape for the legacy handshake, and recommend selective adoption: type-state the daemon connection lifecycle and the setup_protocol negotiation prologue, keep the runtime enums as registry/observability mirrors, and reject for the multi-thread transfer phase.
…2136) (#4210) Reframe the actor-pattern evaluation around supervised tokio tasks (Erlang/Akka style with bounded mailboxes and a supervisor that restarts crashed actors) to match the post-async-migration target the migration plan commits us to. The recommendation stays: reject the actor reshape for the production hot path because rsync's wire protocol is sequential with no resume primitive, so supervisor restart is a no-op; adopt the actor surface only for multi-host fan-out and fault-injection tests, behind --features async-pipeline. Cross-references #4186 (async migration plan), #4196 (spawn_blocking bridge), #2134 (type-state for protocol phases, recently merged), and #1935 (async daemon listener).
…ases (#2134) (#4208) Survey the six state machines in the protocol and daemon negotiation paths (SessionState, DynamicProtocolState, ProtocolState<P>, NegotiationPipeline<S>, setup_protocol, handle_legacy_session) with file:line citations, sketch a DaemonConnection<S> shape for the legacy handshake, and recommend selective adoption: type-state the daemon connection lifecycle and the setup_protocol negotiation prologue, keep the runtime enums as registry/observability mirrors, and reject for the multi-thread transfer phase.
…2136) (#4210) Reframe the actor-pattern evaluation around supervised tokio tasks (Erlang/Akka style with bounded mailboxes and a supervisor that restarts crashed actors) to match the post-async-migration target the migration plan commits us to. The recommendation stays: reject the actor reshape for the production hot path because rsync's wire protocol is sequential with no resume primitive, so supervisor restart is a no-op; adopt the actor surface only for multi-host fan-out and fault-injection tests, behind --features async-pipeline. Cross-references #4186 (async migration plan), #4196 (spawn_blocking bridge), #2134 (type-state for protocol phases, recently merged), and #1935 (async daemon listener).
Summary
rsync --helpvsoc-rsync --helpparity-options.ymlso tooling shares the same status datasetTesting
Codex Task