You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f20d7b7
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/contributing/development.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,8 +14,8 @@ If the current source tree and the architecture guide differ, prefer the guide a
14
14
-`Framework` modules may depend only on other `Framework` modules.
15
15
-`Application` modules may depend on `Framework` modules and on other `Application` modules through `Contracts` only.
16
16
- Hosts compose modules; hosts do not implement business use cases.
17
-
- Mirror source families in tests. Keep module tests under `tests/ChengYuan.FrameworkKernel.Tests/<Family>/<Module>/...` and architecture suites under `tests/ChengYuan.ArchitectureTests/<Suite>/...`.
18
-
-Add architecture tests when you introduce a new module or a new facet profile.
17
+
- Mirror source families in tests. Keep module tests under `tests/ChengYuan.FrameworkKernel.Tests/<Family>/<Module>/...`.
18
+
-Update `ChengYuan.ArchitectureAnalyzer`when you introduce a new module family, facet profile, or compile-time architecture boundary.
19
19
20
20
## Prerequisites
21
21
@@ -43,7 +43,7 @@ The default target is **Build** (Restore → Build).
43
43
2. Pick the module profile or facet set.
44
44
3. Add only the projects the module actually needs.
45
45
4. Declare direct dependencies explicitly.
46
-
5.Add or update architecture tests.
46
+
5.Update `ChengYuan.ArchitectureAnalyzer` when the change introduces a new architecture boundary.
47
47
6. Wire the module into Web or CLI only if a transport facet is required.
The preferred path shape is `family root -> short module folder -> project`. Use `src/Applications/Identity/ChengYuan.Identity.Application/`, not `src/Applications/ChengYuan.Identity/ChengYuan.Identity.Application/`, and do not add role-only intermediate folders such as `src/Applications/Identity/Application/`.
54
54
55
-
Apply the same mirroring rule to tests. Keep module tests under paths such as `tests/ChengYuan.FrameworkKernel.Tests/Applications/Identity/` and architecture suites under paths such as `tests/ChengYuan.ArchitectureTests/Structure/`.
55
+
Apply the same mirroring rule to tests. Keep module tests under paths such as `tests/ChengYuan.FrameworkKernel.Tests/Applications/Identity/`; architecture boundaries are enforced at compile time by `ChengYuan.ArchitectureAnalyzer`.
56
56
57
57
Family words such as `Framework`, `Applications`, and `Hosts` belong in directories, not in project names. Facet words such as `Application`, `Persistence`, and `Web` stay in project names when they describe the project role.
58
58
@@ -232,7 +232,7 @@ The rule is simple:
232
232
233
233
1. Wave A: create the `ChengYuan.Core` family and move modularity ownership out of `ChengYuan.Hosting`.
234
234
2. Wave B: establish the core failure model and DDD baseline with exceptions, error codes, `Result`, entities, aggregate roots, value objects, strongly typed IDs, `IClock`, and `IGuidGenerator`.
235
-
3. Wave C: add `ChengYuan.Core.Json`, `ChengYuan.Core.Validation`, `ChengYuan.Core.Localization`, and `ChengYuan.Core.Data`, then enforce their dependency boundaries with architecture tests.
235
+
3. Wave C: add `ChengYuan.Core.Json`, `ChengYuan.Core.Validation`, `ChengYuan.Core.Localization`, and `ChengYuan.Core.Data`, then enforce their dependency boundaries with `ChengYuan.ArchitectureAnalyzer`.
236
236
4. Wave D: add `ChengYuan.Core.EntityFrameworkCore` for converters, repositories, unit of work, and data-filter implementations.
237
237
5. Wave E: rebase `ExecutionContext`, `MultiTenancy`, `Caching`, `Outbox`, and later `Authorization`, `Settings`, `Features`, and `Auditing` on the new Core family.
238
238
6. Wave F: split and tighten tests into core modularity, core primitives, provider, and framework-kernel suites.
@@ -329,7 +329,7 @@ It may intentionally omit modules that are irrelevant to a command-line scenario
329
329
3. Do not create empty `Web`, `Cli`, or `Persistence` projects just for symmetry.
330
330
4. Keep the directory shape `family root -> short module folder -> project`.
331
331
5. Do not put family words in project names, but keep facet words in project names when they describe the project role.
332
-
6.Add architecture tests whenever a new module or facet is introduced.
332
+
6.Update `ChengYuan.ArchitectureAnalyzer`whenever a new module or facet introduces a new architecture boundary.
333
333
7. Promote recurring technical concerns into `Framework`, not into shared application dumping grounds.
334
334
8. Promote reusable management capabilities into `Applications`, not into hosts.
Copy file name to clipboardExpand all lines: docs/guide/introduction.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ family root -> short module folder -> project
35
35
36
36
For example, `src/Applications/Identity/ChengYuan.Identity.Application/` is preferred over `src/Applications/ChengYuan.Identity/ChengYuan.Identity.Application/`, and over introducing a role-only layer such as `src/Applications/Identity/Application/ChengYuan.Identity.Application/`.
37
37
38
-
Tests mirror the same organization. Keep module tests under `tests/ChengYuan.FrameworkKernel.Tests/<Family>/<Module>/...` and architecture suites under `tests/ChengYuan.ArchitectureTests/<Suite>/...`.
38
+
Tests mirror the same organization. Keep module tests under `tests/ChengYuan.FrameworkKernel.Tests/<Family>/<Module>/...`; architecture boundaries are enforced at compile time by `ChengYuan.ArchitectureAnalyzer`.
0 commit comments