7.3 KiB
Codex final verification (RV18, 2026-10-12) — final audit round
At HEAD 2040677, all 6 RV17 findings are resolved, with no verified regression attributable to Z20. Full parity is not established: 13 remaining findings—2 P2 and 11 P3. These comprise one incorrect registered claim and twelve unregistered differences, including corrections that should be preserved and documented.
No files were modified; the worktree remains clean.
RV17 verification:
| Finding | Result |
|---|---|
| FreeType-only backend on Apple | Resolved: backend selection honors the feature and disables CoreText/discovery appropriately. Native Apple execution remains unavailable. |
| CLI feature-unification test | Resolved: assertions follow the selected font backend. Targeted tests pass. |
| Inspector font | Resolved: 32 px with FreeType on Linux. Remaining platform rasterizer differences are registered. |
| Inspector DCS descriptions | Resolved against Zig 0.15.2 formatting, including slice syntax and type prefix. |
| Inspector demo in release builds | Resolved: gated by the build profile instead of assertions. |
| Metal allocation correction | Resolved: preserved, tested through portable allocation arithmetic, and registered as entry 34. |
The remaining verified findings follow. “Source” means the differing branch and consequence were checked in both implementations, without an end-to-end runtime reproduction.
| # | Severity | Finding and evidence |
|---|---|---|
| 1 | P2 | Deviation entry 10 incorrectly claims Rust handles the listed terminal inputs without panicking. A mode-2027/BOM sequence reaches debug_assert!(!b) in terminal.rs:824. Rust debug exits 101; assertion-enabled Zig aborts. Both production variants succeed. The repository’s release profile also enables this assertion. This is an unresolved shared upstream defect, not a defined-result mismatch. |
| 2 | P2 | FreeBSD compilation selects an unavailable libc function. command.rs:549 selects libc::__errno_location() for every non-Apple Unix target; the pinned libc exposes __error() on FreeBSD. Source-verified build blocker; no cross-build performed. |
| 3 | P3 | FreeBSD resource discovery uses Linux conventions. resourcesdir.rs:52 searches terminfo under share; Zig uses site-terminfo and local/share. A standard upstream FreeBSD installation is therefore missed without an explicit resource override. Source. |
| 4 | P3 | Release resource precedence still treats assertions as Debug mode. resourcesdir.rs:74 makes an installed resource tree override GHOSTTY_RESOURCES_DIR in this repository’s assertion-enabled release profile. Zig ReleaseSafe honors the environment first. Source. |
| 5 | P3 | Theme-search word editing is incomplete. preview.rs:113 lacks upstream word-navigation behavior. PTY reproduction: enter blue red, press Alt+B, then X; Zig produces blue Xred, Rust blue redX. |
| 6 | P3 | Theme-search editing splits graphemes. preview.rs:100 deletes one Unicode scalar. PTY reproduction: enter e plus U+0301, then Backspace; Zig removes the grapheme, Rust leaves e. |
| 7 | P3 | Theme-search case handling differs for non-ASCII names. preview.rs:150 Unicode-lowercases names but ASCII-lowercases queries. An exact query Ä fails against theme name Ä; upstream’s ASCII-only handling matches it. Source. |
| 8 | P3 | Theme-preview initial colors differ. preview.rs:385 consults COLORFGBG; upstream initializes light until receiving terminal color reports. PTY captures without replies confirmed changing COLORFGBG changes Rust’s colors while Zig’s output remains identical. |
| 9 | P3 | Theme-preview load errors are swallowed. preview.rs:440 ignores load_file errors and continues filtering with retained configuration. Zig propagates the error and exits the preview. This is separate from registered diagnostic-buffer flushing. Source. |
| 10 | P3 | Subprocess cleanup silently gives up after approximately five seconds. exec.rs:1348 caps the wait for the child’s new process group. If the child remains delayed before setsid, cleanup returns without sending SIGHUP; Zig keeps waiting. Source. |
| 11 | P3 | The development resource fallback is unregistered. resourcesdir.rs:140 discovers workspace resources where upstream returns none. This is a documentation/intentional-deviation finding. |
| 12 | P3 | The PTY hangup output-loss correction is unregistered. exec.rs:742 drains remaining output after HUP; Zig exits immediately. A Linux PTY check confirmed `POLLIN |
| 13 | P3 | The browser Canvas atlas correction is unregistered. web_canvas.rs:177 implements BGRA conversion, correcting upstream’s stale .rgba branch against an enum containing .bgra. Source-verified correction; preserve and register it. No browser-equivalence claim is made. |
The minimal reproduction for finding 1 is:
b"\x1b[?2027la\xef\xbb\xbf\x1b[?2027h\xe4\xb8\xad"
Feed it to the differential drivers at geometry 20 × 8, scrollback 1000.
Verification coverage:
- 461/461 Zig files inventoried and interface-screened across every source category, including 2,801 public declarations, followed by targeted implementation comparisons. This establishes breadth of review, not exhaustive behavioral equivalence.
- 535 fresh CLI/config comparisons: 524 identical; 11 differences covered by registered build-metadata and output-flushing deviations.
- 1,200 fresh terminal cases: 1,187 identical successful results and 13 cases where both assertion-enabled implementations failed; zero defined-result mismatches. The documented 390k campaign was not rerun. Its exclusion of Zig-aborting cases explains why “zero divergences” does not establish the register’s no-panic claim.
- 2,451 successful selected unit tests, plus targeted backend checks. Fixture-writing tests could not run under the read-only restriction.
- Existing three visual scenarios and 36 sprite sheets remain pixel-identical. No new GUI captures were taken.
- 14 GLSL files and 11 VT C headers were byte-identical to upstream.
Inherently unavailable for native verification on this Linux machine: Apple Metal/IOSurface/CoreText, Apple input APIs, Mach handling and Apple packaging; Windows ConPTY/Win32 behavior; native FreeBSD execution. Swift was excluded as requested.
Other verification limits: existing build artifacts were used; no fresh build, live portal/D-Bus integration, real-browser rendering, or native io_uring execution was performed. These are coverage limits, not additional verified gaps.