VAL27 — Relay Proof Report Generator¶
Audience: engineering leads, product managers, and external reviewers who need a consolidated, evidence-backed relay reliability assessment.
VAL27 is a report generator, not a test runner. It auto-discovers the latest evidence directories from five completed relay validation runs (VAL19–VAL23) and optionally incorporates VAL24 soak results, producing a single relay proof report with explicit readiness conclusions and clearly labelled beta claims.
1. Scope¶
VAL27 consolidates evidence from:
Slice |
Name |
What it proves |
|---|---|---|
VAL19 |
Relay Impairment Validation |
Outage, bandwidth, latency, and cutoff handling via TCP impairment proxy |
VAL20 |
Relay Throughput Benchmark |
segs/sec and bytes/sec across 5 load tiers (warmup → constrained 1 Mbps) |
VAL21 |
Queue Depth + Overflow |
Deep drain (200 segments), LRU eviction accounting, relay-status accuracy |
VAL22 |
Deadletter Workflow |
Group-R recovery rate = 1.000, Group-U re-deadletter, BoltDB retention after SIGTERM |
VAL23 |
Bandwidth Management |
Unlimited / rate-only / quota-only / hot-reload; counter accuracy; unit-test daily reset |
VAL24 |
30-Day Soak (optional) |
Gate D: rounds ≥ 1,440, clean_delivery_rate ≥ 0.990, retry_recovery_rate ≥ 0.990, loss = 0 |
VAL24 is optional. Its absence does not block Design Partner readiness — it is the Gate for the GA claim only.
Branch rule: coverage by existing runner¶
Existing asset |
Coverage |
|---|---|
|
VAL24 30-day soak only — per-round aggregation, no cross-VAL proof |
|
Point-in-time deadletter lab; not the same domain as VAL19–VAL23 |
|
Runs only audit/rollout/HA slices; does not include VAL19–VAL23 |
New aggregator required. No existing script reads and combines VAL19–VAL23 (+ optional VAL24) into a single relay proof artifact.
Architectural note: standalone evidence directories¶
VAL19–VAL23 runners are not slices of run_cli_audit_lab.sh. Each produces
its own dated evidence directory under evidence/. VAL27 auto-discovers the
latest matching directory for each VAL using Python glob sorted by mtime.
Out of scope¶
Multi-peer relay (all tests use a single accumulating peer)
BoltDB crash-consistency on power failure (graceful SIGTERM only)
Concurrent edged processes sharing relay state
WAN-latency impairment or inter-DC topology
Production-representative hardware benchmarking
24-hour live daily-quota reset (validated by unit test only — see §4)
2. Evidence Structure¶
VAL27 auto-discovers evidence under EVIDENCE_ROOT (default: evidence/):
VAL |
Directory pattern |
Report file |
|---|---|---|
VAL19 |
|
|
VAL20 |
|
|
VAL21 |
|
|
VAL22 |
|
|
VAL23 |
|
|
VAL24 soak |
|
|
The most recently modified directory for each pattern is used. If a directory
is missing or its report does not match the expected schema, the slice is
reported as MISSING in the coverage table without aborting.
For the core relay readiness verdict, VAL27 also requires VAL19–VAL23 to come from one coherent validation campaign. The generator checks the mtimes of the five discovered core report files and requires them to fall within a single 7-day window before issuing a Design Partner or GA readiness conclusion. VAL24 is excluded from that window because it is intentionally a long-running soak.
3. Beta-Marked Claims¶
The following relay claims have known limitations that must be resolved before
the GA or Public Production claim is made. They are labelled ★ BETA in the
report output and recorded in the JSON artifact under beta_claims.
Claim |
Beta reason |
Resolution path |
|---|---|---|
Throughput figures (VAL20) |
Single-host local runs; production hardware differs |
Rerun on production-representative hardware; set hard thresholds |
Bandwidth daily reset (VAL23 S-E) |
Validated by injected-clock unit test only |
Run a live 24-hour lab OR accept unit-test coverage as approved exception |
Impairment throughput (VAL19) |
Informational proxy stats; no hard threshold |
Define and measure SLA-grade throughput targets under impairment |
Relay 30-day soak (VAL24) |
Beta only until Gate D passes |
Run and complete VAL24 soak |
4. Metric Definitions and Targets¶
Network Scenarios (VAL19)¶
Scenario |
Expected outcome |
Threshold |
|---|---|---|
Outage (TCP refused) |
All segments → DEADLETTER within ~10 s (max_retry=3) |
Deterministic (no threshold) |
Bandwidth 1 Mbps |
Segments delivered (delivery > throttled path) |
Informational ★ BETA |
Bandwidth 10 Mbps |
Segments delivered faster than 1 Mbps |
Informational ★ BETA |
Latency 200 ms |
Delivery confirmed; elapsed observable |
dial_timeout=5 s / ack_timeout=5 s |
Latency 500 ms |
Delivery confirmed; elapsed observable |
dial_timeout=5 s / ack_timeout=5 s |
Cutoff (TCP RST mid-stream) |
Relay retry path triggered → delivery on clean proxy |
No explicit ms threshold |
Throughput (VAL20)¶
Tier |
Load |
Target |
|---|---|---|
T1 warmup |
1 × 64 B |
zero loss [target] |
T2 baseline |
10 × 64 B |
zero loss [target]; sps ≥ T1 sps (sanity) |
T3 scheduler |
100 × 64 B |
zero loss [target] |
T4 large |
10 × 128 KB |
zero loss [target] |
T5 constrained |
10 × 128 KB, 1 Mbps proxy |
zero loss [target]; constrained_bps > 0 |
No hard segs/sec or bytes/sec floor is set in VAL20. The targets are zero-loss correctness and queue-monotonicity. Throughput figures are informational ★ BETA until recalibrated on production hardware.
Message-Loss Accounting (VAL21)¶
Invariant |
Check |
|---|---|
S-A: 200 × 64 B all delivered (no ceiling) |
|
S-B: delivered + deadletter == 10 (LRU eviction accounting) |
|
S-C: relay-status accuracy |
|
Deadletter/Retry (VAL22)¶
Metric |
Target |
|---|---|
Group R (clean proxy) retry rate |
= 1.000 [target] |
Group U (outage proxy) re-deadletter |
= 4 (all re-deadletter after max_retry=3 exhausted) |
BoltDB retention across SIGTERM+restart |
All entries survive [target] |
Aggregate retry rate |
50% (intentional — Group U always fails under outage) |
Bandwidth Management (VAL23)¶
Scenario |
Expected delivered |
Counter check |
|---|---|---|
S-A unlimited |
4/4 |
unlimited = true |
S-B rate-only (64 B/s) |
5/5 |
throttle_count ≥ 4, quota_drop_count = 0 |
S-C quota-only (128 B daily) |
2/6 (first 2 exhaust quota) |
quota_drop_count ≥ 4 |
S-D hot-reload (rate 8→0) |
6/6 (all after unlimited applied live) |
— |
S-E daily reset |
Unit test PASS |
TestBandwidthLimiter_DailyQuota_ResetsAfter24h ★ BETA |
VAL24 Soak Gate D (GA gate)¶
Criterion |
Target |
|---|---|
Total rounds |
≥ 1,440 |
Clean delivery rate |
≥ 0.990 |
Retry recovery rate |
≥ 0.990 (only evaluated when total_retried > 0) |
Silent loss |
= 0 |
5. Readiness Level Definitions¶
Relay Design Partner Ready¶
Criteria (all must hold):
VAL19 all 10 checks pass
VAL20 all 10 checks pass
VAL21 all 10 checks pass
VAL22 all 10 checks pass
VAL23 all 10 checks pass
Zero silent loss proven by explicit accounting: VAL21
sa.delivered == 200andsb.delivered + sb.deadletter == sb.accounted == 10, plus VAL22group_r_delivered == 4andgroup_u_redeadlettered == 4VAL20 T2 baseline zero-loss
VAL22 Group R retry rate = 1.000
VAL23 all bandwidth scenarios pass
VAL19–VAL23 evidence files fall within one 7-day campaign window
VAL24 soak is NOT required for Design Partner readiness.
Relay GA Ready¶
Design Partner criteria PLUS:
VAL24 Gate D pass: rounds ≥ 1,440, clean_delivery_rate ≥ 0.990, retry_recovery_rate ≥ 0.990, loss = 0
Multi-peer relay validation (at least basic 2-peer delivery + isolation)
VAL20 throughput recalibrated on production-representative hardware
VAL23 S-E daily reset validated with live 24-hour run or approved exception
Relay Public Production Claim¶
GA criteria PLUS:
BoltDB crash-consistency on power failure
Multi-peer relay soaks with message isolation proof
Production-grade observability: queue depth alerting, deadletter paging, bandwidth quota depletion notification
6. 10-Check Matrix¶
ID |
When |
Description |
Pass criterion |
|---|---|---|---|
VAL27-01 |
Setup |
VAL19 impairment report found and all 10 checks pass |
|
VAL27-02 |
Setup |
VAL20 throughput report found and all 10 checks pass |
|
VAL27-03 |
Setup |
VAL21 overflow report found and all 10 checks pass |
|
VAL27-04 |
Setup |
VAL22 deadletter workflow report found and all 10 checks pass |
|
VAL27-05 |
Setup |
VAL23 bandwidth report found and all 10 checks pass |
|
VAL27-06 |
Metric |
Zero message loss: VAL21 accounting exact + VAL22 zero silent loss |
|
VAL27-07 |
Metric |
Throughput T2 baseline (10×64B) zero loss |
|
VAL27-08 |
Metric |
Deadletter retry Group R rate = 1.000 |
|
VAL27-09 |
Metric |
All bandwidth scenarios deliver correct segments |
|
VAL27-10 |
Summary |
Relay design partner readiness — all above pass and evidence coherent |
VAL27-01..09 all PASS + VAL19–VAL23 mtimes within one 7-day campaign window |
VAL27-SOAK |
GA gate |
VAL24 30-day soak Gate D (not counted in PASS/FAIL total) |
|
7. Run the Report¶
Prerequisites¶
Run each standalone relay validation runner (Docker not required for VAL19–VAL23):
export GOROOT=/home/ubuntu/.local/go1.25.7
export PATH="$GOROOT/bin:$PATH"
export GOTOOLCHAIN=local
# Run each relay validation (each creates its own dated evidence dir)
bash scripts/labs/run_relay_impairment_val19_lab.sh
bash scripts/labs/run_relay_throughput_val20_lab.sh
bash scripts/labs/run_relay_overflow_val21_lab.sh
bash scripts/labs/run_relay_deadletter_val22_lab.sh
bash scripts/labs/run_relay_bandwidth_val23_lab.sh
# VAL24 soak (optional, needed for GA claim):
bash scripts/labs/run_soak_val24_setup.sh evidence/val24-relay-soak-$(date +%F)
# ... wait 30 days for Gate D ...
bash scripts/labs/run_soak_val24_report.sh evidence/val24-relay-soak-YYYY-MM-DD final
Generate the proof report¶
bash scripts/labs/run_relay_proof_report_val27.sh evidence/
Output files¶
File |
Contents |
|---|---|
stdout |
Human-readable relay proof report |
|
Same content as stdout |
|
Machine-readable JSON with beta_claims array |
8. Tooling¶
File |
Role |
|---|---|
|
VAL27 relay proof report generator |
|
VAL19 — source of impairment evidence |
|
VAL20 — source of throughput evidence |
|
VAL21 — source of overflow evidence |
|
VAL22 — source of deadletter evidence |
|
VAL23 — source of bandwidth evidence |
|
VAL24 soak setup (optional GA gate) |
|
VAL24 soak report (inputs to VAL27) |
|
VAL24 formal plan |