D3D9 clear depth/cache repair
Repairs producer ffe822a9d50ad79439330609915eb84475acd2bc, retaining its
complete candidate and independent reviewer
c1bfc2c696e8b88749a3b8ab04f935b5e52d7cb1 as ancestors. Exact remote main
f6571101e38985b3fa34d328f2ccadd9735a7573 was reconciled over the dedicated
strict trusted SSH configuration before changes. This is a private task branch;
there is no main integration or deployment in this assignment.
The adapter previously wrote gl.clearDepth(.25) directly and then called
WebGLBackend.clear(color, mask). Its missing third argument defaults to 1,
so the wrapper overwrote the first requested .25 and cached 1. Subsequent
results depended on cache history. Device.clearCommand now passes the
normalized depth through the existing wrapper API and removes the direct GL
write. Stencil values likewise go through the wrapper's existing fourth
argument, retaining the low-byte conversion and write mask. This keeps both
clear-value caches consistent when another frontend interleaves wrapper calls.
There is no new cache or wrapper API change. Channel-mask handling stays in
the adapter; non-depth clears retain the wrapper's existing default of 1.
The independent probe body, setup and expected depths are byte-exact from
the reviewer. Only its outer orchestration changes: repaired candidate must
pass; exact baseline must fail for the original normalized-depth assertion.
evidence/d3d9-clear-depth-cache-repair-20261024/independent-before.js.txt,
independent-outer.diff and probe-integrity.json preserve before/after evidence.
The observed repaired writes are [.25,.5], with actual gl.clear depths
[.25,.5]. Exact baseline still writes [.25,1,.5] and clears at [1,.5].
No software expected depth was changed. Producer mock expectations now assert
the forwarded wrapper arguments rather than a direct GL call.
test/test-d3d9-clear-depth-cache.js executes the actual Device adapter and
WebGLBackend methods with a mocked GL boundary and stubbed allocation. It checks
first .25, next .5, repeated values, return to .25, interleaved wrapper changes,
cache contents and redundant-write suppression, positional/descriptor defaults,
absent depth, named targets, combined/color/stencil-only clears, all sixteen
channel masks, zero flags and empty regions. Public wrapper explicit/default
depth remains covered. Its reverting mutation loads the exact original producer
adapter and must reject the first .25 at gl.clear; the raw rejecting log is
retained. Target allocation, constructors and a driver are outside this fixture.
All final checks pass: independent default and unchanged probe; focused cache
suite with rejecting mutation; producer clear-contract suite with seven semantic
rejecting controls; GPU wrapper, shipped dependency order, neutral queue,
shared worker, synchronous presentation, D3D9 worker and presentation cadence.
Baseline --probe --baseline and reverted-adapter checks exit 1 as required;
the assertions identify the original depth mismatch. One dependency-order run
failed because a browser-loaded file was absent from the explicit sparse
checkout. Adding that exact fixture input resolved it without a source change;
its original failure remains in tests.json and the log.
Every Node check uses fresh MemAvailable >=805306368 bytes, oldspace 256 MiB,
CPU limit 60 seconds and wall timeout 60 seconds. Before the producer suite,
the compiler checkpoint independently matched five full installed compiler
hashes and candidate Git blobs, plus exact function names/order/start/end lines,
byte counts and hashes. Only the five-function, 5257-byte WAT excerpt was
compiled (source SHA256
4cae063bfb82249f7f09f85fe41a8b65ded473a787bb359492ef88ce605a61a4),
producing the same 755-byte module SHA256
61cf1906c68d4cd76ca8a3c3ad7c76aad06bed2728e105cee5943adc085c8b4b.
This uses one 64 KiB memory page. No full/default/native emulator compilation,
browser, guest, GPU driver or raster-draw acceptance is claimed. Existing
producer software pixels and DRAW markers retain their original limited scope.
Recovery: fetch task/d3d9-clear-trusted-ssh-depth-repair-oct24 with the existing
strict SSH identity/known-hosts configuration into a new explicit sparse checkout.
The private checkout is /tmp/d3d9-clear-trusted-ssh-depth-repair-oct24/repo.
Admission, focused manifest, Git warning history, publication and final resource
receipts remain in its parent directory. The predecessor's blocked receipt and
launcher/session history remain separate and charged; no history was reset.
Readonly donor alternates are standing inputs, not a remote backup. Git reports
pre-existing deep alternate nesting warnings; all required exact objects and
tests were available, and no donor was modified or repacked.
The 56388608-byte projection includes checkout/Git, evidence/temporary data, external session/events/log history, positive SQLite growth, future growth and 8388608-byte reserve within 67108864 bytes; final measured receipts also check per-file/capture limits and the 2982150144-byte host-free floor. No archive, installed executable or compiler was copied. Root tracked files/index/refs and donors remain read-only; only the append-only root board was written. No box was assigned or operated; box ID/state/expiry are N/A and lifecycle ownership remains with the coordinator. Independent acceptance and integration belong to the coordinator after this worker publishes and stops.