From 144fb4648f6b6318f63f65daa12e1583411916b6 Mon Sep 17 00:00:00 2001 From: "Md. Kishor Morol" Date: Fri, 11 Sep 2026 23:20:30 -0400 Subject: [PATCH 1/2] Keep the source-checker tests runnable on Python 3.10 TestCase.enterContext landed in 3.11, so the nine new source-checker tests errored out with AttributeError on 3.10. CI pins 3.12 and stayed green, which hid the raised floor. Swap in start()/addCleanup, which behaves identically and works everywhere. Follow-up to the source-checker tests WhiteHades contributed in #1; the tests and the behaviour they cover are theirs, this only lowers the interpreter floor back to 3.10. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018rw2KxMtReyjCJDwrgVtZR --- tests/test_check_sources.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_check_sources.py b/tests/test_check_sources.py index 6985d12a7..519147831 100644 --- a/tests/test_check_sources.py +++ b/tests/test_check_sources.py @@ -13,9 +13,15 @@ class SourceCheckerTests(unittest.TestCase): def setUp(self): self.responses = {} self.requests = [] - self.enterContext(patch.object(urllib.request, "_opener", None)) + # TestCase.enterContext is 3.11+; start/addCleanup keeps the suite runnable on 3.10. + self.start_patch(patch.object(urllib.request, "_opener", None)) for handler, method in ((urllib.request.HTTPSHandler, "https_open"), (urllib.request.HTTPHandler, "http_open")): - self.enterContext(patch.object(handler, method, side_effect=self.respond)) + self.start_patch(patch.object(handler, method, side_effect=self.respond)) + + def start_patch(self, patcher): + value = patcher.start() + self.addCleanup(patcher.stop) + return value def respond(self, request): self.requests.append(request.full_url) From e6efbfa65c118968214a26bb5b5dd3136cdc26bb Mon Sep 17 00:00:00 2001 From: "Md. Kishor Morol" Date: Sat, 12 Sep 2026 00:04:11 -0400 Subject: [PATCH 2/2] Credit contributors in the README Add an acknowledgements section naming WhiteHades for the search, accessibility, route, source, and validation fixes in #1, so the credit survives however the pull request is merged. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018rw2KxMtReyjCJDwrgVtZR --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index b8a7093ac..7951c626f 100644 --- a/README.md +++ b/README.md @@ -103,4 +103,10 @@ The `Publish Atlas website` workflow revalidates and regenerates `site/` before The atlas covers interactive commands, nested subcommands, CLI flags, configuration, environment variables, shortcuts, hooks, permissions, MCP, skills, and agent controls across all six ecosystems. It stays a living reference rather than a claim that fast-moving vendor surfaces can ever be permanently complete. See [the roadmap](docs/ROADMAP.md). +## Acknowledgements + +Thanks to the people who have improved the atlas beyond its data: + +- [@WhiteHades](https://github.com/WhiteHades) — case-sensitive CLI flag ranking, accessible skip links and mobile navigation, route collision checks, HTTPS redirect enforcement, and validation that reports malformed records instead of raising. + Released under the [MIT License](LICENSE).