From 580ed4d52d63351b0ee4e24cb67ab8a2312e2884 Mon Sep 17 00:00:00 2001 From: ddidderr Date: Mon, 12 Oct 2026 13:20:43 +0200 Subject: [PATCH] docs(rewrite): agents fix genuine upstream memory bugs instead of replicating them --- docs/rewrite/AGENT_GUIDE.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/rewrite/AGENT_GUIDE.md b/docs/rewrite/AGENT_GUIDE.md index c9399b9..60d0bac 100644 --- a/docs/rewrite/AGENT_GUIDE.md +++ b/docs/rewrite/AGENT_GUIDE.md @@ -13,7 +13,14 @@ You are porting part of Ghostty 1.3.1 (Zig) to Rust. Read local version, mark it `// TODO(integration): ...`, and mention it in your report. Never rewrite other agents' modules. You MAY add dependencies to your own crate's `Cargo.toml` (prefer well-known crates; use `cargo add -p `). -2. **Faithful port.** Preserve behaviour, edge cases, defaults and naming +2. **Faithful port — except genuine bugs.** If the Zig code has a real + memory-safety bug or undefined behaviour (use-after-free, out-of-bounds, + leaks, stale pointers, infinite loops, integer overflow UB), do NOT + replicate it: implement the evidently intended, safe behaviour, add a test, + and record it under "Upstream bugs fixed" in your notes (Zig file:line, + what was wrong, what the Rust does). Everything else stays faithful. + Original rule 2: + **Faithful port.** Preserve behaviour, edge cases, defaults and naming (snake_case of the Zig names). Port doc comments (they are user-visible for config/actions). Don't "improve" semantics. Idiomatic Rust structure is fine (enums for tagged unions, traits for comptime interfaces, `Result` for error