T17 revised acceptance harness verification

Implemented on a8c376f0, verified on 2026-10-18. This applies the approved concurrent admission criteria. Only benchmark/reporting code, tests, launch scripts and documentation change. Production execution, protobuf, memory protection and container limits are unchanged.

Report contract

Revision 2026-10-18-v1 separates performance, overload and recovery. Four timed variants remain: raw full-sort/top-k and composed queries at 1/8 callers. Any warmup or timed query failure invalidates the timed cohort. Every response is retained and checked exactly after timing/profiling stop, rather than checking only six complete responses. Required sample counts, work metrics, allocations, profiles and cleanup evidence remain enforced.

The timed runner requires DQB_T17_OVERLOAD_REPORT, validates the complete artifact and records its SHA-256. The merged JSON and Markdown retain the component verdicts, revision and evidence reference on each timed variant. The 1,024-row overload artifact is an explicit shared admission reference for both timed cardinalities, not a claimed 32,768-row overload measurement.

Historical five-variant and partial_known_32_blocked reports retain their old validation rules. New runs reject DQB_T17_BLOCKED_32_REPORT; old rejection-only proof cannot establish revised recovery acceptance. Mixed historical/revised matrices, changed evidence, missing timed cohorts, incomplete responses and fabricated overload timing fields are rejected.

performance=pass establishes a complete, correct measurement cohort and its work/resource checks. It does not establish a five-repetition statistical result, full G1 compatibility acceptance, large-input throughput or historical T02 acceptance. Keeping every response also changes client retention from the original protocol; old/new protocol timings and allocations are not an unchanged-baseline comparison.

Overload and recovery

TestQLBT17Overload checks observed cgroup limits: four CPUs, 8 GiB RAM and zero additional swap. Both sort modes run 96 calls in three waves of 32 callers using the same three bindings. Each call must either return the exact oracle result or the specific native broadcast ResourceExhausted rejection. Other failures or partial results fail verification. After cleanup, all three bindings must succeed through the same cluster RPC without changing limits or restarting the cluster.

The actual fixed-container run passed in 11.08 seconds:

Sort mode Attempts Exact successes Capacity rejections Peak in flight Recovery queries
Top-k 96 94 2 32 3/3
Full sort 96 93 3 32 3/3

All recorded cleanup counters return to zero after overload and recovery. A separate deterministic probe uses the real protector, tracker and receive scope; it holds reservations until rejection, verifies rollback and transport ownership, then checks full release and a successful subsequent admission. It does not pin exactly 31 admissions as a permanent contract. This proves rejection even when RPC scheduling happens to admit all calls.

Evidence: .omx/t17-revised-overload.log and .omx/t17-revised-overload/t17-overload-1024.json.

Timed-path verification

One complete verification matrix used the prebuilt querymetrics executable in 4-CPU/8-GiB/no-extra-swap Docker, with independent processes for each cardinality. Every measured query succeeds and every response passes exact post-timing checks:

Input rows Full sort Top-k Composed, 1 caller Composed, 8 callers Total
1,024 100 100 96 96 392
32,768 20 20 96 96 232

All 624 timed calls pass, and all eight final report rows carry separate passing component verdicts. No rejected call contributes a timing/throughput sample. This single matrix verifies the harness, not a new performance improvement claim.

The first report merge dropped scenario-level acceptance metadata when flattening variants. TestQLBT17MergedReportPreservesAcceptance reproduced that defect before the fix. The fixed merger preserves the verdicts and evidence in JSON and Markdown. Only the untimed merge was rerun after this reporting fix; the original successful timing shards and profiles were preserved. Original and merge-binary digests are recorded separately in .omx/t17-revised-provenance.json.

Evidence: .omx/t17-revised-rpc.log, .omx/t17-revised-rpc/shards/, .omx/t17-revised-rpc/distributed-querybench.{json,md}, .omx/t17-revised-merge-red.log and .omx/t17-revised-merge-final.log.

Checks and remaining scope

The querybench package suites with and without querymetrics, focused T17 race checks, scoped lint, shell syntax checks and whitespace checks pass. The contract suite checks missing/changed evidence, unexpected errors, wrong results, leaked resources, incomplete recovery, missing observed limits, invented timing fields, legacy/revised protocol mixing and final-report propagation. Logs: .omx/t17-revised-final-unit-{normal,tagged}.log, .omx/t17-revised-final-race.log, .omx/t17-revised-final-lint-v2.log.

The revised overload/recovery contract has direct evidence. The separate 100k/1m successful RPC throughput, full compatibility performance comparisons and historical T02 acceptance gaps remain open. Spilling and retained-result sessions remain deferred. The implementation does not broaden the benchmark workload.

Subsequent benchmark campaign

The five-repetition campaign after commit 1179c97a passed all 3,120 timed RPCs. The separate 100k probe demonstrated bounded native input rejection and recovery; the 1m probe failed fixture readiness with a content mismatch and provides no throughput evidence. Both outcomes remain explicit.

The subsequent storage merge fix resolves the 1m readiness mismatch. The fixed probe verifies every row, then records bounded native input rejection and successful host-pruned recovery under unchanged limits.

Current acceptance disposition (2026-10-19)

The compatibility comparison and its separate 20-pair small-query confirmation complete the PR #1412 matrix follow-up. The large-input acceptance revision explicitly defers successful 100k/1m T17 owning-query throughput until the full cohort fits within the fixed memory limits. The earlier open-item descriptions above record the status at their measurement revisions. Their data and verdicts are preserved; rejected calls are not reclassified as successful performance. Historical T02 acceptance remains inconclusive/stopped. Spilling and session pagination remain deferred, and this documentation change adds no feature work.