# PowLayer zero-exponent audit protocol

Recorded before execution of the fresh-build matrix on 13 September 2026.
The earlier exploratory binary reported forward 1, backward NaN, and central
difference 0 at x=0, exponent=0, incoming=3. That binary used a checkout with
unrelated earlier fixes. It is not the publication baseline.

The publication baseline is a fresh build of main commit
`a7ea056e79ab8e14447ea305c1b634e233343258`, with only the three new tests added.
The mathematical oracle is the layer's constant forward at exponent zero,
and explicit polynomial/root/reciprocal identities for nonzero controls.

## Fixed matrix

- 12 finite FP32 values: positive/negative zero, positive/negative minimum
  subnormal, one quarter of the positive/negative minimum normal, the
  positive/negative minimum normal, ±2, and ±maximum finite.
- Exponent strings corresponding to positive and negative zero.
- Shapes `[1,1,1,12]`, `[2,1,2,3]`, `[3,2,1,2]`, with identical flattened data.
- Incoming derivatives -3, 0, 0.25, 1, 3.
- This gives 30 vector invocations / 360 coordinate cases. Forward must equal
  1 and derivative must equal 0 exactly; no tolerance can hide NaN.
- 25 scalar controls: five incoming derivatives for each of five identities:
  exponent 1 at zero, exponent 2 at zero, exponent 3 at -2, exponent 0.5 at 4,
  and exponent -1 at 2. Expected values and derivatives are exact dyadic values.
- Each invocation repeats backward after replacing the outgoing buffer with
  -77, checks input/incoming bytes including signed zeros, and records results.
- Run the executable in three fresh processes before and after the repair.
- The three reshapes must yield identical flattened values and derivatives.

Before execution, the predicted baseline failure set is the first six input
values in each of the 30 zero-exponent rows: 180 NaN coordinates. Reciprocal
overflow or division by zero is followed by multiplication by zero. Unexpected
outputs, count changes, exceptions and crashes must fail the driver rather
than be counted as a successful reproduction.

## Independent finite difference and project tests

Invoke the actual forward at ±1/32 and at zero, with incoming derivative 3.
The weighted central difference is exactly zero. Compare backward at zero.

Run all 22 existing Pow semantics tests plus three added native regressions.
Expected original failures: zero/tiny-input regression and constant-forward
finite-difference regression. The ordinary-exponent regression must pass.

Apply only a zero-exponent early return, rebuild, and rerun the same checks.
Restore the original production file as a mutation check, rebuild and require
the original failures to return; finally restore the candidate and validate it.

CPU FP32, NCHW, one Ninja job, BLAS off, one numerical thread. No FP16, GPU,
Android/Tizen device, complete project test suite, performance benchmark or
production-model impact claim is planned. Multiple inputs, in-place inference
and nonfinite incoming derivatives are outside this bounded regression.
