aval-adr 1.3.2 → 1.5.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.
- package/README.md +61 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -79,6 +79,39 @@ Repo-specific caveats go in `.claude/aval-hook.local.md`. The hook appends that
|
|
|
79
79
|
file; installing again never touches it. `--check` is the drift detector for
|
|
80
80
|
CI: exit 0 wired, exit 1 stale.
|
|
81
81
|
|
|
82
|
+
The script's second line names the aval that wrote it:
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
#!/bin/sh
|
|
86
|
+
# aval-hook: written by aval 1.5.0
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
A script from a **newer** aval is not stale, and an older aval leaves it alone
|
|
90
|
+
rather than downgrading it, so a workstation that upgrades first does not
|
|
91
|
+
redden a CI job pinned to the release before. Both modes also print a `note`
|
|
92
|
+
for every `AVAL_VERSION:` pin under `.github/workflows` or `.forgejo/workflows`
|
|
93
|
+
that is behind or ahead of the running aval — advisory, never an exit code,
|
|
94
|
+
never an edit to the workflow.
|
|
95
|
+
|
|
96
|
+
Where the repository vendors packs, the hook also asks whether they are still
|
|
97
|
+
what their sources publish — at most once an hour per repository, under a
|
|
98
|
+
five-second budget that kills the remote call rather than waiting on it, and
|
|
99
|
+
speaking only when a pack is behind or edited:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
VENDORED DECISIONS ARE BEHIND THEIR SOURCE. The fleet has decided something
|
|
103
|
+
this repository has not adopted yet, so the heads below may be superseded:
|
|
104
|
+
behind fleet has 1bb600e, main now names e73638d
|
|
105
|
+
|
|
106
|
+
1 pack(s) behind. Run `aval add <source>` for each, read the diff, then `aval heads --write`.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Offline, a slow remote, lost access: silence, on purpose. A notice that fired
|
|
110
|
+
on every flaky network would be the one nobody read on the day a decision
|
|
111
|
+
changed. The stamp that rates the hour lives under `$XDG_CACHE_HOME/aval`
|
|
112
|
+
(default `~/.cache/aval`), never in the repository. `aval add --check` by hand
|
|
113
|
+
always answers in full.
|
|
114
|
+
|
|
82
115
|
The hook pushes; **`aval mcp` lets an agent pull** — the same answers as native
|
|
83
116
|
tools, asked at the moment the question comes up rather than only at the top of
|
|
84
117
|
a session:
|
|
@@ -155,7 +188,7 @@ different edges:
|
|
|
155
188
|
| `aval hook install [--check]` | put the heads in front of an agent at session start |
|
|
156
189
|
| `aval pack [--write\|--check]` | publish this corpus's declarations for others to read |
|
|
157
190
|
| `aval add <source>… [--dry-run]` | vendor another repository's declarations |
|
|
158
|
-
| `aval add --check` | are the vendored packs still what their revisions name |
|
|
191
|
+
| `aval add --check [--quiet] [--budget S]` | are the vendored packs still what their revisions name; `--quiet` speaks only when one is not, `--budget` kills a remote call that has not answered in S seconds |
|
|
159
192
|
|
|
160
193
|
## Rules: what a decision does not settle
|
|
161
194
|
|
|
@@ -233,6 +266,33 @@ a disagreement with the fleet's answer at the fleet's scope.
|
|
|
233
266
|
Nothing in a pack is ever executed, so there is no trust prompt to match
|
|
234
267
|
`amont trust`. The review gate is the pull request that adds the file.
|
|
235
268
|
|
|
269
|
+
A pack goes stale silently otherwise, so there are two ways to be told. The
|
|
270
|
+
session hook asks (see [In front of an agent](#in-front-of-an-agent)). And a
|
|
271
|
+
consumer's CI can ask, as an advisory job, where its runner holds a credential
|
|
272
|
+
that can read the source — a private corpus is reachable from a private
|
|
273
|
+
consumer's runner with a deploy key, not from a public one's without:
|
|
274
|
+
|
|
275
|
+
```yaml
|
|
276
|
+
packs:
|
|
277
|
+
name: vendored decisions are current (advisory, non-blocking)
|
|
278
|
+
runs-on: ubuntu-latest
|
|
279
|
+
continue-on-error: true
|
|
280
|
+
steps:
|
|
281
|
+
- uses: actions/checkout@v4
|
|
282
|
+
- uses: webfactory/ssh-agent@v0.9.0 # or however the runner reaches the source
|
|
283
|
+
with:
|
|
284
|
+
ssh-private-key: ${{ secrets.DECISIONS_READ_KEY }}
|
|
285
|
+
- run: |
|
|
286
|
+
if ! aval add --check --quiet --budget 30 > packs.txt; then
|
|
287
|
+
cat packs.txt
|
|
288
|
+
echo "::warning::vendored decisions are behind or edited — run aval add"
|
|
289
|
+
fi
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Non-blocking for the same reason a dependency advisory is: a decision that
|
|
293
|
+
changed upstream is information about the fleet, not a defect in the change
|
|
294
|
+
under review.
|
|
295
|
+
|
|
236
296
|
That "inert" scopes to execution. A pack's text does reach an agent's context,
|
|
237
297
|
so the hook and the MCP tools both say that a record's wording is data rather
|
|
238
298
|
than instruction, and a value carrying a control character or a bidi override
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aval-adr",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.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.
|
|
36
|
-
"@aval-adr/darwin-x64": "1.
|
|
37
|
-
"@aval-adr/linux-arm64-gnu": "1.
|
|
38
|
-
"@aval-adr/linux-x64-gnu": "1.
|
|
39
|
-
"@aval-adr/linux-x64-musl": "1.
|
|
40
|
-
"@aval-adr/win32-x64": "1.
|
|
35
|
+
"@aval-adr/darwin-arm64": "1.5.0",
|
|
36
|
+
"@aval-adr/darwin-x64": "1.5.0",
|
|
37
|
+
"@aval-adr/linux-arm64-gnu": "1.5.0",
|
|
38
|
+
"@aval-adr/linux-x64-gnu": "1.5.0",
|
|
39
|
+
"@aval-adr/linux-x64-musl": "1.5.0",
|
|
40
|
+
"@aval-adr/win32-x64": "1.5.0"
|
|
41
41
|
}
|
|
42
42
|
}
|