@@ -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.
2930tests/gtc/parity_harness.sh
3031
31- # Subset for fast iteration
32+ # CLI subset for fast iteration
3233tests/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
3548tests/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 )
3952tests/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
4256The 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 `
4761the first time it's recorded.
4862
49- ## What is and is not exercised in GTC-0
63+ ## CLI cells ( GTC-0 scope)
5064
5165In: ` cli-segments-1 ` (legacy single-stream baseline),
5266` cli-segments-n ` (DAG range), ` cli-parallel-n ` (DAG batch),
5367byte-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