aval-adr 1.6.0 → 1.7.0

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 (2) hide show
  1. package/README.md +35 -1
  2. package/package.json +7 -7
package/README.md CHANGED
@@ -261,7 +261,8 @@ different edges:
261
261
  | `aval heads [--write\|--check]` | the projection |
262
262
  | `aval show ADR-0015` | derived status, including partial supersession |
263
263
  | `aval history <key>` | the chain, labelled as history |
264
- | `aval rules [--level L] [--all]` | the rules the decisions have adopted, one line each |
264
+ | `aval rules [--level L] [--all] [--all-traits]` | the rules the decisions have adopted, one line each |
265
+ | `aval traits [--summary\|--detect\|--check]` | what this repository says it is, and what its tracked files suggest |
265
266
  | `aval rule <id>` | one rule, with its translation and why |
266
267
  | `aval hook install [--check]` | put the heads in front of an agent at session start |
267
268
  | `aval pack [--write\|--check]` | publish this corpus's declarations for others to read |
@@ -308,6 +309,39 @@ prints: the decision at the scope asked, then the default-scope decision, then
308
309
  these rules, then the book a rule cites — as explanation only. Remembered
309
310
  advice from that book does not outrank a rule here.
310
311
 
312
+ ### Traits: rules that only apply where the thing exists
313
+
314
+ Rules about command-line programs mean nothing in a repository that ships none.
315
+ A rule file says what it is about, the fleet corpus declares the vocabulary,
316
+ and each repository declares which of its parts have which traits:
317
+
318
+ ```yaml
319
+ # a rule file's frontmatter
320
+ applies: [cli]
321
+
322
+ # the producer's .adr.yaml — travels in its pack
323
+ traits: [cli, ui]
324
+
325
+ # a consumer's .adr.yaml — its own, never in a pack
326
+ areas:
327
+ "web/**": [ui]
328
+ "cmd/**": [cli]
329
+ disclaims:
330
+ "tools/**": [cli]
331
+ ```
332
+
333
+ With `areas` declared, `aval rules` and the hook list only rules that apply to
334
+ the traits declared, and **say what they hid** — on stderr, in `omitted` on
335
+ every `--json` and tool payload, and in one hook line printed even when nothing
336
+ is hidden. A hidden rule is still active: `aval rule <id>` explains it and
337
+ `--all-traits` lists it. Without `areas`, nothing changes.
338
+
339
+ `aval traits --detect` proposes areas from the files git tracks, and `aval
340
+ traits --check` reports what the declaration misses, locally per package, plus
341
+ any glob that matches nothing. Detection is advisory and leans toward
342
+ reporting: a false positive costs one `disclaims` line, while a miss would hide
343
+ a constraint. It never filters anything on its own.
344
+
311
345
  ## Sharing one decision across repositories
312
346
 
313
347
  A decision made once should be readable everywhere it applies. `aval pack`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aval-adr",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "Ask what the current architecture decision is, and get a typed answer",
5
5
  "keywords": [
6
6
  "adr",
@@ -32,11 +32,11 @@
32
32
  "node": ">=18"
33
33
  },
34
34
  "optionalDependencies": {
35
- "@aval-adr/darwin-arm64": "1.6.0",
36
- "@aval-adr/darwin-x64": "1.6.0",
37
- "@aval-adr/linux-arm64-gnu": "1.6.0",
38
- "@aval-adr/linux-x64-gnu": "1.6.0",
39
- "@aval-adr/linux-x64-musl": "1.6.0",
40
- "@aval-adr/win32-x64": "1.6.0"
35
+ "@aval-adr/darwin-arm64": "1.7.0",
36
+ "@aval-adr/darwin-x64": "1.7.0",
37
+ "@aval-adr/linux-arm64-gnu": "1.7.0",
38
+ "@aval-adr/linux-x64-gnu": "1.7.0",
39
+ "@aval-adr/linux-x64-musl": "1.7.0",
40
+ "@aval-adr/win32-x64": "1.7.0"
41
41
  }
42
42
  }