ADR-0005 records the decision deferred in ADR-0003: Rust (staticlib, C ABI) for the image-codec leaf decoders where the CVE history concentrates (OpenJPEG ~40 buffer-overflow CVEs incl. 2024, several 'as used in PDFium'); C++ throughout elsewhere. Spike F measures the build-friction cost empirically (~10s cargo build, one .a link, ASan-clean FFI) rather than estimating it. - docs/adr/0005-rust-leaf-decoders.md: decision + CVE survey + evidence - docs/adr/0003 + README: mark deferred portion superseded by ADR-0005 - spike/F_rust_ffi_probe: Rust staticlib leaf + C++ driver, bounded (ptr,len) FFI matching §7.2; builds clean under ASan+UBSan - .gitignore: ignore cargo target/ (keep Cargo.lock for reproducibility) |
||
|---|---|---|
| .. | ||
| 0001-render-what-you-will-save.md | ||
| 0002-surgical-re-emission.md | ||
| 0003-memory-safety-posture.md | ||
| 0004-two-process-trust-boundary.md | ||
| 0005-rust-leaf-decoders.md | ||
| README.md | ||
README.md
Architecture Decision Records
Architecture decision records (ADRs) live here, numbered, and immutable once
accepted (§13.4 of docs/plan.md). To change an accepted
decision, write a new ADR that supersedes the earlier one and reference it
from both files.
Format
Each ADR is a single Markdown file NNNN-short-title.md with:
- Status: Proposed | Accepted | Superseded by
NNNN| Withdrawn - Date: ISO 8601
- Context: why this decision is being made now
- Decision: what we decided
- Consequences: what follows — positive, negative, and neutral
- Alternatives considered: what we did not choose, and why
Seeded at M0
Per §13.4 and §14 step 9, the following ADRs exist from M0:
- ADR-0001 — Render what you will save (§2.5)
- ADR-0002 — Surgical re-emission with splice-point invariants (§4.4)
- ADR-0003 — Memory safety posture for the parser layers (§7.2)
- ADR-0004 — Two-process model with the IPC as a bidirectional trust boundary (§2.1)
- ADR-0005 — Rust for the image-codec leaf decoders; C++ throughout elsewhere (§7.2, §15) — resolves the M0 Rust-vs-C++ decision deferred in ADR-0003.