docs: record wgcloak v1 release state
This commit is contained in:
1 parent
5767b9038f
commit
ac197d1eca
2 files changed
+70
-72
No files matched your search
+42
-53
@@ -1,9 +1,10 @@
|
|||||||
# Development state
|
# Development state
|
||||||
|
|
||||||
Checkpoint: 2026-09-19. Branch: `main`. HEAD: `49ec9d8`
|
Release checkpoint: 2026-09-19. Branch: `main`. The implementation and
|
||||||
(`docs: refresh development checkpoint`). The working tree is not clean: this
|
license baseline is commit `5767b90` (`release: finalize wgcloak v1 under
|
||||||
checkout contains concurrent implementation, documentation, benchmark, fuzz,
|
GPLv3`). The final documentation closeout is the only work that follows that
|
||||||
and integration-test changes. No commit was created for this checkpoint.
|
baseline and is intended to be committed separately; no implementation claim
|
||||||
|
below depends on an uncommitted code change.
|
||||||
|
|
||||||
## Implemented behavior
|
## Implemented behavior
|
||||||
|
|
||||||
@@ -32,72 +33,60 @@ and integration-test changes. No commit was created for this checkpoint.
|
|||||||
`CAP_NET_BIND_SERVICE` is documented as an optional, narrowly scoped aid for
|
`CAP_NET_BIND_SERVICE` is documented as an optional, narrowly scoped aid for
|
||||||
ports below 1024. No WireGuard, TUN/TAP, routing, or firewall management is
|
ports below 1024. No WireGuard, TUN/TAP, routing, or firewall management is
|
||||||
implemented.
|
implemented.
|
||||||
|
- The configured default application datagram is 1,200 bytes and the project
|
||||||
|
safety ceiling is 16,384 bytes. Transport negotiation and framing may lower
|
||||||
|
the effective per-session maximum; boundary coverage exists in config and
|
||||||
|
server-capability tests.
|
||||||
|
- Oversized-datagram accounting is preserved in aggregate status/statistics
|
||||||
|
across the direct, QUIC, HTTP/3, and TLS/TCP paths; the latest boundary and
|
||||||
|
metrics repair is implemented by `src/server/mod.rs::record_transport_drop`
|
||||||
|
and covered by its `oversized_transport_error_is_counted_once` test.
|
||||||
- `tests/encrypted_runtime.rs` covers daemon-level QUIC/TLS forwarding,
|
- `tests/encrypted_runtime.rs` covers daemon-level QUIC/TLS forwarding,
|
||||||
authentication rejection, cancellation, session identity, and QUIC restart
|
authentication rejection, cancellation, session identity, and QUIC restart
|
||||||
reconnect. `tests/server_capabilities.rs` covers the server datagram
|
reconnect. `tests/server_capabilities.rs` covers the datagram capability
|
||||||
capability boundary.
|
boundary.
|
||||||
- A deterministic Criterion target exists in `benches/protocol_transports.rs`
|
- A deterministic Criterion target exists in `benches/protocol_transports.rs`
|
||||||
for protocol/framing/HTTP Datagram/replay microbenchmarks. The repository
|
for protocol/framing/HTTP Datagram/replay microbenchmarks. The repository
|
||||||
also contains four isolated cargo-fuzz targets under `fuzz/` for direct
|
also contains four isolated cargo-fuzz targets under `fuzz/` for direct
|
||||||
packets, TLS frames, HTTP/3 parsing, and TOML parsing.
|
packets, TLS frames, HTTP/3 parsing, and TOML parsing.
|
||||||
|
- Package metadata declares SPDX `GPL-3.0-only`, and `LICENSE` contains the
|
||||||
|
complete GNU GPL version 3 text.
|
||||||
|
|
||||||
## Current worktree inventory
|
## Verification at 5767b90
|
||||||
|
|
||||||
Modified files include `Cargo.toml`, `Cargo.lock`, `README.md`,
|
The final release gates passed against the committed `5767b90` implementation
|
||||||
`docs/OPERATIONS.md`, both advanced/minimal server examples, both systemd
|
baseline before this documentation closeout:
|
||||||
templates, runtime/config/control/server/transport sources, and related tests.
|
|
||||||
Untracked assets include `benches/`, `fuzz/`, `docs/BENCHMARKS.md`,
|
|
||||||
`docs/FUZZING.md`, `tests/encrypted_runtime.rs`, and
|
|
||||||
`tests/server_capabilities.rs`. `docs/DEVELOPMENT_STATE.md` and
|
|
||||||
`docs/IMPLEMENTATION_CHECKLIST.md` are also modified by this reconciliation.
|
|
||||||
Treat these as shared worktree state; do not discard them with a cleanup
|
|
||||||
command.
|
|
||||||
|
|
||||||
## Verification performed in this worktree
|
|
||||||
|
|
||||||
The following checks passed:
|
|
||||||
|
|
||||||
- `cargo fmt --all -- --check`
|
- `cargo fmt --all -- --check`
|
||||||
- `cargo check --all-targets`
|
- `cargo check --all-targets`
|
||||||
- `cargo clippy --all-targets -- -D warnings`
|
- `cargo clippy --all-targets -- -D warnings`
|
||||||
- `cargo test --tests -- --test-threads=1` — 95 tests passed
|
- `cargo test --tests -- --test-threads=1` — 100 tests passed
|
||||||
- `cargo bench --bench protocol_transports --no-run`
|
|
||||||
- `cargo check --manifest-path fuzz/Cargo.toml`
|
- `cargo check --manifest-path fuzz/Cargo.toml`
|
||||||
|
- `cargo bench --bench protocol_transports --no-run`
|
||||||
|
|
||||||
`cargo-fuzz` is not installed on this host, so no fuzzing session or sanitizer
|
`cargo-fuzz` is not installed on this host, so no fuzzing session or sanitizer
|
||||||
run is claimed. No network/loopback benchmark was run; only deterministic
|
run is claimed. No network/loopback benchmark was run; only deterministic
|
||||||
benchmark compilation was checked. These gates ran against the shared dirty
|
benchmark compilation was checked. These are deferred optional release
|
||||||
worktree, not a clean checkout.
|
artifacts, not hidden implementation failures.
|
||||||
|
|
||||||
## Remaining work
|
## Deferred optional work
|
||||||
|
|
||||||
Required before an unconditional release sign-off:
|
- Run bounded cargo-fuzz smoke sessions and sanitizer checks when the
|
||||||
|
`cargo-fuzz` tool is available. The targets compile and have seed corpora.
|
||||||
|
- Run an explicitly opt-in network/loopback benchmark only when its host,
|
||||||
|
kernel, MTU, scheduler, loss, latency, and duration controls are recorded.
|
||||||
|
- Config and certificate/key reload remain unsupported. The control command
|
||||||
|
reports this explicitly; the specification makes certificate reload
|
||||||
|
desirable but optional and does not require full hot reload for the first
|
||||||
|
prototype.
|
||||||
|
- Produce measured benchmark and fuzz reports if a release process requires
|
||||||
|
them; the deterministic benchmark and compile-only fuzz evidence are
|
||||||
|
already part of the committed release.
|
||||||
|
|
||||||
1. Re-run the documented gates from the final clean checkout after concurrent
|
## Optional follow-up tasks
|
||||||
changes are integrated and reviewed.
|
|
||||||
2. Install/use `cargo-fuzz` and run bounded smoke sessions for each target;
|
|
||||||
retain the compile-only result as the current evidence until then.
|
|
||||||
3. Make and test a final practical datagram-size-cap decision. The benchmark
|
|
||||||
analysis recommends 1200 bytes, while configuration still permits the
|
|
||||||
larger protocol-bound ceiling.
|
|
||||||
|
|
||||||
Optional or explicitly out of scope for the current prototype:
|
1. Install `cargo-fuzz` and run the four documented bounded smoke sessions.
|
||||||
|
2. Capture a reproducible deterministic benchmark report, then separately
|
||||||
- Config and certificate/key reload remain unsupported; the control command
|
decide whether an environment-sensitive network benchmark is useful.
|
||||||
reports this explicitly. Spec language makes certificate reload desirable
|
3. Revisit reload scope only if the product promotes the optional
|
||||||
but optional and does not require full hot reload for the first milestone.
|
configuration/certificate reload behavior into a required feature.
|
||||||
- A network benchmark remains opt-in work because its results depend on host
|
|
||||||
scheduling, kernel buffers, MTU, and runtime conditions. The deterministic
|
|
||||||
microbenchmarks are present and compile.
|
|
||||||
- A measured benchmark report and sanitizer fuzz report are release artifacts,
|
|
||||||
not evidence currently available from this host.
|
|
||||||
|
|
||||||
## First three recovery/release tasks
|
|
||||||
|
|
||||||
1. Review and commit the shared implementation/docs/bench/fuzz work as one
|
|
||||||
coherent checkpoint, then repeat the full gates from that clean checkout.
|
|
||||||
2. Run the four cargo-fuzz targets for bounded smoke sessions and record the
|
|
||||||
toolchain/host results in the fuzzing notes.
|
|
||||||
3. Decide whether to enforce the documented 1200-byte practical cap or retain
|
|
||||||
the protocol-bound configurable ceiling, then add the corresponding
|
|
||||||
boundary evidence and update the acceptance checklist.
|
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
# Implementation and acceptance checklist
|
# Implementation and acceptance checklist
|
||||||
|
|
||||||
This is an evidence-based coordinator checklist. A checked item identifies
|
This evidence-based checklist records the implementation and license baseline
|
||||||
current code and tests; it is not a claim that the dirty worktree is an
|
at commit `5767b90` (`release: finalize wgcloak v1 under GPLv3`). The final
|
||||||
unconditionally released artifact. The latest evidence was collected on
|
documentation closeout is the only work that follows that baseline; the gates
|
||||||
2026-09-19 with serial integration tests.
|
below were run against the committed implementation. Package metadata and
|
||||||
|
`LICENSE` use SPDX `GPL-3.0-only`. Optional deferred work is called out
|
||||||
|
explicitly and is not treated as an unimplemented v1 transport.
|
||||||
|
|
||||||
## Milestones 1–6
|
## Milestones 1–6
|
||||||
|
|
||||||
@@ -31,12 +33,18 @@ unconditionally released artifact. The latest evidence was collected on
|
|||||||
`tests/tls_tcp.rs`, `tests/integration_transports.rs`, and TLS cases in
|
`tests/tls_tcp.rs`, `tests/integration_transports.rs`, and TLS cases in
|
||||||
`tests/encrypted_runtime.rs`; the TLS/TCP head-of-line tradeoff is documented
|
`tests/encrypted_runtime.rs`; the TLS/TCP head-of-line tradeoff is documented
|
||||||
in `docs/PROTOCOL.md`.
|
in `docs/PROTOCOL.md`.
|
||||||
- [ ] **6 — operational polish:** Control, validation, hardened systemd units,
|
- [x] **6 — operational polish:** Control, validation, hardened systemd units,
|
||||||
capability guidance, deterministic benchmark assets, and fuzz targets are
|
capability guidance, deterministic benchmark assets, fuzz targets, and
|
||||||
present (`src/control.rs`, `tests/control.rs`, `packaging/systemd/`,
|
installation documentation are present (`src/control.rs`, `tests/control.rs`,
|
||||||
`benches/`, `fuzz/`). Leave this milestone open until final clean-checkout
|
`packaging/systemd/`, `benches/`, `fuzz/`, `README.md`). The configured
|
||||||
gates, bounded cargo-fuzz runs, and the practical datagram cap decision are
|
default is 1,200 bytes and the validated project ceiling is 16,384 bytes.
|
||||||
recorded. Config/certificate reload remains explicitly unsupported.
|
Oversized-datagram metrics remain visible in aggregate status/statistics;
|
||||||
|
`src/server/mod.rs::record_transport_drop` and
|
||||||
|
`oversized_transport_error_is_counted_once` cover the latest repaired
|
||||||
|
boundary accounting.
|
||||||
|
Config/certificate reload remains explicitly unsupported; cargo-fuzz smoke
|
||||||
|
execution and environment-sensitive network benchmarking are optional
|
||||||
|
deferred validation artifacts.
|
||||||
|
|
||||||
## v1 completion criteria (spec §89)
|
## v1 completion criteria (spec §89)
|
||||||
|
|
||||||
@@ -73,8 +81,8 @@ unconditionally released artifact. The latest evidence was collected on
|
|||||||
capability — `User=wgcloak`, hardening, and commented narrow
|
capability — `User=wgcloak`, hardening, and commented narrow
|
||||||
`CAP_NET_BIND_SERVICE` guidance in both `packaging/systemd/*.service` files.
|
`CAP_NET_BIND_SERVICE` guidance in both `packaging/systemd/*.service` files.
|
||||||
- [x] 14. TOML configuration is clearly validated — `src/config.rs` tests and
|
- [x] 14. TOML configuration is clearly validated — `src/config.rs` tests and
|
||||||
`tests/server_capabilities.rs` cover role, transport, listener, and datagram
|
`tests/server_capabilities.rs` cover role, transport, listener, and the
|
||||||
boundaries.
|
1,200-default/16,384-ceiling datagram boundaries.
|
||||||
- [x] 15. Meaningful status and statistics are available — `src/control.rs`,
|
- [x] 15. Meaningful status and statistics are available — `src/control.rs`,
|
||||||
`tests/control.rs`, `tests/runtime_lifecycle.rs`, and aggregate-stat tests in
|
`tests/control.rs`, `tests/runtime_lifecycle.rs`, and aggregate-stat tests in
|
||||||
`tests/http3_runtime.rs`.
|
`tests/http3_runtime.rs`.
|
||||||
@@ -95,14 +103,15 @@ unconditionally released artifact. The latest evidence was collected on
|
|||||||
- [x] Fuzz targets exist for direct packets, TLS frames, HTTP/3 parsing, and
|
- [x] Fuzz targets exist for direct packets, TLS frames, HTTP/3 parsing, and
|
||||||
TOML parsing, and `cargo check --manifest-path fuzz/Cargo.toml` passes.
|
TOML parsing, and `cargo check --manifest-path fuzz/Cargo.toml` passes.
|
||||||
No fuzzing execution or sanitizer result is claimed because `cargo-fuzz` is
|
No fuzzing execution or sanitizer result is claimed because `cargo-fuzz` is
|
||||||
not installed on the current host.
|
not installed on the current host; this is optional deferred validation.
|
||||||
- [ ] `cargo test`, formatting, linting, and documented integration/bench
|
- [x] Release gates passed against the committed `5767b90` implementation
|
||||||
commands pass from a clean checkout. Current dirty-worktree evidence is:
|
baseline before this documentation closeout: `cargo fmt --all
|
||||||
`cargo fmt --all -- --check`, `cargo check --all-targets`, strict all-target
|
-- --check`, `cargo check --all-targets`, strict all-target Clippy,
|
||||||
Clippy, serial `cargo test --tests -- --test-threads=1` (95 passed), and
|
`cargo test --tests -- --test-threads=1` (100 passed),
|
||||||
|
`cargo check --manifest-path fuzz/Cargo.toml`, and
|
||||||
`cargo bench --bench protocol_transports --no-run`.
|
`cargo bench --bench protocol_transports --no-run`.
|
||||||
- [x] Review confirms no payload/secret logging, no unsafe privilege grant,
|
- [x] Review confirms no payload/secret logging, no unsafe privilege grant,
|
||||||
and no accidental WireGuard/routing/firewall coupling. Evidence:
|
and no accidental WireGuard/routing/firewall coupling. Evidence:
|
||||||
`docs/SECURITY.md`, hardened systemd templates, source audit, and the
|
`docs/SECURITY.md`, hardened systemd templates, source audit, and the
|
||||||
authentication/control/secret-file tests. This review does not waive the
|
authentication/control/secret-file tests. Config/certificate reload remains
|
||||||
clean-checkout and fuzz-execution items above.
|
an explicit unsupported optional feature.
|
||||||
Reference in new issue
Block a user