ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
markdown_reference_policy.py
Go to the documentation of this file.
1# SPDX-License-Identifier: MIT
2# Copyright (c) 2026 Brighton Sikarskie
3"""Reviewed parsing and absence policy for Markdown reference validation."""
4
5import re
6
7VENDOR_PREFIXES = ("libs/third_party/", "apps/shared_libs/third_party/")
8AUTHORED_VENDOR_INDEXES = frozenset(
9 {"libs/third_party/README.md", "apps/shared_libs/third_party/README.md"}
10)
11REPO_PREFIXES = (
12 ".claude/",
13 ".github/",
14 ".tools/",
15 "apps/",
16 "cmake/",
17 "coprocessor/",
18 "docs/",
19 "examples/",
20 "infra/",
21 "just/",
22 "libs/",
23 "port/",
24 "scripts/",
25 "tests/",
26 "tools/",
27)
28COMPONENT_RELATIVE_PREFIXES = ("inc/", "src/", "tests/")
29ROOT_FILE_TOKENS = (
30 "AGENTS.md",
31 "CHANGELOG.md",
32 "CLAUDE.md",
33 "CMakeLists.txt",
34 "CONTRIBUTING.md",
35 "Doxyfile",
36 "README.md",
37 "THIRD_PARTY_LICENSES.md",
38 "justfile",
39 "pyproject.toml",
40 "uv.lock",
41)
42ROOT_FILE_PATTERN = (
43 r"(?:[A-Z][A-Z0-9_-]*\.(?:md|toml|lock|txt|ya?ml)|"
44 + "|".join(re.escape(path) for path in ROOT_FILE_TOKENS)
45 + r")"
46)
47BARE_MARKDOWN_PATTERN = r"[a-z0-9][A-Za-z0-9_-]*\.[Mm][Dd]"
48BARE_FILE_SUFFIXES = (
49 "S",
50 "bin",
51 "bmp",
52 "c",
53 "cbr",
54 "cbz",
55 "cc",
56 "cmake",
57 "conf",
58 "cpp",
59 "css",
60 "csv",
61 "dtsi",
62 "elf",
63 "env",
64 "epub",
65 "gif",
66 "gz",
67 "h",
68 "hex",
69 "hpp",
70 "html",
71 "jof",
72 "jpeg",
73 "jpg",
74 "js",
75 "json",
76 "just",
77 "ld",
78 "manifest",
79 "map",
80 "o",
81 "opf",
82 "otf",
83 "patch",
84 "pdf",
85 "png",
86 "py",
87 "rar",
88 "sh",
89 "svg",
90 "tar",
91 "toml",
92 "tsv",
93 "txt",
94 "webp",
95 "xhtml",
96 "xz",
97 "yaml",
98 "yml",
99 "zip",
100)
101BARE_FILE_SUFFIX_PATTERN = "|".join(re.escape(suffix) for suffix in BARE_FILE_SUFFIXES)
102BARE_CODE_FILE_RE = re.compile(
103 r"(?<![A-Za-z0-9_./*?{}<>$-])((?:(?:[A-Za-z0-9_.,-]|<[a-z][a-z0-9_-]*>|"
104 r"\$\{[A-Z][A-Z0-9_]*}|\{[a-z][a-z0-9_]*}|"
105 r"\{[A-Za-z0-9_-]+(?:,[A-Za-z0-9_-]+)+\}|[*?])+\."
106 rf"(?:{BARE_FILE_SUFFIX_PATTERN})))"
107 r"(?![A-Za-z0-9_./*?{}<>$-])"
108)
109
110MIN_TRACKED_MARKDOWN = 450
111MIN_FIRST_PARTY_MARKDOWN = 370
112MIN_VENDOR_MARKDOWN = 75
113MIN_LINK_REFERENCES = 550
114MIN_PATH_REFERENCES = 500
115PARSER_RUNTIME_LIMIT_SECONDS = 2.0
116
117REMOTE_SCHEMES = frozenset({"data", "ftp", "git", "http", "https", "mailto", "ssh", "tel"})
118TRAILING_PATH_JUNK = ".,;:!?)`'\"|"
119PATH_RE = re.compile(
120 r"(?<![A-Za-z0-9_./-])((?:"
121 + ROOT_FILE_PATTERN
122 + "|"
123 + BARE_MARKDOWN_PATTERN
124 + r"|(?:(?:\.\./)*(?:"
125 + "|".join(re.escape(prefix) for prefix in (*REPO_PREFIXES, *COMPONENT_RELATIVE_PREFIXES))
126 + r")[A-Za-z0-9_./*?{}$@,+<>:-]+|(?:\.\./)+[A-Za-z0-9_.-]+(?:/[A-Za-z0-9_.-]+)*)))"
127)
128HTML_TARGET_RE = re.compile(r"\b(?:href|src)\s*=\s*([\"'])(.*?)\1", re.IGNORECASE)
129EXPLICIT_ANCHOR_RE = re.compile(r"\b(?:id|name)\s*=\s*([\"'])(.*?)\1", re.IGNORECASE)
130HTML_PATH_SEPARATOR_RE = re.compile(r"(?:<br\b[^>]*>|</[A-Za-z][A-Za-z0-9_-]*\s*>)", re.IGNORECASE)
131REFERENCE_DEF_RE = re.compile(r"^\s{0,3}\‍[(?!\^)([^]]+)]\s*:\s*(\S.*)$")
132REFERENCE_USE_RE = re.compile(r"\‍[([^]]+)]\‍[([^]]*)]")
133SHORTCUT_PATH_REFERENCE_RE = re.compile(
134 r"(?<![!\‍]])\‍[((?:(?:\.\./)*(?:"
135 + "|".join(re.escape(prefix) for prefix in REPO_PREFIXES)
136 + r")[A-Za-z0-9_./-]+|"
137 + ROOT_FILE_PATTERN
138 + r"))](?!\s*[\‍[(])"
139)
140ATX_HEADING_RE = re.compile(r"^\s{0,3}(#{1,6})\s+(.*?)\s*#*\s*$")
141SETEXT_HEADING_RE = re.compile(r"^\s{0,3}(?:=+|-+)\s*$")
142FENCE_RE = re.compile(r"^ {0,3}(`{3,}|~{3,})")
143LINE_CITATION_RE = re.compile(r":\d+(?:-\d+)?(?::\d+)?$")
144LOCAL_LINE_FRAGMENT_RE = re.compile(r"L\d+(?:-L?\d+)?$", re.IGNORECASE)
145SYMBOL_SUFFIX_RE = re.compile(r"::.*$")
146SOUP_LOCAL_PATH_RE = re.compile(r"^- \*\*Local path\*\*: `([^`]+)`\s*$", re.MULTILINE)
147WORK_FIXTURE_PATH = "../escape"
148SOUP_DECLARED_ABSENCES = {
149 "docs/SOUP/libwebp.md": frozenset({"src/enc/*.c", "src/mux/", "src/demux/"})
150}
151LIBWEBP_ABSENCE_CLAUSE = (
152 " (`src/enc/*.c`), the muxer/demuxer (`src/mux/`, `src/demux/`), "
153 "`sharpyuv/`, the CLI tools (`examples/`, `imageio/`) and `extras/` are "
154 "**not** vendored"
155)
156QUALIFICATION_RELEASE_SOURCES = frozenset(
157 {
158 "docs/qualification/SCMP.md",
159 "docs/qualification/SQAP.md",
160 "docs/qualification/release/README.md",
161 }
162)
163TOOL_PRIVATE_VENDOR_SOURCES = frozenset(
164 {
165 "apps/shared_libs/README.md",
166 "docs/SOUP/README.md",
167 "docs/sbom/patches/README.md",
168 "libs/third_party/README.md",
169 "tools/README.md",
170 }
171)
172TOOL_PRIVATE_OWNERSHIP_INDEXES = frozenset(
173 {"apps/shared_libs/README.md", "libs/third_party/README.md"}
174)
175TOOL_PRIVATE_CLAUSE_PATTERNS = {
176 "apps/shared_libs/README.md": r"The future path `{token}` must not become",
177 "docs/SOUP/README.md": r"may live at `{token}`, but only when it is truly tool-exclusive",
178 "docs/sbom/patches/README.md": r"future explicitly registered `{token}` component",
179 "libs/third_party/README.md": r"The future path is `{token}`, but only with an SBOM",
180 "tools/README.md": r"`{token}` subtree is reserved for a dependency used exclusively",
181}
182
183SYSTEM_HEADER_BASENAMES = frozenset(
184 {
185 "arm_cmse.h",
186 "assert.h",
187 "ethosu_driver.h",
188 "setjmp.h",
189 "stdarg.h",
190 "stdbool.h",
191 "stdio.h",
192 }
193)
194DECLARED_BARE_CODE_FILES = {
195 ("apps/host/mdl/README.md", "robots.txt"): "remote HTTP resource name",
196 ("apps/host/cbz2jof/README.md", "input.cbz"): "usage-example CBZ input name",
197 ("apps/host/cbz2jof/README.md", "book.cbz"): "usage-example CBZ input name",
198 ("apps/host/cbz2jof/README.md", "page-0001.jof"): "illustrative generated page-atlas name",
199 ("apps/host/cbz2jof/README.md", "page-0002.jof"): "illustrative generated page-atlas name",
200 ("CLAUDE.md", "_internal.h"): "documented internal-header naming convention",
201 ("PHILOSOPHIES.md", "sqlite3.c"): "linked upstream SQLite amalgamation example",
202 ("docs/HIL_SUITE.md", "dwf.h"): "header installed from the external WaveForms package",
203 ("docs/COVERAGE.md", "summary.json"): "generated coverage report",
204 ("docs/COVERAGE.md", "compile_commands.json"): "generated CMake compilation database",
205 ("docs/COVERAGE.md", "summary.txt"): "generated coverage report",
206 ("THIRD_PARTY_LICENSES.md", "miniz-3.0.2.zip"): "pinned upstream release artifact",
207 (
208 "coprocessor/esp32c6/README.md",
209 "wifi.env",
210 ): "gitignored local Wi-Fi credentials beside the tracked template",
211 ("docs/ARCHITECTURE.md", "crt0.o"): "conceptual toolchain startup-object name",
212 ("docs/DOCS.md", "footer.html"): "discarded doxygen HTML-template output",
213 ("docs/IDE.md", "compile_commands.json"): "generated CMake compilation database",
214 (
215 "docs/INFRASTRUCTURE.md",
216 "k3s-runner-maintenance.sh",
217 ): "explicitly host-owned script outside this repository",
218 ("docs/RING_AND_WORLD.md", "my_driver.c"): "illustrative @file fixture name",
219 ("docs/ROOT_OF_TRUST.md", "history.json"): "runtime root-of-trust state file",
220 ("docs/ROADMAP.md", "ra8_xxx_regs.h"): "archived driver-template placeholder",
221 ("docs/STACK_USAGE.md", "${RA8_APP_NAME}.elf"): "generated app ELF template",
222 ("docs/SOUP/esp-hosted-host.md", "esp_timer.h"): "explicitly unvendored upstream header",
223 (
224 "docs/SOUP/esp-hosted-host.md",
225 "esp_wifi_types.h",
226 ): "explicitly unvendored upstream header",
227 ("docs/SOUP/esp-hosted-host.md", "portmacro.h"): "upstream FreeRTOS header",
228 ("docs/SOUP/README.md", "miniz-3.0.2.zip"): "pinned upstream release artifact",
229 ("docs/SOUP/README.md", ".tar.xz"): "archive-format extension, not a repository file",
230 ("docs/SOUP/miniz.md", "miniz-3.0.2.zip"): "pinned upstream release artifact",
231 (
232 "docs/SOUP/tflite-micro.md",
233 "*_test.cc",
234 ): "explicitly excluded upstream test-source pattern",
235 ("docs/SOUP/xz_embedded.md", ".tar.xz"): "archive-format extension, not a repository file",
236 (
237 "docs/SOUP/tf-psa-crypto.md",
238 "generate_driver_wrappers.py",
239 ): "upstream generation tool, not vendored source",
240 ("docs/VENDOR_BLOBS.md", "r_rsip_*.c"): "explicitly absent protected FSP sources",
241 ("docs/VENDOR_BLOBS.md", "hw_sce_*.c"): "older spelling of absent protected FSP sources",
242 ("docs/VENDOR_BLOBS.md", "r_rsip_reg.h"): "explicitly absent protected FSP header",
243 ("docs/VENDOR_BLOBS.md", "r_rsip_util.h"): "explicitly absent protected FSP header",
244 ("docs/formats/BINARY_FORMATS.md", "foo.bin"): "illustrative binary input name",
245 ("docs/formats/JOF.md", "sample.jof"): "generated walkthrough output",
246 ("docs/formats/JOF.md", "sample.png"): "generated walkthrough input",
247 ("docs/formats/ROT1.md", "body.bin"): "protocol payload filename",
248 ("docs/formats/ROT1.md", "signed.bin"): "generated signed-envelope example",
249 (
250 "docs/sbom/patches/README.md",
251 "0001-description.patch",
252 ): "illustrative ordered patch filename",
253 (
254 "docs/sbom/patches/README.md",
255 "0002-description.patch",
256 ): "illustrative ordered patch filename",
257 ("docs/qualification/HW_IN_LOOP_RUNNER.md", "svc.sh"): "retired runner tombstone",
258 ("docs/qualification/HW_IN_LOOP_RUNNER.md", "config.sh"): "retired runner tombstone",
259 (
260 "docs/qualification/MISRA_DEVIATIONS.md",
261 "misra.py",
262 ): "cppcheck-owned upstream addon",
263 ("docs/qualification/SVCP.md", "mcdc.txt"): "generated MC/DC report",
264 ("docs/qualification/SVCP.md", "summary.txt"): "generated evidence summary",
265 ("docs/qualification/SDD.md", "_internal.h"): "documented internal-header convention",
266 ("docs/qualification/SRS.md", "_regs.h"): "documented register-header suffix",
267 ("docs/qualification/SVR.md", "r_usb_pdriver.c"): "upstream FSP source comparison",
268 (
269 "docs/reference/ra8p1_vs_ra8d2.md",
270 "bsp_linker.c",
271 ): "upstream RASC-generated source comparison",
272 (
273 "docs/reference/ra8p1_vs_ra8d2.md",
274 "R7KA8{P1,D2}KF_core0.h",
275 ): "upstream FSP device-header brace pattern",
276 (
277 "examples/ek_ra8d2/hw_pending/ereader_zoom/README.md",
278 "dst.h",
279 ): "structure-member expression, not a filename",
280 (
281 "examples/ek_ra8d2/hw_pending/i2c_peripheral_responder/README.md",
282 "bsp_elc.h",
283 ): "explicitly absent upstream FSP header",
284 ("infra/network/PI_PROVISIONING.md", "custom.toml"): "Raspberry Pi boot-media file",
285 ("infra/network/PI_PROVISIONING.md", "userconf.txt"): "Raspberry Pi boot-media file",
286 ("infra/network/PI_PROVISIONING.md", "cmdline.txt"): "Raspberry Pi boot-media file",
287 ("infra/network/PI_PROVISIONING.md", "config.txt"): "Raspberry Pi boot-media file",
288 ("infra/network/README.md", "userconf.txt"): "Raspberry Pi boot-media file",
289 ("scripts/emu/README.md", "eil.conf"): "explicitly absent EIL configuration file",
290 ("scripts/secrets/README.md", "init.json"): "external OpenBao initialization response",
291 ("scripts/secrets/README.md", "approle.env"): "operator-owned credential output",
292 ("scripts/secrets/README.md", "values.env"): "operator-owned secret input",
293 (
294 "tests/golden/ereader_chrome/README.md",
295 "ereader_ui.elf",
296 ): "generated firmware input for the golden test",
297 ("tests/fixtures/webp/README.md", "pattern.png"): "generated fixture source image",
298 ("tests/fixtures/webp/README.md", "tall.png"): "generated fixture source image",
299 ("tests/fixtures/webp/README.md", "wide.png"): "generated fixture source image",
300}
301
302DECLARED_BARE_CONTEXT_SHA256 = {
303 ("apps/host/cbz2jof/README.md", "input.cbz"): (
304 "97a72df95225aebaec034376e1f73135d43a9b2b73899a664096d64277e14aef",
305 ),
306 ("apps/host/cbz2jof/README.md", "book.cbz"): (
307 "0217039478dd1eac744cd5894ff23da46459c79111d320c29e96a0681ea80465",
308 "203bd06813f324943dd5a15aafdadd515ea01e6edc10a8e225f05e88bb267bbb",
309 "3f469c76db525af480440b4ca600a54a193e9f4d78a875cdbc0eaadb4025091c",
310 "4e4c08db311fc1df442c31f2036d11ecd3d42ce671ec7631765bc5a9e8df8618",
311 ),
312 ("apps/host/cbz2jof/README.md", "page-0001.jof"): (
313 "dc174a6691055199aa44ade2890edad972a6df441dcdba814b61c06f952697e1",
314 ),
315 ("apps/host/cbz2jof/README.md", "page-0002.jof"): (
316 "7321dcf5d5bee5494a18da23a02a90b4b53cff5c17b9ebe9d97eecae49e01a95",
317 ),
318 ("CLAUDE.md", "_internal.h"): (
319 "2caf71102132104e14492534d8174f0e5873f0000d411c07c8e0c99e77a83385",
320 "34fda9c9ca41bb45942eb3b4e651330fd2b397bfa80fd077811a86ad74ffeed1",
321 ),
322 ("PHILOSOPHIES.md", "sqlite3.c"): (
323 "2a90d03b4f22054b6163b626a3214d87b29015f8ad7acd4c335ac7cd6efc961c",
324 ),
325 ("THIRD_PARTY_LICENSES.md", "miniz-3.0.2.zip"): (
326 "311d4124a6d2a5d973a937b4b5f2598aa9358d52e100d9fc518fea7b412445ab",
327 "583b67a24e9007378cb5a39dde6fb515369a5f86798b33be5bdaf214788248c9",
328 ),
329 ("apps/host/mdl/README.md", "robots.txt"): (
330 "d5ff2637aa208a784cc116e766dd34d1b21a1df08726647f618dbe2259fcebd1",
331 "fd54e89acf94b1c510036a5e47bfe0e834820ab78869bf5e1f53b3c2e27588e3",
332 ),
333 ("coprocessor/esp32c6/README.md", "wifi.env"): (
334 "f75141d2b345f67b480e48cb15484247dc2359dbbe20aae28a05d577929e370b",
335 ),
336 ("docs/ARCHITECTURE.md", "crt0.o"): (
337 "883484b3e1ba2990a65e62821f720868f377f0d749a2494c0124fa44b7a4a3b6",
338 "989a280aa3d47196eaeb29ba04678f950c0eb417fbb79fe3fa4846ed99c103eb",
339 ),
340 ("docs/COVERAGE.md", "compile_commands.json"): (
341 "9164e4797e1e2cf6ee410f257b49ec32bb0fb7acf89f5df4669e5be84c8cbc60",
342 ),
343 ("docs/COVERAGE.md", "summary.json"): (
344 "85a783a432aee72a459669b7350679aaf89192f60b836604676898ae1c3efb8c",
345 ),
346 ("docs/COVERAGE.md", "summary.txt"): (
347 "f7743a957bc25a7953b672f7b8bf4de3129a55f0954a507db7ee423a5854662e",
348 ),
349 ("docs/DOCS.md", "footer.html"): (
350 "e5ff28637d3b499d8db299fb4417c78d486363c10c0ea503613f00dded8a0084",
351 ),
352 ("docs/HIL_SUITE.md", "dwf.h"): (
353 "429e72c72cbf33e8b2eb17e1756485f6541f159b459688ba974415d9859d76f1",
354 ),
355 ("docs/IDE.md", "compile_commands.json"): (
356 "abdd65fa156e20bf329e192103fb7eb420695ea91046790214f96f898931434a",
357 ),
358 ("docs/INFRASTRUCTURE.md", "k3s-runner-maintenance.sh"): (
359 "fbb8cfd2fc7fa0c0961037ee1ce977e4a50c946dae52cc2038aa729c837face6",
360 ),
361 ("docs/RING_AND_WORLD.md", "my_driver.c"): (
362 "f467c3e567486b0157a3a1aca74864b5db02a8749f78bddbe1ecbfd1689eacda",
363 ),
364 ("docs/ROADMAP.md", "ra8_xxx_regs.h"): (
365 "bc10b0c18d4b000c52f44c14cf8c4b2cf8ff9a6ce005a68bd9c9b4bd56ff06fa",
366 ),
367 ("docs/ROOT_OF_TRUST.md", "history.json"): (
368 "df7ec6d5427515f6b358ef674fe7e302fb6c6e3c077537624ac213a690302456",
369 ),
370 ("docs/SOUP/README.md", ".tar.xz"): (
371 "4fb5b25547ce892e053cb081ce35f1f5fd75e7732a3fdf9e7139b57554298fcc",
372 ),
373 ("docs/SOUP/README.md", "miniz-3.0.2.zip"): (
374 "3be044f943ab991e57bbbe81f4a65edc2012acc4afd01b14c75edb0cc73acbbd",
375 ),
376 ("docs/SOUP/esp-hosted-host.md", "esp_timer.h"): (
377 "16e8a3528751960b19685b63f95d14a48e6ab19f52c395f294a975e6f075530a",
378 ),
379 ("docs/SOUP/esp-hosted-host.md", "esp_wifi_types.h"): (
380 "16e8a3528751960b19685b63f95d14a48e6ab19f52c395f294a975e6f075530a",
381 ),
382 ("docs/SOUP/esp-hosted-host.md", "portmacro.h"): (
383 "d5b3ca320e35ceb5af213c3de985e4cc621dcb7edb17dc3c7b089b58ace168b4",
384 ),
385 ("docs/SOUP/miniz.md", "miniz-3.0.2.zip"): (
386 "832faa326305edf08430ec91eebc697b0a1ee9d3b412bf4fa4a549bd2a373242",
387 "c53637b11351d9ffa5abe88209834b3f61f96a9e86dce13f68416311bea9637e",
388 ),
389 ("docs/SOUP/tf-psa-crypto.md", "generate_driver_wrappers.py"): (
390 "8c6f5aa29ef64f51f237391f0daf8437afaf256a92417da46dd78f580c0a8cb9",
391 ),
392 ("docs/SOUP/tflite-micro.md", "*_test.cc"): (
393 "84f4401aa0e1d289e61cea7d7e5ba1e130004ab15496847fa9818957e8c547a5",
394 ),
395 ("docs/SOUP/xz_embedded.md", ".tar.xz"): (
396 "fc674ab41f256e3dafe16ad4073c4e09b6aafb89e73ef7bedce0b151d10549cc",
397 ),
398 ("docs/STACK_USAGE.md", "${RA8_APP_NAME}.elf"): (
399 "f56770aa18eb092d118e8a620f71ebbda9340c89cd2a2a20274384b873c7f29e",
400 ),
401 ("docs/VENDOR_BLOBS.md", "hw_sce_*.c"): (
402 "d0df5f74c37dd6fb765b34c3bdb1525d3b12b59703a78c98b3c155a9d60b83ee",
403 ),
404 ("docs/VENDOR_BLOBS.md", "r_rsip_*.c"): (
405 "08f1a6e06ee2e148ba5ee7116e1011011c2d7a78b7139cfe2381175bd3307955",
406 ),
407 ("docs/VENDOR_BLOBS.md", "r_rsip_reg.h"): (
408 "ab6d4011ca5765b444f7387fb90eb532cdcb936c2ec9bcde3492a441de2317dd",
409 ),
410 ("docs/VENDOR_BLOBS.md", "r_rsip_util.h"): (
411 "61e9718e928b6b8ef4d0693ac6c0efbf7721a58f12386e5040bd3f1247571fb6",
412 ),
413 ("docs/formats/BINARY_FORMATS.md", "foo.bin"): (
414 "44f15ea667e9cee7be7419586bcd8781e31757cfebd901f448f35e604bd9c7e8",
415 ),
416 ("docs/formats/JOF.md", "sample.jof"): (
417 "63cb04d26b9564158d5e9169e58a41cfc6391d494a6ceba960406f9e319c3c58",
418 "7d0b721b40d37569c9bbf89374e078b54e01a8036c65b928c52ba50e2adb85df",
419 "f471bc2375814e128b93f7ebab5228b16ad588d36903bcaa8951cd4476c16c1e",
420 ),
421 ("docs/formats/JOF.md", "sample.png"): (
422 "7d0b721b40d37569c9bbf89374e078b54e01a8036c65b928c52ba50e2adb85df",
423 "b675c478bc3bdc214d42957a802fad4dc5b843f7ec3b4e01455ddbde9674a95b",
424 "fa5b6cad5d44c3641ea1f08c311a8bcbb8ff9e6667da909c879e0afda5fb6fcc",
425 ),
426 ("docs/formats/ROT1.md", "body.bin"): (
427 "6a27096b8247e6f5075e2e8459fff0c58ecdeaca405536caeb217327c3b6a0b9",
428 "6a27096b8247e6f5075e2e8459fff0c58ecdeaca405536caeb217327c3b6a0b9",
429 "cefc378262d698188515df915eed468c37349599e7a3bfb923aa4b893de7f9e8",
430 ),
431 ("docs/formats/ROT1.md", "signed.bin"): (
432 "b8884236ed0c0ab543685ec3c13c2bb5048772a6a0a58ba3ba529748fb64d1ce",
433 ),
434 ("docs/qualification/HW_IN_LOOP_RUNNER.md", "config.sh"): (
435 "f65ee40de147311f4900dba8579bf50fa96006095f8e0069c4d21d4267f46d66",
436 ),
437 ("docs/qualification/HW_IN_LOOP_RUNNER.md", "svc.sh"): (
438 "556c565bd251c502ea76fb7d915ebd2e5e99c50fb8d6710a67f631c7332e63c2",
439 ),
440 ("docs/qualification/MISRA_DEVIATIONS.md", "misra.py"): (
441 "63f20d0743870e3c91989336c37c668f679ff3cf72d910596bd15f799b003f3c",
442 "7e6022a581c7e6db64483412fc2dab3ed2fdbe179a3c0b0d561f80e6f075707c",
443 "89a9b6a12528c68b61874a6d1a52a71013ae92246a102ab85859fe74648c7345",
444 ),
445 ("docs/qualification/SDD.md", "_internal.h"): (
446 "db14b03826b487de50fa02785aa4cad0fc396081d746bc914abad51bf514b2c7",
447 ),
448 ("docs/qualification/SRS.md", "_regs.h"): (
449 "b55d9b2d96b21b0fd29c92e330537699f785fc01a8f6e1b2f8012046cb642d62",
450 ),
451 ("docs/qualification/SVCP.md", "mcdc.txt"): (
452 "f769efea027818f81917bf2fef9f993d96a548ff85bba8c882064d938b1f90d6",
453 ),
454 ("docs/qualification/SVCP.md", "summary.txt"): (
455 "3e6b72d9a536e5ec2bd4e3ae94f15e673361bd2eee71148208cef84c96d44bd7",
456 ),
457 ("docs/qualification/SVR.md", "r_usb_pdriver.c"): (
458 "ff3a66bfe8bf027bb3c81c94b68095142e954df77903ae2ae2ff5790d758841e",
459 ),
460 ("docs/reference/ra8p1_vs_ra8d2.md", "R7KA8{P1,D2}KF_core0.h"): (
461 "d984700bdee5ea78d5db166186850fdc22bfe1704fe0f2aa92d08f25833c9717",
462 ),
463 ("docs/reference/ra8p1_vs_ra8d2.md", "bsp_linker.c"): (
464 "d66042eb9df30051ded10cf042539f9b74864eec10168a00a6968585388f1efc",
465 ),
466 ("docs/sbom/patches/README.md", "0001-description.patch"): (
467 "ca0d5e6e847a06cfceb472533df0cc4026eddd493a98f00993827d5dd6ac8a0a",
468 ),
469 ("docs/sbom/patches/README.md", "0002-description.patch"): (
470 "ca0d5e6e847a06cfceb472533df0cc4026eddd493a98f00993827d5dd6ac8a0a",
471 ),
472 ("examples/ek_ra8d2/hw_pending/ereader_zoom/README.md", "dst.h"): (
473 "0f8fdbd61f30ee429390eb462edcdf079680a34738e33472e3442da545c997dd",
474 ),
475 ("examples/ek_ra8d2/hw_pending/i2c_peripheral_responder/README.md", "bsp_elc.h"): (
476 "005183fe4fb539f8213bff29ac24a236862e8b818739605acd5a28e8d006640d",
477 ),
478 ("infra/network/PI_PROVISIONING.md", "cmdline.txt"): (
479 "cb9037f30531a3de25e6711928b09c032d76c049419e194c9d4b8260d4e7c72b",
480 ),
481 ("infra/network/PI_PROVISIONING.md", "config.txt"): (
482 "1fd50968f05c27859371f1f3eb9c32cdd648d9e20e06542c541eb10e17730b59",
483 "25d9682c48bceb005649643c2f6ad9a662bc49c20af9ea8d19c8aa43f64db9d5",
484 "62b444c19bfddd6a958d1507cf13cc7c338150e6cf2a34f5db23ea4fb2d2c9fa",
485 ),
486 ("infra/network/PI_PROVISIONING.md", "custom.toml"): (
487 "6bed3284d29d8a632bcd915b0c490c299f87c9ca9be6535244999b353f50aea9",
488 "b18b03a38981e9d6e99770e861b0cad7bd325e5089ac99827883db95ac64c2ac",
489 "fe55427a039ee5c49204c72e37a09de5ee8bbfcd903e4b5c7582c44fc57fad8b",
490 ),
491 ("infra/network/PI_PROVISIONING.md", "userconf.txt"): (
492 "610e9bfd35b731f3877431c2218f52a59a2a6eb717f9575fbe52145ea742a6ac",
493 "71b05004f1e2a83c58de5431019be9b09413ca261a671ec61cd37ba9a1dc43c0",
494 "ebd8f286df9340e424d154a58d7c1803158f1ef227d8dadc447c74aac86b178f",
495 ),
496 ("infra/network/README.md", "userconf.txt"): (
497 "60c475f246ca346f4adbd24f980f314cb0fff073416707aea40607606435b486",
498 ),
499 ("scripts/emu/README.md", "eil.conf"): (
500 "08c3c36c3dbe49e3a52fc345986238560cd81ba66c83f9ad540cffaa8a11a14c",
501 ),
502 ("scripts/secrets/README.md", "approle.env"): (
503 "497d4653c87cac05a67b18d4adb9458dde7152c4690fa0fde79f5a95e2cbf824",
504 ),
505 ("scripts/secrets/README.md", "init.json"): (
506 "6388a4c6a0a5069bf77c99e5200330936b08d046f5f3eb741f8a956e22ad39eb",
507 ),
508 ("scripts/secrets/README.md", "values.env"): (
509 "497d4653c87cac05a67b18d4adb9458dde7152c4690fa0fde79f5a95e2cbf824",
510 ),
511 ("tests/fixtures/webp/README.md", "pattern.png"): (
512 "831ccfeee9be6bda44897687af0c3ef471a4f4867089578a2c96956408697b93",
513 "9f370e37f9651bc6e7cdb6da8fedfcaca63a1190e9fa35423bd89350ae4d44e6",
514 "e88a5a6934d6641646e8c31ccd5fe99394a4b90184ec7d0cb1ed122a0107d093",
515 ),
516 ("tests/fixtures/webp/README.md", "tall.png"): (
517 "3b7308e8cdcb6d13d5d824eb4acf0a9cc8c294456e08930ed068d86d671a7a7f",
518 "b896607fcbf5c4f574da907196b6fdb32af33af263bbfd0c94818c6ceb73681f",
519 ),
520 ("tests/fixtures/webp/README.md", "wide.png"): (
521 "2a4998203c1e8c307c33ecda24d3edee42286d550af044801ada385737762663",
522 "9a2a452b55ce33c4f0f3bf893ca88a0fabf482c03b9d4114523cff4574f408c1",
523 ),
524 ("tests/golden/ereader_chrome/README.md", "ereader_ui.elf"): (
525 "58ab9fdb7f029d4ff56f95f5000680b2486823cc8923eca8742f521314c29f37",
526 ),
527}