Repository navigation
quality: record protobuf-go oracle prefix - #341
Conversation
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 92a53475af
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if std::str::from_utf8(payload).is_err() { | ||
| return Err(format!( | ||
| "proto: field {msg}.{} contains invalid UTF-8", | ||
| "proto:\u{a0}field {msg}.{} contains invalid UTF-8", |
There was a problem hiding this comment.
Preserve the v9 protobuf error separator
This unconditionally changes dynamic-protobuf errors to the nonbreaking-space form even when the Rust app is executing v9 semantics. The pinned v9 results in crates/fuzz-diff/tests/regressions.jsonl (for example lines 10 and 12) use an ASCII space, while the v10 results use the nonbreaking space. Consequently, a malformed dynamic message executed by a v9 governance proposal will persist a different failed_reason in Rust and Go and split the app hash; select the separator according to the executing app version rather than applying the v10 binary's value globally.
Useful? React with 👍 / 👎.
92a5347 to
eeafe30
Compare
eeafe30 to
01e8ea0
Compare
01e8ea0 to
38fee11
Compare
A protobuf-go dynamic-message error can become consensus-visible when governance persists it in
failed_reason, but protobuf-go chooses the separator afterproto:from a hash of the executable. The authenticated qualification binaries select ASCII, while byte-different workflow builds select U+00A0; the exact v9-upgrade seed 62203 exposed the resulting app-hash split.This change records the protobuf-go FNV-1 seed, selected separator, and UTF-8 bytes for every binary supplied to exact-source qualification. It also documents the cross-build risk and keeps the Rust state machine aligned with the authenticated ASCII-selecting qualification binaries. The failed long-run build is explicitly excluded from exact-candidate evidence.
Validation:
python3 -m unittest scripts.quality.test_qualify(11 passed)python3 -m py_compile scripts/quality/qualify.py scripts/quality/test_qualify.pygit diff --check