Found while measuring objectstack#5407 (unrelated to that fix; filed separately per Prime Directive #10).
packages/app-shell/src/views/metadata-admin/inspectors/useDatasetFields.ts uses a NUL character as a join separator, and it is stored as a raw U+0000 byte rather than as a six-character escape:
- line 246 —
const includeKey = include.join(...)
- line 265 —
const includeList = includeKey ? includeKey.split(...) : []
Both separators are a literal U+0000 in the file bytes. Reproduce:
grep -rn "resolveLabel" packages/app-shell/
# => packages/app-shell/src/views/metadata-admin/inspectors/useDatasetFields.ts: binary file matches
grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]' packages/app-shell/src/views/metadata-admin/inspectors/useDatasetFields.ts
# => 246, 265
Why it matters
One raw control byte makes grep classify the entire file as binary: it prints binary file matches instead of the line, and with -l/--include filters in a pipeline it is routinely dropped altogether. Every agent and every human who searches this repo by content is blind to this file. It is the same failure family as objectstack#4763 / #4890 / #5140 / #5157, and it is currently invisible to the gates because objectui ships no check:nul-bytes equivalent.
Suggested fix
- Write the separator as the escape sequence (backslash-u-0000) so the source file stays plain ASCII while the runtime value is unchanged. Better still, use a separator that cannot be part of a field name (e.g. a newline or a comma) — the NUL is only being used as "a character no identifier contains", and the escape spelling makes that intent readable.
- Add a repo-level scan to objectui's
check task so this cannot recur silently. The scan must cover more than U+0000: PR objectstack#5140 shipped a NUL and a U+0001 fourteen bytes away, and a NUL-only scanner missed the second (objectstack#5157).
Notes
Do NOT paste the byte when writing about it — describe the escape. Two of the four prior incidents happened while an agent was writing documentation about the rule itself.
Found while measuring objectstack#5407 (unrelated to that fix; filed separately per Prime Directive #10).
packages/app-shell/src/views/metadata-admin/inspectors/useDatasetFields.tsuses a NUL character as a join separator, and it is stored as a raw U+0000 byte rather than as a six-character escape:const includeKey = include.join(...)const includeList = includeKey ? includeKey.split(...) : []Both separators are a literal U+0000 in the file bytes. Reproduce:
Why it matters
One raw control byte makes grep classify the entire file as binary: it prints
binary file matchesinstead of the line, and with-l/--includefilters in a pipeline it is routinely dropped altogether. Every agent and every human who searches this repo by content is blind to this file. It is the same failure family as objectstack#4763 / #4890 / #5140 / #5157, and it is currently invisible to the gates because objectui ships nocheck:nul-bytesequivalent.Suggested fix
checktask so this cannot recur silently. The scan must cover more than U+0000: PR objectstack#5140 shipped a NUL and a U+0001 fourteen bytes away, and a NUL-only scanner missed the second (objectstack#5157).Notes
Do NOT paste the byte when writing about it — describe the escape. Two of the four prior incidents happened while an agent was writing documentation about the rule itself.