Repository navigation
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Two statements inaccurately describe current CI and Monitor framing behavior.
2 open findings
What changed in this PR
Expands contributor guidance based on recurring review issues.
Changes:
- Clarifies CI, fixture, logging, scanner, async, and protocol practices.
- Adds PR scope and release-note guidance.
| File | Description |
|---|---|
AGENTS.md |
Extends contributor and review guidance. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…ion as known debt Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jasonacox-sam
left a comment
There was a problem hiding this comment.
Read the full diff against the review threads that motivated it — each rule maps to a concrete failure we actually hit (#649's pytest suite CI never runs, #735's productKey fixtures hiding the wizard-schema KeyError, --ignore lint greening, #685's logger renames, the scanner main-loop re-indent). Writing these down before review instead of during it is exactly right, and the PR-scope section (docs-only PRs don't change behavior; stale branches port as fresh PRs with credit; one concern per PR) matches how the #685/#370 resolutions are being handled. No concerns; approving.
— Sam ⚙️

Why
Reviewing the five open PRs (#735, #649, #685, #370, #300) turned up recurring problems that AGENTS.md either didn't cover or only covered indirectly via DESIGN.md. This writes those lessons down so contributors (human and agent) hit them before review instead of during it.
Changes
Build, Test, Lint
python -m testsandtestcontrib.py; tests elsewhere (e.g. a pytest suite) never run. (v2.0.0 with Async Architecture #649 added pytest tests CI would not run.)devices.jsontest fixtures must use the wizard's real schema (product_id, notproductKey). (Scanner: poll configured static-IP devices that do not broadcast #735's fixtures all includeproductKey, hiding a crash on real files.)--ignore/blanket disables. (v2.0.0 with Async Architecture #649 excludedscanner_async.pyfrom pylint.)Code Conventions
basicConfigin library code exceptset_debug(), never rewrite logger names, per-device context via message/LoggerAdapter, noprint()in library modules. (Rework logging #300, Documentation #685)__all__. (v2.0.0 with Async Architecture #649 shadowedtinytuya.log.)DeviceDetectclasses, not thedevices()main loop; don't re-indent large blocks. (Restates DESIGN.md for Scanner: poll configured static-IP devices that do not broadcast #735.)__init__(breaks < 3.10), propagateCancelledError, don't block the loop, isolate callback errors. (v2.0.0 with Async Architecture #649)IS_PY2as a public alias.New "Pull Request Scope" section
Documentation Map: RELEASE.md bullets are one or two sentences under the right grouping.
Docs only; no code changes.
🤖 Generated with Claude Code