Skip to content

Commit 20efa08

Browse files
axpnetaeroftp[bot]claude
committed
merge(harness): extend GTC parity harness with GUI cells
Brings GTC-6 onto main: tests/gtc/parity_harness.sh gains a GUI suite driven by the gated integration_gtc_wan_segmented cargo test binary, with five new band-gated cells covering provider_download_file segmented downloads (SFTP/S3/FTP), AeroSync segmented downloads (sync_download_transfer), and cross-profile DAG transfers. Bands chosen 2026-05-20 (user-confirmed conservative profile): gui-single-sftp 2.0..5.0 gui-single-s3 1.8..5.0 gui-single-ftp 1.8..5.0 gui-sync-sftp 1.8..4.0 gui-cross-sftp-s3 2.5..5.0 New CLI flags: --suite cli|gui|all, --gui-only, --gui-cells LIST, --band KEY:F:C now accepts gui-* keys. Out of scope (documented in tests/gtc/README.md): FTP GUI batch path (no-double-pool invariant), rclone_crypt overlay, AeroVault overlay. Closes the GTC filone (GTC-0..GTC-6). Co-Authored-By: aeroftp[bot] <aeroftp[bot]@users.noreply.github.com> Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2 parents b9647b3 + bdc00a5 commit 20efa08

2 files changed

Lines changed: 301 additions & 31 deletions

File tree

tests/gtc/README.md

Lines changed: 65 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,32 @@ filone. See:
2525
## Usage
2626

2727
```bash
28-
# Default run: all five protocols, CLI surfaces only (GTC-0 scope)
28+
# Default: CLI surfaces only (back-compat). Five protocols, segments-1
29+
# / segments-n / parallel-n cells per protocol.
2930
tests/gtc/parity_harness.sh
3031

31-
# Subset for fast iteration
32+
# CLI subset for fast iteration
3233
tests/gtc/parity_harness.sh --protocols sftp,s3
3334

35+
# GUI surfaces only (cargo-test driven)
36+
tests/gtc/parity_harness.sh --suite gui
37+
# equivalent shortcut
38+
tests/gtc/parity_harness.sh --gui-only
39+
40+
# Full matrix: CLI + GUI in one run
41+
tests/gtc/parity_harness.sh --suite all
42+
43+
# Subset of GUI cells
44+
tests/gtc/parity_harness.sh --suite gui \
45+
--gui-cells gui-single-sftp,gui-cross-sftp-s3
46+
3447
# Dry-run: generate corpus, write plan, do not transfer
3548
tests/gtc/parity_harness.sh --dry-run
3649

37-
# Override band (per-protocol speedup floor/ceiling, picks the
38-
# tighter of spec vs flag)
50+
# Override band (per-protocol speedup floor/ceiling for CLI cells, OR
51+
# per-cell-key for GUI cells; repeatable)
3952
tests/gtc/parity_harness.sh --band sftp:2.0:5.0
53+
tests/gtc/parity_harness.sh --suite gui --band gui-single-sftp:2.2:4.5
4054
```
4155

4256
The run id is the UTC timestamp at start (`YYYYMMDDTHHMMSSZ`). Output
@@ -46,14 +60,55 @@ appended to
4660
`docs/dev/roadmap/APPENDIX-GUI-TRANSFER-CONVERGENCE/baselines/legacy-floor.csv`
4761
the first time it's recorded.
4862

49-
## What is and is not exercised in GTC-0
63+
## CLI cells (GTC-0 scope)
5064

5165
In: `cli-segments-1` (legacy single-stream baseline),
5266
`cli-segments-n` (DAG range), `cli-parallel-n` (DAG batch),
5367
byte-identity assertions, exit-code shape per CLI.
5468

55-
Out: `gui-single`/`gui-batch`/`gui-sync`/`gui-cross`. Those surfaces
56-
are still legacy per the pin and would just re-measure
57-
`cli-segments-1` while paying the Tauri IPC setup cost. They get
58-
added in GTC-1 as the first surface (Panel batch) actually starts
59-
using DAG.
69+
| protocol | floor | ceiling |
70+
|----------|-------|---------|
71+
| sftp | 1.5 | 6.0 |
72+
| ftp | 1.5 | 5.0 |
73+
| ftps | 1.3 | 5.0 |
74+
| s3 | 2.0 | 6.0 |
75+
| webdav | 1.3 | 4.0 |
76+
77+
## GUI cells (GTC-6, added 2026-05-20)
78+
79+
GUI surfaces don't run through `aeroftp-cli`: they're driven via the
80+
gated `integration_gtc_wan_segmented.rs` cargo test binary which
81+
exercises each GUI Tauri entry-point directly against the axpbuntu
82+
lab. The harness invokes the corresponding test fn, parses the
83+
single-line summary it emits on stderr, and produces one parity cell.
84+
85+
Test binary requirements (same as the cargo integration suite):
86+
- axpbuntu lab credentials in the vault (admin SFTP + FTP + S3/MinIO).
87+
- ~64 MiB free at `$TMPDIR` for the round-trip files.
88+
- WAN reachability to `49.13.171.110` (no firewall blocking SSH/FTP/S3).
89+
90+
| cell key | engine | protocol | floor | ceiling | rationale |
91+
|---------------------|-----------------------------------|-----------|-------|---------|-------------------------------------------------|
92+
| `gui-single-sftp` | `provider_download_file`+ segs | sftp | 2.0 | 5.0 | Empirical median 2.98x on axpbuntu, 64 MiB. |
93+
| `gui-single-s3` | `provider_download_file`+ segs | s3 (MinIO)| 1.8 | 5.0 | HttpClonePool overhead on small slices. |
94+
| `gui-single-ftp` | `provider_download_file`+ segs | ftp | 1.8 | 5.0 | FtpConnectionPool reuse + REST/RETR. |
95+
| `gui-sync-sftp` | `sync_download_transfer` (GTC-3) | sftp | 1.8 | 4.0 | AeroSync overlay narrows ceiling vs. raw. |
96+
| `gui-cross-sftp-s3` | `transfer_orchestrator::execute_batch` (GTC-4) | sftp -> s3 | 2.5 | 5.0 | DAG fan-out across two providers, 4x16 MiB. |
97+
98+
Bands are policy decisions taken 2026-05-20 (closure of GTC-5,
99+
user-confirmed conservative profile). They protect against:
100+
1. Regressions below the empirical median minus WAN jitter (floor).
101+
2. Anomalous "too good" runs from caching / fixture corruption (ceiling).
102+
103+
Override on the command line with `--band <cell-key>:<floor>:<ceiling>`.
104+
105+
### Out of GTC-6 scope
106+
107+
- `gui-batch-sftp` / `gui-batch-s3`: the FTP GUI batch path runs on
108+
`FtpDownloadExecutor`, not the `ProviderDownloadExecutor` that the
109+
segments engine targets (no-double-pool invariant). It would
110+
re-measure the legacy floor (0.9 .. 1.2x) and is excluded by design.
111+
- `rclone_crypt_*` downloads: full-buffer-in-memory path, doesn't
112+
touch the segmented helper. Wiring requires a separate slice that
113+
also has to handle decrypt streaming.
114+
- AeroVault overlay extract: same family as crypt, same exclusion.

0 commit comments

Comments
 (0)