feat(P2): role-aware feedback completeness — catch a value command with no value status

'Does the function have *a* status' missed a dimmer with on/off status but no
brightness status (demo planted error #3), silently inflating coverage/Matter.
detect_role_completeness flags a brightness/position command (5.001) whose device
has no matching value status (missing_value_status), with a device-identity match
so it doesn't borrow a sibling's status. Demo recall 4/5 -> 5/5. Raised by the
external expert review. Test + demo ground-truth updated. Full suite green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nikolay1
2026-07-15 09:23:02 +02:00
co-authored by Claude Opus 4.8
parent c53f388dcb
commit 5036a19b4b
4 changed files with 124 additions and 5 deletions
+8
View File
@@ -8,6 +8,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- **Role-aware feedback completeness** (`detect_role_completeness` in `analyze.py`, surfaced through
`check_missing_status`). "Does the function have *a* status?" was not enough — a dimmer with an on/off
status but no brightness status silently passed and inflated coverage/Matter scores. The new check
flags a brightness/position **command** (DPT 5.001) whose device has no matching value **status**
(`missing_value_status`), using a device-identity match so it does not borrow a sibling's status.
Closes the demo's own documented limitation — recall on the demo house is now 5/5. Raised by an
external expert review. `tests/test_role_completeness.py`.
- **Project Policy Profile** (`policy.py`, new MCP tool `check_policy`). Validate a project
against *its own* agreed rules (main-group taxonomy, naming regex, command/status exemptions)
instead of one universal "professional standard" — a direct answer to integrator feedback that