Skip to content

Commit 0de4278

Browse files
committed
FEATURE-ci-quic-physical-root: resolve the partial Initial fixture root
Canonicalize only the selected temporary directory initializer before the existing owner call. Preserve packet bytes, assertions and secure root-open flags. Retained native Darwin RED establishes the setup failure; GNU owning-TU object, LLVM/libc++ syntax, cpplint and byte preservation checks pass. Focused Linux runtime cache unavailable; native post-fix execution remains CI-owned.
1 parent 37095c2 commit 0de4278

2 files changed

Lines changed: 64 additions & 1 deletion

File tree

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# FEATURE-ci-quic-physical-root: physical temporary root for partial QUIC Initial fixture
2+
3+
Status: Implemented; scoped local checks pass. Caller Groundwork validation and finalization pending; native post-fix CI proof incomplete.
4+
Base: exact local `v3` at `37095c23751960b6e1adcad95d7b3c4c34c64351`.
5+
Plan: `.groundwork-plans/FEATURE-ci-quic-physical-root-plan.md` in the primary checkout.
6+
7+
## Goal and scope
8+
9+
Resolve the temporary directory to its physical path only in
10+
`partial_initial_keeps_file_pump_parked_before_negotiated_flow` before constructing
11+
its file-serving owner. Darwin's `/tmp` is a symlink; the original fixture
12+
passes that symlink to a root opener that correctly requires a directory and
13+
rejects symlinks. Wrap the existing root initializer in
14+
`std::filesystem::canonical`; preserve the owner call's `root.string()` and
15+
all other test-source bytes. Production behavior and the support root opener's
16+
`O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC` contract remain unchanged.
17+
18+
## Action items
19+
20+
- [x] Read the accepted plan, literal journal and executor memory; create the
21+
resolved isolated Groundwork worktree from the exact local v3 base.
22+
- [x] Inspect retained original native RED and selected actual fixture before
23+
editing; retain source and original evidence hashes.
24+
- [x] Wrap only the selected root initializer in `canonical`; preserve partial
25+
Initial bytes, owner operations, assertions and all four registered tests.
26+
- [x] Compile the actual owning TU to a GNU object and syntax-check it with
27+
existing real LLVM/libc++ and private OpenSSL 3.5.9 headers/configuration.
28+
- [x] Run changed-file cpplint, diff and byte-preservation checks; retain exact
29+
commands, outputs and source/tool/configuration/provider hashes.
30+
- [ ] Focused actual Linux case under symlinked TMPDIR: unavailable with the
31+
inspected caches; no compatible cached interop-provider/core pair established.
32+
No provider/core rebuild or broader executable run is authorized or performed.
33+
- [ ] Caller Groundwork validation and local finalization.
34+
- [ ] Native Darwin/FreeBSD post-fix execution (CI/v3 PR-owned; incomplete,
35+
not a local completion or merge blocker under project policy).
36+
37+
## Verification and limits
38+
39+
Primary journal: `.debug/ci-quic-physical-root-_mha28yk/journal.md`.
40+
Evidence: `.debug/ci-quic-physical-root-_mha28yk/implementation/`.
41+
Original RED: retained Darwin run `40241540719`, job `121314199531`, original
42+
`quic_interop_tls` (four tests, 146 checks, one failure). Its selected fixture
43+
passes `/tmp`; the original `O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC`
44+
open returns -1/ENOTDIR for that symlink before owner datagram/tick/flow
45+
assertions. A real child directory opens successfully. Selected member identity,
46+
CRC and SHA were verified; whole archive SHA remains unverified. The earlier
47+
assessment JSON contains historical open-batch wording: the parent journal's
48+
terminal audit closes the four-target diagnostic batch at 4/340 charged.
49+
50+
GNU 13.3.0 object compilation and LLVM 19.1.1 with real libc++ 20.1 (header `_LIBCPP_VERSION=200100`) syntax
51+
checking pass on the changed actual owning TU with empty diagnostics. The
52+
existing generated Linux build config and actual private OpenSSL 3.5.9 include
53+
configuration are hashed; no bootstrap, provider/core/SDK build was run.
54+
Changed-file cpplint and diff checks pass. A byte contract proves the single
55+
initializer substitution is the entire test-source delta; root-open support
56+
is identical to base. No mirror test or test helper/framework was added.
57+
58+
Focused Linux runtime execution is unavailable; original native RED supplies
59+
the causal evidence, while local compilation and exact source preservation
60+
verify this reversible fixture change. Native post-fix runtime proof remains
61+
incomplete and CI/v3 PR-owned. No new native executions, probes, suites, CI
62+
API actions, dispatches, publication or unrelated repairs are authorized here.
63+
All earlier closed budgets and unrelated UNKNOWN assessments remain unchanged.

‎test/unit/quic_interop_tls_test.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ LT_BEGIN_AUTO_TEST(interop_tls_suite, partial_initial_keeps_file_pump_parked_bef
8383
httpserver::manual_executor executor;
8484
httpserver::server::route_registry routes;
8585
httpserver::server::peer_policy policy;
86-
const auto root = std::filesystem::temp_directory_path();
86+
const auto root = std::filesystem::canonical(std::filesystem::temp_directory_path());
8787
h3net::connection owner(registry.acquire()->select_default(), *facts, routes, executor, 1, policy, root.string());
8888
owner.on_datagram(packet);
8989
owner.tick(h3net::clock_type::now());

0 commit comments

Comments
 (0)