From fe82cf59d26b38ca4150e2f8be0d293b93a85c55 Mon Sep 17 00:00:00 2001 From: Juan Pablo Tosso Date: Fri, 17 Apr 2026 22:53:00 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20add=20ADRs=20for=20structural=20v3.x=20?= =?UTF-8?q?changes=20(2023-05=20=E2=86=92=202026-04)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduce docs/adr/ with 54 MADR-3.0 records covering every structural PR merged between v3.0.0 (2023-05-31) and v3.7.0 (2026-04-06) plus two unreleased post-v3.7.0 changes on main. Bugfixes, dependency bumps, chore/doc/test-only PRs are excluded. Categories: Feature (17), Parity (23), Perf (10), Refactor (4). Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/adr/0000-template.md | 55 ++++++++ docs/adr/0001-response-args-collection.md | 69 ++++++++++ docs/adr/0002-secargumentslimit-directive.md | 90 ++++++++++++ docs/adr/0003-https-audit-log-writer.md | 103 ++++++++++++++ docs/adr/0004-matchedrule-log-method.md | 94 +++++++++++++ docs/adr/0005-auditlogformatter-interface.md | 89 ++++++++++++ docs/adr/0006-regex-ahocorasick-memoize.md | 99 ++++++++++++++ docs/adr/0007-uppercase-transformation.md | 63 +++++++++ docs/adr/0008-transaction-context.md | 101 ++++++++++++++ docs/adr/0009-structured-logging.md | 64 +++++++++ docs/adr/0010-raw-body-processor.md | 81 +++++++++++ docs/adr/0011-expose-expected-directives.md | 63 +++++++++ docs/adr/0012-secruleupdatetargetbytag.md | 87 ++++++++++++ .../adr/0013-tinygo-formatter-registration.md | 67 +++++++++ .../0014-base64decodeext-transformation.md | 80 +++++++++++ docs/adr/0015-case-sensitive-maps.md | 78 +++++++++++ docs/adr/0016-case-sensitive-args.md | 115 ++++++++++++++++ docs/adr/0017-multipart-strict-error.md | 73 ++++++++++ docs/adr/0018-ocsf-audit-log.md | 111 +++++++++++++++ docs/adr/0019-unsafe-stringdata-refactor.md | 70 ++++++++++ docs/adr/0020-secruleupdateactionbyid.md | 73 ++++++++++ docs/adr/0021-square-brackets-in-variables.md | 66 +++++++++ docs/adr/0022-time-variables.md | 118 ++++++++++++++++ docs/adr/0023-base64encode-transformation.md | 64 +++++++++ docs/adr/0024-hexdecode-transformation.md | 69 ++++++++++ .../0025-selectors-on-names-collections.md | 83 ++++++++++++ docs/adr/0026-pmf-short-alias.md | 60 ++++++++ docs/adr/0027-ipmatchf-short-alias.md | 64 +++++++++ docs/adr/0028-syslog-audit-log-writer.md | 77 +++++++++++ docs/adr/0029-json-schema-improvements.md | 95 +++++++++++++ docs/adr/0030-secrequestbodyjsondepthlimit.md | 95 +++++++++++++ docs/adr/0031-multipart-unexpected-eof.md | 95 +++++++++++++ docs/adr/0032-ctl-auditlogparts-plus-minus.md | 91 +++++++++++++ docs/adr/0033-strmatch-operator.md | 83 ++++++++++++ docs/adr/0034-rule-observer-callback.md | 96 +++++++++++++ docs/adr/0035-wafwithrules-interface.md | 113 ++++++++++++++++ docs/adr/0036-remove-root-experimental-dep.md | 64 +++++++++ .../0037-ctl-whole-collection-exclusion.md | 72 ++++++++++ docs/adr/0038-map-for-ruleremovebyid.md | 71 ++++++++++ docs/adr/0039-bulk-allocate-matchdata.md | 64 +++++++++ docs/adr/0040-crslang-antlr4-buildtag.md | 61 +++++++++ docs/adr/0041-ruleremovebyid-range-storage.md | 69 ++++++++++ docs/adr/0042-regex-memoize-default-on.md | 90 ++++++++++++ docs/adr/0043-waf-close-per-owner-memoize.md | 85 ++++++++++++ docs/adr/0044-prefix-transformation-cache.md | 64 +++++++++ .../0045-findstringsubmatchindex-noalloc.md | 65 +++++++++ docs/adr/0046-secuploadkeepfiles-directive.md | 86 ++++++++++++ .../adr/0047-regex-in-ctl-ruleremovetarget.md | 106 +++++++++++++++ docs/adr/0048-ndjson-body-processor.md | 81 +++++++++++ docs/adr/0049-rx-literal-prefilter.md | 92 +++++++++++++ docs/adr/0050-secrxprefilter-directive.md | 100 ++++++++++++++ docs/adr/0051-audit-log-part-j.md | 100 ++++++++++++++ docs/adr/0052-ahocorasick-to-bitmap.md | 96 +++++++++++++ docs/adr/0053-pm-minlen-prefilter.md | 82 +++++++++++ docs/adr/0054-xml-unexpected-eof.md | 61 +++++++++ docs/adr/README.md | 128 ++++++++++++++++++ 56 files changed, 4631 insertions(+) create mode 100644 docs/adr/0000-template.md create mode 100644 docs/adr/0001-response-args-collection.md create mode 100644 docs/adr/0002-secargumentslimit-directive.md create mode 100644 docs/adr/0003-https-audit-log-writer.md create mode 100644 docs/adr/0004-matchedrule-log-method.md create mode 100644 docs/adr/0005-auditlogformatter-interface.md create mode 100644 docs/adr/0006-regex-ahocorasick-memoize.md create mode 100644 docs/adr/0007-uppercase-transformation.md create mode 100644 docs/adr/0008-transaction-context.md create mode 100644 docs/adr/0009-structured-logging.md create mode 100644 docs/adr/0010-raw-body-processor.md create mode 100644 docs/adr/0011-expose-expected-directives.md create mode 100644 docs/adr/0012-secruleupdatetargetbytag.md create mode 100644 docs/adr/0013-tinygo-formatter-registration.md create mode 100644 docs/adr/0014-base64decodeext-transformation.md create mode 100644 docs/adr/0015-case-sensitive-maps.md create mode 100644 docs/adr/0016-case-sensitive-args.md create mode 100644 docs/adr/0017-multipart-strict-error.md create mode 100644 docs/adr/0018-ocsf-audit-log.md create mode 100644 docs/adr/0019-unsafe-stringdata-refactor.md create mode 100644 docs/adr/0020-secruleupdateactionbyid.md create mode 100644 docs/adr/0021-square-brackets-in-variables.md create mode 100644 docs/adr/0022-time-variables.md create mode 100644 docs/adr/0023-base64encode-transformation.md create mode 100644 docs/adr/0024-hexdecode-transformation.md create mode 100644 docs/adr/0025-selectors-on-names-collections.md create mode 100644 docs/adr/0026-pmf-short-alias.md create mode 100644 docs/adr/0027-ipmatchf-short-alias.md create mode 100644 docs/adr/0028-syslog-audit-log-writer.md create mode 100644 docs/adr/0029-json-schema-improvements.md create mode 100644 docs/adr/0030-secrequestbodyjsondepthlimit.md create mode 100644 docs/adr/0031-multipart-unexpected-eof.md create mode 100644 docs/adr/0032-ctl-auditlogparts-plus-minus.md create mode 100644 docs/adr/0033-strmatch-operator.md create mode 100644 docs/adr/0034-rule-observer-callback.md create mode 100644 docs/adr/0035-wafwithrules-interface.md create mode 100644 docs/adr/0036-remove-root-experimental-dep.md create mode 100644 docs/adr/0037-ctl-whole-collection-exclusion.md create mode 100644 docs/adr/0038-map-for-ruleremovebyid.md create mode 100644 docs/adr/0039-bulk-allocate-matchdata.md create mode 100644 docs/adr/0040-crslang-antlr4-buildtag.md create mode 100644 docs/adr/0041-ruleremovebyid-range-storage.md create mode 100644 docs/adr/0042-regex-memoize-default-on.md create mode 100644 docs/adr/0043-waf-close-per-owner-memoize.md create mode 100644 docs/adr/0044-prefix-transformation-cache.md create mode 100644 docs/adr/0045-findstringsubmatchindex-noalloc.md create mode 100644 docs/adr/0046-secuploadkeepfiles-directive.md create mode 100644 docs/adr/0047-regex-in-ctl-ruleremovetarget.md create mode 100644 docs/adr/0048-ndjson-body-processor.md create mode 100644 docs/adr/0049-rx-literal-prefilter.md create mode 100644 docs/adr/0050-secrxprefilter-directive.md create mode 100644 docs/adr/0051-audit-log-part-j.md create mode 100644 docs/adr/0052-ahocorasick-to-bitmap.md create mode 100644 docs/adr/0053-pm-minlen-prefilter.md create mode 100644 docs/adr/0054-xml-unexpected-eof.md create mode 100644 docs/adr/README.md diff --git a/docs/adr/0000-template.md b/docs/adr/0000-template.md new file mode 100644 index 000000000..34612b3e0 --- /dev/null +++ b/docs/adr/0000-template.md @@ -0,0 +1,55 @@ +# ADR-NNNN: + +- **Status:** accepted +- **Date:** YYYY-MM-DD (PR merge date) +- **Version:** vX.Y.Z +- **PR:** [#NNNN](https://github.com/corazawaf/coraza/pull/NNNN) +- **Issue(s):** [#MMMM](https://github.com/corazawaf/coraza/issues/MMMM) — or "No linked issue" +- **Deciders:** @author, @reviewer1, @reviewer2 +- **Category:** Feature | Parity | Perf | Refactor + +## Context and Problem + +Why the change was needed. Quote from the issue or PR body where possible. + +## Decision Drivers + +- driver 1 +- driver 2 + +## Considered Options + +- option A +- option B + +## Decision Outcome + +Chosen: **