Problem
Gate 3.1's NUL-density test in gitgalaxy/core/aperture.py (nuls * 1000 > len(content)) rejects short members. A 250-byte member with 2 NUL bytes is over 1 per 1000, so the whole member is recorded as "Blocked (Binary Format Detected)" and disappears from every fact channel. Stray NULs are common in members transferred from a mainframe (#3534 / ledger D016).
Evidence
estate/apps/NORD/pli/NULREST.pli at estate-crucible v0.3.0: a 7-line PL/I member with two NULs at the end of its first comment is blocked. Horror H-0037.
Impact
The member vanishes from the scan silently: its units, calls and copybooks are missing, and nothing reports a parse problem. Any short member is at risk.
Acceptance criteria
Related: #3534 (D016).
Found by estate-crucible v0.3.0 phase 2 (#4317, #3988): planted in squid-protocol/estate-crucible, scored by tests/tools/estate_crucible.py on main (scorecard in #4347). The horror flips to pass when this is fixed.
Problem
Gate 3.1's NUL-density test in
gitgalaxy/core/aperture.py(nuls * 1000 > len(content)) rejects short members. A 250-byte member with 2 NUL bytes is over 1 per 1000, so the whole member is recorded as "Blocked (Binary Format Detected)" and disappears from every fact channel. Stray NULs are common in members transferred from a mainframe (#3534 / ledger D016).Evidence
estate/apps/NORD/pli/NULREST.pliat estate-crucible v0.3.0: a 7-line PL/I member with two NULs at the end of its first comment is blocked. Horror H-0037.Impact
The member vanishes from the scan silently: its units, calls and copybooks are missing, and nothing reports a parse problem. Any short member is at risk.
Acceptance criteria
Related: #3534 (D016).
Found by estate-crucible v0.3.0 phase 2 (#4317, #3988): planted in squid-protocol/estate-crucible, scored by
tests/tools/estate_crucible.pyon main (scorecard in #4347). The horror flips to pass when this is fixed.