diff --git a/tests/test_doc_pages.py b/tests/test_doc_pages.py index 4a3ef5d69..516c7a5dc 100644 --- a/tests/test_doc_pages.py +++ b/tests/test_doc_pages.py @@ -1794,6 +1794,21 @@ class ReportExcerptIsTheRun(unittest.TestCase): self.assertIn(line, printed) +class ClaimRuleNamesTheSizeProof(unittest.TestCase): + """architecture.md said a file found by its name claims nothing, while + slots.py has counted a name-found copy at the declared size against a + platform file of another size since 2b535525e.""" + + def test_the_page_states_what_slots_counts(self): + import slots + + self.assertIn(slots.SIZE_EXACT, slots.PROVEN_STATUSES) + page = " ".join((ROOT / "wiki" / "architecture.md").read_text(encoding="utf-8").split()) + section = page.split("### When both layers claim one destination", 1)[1].split("###", 1)[0] + self.assertIn(f"(`{slots.SIZE_EXACT}`)", section) + self.assertIn("Two files of equal size are revisions", section) + + class SkipFlagsNameTheSteps(unittest.TestCase): """--skip-packs said "add --skip-docs to stop after verify" while 4d and 4e still ran, and the flag table left 8b out of --skip-docs.""" diff --git a/wiki/architecture.md b/wiki/architecture.md index e2cafa57b..69889c947 100644 --- a/wiki/architecture.md +++ b/wiki/architecture.md @@ -180,7 +180,11 @@ A platform and an emulator profile can each name a different file for the same place in the BIOS folder: RetroBat puts its own `ATARIOSB.ROM` at `bios/ATARIOSB.ROM`, where atari800 reads another dump. A claim counts only when it rests on content or on the path. A file found by its name alone claims -nothing. The pack then answers to whoever asked for it: +nothing, unless its copy has the exact size the profile declares and the +platform's file has another size (`size_exact`): RetroDECK's `sgb2.boot.rom` is +the Super Game Boy 2 SNES program ROM where supersnes9x reads a 256-byte boot ROM. +Two files of equal size are revisions, not a conflict. The pack then answers to +whoever asked for it: - A **platform pack** must leave the frontend's own check green, since a user reading red concludes the pack is broken. Where the frontend only looks for