This commit is contained in:
Mateusz Gruszczyński committed 2026-10-14 21:36:19 +02:00
1 parent c41d1e00a2
commit 6987b3ce33
98 files changed
+146 -10827

No files matched your search

+4 -4
View File
@@ -42,7 +42,7 @@ committed document at startup; this is not one cross-memory/SQLite transaction.
### Rust source organization
Production Rust modules are kept as small responsibility-oriented files, with a
**500-line limit** enforced by `tools/checks/rust_module_contracts.py`. Unit and
**500-line engineering limit** for production modules. Unit and
integration test files are explicitly exempt: related tests may live together in
large `tests.rs` files rather than arbitrary numbered fragments. Large logical modules use a thin facade (`config.rs`, `docker.rs`,
`server.rs`, `runtime.rs`, `balance.rs`, `prometheus.rs`, and similar) plus files in a
@@ -52,9 +52,9 @@ submodules for configuration, filesystem confinement, responses, routing, FastCG
Unit-test implementations are not embedded in production source files. They live in
`tests.rs` or `tests/` files and are included or declared only behind `#[cfg(test)]`.
Source-level CI also checks `include!` targets, balanced split fragments and dangling
attributes/doc comments. This prevents a file boundary from separating `#[derive]`,
`#[test]` or documentation from the Rust item it belongs to.
Keep `include!` targets, split fragments and attributes/doc comments alongside
the items they describe. After removal of the old source-check scripts, review
these invariants in code review and verify compilability with `./dev.sh check`.
Docker discovery is an optional provider boundary implemented through the standalone
`docker-agent/`; the RustProxy process never opens the Docker socket. Cloudflare Tunnel
+5 -10
View File
@@ -28,20 +28,15 @@ with real-runtime measurements rather than assuming either explanation.
## Source/synthetic verification
```sh
python3 tools/checks/memory_contracts.py
python3 tools/checks/high_traffic_memory_model.py --http-requests 10000
./dev.sh check
./dev.sh test
# Perform separate real-runtime load and RSS measurements on staging.
```
The offline test replays 300,000 distinct PURGE identities over six periods.
It verifies the old cumulative model retains 50k/100k/150k/200k/250k/300k
metadata keys whereas the revised epoch-based model holds one key after each
operation. This is a **cardinality model**, not a Rust heap measurement. It also
sends 10,000 HTTP GETs across 24 concurrent persistent connections and 1,000
paths to a **Python test peer** to validate the load driver (the default quick
`./dev.sh test` run sends 2,000 of those requests). The Rust regression
for 512 distinct purges is executed only if `cargo test` runs successfully.
The old Python cardinality model and protocol-peer load driver were removed
with `tools/checks/`. They were synthetic tests, not proof of RustProxy memory
bounds. `./dev.sh test` now runs only the Rust suite; runtime memory behavior
must still be verified by sustained staging traffic and RSS tracking.
## Real RustProxy staging traffic and RSS
+1 -1
View File
@@ -414,7 +414,7 @@ Managed paths now include build.rs, langs, deploy and make_zip.py. Extra *.json
language packs from the installed langs directory are copied into the new tree
when the new distribution does not contain the same filename. Shipped packs are
updated, with old bytes preserved in the source backup. Invalid custom packs can
correctly block a build; review them with tools/checks/langs_check.py. No symlinked
correctly block a build; review their JSON syntax and metadata before building. No symlinked
language pack is followed. The updater never copies a database from the package.
The old lockfile is preserved in the managed source backup and a new dependency
+8
View File
@@ -52,6 +52,14 @@ change does not alter server polling, proxy routing or backend metrics.
**Refresh now**, **Arrange Overview**, **Unlock layout**, **Visual Overview editor** and **Show all cards** inherit the same Normal/Compact button size rules as other buttons. Responsive placement still adapts to narrow screens, but no independent font-size, padding or height override applies. Dashboard density more clearly adjusts numeric tile sizing, inline chart height and the padding/title size of non-table Overview panels; the common tile gutters are unchanged. Button style and dashboard density remain independent per-account preferences.
### Overview header actions (0.32.8)
On the Overview page, **Traffic, in focus.** remains on the left and actions
align to the right on the same row when space permits. Buttons wrap to the right
on very narrow displays instead of being compressed into equal-width columns.
The existing Normal/Compact button preferences, editor confirmation actions,
layout locking and account-specific saved card layout are unchanged.
## Refresh preferences (0.31.0)
**Settings -> Appearance -> Data refresh** saves an additional `refresh` object in the existing `admin_preferences` document for the signed-in account. It does not modify proxy configuration or create any migration. Older documents, including partially populated `refresh` objects, use defaults. Browser and server enforce exact allowed values:
+51
View File
@@ -0,0 +1,51 @@
# RustProxy 0.32.8 - verification report
## Scope
UI-only Overview header/editor button alignment, deletion of the complete
`tools/checks/` source directory, retained source-upgrade preflight and the
0.32.8 version bump. No proxy request path, backend behavior, preferences
schema or dashboard JavaScript event handlers were changed.
## Checks performed
- **PASS** - Chromium headless checked the actual Overview HTML and CSS at
viewport widths 320, 360, 375, 390, 430, 480, 600, 700, 768, 1024 and
1440 px, with Normal and Compact button styles and four visibility/editing
scenarios: 88 combinations. Title stays left, available actions align right;
no overlapping buttons or page/header horizontal overflow was observed.
This is a layout fixture, not a running API/backend acceptance test.
- **PASS** - All Overview and editor controls use the original semantic
`quiet`, `outline` and `primary` classes. No CSS class names were added.
Removed obsolete dedicated button selectors. The Overview/core/refresh/layout
JavaScript files are byte-identical to 0.32.7, so existing event handling,
save/cancel and editor locking implementations were not changed.
- **PASS** - Before removing the old QA directory, the 0.32.7 UI simulation
suites `dashboard_layout_editor_0323_ui_test.mjs` and
`dashboard_inline_layout_0323_ui_test.mjs` passed. The original
`appearance_density_buttons_0327.py` source check also passed. These tests
exercised simulated UI behavior, not a live RustProxy server.
- **PASS** - `python3 scripts/preflight.py`, `./dev.sh doctor`,
`./dev.sh repair`, shell syntax of `dev.sh` and the dependency-resolution
script, all bundled language JSON files, version consistency and source
class/handler comparisons.
- **PASS** - Source-upgrade rehearsal from the supplied 0.32.7 release tree
to 0.32.8 removed `tools/checks/` from the installed working tree, retained
the previous sources under `.upgrade-backup/`, preserved `.env` and left
`./dev.sh doctor` working. No live server/database was used in this rehearsal.
- **PASS** - All eight bundled SQL migration scripts applied twice in an
in-memory SQLite database; `PRAGMA integrity_check` returned `ok`.
## Limits and outstanding acceptance
- Rust/Cargo was **not available** in the verification environment, so
`./dev.sh check`, `./dev.sh test`, binary build and live proxy/UI regression
checks were not run. These remain required before production acceptance.
- An unrelated legacy `dashboard_startup_0310_ui_test.mjs` assertion was already
failing on the supplied 0.32.7 tree due to its expected
`prefers-reduced-motion: reduce` CSS rule being absent. That test was removed
with `tools/checks/`, not claimed as passing or fixed by this patch.
- The intentionally removed `tools/checks/` suites are no longer executed by
`dev.sh`; `./dev.sh test` now runs Cargo validation and the Rust test suite.
Independent API, stress, browser and real-runtime acceptance tests must be
run externally when required.