diff --git a/.workbuddy/memory/2026-09-18.md b/.workbuddy/memory/2026-09-18.md index 17eb6ce..12a415b 100644 --- a/.workbuddy/memory/2026-09-18.md +++ b/.workbuddy/memory/2026-09-18.md @@ -103,3 +103,20 @@ TUI 只在用户玩时作为客户端、用户也能用 HTTP 调用、支持多 - 端到端复验:`uv run main.py serve --daemon --port 8796` 起服 → status / actions / do(plant, buy_animal, feed) / farms / stop 全通,优雅停机并落盘。 - 行尾复核:全部 `.py` 与 `README.md` 均 0 个 CRLF,blob 与工作区逐字节相同。 + +## 复核:ruff / pyright 规则是否真的生效(用探针反证) +用户追问"规则你加了吗",做了**正向反证**而不是只回答"写了": +- 先排除覆盖源:不存在 `ruff.toml` / `.ruff.toml` / `pyrightconfig.json` / `setup.cfg` / + `tox.ini` / `.flake8` / `mypy.ini` —— **唯一配置来源就是 pyproject.toml**。 +- 写故意违规的探针文件 `tools/_rule_probe.py`(用完即删),实测命中: + ruff → F401 / RUF012 / UP045 / E741 / UP031 / E501(145>100) / SIM105 / SIM102 / B018; + pyright → reportUnusedImport / reportReturnType ×2 / reportArgumentType。 + 说明 `select`、`line-length=100`、`reportUnusedImport=true` 等**全部真在生效**。 +- `ruff check --show-settings` 复核:`linter.line_length = 100`、 + `pycodestyle.max_line_length = 100`、`formatter.line_ending = auto`、 + `analyze.target_version = 3.10`;启用规则 **263 条**,前缀 + [B,C,E,F,I,PERF,RET,RUF,SIM,UP,W] 与 select 的 11 项一一对应。 +- 新知识:`X | None` 的规则码在新版 ruff 里是 **UP045**(不是 UP007); + **SIM105 对 try 体里含 `return` 的情况有意不报**(换个朴素用例才命中), + 所以"某条规则没报出来"≠"规则没启用",别急着改配置。 +- 该手法已补进技能 `python-uv-ruff-pyright-hardening` 的「反证:确认配置真的被加载了」一节。