refactor(architecture): unify facade headers and remove unused lcd dependency

This commit is contained in:
admin
2026-02-26 11:11:45 +08:00
parent 4526dad056
commit e6a6b69ced
52 changed files with 441 additions and 612 deletions

View File

@@ -13,9 +13,16 @@
1. Dependencies are one-way only: `app_composition -> control_plane -> domain -> platform`.
2. Lateral direct dependencies are forbidden unless listed in `dependency_whitelist.md`.
3. Cross-domain communication must use events or Port interfaces; never include another domain's `internal/*.h`.
4. Each component keeps one public header in `include/`; private headers stay in `internal/` via `PRIV_INCLUDE_DIRS`.
5. Runtime state must have a single source of truth (SSOT); other modules subscribe/query instead of copying fields.
6. Blocking APIs must define timeout and idempotent semantics (no destructive background continuation after caller timeout).
4. Each component keeps exactly one public facade header in `include/`; private headers stay in `internal/` via `PRIV_INCLUDE_DIRS`.
- Long-term canonical facade headers in this repo:
- `platform/include/platform.h`
- `domain/include/domain.h`
- `control_plane/include/control_plane.h`
- `app_composition/include/app_composition.h`
5. Upper layers may include only immediate downstream public facade headers; leapfrog includes across multiple layers are forbidden.
6. Cross-cutting contracts must have a single declared owner layer and one public declaration point; duplicated declarations across layers are forbidden.
7. Runtime state must have a single source of truth (SSOT); orchestration layers should query/subscribe rather than duplicate lower-layer lifecycle or readiness state.
8. Blocking APIs must define timeout and idempotent semantics (no destructive background continuation after caller timeout).
## Build, Flash, and Validation
Activate ESP-IDF v5.5.2 before running any `idf.py` command: