Skip to content

Commit ab02c4f

Browse files
committed
Prepare Fluxheim 1.7.12 release
1 parent 8c30896 commit ab02c4f

8 files changed

Lines changed: 42 additions & 10 deletions

File tree

.containerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.git
22
.cargo
33
target
4+
**/target
45
docs
56
examples/public
67
*.log

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Fluxheim follows semantic versioning once `1.0.0` is released. Before `1.0.0`,
77
minor versions may still change configuration shape, feature names, and runtime
88
behavior when the change improves security or project direction.
99

10-
## 1.7.12 - Unreleased
10+
## 1.7.12 - 2026-07-15
1111

1212
### Added
1313

@@ -75,6 +75,11 @@ behavior when the change improves security or project direction.
7575
discovery state.
7676
- Bound persisted self-healing state to 64 KiB and its variable diagnostics to
7777
4 KiB without control characters, using the same limit for reads and writes.
78+
- Create snapshot directories relative to a no-symlink parent directory handle
79+
so concurrent path replacement cannot redirect the creation operation.
80+
- Grow fragmented unknown-length HTTP/2 request bodies geometrically while
81+
charging both the retained and replacement allocations, preventing repeated
82+
exact-size copies from creating quadratic work.
7883

7984
## 1.7.11 - 2026-07-14
8085

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -503,8 +503,9 @@ build and execute the OpenSSL-FIPS and rustls/AWS-LC-FIPS profiles.
503503
capture provider, toolchain, dependency, binary, and image evidence. They are
504504
not published FIPS images or a claim that Fluxheim itself is FIPS validated.
505505
The release also makes native request/static buffering admission effective
506-
before allocation and completes encrypted-cache root separation, opaque HMAC
507-
identities, fail-closed counter state, and the one-time legacy cold migration.
506+
before allocation, keeps fragmented HTTP/2 body growth logarithmic, and
507+
completes encrypted-cache root separation, opaque HMAC identities,
508+
fail-closed counter state, and the one-time legacy cold migration.
508509

509510
Detailed cache behavior, config examples, operational limits, and smoke-test
510511
coverage are documented in [Cache Backends](docs/cache-backends.md),

docs/modularity-exceptions.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,21 @@ split destinations; new functionality must not use them as precedent.
4343
| `crates/fluxheim-server/src/native_http1_host_router.rs` | 545 | Trusted-client GeoIP context and Wasm policy construction expanded the central host-router assembly boundary. | Move GeoIP/Wasm policy assembly into a dedicated router policy builder. |
4444
| `crates/fluxheim-server/src/native_http1_host_router_tests.rs` | 516 | Host-router tests now cover trusted-proxy GeoIP and Wasm policy wiring alongside base routing. | Split GeoIP and Wasm construction regressions into focused test modules. |
4545
| `src/cli.rs` | 531 | Snapshot command dispatch and validated runtime loading remain together in the root CLI adapter. | Move snapshot subcommand execution into a dedicated CLI snapshot module. |
46+
47+
The following files crossed the target during the final `1.7.12` native
48+
buffer, cache, static-response, HTTP/2, and snapshot hardening passes. The
49+
security fixes and their regression coverage are retained for release; these
50+
modules must be split before their next feature expansion in the `1.8` line.
51+
52+
| File | Baseline lines | Reason | Split target |
53+
| --- | ---: | --- | --- |
54+
| `crates/fluxheim-server/src/native_http1_cache.rs` | 538 | The disk-cache facade now coordinates stricter encrypted-root and storage-bin state without weakening the existing internal module boundary. | Move disk-cache construction and capability checks into `native_http1_cache_backend` or a focused facade-support module. |
55+
| `crates/fluxheim-server/src/native_http1_cache_encryption.rs` | 1134 | Root separation, durable nonce state, migration, bounded secret input, and encrypted-envelope tests landed together during the final cache audit. | Split root identity/state persistence, envelope encoding, and provider/key loading into focused encryption submodules; keep tests in separate files. |
56+
| `crates/fluxheim-server/src/native_http1_route_proxy_tests/cache_storage.rs` | 516 | Live route-cache storage coverage now includes filesystem, storage-bin, encrypted, and OpenBao paths. | Split encrypted/OpenBao storage fixtures from plain filesystem and storage-bin tests. |
57+
| `crates/fluxheim-server/src/native_http1_static_web.rs` | 656 | Static response admission and cache-retention accounting expanded the central static dispatcher. | Move memory-cache state and admission helpers into a focused `native_http1_static_web/cache.rs` module. |
58+
| `crates/fluxheim-server/src/native_http1_tests.rs` | 637 | Native HTTP/1 listener tests now include process-wide body admission and retained-owner lifetime coverage. | Split body-budget/lifetime tests from listener framing, context, and takeover tests. |
59+
| `crates/fluxheim-server/src/native_http2_stack.rs` | 518 | Secure geometric request-body growth and temporary-overlap admission moved the protocol stack just above the limit. | Move request validation and body draining into focused HTTP/2 request modules. |
60+
| `crates/fluxheim-server/src/native_http2_tests.rs` | 774 | HTTP/2 listener coverage combines framing, flow control, timeout, transport lifetime, and body-admission regressions. | Split request-body/admission tests from connection, response, and transport-lifetime tests. |
61+
| `crates/fluxheim-snapshot/src/operations_tests.rs` | 548 | Snapshot transaction, recovery, self-healing, and filesystem-hardening cases share one operations fixture. | Split recovery/self-healing tests from create, diff, prune, and rollback operation tests. |
62+
| `crates/fluxheim-snapshot/src/store.rs` | 511 | Store admission, transaction publication, and test-module declarations now sit just above the target after bounded snapshot serialization. | Move transaction-file publication helpers into `store_fs` and keep the store API focused on orchestration. |
63+
| `crates/fluxheim-snapshot/src/store_tests.rs` | 564 | Store tests now include private-directory creation and no-follow metadata regressions alongside capacity and runtime-state cases. | Split filesystem-mode/path tests from capacity, rollback, and runtime-state tests. |

fuzz/Cargo.lock

Lines changed: 8 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packaging/rpm/fluxheim.spec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ fi
164164
behavior with live native listener tests.
165165
- Add pinned OpenSSL-FIPS and rustls/AWS-LC-FIPS evidence environments with live
166166
downstream/upstream TLS and fail-closed policy proof.
167+
- Harden request-body admission, fragmented HTTP/2 growth, encrypted-cache
168+
state, and snapshot filesystem operations.
167169

168170
* Tue Jul 14 2026 Fluxheim Maintainers <1921261+eldryoth@users.noreply.github.com> - 1.7.11-1
169171
- Start bounded native listener draining as the first zero-downtime upgrade

scripts/build_fluxheim_rpm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def parse_args() -> argparse.Namespace:
5252
"version_tag",
5353
nargs="?",
5454
default="latest",
55-
help="Fluxheim tag version, for example 1.7.11, v1.7.11, or latest",
55+
help="Fluxheim tag version, for example 1.7.12, v1.7.12, or latest",
5656
)
5757
parser.add_argument(
5858
"build_type",

scripts/load_smoke_1_0.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ TMP_DIR=$(mktemp -d "$SMOKE_TMP_ROOT/fluxheim-1-0-load-smoke.XXXXXX")
77
KEEP_LOGS=${FLUXHEIM_LOAD_KEEP_LOGS:-0}
88
BUILD_RELEASE=${FLUXHEIM_LOAD_BUILD:-1}
99
DURATION=${FLUXHEIM_LOAD_DURATION:-15s}
10-
CONCURRENCY=${FLUXHEIM_LOAD_CONCURRENCY:-64}
10+
# Match the native static-file blocking-work ceiling. Higher values intentionally
11+
# exercise load shedding and can produce bounded 503 responses.
12+
CONCURRENCY=${FLUXHEIM_LOAD_CONCURRENCY:-8}
1113
TIMEOUT=${FLUXHEIM_LOAD_TIMEOUT:-5}
1214

1315
if ! command -v hey >/dev/null 2>&1; then

0 commit comments

Comments
 (0)