Title: agent: remove derived lists and their circular tests when all real consumers are gone · Issue #1816 · usethis-python/usethis-python · GitHub
Open Graph Title: agent: remove derived lists and their circular tests when all real consumers are gone · Issue #1816 · usethis-python/usethis-python
X Title: agent: remove derived lists and their circular tests when all real consumers are gone · Issue #1816 · usethis-python/usethis-python
Description: What happened During a refactoring to make tool ordering a single source of truth, an intermediate derived list (OTHER_TOOLS) was introduced in one commit, then made redundant in the next commit when its only consumer was replaced by a m...
Open Graph Description: What happened During a refactoring to make tool ordering a single source of truth, an intermediate derived list (OTHER_TOOLS) was introduced in one commit, then made redundant in the next commit wh...
X Description: What happened During a refactoring to make tool ordering a single source of truth, an intermediate derived list (OTHER_TOOLS) was introduced in one commit, then made redundant in the next commit wh...
Opengraph URL: https://github.com/usethis-python/usethis-python/issues/1816
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"agent: remove derived lists and their circular tests when all real consumers are gone","articleBody":"## What happened\n\nDuring a refactoring to make tool ordering a single source of truth, an intermediate derived list (`OTHER_TOOLS`) was introduced in one commit, then made redundant in the next commit when its only consumer was replaced by a more direct approach (`ALL_TOOL_SPECS`). The list and its test were not removed, and the oversight was only caught in code review.\n\nThe test for `OTHER_TOOLS` was circular: it asserted that the derived list equalled the same filter expression used to compute it. This tested nothing real — if the derivation was wrong, both sides of the assertion would be equally wrong.\n\n## Root cause\n\nA multi-step refactoring removed all real consumers of an intermediate derived value, but no final audit pass checked whether earlier work in the same PR had become redundant. There is no automated dead-export detection to flag unused module-level constants.\n\n## Generalised principle\n\nAfter any refactoring, scan for intermediate derived values (especially derived lists or filtered collections) introduced earlier in the same PR that may have become redundant. A test that asserts a derived value equals the expression it was derived from is circular — it validates the derivation, not the value. When all real consumers of a derived value are gone, remove both the value and its circular test. A useful heuristic: if the only test of a value is `assert derived == [x for x in source if condition]`, the test is telling you the value should not exist.\n\n## Resolution\n\n`OTHER_TOOLS` and the `TYPE_CHECKING`/`Tool` import that existed solely to annotate it were removed from `all_.py`. The circular `TestOtherTools` test class was deleted. The one meaningful invariant (that `ALL_TOOL_SPECS` stays in sync with `ALL_TOOLS`) was retained under a renamed `TestAllToolSpecs` class.\n\n## Follow-up\n\nConsider whether a static check (e.g. a custom ruff rule or import-linter contract) could detect unused public module-level constants in future.","author":{"url":"https://github.com/nathanjmcdougall","@type":"Person","name":"nathanjmcdougall"},"datePublished":"2026-04-04T09:30:14.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/1816/usethis-python/issues/1816"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:b623ecaf-31c4-e3e6-e3ce-133981719913 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A802:30A7B5:A5E5CD:E7C7BB:6A4C9F1D |
| html-safe-nonce | 791c2f6838f6d40cdc7b6e11a26cd9e8f5002cf461d807e3c48fe6fc5158b132 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBODAyOjMwQTdCNTpBNUU1Q0Q6RTdDN0JCOjZBNEM5RjFEIiwidmlzaXRvcl9pZCI6IjI2MDM1NzY5MDg1MjkzMTE1MTciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 170dd1b9db3296ed315fbe9785f7d36a065569e8eecaa00b75a87901dc4eaab6 |
| hovercard-subject-tag | issue:4204383464 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/usethis-python/usethis-python/1816/issue_layout |
| twitter:image | https://opengraph.githubassets.com/0c224c4cd12d182f1128e8f08761fe9301b035be8bdcf5b1783c7d3575d38298/usethis-python/usethis-python/issues/1816 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/0c224c4cd12d182f1128e8f08761fe9301b035be8bdcf5b1783c7d3575d38298/usethis-python/usethis-python/issues/1816 |
| og:image:alt | What happened During a refactoring to make tool ordering a single source of truth, an intermediate derived list (OTHER_TOOLS) was introduced in one commit, then made redundant in the next commit wh... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | nathanjmcdougall |
| hostname | github.com |
| expected-hostname | github.com |
| None | 3d11bb817438277de2a940854450e83a7d32b6aeb5014e9e6b00a6423900251c |
| turbo-cache-control | no-preview |
| go-import | github.com/usethis-python/usethis-python git https://github.com/usethis-python/usethis-python.git |
| octolytics-dimension-user_id | 216362695 |
| octolytics-dimension-user_login | usethis-python |
| octolytics-dimension-repository_id | 842189705 |
| octolytics-dimension-repository_nwo | usethis-python/usethis-python |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 842189705 |
| octolytics-dimension-repository_network_root_nwo | usethis-python/usethis-python |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | ae90d426644ca15e89bacceb72e51f4e9dbf85f7 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width