File size: 3,090 Bytes
7b0b49b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | # profilefix-no-short-no-counter-v1
This candidate composes two causal Profilefix ablations:
1. `profilefix-no-short-v1`: genuine short emissions are disabled while the
original short selector and length-bucket RNG draws are still consumed.
2. `profilefix-no-counter-v1`: rows assigned to
`prefix_cumulative_counter` are causally replaced.
Relative to `profilefix-no-short-v1`, it changes only counter-assigned rows.
Every emitted array is full-length (4096).
For each such row, the generator:
1. calls and discards the complete original counter builder on Profilefix's
main RNG stream;
2. samples a replacement family from the normalized fourteen-family UID131
composition on a deterministic tagged `SeedSequence` substream;
3. builds a full-length replacement and applies UID131's ordinary measurement
artifact path and original seasonal bank on that side stream.
The 2.5% counter selector mass is not renormalized. Consequently all selector
draws, all main-stream builder/artifact draws, and every non-counter row remain
byte-identical to `profilefix-no-short-v1` into later chunks. A thread-local
seasonal-bank selector confines UID131's original bank to replacement calls,
without mutating the Profilefix bank observed by non-counter rows or concurrent
generator threads. Its thread-local subclass initializes `uid131 = False` for
each thread and uses direct attribute reads accepted by the campaign inventory
scanner.
The extra discarded build adds a small amount of CPU work on about 2.5% of
rows. This is intentional: causal identity is more important at the screening
stage than optimizing away unmeasured work.
## Causal validation
The identity test wraps `profilefix-no-short-v1`'s counter builder with a
sentinel while still consuming its original draws. Across 193 rows and four
chunks, every non-counter row is byte-identical and every tagged counter row is
replaced. A separate test proves replacement-stream determinism and another
checks the replacement seasonal path against exact UID131. A two-thread
coordination test proves that enabling the UID131 bank in one thread cannot
leak into either another worker or the main thread.
From `/root/91`:
```bash
PYTHONPATH=cascade cascade/.venv/bin/pytest -q \
champion/candidate/profilefix-no-short-no-counter-v1/tests
cascade/.venv/bin/ruff check \
champion/candidate/profilefix-no-short-no-counter-v1
PYTHONPATH=cascade cascade/.venv/bin/python -m cascade.miner.cli verify \
champion/candidate/profilefix-no-short-no-counter-v1 \
--chain-toml cascade/chain.toml
PYTHONPATH=cascade:champion/harness cascade/.venv/bin/python \
-m champion.generic_screen_v040_v1 inventory-candidate \
--workspace /root/91 \
--source-path champion/candidate/profilefix-no-short-no-counter-v1
```
Current result: 21 tests pass, Ruff passes, Cascade verify accepts the
deterministic seed-0 corpus, and the generic-screen campaign inventory accepts
the complete source tree.
Status: **prepared-unscored**. Promotion requires source-disjoint public heat
and then a full paired GPU duel against exact UID131.
|