Skip to content

Commit bdc2dcf

Browse files
committed
Merge FEATURE-ci-quic-fixture-integral-types: Fix native fixture integer deduction
2 parents 54fa9dd + aebfe81 commit bdc2dcf

3 files changed

Lines changed: 91 additions & 2 deletions

File tree

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# FEATURE-ci-quic-fixture-integral-types: portable QUIC fixture max operands
2+
3+
Status: Implemented; scoped local and native Darwin compile checks pass. Caller validation and finalization pending.
4+
Base: exact local `v3` at `54fa9dd32572d7da7f4921a5735a4035908e96f0`.
5+
Plan: `.groundwork-plans/FEATURE-ci-quic-fixture-integral-types-plan.md` in the primary checkout.
6+
7+
## Goal and scope
8+
9+
Repair the two source-proved fixture `std::max` deduction failures: Darwin's
10+
`size_type` versus `uint64_t` in CRYPTO reconstruction and FreeBSD's `int64_t`
11+
versus `chrono::milliseconds::rep` in the interop poll timeout. Supply only
12+
explicit template types: `std::uint64_t` for the existing CRYPTO offset/end and
13+
`std::int64_t` matching the timeout's existing outer `std::min`.
14+
15+
## Action items
16+
17+
- [x] Read the accepted plan, literal primary journal and executor memory; use a
18+
fresh isolated Groundwork worktree from the exact local base.
19+
- [x] Verify RED against actual current native compiler logs: Darwin archive
20+
40196418221/job 121178275259 and FreeBSD package 40196409784/job 121178075715.
21+
- [x] Change only the two `std::max` template arguments. Preserve byte arithmetic,
22+
resize, copies, TLS assembly/checks and the existing ceil-millisecond timeout
23+
with lower zero / upper 1000 clamp and unchanged poll invocation.
24+
- [x] Compile both actual owning translation units with GNU; syntax-check both
25+
with existing real LLVM/libc++20 and private OpenSSL 3.5.9 provider headers.
26+
- [x] Run changed-file cpplint and `git diff --check`; retain exact commands,
27+
raw outputs and source/input hashes in the primary journal's `implementation/`.
28+
- [x] Execute the user-authorized single native mac compile-only proof: original
29+
owner RED once, then both repaired owning TUs GREEN, with actual CI
30+
OpenSSL 3.5.9 headers and native configuration retained from the verified ZIP.
31+
- [x] Caller Groundwork validation and local finalization.
32+
- [ ] Post-fix exact Darwin/FreeBSD CI proof (CI/v3 PR-owned; incomplete and
33+
not a local completion or merge gate).
34+
35+
## Verification and limits
36+
37+
Primary journal: `.debug/ci-quic-fixture-integral-types-b4ykc2x2/journal.md`.
38+
Evidence: `.debug/ci-quic-fixture-integral-types-b4ykc2x2/implementation/`.
39+
40+
The actual native CI compiler errors provide RED without a mirror typedef test.
41+
Local pre-change GNU endpoint compile passes; real LLVM/libc++20 rejects the
42+
actual endpoint line with the same conflicting `long` / `long long` types.
43+
The corrected owner baseline compiles in both local toolchains; this is not a
44+
Darwin reproduction. The initial owner commands lacked the normal test include
45+
path and failed to find `littletest.hpp`; corrected task-local include setup was
46+
retained and passed before editing. Initial `-Wextra` also emitted existing
47+
fixture initializer warnings; final commands use the repository's `-Wall`.
48+
49+
Post-change GNU compiles both owning TUs to objects, and LLVM 19.1.1 using real
50+
libc++20.1.8 headers syntax-checks both. All four return zero without warnings;
51+
cpplint and diff checks pass. Existing provider headers/configuration and build
52+
configuration were reused; no provider, core, SDK or bootstrap rebuild occurred.
53+
Linux compile results do not establish native Darwin/FreeBSD execution.
54+
55+
The separately authorized native compile-only proof uses `ssh mac`, macOS
56+
26.3.1 arm64, Homebrew clang/libc++ 22.1.8 and macOS SDK 26.5. The original
57+
54fa owner TU reproduces the exact line267 `unsigned long` / `unsigned long
58+
long` deduction failure once. Both repaired actual TUs from `cafb8055` then
59+
pass `-fsyntax-only` without warnings; no source expression changed further.
60+
This host differs from failing archive CI clang23/SDK15, so this proves native
61+
Darwin source compatibility in the recorded environment, not an exact CI pass.
62+
63+
Only 142 provider headers (about 2 MB) and the native TLS-on `config.h` were
64+
extracted from the verified existing macOS package-evidence ZIP, SHA256
65+
`471035241523fe7baf88f737385af6d674a94d78a6629a52103f834089a165de`.
66+
They are the actual CI OpenSSL 3.5.9 headers/configuration; Homebrew OpenSSL
67+
3.6.3 was not substituted. The source/header snapshot plus original owner
68+
was 3.8 MB transferred to the exclusively owned remote subdirectory
69+
`/tmp/libhttpserver-v3-repro.dxubki/compile-fixture-types` (canonical
70+
`/private/tmp/...`). No Linux-generated configuration was used remotely.
71+
Exact argv, monotonic durations, native compiler/SDK/header/source hashes,
72+
raw results and canonical paths are retained in `implementation/native-mac/`.
73+
No executable was linked or run and no provider/core/SDK rebuild occurred.
74+
Native FreeBSD postfix proof and the complete CI gates remain incomplete.
75+
76+
No test program or network probe was executed. No unrelated source/expression
77+
search, repair, broad suite, publication or diagnostic dispatch belongs here.
78+
Windows capture16 remains pending, zero executed. Closed kqueue25, exhausted
79+
epoll64, header/outbox/clock and Windows WSAPoll/post-summary unknowns are
80+
preserved. The new Mac HTTP2 startup deadline remains unassessed and is not
81+
attributed to preflight EACCES. Delayed Darwin five-plus-header approvals refer
82+
to the already closed 40055653509 batch, with all six executed once; no new
83+
native diagnostic budget is inferred.
84+
85+
Full Groundwork session `c653da50d15acba788d357185b3ad9e8` sealed PASS:
86+
one iteration, nine approvals, zero findings/fixes/unworked. All retained gate
87+
inputs/log hashes match; no unnecessary reruns. Native Mac original-owner RED
88+
and both repaired-TU GREEN remain qualified by the recorded host/CI compiler
89+
and SDK differences. No test program or broad suite ran.

‎test/integ/quic_interop_endpoint.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ struct fixture {
306306
due = std::min(due, *deadline);
307307
if (snapshot.next_deadline)
308308
due = std::min(due, *snapshot.next_deadline);
309-
int timeout = std::min<std::int64_t>(1000, std::max(std::int64_t{0}, std::chrono::ceil<std::chrono::milliseconds>(due - clock_type::now()).count()));
309+
int timeout = std::min<std::int64_t>(1000, std::max<std::int64_t>(std::int64_t{0}, std::chrono::ceil<std::chrono::milliseconds>(due - clock_type::now()).count()));
310310
if (poll(descriptors.data(), descriptors.size(), timeout) < 0 && !stopping)
311311
throw std::runtime_error("poll failed");
312312
std::vector<h::server::readiness_event> events;

‎test/unit/quic_native_owner_test.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ struct fixture {
264264
}
265265
if (const auto* crypto = std::get_if<hd::quic_crypto_frame>(&frame.value)) {
266266
auto& bytes = received_crypto[level];
267-
bytes.resize(std::max(bytes.size(), crypto->offset + crypto->data.size()));
267+
bytes.resize(std::max<std::uint64_t>(bytes.size(), crypto->offset + crypto->data.size()));
268268
std::copy(crypto->data.begin(), crypto->data.end(), bytes.begin() + crypto->offset);
269269
peer.input[level].insert(peer.input[level].end(), bytes.begin() + delivered[level], bytes.end());
270270
delivered[level] = bytes.size();

0 commit comments

Comments
 (0)