|
1 | | -# Actual Darwin server PGO qualification: pending |
| 1 | +# Actual Darwin server PGO: both screens rejected |
2 | 2 |
|
3 | | -The native processing probe has a qualified corpus result in the [separate record](../native-pgo-current-2026-09-07/README.md). The actual HTTP server screen is still running. No actual-server gain, universal improvement, shipping readiness or profile-use flag change is claimed here. |
| 3 | +The native processing probe has a qualified corpus result in the [separate record](../native-pgo-current-2026-09-07/README.md). The [counter-only HTTP screen](../server-pgo-counter-http-4059/README.md) did not meet its continuation threshold and retained one failed diagnostic gate. It did not continue to five pairs. The distinct [full-value generator-only-shutdown screen](../server-pgo-full-value-http-4059/README.md) also failed its continuation gates; its results are not pooled with this profile. No shipping readiness or profile-use flag change is claimed here. |
4 | 4 |
|
5 | 5 | ## What has passed |
6 | 6 |
|
7 | | -Five fixed public fixtures trained a fresh instrumented server after the JSON cache roundtrip correction (#4064). Each completed cold geometry/data-model delivery and exact same-process cache replay. Profiles are continuous counter-only, with no value-profile data. All three compiled-source hash maps match despite a later documentation-only commit. Artifact, compiler, source, training and profile evidence is supplied separately in [stack PR #4070](https://github.com/LTplus-AG/ifc-lite/pull/4070), including `pre-screen-provenance.json`; it is not part of this harness-only commit. |
| 7 | +Five fixed public fixtures trained a fresh instrumented server after the JSON cache roundtrip correction (#4064). Each completed cold geometry/data-model delivery and exact same-process cache replay. Profiles are continuous counter-only, with no value-profile data. All three compiled-source hash maps match despite a later documentation-only commit. Artifact, compiler, source, training and profile evidence is in `pre-screen-provenance.json`. |
8 | 8 |
|
9 | | -LLVM21 value-site warnings do not discard branch profiles: `populateCounters()` and `setBranchWeights()` precede `annotateValueSites()`, whose mismatch returns only from the value annotation helper. The [matching upstream source](https://github.com/llvm/llvm-project/blob/llvmorg-21.1.5/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp) and its digest/line references are recorded. Missing-function diagnostics and value-site warnings remain visible; this is not a warning-free build claim. |
| 9 | +LLVM 21 value-site warnings do not discard branch profiles: `populateCounters()` and `setBranchWeights()` precede `annotateValueSites()`, whose mismatch returns only from the value annotation helper. The [matching upstream source](https://github.com/llvm/llvm-project/blob/llvmorg-21.1.5/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp) and its digest/line references are recorded. Missing-function diagnostics and value-site warnings remain visible; this is not a warning-free build claim. |
10 | 10 |
|
11 | 11 | ## Measurement limits |
12 | 12 |
|
13 | 13 | Cold means a fresh server process, empty application cache and raw IFC upload. The operating-system page cache is not purged; preflight fixture hashing can warm it. Local loopback HTTP includes upload, wire persistence and observer overhead; it does not measure internet latency or physical-disk cold reads. Cold readiness ends at complete data-model receipt; cache publication/replay has separate timestamps. Memory is sampled server RSS, not physical footprint. |
14 | 14 |
|
15 | | -Both timed arms finish and their server processes are reaped before offline decoding or evidence retention. The offline child exits before the next pair. One operator owns the timing host; no concurrent builds, profiling, compression or heavy hashing. A single pair is a screen, not a qualified five-pair estimate. The held-out22 cohort is primary; all27 and fixed training5 are secondary. |
| 15 | +Both timed arms finish and their server processes are reaped before offline decoding or evidence retention. The offline child exits before the next pair. One operator owns the timing host; no concurrent builds, profiling, compression or heavy hashing. A single pair is a screen, not a qualified five-pair estimate. The held-out 22 cohort is primary; all 27 and fixed training 5 are secondary. |
16 | 16 |
|
17 | 17 | ## Reproduction source |
18 | 18 |
|
19 | 19 | `reproduce/` contains the actual HTTP transport, full wire/data-model witnesses, tests and paired driver, plus parameterized build/training/profile tools. `harness-source-map.json` identifies exact private-origin hashes and published hashes, including explicit path-parameter adaptations. These are manual evidence tools, not production entry points or CI performance gates. User IFC files and generated wire evidence are never committed. |
20 | 20 |
|
21 | | -Use Python3.9 or newer and the recorded dependencies in `reproduce/requirements.txt`; use the repository-pinned Rust toolchain and its matching `llvm-profdata`. Darwin training additionally needs the documented16KiB profile section alignment. Do not reuse profiles across source changes or infer other target/compiler behavior. |
| 21 | +Use Python 3.9 or newer and the recorded dependencies in `reproduce/requirements.txt`; use the repository-pinned Rust toolchain and its matching `llvm-profdata`. Darwin training additionally needs the documented 16 KiB profile section alignment. Do not reuse profiles across source changes or infer other target/compiler behavior. |
22 | 22 |
|
23 | | -Provide an experiment `plan.json` with sourceCommit, profileKind and exactly five training rows `{label, path, publicSha256}`. The fixture schema examples are supplied by [stack PR #4070](https://github.com/LTplus-AG/ifc-lite/pull/4070), including `corpus.example.json`; they are not included in this harness-only commit. Replace example paths with local files. The driver requires exactly27 unique fixture hashes and a training subset of5. The same follow-up supplies `capacity-projection.example.json` with label/SHA-linked budgets. Supply an explicitly reviewed PROJECTION file; storage requirements must be re-evaluated for different fixtures. |
| 23 | +Provide an experiment `plan.json` with sourceCommit, profileKind and exactly five training rows `{label, path, publicSha256}`. `corpus.example.json` documents the fixture manifest schema; replace example paths with local files. The driver requires exactly 27 unique fixture hashes and a training subset of 5. `capacity-projection.example.json` contains measured label/SHA-linked capacity budgets; storage requirements must be re-evaluated for different fixtures. |
24 | 24 |
|
25 | | -From this directory, with SOURCE, EXPERIMENT, COMMIT, CORPUS, PROJECTION and PROF_DATA_TOOL set explicitly by the operator: |
| 25 | +From this directory, with SOURCE, EXPERIMENT, COMMIT, CORPUS and PROF_DATA_TOOL set explicitly by the operator: |
26 | 26 |
|
27 | 27 | ```bash |
28 | 28 | python reproduce/build_server.py --source "$SOURCE" --experiment "$EXPERIMENT" --expected-commit "$COMMIT" control |
29 | 29 | python reproduce/build_server.py --source "$SOURCE" --experiment "$EXPERIMENT" --expected-commit "$COMMIT" generate |
30 | 30 | python reproduce/train.py --experiment "$EXPERIMENT" |
31 | 31 | python reproduce/audit_profile.py --experiment "$EXPERIMENT" --llvm-profdata "$PROF_DATA_TOOL" |
32 | 32 | python reproduce/build_server.py --source "$SOURCE" --experiment "$EXPERIMENT" --expected-commit "$COMMIT" use |
33 | | -python reproduce/screen_http_v2.py --manifest "$CORPUS" --training-plan "$EXPERIMENT/plan.json" --base-provenance "$EXPERIMENT/control-provenance.json" --candidate-provenance "$EXPERIMENT/use-provenance.json" --projection "$PROJECTION" --out "$EXPERIMENT/http-screen" --cpu-window-confirmed |
| 33 | +python reproduce/screen_http_v2.py --manifest "$CORPUS" --training-plan "$EXPERIMENT/plan.json" --base-provenance "$EXPERIMENT/control-provenance.json" --candidate-provenance "$EXPERIMENT/use-provenance.json" --projection capacity-projection.example.json --out "$EXPERIMENT/http-screen" --cpu-window-confirmed |
34 | 34 | ``` |
35 | 35 |
|
36 | 36 | These commands intentionally refuse existing build targets/profiles/output directories. Keep failures instead of silently retrying or overwriting. The APFS retention helper only operates on explicitly released generated evidence; it verifies exact bytes and keeps distinct paths/inodes. Run its tests and inspect capacity permits before use on another filesystem. |
37 | 37 |
|
38 | 38 | Run witness tests with `python -m unittest discover -s reproduce -p 'test_*.py'`; retention tests separately use `-s reproduce/retention`. They encode actual Arrow/Parquet data and mutate payload fields. No source-text assertions or private IFC fixtures are required. |
39 | 39 |
|
40 | | -The eventual HTTP verdict will be appended only after all retained output, memory and timing gates have been reviewed. Issue#4059 remains open while that work is active. |
| 40 | +The counter-only verdict is recorded separately, with all failures. The bounded qualification in #4059 is complete with both actual-server candidates rejected. `pre-screen-provenance.json` is the immutable initial counter-only preparation snapshot, including its then-pending status. |
0 commit comments