The files in this directory specify the behavior implemented by the current
rl-nginx source and its locked rl-c-client dependency. They are a reference
for maintainers, reviewers, and compatible implementations; deployment advice
and copyable examples remain in docs/.
The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, and MAY are to be interpreted as normative requirements. A mismatch between the normative files, source, and required public tests is a defect and must be resolved in the same change.
This specification is normative for the nginx adapter: directives, rendered values, nginx phase behavior, ownership, failure mapping, and HTTP latency measurement. It does not fork or redefine behavior owned by the locked C client.
For rl-c-client v1.0.0, the following upstream documents are the normative
dependency contract:
The summaries in this specification lock the particular client behavior that is observable through nginx. If a summary disagrees with the supported tag, the supported client contract wins and the nginx source, specification, and tests must be corrected together—or the dependency lock must change through a reviewed compatibility update. Links target the supported tag, never a moving branch.
The required static contributor gate is make check. It combines configuration
parsing with public DNS, lifecycle, enforcement, failure-policy, recovery,
protocol, cardinality, reload, and shutdown tests while preserving the binary
produced from its static BUILD_FLAGS. Release conformance additionally
requires relocated dynamic-module behavior on both supported architectures and
ASan/UBSan/LSan coverage on both supported nginx lines. The optional private
full-stack test is supplemental, not public conformance evidence. The
lightweight specification consistency test checks directive coverage and
executable defaults, but it does not replace behavioral tests.