[INFO] cloning repository https://github.com/TuyenPKT/blockchain-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/TuyenPKT/blockchain-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTuyenPKT%2Fblockchain-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTuyenPKT%2Fblockchain-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2afab7d9728db6bd9413df2516185baf0e815aca
[INFO] documenting TuyenPKT/blockchain-rust against 824336ad4127ce295849937a24c08a4aeff6ada7 for pr-162169
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTuyenPKT%2Fblockchain-rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/TuyenPKT/blockchain-rust
[INFO] finished tweaking git repo https://github.com/TuyenPKT/blockchain-rust
[INFO] tweaked toml for git repo https://github.com/TuyenPKT/blockchain-rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/TuyenPKT/blockchain-rust on toolchain 824336ad4127ce295849937a24c08a4aeff6ada7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/TuyenPKT/blockchain-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_spanned v1.1.0
[INFO] [stderr]   Downloaded tauri-winres v0.3.5
[INFO] [stderr]   Downloaded embed-resource v3.0.8
[INFO] [stderr]   Downloaded tauri-build v2.5.6
[INFO] [stderr]   Downloaded toml_parser v1.0.10+spec-1.1.0
[INFO] [stderr]   Downloaded uuid v1.23.0
[INFO] [stderr]   Downloaded tauri-utils v2.8.3
[INFO] [stderr]   Downloaded tauri v2.10.3
[INFO] [stderr]   Downloaded wry v0.54.4
[INFO] [stderr]   Downloaded toml_datetime v1.0.1+spec-1.1.0
[INFO] [stderr]   Downloaded tauri-runtime-wry v2.10.1
[INFO] [stderr]   Downloaded toml_edit v0.25.5+spec-1.1.0
[INFO] [stderr]   Downloaded web_atoms v0.2.3
[INFO] [stderr]   Downloaded tauri-runtime v2.10.1
[INFO] [stderr]   Downloaded tao v0.34.8
[INFO] [stderr]   Downloaded tauri-codegen v2.5.5
[INFO] [stderr]   Downloaded tauri-macros v2.5.5
[INFO] [stderr]   Downloaded redb v2.6.3
[INFO] [stderr]   Downloaded stability v0.2.1
[INFO] [stderr]   Downloaded secp256k1-sys v0.8.2
[INFO] [stderr]   Downloaded compact_str v0.7.1
[INFO] [stderr]   Downloaded ratatui v0.26.3
[INFO] [stderr]   Downloaded qutex v0.2.6
[INFO] [stderr]   Downloaded ocl-core v0.11.5
[INFO] [stderr]   Downloaded ocl-core-vector v0.1.1
[INFO] [stderr]   Downloaded enum_primitive v0.1.1
[INFO] [stderr]   Downloaded cl-sys v0.4.3
[INFO] [stderr]   Downloaded ocl v0.19.7
[INFO] [stderr]   Downloaded libp2p v0.53.2
[INFO] [stderr]   Downloaded data-encoding-macro v0.1.19
[INFO] [stderr]   Downloaded data-encoding-macro-internal v0.1.17
[INFO] [stderr]   Downloaded match-lookup v0.1.2
[INFO] [stderr]   Downloaded libp2p-yamux v0.45.2
[INFO] [stderr]   Downloaded yamux v0.13.10
[INFO] [stderr]   Downloaded libp2p-core v0.41.3
[INFO] [stderr]   Downloaded libp2p-upnp v0.2.2
[INFO] [stderr]   Downloaded libp2p-swarm-derive v0.34.2
[INFO] [stderr]   Downloaded igd-next v0.14.3
[INFO] [stderr]   Downloaded libp2p-swarm v0.44.2
[INFO] [stderr]   Downloaded if-watch v3.2.2
[INFO] [stderr]   Downloaded libp2p-tcp v0.41.0
[INFO] [stderr]   Downloaded netlink-proto v0.12.0
[INFO] [stderr]   Downloaded rtnetlink v0.20.0
[INFO] [stderr]   Downloaded libp2p-quic v0.10.3
[INFO] [stderr]   Downloaded libp2p-tls v0.4.1
[INFO] [stderr]   Downloaded rcgen v0.11.3
[INFO] [stderr]   Downloaded libp2p-ping v0.44.1
[INFO] [stderr]   Downloaded libp2p-noise v0.44.0
[INFO] [stderr]   Downloaded libp2p-allow-block-list v0.3.0
[INFO] [stderr]   Downloaded cust v0.3.2
[INFO] [stderr]   Downloaded cust_derive v0.2.0
[INFO] [stderr]   Downloaded vek v0.15.10
[INFO] [stderr]   Downloaded libp2p-metrics v0.14.1
[INFO] [stderr]   Downloaded libp2p-identify v0.44.2
[INFO] [stderr]   Downloaded hickory-resolver v0.24.4
[INFO] [stderr]   Downloaded find_cuda_helper v0.2.0
[INFO] [stderr]   Downloaded cust_core v0.1.1
[INFO] [stderr]   Downloaded libp2p-mdns v0.45.1
[INFO] [stderr]   Downloaded hickory-proto v0.24.4
[INFO] [stderr]   Downloaded libp2p-dns v0.41.1
[INFO] [stderr]   Downloaded libp2p-connection-limits v0.3.1
[INFO] [stderr]   Downloaded cust_raw v0.11.3
[INFO] [stderr]   Downloaded num-modular v0.6.1
[INFO] [stderr]   Downloaded async-graphql v7.2.1
[INFO] [stderr]   Downloaded static_assertions_next v1.1.2
[INFO] [stderr]   Downloaded num-order v1.2.0
[INFO] [stderr]   Downloaded ascii_utils v0.9.3
[INFO] [stderr]   Downloaded handlebars v6.4.0
[INFO] [stderr]   Downloaded asynk-strim v0.1.5
[INFO] [stderr]   Downloaded async-graphql-value v7.2.1
[INFO] [stderr]   Downloaded fast_chemail v0.9.6
[INFO] [stderr]   Downloaded async-graphql-parser v7.2.1
[INFO] [stderr]   Downloaded async-graphql-derive v7.2.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1
[INFO] running `Command { std: "docker" "start" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1" "/opt/rustwide/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1" "/opt/rustwide/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking unsigned-varint v0.8.0
[INFO] [stderr]    Compiling data-encoding v2.10.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking ed25519 v2.2.3
[INFO] [stderr]     Checking quick-protobuf v0.8.1
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]     Checking const-str v0.4.3
[INFO] [stderr]     Checking bs58 v0.5.1
[INFO] [stderr]     Checking base-x v0.2.11
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking unsigned-varint v0.7.2
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking multihash v0.19.3
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking netlink-packet-core v0.8.1
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling winnow v1.0.0
[INFO] [stderr]    Compiling snow v0.9.6
[INFO] [stderr]    Compiling toml_datetime v1.0.1+spec-1.1.0
[INFO] [stderr]     Checking tinyvec v1.11.0
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling secp256k1-sys v0.8.2
[INFO] [stderr]     Checking num-modular v0.6.1
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]    Compiling blake3 v1.8.3
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking ascii_utils v0.9.3
[INFO] [stderr]    Compiling Inflector v0.11.4
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking num-order v1.2.0
[INFO] [stderr]    Compiling redb v2.6.3
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking fast_chemail v0.9.6
[INFO] [stderr]     Checking compact_str v0.7.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking asynk-strim v0.1.5
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking keccak v0.1.6
[INFO] [stderr]     Checking static_assertions_next v1.1.2
[INFO] [stderr]     Checking constant_time_eq v0.4.2
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking sha3 v0.10.8
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking netlink-packet-route v0.28.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]    Compiling toml_parser v1.0.10+spec-1.1.0
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]     Checking inotify v0.9.6
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]     Checking filetime v0.2.27
[INFO] [stderr]     Checking qrcode v0.14.1
[INFO] [stderr]     Checking notify v6.1.1
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking ripemd v0.1.3
[INFO] [stderr]    Compiling toml_edit v0.25.5+spec-1.1.0
[INFO] [stderr]     Checking secp256k1 v0.27.0
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling pin-project-internal v1.1.11
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling data-encoding-macro-internal v0.1.17
[INFO] [stderr]    Compiling match-lookup v0.1.2
[INFO] [stderr]    Compiling libp2p-swarm-derive v0.34.2
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking data-encoding-macro v0.1.19
[INFO] [stderr]     Checking base256emoji v1.0.2
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking multibase v0.9.2
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]     Checking webpki-roots v1.0.6
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking async-io v2.6.0
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]    Compiling stability v0.2.1
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking pin-project v1.1.11
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking ed25519-dalek v2.2.0
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]     Checking libp2p-identity v0.2.13
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking ratatui v0.26.3
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling derive_builder_core v0.20.2
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]    Compiling derive_builder_macro v0.20.2
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]     Checking derive_builder v0.20.2
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking handlebars v6.4.0
[INFO] [stderr]    Compiling async-graphql-value v7.2.1
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking futures-bounded v0.2.4
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking asynchronous-codec v0.7.0
[INFO] [stderr]     Checking rw-stream-sink v0.4.0
[INFO] [stderr]     Checking multistream-select v0.13.0
[INFO] [stderr]     Checking yamux v0.12.1
[INFO] [stderr]     Checking yamux v0.13.10
[INFO] [stderr]     Checking tracing-futures v0.2.5
[INFO] [stderr]     Checking quick-protobuf-codec v0.3.1
[INFO] [stderr]    Compiling async-graphql-parser v7.2.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking multer v3.1.0
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking multiaddr v0.18.2
[INFO] [stderr]     Checking hickory-proto v0.24.4
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking libp2p-core v0.41.3
[INFO] [stderr]     Checking libp2p-yamux v0.45.2
[INFO] [stderr]     Checking libp2p-noise v0.44.0
[INFO] [stderr]    Compiling async-graphql-derive v7.2.1
[INFO] [stderr]     Checking netlink-sys v0.8.8
[INFO] [stderr]     Checking libp2p-swarm v0.44.2
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking netlink-proto v0.12.0
[INFO] [stderr]     Checking rtnetlink v0.20.0
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking if-watch v3.2.2
[INFO] [stderr]     Checking libp2p-tcp v0.41.0
[INFO] [stderr]     Checking libp2p-connection-limits v0.3.1
[INFO] [stderr]     Checking libp2p-mdns v0.45.1
[INFO] [stderr]     Checking libp2p-identify v0.44.2
[INFO] [stderr]     Checking libp2p-allow-block-list v0.3.0
[INFO] [stderr]     Checking libp2p-ping v0.44.1
[INFO] [stderr]     Checking libp2p v0.53.2
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking async-graphql v7.2.1
[INFO] [stderr]  Documenting blockchain-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking blockchain-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unresolved link to `<schnorr_sig>`
[INFO] [stdout]   --> src/taproot.rs:15:31
[INFO] [stdout]    |
[INFO] [stdout] 15 | //!   witness (key path):    [<schnorr_sig>]
[INFO] [stdout]    |                               ^^^^^^^^^^^^^ missing type for generic parameters
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]    --> src/taproot.rs:136:24
[INFO] [stdout]     |
[INFO] [stdout] 136 |     /// Returns: Vec<([u8;32], bool)> — (sibling_hash, is_left)
[INFO] [stdout]     |                        ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `schnorr_sig`
[INFO] [stdout]    --> src/taproot.rs:257:22
[INFO] [stdout]     |
[INFO] [stdout] 257 |     ///   witness = [schnorr_sig]
[INFO] [stdout]     |                      ^^^^^^^^^^^ no item named `schnorr_sig` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] help: there's a similarly named item `schnorr_sign`
[INFO] [stdout]     |
[INFO] [stdout] 257 |     ///   witness = [schnorr_sign]
[INFO] [stdout]     |                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `label`
[INFO] [stdout]   --> src/api_auth.rs:13:32
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- apikey new [label] [role]   → tạo key mới (default role=read)
[INFO] [stdout]    |                                ^^^^^ no item named `label` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `role`
[INFO] [stdout]   --> src/api_auth.rs:13:40
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- apikey new [label] [role]   → tạo key mới (default role=read)
[INFO] [stdout]    |                                        ^^^^ no item named `role` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `label`
[INFO] [stdout]    --> src/api_auth.rs:322:19
[INFO] [stdout]     |
[INFO] [stdout] 322 | ///   apikey new [label] [role]   → generate new key (role default = read)
[INFO] [stdout]     |                   ^^^^^ no item named `label` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `role`
[INFO] [stdout]    --> src/api_auth.rs:322:27
[INFO] [stdout]     |
[INFO] [stdout] 322 | ///   apikey new [label] [role]   → generate new key (role default = read)
[INFO] [stdout]     |                           ^^^^ no item named `role` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `32`
[INFO] [stdout]  --> src/receipts.rs:9:40
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → JSON<TxReceipt>
[INFO] [stdout]   |                                        ^^ no item named `32` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `32`
[INFO] [stdout]   --> src/receipts.rs:10:43
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   TABLE receipts_by_block: block_hash[32] → JSON<Vec<[u8;32]>>
[INFO] [stdout]    |                                           ^^ no item named `32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/receipts.rs:10:59
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   TABLE receipts_by_block: block_hash[32] → JSON<Vec<[u8;32]>>
[INFO] [stdout]    |                                                           ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `payload`
[INFO] [stdout]  --> src/pkt_wire.rs:7:82
[INFO] [stdout]   |
[INFO] [stdout] 7 | //!   [4 bytes magic] [12 bytes command] [4 bytes length LE] [4 bytes checksum] [payload]
[INFO] [stdout]   |                                                                                  ^^^^^^^ no item named `payload` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/pkt_sync.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   meta:sync_tip_hash        → [u8;32] hash của header ở sync_height
[INFO] [stdout]    |                                    ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/pkt_sync.rs:225:15
[INFO] [stdout]     |
[INFO] [stdout] 225 | ///   headers[i].prev_block == block_hash(headers[i-1])
[INFO] [stdout]     |               ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/pkt_utxo_sync.rs:21:38
[INFO] [stdout]    |
[INFO] [stdout] 21 | //!   meta:utxo_tip_hash      → raw [u8;32]
[INFO] [stdout]    |                                      ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `M`
[INFO] [stdout]   --> src/script.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(rustdoc::invalid_html_tags)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub1`
[INFO] [stdout]   --> src/script.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubN`
[INFO] [stdout]   --> src/script.rs:10:37
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `N`
[INFO] [stdout]   --> src/script.rs:10:44
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig1`
[INFO] [stdout]   --> src/script.rs:12:27
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   scriptSig    = OP_0 <sig1> ... <sigM> <redeemScript_bytes>
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sigM`
[INFO] [stdout]   --> src/script.rs:12:38
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   scriptSig    = OP_0 <sig1> ... <sigM> <redeemScript_bytes>
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/script.rs:71:61
[INFO] [stdout]    |
[INFO] [stdout] 71 |     /// Serialize script thành Bitcoin wire bytes (76 a9 14 <hash20> 88 ac cho P2PKH, v.v.)
[INFO] [stdout]    |                                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubkey`
[INFO] [stdout]    --> src/script.rs:136:28
[INFO] [stdout]     |
[INFO] [stdout] 136 |     /// P2PK scriptPubKey: <pubkey> OP_CHECKSIG
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig`
[INFO] [stdout]    --> src/script.rs:144:25
[INFO] [stdout]     |
[INFO] [stdout] 144 |     /// P2PK scriptSig: <sig>
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]    --> src/script.rs:149:47
[INFO] [stdout]     |
[INFO] [stdout] 149 |     /// P2PKH scriptPubKey: OP_DUP OP_HASH160 <hash20> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig`
[INFO] [stdout]    --> src/script.rs:160:26
[INFO] [stdout]     |
[INFO] [stdout] 160 |     /// P2PKH scriptSig: <sig> <pubkey>
[INFO] [stdout]     |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubkey`
[INFO] [stdout]    --> src/script.rs:160:32
[INFO] [stdout]     |
[INFO] [stdout] 160 |     /// P2PKH scriptSig: <sig> <pubkey>
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig1`
[INFO] [stdout]    --> src/script.rs:177:30
[INFO] [stdout]     |
[INFO] [stdout] 177 |     /// P2SH scriptSig: OP_0 <sig1> ... <sigM> <redeem_script_bytes>
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sigM`
[INFO] [stdout]    --> src/script.rs:177:41
[INFO] [stdout]     |
[INFO] [stdout] 177 |     /// P2SH scriptSig: OP_0 <sig1> ... <sigM> <redeem_script_bytes>
[INFO] [stdout]     |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `M`
[INFO] [stdout]    --> src/script.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub1`
[INFO] [stdout]    --> src/script.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub2`
[INFO] [stdout]    --> src/script.rs:190:20
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubN`
[INFO] [stdout]    --> src/script.rs:190:31
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `N`
[INFO] [stdout]    --> src/script.rs:190:38
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]    --> src/script.rs:279:28
[INFO] [stdout]     |
[INFO] [stdout] 279 |     /// CLTV-locked P2PKH: <height> OP_CLTV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pkh`
[INFO] [stdout]    --> src/script.rs:279:71
[INFO] [stdout]     |
[INFO] [stdout] 279 |     /// CLTV-locked P2PKH: <height> OP_CLTV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                                                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `blocks`
[INFO] [stdout]    --> src/script.rs:293:27
[INFO] [stdout]     |
[INFO] [stdout] 293 |     /// CSV-locked P2PKH: <blocks> OP_CSV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pkh`
[INFO] [stdout]    --> src/script.rs:293:69
[INFO] [stdout]     |
[INFO] [stdout] 293 |     /// CSV-locked P2PKH: <blocks> OP_CSV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `expiry`
[INFO] [stdout]    --> src/script.rs:311:11
[INFO] [stdout]     |
[INFO] [stdout] 311 |     ///   <expiry> OP_CLTV OP_DROP OP_DUP OP_HASH160 <sender_pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/transaction.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   scriptPubKey: OP_0 <hash20>
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/transaction.rs:44:36
[INFO] [stdout]    |
[INFO] [stdout] 44 |     /// P2WPKH output ← v1.1: OP_0 <hash20>
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `AbiValue`
[INFO] [stdout]  --> src/abi.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   - Decode: calldata → Vec<AbiValue>
[INFO] [stdout]   |                               ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   - Decode: calldata → `Vec<AbiValue>`
[INFO] [stdout]   |                            +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `TxReceipt`
[INFO] [stdout]  --> src/receipts.rs:9:51
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → JSON<TxReceipt>
[INFO] [stdout]   |                                                   ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → `JSON<TxReceipt>`
[INFO] [stdout]   |                                               +               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]  --> src/pkt_export.rs:4:68
[INFO] [stdout]   |
[INFO] [stdout] 4 | //! Streaming CSV export (không buffer toàn bộ vào RAM — trả về Vec<u8> tích lũy row-by-row):
[INFO] [stdout]   |                                                                    ^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 4 | //! Streaming CSV export (không buffer toàn bộ vào RAM — trả về `Vec<u8>` tích lũy row-by-row):
[INFO] [stdout]   |                                                                 +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]    --> src/pkt_config.rs:132:10
[INFO] [stdout]     |
[INFO] [stdout] 132 |     /// "http://seed.testnet.oceif.com:8081"
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout]     = note: `#[warn(rustdoc::bare_urls)]` on by default
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]     |
[INFO] [stdout] 132 |     /// "<http://seed.testnet.oceif.com:8081>"
[INFO] [stdout]     |          +                                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Database`
[INFO] [stdout]   --> src/pkt_kv.rs:33:30
[INFO] [stdout]    |
[INFO] [stdout] 33 |     /// Registry: path → Weak<Database> để share cùng instance trong 1 process.
[INFO] [stdout]    |                              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 33 |     /// Registry: path → `Weak<Database>` để share cùng instance trong 1 process.
[INFO] [stdout]    |                          +              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Database`
[INFO] [stdout]   --> src/pkt_kv.rs:41:67
[INFO] [stdout]    |
[INFO] [stdout] 41 |     /// - redb lock file exclusive → cùng path phải dùng chung Arc<Database>
[INFO] [stdout]    |                                                                   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 41 |     /// - redb lock file exclusive → cùng path phải dùng chung `Arc<Database>`
[INFO] [stdout]    |                                                                +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Database`
[INFO] [stdout]   --> src/pkt_kv.rs:56:29
[INFO] [stdout]    |
[INFO] [stdout] 56 |         /// Lấy hoặc tạo Arc<Database> cho `db_file`, update registry.
[INFO] [stdout]    |                             ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 56 |         /// Lấy hoặc tạo `Arc<Database>` cho `db_file`, update registry.
[INFO] [stdout]    |                          +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]   --> src/pkt_wire.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! Tài liệu: https://en.bitcoin.it/wiki/Protocol_documentation
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! Tài liệu: <https://en.bitcoin.it/wiki/Protocol_documentation>
[INFO] [stdout]    |               +                                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `query`
[INFO] [stdout]   --> src/pkt_search.rs:14:33
[INFO] [stdout]    |
[INFO] [stdout] 14 | //!   GET /api/testnet/search?q=<query>
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]    --> src/pkt_testnet_web.rs:155:28
[INFO] [stdout]     |
[INFO] [stdout] 155 | ///   Wire P2PKH: 76 a9 14 <hash20> 88 ac  (25 bytes)
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `query`
[INFO] [stdout]     --> src/pkt_testnet_web.rs:1007:31
[INFO] [stdout]      |
[INFO] [stdout] 1007 | /// GET /api/testnet/search?q=<query>
[INFO] [stdout]      |                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `0`
[INFO] [stdout]    --> src/chain.rs:636:19
[INFO] [stdout]     |
[INFO] [stdout] 636 |     ///   witness[0] = sig bytes, witness[1] = pubkey bytes
[INFO] [stdout]     |                   ^ no item named `0` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout]     = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `1`
[INFO] [stdout]    --> src/chain.rs:636:43
[INFO] [stdout]     |
[INFO] [stdout] 636 |     ///   witness[0] = sig bytes, witness[1] = pubkey bytes
[INFO] [stdout]     |                                           ^ no item named `1` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `<schnorr_sig>`
[INFO] [stdout]   --> src/taproot.rs:15:31
[INFO] [stdout]    |
[INFO] [stdout] 15 | //!   witness (key path):    [<schnorr_sig>]
[INFO] [stdout]    |                               ^^^^^^^^^^^^^ missing type for generic parameters
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]    --> src/taproot.rs:136:24
[INFO] [stdout]     |
[INFO] [stdout] 136 |     /// Returns: Vec<([u8;32], bool)> — (sibling_hash, is_left)
[INFO] [stdout]     |                        ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `schnorr_sig`
[INFO] [stdout]    --> src/taproot.rs:257:22
[INFO] [stdout]     |
[INFO] [stdout] 257 |     ///   witness = [schnorr_sig]
[INFO] [stdout]     |                      ^^^^^^^^^^^ no item named `schnorr_sig` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] help: there's a similarly named item `schnorr_sign`
[INFO] [stdout]     |
[INFO] [stdout] 257 |     ///   witness = [schnorr_sign]
[INFO] [stdout]     |                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `payer`
[INFO] [stdout]   --> src/covenant.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | //!      [payer] → congestion_TX (1 output) → expand_TX (nhiều outputs)
[INFO] [stdout]    |           ^^^^^ no item named `payer` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `1M`
[INFO] [stdout]   --> src/coinjoin.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   Outputs: [1M], [1M], [1M],  ← 3 equal outputs (ai nhận gì?)
[INFO] [stdout]    |                 ^^ no item named `1M` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `1M`
[INFO] [stdout]   --> src/coinjoin.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   Outputs: [1M], [1M], [1M],  ← 3 equal outputs (ai nhận gì?)
[INFO] [stdout]    |                       ^^ no item named `1M` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `1M`
[INFO] [stdout]   --> src/coinjoin.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   Outputs: [1M], [1M], [1M],  ← 3 equal outputs (ai nhận gì?)
[INFO] [stdout]    |                             ^^ no item named `1M` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `2M`
[INFO] [stdout]   --> src/coinjoin.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | //!            [2M],              ← Alice change
[INFO] [stdout]    |                 ^^ no item named `2M` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `1M`
[INFO] [stdout]   --> src/coinjoin.rs:16:17
[INFO] [stdout]    |
[INFO] [stdout] 16 | //!            [1M]               ← Carol change
[INFO] [stdout]    |                 ^^ no item named `1M` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `X`
[INFO] [stdout]  --> src/dilithium.rs:9:34
[INFO] [stdout]   |
[INFO] [stdout] 9 | ///   Polynomial ring: R_q = Z_q[X] / (X^n + 1)
[INFO] [stdout]   |                                  ^ no item named `X` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `X`
[INFO] [stdout]   --> src/dilithium.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 | /// Polynomial in R_q = Z_q[X] / (X^n + 1)
[INFO] [stdout]    |                             ^ no item named `X` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `X`
[INFO] [stdout]    --> src/dilithium.rs:114:48
[INFO] [stdout]     |
[INFO] [stdout] 114 |     /// Schoolbook multiplication in R_q = Z_q[X]/(X^n+1)
[INFO] [stdout]     |                                                ^ no item named `X` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/sphincs.rs:167:30
[INFO] [stdout]     |
[INFO] [stdout] 167 | /// WOTS+ key generation: sk[i] = PRF(sk_seed, addr_i), pk[i] = chain(sk[i], 0, W-1)
[INFO] [stdout]     |                              ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/sphincs.rs:167:60
[INFO] [stdout]     |
[INFO] [stdout] 167 | /// WOTS+ key generation: sk[i] = PRF(sk_seed, addr_i), pk[i] = chain(sk[i], 0, W-1)
[INFO] [stdout]     |                                                            ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/sphincs.rs:167:74
[INFO] [stdout]     |
[INFO] [stdout] 167 | /// WOTS+ key generation: sk[i] = PRF(sk_seed, addr_i), pk[i] = chain(sk[i], 0, W-1)
[INFO] [stdout]     |                                                                          ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `X`
[INFO] [stdout]   --> src/kyber.rs:65:29
[INFO] [stdout]    |
[INFO] [stdout] 65 | /// Polynomial in R_q = Z_q[X]/(X^n + 1)
[INFO] [stdout]    |                             ^ no item named `X` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `X`
[INFO] [stdout]   --> src/kyber.rs:90:48
[INFO] [stdout]    |
[INFO] [stdout] 90 |     /// Schoolbook multiplication in R_q = Z_q[X]/(X^n + 1)
[INFO] [stdout]    |                                                ^ no item named `X` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `j`
[INFO] [stdout]    --> src/kyber.rs:182:27
[INFO] [stdout]     |
[INFO] [stdout] 182 |     /// Aᵀ · v  :  result[j] = Σ_i A[i][j] · v[i]
[INFO] [stdout]     |                           ^ no item named `j` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `j`
[INFO] [stdout]    --> src/kyber.rs:182:41
[INFO] [stdout]     |
[INFO] [stdout] 182 |     /// Aᵀ · v  :  result[j] = Σ_i A[i][j] · v[i]
[INFO] [stdout]     |                                         ^ no item named `j` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/kyber.rs:182:48
[INFO] [stdout]     |
[INFO] [stdout] 182 |     /// Aᵀ · v  :  result[j] = Σ_i A[i][j] · v[i]
[INFO] [stdout]     |                                                ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]    --> src/storage.rs:299:69
[INFO] [stdout]     |
[INFO] [stdout] 299 | /// storage map được encode thành Vec<(hex_str, hex_str)> để tránh [u8;32] key issue.
[INFO] [stdout]     |                                                                     ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]  --> src/performance.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   3. `fast_merkle`     — raw [u8;32] Merkle tree (no hex encode/decode overhead)
[INFO] [stdout]   |                                   ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `addr`
[INFO] [stdout]   --> src/cpu_miner.rs:14:32
[INFO] [stdout]    |
[INFO] [stdout] 14 | //! CLI: cargo run -- cpumine [addr] [diff] [blocks]
[INFO] [stdout]    |                                ^^^^ no item named `addr` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `diff`
[INFO] [stdout]   --> src/cpu_miner.rs:14:39
[INFO] [stdout]    |
[INFO] [stdout] 14 | //! CLI: cargo run -- cpumine [addr] [diff] [blocks]
[INFO] [stdout]    |                                       ^^^^ no item named `diff` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `blocks`
[INFO] [stdout]   --> src/cpu_miner.rs:14:46
[INFO] [stdout]    |
[INFO] [stdout] 14 | //! CLI: cargo run -- cpumine [addr] [diff] [blocks]
[INFO] [stdout]    |                                              ^^^^^^ no item named `blocks` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]  --> src/validator.rs:8:45
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   2. Chain links (parallel) — prev_hash[i] == hash[i-1] for each consecutive pair
[INFO] [stdout]   |                                             ^ no item named `i` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/validator.rs:184:48
[INFO] [stdout]     |
[INFO] [stdout] 184 | /// Validate chain linkage in parallel: blocks[i].prev_hash == blocks[i-1].hash.
[INFO] [stdout]     |                                                ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `0`
[INFO] [stdout]    --> src/validator.rs:185:41
[INFO] [stdout]     |
[INFO] [stdout] 185 | /// Returns one result per block (block[0] is always valid — no previous).
[INFO] [stdout]     |                                         ^ no item named `0` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `addr`
[INFO] [stdout]   --> src/gpu_miner.rs:24:29
[INFO] [stdout]    |
[INFO] [stdout] 24 | //!   cargo run -- gpumine [addr] [diff] [blocks] [software|opencl|cuda]
[INFO] [stdout]    |                             ^^^^ no item named `addr` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `diff`
[INFO] [stdout]   --> src/gpu_miner.rs:24:36
[INFO] [stdout]    |
[INFO] [stdout] 24 | //!   cargo run -- gpumine [addr] [diff] [blocks] [software|opencl|cuda]
[INFO] [stdout]    |                                    ^^^^ no item named `diff` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `blocks`
[INFO] [stdout]   --> src/gpu_miner.rs:24:43
[INFO] [stdout]    |
[INFO] [stdout] 24 | //!   cargo run -- gpumine [addr] [diff] [blocks] [software|opencl|cuda]
[INFO] [stdout]    |                                           ^^^^^^ no item named `blocks` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `addr`
[INFO] [stdout]   --> src/opencl_kernel.rs:23:48
[INFO] [stdout]    |
[INFO] [stdout] 23 | //!   cargo run  --features opencl -- gpumine [addr] [diff] [n] opencl
[INFO] [stdout]    |                                                ^^^^ no item named `addr` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `diff`
[INFO] [stdout]   --> src/opencl_kernel.rs:23:55
[INFO] [stdout]    |
[INFO] [stdout] 23 | //!   cargo run  --features opencl -- gpumine [addr] [diff] [n] opencl
[INFO] [stdout]    |                                                       ^^^^ no item named `diff` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `n`
[INFO] [stdout]   --> src/opencl_kernel.rs:23:62
[INFO] [stdout]    |
[INFO] [stdout] 23 | //!   cargo run  --features opencl -- gpumine [addr] [diff] [n] opencl
[INFO] [stdout]    |                                                              ^ no item named `n` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `addr`
[INFO] [stdout]   --> src/cuda_kernel.rs:24:46
[INFO] [stdout]    |
[INFO] [stdout] 24 | //!   cargo run  --features cuda -- gpumine [addr] [diff] [n] cuda
[INFO] [stdout]    |                                              ^^^^ no item named `addr` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `diff`
[INFO] [stdout]   --> src/cuda_kernel.rs:24:53
[INFO] [stdout]    |
[INFO] [stdout] 24 | //!   cargo run  --features cuda -- gpumine [addr] [diff] [n] cuda
[INFO] [stdout]    |                                                     ^^^^ no item named `diff` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `n`
[INFO] [stdout]   --> src/cuda_kernel.rs:24:60
[INFO] [stdout]    |
[INFO] [stdout] 24 | //!   cargo run  --features cuda -- gpumine [addr] [diff] [n] cuda
[INFO] [stdout]    |                                                            ^ no item named `n` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `32`
[INFO] [stdout]  --> src/receipts.rs:9:40
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → JSON<TxReceipt>
[INFO] [stdout]   |                                        ^^ no item named `32` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `32`
[INFO] [stdout]   --> src/receipts.rs:10:43
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   TABLE receipts_by_block: block_hash[32] → JSON<Vec<[u8;32]>>
[INFO] [stdout]    |                                           ^^ no item named `32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/receipts.rs:10:59
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   TABLE receipts_by_block: block_hash[32] → JSON<Vec<[u8;32]>>
[INFO] [stdout]    |                                                           ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `label`
[INFO] [stdout]   --> src/api_auth.rs:13:32
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- apikey new [label] [role]   → tạo key mới (default role=read)
[INFO] [stdout]    |                                ^^^^^ no item named `label` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `role`
[INFO] [stdout]   --> src/api_auth.rs:13:40
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- apikey new [label] [role]   → tạo key mới (default role=read)
[INFO] [stdout]    |                                        ^^^^ no item named `role` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `label`
[INFO] [stdout]    --> src/api_auth.rs:322:19
[INFO] [stdout]     |
[INFO] [stdout] 322 | ///   apikey new [label] [role]   → generate new key (role default = read)
[INFO] [stdout]     |                   ^^^^^ no item named `label` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `role`
[INFO] [stdout]    --> src/api_auth.rs:322:27
[INFO] [stdout]     |
[INFO] [stdout] 322 | ///   apikey new [label] [role]   → generate new key (role default = read)
[INFO] [stdout]     |                           ^^^^ no item named `role` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `key`
[INFO] [stdout]   --> src/cli_contract.rs:12:48
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   cargo run -- contract state   <address> [key]         xem storage state
[INFO] [stdout]    |                                                ^^^ no item named `key` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `creator`
[INFO] [stdout]   --> src/cli_contract.rs:43:46
[INFO] [stdout]    |
[INFO] [stdout] 43 | /// cargo run -- contract deploy <template> [creator]
[INFO] [stdout]    |                                              ^^^^^^^ no item named `creator` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `key`
[INFO] [stdout]    --> src/cli_contract.rs:161:44
[INFO] [stdout]     |
[INFO] [stdout] 161 | /// cargo run -- contract state <address> [key]
[INFO] [stdout]     |                                            ^^^ no item named `key` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/pkt_core.rs:71:22
[INFO] [stdout]    |
[INFO] [stdout] 71 |     /// Chuyển sang [u8;32] target (big-endian)
[INFO] [stdout]    |                      ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `DX`
[INFO] [stdout]  --> src/devnet.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | //! v16.0 — Devnet One-Command [DX]
[INFO] [stdout]   |                                 ^^ no item named `DX` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `DX`
[INFO] [stdout]  --> src/docs_gen.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | //! v16.1 — Dev Docs Generator [DX]
[INFO] [stdout]   |                                 ^^ no item named `DX` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `DX`
[INFO] [stdout]  --> src/integration_test.rs:2:39
[INFO] [stdout]   |
[INFO] [stdout] 2 | //! v16.2 — Integration Test Harness [DX]
[INFO] [stdout]   |                                       ^^ no item named `DX` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `DX`
[INFO] [stdout]  --> src/hot_reload.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | //! v16.3 — Hot Reload Dev Mode [DX]
[INFO] [stdout]   |                                  ^^ no item named `DX` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `payload`
[INFO] [stdout]  --> src/pkt_wire.rs:7:82
[INFO] [stdout]   |
[INFO] [stdout] 7 | //!   [4 bytes magic] [12 bytes command] [4 bytes length LE] [4 bytes checksum] [payload]
[INFO] [stdout]   |                                                                                  ^^^^^^^ no item named `payload` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/pkt_sync.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   meta:sync_tip_hash        → [u8;32] hash của header ở sync_height
[INFO] [stdout]    |                                    ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/pkt_sync.rs:225:15
[INFO] [stdout]     |
[INFO] [stdout] 225 | ///   headers[i].prev_block == block_hash(headers[i-1])
[INFO] [stdout]     |               ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/pkt_utxo_sync.rs:21:38
[INFO] [stdout]    |
[INFO] [stdout] 21 | //!   meta:utxo_tip_hash      → raw [u8;32]
[INFO] [stdout]    |                                      ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `port`
[INFO] [stdout]   --> src/pkt_node.rs:13:33
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! CLI: cargo run -- pkt-node [port] [--mainnet] [--max-peers N]
[INFO] [stdout]    |                                 ^^^^ no item named `port` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/pkt_node.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | /// header[i].prev_block == SHA256d(wire_bytes_of_header[i-1]).
[INFO] [stdout]     |            ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `tx_0`
[INFO] [stdout]    --> src/pkt_node.rs:212:46
[INFO] [stdout]     |
[INFO] [stdout] 212 | ///   [80B: wire header] [varint: tx_count] [tx_0] ... [tx_n]
[INFO] [stdout]     |                                              ^^^^ no item named `tx_0` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `tx_n`
[INFO] [stdout]    --> src/pkt_node.rs:212:57
[INFO] [stdout]     |
[INFO] [stdout] 212 | ///   [80B: wire header] [varint: tx_count] [tx_0] ... [tx_n]
[INFO] [stdout]     |                                                         ^^^^ no item named `tx_n` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/transaction.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   scriptPubKey: OP_0 <hash20>
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(rustdoc::invalid_html_tags)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/transaction.rs:44:36
[INFO] [stdout]    |
[INFO] [stdout] 44 |     /// P2WPKH output ← v1.1: OP_0 <hash20>
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `M`
[INFO] [stdout]   --> src/script.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub1`
[INFO] [stdout]   --> src/script.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubN`
[INFO] [stdout]   --> src/script.rs:10:37
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `N`
[INFO] [stdout]   --> src/script.rs:10:44
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig1`
[INFO] [stdout]   --> src/script.rs:12:27
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   scriptSig    = OP_0 <sig1> ... <sigM> <redeemScript_bytes>
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sigM`
[INFO] [stdout]   --> src/script.rs:12:38
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   scriptSig    = OP_0 <sig1> ... <sigM> <redeemScript_bytes>
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/script.rs:71:61
[INFO] [stdout]    |
[INFO] [stdout] 71 |     /// Serialize script thành Bitcoin wire bytes (76 a9 14 <hash20> 88 ac cho P2PKH, v.v.)
[INFO] [stdout]    |                                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubkey`
[INFO] [stdout]    --> src/script.rs:136:28
[INFO] [stdout]     |
[INFO] [stdout] 136 |     /// P2PK scriptPubKey: <pubkey> OP_CHECKSIG
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig`
[INFO] [stdout]    --> src/script.rs:144:25
[INFO] [stdout]     |
[INFO] [stdout] 144 |     /// P2PK scriptSig: <sig>
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]    --> src/script.rs:149:47
[INFO] [stdout]     |
[INFO] [stdout] 149 |     /// P2PKH scriptPubKey: OP_DUP OP_HASH160 <hash20> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig`
[INFO] [stdout]    --> src/script.rs:160:26
[INFO] [stdout]     |
[INFO] [stdout] 160 |     /// P2PKH scriptSig: <sig> <pubkey>
[INFO] [stdout]     |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubkey`
[INFO] [stdout]    --> src/script.rs:160:32
[INFO] [stdout]     |
[INFO] [stdout] 160 |     /// P2PKH scriptSig: <sig> <pubkey>
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig1`
[INFO] [stdout]    --> src/script.rs:177:30
[INFO] [stdout]     |
[INFO] [stdout] 177 |     /// P2SH scriptSig: OP_0 <sig1> ... <sigM> <redeem_script_bytes>
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sigM`
[INFO] [stdout]    --> src/script.rs:177:41
[INFO] [stdout]     |
[INFO] [stdout] 177 |     /// P2SH scriptSig: OP_0 <sig1> ... <sigM> <redeem_script_bytes>
[INFO] [stdout]     |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `M`
[INFO] [stdout]    --> src/script.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub1`
[INFO] [stdout]    --> src/script.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub2`
[INFO] [stdout]    --> src/script.rs:190:20
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubN`
[INFO] [stdout]    --> src/script.rs:190:31
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `N`
[INFO] [stdout]    --> src/script.rs:190:38
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]    --> src/script.rs:279:28
[INFO] [stdout]     |
[INFO] [stdout] 279 |     /// CLTV-locked P2PKH: <height> OP_CLTV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pkh`
[INFO] [stdout]    --> src/script.rs:279:71
[INFO] [stdout]     |
[INFO] [stdout] 279 |     /// CLTV-locked P2PKH: <height> OP_CLTV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                                                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `blocks`
[INFO] [stdout]    --> src/script.rs:293:27
[INFO] [stdout]     |
[INFO] [stdout] 293 |     /// CSV-locked P2PKH: <blocks> OP_CSV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pkh`
[INFO] [stdout]    --> src/script.rs:293:69
[INFO] [stdout]     |
[INFO] [stdout] 293 |     /// CSV-locked P2PKH: <blocks> OP_CSV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `expiry`
[INFO] [stdout]    --> src/script.rs:311:11
[INFO] [stdout]     |
[INFO] [stdout] 311 |     ///   <expiry> OP_CLTV OP_DROP OP_DUP OP_HASH160 <sender_pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: could not parse code block as Rust code
[INFO] [stdout]   --> src/sphincs.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |   ///     FORS signature: few-times sig on md (k trees × t leaves)
[INFO] [stdout]    |  _________^
[INFO] [stdout] 16 | | ///     HyperTree sig:  d layers of XMSS, bottom signs FORS root
[INFO] [stdout]    | |________________________________________________________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{d7}
[INFO] [stdout]    = note: `#[warn(rustdoc::invalid_rust_codeblocks)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `word1`
[INFO] [stdout]    --> src/wallet_cli.rs:174:33
[INFO] [stdout]     |
[INFO] [stdout] 174 | /// cargo run -- wallet restore <word1> <word2> ... <word12>
[INFO] [stdout]     |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `word2`
[INFO] [stdout]    --> src/wallet_cli.rs:174:41
[INFO] [stdout]     |
[INFO] [stdout] 174 | /// cargo run -- wallet restore <word1> <word2> ... <word12>
[INFO] [stdout]     |                                         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `word12`
[INFO] [stdout]    --> src/wallet_cli.rs:174:53
[INFO] [stdout]     |
[INFO] [stdout] 174 | /// cargo run -- wallet restore <word1> <word2> ... <word12>
[INFO] [stdout]     |                                                     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]    --> src/explorer.rs:112:20
[INFO] [stdout]     |
[INFO] [stdout] 112 | /// explorer block <height>
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `addr`
[INFO] [stdout]    --> src/explorer.rs:183:22
[INFO] [stdout]     |
[INFO] [stdout] 183 | /// explorer balance <addr>
[INFO] [stdout]     |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `addr`
[INFO] [stdout]    --> src/explorer.rs:193:19
[INFO] [stdout]     |
[INFO] [stdout] 193 | /// explorer utxo <addr>
[INFO] [stdout]     |                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `String`
[INFO] [stdout]   --> src/chain_concurrent.rs:13:32
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   block_hash(h)    → Option<String>
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   block_hash(h)    → `Option<String>`
[INFO] [stdout]    |                          +              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `GpuDeviceInfo`
[INFO] [stdout]   --> src/gpu_miner.rs:19:42
[INFO] [stdout]    |
[INFO] [stdout] 19 | //!   detect_devices()             -> Vec<GpuDeviceInfo>
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 19 | //!   detect_devices()             -> `Vec<GpuDeviceInfo>`
[INFO] [stdout]    |                                       +                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]   --> src/opencl_kernel.rs:42:44
[INFO] [stdout]    |
[INFO] [stdout] 42 | /// Reference: BLAKE3 specification v1.0 — https://github.com/BLAKE3-team/BLAKE3-specs
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout]    = note: `#[warn(rustdoc::bare_urls)]` on by default
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]    |
[INFO] [stdout] 42 | /// Reference: BLAKE3 specification v1.0 — <https://github.com/BLAKE3-team/BLAKE3-specs>
[INFO] [stdout]    |                                            +                                           +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `CudaDeviceInfo`
[INFO] [stdout]   --> src/cuda_kernel.rs:20:36
[INFO] [stdout]    |
[INFO] [stdout] 20 | //!   list_cuda_devices()     — Vec<CudaDeviceInfo> (#[cfg(feature="cuda")])
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 20 | //!   list_cuda_devices()     — `Vec<CudaDeviceInfo>` (#[cfg(feature="cuda")])
[INFO] [stdout]    |                                 +                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]   --> src/cuda_kernel.rs:47:44
[INFO] [stdout]    |
[INFO] [stdout] 47 | /// Reference: BLAKE3 specification v1.0 — https://github.com/BLAKE3-team/BLAKE3-specs
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]    |
[INFO] [stdout] 47 | /// Reference: BLAKE3 specification v1.0 — <https://github.com/BLAKE3-team/BLAKE3-specs>
[INFO] [stdout]    |                                            +                                           +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `addr`
[INFO] [stdout]   --> src/pktscan_ws.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | //!   GET /ws?watch=<addr>&token=<first_16_chars_of_sha256(secret:addr)>
[INFO] [stdout]    |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `TxRecord`
[INFO] [stdout]  --> src/address_index.rs:9:52
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   history_for_addr(addr, chain, utxo_set) → Vec<TxRecord>
[INFO] [stdout]   |                                                    ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   history_for_addr(addr, chain, utxo_set) → `Vec<TxRecord>`
[INFO] [stdout]   |                                                 +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `SearchResult`
[INFO] [stdout]   --> src/search_index.rs:15:56
[INFO] [stdout]    |
[INFO] [stdout] 15 | //!   SearchIndex::search(query, utxo_set, limit) → Vec<SearchResult>
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 15 | //!   SearchIndex::search(query, utxo_set, limit) → `Vec<SearchResult>`
[INFO] [stdout]    |                                                     +                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `SearchResult`
[INFO] [stdout]   --> src/search_index.rs:16:56
[INFO] [stdout]    |
[INFO] [stdout] 16 | //!   search_one(query, chain, utxo_set)          → Vec<SearchResult>  (one-shot)
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 16 | //!   search_one(query, chain, utxo_set)          → `Vec<SearchResult>`  (one-shot)
[INFO] [stdout]    |                                                     +                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `AnalyticsSeries`
[INFO] [stdout]   --> src/chain_analytics.rs:14:60
[INFO] [stdout]    |
[INFO] [stdout] 14 | //!   analytics(metric, chain, difficulty, window) → Option<AnalyticsSeries>
[INFO] [stdout]    |                                                            ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 14 | //!   analytics(metric, chain, difficulty, window) → `Option<AnalyticsSeries>`
[INFO] [stdout]    |                                                      +                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `TxRow`
[INFO] [stdout]  --> src/pagination.rs:9:55
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   paginate_txs(chain, from_height, limit)    → Vec<TxRow> (newest-first)
[INFO] [stdout]   |                                                       ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   paginate_txs(chain, from_height, limit)    → `Vec<TxRow>` (newest-first)
[INFO] [stdout]   |                                                    +          +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]   --> src/pagination.rs:16:28
[INFO] [stdout]    |
[INFO] [stdout] 16 | //!   GET /api/blocks?from=<height>&limit=20
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]   --> src/pagination.rs:17:25
[INFO] [stdout]    |
[INFO] [stdout] 17 | //!   GET /api/txs?from=<height>&limit=20
[INFO] [stdout]    |                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]   --> src/pagination.rs:18:32
[INFO] [stdout]    |
[INFO] [stdout] 18 | //!   GET /api/blocks.csv?from=<height>&limit=100
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]   --> src/pagination.rs:19:29
[INFO] [stdout]    |
[INFO] [stdout] 19 | //!   GET /api/txs.csv?from=<height>&limit=100
[INFO] [stdout]    |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `AbiValue`
[INFO] [stdout]  --> src/abi.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   - Decode: calldata → Vec<AbiValue>
[INFO] [stdout]   |                               ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   - Decode: calldata → `Vec<AbiValue>`
[INFO] [stdout]   |                            +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `TxReceipt`
[INFO] [stdout]  --> src/receipts.rs:9:51
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → JSON<TxReceipt>
[INFO] [stdout]   |                                                   ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → `JSON<TxReceipt>`
[INFO] [stdout]   |                                               +               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]  --> src/cli_token.rs:8:33
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]   |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `name`
[INFO] [stdout]  --> src/cli_token.rs:8:38
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `symbol`
[INFO] [stdout]  --> src/cli_token.rs:8:45
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]   |                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `decimals`
[INFO] [stdout]  --> src/cli_token.rs:8:54
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]   |                                                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `supply`
[INFO] [stdout]  --> src/cli_token.rs:8:65
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]   |                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `owner`
[INFO] [stdout]  --> src/cli_token.rs:8:74
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]   |                                                                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]   --> src/cli_token.rs:10:33
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   cargo run -- token info   <id>
[INFO] [stdout]    |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]   --> src/cli_token.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- token mint   <id> <to> <amount>
[INFO] [stdout]    |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `to`
[INFO] [stdout]   --> src/cli_token.rs:11:38
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- token mint   <id> <to> <amount>
[INFO] [stdout]    |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `amount`
[INFO] [stdout]   --> src/cli_token.rs:11:43
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- token mint   <id> <to> <amount>
[INFO] [stdout]    |                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]   --> src/cli_token.rs:12:35
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]    |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `from`
[INFO] [stdout]   --> src/cli_token.rs:12:40
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `to`
[INFO] [stdout]   --> src/cli_token.rs:12:47
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]    |                                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `amount`
[INFO] [stdout]   --> src/cli_token.rs:12:52
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]    |                                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]   --> src/cli_token.rs:13:35
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- token balance  <id> <addr>
[INFO] [stdout]    |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `addr`
[INFO] [stdout]   --> src/cli_token.rs:13:40
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- token balance  <id> <addr>
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]   --> src/cli_token.rs:40:31
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]    |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `name`
[INFO] [stdout]   --> src/cli_token.rs:40:36
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]    |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `symbol`
[INFO] [stdout]   --> src/cli_token.rs:40:43
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]    |                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `decimals`
[INFO] [stdout]   --> src/cli_token.rs:40:52
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]    |                                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `supply`
[INFO] [stdout]   --> src/cli_token.rs:40:63
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]    |                                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `owner`
[INFO] [stdout]   --> src/cli_token.rs:40:72
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// cargo run -- token create <id> <name> <symbol> <decimals> <supply> <owner>
[INFO] [stdout]    |                                                                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]   --> src/cli_token.rs:90:29
[INFO] [stdout]    |
[INFO] [stdout] 90 | /// cargo run -- token info <id>
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]    --> src/cli_token.rs:110:29
[INFO] [stdout]     |
[INFO] [stdout] 110 | /// cargo run -- token mint <id> <to> <amount>
[INFO] [stdout]     |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `to`
[INFO] [stdout]    --> src/cli_token.rs:110:34
[INFO] [stdout]     |
[INFO] [stdout] 110 | /// cargo run -- token mint <id> <to> <amount>
[INFO] [stdout]     |                                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `amount`
[INFO] [stdout]    --> src/cli_token.rs:110:39
[INFO] [stdout]     |
[INFO] [stdout] 110 | /// cargo run -- token mint <id> <to> <amount>
[INFO] [stdout]     |                                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]    --> src/cli_token.rs:138:33
[INFO] [stdout]     |
[INFO] [stdout] 138 | /// cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]     |                                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `from`
[INFO] [stdout]    --> src/cli_token.rs:138:38
[INFO] [stdout]     |
[INFO] [stdout] 138 | /// cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]     |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `to`
[INFO] [stdout]    --> src/cli_token.rs:138:45
[INFO] [stdout]     |
[INFO] [stdout] 138 | /// cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]     |                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `amount`
[INFO] [stdout]    --> src/cli_token.rs:138:50
[INFO] [stdout]     |
[INFO] [stdout] 138 | /// cargo run -- token transfer <id> <from> <to> <amount>
[INFO] [stdout]     |                                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `id`
[INFO] [stdout]    --> src/cli_token.rs:160:32
[INFO] [stdout]     |
[INFO] [stdout] 160 | /// cargo run -- token balance <id> <addr>
[INFO] [stdout]     |                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `addr`
[INFO] [stdout]    --> src/cli_token.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 | /// cargo run -- token balance <id> <addr>
[INFO] [stdout]     |                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `template`
[INFO] [stdout]  --> src/cli_contract.rs:8:37
[INFO] [stdout]   |
[INFO] [stdout] 8 | //!   cargo run -- contract deploy  <template>              deploy built-in template
[INFO] [stdout]   |                                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]   --> src/cli_contract.rs:10:37
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   cargo run -- contract info    <address>               thông tin contract
[INFO] [stdout]    |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]   --> src/cli_contract.rs:11:37
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- contract call    <address> <fn> [args…]  gọi function
[INFO] [stdout]    |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `fn`
[INFO] [stdout]   --> src/cli_contract.rs:11:47
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- contract call    <address> <fn> [args…]  gọi function
[INFO] [stdout]    |                                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]   --> src/cli_contract.rs:12:37
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   cargo run -- contract state   <address> [key]         xem storage state
[INFO] [stdout]    |                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]   --> src/cli_contract.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- contract estimate <address> <fn>         ước tính gas
[INFO] [stdout]    |                                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `fn`
[INFO] [stdout]   --> src/cli_contract.rs:13:48
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- contract estimate <address> <fn>         ước tính gas
[INFO] [stdout]    |                                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `template`
[INFO] [stdout]   --> src/cli_contract.rs:43:34
[INFO] [stdout]    |
[INFO] [stdout] 43 | /// cargo run -- contract deploy <template> [creator]
[INFO] [stdout]    |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]   --> src/cli_contract.rs:95:32
[INFO] [stdout]    |
[INFO] [stdout] 95 | /// cargo run -- contract info <address>
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]    --> src/cli_contract.rs:117:32
[INFO] [stdout]     |
[INFO] [stdout] 117 | /// cargo run -- contract call <address> <function> [arg1 arg2 …] [--gas N]
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `function`
[INFO] [stdout]    --> src/cli_contract.rs:117:42
[INFO] [stdout]     |
[INFO] [stdout] 117 | /// cargo run -- contract call <address> <function> [arg1 arg2 …] [--gas N]
[INFO] [stdout]     |                                          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]    --> src/cli_contract.rs:161:33
[INFO] [stdout]     |
[INFO] [stdout] 161 | /// cargo run -- contract state <address> [key]
[INFO] [stdout]     |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `address`
[INFO] [stdout]    --> src/cli_contract.rs:189:36
[INFO] [stdout]     |
[INFO] [stdout] 189 | /// cargo run -- contract estimate <address> <function>
[INFO] [stdout]     |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `function`
[INFO] [stdout]    --> src/cli_contract.rs:189:46
[INFO] [stdout]     |
[INFO] [stdout] 189 | /// cargo run -- contract estimate <address> <function>
[INFO] [stdout]     |                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `addr`
[INFO] [stdout]  --> src/cli_staking.rs:9:38
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   cargo run -- staking register  <addr> <commission_bps>
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]   --> src/cli_staking.rs:10:38
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   cargo run -- staking delegate  <delegator> <validator> <amount>
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]   --> src/cli_staking.rs:10:50
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   cargo run -- staking delegate  <delegator> <validator> <amount>
[INFO] [stdout]    |                                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `amount`
[INFO] [stdout]   --> src/cli_staking.rs:10:62
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   cargo run -- staking delegate  <delegator> <validator> <amount>
[INFO] [stdout]    |                                                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]   --> src/cli_staking.rs:11:39
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- staking undelegate <delegator> <validator> <amount>
[INFO] [stdout]    |                                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]   --> src/cli_staking.rs:11:51
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- staking undelegate <delegator> <validator> <amount>
[INFO] [stdout]    |                                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `amount`
[INFO] [stdout]   --> src/cli_staking.rs:11:63
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   cargo run -- staking undelegate <delegator> <validator> <amount>
[INFO] [stdout]    |                                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]   --> src/cli_staking.rs:12:38
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   cargo run -- staking rewards   <delegator>   xem pending rewards
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]   --> src/cli_staking.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- staking claim     <delegator>   claim rewards
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]   --> src/cli_staking.rs:14:38
[INFO] [stdout]    |
[INFO] [stdout] 14 | //!   cargo run -- staking info      <validator>   chi tiết validator
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]   --> src/cli_staking.rs:15:38
[INFO] [stdout]    |
[INFO] [stdout] 15 | //!   cargo run -- staking slash     <validator> <bps>  slash validator (admin)
[INFO] [stdout]    |                                      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `bps`
[INFO] [stdout]   --> src/cli_staking.rs:15:50
[INFO] [stdout]    |
[INFO] [stdout] 15 | //!   cargo run -- staking slash     <validator> <bps>  slash validator (admin)
[INFO] [stdout]    |                                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `addr`
[INFO] [stdout]   --> src/cli_staking.rs:67:35
[INFO] [stdout]    |
[INFO] [stdout] 67 | /// cargo run -- staking register <addr> <commission_bps>
[INFO] [stdout]    |                                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]   --> src/cli_staking.rs:88:35
[INFO] [stdout]    |
[INFO] [stdout] 88 | /// cargo run -- staking delegate <delegator> <validator> <amount>
[INFO] [stdout]    |                                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]   --> src/cli_staking.rs:88:47
[INFO] [stdout]    |
[INFO] [stdout] 88 | /// cargo run -- staking delegate <delegator> <validator> <amount>
[INFO] [stdout]    |                                               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `amount`
[INFO] [stdout]   --> src/cli_staking.rs:88:59
[INFO] [stdout]    |
[INFO] [stdout] 88 | /// cargo run -- staking delegate <delegator> <validator> <amount>
[INFO] [stdout]    |                                                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]    --> src/cli_staking.rs:110:37
[INFO] [stdout]     |
[INFO] [stdout] 110 | /// cargo run -- staking undelegate <delegator> <validator>
[INFO] [stdout]     |                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]    --> src/cli_staking.rs:110:49
[INFO] [stdout]     |
[INFO] [stdout] 110 | /// cargo run -- staking undelegate <delegator> <validator>
[INFO] [stdout]     |                                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]    --> src/cli_staking.rs:130:34
[INFO] [stdout]     |
[INFO] [stdout] 130 | /// cargo run -- staking rewards <delegator>
[INFO] [stdout]     |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `delegator`
[INFO] [stdout]    --> src/cli_staking.rs:160:32
[INFO] [stdout]     |
[INFO] [stdout] 160 | /// cargo run -- staking claim <delegator>
[INFO] [stdout]     |                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]    --> src/cli_staking.rs:180:31
[INFO] [stdout]     |
[INFO] [stdout] 180 | /// cargo run -- staking info <validator>
[INFO] [stdout]     |                               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `validator`
[INFO] [stdout]    --> src/cli_staking.rs:212:32
[INFO] [stdout]     |
[INFO] [stdout] 212 | /// cargo run -- staking slash <validator> <slash_bps>
[INFO] [stdout]     |                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `cmd`
[INFO] [stdout]   --> src/hot_reload.rs:10:37
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   1. Spawn server (cargo run -- <cmd> <port>)
[INFO] [stdout]    |                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `port`
[INFO] [stdout]   --> src/hot_reload.rs:10:43
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   1. Spawn server (cargo run -- <cmd> <port>)
[INFO] [stdout]    |                                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Database`
[INFO] [stdout]   --> src/pkt_kv.rs:33:30
[INFO] [stdout]    |
[INFO] [stdout] 33 |     /// Registry: path → Weak<Database> để share cùng instance trong 1 process.
[INFO] [stdout]    |                              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 33 |     /// Registry: path → `Weak<Database>` để share cùng instance trong 1 process.
[INFO] [stdout]    |                          +              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Database`
[INFO] [stdout]   --> src/pkt_kv.rs:41:67
[INFO] [stdout]    |
[INFO] [stdout] 41 |     /// - redb lock file exclusive → cùng path phải dùng chung Arc<Database>
[INFO] [stdout]    |                                                                   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 41 |     /// - redb lock file exclusive → cùng path phải dùng chung `Arc<Database>`
[INFO] [stdout]    |                                                                +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Database`
[INFO] [stdout]   --> src/pkt_kv.rs:56:29
[INFO] [stdout]    |
[INFO] [stdout] 56 |         /// Lấy hoặc tạo Arc<Database> cho `db_file`, update registry.
[INFO] [stdout]    |                             ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 56 |         /// Lấy hoặc tạo `Arc<Database>` cho `db_file`, update registry.
[INFO] [stdout]    |                          +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]   --> src/pkt_wire.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! Tài liệu: https://en.bitcoin.it/wiki/Protocol_documentation
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! Tài liệu: <https://en.bitcoin.it/wiki/Protocol_documentation>
[INFO] [stdout]    |               +                                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]  --> src/pkt_export.rs:4:68
[INFO] [stdout]   |
[INFO] [stdout] 4 | //! Streaming CSV export (không buffer toàn bộ vào RAM — trả về Vec<u8> tích lũy row-by-row):
[INFO] [stdout]   |                                                                    ^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 4 | //! Streaming CSV export (không buffer toàn bộ vào RAM — trả về `Vec<u8>` tích lũy row-by-row):
[INFO] [stdout]   |                                                                 +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `query`
[INFO] [stdout]   --> src/pkt_search.rs:14:33
[INFO] [stdout]    |
[INFO] [stdout] 14 | //!   GET /api/testnet/search?q=<query>
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]    --> src/pkt_testnet_web.rs:155:28
[INFO] [stdout]     |
[INFO] [stdout] 155 | ///   Wire P2PKH: 76 a9 14 <hash20> 88 ac  (25 bytes)
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `query`
[INFO] [stdout]     --> src/pkt_testnet_web.rs:1007:31
[INFO] [stdout]      |
[INFO] [stdout] 1007 | /// GET /api/testnet/search?q=<query>
[INFO] [stdout]      |                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: could not parse code block as Rust code
[INFO] [stdout]   --> src/pkt_fullnode.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |   //! ```
[INFO] [stdout]    |  _____^
[INFO] [stdout] 14 | | //! Tokio runtime  ──► pktscan_api::serve(port)           REST API + Web UI (async)
[INFO] [stdout] 15 | | //! spawn_blocking  ──► loop { pkt_sync::run_sync(peer) }  sync loop (blocking thread)
[INFO] [stdout] 16 | | //! thread          ──► run_pkt_node(p2p_port)             P2P listener (blocking thread)
[INFO] [stdout] 17 | | //! ```
[INFO] [stdout]    | |_______^
[INFO] [stdout]    |
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{2500}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{2500}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{25ba}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{2500}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{2500}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{25ba}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{2500}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{2500}
[INFO] [stdout]    = note: error from rustc: unknown start of token: \u{25ba}
[INFO] [stdout] help: mark blocks that do not contain Rust code as text
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! ```text
[INFO] [stdout]    |        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]    --> src/pkt_config.rs:132:10
[INFO] [stdout]     |
[INFO] [stdout] 132 |     /// "http://seed.testnet.oceif.com:8081"
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]     |
[INFO] [stdout] 132 |     /// "<http://seed.testnet.oceif.com:8081>"
[INFO] [stdout]     |          +                                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 35s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.30.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 9`
[INFO] [stderr]    Generated /opt/rustwide/target/doc/pkt_core/index.html and 1 other file
[INFO] running `Command { std: "docker" "inspect" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "DOCS_RS=1" "-e" "RUSTC_BOOTSTRAP=1" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1" "/opt/rustwide/cargo-home/bin/cargo" "+824336ad4127ce295849937a24c08a4aeff6ada7" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--document-private-items\"]" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]  Documenting blockchain-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unresolved link to `<schnorr_sig>`
[INFO] [stdout]   --> src/taproot.rs:15:31
[INFO] [stdout]    |
[INFO] [stdout] 15 | //!   witness (key path):    [<schnorr_sig>]
[INFO] [stdout]    |                               ^^^^^^^^^^^^^ missing type for generic parameters
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]    --> src/taproot.rs:136:24
[INFO] [stdout]     |
[INFO] [stdout] 136 |     /// Returns: Vec<([u8;32], bool)> — (sibling_hash, is_left)
[INFO] [stdout]     |                        ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `schnorr_sig`
[INFO] [stdout]    --> src/taproot.rs:257:22
[INFO] [stdout]     |
[INFO] [stdout] 257 |     ///   witness = [schnorr_sig]
[INFO] [stdout]     |                      ^^^^^^^^^^^ no item named `schnorr_sig` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] help: there's a similarly named item `schnorr_sign`
[INFO] [stdout]     |
[INFO] [stdout] 257 |     ///   witness = [schnorr_sign]
[INFO] [stdout]     |                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `label`
[INFO] [stdout]   --> src/api_auth.rs:13:32
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- apikey new [label] [role]   → tạo key mới (default role=read)
[INFO] [stdout]    |                                ^^^^^ no item named `label` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `role`
[INFO] [stdout]   --> src/api_auth.rs:13:40
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   cargo run -- apikey new [label] [role]   → tạo key mới (default role=read)
[INFO] [stdout]    |                                        ^^^^ no item named `role` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `label`
[INFO] [stdout]    --> src/api_auth.rs:322:19
[INFO] [stdout]     |
[INFO] [stdout] 322 | ///   apikey new [label] [role]   → generate new key (role default = read)
[INFO] [stdout]     |                   ^^^^^ no item named `label` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `role`
[INFO] [stdout]    --> src/api_auth.rs:322:27
[INFO] [stdout]     |
[INFO] [stdout] 322 | ///   apikey new [label] [role]   → generate new key (role default = read)
[INFO] [stdout]     |                           ^^^^ no item named `role` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `32`
[INFO] [stdout]  --> src/receipts.rs:9:40
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → JSON<TxReceipt>
[INFO] [stdout]   |                                        ^^ no item named `32` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `32`
[INFO] [stdout]   --> src/receipts.rs:10:43
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   TABLE receipts_by_block: block_hash[32] → JSON<Vec<[u8;32]>>
[INFO] [stdout]    |                                           ^^ no item named `32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/receipts.rs:10:59
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   TABLE receipts_by_block: block_hash[32] → JSON<Vec<[u8;32]>>
[INFO] [stdout]    |                                                           ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `payload`
[INFO] [stdout]  --> src/pkt_wire.rs:7:82
[INFO] [stdout]   |
[INFO] [stdout] 7 | //!   [4 bytes magic] [12 bytes command] [4 bytes length LE] [4 bytes checksum] [payload]
[INFO] [stdout]   |                                                                                  ^^^^^^^ no item named `payload` in scope
[INFO] [stdout]   |
[INFO] [stdout]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/pkt_sync.rs:13:36
[INFO] [stdout]    |
[INFO] [stdout] 13 | //!   meta:sync_tip_hash        → [u8;32] hash của header ở sync_height
[INFO] [stdout]    |                                    ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `i`
[INFO] [stdout]    --> src/pkt_sync.rs:225:15
[INFO] [stdout]     |
[INFO] [stdout] 225 | ///   headers[i].prev_block == block_hash(headers[i-1])
[INFO] [stdout]     |               ^ no item named `i` in scope
[INFO] [stdout]     |
[INFO] [stdout]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unresolved link to `u8;32`
[INFO] [stdout]   --> src/pkt_utxo_sync.rs:21:38
[INFO] [stdout]    |
[INFO] [stdout] 21 | //!   meta:utxo_tip_hash      → raw [u8;32]
[INFO] [stdout]    |                                      ^^^^^ no item named `u8;32` in scope
[INFO] [stdout]    |
[INFO] [stdout]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `M`
[INFO] [stdout]   --> src/script.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(rustdoc::invalid_html_tags)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub1`
[INFO] [stdout]   --> src/script.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubN`
[INFO] [stdout]   --> src/script.rs:10:37
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `N`
[INFO] [stdout]   --> src/script.rs:10:44
[INFO] [stdout]    |
[INFO] [stdout] 10 | //!   redeemScript = <M> <pub1> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]    |                                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig1`
[INFO] [stdout]   --> src/script.rs:12:27
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   scriptSig    = OP_0 <sig1> ... <sigM> <redeemScript_bytes>
[INFO] [stdout]    |                           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sigM`
[INFO] [stdout]   --> src/script.rs:12:38
[INFO] [stdout]    |
[INFO] [stdout] 12 | //!   scriptSig    = OP_0 <sig1> ... <sigM> <redeemScript_bytes>
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/script.rs:71:61
[INFO] [stdout]    |
[INFO] [stdout] 71 |     /// Serialize script thành Bitcoin wire bytes (76 a9 14 <hash20> 88 ac cho P2PKH, v.v.)
[INFO] [stdout]    |                                                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubkey`
[INFO] [stdout]    --> src/script.rs:136:28
[INFO] [stdout]     |
[INFO] [stdout] 136 |     /// P2PK scriptPubKey: <pubkey> OP_CHECKSIG
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig`
[INFO] [stdout]    --> src/script.rs:144:25
[INFO] [stdout]     |
[INFO] [stdout] 144 |     /// P2PK scriptSig: <sig>
[INFO] [stdout]     |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]    --> src/script.rs:149:47
[INFO] [stdout]     |
[INFO] [stdout] 149 |     /// P2PKH scriptPubKey: OP_DUP OP_HASH160 <hash20> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig`
[INFO] [stdout]    --> src/script.rs:160:26
[INFO] [stdout]     |
[INFO] [stdout] 160 |     /// P2PKH scriptSig: <sig> <pubkey>
[INFO] [stdout]     |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubkey`
[INFO] [stdout]    --> src/script.rs:160:32
[INFO] [stdout]     |
[INFO] [stdout] 160 |     /// P2PKH scriptSig: <sig> <pubkey>
[INFO] [stdout]     |                                ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sig1`
[INFO] [stdout]    --> src/script.rs:177:30
[INFO] [stdout]     |
[INFO] [stdout] 177 |     /// P2SH scriptSig: OP_0 <sig1> ... <sigM> <redeem_script_bytes>
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `sigM`
[INFO] [stdout]    --> src/script.rs:177:41
[INFO] [stdout]     |
[INFO] [stdout] 177 |     /// P2SH scriptSig: OP_0 <sig1> ... <sigM> <redeem_script_bytes>
[INFO] [stdout]     |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `M`
[INFO] [stdout]    --> src/script.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub1`
[INFO] [stdout]    --> src/script.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pub2`
[INFO] [stdout]    --> src/script.rs:190:20
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pubN`
[INFO] [stdout]    --> src/script.rs:190:31
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `N`
[INFO] [stdout]    --> src/script.rs:190:38
[INFO] [stdout]     |
[INFO] [stdout] 190 |     /// <M> <pub1> <pub2> ... <pubN> <N> OP_CHECKMULTISIG
[INFO] [stdout]     |                                      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `height`
[INFO] [stdout]    --> src/script.rs:279:28
[INFO] [stdout]     |
[INFO] [stdout] 279 |     /// CLTV-locked P2PKH: <height> OP_CLTV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pkh`
[INFO] [stdout]    --> src/script.rs:279:71
[INFO] [stdout]     |
[INFO] [stdout] 279 |     /// CLTV-locked P2PKH: <height> OP_CLTV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                                                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `blocks`
[INFO] [stdout]    --> src/script.rs:293:27
[INFO] [stdout]     |
[INFO] [stdout] 293 |     /// CSV-locked P2PKH: <blocks> OP_CSV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `pkh`
[INFO] [stdout]    --> src/script.rs:293:69
[INFO] [stdout]     |
[INFO] [stdout] 293 |     /// CSV-locked P2PKH: <blocks> OP_CSV OP_DROP OP_DUP OP_HASH160 <pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |                                                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `expiry`
[INFO] [stdout]    --> src/script.rs:311:11
[INFO] [stdout]     |
[INFO] [stdout] 311 |     ///   <expiry> OP_CLTV OP_DROP OP_DUP OP_HASH160 <sender_pkh> OP_EQUALVERIFY OP_CHECKSIG
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/transaction.rs:11:26
[INFO] [stdout]    |
[INFO] [stdout] 11 | //!   scriptPubKey: OP_0 <hash20>
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `hash20`
[INFO] [stdout]   --> src/transaction.rs:44:36
[INFO] [stdout]    |
[INFO] [stdout] 44 |     /// P2WPKH output ← v1.1: OP_0 <hash20>
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `AbiValue`
[INFO] [stdout]  --> src/abi.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   - Decode: calldata → Vec<AbiValue>
[INFO] [stdout]   |                               ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   - Decode: calldata → `Vec<AbiValue>`
[INFO] [stdout]   |                            +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `TxReceipt`
[INFO] [stdout]  --> src/receipts.rs:9:51
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → JSON<TxReceipt>
[INFO] [stdout]   |                                                   ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 9 | //!   TABLE receipts_by_tx:    tx_hash[32]  → `JSON<TxReceipt>`
[INFO] [stdout]   |                                               +               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `u8`
[INFO] [stdout]  --> src/pkt_export.rs:4:68
[INFO] [stdout]   |
[INFO] [stdout] 4 | //! Streaming CSV export (không buffer toàn bộ vào RAM — trả về Vec<u8> tích lũy row-by-row):
[INFO] [stdout]   |                                                                    ^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]   |
[INFO] [stdout] 4 | //! Streaming CSV export (không buffer toàn bộ vào RAM — trả về `Vec<u8>` tích lũy row-by-row):
[INFO] [stdout]   |                                                                 +       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]    --> src/pkt_config.rs:132:10
[INFO] [stdout]     |
[INFO] [stdout] 132 |     /// "http://seed.testnet.oceif.com:8081"
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout]     = note: `#[warn(rustdoc::bare_urls)]` on by default
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]     |
[INFO] [stdout] 132 |     /// "<http://seed.testnet.oceif.com:8081>"
[INFO] [stdout]     |          +                                  +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `Database`
[INFO] [stdout]   --> src/pkt_kv.rs:41:67
[INFO] [stdout]    |
[INFO] [stdout] 41 |     /// - redb lock file exclusive → cùng path phải dùng chung Arc<Database>
[INFO] [stdout]    |                                                                   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: try marking as source code
[INFO] [stdout]    |
[INFO] [stdout] 41 |     /// - redb lock file exclusive → cùng path phải dùng chung `Arc<Database>`
[INFO] [stdout]    |                                                                +             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this URL is not a hyperlink
[INFO] [stdout]   --> src/pkt_wire.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! Tài liệu: https://en.bitcoin.it/wiki/Protocol_documentation
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: bare URLs are not automatically turned into clickable links
[INFO] [stdout] help: use an automatic link instead
[INFO] [stdout]    |
[INFO] [stdout] 13 | //! Tài liệu: <https://en.bitcoin.it/wiki/Protocol_documentation>
[INFO] [stdout]    |               +                                                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unclosed HTML tag `query`
[INFO] [stdout]   --> src/pkt_search.rs:14:33
[INFO] [stdout]    |
[INFO] [stdout] 14 | //!   GET /api/testnet/search?q=<query>
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.68s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.30.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 9`
[INFO] [stderr]    Generated /opt/rustwide/target/doc/pkt_core/index.html
[INFO] running `Command { std: "docker" "inspect" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1", kill_on_drop: false }`
[INFO] [stdout] a756ef300dc6e9fb89edba2e072cef0daf4dc2b716b6833c07335ffcedef68c1
