Title: agent: tool config specs should only manage the tool's own config files · Issue #1867 · usethis-python/usethis-python · GitHub
Open Graph Title: agent: tool config specs should only manage the tool's own config files · Issue #1867 · usethis-python/usethis-python
X Title: agent: tool config specs should only manage the tool's own config files · Issue #1867 · usethis-python/usethis-python
Description: What happened When dogfooding usethis tool zensical in a project that already had a mkdocs.yml with content, zensical serve failed with "Missing required setting: site_name" because zensical.toml was created empty. Root cause The Zensica...
Open Graph Description: What happened When dogfooding usethis tool zensical in a project that already had a mkdocs.yml with content, zensical serve failed with "Missing required setting: site_name" because zensical.toml w...
X Description: What happened When dogfooding usethis tool zensical in a project that already had a mkdocs.yml with content, zensical serve failed with "Missing required setting: site_name" because zensi...
Opengraph URL: https://github.com/usethis-python/usethis-python/issues/1867
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"agent: tool config specs should only manage the tool's own config files","articleBody":"## What happened\n\nWhen dogfooding `usethis tool zensical` in a project that already had a `mkdocs.yml` with content, `zensical serve` failed with \"Missing required setting: site_name\" because `zensical.toml` was created empty.\n\n## Root cause\n\nThe ZensicalToolSpec config spec listed both `ZensicalTOMLManager` and `MkDocsYMLManager` as file managers with `first_content` resolution. When an existing `mkdocs.yml` had content, the resolution algorithm selected `mkdocs.yml` as the active file manager. Since `mkdocs.yml` already contained the required settings, `add_configs()` was a no-op — and `zensical.toml` (which had been created empty via `.touch()`) was never populated. The `zensical` CLI then read the empty `zensical.toml` and failed.\n\n## Generalised principle\n\nWhen defining a tool's config spec, only include file managers for config files that the tool itself reads and writes. Do not include another tool's config file as a managed file manager unless the current tool genuinely reads from that file at runtime. Sharing config file managers across tool specs creates subtle bugs when the resolution algorithm selects a foreign config file and skips writing to the tool's own config file.\n\n## Resolution\n\nRemoved `MkDocsYMLManager` and its associated config entries from `ZensicalToolSpec.config_spec()`. The Zensical tool now only manages `zensical.toml`. Updated the `TestMkDocsYMLFallback` test to verify that `zensical.toml` receives config even when `mkdocs.yml` is present.\n\n## Follow-up\n\nNone.","author":{"url":"https://github.com/nathanjmcdougall","@type":"Person","name":"nathanjmcdougall"},"datePublished":"2026-04-07T18:41:24.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/1867/usethis-python/issues/1867"}
| 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:29177e7b-2031-1f83-b8bf-fe321c6a95b8 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D1A4:27C67C:1E6C122:2BDDD41:6A4D0844 |
| html-safe-nonce | ccc91778d87ddb8d206f8d447ef8ea5fe61148c3f493cd2f74b26d64a7d3c202 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMUE0OjI3QzY3QzoxRTZDMTIyOjJCRERENDE6NkE0RDA4NDQiLCJ2aXNpdG9yX2lkIjoiMzkwMzkzOTgwODU2OTY1NzQxMiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 0c037724303cce126e43f0a90bad7d8402a39d143711bae36d15659d05592622 |
| hovercard-subject-tag | issue:4219852638 |
| 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/1867/issue_layout |
| twitter:image | https://opengraph.githubassets.com/fe2b0e9f2648a180f77af3191bbc0faac0843bf795357c5b26f93ca471eab15c/usethis-python/usethis-python/issues/1867 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/fe2b0e9f2648a180f77af3191bbc0faac0843bf795357c5b26f93ca471eab15c/usethis-python/usethis-python/issues/1867 |
| og:image:alt | What happened When dogfooding usethis tool zensical in a project that already had a mkdocs.yml with content, zensical serve failed with "Missing required setting: site_name" because zensical.toml w... |
| 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 | 31e4db13a9e20081f2fac78f441659a6576e582bbb15e153f9c7fb6473aa29f5 |
| 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 | fb70bd3c4b2bec429781b65419e912c66e2d5581 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width