@lamentis/naome 1.3.10 → 1.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/Cargo.lock +2 -2
  2. package/README.md +5 -0
  3. package/crates/naome-cli/Cargo.toml +1 -1
  4. package/crates/naome-cli/src/architecture_commands.rs +3 -3
  5. package/crates/naome-cli/tests/architecture_cli.rs +60 -0
  6. package/crates/naome-core/Cargo.toml +1 -1
  7. package/crates/naome-core/src/architecture/config/parser/sections.rs +61 -1
  8. package/crates/naome-core/src/architecture/config/parser.rs +2 -0
  9. package/crates/naome-core/src/architecture/config.rs +47 -0
  10. package/crates/naome-core/src/architecture/output.rs +15 -1
  11. package/crates/naome-core/src/architecture/rules/budgets.rs +179 -0
  12. package/crates/naome-core/src/architecture/rules/context.rs +138 -0
  13. package/crates/naome-core/src/architecture/rules/cycles.rs +39 -0
  14. package/crates/naome-core/src/architecture/rules/external.rs +185 -0
  15. package/crates/naome-core/src/architecture/rules/graph.rs +177 -0
  16. package/crates/naome-core/src/architecture/rules/transitive.rs +89 -0
  17. package/crates/naome-core/src/architecture/rules.rs +73 -27
  18. package/crates/naome-core/src/architecture/scan/graph_builder/emit.rs +63 -1
  19. package/crates/naome-core/src/architecture/scan/graph_builder/facts.rs +2 -3
  20. package/crates/naome-core/src/architecture/scan/graph_builder.rs +78 -1
  21. package/crates/naome-core/src/architecture/scan/imports/extractors.rs +404 -0
  22. package/crates/naome-core/src/architecture/scan/imports/resolver.rs +316 -0
  23. package/crates/naome-core/src/architecture/scan/imports.rs +75 -0
  24. package/crates/naome-core/src/architecture/scan.rs +20 -0
  25. package/crates/naome-core/src/architecture.rs +1 -1
  26. package/crates/naome-core/src/lib.rs +1 -0
  27. package/crates/naome-core/tests/architecture.rs +380 -73
  28. package/crates/naome-core/tests/architecture_rules.rs +498 -0
  29. package/crates/naome-core/tests/architecture_support/mod.rs +78 -0
  30. package/installer/harness-files.js +3 -3
  31. package/native/darwin-arm64/naome +0 -0
  32. package/native/linux-x64/naome +0 -0
  33. package/package.json +1 -1
  34. package/templates/naome-root/.naome/manifest.json +2 -2
  35. package/templates/naome-root/docs/naome/architecture-fitness.md +62 -7
@@ -50,6 +50,32 @@ contexts:
50
50
  - "src/billing/index.ts"
51
51
 
52
52
  rules:
53
+ no_forbidden_layer_dependencies:
54
+ enabled: true
55
+ severity: error
56
+ no_cross_context_internal_imports:
57
+ enabled: true
58
+ severity: error
59
+ public_api_boundary:
60
+ enabled: true
61
+ severity: error
62
+ no_cycles:
63
+ enabled: true
64
+ severity: error
65
+ no_transitive_forbidden_layer_dependencies:
66
+ enabled: true
67
+ severity: error
68
+ max_imports_per_file:
69
+ enabled: true
70
+ value: 20
71
+ severity: warning
72
+ max_fan_out:
73
+ enabled: true
74
+ value: 20
75
+ severity: warning
76
+ external_dependency_policy:
77
+ enabled: true
78
+ severity: error
53
79
  max_file_lines:
54
80
  enabled: true
55
81
  value: 400
@@ -58,6 +84,19 @@ rules:
58
84
  enabled: true
59
85
  severity: error
60
86
 
87
+ allowed_dependencies:
88
+ domain:
89
+ infrastructure:
90
+ - domain
91
+
92
+ external_dependencies:
93
+ domain:
94
+ allow: []
95
+ infrastructure:
96
+ allow:
97
+ - "stripe"
98
+ - "@supabase/*"
99
+
61
100
  ignore:
62
101
  - path: "generated/**"
63
102
  reason: "Generated code is not architecture-owned."
@@ -69,6 +108,19 @@ ignore:
69
108
  - `arch.generated_manual_boundary` prevents changed files under explicitly
70
109
  ignored generated paths from being accepted without regeneration or a config
71
110
  change.
111
+ - `arch.no_forbidden_layer_dependencies` rejects import edges whose source
112
+ layer is not allowed to depend on the imported file's layer.
113
+ - `arch.no_cross_context_internal_imports` rejects imports into another bounded
114
+ context's internal files.
115
+ - `arch.public_api_boundary` requires cross-context imports to target declared
116
+ `public_api` paths.
117
+ - `arch.no_cycles` detects file-level import cycles.
118
+ - `arch.no_transitive_forbidden_layer_dependencies` catches indirect reachability
119
+ from a layer to a forbidden layer.
120
+ - `arch.max_imports_per_file` and `arch.max_fan_out` enforce local dependency
121
+ budgets.
122
+ - `arch.external_dependency_policy` enforces allowed external packages per layer
123
+ or context.
72
124
 
73
125
  ## Agent Integration
74
126
 
@@ -85,13 +137,16 @@ fails only on configured error rules.
85
137
 
86
138
  ## Language Support
87
139
 
88
- The v1.3.10 foundation classifies TypeScript, JavaScript, Rust, Python, Go,
89
- Java, Kotlin, and Swift files by path extension. Import extractors, resolver
90
- rules, cycle detection, layer dependency rules, and manifest extraction are
91
- planned follow-up slices before v1.4.0.
140
+ The v1.3.12 foundation classifies TypeScript, JavaScript, Rust, Python, Go,
141
+ Java, Kotlin, and Swift files by path extension. It extracts import facts for
142
+ TypeScript, JavaScript, Rust, Python, and Go, resolves relative imports and
143
+ simple repository-absolute aliases, and represents unresolved imports
144
+ explicitly as graph nodes instead of dropping them. Architecture rules now
145
+ cover layers, bounded contexts, public APIs, cycles, transitive layer reach,
146
+ import/fan-out budgets, and external dependency policies.
92
147
 
93
148
  ## Limitations
94
149
 
95
- This release intentionally starts with path extraction, graph construction,
96
- file budgets, generated/manual boundaries, JSON output, human output, and CLI
97
- integration. It does not yet resolve imports or validate cross-layer imports.
150
+ This release intentionally keeps validation file-graph based. Manifest
151
+ extractors, SARIF output, persistent scan caching, and deeper symbol-level call
152
+ analysis remain planned follow-up slices before v1.4.0.