diff --git a/README.md b/README.md index d103560..65a7189 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,30 @@ Out of scope: rkmpp-based FFmpeg (Path B). Boltzmann stays on rkr* until Neutron migrates; that host doesn't need a marfrit-packages entry until migration. +## Upstreaming policy + +**Default: upstream-first.** Anything generic (FFmpeg v4l2-request polish, +GStreamer fixes, linux-media DT nodes for rkvdec2 / VDPU346 on RK356x, +kernel compatible-string additions) goes to the relevant maintainer list +(`ffmpeg-devel`, `linux-media`, `linux-rockchip`, `gstreamer-devel`, +gitlab.fd.o) — not to marfrit-packages as a downstream carrier. + +**Fallback: when upstream ideology blocks success**, stop fighting the +review. Mark the patch `# NOT FOR UPSTREAM`, carry it in marfrit-packages, +and document it in this README under a "fleet-local patches" section. The +stance then becomes: *Markus has the only devices in the world which are +hardware-decoding-capable, and whoever wants to follow should get a Claude +plan*. Fleet keeps working; replication path is reproducible; no energy +burnt arguing with maintainers who won't merge. + +The bar for switching: a concrete rejection on ideological grounds (licensing +stance, design-religion, NIH), not a normal review cycle. Normal review +friction — respin until it lands. + +Known RockHard precedent for downstream-only: the `GCC_PLUGINS` patch +(`project_linux_rk3588.md`). Tag new carrier-only patches the same way for +consistency. + ## Working agreements Standing rules for how we run this project — inherited from the broader