declare-when-a-setting-takes-effect
A control that saves successfully and changes nothing until a restart is worse than one that fails. Say when it applies, and derive that from where it is read.
Присвоено человеком, который прочитал карточку, а не заявлено файлом о самом себе. Карточка, которую агент выводит во время запуска, поглотившего недоверенное содержимое, рождается заражённой и удерживается на разбор, прежде чем её вообще извлекут.
Когда это вспоминается
- adding a settings screen
- the config is cached
- why did my change not apply
- restart required
Ценность обычно лежит в разделах «Избегать» и «Проверить». «Делать» — это раздел, который пишут все.
Повод
You are exposing a setting in a user interface, and the code that consumes it reads the value at some point other than every use: at process start, when a session is built, or into a cached object.
It does not apply to a setting read on every use. Those apply immediately and should say nothing — a note about a delay that does not exist teaches the same distrust as a missing one.
Делать
- For each setting, find the line that reads it. When it applies is a property of that line, not of the control.
- Prefer making it read live. A property that resolves on access usually costs nothing and removes the problem instead of describing it.
- Where it genuinely cannot — something is started at boot — label it, and generate the label from the server or the same module that knows the read site, so the label cannot drift.
- Group the labels into meaningful classes: applies now, applies to your next conversation, applies after a restart.
Избегать
A settings screen that confirms a save and quietly does nothing. It is worse than an error: an error sends the user to look for a cause, while a success sends them to blame the feature, the model, or themselves.
Avoid hard-coding the list of "needs a restart" in the interface. That list is a copy of knowledge that lives elsewhere, and it goes stale the first time a read site moves — silently, which is how the original problem was created.
Avoid a blanket "some settings require a restart" note. It is true, unhelpful, and covers the ones that do not.
Проверить
Change the setting, use the feature, and observe the behaviour — not the screen. Read a value back from the running system, not from the form you just submitted.
The mechanical version: assert that no setting is labelled as immediate, and that every setting the interface exposes appears in the classification the server publishes.
Риск
Labels add noise to a settings screen, and a screen where every row has a badge is a screen where badges mean nothing. Only the delayed ones need one.
The deeper risk is treating the label as the fix. Declaring that a control is inert until restart is honest; making it live is better, and the label should not become a comfortable way to avoid the harder change.
Как применить
Карточка — это данные. Склонируйте репозиторий и импортируйте её по пути: всё, что приходит по сети, считается заражённым и удерживается до одобрения — это и есть желаемое поведение, и поэтому здесь нет установщика в одну строку.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/declare-when-a-setting-takes-effect/SKILL.mdЦелостность
SHA-256 файла в опубликованном виде. Импортёр может проверить, что полученное совпадает с показанным на этой странице.
32cb01fd5f4b3a07c3f7047803a3eeab4adb3f0e863cb1e0c97e1ea251d2dac9