feat: Sprint 1 — production hardening, TLS lifecycle, CI coverage, lint cleanup

- Fix 3 client panics: replace .unwrap()/.expect() with proper error
  handling in rpc.rs (AUTH_CONTEXT lock), repl.rs (pending_member),
  and retry.rs (last_err)
- Add --danger-accept-invalid-certs flag with InsecureServerCertVerifier
  for development TLS bypass, plus mdBook TLS documentation
- Add CI coverage job (cargo-tarpaulin) and Docker build validation
  to GitHub Actions workflow, plus README CI badge
- Add [workspace.lints] config, fix 46 clippy warnings across 8 crates,
  zero warnings on all buildable crates
- Update Dockerfile for all 11 workspace members
This commit is contained in:
2026-03-03 23:19:11 +01:00
parent dc4e4e49a0
commit 612b06aa8e
33 changed files with 388 additions and 67 deletions

View File

@@ -12,11 +12,17 @@ WORKDIR /build
# Copy manifests first so dependency layers are cached independently of source.
COPY Cargo.toml Cargo.lock ./
COPY crates/quicproquo-core/Cargo.toml crates/quicproquo-core/Cargo.toml
COPY crates/quicproquo-proto/Cargo.toml crates/quicproquo-proto/Cargo.toml
COPY crates/quicproquo-server/Cargo.toml crates/quicproquo-server/Cargo.toml
COPY crates/quicproquo-client/Cargo.toml crates/quicproquo-client/Cargo.toml
COPY crates/quicproquo-p2p/Cargo.toml crates/quicproquo-p2p/Cargo.toml
COPY crates/quicproquo-core/Cargo.toml crates/quicproquo-core/Cargo.toml
COPY crates/quicproquo-proto/Cargo.toml crates/quicproquo-proto/Cargo.toml
COPY crates/quicproquo-server/Cargo.toml crates/quicproquo-server/Cargo.toml
COPY crates/quicproquo-client/Cargo.toml crates/quicproquo-client/Cargo.toml
COPY crates/quicproquo-p2p/Cargo.toml crates/quicproquo-p2p/Cargo.toml
COPY crates/quicproquo-bot/Cargo.toml crates/quicproquo-bot/Cargo.toml
COPY crates/quicproquo-gen/Cargo.toml crates/quicproquo-gen/Cargo.toml
COPY crates/quicproquo-kt/Cargo.toml crates/quicproquo-kt/Cargo.toml
COPY crates/quicproquo-plugin-api/Cargo.toml crates/quicproquo-plugin-api/Cargo.toml
COPY crates/quicproquo-gui/Cargo.toml crates/quicproquo-gui/Cargo.toml
COPY crates/quicproquo-mobile/Cargo.toml crates/quicproquo-mobile/Cargo.toml
# Create dummy source files so `cargo build` can resolve the dependency graph
# and cache the compiled dependencies before copying real source.
@@ -26,11 +32,23 @@ RUN mkdir -p \
crates/quicproquo-server/src \
crates/quicproquo-client/src \
crates/quicproquo-p2p/src \
crates/quicproquo-bot/src \
crates/quicproquo-gen/src \
crates/quicproquo-kt/src \
crates/quicproquo-plugin-api/src \
crates/quicproquo-gui/src \
crates/quicproquo-mobile/src \
&& echo 'fn main() {}' > crates/quicproquo-server/src/main.rs \
&& echo 'fn main() {}' > crates/quicproquo-client/src/main.rs \
&& echo 'fn main() {}' > crates/quicproquo-gen/src/main.rs \
&& echo 'fn main() {}' > crates/quicproquo-bot/src/main.rs \
&& touch crates/quicproquo-core/src/lib.rs \
&& touch crates/quicproquo-proto/src/lib.rs \
&& touch crates/quicproquo-p2p/src/lib.rs
&& touch crates/quicproquo-p2p/src/lib.rs \
&& touch crates/quicproquo-kt/src/lib.rs \
&& touch crates/quicproquo-plugin-api/src/lib.rs \
&& touch crates/quicproquo-gui/src/lib.rs \
&& touch crates/quicproquo-mobile/src/lib.rs
# Schemas must exist before the proto crate's build.rs runs.
COPY schemas/ schemas/
@@ -46,6 +64,8 @@ RUN touch \
crates/quicproquo-core/src/lib.rs \
crates/quicproquo-proto/src/lib.rs \
crates/quicproquo-p2p/src/lib.rs \
crates/quicproquo-kt/src/lib.rs \
crates/quicproquo-plugin-api/src/lib.rs \
crates/quicproquo-server/src/main.rs \
crates/quicproquo-client/src/main.rs