Repository: rust-lang/cargo (rust)

Issue:
Deprecate `cargo verify-project`
### Problem

I never found `cargo verify-project` useful. It never checks semantics of `Cargo.toml`. What it does is merely

* Locating a workspace.
* Parsing `Cargo.toml` and ensuring that be valid TOML, during the course of locating a workspace.


I don't know if in the wild it is heavily used, but apparently on GitHub it's not (see [this search result](https://github.com/search?q=%22cargo+verify-project%22&type=code)). It also causes confusions like people expecting it to verify more stuff (#11202).

I wonder if it's time to decide how this command should be.

### Proposed Solution

We have at least two choices.

* Make it clear that what `cargo verify-project` verifies. Perhaps at this moment only TOML syntax. We could expand to simple manifest semantic, though the line will never be clear and can't be a complete verification.

* Mark `cargo verify-project` as _deprecated_. Whomever want to use it could continue, though we don't add any support in the future.
  
  `cargo locate-project --workspace` might be a good alternative. (Well, not completely. `locate-project` additionally checks UTF8 for some unknown reason. And IMO it should be allowed.) 

### Notes

Commit: e8adba9d24257e14fef8793cecabb55b2fbcd0e3

<!-- TRIAGEBOT_START -->

<!-- TRIAGEBOT_ASSIGN_START -->

<!-- TRIAGEBOT_ASSIGN_DATA_START$${"user":"MoskalykA"}$$TRIAGEBOT_ASSIGN_DATA_END -->

<!-- TRIAGEBOT_ASSIGN_END -->
<!-- TRIAGEBOT_END -->

Pull request:
Deprecate `cargo verify-project`
### What does this PR try to resolve?

Information is available in the following issue #14679

### Additional information

Closes #14679


Patch:
diff --git a/src/bin/cargo/commands/verify_project.rs b/src/bin/cargo/commands/verify_project.rs
index d4c655d33..fae8497b5 100644
--- a/src/bin/cargo/commands/verify_project.rs
+++ b/src/bin/cargo/commands/verify_project.rs
@@ -5,12 +5,14 @@ use std::process;
 
 pub fn cli() -> Command {
     subcommand("verify-project")
-        .about("Check correctness of crate manifest")
+        .about(
+            "\
+Check correctness of crate manifest.
+
+Deprecated, see https://github.com/rust-lang/cargo/issues/14679.",
+        )
         .arg_silent_suggestion()
         .arg_manifest_path()
-        .after_help(color_print::cstr!(
-            "Run `<cyan,bold>cargo help verify-project</>` for more detailed information.\n"
-        ))
 }
 
 pub fn exec(gctx: &mut GlobalContext, args: &ArgMatches) -> CliResult {
diff --git a/src/doc/man/cargo-verify-project.md b/src/doc/man/cargo-verify-project.md
deleted file mode 100644
index 8b334fb14..000000000
--- a/src/doc/man/cargo-verify-project.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# cargo-verify-project(1)
-
-## NAME
-
-cargo-verify-project --- Check correctness of crate manifest
-
-## SYNOPSIS
-
-`cargo verify-project` [_options_]
-
-## DESCRIPTION
-
-This command will parse the local manifest and check its validity. It emits a
-JSON object with the result. A successful validation will display:
-
-    {"success":"true"}
-
-An invalid workspace will display:
-
-    {"invalid":"human-readable error message"}
-
-## OPTIONS
-
-### Display Options
-
-{{#options}}
-
-{{> options-display }}
-
-{{/options}}
-
-### Manifest Options
-
-{{#options}}
-
-{{> options-manifest-path }}
-
-{{> options-locked }}
-
-{{/options}}
-
-{{> section-options-common }}
-
-{{> section-environment }}
-
-## EXIT STATUS
-
-* `0`: The workspace is OK.
-* `1`: The workspace is invalid.
-
-## EXAMPLES
-
-1. Check the current workspace for errors:
-
-       cargo verify-project
-
-## SEE ALSO
-{{man "cargo" 1}}, {{man "cargo-package" 1}}
diff --git a/src/doc/man/cargo.md b/src/doc/man/cargo.md
index c67b33770..21bfe620a 100644
--- a/src/doc/man/cargo.md
+++ b/src/doc/man/cargo.md
@@ -86,9 +86,6 @@ available at <https://rust-lang.org>.
 {{man "cargo-vendor" 1}}\
 &nbsp;&nbsp;&nbsp;&nbsp;Vendor all dependencies locally.
 
-{{man "cargo-verify-project" 1}}\
-&nbsp;&nbsp;&nbsp;&nbsp;Check correctness of crate manifest.
-
 ### Package Commands
 
 {{man "cargo-init" 1}}\
diff --git a/src/doc/man/generated_txt/cargo-verify-project.txt b/src/doc/man/generated_txt/cargo-verify-project.txt
deleted file mode 100644
index aca632b5c..000000000
--- a/src/doc/man/generated_txt/cargo-verify-project.txt
+++ /dev/null
@@ -1,137 +0,0 @@
-CARGO-VERIFY-PROJECT(1)
-
-NAME
-       cargo-verify-project — Check correctness of crate manifest
-
-SYNOPSIS
-       cargo verify-project [options]
-
-DESCRIPTION
-       This command will parse the local manifest and check its validity. It
-       emits a JSON object with the result. A successful validation will
-       display:
-
-           {"success":"true"}
-
-       An invalid workspace will display:
-
-           {"invalid":"human-readable error message"}
-
-OPTIONS
-   Display Options
-       -v, --verbose
-           Use verbose output. May be specified twice for “very verbose”
-           output which includes extra output such as dependency warnings and
-           build script output. May also be specified with the term.verbose
-           config value
-           <https://doc.rust-lang.org/cargo/reference/config.html>.
-
-       -q, --quiet
-           Do not print cargo log messages. May also be specified with the
-           term.quiet config value
-           <https://doc.rust-lang.org/cargo/reference/config.html>.
-
-       --color when
-           Control when colored output is used. Valid values:
-
-           o  auto (default): Automatically detect if color support is
-              available on the terminal.
-
-           o  always: Always display colors.
-
-           o  never: Never display colors.
-
-           May also be specified with the term.color config value
-           <https://doc.rust-lang.org/cargo/reference/config.html>.
-
-   Manifest Options
-       --manifest-path path
-           Path to the Cargo.toml file. By default, Cargo searches for the
-           Cargo.toml file in the current directory or any parent directory.
-
-       --locked
-           Asserts that the exact same dependencies and versions are used as
-           when the existing Cargo.lock file was originally generated. Cargo
-           will exit with an error when either of the following scenarios
-           arises:
-
-           o  The lock file is missing.
-
-           o  Cargo attempted to change the lock file due to a different
-              dependency resolution.
-
-           It may be used in environments where deterministic builds are
-           desired, such as in CI pipelines.
-
-       --offline
-           Prevents Cargo from accessing the network for any reason. Without
-           this flag, Cargo will stop with an error if it needs to access the
-           network and the network is not available. With this flag, Cargo will
-           attempt to proceed without the network if possible.
-
-           Beware that this may result in different dependency resolution than
-           online mode. Cargo will restrict itself to crates that are
-           downloaded locally, even if there might be a newer version as
-           indicated in the local copy of the index. See the cargo-fetch(1)
-           command to download dependencies before going offline.
-
-           May also be specified with the net.offline config value
-           <https://doc.rust-lang.org/cargo/reference/config.html>.
-
-       --frozen
-           Equivalent to specifying both --locked and --offline.
-
-   Common Options
-       +toolchain
-           If Cargo has been installed with rustup, and the first argument to
-           cargo begins with +, it will be interpreted as a rustup toolchain
-           name (such as +stable or +nightly). See the rustup documentation
-           <https://rust-lang.github.io/rustup/overrides.html> for more
-           information about how toolchain overrides work.
-
-       --config KEY=VALUE or PATH
-           Overrides a Cargo configuration value. The argument should be in
-           TOML syntax of KEY=VALUE, or provided as a path to an extra
-           configuration file. This flag may be specified multiple times. See
-           the command-line overrides section
-           <https://doc.rust-lang.org/cargo/reference/config.html#command-line-overrides>
-           for more information.
-
-       -C PATH
-           Changes the current working directory before executing any specified
-           operations. This affects things like where cargo looks by default
-           for the project manifest (Cargo.toml), as well as the directories
-           searched for discovering .cargo/config.toml, for example. This
-           option must appear before the command name, for example cargo -C
-           path/to/my-project build.
-
-           This option is only available on the nightly channel
-           <https://doc.rust-lang.org/book/appendix-07-nightly-rust.html> and
-           requires the -Z unstable-options flag to enable (see #10098
-           <https://github.com/rust-lang/cargo/issues/10098>).
-
-       -h, --help
-           Prints help information.
-
-       -Z flag
-           Unstable (nightly-only) flags to Cargo. Run cargo -Z help for
-           details.
-
-ENVIRONMENT
-       See the reference
-       <https://doc.rust-lang.org/cargo/reference/environment-variables.html>
-       for details on environment variables that Cargo reads.
-
-EXIT STATUS
-       o  0: The workspace is OK.
-
-       o  1: The workspace is invalid.
-
-EXAMPLES
-       1. Check the current workspace for errors:
-
-              cargo verify-project
-
-SEE ALSO
-       cargo(1), cargo-package(1)
-
diff --git a/src/doc/man/generated_txt/cargo.txt b/src/doc/man/generated_txt/cargo.txt
index b010d94e5..b2e359fa5 100644
--- a/src/doc/man/generated_txt/cargo.txt
+++ b/src/doc/man/generated_txt/cargo.txt
@@ -82,9 +82,6 @@ COMMANDS
        cargo-vendor(1)
            Vendor all dependencies locally.
 
-       cargo-verify-project(1)
-           Check correctness of crate manifest.
-
    Package Commands
        cargo-init(1)
            Create a new Cargo package in an existing directory.
diff --git a/src/doc/src/SUMMARY.md b/src/doc/src/SUMMARY.md
index 92324f2f6..3fc20e31a 100644
--- a/src/doc/src/SUMMARY.md
+++ b/src/doc/src/SUMMARY.md
@@ -81,7 +81,6 @@
         * [cargo tree](commands/cargo-tree.md)
         * [cargo update](commands/cargo-update.md)
         * [cargo vendor](commands/cargo-vendor.md)
-        * [cargo verify-project](commands/cargo-verify-project.md)
     * [Package Commands](commands/package-commands.md)
         * [cargo init](commands/cargo-init.md)
         * [cargo install](commands/cargo-install.md)
diff --git a/src/doc/src/commands/cargo-verify-project.md b/src/doc/src/commands/cargo-verify-project.md
deleted file mode 100644
index 68bd00344..000000000
--- a/src/doc/src/commands/cargo-verify-project.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# cargo-verify-project(1)
-
-## NAME
-
-cargo-verify-project --- Check correctness of crate manifest
-
-## SYNOPSIS
-
-`cargo verify-project` [_options_]
-
-## DESCRIPTION
-
-This command will parse the local manifest and check its validity. It emits a
-JSON object with the result. A successful validation will display:
-
-    {"success":"true"}
-
-An invalid workspace will display:
-
-    {"invalid":"human-readable error message"}
-
-## OPTIONS
-
-### Display Options
-
-<dl>
-
-<dt class="option-term" id="option-cargo-verify-project--v"><a class="option-anchor" href="#option-cargo-verify-project--v"></a><code>-v</code></dt>
-<dt class="option-term" id="option-cargo-verify-project---verbose"><a class="option-anchor" href="#option-cargo-verify-project---verbose"></a><code>--verbose</code></dt>
-<dd class="option-desc">Use verbose output. May be specified twice for “very verbose” output which
-includes extra output such as dependency warnings and build script output.
-May also be specified with the <code>term.verbose</code>
-<a href="../reference/config.html">config value</a>.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project--q"><a class="option-anchor" href="#option-cargo-verify-project--q"></a><code>-q</code></dt>
-<dt class="option-term" id="option-cargo-verify-project---quiet"><a class="option-anchor" href="#option-cargo-verify-project---quiet"></a><code>--quiet</code></dt>
-<dd class="option-desc">Do not print cargo log messages.
-May also be specified with the <code>term.quiet</code>
-<a href="../reference/config.html">config value</a>.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project---color"><a class="option-anchor" href="#option-cargo-verify-project---color"></a><code>--color</code> <em>when</em></dt>
-<dd class="option-desc">Control when colored output is used. Valid values:</p>
-<ul>
-<li><code>auto</code> (default): Automatically detect if color support is available on the
-terminal.</li>
-<li><code>always</code>: Always display colors.</li>
-<li><code>never</code>: Never display colors.</li>
-</ul>
-<p>May also be specified with the <code>term.color</code>
-<a href="../reference/config.html">config value</a>.</dd>
-
-
-</dl>
-
-### Manifest Options
-
-<dl>
-
-<dt class="option-term" id="option-cargo-verify-project---manifest-path"><a class="option-anchor" href="#option-cargo-verify-project---manifest-path"></a><code>--manifest-path</code> <em>path</em></dt>
-<dd class="option-desc">Path to the <code>Cargo.toml</code> file. By default, Cargo searches for the
-<code>Cargo.toml</code> file in the current directory or any parent directory.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project---locked"><a class="option-anchor" href="#option-cargo-verify-project---locked"></a><code>--locked</code></dt>
-<dd class="option-desc">Asserts that the exact same dependencies and versions are used as when the
-existing <code>Cargo.lock</code> file was originally generated. Cargo will exit with an
-error when either of the following scenarios arises:</p>
-<ul>
-<li>The lock file is missing.</li>
-<li>Cargo attempted to change the lock file due to a different dependency resolution.</li>
-</ul>
-<p>It may be used in environments where deterministic builds are desired,
-such as in CI pipelines.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project---offline"><a class="option-anchor" href="#option-cargo-verify-project---offline"></a><code>--offline</code></dt>
-<dd class="option-desc">Prevents Cargo from accessing the network for any reason. Without this
-flag, Cargo will stop with an error if it needs to access the network and
-the network is not available. With this flag, Cargo will attempt to
-proceed without the network if possible.</p>
-<p>Beware that this may result in different dependency resolution than online
-mode. Cargo will restrict itself to crates that are downloaded locally, even
-if there might be a newer version as indicated in the local copy of the index.
-See the <a href="cargo-fetch.html">cargo-fetch(1)</a> command to download dependencies before going
-offline.</p>
-<p>May also be specified with the <code>net.offline</code> <a href="../reference/config.html">config value</a>.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project---frozen"><a class="option-anchor" href="#option-cargo-verify-project---frozen"></a><code>--frozen</code></dt>
-<dd class="option-desc">Equivalent to specifying both <code>--locked</code> and <code>--offline</code>.</dd>
-
-
-</dl>
-
-### Common Options
-
-<dl>
-
-<dt class="option-term" id="option-cargo-verify-project-+toolchain"><a class="option-anchor" href="#option-cargo-verify-project-+toolchain"></a><code>+</code><em>toolchain</em></dt>
-<dd class="option-desc">If Cargo has been installed with rustup, and the first argument to <code>cargo</code>
-begins with <code>+</code>, it will be interpreted as a rustup toolchain name (such
-as <code>+stable</code> or <code>+nightly</code>).
-See the <a href="https://rust-lang.github.io/rustup/overrides.html">rustup documentation</a>
-for more information about how toolchain overrides work.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project---config"><a class="option-anchor" href="#option-cargo-verify-project---config"></a><code>--config</code> <em>KEY=VALUE</em> or <em>PATH</em></dt>
-<dd class="option-desc">Overrides a Cargo configuration value. The argument should be in TOML syntax of <code>KEY=VALUE</code>,
-or provided as a path to an extra configuration file. This flag may be specified multiple times.
-See the <a href="../reference/config.html#command-line-overrides">command-line overrides section</a> for more information.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project--C"><a class="option-anchor" href="#option-cargo-verify-project--C"></a><code>-C</code> <em>PATH</em></dt>
-<dd class="option-desc">Changes the current working directory before executing any specified operations. This affects
-things like where cargo looks by default for the project manifest (<code>Cargo.toml</code>), as well as
-the directories searched for discovering <code>.cargo/config.toml</code>, for example. This option must
-appear before the command name, for example <code>cargo -C path/to/my-project build</code>.</p>
-<p>This option is only available on the <a href="https://doc.rust-lang.org/book/appendix-07-nightly-rust.html">nightly
-channel</a> and
-requires the <code>-Z unstable-options</code> flag to enable (see
-<a href="https://github.com/rust-lang/cargo/issues/10098">#10098</a>).</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project--h"><a class="option-anchor" href="#option-cargo-verify-project--h"></a><code>-h</code></dt>
-<dt class="option-term" id="option-cargo-verify-project---help"><a class="option-anchor" href="#option-cargo-verify-project---help"></a><code>--help</code></dt>
-<dd class="option-desc">Prints help information.</dd>
-
-
-<dt class="option-term" id="option-cargo-verify-project--Z"><a class="option-anchor" href="#option-cargo-verify-project--Z"></a><code>-Z</code> <em>flag</em></dt>
-<dd class="option-desc">Unstable (nightly-only) flags to Cargo. Run <code>cargo -Z help</code> for details.</dd>
-
-
-</dl>
-
-## ENVIRONMENT
-
-See [the reference](../reference/environment-variables.html) for
-details on environment variables that Cargo reads.
-
-## EXIT STATUS
-
-* `0`: The workspace is OK.
-* `1`: The workspace is invalid.
-
-## EXAMPLES
-
-1. Check the current workspace for errors:
-
-       cargo verify-project
-
-## SEE ALSO
-[cargo(1)](cargo.html), [cargo-package(1)](cargo-package.html)
diff --git a/src/doc/src/commands/cargo.md b/src/doc/src/commands/cargo.md
index f6d7fc599..7a3039725 100644
--- a/src/doc/src/commands/cargo.md
+++ b/src/doc/src/commands/cargo.md
@@ -86,9 +86,6 @@ available at <https://rust-lang.org>.
 [cargo-vendor(1)](cargo-vendor.html)\
 &nbsp;&nbsp;&nbsp;&nbsp;Vendor all dependencies locally.
 
-[cargo-verify-project(1)](cargo-verify-project.html)\
-&nbsp;&nbsp;&nbsp;&nbsp;Check correctness of crate manifest.
-
 ### Package Commands
 
 [cargo-init(1)](cargo-init.html)\
diff --git a/src/doc/src/commands/manifest-commands.md b/src/doc/src/commands/manifest-commands.md
index b83e7b930..346794ebb 100644
--- a/src/doc/src/commands/manifest-commands.md
+++ b/src/doc/src/commands/manifest-commands.md
@@ -10,4 +10,3 @@
 * [cargo tree](cargo-tree.md)
 * [cargo update](cargo-update.md)
 * [cargo vendor](cargo-vendor.md)
-* [cargo verify-project](cargo-verify-project.md)
diff --git a/src/etc/man/cargo-verify-project.1 b/src/etc/man/cargo-verify-project.1
deleted file mode 100644
index b0e6d8c7c..000000000
--- a/src/etc/man/cargo-verify-project.1
+++ /dev/null
@@ -1,178 +0,0 @@
-'\" t
-.TH "CARGO\-VERIFY\-PROJECT" "1"
-.nh
-.ad l
-.ss \n[.ss] 0
-.SH "NAME"
-cargo\-verify\-project \[em] Check correctness of crate manifest
-.SH "SYNOPSIS"
-\fBcargo verify\-project\fR [\fIoptions\fR]
-.SH "DESCRIPTION"
-This command will parse the local manifest and check its validity. It emits a
-JSON object with the result. A successful validation will display:
-.sp
-.RS 4
-.nf
-{"success":"true"}
-.fi
-.RE
-.sp
-An invalid workspace will display:
-.sp
-.RS 4
-.nf
-{"invalid":"human\-readable error message"}
-.fi
-.RE
-.SH "OPTIONS"
-.SS "Display Options"
-.sp
-\fB\-v\fR, 
-\fB\-\-verbose\fR
-.RS 4
-Use verbose output. May be specified twice for \[lq]very verbose\[rq] output which
-includes extra output such as dependency warnings and build script output.
-May also be specified with the \fBterm.verbose\fR
-\fIconfig value\fR <https://doc.rust\-lang.org/cargo/reference/config.html>\&.
-.RE
-.sp
-\fB\-q\fR, 
-\fB\-\-quiet\fR
-.RS 4
-Do not print cargo log messages.
-May also be specified with the \fBterm.quiet\fR
-\fIconfig value\fR <https://doc.rust\-lang.org/cargo/reference/config.html>\&.
-.RE
-.sp
-\fB\-\-color\fR \fIwhen\fR
-.RS 4
-Control when colored output is used. Valid values:
-.sp
-.RS 4
-\h'-04'\(bu\h'+02'\fBauto\fR (default): Automatically detect if color support is available on the
-terminal.
-.RE
-.sp
-.RS 4
-\h'-04'\(bu\h'+02'\fBalways\fR: Always display colors.
-.RE
-.sp
-.RS 4
-\h'-04'\(bu\h'+02'\fBnever\fR: Never display colors.
-.RE
-.sp
-May also be specified with the \fBterm.color\fR
-\fIconfig value\fR <https://doc.rust\-lang.org/cargo/reference/config.html>\&.
-.RE
-.SS "Manifest Options"
-.sp
-\fB\-\-manifest\-path\fR \fIpath\fR
-.RS 4
-Path to the \fBCargo.toml\fR file. By default, Cargo searches for the
-\fBCargo.toml\fR file in the current directory or any parent directory.
-.RE
-.sp
-\fB\-\-locked\fR
-.RS 4
-Asserts that the exact same dependencies and versions are used as when the
-existing \fBCargo.lock\fR file was originally generated. Cargo will exit with an
-error when either of the following scenarios arises:
-.sp
-.RS 4
-\h'-04'\(bu\h'+02'The lock file is missing.
-.RE
-.sp
-.RS 4
-\h'-04'\(bu\h'+02'Cargo attempted to change the lock file due to a different dependency resolution.
-.RE
-.sp
-It may be used in environments where deterministic builds are desired,
-such as in CI pipelines.
-.RE
-.sp
-\fB\-\-offline\fR
-.RS 4
-Prevents Cargo from accessing the network for any reason. Without this
-flag, Cargo will stop with an error if it needs to access the network and
-the network is not available. With this flag, Cargo will attempt to
-proceed without the network if possible.
-.sp
-Beware that this may result in different dependency resolution than online
-mode. Cargo will restrict itself to crates that are downloaded locally, even
-if there might be a newer version as indicated in the local copy of the index.
-See the \fBcargo\-fetch\fR(1) command to download dependencies before going
-offline.
-.sp
-May also be specified with the \fBnet.offline\fR \fIconfig value\fR <https://doc.rust\-lang.org/cargo/reference/config.html>\&.
-.RE
-.sp
-\fB\-\-frozen\fR
-.RS 4
-Equivalent to specifying both \fB\-\-locked\fR and \fB\-\-offline\fR\&.
-.RE
-.SS "Common Options"
-.sp
-\fB+\fR\fItoolchain\fR
-.RS 4
-If Cargo has been installed with rustup, and the first argument to \fBcargo\fR
-begins with \fB+\fR, it will be interpreted as a rustup toolchain name (such
-as \fB+stable\fR or \fB+nightly\fR).
-See the \fIrustup documentation\fR <https://rust\-lang.github.io/rustup/overrides.html>
-for more information about how toolchain overrides work.
-.RE
-.sp
-\fB\-\-config\fR \fIKEY=VALUE\fR or \fIPATH\fR
-.RS 4
-Overrides a Cargo configuration value. The argument should be in TOML syntax of \fBKEY=VALUE\fR,
-or provided as a path to an extra configuration file. This flag may be specified multiple times.
-See the \fIcommand\-line overrides section\fR <https://doc.rust\-lang.org/cargo/reference/config.html#command\-line\-overrides> for more information.
-.RE
-.sp
-\fB\-C\fR \fIPATH\fR
-.RS 4
-Changes the current working directory before executing any specified operations. This affects
-things like where cargo looks by default for the project manifest (\fBCargo.toml\fR), as well as
-the directories searched for discovering \fB\&.cargo/config.toml\fR, for example. This option must
-appear before the command name, for example \fBcargo \-C path/to/my\-project build\fR\&.
-.sp
-This option is only available on the \fInightly
-channel\fR <https://doc.rust\-lang.org/book/appendix\-07\-nightly\-rust.html> and
-requires the \fB\-Z unstable\-options\fR flag to enable (see
-\fI#10098\fR <https://github.com/rust\-lang/cargo/issues/10098>).
-.RE
-.sp
-\fB\-h\fR, 
-\fB\-\-help\fR
-.RS 4
-Prints help information.
-.RE
-.sp
-\fB\-Z\fR \fIflag\fR
-.RS 4
-Unstable (nightly\-only) flags to Cargo. Run \fBcargo \-Z help\fR for details.
-.RE
-.SH "ENVIRONMENT"
-See \fIthe reference\fR <https://doc.rust\-lang.org/cargo/reference/environment\-variables.html> for
-details on environment variables that Cargo reads.
-.SH "EXIT STATUS"
-.sp
-.RS 4
-\h'-04'\(bu\h'+02'\fB0\fR: The workspace is OK.
-.RE
-.sp
-.RS 4
-\h'-04'\(bu\h'+02'\fB1\fR: The workspace is invalid.
-.RE
-.SH "EXAMPLES"
-.sp
-.RS 4
-\h'-04' 1.\h'+01'Check the current workspace for errors:
-.sp
-.RS 4
-.nf
-cargo verify\-project
-.fi
-.RE
-.RE
-.SH "SEE ALSO"
-\fBcargo\fR(1), \fBcargo\-package\fR(1)
diff --git a/src/etc/man/cargo.1 b/src/etc/man/cargo.1
index b285d67bd..37465bf3b 100644
--- a/src/etc/man/cargo.1
+++ b/src/etc/man/cargo.1
@@ -103,10 +103,6 @@ available at <https://rust\-lang.org>\&.
 \fBcargo\-vendor\fR(1)
 .br
 \ \ \ \ Vendor all dependencies locally.
-.sp
-\fBcargo\-verify\-project\fR(1)
-.br
-\ \ \ \ Check correctness of crate manifest.
 .SS "Package Commands"
 \fBcargo\-init\fR(1)
 .br


Test patch:
diff --git a/tests/testsuite/cargo_verify_project/help/stdout.term.svg b/tests/testsuite/cargo_verify_project/help/stdout.term.svg
index 63185d62a..921efb0c6 100644
--- a/tests/testsuite/cargo_verify_project/help/stdout.term.svg
+++ b/tests/testsuite/cargo_verify_project/help/stdout.term.svg
@@ -19,45 +19,45 @@
   <rect width="100%" height="100%" y="0" rx="4.5" class="bg" />
 
   <text xml:space="preserve" class="container fg">
-    <tspan x="10px" y="28px"><tspan>Check correctness of crate manifest</tspan>
+    <tspan x="10px" y="28px"><tspan>Check correctness of crate manifest.</tspan>
 </tspan>
     <tspan x="10px" y="46px">
 </tspan>
-    <tspan x="10px" y="64px"><tspan class="fg-green bold">Usage:</tspan><tspan> </tspan><tspan class="fg-cyan bold">cargo[EXE] verify-project</tspan><tspan> </tspan><tspan class="fg-cyan">[OPTIONS]</tspan>
+    <tspan x="10px" y="64px"><tspan>Deprecated, see https://github.com/rust-lang/cargo/issues/14679.</tspan>
 </tspan>
     <tspan x="10px" y="82px">
 </tspan>
-    <tspan x="10px" y="100px"><tspan class="fg-green bold">Options:</tspan>
+    <tspan x="10px" y="100px"><tspan class="fg-green bold">Usage:</tspan><tspan> </tspan><tspan class="fg-cyan bold">cargo[EXE] verify-project</tspan><tspan> </tspan><tspan class="fg-cyan">[OPTIONS]</tspan>
 </tspan>
-    <tspan x="10px" y="118px"><tspan>  </tspan><tspan class="fg-cyan bold">-v</tspan><tspan>, </tspan><tspan class="fg-cyan bold">--verbose</tspan><tspan class="fg-cyan">...</tspan><tspan>               Use verbose output (-vv very verbose/build.rs output)</tspan>
+    <tspan x="10px" y="118px">
 </tspan>
-    <tspan x="10px" y="136px"><tspan>  </tspan><tspan class="fg-cyan bold">-q</tspan><tspan>, </tspan><tspan class="fg-cyan bold">--quiet</tspan><tspan>                    Do not print cargo log messages</tspan>
+    <tspan x="10px" y="136px"><tspan class="fg-green bold">Options:</tspan>
 </tspan>
-    <tspan x="10px" y="154px"><tspan>      </tspan><tspan class="fg-cyan bold">--color</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;WHEN&gt;</tspan><tspan>             Coloring: auto, always, never</tspan>
+    <tspan x="10px" y="154px"><tspan>  </tspan><tspan class="fg-cyan bold">-v</tspan><tspan>, </tspan><tspan class="fg-cyan bold">--verbose</tspan><tspan class="fg-cyan">...</tspan><tspan>               Use verbose output (-vv very verbose/build.rs output)</tspan>
 </tspan>
-    <tspan x="10px" y="172px"><tspan>      </tspan><tspan class="fg-cyan bold">--config</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;KEY=VALUE|PATH&gt;</tspan><tspan>  Override a configuration value</tspan>
+    <tspan x="10px" y="172px"><tspan>  </tspan><tspan class="fg-cyan bold">-q</tspan><tspan>, </tspan><tspan class="fg-cyan bold">--quiet</tspan><tspan>                    Do not print cargo log messages</tspan>
 </tspan>
-    <tspan x="10px" y="190px"><tspan>  </tspan><tspan class="fg-cyan bold">-Z</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;FLAG&gt;</tspan><tspan>                      Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for</tspan>
+    <tspan x="10px" y="190px"><tspan>      </tspan><tspan class="fg-cyan bold">--color</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;WHEN&gt;</tspan><tspan>             Coloring: auto, always, never</tspan>
 </tspan>
-    <tspan x="10px" y="208px"><tspan>                                 details</tspan>
+    <tspan x="10px" y="208px"><tspan>      </tspan><tspan class="fg-cyan bold">--config</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;KEY=VALUE|PATH&gt;</tspan><tspan>  Override a configuration value</tspan>
 </tspan>
-    <tspan x="10px" y="226px"><tspan>  </tspan><tspan class="fg-cyan bold">-h</tspan><tspan>, </tspan><tspan class="fg-cyan bold">--help</tspan><tspan>                     Print help</tspan>
+    <tspan x="10px" y="226px"><tspan>  </tspan><tspan class="fg-cyan bold">-Z</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;FLAG&gt;</tspan><tspan>                      Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for</tspan>
 </tspan>
-    <tspan x="10px" y="244px">
+    <tspan x="10px" y="244px"><tspan>                                 details</tspan>
 </tspan>
-    <tspan x="10px" y="262px"><tspan class="fg-green bold">Manifest Options:</tspan>
+    <tspan x="10px" y="262px"><tspan>  </tspan><tspan class="fg-cyan bold">-h</tspan><tspan>, </tspan><tspan class="fg-cyan bold">--help</tspan><tspan>                     Print help</tspan>
 </tspan>
-    <tspan x="10px" y="280px"><tspan>      </tspan><tspan class="fg-cyan bold">--manifest-path</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;PATH&gt;</tspan><tspan>  Path to Cargo.toml</tspan>
+    <tspan x="10px" y="280px">
 </tspan>
-    <tspan x="10px" y="298px"><tspan>      </tspan><tspan class="fg-cyan bold">--locked</tspan><tspan>                Assert that `Cargo.lock` will remain unchanged</tspan>
+    <tspan x="10px" y="298px"><tspan class="fg-green bold">Manifest Options:</tspan>
 </tspan>
-    <tspan x="10px" y="316px"><tspan>      </tspan><tspan class="fg-cyan bold">--offline</tspan><tspan>               Run without accessing the network</tspan>
+    <tspan x="10px" y="316px"><tspan>      </tspan><tspan class="fg-cyan bold">--manifest-path</tspan><tspan class="fg-cyan"> </tspan><tspan class="fg-cyan">&lt;PATH&gt;</tspan><tspan>  Path to Cargo.toml</tspan>
 </tspan>
-    <tspan x="10px" y="334px"><tspan>      </tspan><tspan class="fg-cyan bold">--frozen</tspan><tspan>                Equivalent to specifying both --locked and --offline</tspan>
+    <tspan x="10px" y="334px"><tspan>      </tspan><tspan class="fg-cyan bold">--locked</tspan><tspan>                Assert that `Cargo.lock` will remain unchanged</tspan>
 </tspan>
-    <tspan x="10px" y="352px">
+    <tspan x="10px" y="352px"><tspan>      </tspan><tspan class="fg-cyan bold">--offline</tspan><tspan>               Run without accessing the network</tspan>
 </tspan>
-    <tspan x="10px" y="370px"><tspan>Run `</tspan><tspan class="fg-cyan bold">cargo help verify-project</tspan><tspan class="bold">` for more detailed information.</tspan>
+    <tspan x="10px" y="370px"><tspan>      </tspan><tspan class="fg-cyan bold">--frozen</tspan><tspan>                Equivalent to specifying both --locked and --offline</tspan>
 </tspan>
     <tspan x="10px" y="388px">
 </tspan>