git-a2a 1.5.0 → 1.6.0-rc.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-a2a",
3
- "version": "1.5.0",
3
+ "version": "1.6.0-rc.2",
4
4
  "description": "Import git modules together with their owning agents",
5
5
  "mcpName": "io.github.neprel/git-a2a",
6
6
  "license": "MIT",
@@ -19,11 +19,11 @@
19
19
  "skills/"
20
20
  ],
21
21
  "optionalDependencies": {
22
- "@git-a2a/darwin-amd64": "1.5.0",
23
- "@git-a2a/darwin-arm64": "1.5.0",
24
- "@git-a2a/linux-amd64": "1.5.0",
25
- "@git-a2a/linux-arm64": "1.5.0",
26
- "@git-a2a/windows-amd64": "1.5.0",
27
- "@git-a2a/windows-arm64": "1.5.0"
22
+ "@git-a2a/darwin-amd64": "1.6.0-rc.2",
23
+ "@git-a2a/darwin-arm64": "1.6.0-rc.2",
24
+ "@git-a2a/linux-amd64": "1.6.0-rc.2",
25
+ "@git-a2a/linux-arm64": "1.6.0-rc.2",
26
+ "@git-a2a/windows-amd64": "1.6.0-rc.2",
27
+ "@git-a2a/windows-arm64": "1.6.0-rc.2"
28
28
  }
29
29
  }
@@ -3,7 +3,7 @@ name: git-a2a
3
3
  description: Use git-a2a to consume or author a dependency on a Git repository together with its owner, resolve who owns a dependency, inspect or repair an AGENTS.md module roster, or edit and validate a2amodule.yml manifest.
4
4
  compatibility: requires git ≥ 2.25 and the git-a2a CLI
5
5
  metadata:
6
- version: "1.5.0"
6
+ version: "1.6.0"
7
7
  ---
8
8
 
9
9
  # git-a2a
@@ -73,7 +73,7 @@ mutation refresh an existing block.
73
73
  `contact` may create an A2A task or an issue on GitHub, GitLab, or a Gitea-family forge. Run
74
74
  `git-a2a contact [ID] --list-drivers` before automation when transport availability matters.
75
75
  Unknown kinds use a consumer-installed `git-a2a-contact-<kind>` plugin or print instructions;
76
- URL, email, and chat kinds print instructions;
76
+ URL and chat kinds print instructions; email uses consumer sendmail/SMTP or prints an instruction;
77
77
  do not invent delivery or store conversation state.
78
78
 
79
79
  ## Outcomes
@@ -28,9 +28,12 @@ initialized lib example module acme-lib
28
28
 
29
29
  ## validate
30
30
 
31
- `git-a2a validate [FILE ...] [--json]` validates manifests and locks; without paths it checks the
32
- files in the current module. `--json` emits one structured result per requested file, including
33
- validation errors. Invalid files exit `1`; an empty subject set exits `2`.
31
+ `git-a2a validate [FILE ...] [--json] [--schema-report]` validates manifests and locks; without
32
+ paths it checks the files in the current module. `--schema-report` adds the schema number and a
33
+ sorted list of optional schema paths that the file actually uses; sequence elements use `[]`.
34
+ With `--json`, those values are `schema` and `features` on each structured result. Invalid files
35
+ exit `1`; a schema newer than the tool is refused with an upgrade diagnostic and exits `2`; an
36
+ empty subject set also exits `2`.
34
37
 
35
38
  ```text
36
39
  $ git-a2a validate
@@ -38,6 +41,13 @@ a2amodule.yml: valid
38
41
  1 file(s): valid
39
42
  ```
40
43
 
44
+ ```text
45
+ $ git-a2a validate a2amodule.yml --schema-report
46
+ a2amodule.yml: valid
47
+ schema: 1
48
+ feature: module.exports
49
+ ```
50
+
41
51
  ## add
42
52
 
43
53
  `git-a2a add URL [--id ID] [--path DIR] [--track locked|floating] [--wire LIST|--no-wire]
@@ -196,7 +206,8 @@ acme-lib change → owner → library-owner
196
206
  [--list-drivers]` uses the first routed contact. Resolution is consumer plugin, built-in driver,
197
207
  consumer-consented `http`/`exec`, then an exact instruction. GitHub, GitLab, and Gitea-family issue
198
208
  drivers prefer `gh`, `glab`, or `tea`, then their REST API using consumer environment credentials;
199
- without either they print a prefilled issue deep link. `--wait` selects A2A streaming. `--dry-run`
209
+ without either they print a prefilled issue deep link. Email uses consumer `sendmail`, then
210
+ `GITA2A_SMTP_URL=smtps://user@host` plus `GITA2A_SMTP_PASSWORD`, then an instruction. `--wait` selects A2A streaming. `--dry-run`
200
211
  keeps delivery at the instruction layer. `--list-drivers` needs no message and shows the selected
201
212
  layer globally or for one dependency's declared kinds. An owner declaration
202
213
  `accepts-external: false` refuses a different organisation;
@@ -406,9 +417,8 @@ setup: dry run; 5 file(s) would change
406
417
  ## mcp
407
418
 
408
419
  `git-a2a mcp [--allow-write] [--roots DIR[,DIR...]]... [--any-root] [--print-roots]` runs a
409
- stateless MCP server over stdio. By default it exposes
410
- seven read-only tools (`who`, `show`, `status`, `validate`, `doctor`, `explain`, `usage`) plus
411
- the cache-restoring `fetch` tool, and
420
+ stateless MCP server over stdio. By default it exposes exactly eight tools (`who`, `show`,
421
+ `status`, `validate`, `doctor`, `fetch`, `explain`, `usage`), and
412
422
  four repository resources (`a2amodule://manifest`, `a2amodule://lock`,
413
423
  `a2amodule://roster`, `a2amodule://reference`). `--allow-write` additionally exposes `add`,
414
424
  `update`, `set`, `wire`, `sync`, and `contact`; `remove` remains CLI-only. The process opens no
@@ -416,6 +426,8 @@ network listener and stores no server state. Protocol or command failures exit `
416
426
  options exit `2`.
417
427
  MCP `contact` enforces `accepts-external: false` and intentionally has no `external-ok` input:
418
428
  approving an external delivery remains a human CLI action.
429
+ Descriptions, access gates, and annotations for all 14 tools are in the generated
430
+ [MCP tool text audit](mcp-tools.md).
419
431
 
420
432
  Repository-dependent tools accept an optional `root` path, defaulting to the server startup
421
433
  directory. It must remain inside the startup directory, a repeated `--roots DIR[,DIR...]` value,
@@ -17,14 +17,16 @@ declared object boundary and are preserved; other unknown keys are validation er
17
17
  Behavior and consequence:
18
18
 
19
19
  integer; the format version of this file. Value `1` for this specification. A consumer that
20
- sees a larger value than it knows must refuse the file (exit 2), not guess.
20
+ sees a larger value than it knows must refuse the file (exit 2), not guess, with
21
+ `schema <value> is newer than this tool supports (1); upgrade git-a2a`. A smaller or otherwise
22
+ invalid value is an ordinary validation failure (exit 1).
21
23
 
22
24
  ## `module`
23
25
 
24
26
  - Type: object; required.
25
27
  - Default: none declared.
26
28
  - Allowed values: schema type plus the normative behavior in this entry.
27
- - Normative source: [`spec/_.hint:115`](../spec/_.hint#L115).
29
+ - Normative source: [`spec/_.hint:117`](../spec/_.hint#L117).
28
30
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
29
31
 
30
32
  Behavior and consequence:
@@ -36,7 +38,7 @@ object; the module description. See [#module](../spec/_.hint).
36
38
  - Type: array of object; optional.
37
39
  - Default: none declared.
38
40
  - Allowed values: schema type plus the normative behavior in this entry.
39
- - Normative source: [`spec/_.hint:119`](../spec/_.hint#L119).
41
+ - Normative source: [`spec/_.hint:121`](../spec/_.hint#L121).
40
42
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
41
43
 
42
44
  Behavior and consequence:
@@ -49,7 +51,7 @@ as a plain library" — still importable, nobody to ask.
49
51
  - Type: object; optional.
50
52
  - Default: none declared.
51
53
  - Allowed values: schema type plus the normative behavior in this entry.
52
- - Normative source: [`spec/_.hint:124`](../spec/_.hint#L124).
54
+ - Normative source: [`spec/_.hint:126`](../spec/_.hint#L126).
53
55
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
54
56
 
55
57
  Behavior and consequence:
@@ -61,7 +63,7 @@ object, see [#policy](../spec/_.hint). Routing defaults and consumer permissions
61
63
  - Type: object; optional.
62
64
  - Default: none declared.
63
65
  - Allowed values: schema type plus the normative behavior in this entry.
64
- - Normative source: [`spec/_.hint:128`](../spec/_.hint#L128).
66
+ - Normative source: [`spec/_.hint:130`](../spec/_.hint#L130).
65
67
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
66
68
 
67
69
  Behavior and consequence:
@@ -74,7 +76,7 @@ these settings from a consumer.
74
76
  - Type: array of object; optional.
75
77
  - Default: none declared.
76
78
  - Allowed values: schema type plus the normative behavior in this entry.
77
- - Normative source: [`spec/_.hint:133`](../spec/_.hint#L133).
79
+ - Normative source: [`spec/_.hint:135`](../spec/_.hint#L135).
78
80
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
79
81
 
80
82
  Behavior and consequence:
@@ -86,7 +88,7 @@ list, see [#dependency](../spec/_.hint). Modules this module depends on.
86
88
  - Type: string; required.
87
89
  - Default: none declared.
88
90
  - Allowed values: pattern `^[a-z0-9][a-z0-9._-]{0,63}$`.
89
- - Normative source: [`spec/_.hint:175`](../spec/_.hint#L175).
91
+ - Normative source: [`spec/_.hint:177`](../spec/_.hint#L177).
90
92
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
91
93
 
92
94
  Behavior and consequence:
@@ -101,7 +103,7 @@ breaking change for every consumer.
101
103
  - Type: string; optional.
102
104
  - Default: `module.id`.
103
105
  - Allowed values: schema type plus the normative behavior in this entry.
104
- - Normative source: [`spec/_.hint:182`](../spec/_.hint#L182).
106
+ - Normative source: [`spec/_.hint:184`](../spec/_.hint#L184).
105
107
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
106
108
 
107
109
  Behavior and consequence:
@@ -113,7 +115,7 @@ string. Display name. Defaults to `id`.
113
115
  - Type: string; optional.
114
116
  - Default: none declared.
115
117
  - Allowed values: schema type plus the normative behavior in this entry.
116
- - Normative source: [`spec/_.hint:186`](../spec/_.hint#L186).
118
+ - Normative source: [`spec/_.hint:188`](../spec/_.hint#L188).
117
119
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
118
120
 
119
121
  Behavior and consequence:
@@ -127,7 +129,7 @@ expects. Whitespace is normalised when rendered.
127
129
  - Type: array of string; optional.
128
130
  - Default: none declared.
129
131
  - Allowed values: open vocabulary; see the known-values table in this entry.
130
- - Normative source: [`spec/_.hint:192`](../spec/_.hint#L192).
132
+ - Normative source: [`spec/_.hint:194`](../spec/_.hint#L194).
131
133
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
132
134
 
133
135
  Behavior and consequence:
@@ -150,7 +152,7 @@ Known values:
150
152
  - Type: string; optional.
151
153
  - Default: none declared.
152
154
  - Allowed values: minimum length 1.
153
- - Normative source: [`spec/_.hint:198`](../spec/_.hint#L198).
155
+ - Normative source: [`spec/_.hint:200`](../spec/_.hint#L200).
154
156
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
155
157
 
156
158
  Behavior and consequence:
@@ -163,7 +165,7 @@ published beyond the manifest.
163
165
  - Type: string; optional.
164
166
  - Default: none declared.
165
167
  - Allowed values: schema type plus the normative behavior in this entry.
166
- - Normative source: [`spec/_.hint:203`](../spec/_.hint#L203).
168
+ - Normative source: [`spec/_.hint:205`](../spec/_.hint#L205).
167
169
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
168
170
 
169
171
  Behavior and consequence:
@@ -178,7 +180,7 @@ to whoever maintains the copy. Informative; never used to fetch.
178
180
  - Type: object; optional.
179
181
  - Default: none declared.
180
182
  - Allowed values: schema type plus the normative behavior in this entry.
181
- - Normative source: [`spec/_.hint:210`](../spec/_.hint#L210).
183
+ - Normative source: [`spec/_.hint:212`](../spec/_.hint#L212).
182
184
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
183
185
 
184
186
  Behavior and consequence:
@@ -193,7 +195,7 @@ source silently.
193
195
  - Type: string; optional.
194
196
  - Default: none declared.
195
197
  - Allowed values: schema type plus the normative behavior in this entry.
196
- - Normative source: [`spec/_.hint:217`](../spec/_.hint#L217).
198
+ - Normative source: [`spec/_.hint:219`](../spec/_.hint#L219).
197
199
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
198
200
 
199
201
  Behavior and consequence:
@@ -205,7 +207,7 @@ string; URL of human documentation.
205
207
  - Type: object; optional.
206
208
  - Default: none declared.
207
209
  - Allowed values: schema type plus the normative behavior in this entry.
208
- - Normative source: [`spec/_.hint:221`](../spec/_.hint#L221).
210
+ - Normative source: [`spec/_.hint:223`](../spec/_.hint#L223).
209
211
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
210
212
 
211
213
  Behavior and consequence:
@@ -220,7 +222,7 @@ module without naming one.
220
222
  - Type: array of object; optional.
221
223
  - Default: none declared.
222
224
  - Allowed values: schema type plus the normative behavior in this entry.
223
- - Normative source: [`spec/_.hint:228`](../spec/_.hint#L228).
225
+ - Normative source: [`spec/_.hint:230`](../spec/_.hint#L230).
224
226
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
225
227
 
226
228
  Behavior and consequence:
@@ -239,7 +241,7 @@ dist"). Ecosystem-specific keys are allowed under `x-<ecosystem>-*`.
239
241
  - Type: string; required.
240
242
  - Default: none declared.
241
243
  - Allowed values: schema type plus the normative behavior in this entry.
242
- - Normative source: [`spec/_.hint:244`](../spec/_.hint#L244).
244
+ - Normative source: [`spec/_.hint:246`](../spec/_.hint#L246).
243
245
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
244
246
 
245
247
  Behavior and consequence:
@@ -252,7 +254,7 @@ consumers remain on the current source until an explicit `set --git`.
252
254
  - Type: string; optional.
253
255
  - Default: `.`.
254
256
  - Allowed values: minimum length 1.
255
- - Normative source: [`spec/_.hint:249`](../spec/_.hint#L249).
257
+ - Normative source: [`spec/_.hint:251`](../spec/_.hint#L251).
256
258
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
257
259
 
258
260
  Behavior and consequence:
@@ -265,7 +267,7 @@ it changes the destination module root offered with the new Git URL.
265
267
  - Type: string; optional.
266
268
  - Default: none declared.
267
269
  - Allowed values: schema type plus the normative behavior in this entry.
268
- - Normative source: [`spec/_.hint:254`](../spec/_.hint#L254).
270
+ - Normative source: [`spec/_.hint:256`](../spec/_.hint#L256).
269
271
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
270
272
 
271
273
  Behavior and consequence:
@@ -278,7 +280,7 @@ the guidance, never the source automatically.
278
280
  - Type: string; optional.
279
281
  - Default: none declared.
280
282
  - Allowed values: schema type plus the normative behavior in this entry.
281
- - Normative source: [`spec/_.hint:263`](../spec/_.hint#L263).
283
+ - Normative source: [`spec/_.hint:265`](../spec/_.hint#L265).
282
284
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
283
285
 
284
286
  Behavior and consequence:
@@ -291,7 +293,7 @@ Changing it affects future adds; existing consumers retain their declared ref un
291
293
  - Type: boolean; optional.
292
294
  - Default: `false`.
293
295
  - Allowed values: schema type plus the normative behavior in this entry.
294
- - Normative source: [`spec/_.hint:268`](../spec/_.hint#L268).
296
+ - Normative source: [`spec/_.hint:270`](../spec/_.hint#L270).
295
297
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
296
298
 
297
299
  Behavior and consequence:
@@ -304,7 +306,7 @@ Changing it changes what consumers may reasonably select with `set --ref`; it do
304
306
  - Type: string; optional.
305
307
  - Default: none declared.
306
308
  - Allowed values: schema type plus the normative behavior in this entry.
307
- - Normative source: [`spec/_.hint:273`](../spec/_.hint#L273).
309
+ - Normative source: [`spec/_.hint:275`](../spec/_.hint#L275).
308
310
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
309
311
 
310
312
  Behavior and consequence:
@@ -317,7 +319,7 @@ only and does not resolve or move a dependency.
317
319
  - Type: string; required.
318
320
  - Default: none declared.
319
321
  - Allowed values: minimum length 1; open vocabulary; see the known-values table in this entry.
320
- - Normative source: [`spec/_.hint:282`](../spec/_.hint#L282).
322
+ - Normative source: [`spec/_.hint:284`](../spec/_.hint#L284).
321
323
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
322
324
 
323
325
  Behavior and consequence:
@@ -341,7 +343,7 @@ Known values:
341
343
  - Type: string; required.
342
344
  - Default: none declared.
343
345
  - Allowed values: minimum length 1.
344
- - Normative source: [`spec/_.hint:288`](../spec/_.hint#L288).
346
+ - Normative source: [`spec/_.hint:290`](../spec/_.hint#L290).
345
347
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
346
348
 
347
349
  Behavior and consequence:
@@ -354,7 +356,7 @@ consumer from the old native entry to the new one on the next mutation or `wire`
354
356
  - Type: string; optional.
355
357
  - Default: the module directory (`.`).
356
358
  - Allowed values: minimum length 1.
357
- - Normative source: [`spec/_.hint:293`](../spec/_.hint#L293).
359
+ - Normative source: [`spec/_.hint:295`](../spec/_.hint#L295).
358
360
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
359
361
 
360
362
  Behavior and consequence:
@@ -367,7 +369,7 @@ Changing it changes the Git subdirectory expression; unsupported adapters report
367
369
  - Type: string; optional.
368
370
  - Default: none declared.
369
371
  - Allowed values: schema type plus the normative behavior in this entry.
370
- - Normative source: [`spec/_.hint:298`](../spec/_.hint#L298).
372
+ - Normative source: [`spec/_.hint:300`](../spec/_.hint#L300).
371
373
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
372
374
 
373
375
  Behavior and consequence:
@@ -380,7 +382,7 @@ guidance but does not itself alter adapter behavior.
380
382
  - Type: string; required.
381
383
  - Default: none declared.
382
384
  - Allowed values: minimum length 1.
383
- - Normative source: [`spec/_.hint:307`](../spec/_.hint#L307).
385
+ - Normative source: [`spec/_.hint:309`](../spec/_.hint#L309).
384
386
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
385
387
 
386
388
  Behavior and consequence:
@@ -398,7 +400,7 @@ on a bare name being globally unique.
398
400
  - Type: string; required.
399
401
  - Default: none declared.
400
402
  - Allowed values: minimum length 1; open vocabulary; see the known-values table in this entry.
401
- - Normative source: [`spec/_.hint:317`](../spec/_.hint#L317).
403
+ - Normative source: [`spec/_.hint:319`](../spec/_.hint#L319).
402
404
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
403
405
 
404
406
  Behavior and consequence:
@@ -422,7 +424,7 @@ Known values:
422
424
  - Type: array of string; optional.
423
425
  - Default: `["**"]`.
424
426
  - Allowed values: schema type plus the normative behavior in this entry.
425
- - Normative source: [`spec/_.hint:323`](../spec/_.hint#L323).
427
+ - Normative source: [`spec/_.hint:325`](../spec/_.hint#L325).
426
428
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
427
429
 
428
430
  Behavior and consequence:
@@ -436,7 +438,7 @@ then declared order.
436
438
  - Type: string; optional.
437
439
  - Default: none declared.
438
440
  - Allowed values: minimum length 1.
439
- - Normative source: [`spec/_.hint:329`](../spec/_.hint#L329).
441
+ - Normative source: [`spec/_.hint:331`](../spec/_.hint#L331).
440
442
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
441
443
 
442
444
  Behavior and consequence:
@@ -450,7 +452,7 @@ the authority for `description`, `skills`, interfaces and security; git-a2a snap
450
452
  - Type: string; optional.
451
453
  - Default: none declared.
452
454
  - Allowed values: schema type plus the normative behavior in this entry.
453
- - Normative source: [`spec/_.hint:335`](../spec/_.hint#L335).
455
+ - Normative source: [`spec/_.hint:337`](../spec/_.hint#L337).
454
456
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
455
457
 
456
458
  Behavior and consequence:
@@ -463,7 +465,7 @@ ask it about …"). Never a copy of the card's description.
463
465
  - Type: array of object; optional.
464
466
  - Default: none declared.
465
467
  - Allowed values: open vocabulary; see the known-values table in this entry.
466
- - Normative source: [`spec/_.hint:340`](../spec/_.hint#L340).
468
+ - Normative source: [`spec/_.hint:342`](../spec/_.hint#L342).
467
469
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
468
470
 
469
471
  Behavior and consequence:
@@ -478,7 +480,7 @@ on"), plus kind-specific keys. Order expresses preference within an intent.
478
480
  - Type: object; optional.
479
481
  - Default: none declared.
480
482
  - Allowed values: schema type plus the normative behavior in this entry.
481
- - Normative source: [`spec/_.hint:347`](../spec/_.hint#L347).
483
+ - Normative source: [`spec/_.hint:349`](../spec/_.hint#L349).
482
484
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
483
485
 
484
486
  Behavior and consequence:
@@ -509,7 +511,7 @@ consumer requires `card-origin`, a warning otherwise.
509
511
  - Type: array of string; required.
510
512
  - Default: none declared.
511
513
  - Allowed values: minimum 1 item(s); open vocabulary; see the known-values table in this entry.
512
- - Normative source: [`spec/_.hint:375`](../spec/_.hint#L375).
514
+ - Normative source: [`spec/_.hint:377`](../spec/_.hint#L377).
513
515
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
514
516
 
515
517
  Behavior and consequence:
@@ -534,7 +536,7 @@ Known values:
534
536
  - Type: string; required.
535
537
  - Default: none declared.
536
538
  - Allowed values: minimum length 1; open vocabulary; see the known-values table in this entry.
537
- - Normative source: [`spec/_.hint:381`](../spec/_.hint#L381).
539
+ - Normative source: [`spec/_.hint:383`](../spec/_.hint#L383).
538
540
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
539
541
 
540
542
  Behavior and consequence:
@@ -557,7 +559,7 @@ The kind vocabulary is open; these kinds have defined keys and delivery behavior
557
559
  | `azure-boards` | `organization`, `project`, optional `issue-type` | Prints an `az boards work-item create` instruction. | Changes the instructed organization, project, or type. | Accepted, but no delivery driver is selected. |
558
560
  | `http` | `url` (https), optional `method` (default `POST`), `headers` (static literals), `content-type`, `body` | Owner-described request. Instruction by default (rendered as the exact final request); delivered only when the consumer allows the origin in `settings.contact.allow-http`; no credential is ever attached from the declaration. | Changes the described endpoint or payload. | — |
559
561
  | `exec` | `command` (argv, bare binary name first), optional `args`, `stdin` (default `{message}`) | Owner-described local invocation. Instruction by default; executed only when the binary name is in the consumer's `settings.contact.allow-exec` and resolves on PATH; argv exec, never a shell; CLI-only — the MCP `contact` tool refuses `exec`. | Changes the described invocation. | — |
560
- | `email` | `address`, optional `subject-prefix` | Prints an email instruction; does not send mail. | Changes the instructed recipient or subject. | Accepted, but no delivery driver is selected. |
562
+ | `email` | `address`, optional `subject-prefix` | Pipes RFC 5322 mail to `sendmail` on consumer PATH; otherwise uses `GITA2A_SMTP_URL=smtps://user@host` with `GITA2A_SMTP_PASSWORD`; otherwise prints an instruction. Coordinates come from the owner and credentials only from the consumer. | Changes the recipient or subject. | Accepted, but no delivery driver is selected. |
561
563
  | `jira` | `url`, `project`, optional `issue-type` | Prints a Jira instruction. | Changes the instructed site, project, or issue type. | Accepted, but no delivery driver is selected. |
562
564
  | `mattermost`, `slack`, `discord`, `telegram`, `teams` | `channel`, `handle`, optional `server` | Prints a chat instruction. | Changes the instructed workspace, channel, or handle. | Accepted, but no delivery driver is selected. |
563
565
  | `url` | `url`, optional `note` | Prints the URL instruction. | Changes the instructed destination. | Accepted, but no delivery driver is selected. |
@@ -584,7 +586,7 @@ record and by `contact --list-drivers`.
584
586
  - Type: string; optional.
585
587
  - Default: none declared.
586
588
  - Allowed values: schema type plus the normative behavior in this entry.
587
- - Normative source: [`spec/_.hint:387`](../spec/_.hint#L387).
589
+ - Normative source: [`spec/_.hint:389`](../spec/_.hint#L389).
588
590
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
589
591
 
590
592
  Behavior and consequence:
@@ -597,7 +599,7 @@ guidance, not routing priority or delivery mechanics.
597
599
  - Type: string; optional.
598
600
  - Default: none declared.
599
601
  - Allowed values: schema type plus the normative behavior in this entry.
600
- - Normative source: [`spec/_.hint:392`](../spec/_.hint#L392).
602
+ - Normative source: [`spec/_.hint:394`](../spec/_.hint#L394).
601
603
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
602
604
 
603
605
  Behavior and consequence:
@@ -611,7 +613,7 @@ place non-message placeholders only in query values according to `contact_placeh
611
613
  - Type: string; optional.
612
614
  - Default: none declared.
613
615
  - Allowed values: schema type plus the normative behavior in this entry.
614
- - Normative source: [`spec/_.hint:398`](../spec/_.hint#L398).
616
+ - Normative source: [`spec/_.hint:400`](../spec/_.hint#L400).
615
617
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
616
618
 
617
619
  Behavior and consequence:
@@ -624,20 +626,21 @@ the A2A target skill without changing the endpoint.
624
626
  - Type: string; optional.
625
627
  - Default: none declared.
626
628
  - Allowed values: schema type plus the normative behavior in this entry.
627
- - Normative source: [`spec/_.hint:403`](../spec/_.hint#L403).
629
+ - Normative source: [`spec/_.hint:405`](../spec/_.hint#L405).
628
630
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
629
631
 
630
632
  Behavior and consequence:
631
633
 
632
- string, optional for `email`. Destination email address. Changing it changes the printed email
633
- instruction; the reference CLI does not send email.
634
+ string, optional for `email`. Destination email address. Changing it changes the recipient.
635
+ The reference CLI pipes RFC 5322 mail to consumer-installed `sendmail`, otherwise uses consumer
636
+ SMTP configuration, otherwise prints the instruction.
634
637
 
635
638
  ## `agents[].contacts[].subject-prefix`
636
639
 
637
640
  - Type: string; optional.
638
641
  - Default: none declared.
639
642
  - Allowed values: schema type plus the normative behavior in this entry.
640
- - Normative source: [`spec/_.hint:408`](../spec/_.hint#L408).
643
+ - Normative source: [`spec/_.hint:411`](../spec/_.hint#L411).
641
644
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
642
645
 
643
646
  Behavior and consequence:
@@ -650,7 +653,7 @@ the printed instruction.
650
653
  - Type: string; optional.
651
654
  - Default: none declared.
652
655
  - Allowed values: schema type plus the normative behavior in this entry.
653
- - Normative source: [`spec/_.hint:413`](../spec/_.hint#L413).
656
+ - Normative source: [`spec/_.hint:416`](../spec/_.hint#L416).
654
657
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
655
658
 
656
659
  Behavior and consequence:
@@ -664,7 +667,7 @@ where the issue driver delivers the request.
664
667
  - Type: array of string; optional.
665
668
  - Default: none declared.
666
669
  - Allowed values: schema type plus the normative behavior in this entry.
667
- - Normative source: [`spec/_.hint:419`](../spec/_.hint#L419).
670
+ - Normative source: [`spec/_.hint:422`](../spec/_.hint#L422).
668
671
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
669
672
 
670
673
  Behavior and consequence:
@@ -677,7 +680,7 @@ created; a missing label is a delivery error from the host.
677
680
  - Type: string; optional.
678
681
  - Default: none declared.
679
682
  - Allowed values: schema type plus the normative behavior in this entry.
680
- - Normative source: [`spec/_.hint:424`](../spec/_.hint#L424).
683
+ - Normative source: [`spec/_.hint:427`](../spec/_.hint#L427).
681
684
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
682
685
 
683
686
  Behavior and consequence:
@@ -690,7 +693,7 @@ template without changing routing.
690
693
  - Type: string; optional.
691
694
  - Default: none declared.
692
695
  - Allowed values: schema type plus the normative behavior in this entry.
693
- - Normative source: [`spec/_.hint:469`](../spec/_.hint#L469).
696
+ - Normative source: [`spec/_.hint:472`](../spec/_.hint#L472).
694
697
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
695
698
 
696
699
  Behavior and consequence:
@@ -703,7 +706,7 @@ instruction.
703
706
  - Type: string; optional.
704
707
  - Default: none declared.
705
708
  - Allowed values: schema type plus the normative behavior in this entry.
706
- - Normative source: [`spec/_.hint:429`](../spec/_.hint#L429).
709
+ - Normative source: [`spec/_.hint:432`](../spec/_.hint#L432).
707
710
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
708
711
 
709
712
  Behavior and consequence:
@@ -716,7 +719,7 @@ instruction.
716
719
  - Type: string; optional.
717
720
  - Default: none declared.
718
721
  - Allowed values: schema type plus the normative behavior in this entry.
719
- - Normative source: [`spec/_.hint:474`](../spec/_.hint#L474).
722
+ - Normative source: [`spec/_.hint:477`](../spec/_.hint#L477).
720
723
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
721
724
 
722
725
  Behavior and consequence:
@@ -729,7 +732,7 @@ instruction.
729
732
  - Type: string; optional.
730
733
  - Default: none declared.
731
734
  - Allowed values: schema type plus the normative behavior in this entry.
732
- - Normative source: [`spec/_.hint:479`](../spec/_.hint#L479).
735
+ - Normative source: [`spec/_.hint:482`](../spec/_.hint#L482).
733
736
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
734
737
 
735
738
  Behavior and consequence:
@@ -742,7 +745,7 @@ destination; chat contacts are instruction-only.
742
745
  - Type: string; optional.
743
746
  - Default: none declared.
744
747
  - Allowed values: schema type plus the normative behavior in this entry.
745
- - Normative source: [`spec/_.hint:484`](../spec/_.hint#L484).
748
+ - Normative source: [`spec/_.hint:487`](../spec/_.hint#L487).
746
749
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
747
750
 
748
751
  Behavior and consequence:
@@ -755,7 +758,7 @@ told to address.
755
758
  - Type: string; optional.
756
759
  - Default: none declared.
757
760
  - Allowed values: schema type plus the normative behavior in this entry.
758
- - Normative source: [`spec/_.hint:489`](../spec/_.hint#L489).
761
+ - Normative source: [`spec/_.hint:492`](../spec/_.hint#L492).
759
762
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
760
763
 
761
764
  Behavior and consequence:
@@ -768,7 +771,7 @@ printed chat destination.
768
771
  - Type: string; optional.
769
772
  - Default: none declared.
770
773
  - Allowed values: schema type plus the normative behavior in this entry.
771
- - Normative source: [`spec/_.hint:434`](../spec/_.hint#L434).
774
+ - Normative source: [`spec/_.hint:437`](../spec/_.hint#L437).
772
775
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
773
776
 
774
777
  Behavior and consequence:
@@ -781,7 +784,7 @@ HTTP request method.
781
784
  - Type: object; optional.
782
785
  - Default: none declared.
783
786
  - Allowed values: schema type plus the normative behavior in this entry.
784
- - Normative source: [`spec/_.hint:439`](../spec/_.hint#L439).
787
+ - Normative source: [`spec/_.hint:442`](../spec/_.hint#L442).
785
788
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
786
789
 
787
790
  Behavior and consequence:
@@ -794,7 +797,7 @@ and git-a2a never adds credentials from the declaration or consumer environment.
794
797
  - Type: string; optional.
795
798
  - Default: none declared.
796
799
  - Allowed values: schema type plus the normative behavior in this entry.
797
- - Normative source: [`spec/_.hint:444`](../spec/_.hint#L444).
800
+ - Normative source: [`spec/_.hint:447`](../spec/_.hint#L447).
798
801
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
799
802
 
800
803
  Behavior and consequence:
@@ -807,7 +810,7 @@ escaping when it contains `json`.
807
810
  - Type: string; optional.
808
811
  - Default: none declared.
809
812
  - Allowed values: schema type plus the normative behavior in this entry.
810
- - Normative source: [`spec/_.hint:449`](../spec/_.hint#L449).
813
+ - Normative source: [`spec/_.hint:452`](../spec/_.hint#L452).
811
814
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
812
815
 
813
816
  Behavior and consequence:
@@ -820,7 +823,7 @@ string template, optional for `http`. It may use every value in `contact_placeho
820
823
  - Type: array of string; optional.
821
824
  - Default: none declared.
822
825
  - Allowed values: minimum 1 item(s).
823
- - Normative source: [`spec/_.hint:454`](../spec/_.hint#L454).
826
+ - Normative source: [`spec/_.hint:457`](../spec/_.hint#L457).
824
827
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
825
828
 
826
829
  Behavior and consequence:
@@ -833,7 +836,7 @@ remaining items are argv entries. It is never interpreted by a shell.
833
836
  - Type: array of string; optional.
834
837
  - Default: none declared.
835
838
  - Allowed values: schema type plus the normative behavior in this entry.
836
- - Normative source: [`spec/_.hint:459`](../spec/_.hint#L459).
839
+ - Normative source: [`spec/_.hint:462`](../spec/_.hint#L462).
837
840
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
838
841
 
839
842
  Behavior and consequence:
@@ -846,7 +849,7 @@ placeholder in `contact_placeholders`; changing it changes argv only.
846
849
  - Type: string; optional.
847
850
  - Default: none declared.
848
851
  - Allowed values: schema type plus the normative behavior in this entry.
849
- - Normative source: [`spec/_.hint:464`](../spec/_.hint#L464).
852
+ - Normative source: [`spec/_.hint:467`](../spec/_.hint#L467).
850
853
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
851
854
 
852
855
  Behavior and consequence:
@@ -859,7 +862,7 @@ and is passed as stdin without shell or environment expansion.
859
862
  - Type: boolean; optional.
860
863
  - Default: `false`.
861
864
  - Allowed values: schema type plus the normative behavior in this entry.
862
- - Normative source: [`spec/_.hint:498`](../spec/_.hint#L498).
865
+ - Normative source: [`spec/_.hint:501`](../spec/_.hint#L501).
863
866
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
864
867
 
865
868
  Behavior and consequence:
@@ -872,7 +875,7 @@ cards make `status` fail and make `update` warn while retaining the dependency u
872
875
  - Type: boolean; optional.
873
876
  - Default: unstated.
874
877
  - Allowed values: schema type plus the normative behavior in this entry.
875
- - Normative source: [`spec/_.hint:503`](../spec/_.hint#L503).
878
+ - Normative source: [`spec/_.hint:506`](../spec/_.hint#L506).
876
879
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
877
880
 
878
881
  Behavior and consequence:
@@ -887,7 +890,7 @@ agent "(external requests not accepted)". Organisation = origin host plus first
887
890
  - Type: array of string; optional.
888
891
  - Default: no pinned JWKS sources.
889
892
  - Allowed values: schema type plus the normative behavior in this entry.
890
- - Normative source: [`spec/_.hint:510`](../spec/_.hint#L510).
893
+ - Normative source: [`spec/_.hint:513`](../spec/_.hint#L513).
891
894
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
892
895
 
893
896
  Behavior and consequence:
@@ -901,7 +904,7 @@ subject to lock key-change review.
901
904
  - Type: array of string; optional.
902
905
  - Default: no pinned key thumbprints.
903
906
  - Allowed values: schema type plus the normative behavior in this entry.
904
- - Normative source: [`spec/_.hint:516`](../spec/_.hint#L516).
907
+ - Normative source: [`spec/_.hint:519`](../spec/_.hint#L519).
905
908
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
906
909
 
907
910
  Behavior and consequence:
@@ -914,7 +917,7 @@ of these pins regardless of JWKS URL. Changing the list changes the exact accept
914
917
  - Type: array of string; optional.
915
918
  - Default: repository/card binding rules.
916
919
  - Allowed values: schema type plus the normative behavior in this entry.
917
- - Normative source: [`spec/_.hint:521`](../spec/_.hint#L521).
920
+ - Normative source: [`spec/_.hint:524`](../spec/_.hint#L524).
918
921
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
919
922
 
920
923
  Behavior and consequence:
@@ -927,7 +930,7 @@ one of these origins. Changing it changes the allowed network identity of the ag
927
930
  - Type: string; optional.
928
931
  - Default: `24h`.
929
932
  - Allowed values: minimum length 1.
930
- - Normative source: [`spec/_.hint:526`](../spec/_.hint#L526).
933
+ - Normative source: [`spec/_.hint:529`](../spec/_.hint#L529).
931
934
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
932
935
 
933
936
  Behavior and consequence:
@@ -941,7 +944,7 @@ recoverable status.
941
944
  - Type: object; optional.
942
945
  - Default: unlisted intents route to `owner`.
943
946
  - Allowed values: schema type plus the normative behavior in this entry.
944
- - Normative source: [`spec/_.hint:591`](../spec/_.hint#L591).
947
+ - Normative source: [`spec/_.hint:594`](../spec/_.hint#L594).
945
948
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
946
949
 
947
950
  Behavior and consequence:
@@ -975,7 +978,7 @@ Known values:
975
978
  - Type: object; optional.
976
979
  - Default: none declared.
977
980
  - Allowed values: open vocabulary; see the known-values table in this entry.
978
- - Normative source: [`spec/_.hint:598`](../spec/_.hint#L598).
981
+ - Normative source: [`spec/_.hint:601`](../spec/_.hint#L601).
979
982
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
980
983
 
981
984
  Behavior and consequence:
@@ -985,12 +988,27 @@ object: `may` and `may-not`, lists of tokens from an open vocabulary (`read-surf
985
988
  consumer's roster block so an agent sees the boundary before it acts. Defaults when absent:
986
989
  `may: [read-surface, ask]`, `may-not: [commit]`.
987
990
 
991
+ ## `policy.contact-budget`
992
+
993
+ - Type: object; optional.
994
+ - Default: none declared.
995
+ - Allowed values: open vocabulary; see the known-values table in this entry.
996
+ - Normative source: [`spec/_.hint:608`](../spec/_.hint#L608).
997
+ - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
998
+
999
+ Behavior and consequence:
1000
+
1001
+ map of non-empty string keys to non-empty string values, optional and open vocabulary. It
1002
+ publishes owner expectations such as `per-consumer-daily: "2"` or a `note`; `who` and the roster
1003
+ render the entries in sorted order. The reference CLI does not count or enforce them. Changing a
1004
+ value changes guidance to consumers, not routing or delivery permission.
1005
+
988
1006
  ## `policy.notes`
989
1007
 
990
1008
  - Type: string; optional.
991
1009
  - Default: none declared.
992
1010
  - Allowed values: schema type plus the normative behavior in this entry.
993
- - Normative source: [`spec/_.hint:605`](../spec/_.hint#L605).
1011
+ - Normative source: [`spec/_.hint:615`](../spec/_.hint#L615).
994
1012
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
995
1013
 
996
1014
  Behavior and consequence:
@@ -1002,7 +1020,7 @@ string. Anything else consumers must know, verbatim.
1002
1020
  - Type: array of string; optional.
1003
1021
  - Default: `[read-surface, ask]`.
1004
1022
  - Allowed values: schema type plus the normative behavior in this entry.
1005
- - Normative source: [`spec/_.hint:613`](../spec/_.hint#L613).
1023
+ - Normative source: [`spec/_.hint:623`](../spec/_.hint#L623).
1006
1024
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1007
1025
 
1008
1026
  Behavior and consequence:
@@ -1025,7 +1043,7 @@ Known values:
1025
1043
  - Type: array of string; optional.
1026
1044
  - Default: `[commit]`.
1027
1045
  - Allowed values: schema type plus the normative behavior in this entry.
1028
- - Normative source: [`spec/_.hint:619`](../spec/_.hint#L619).
1046
+ - Normative source: [`spec/_.hint:629`](../spec/_.hint#L629).
1029
1047
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1030
1048
 
1031
1049
  Behavior and consequence:
@@ -1048,7 +1066,7 @@ Known values:
1048
1066
  - Type: string; optional.
1049
1067
  - Default: `deps`.
1050
1068
  - Allowed values: minimum length 1.
1051
- - Normative source: [`spec/_.hint:141`](../spec/_.hint#L141).
1069
+ - Normative source: [`spec/_.hint:143`](../spec/_.hint#L143).
1052
1070
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1053
1071
 
1054
1072
  Behavior and consequence:
@@ -1063,7 +1081,7 @@ explicit `vendor.path` values remain unchanged. It obeys all vendored-path safet
1063
1081
  - Type: array of string; optional.
1064
1082
  - Default: none declared.
1065
1083
  - Allowed values: schema type plus the normative behavior in this entry.
1066
- - Normative source: [`spec/_.hint:148`](../spec/_.hint#L148).
1084
+ - Normative source: [`spec/_.hint:150`](../spec/_.hint#L150).
1067
1085
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1068
1086
 
1069
1087
  Behavior and consequence:
@@ -1076,7 +1094,7 @@ Changing the list changes sync destinations, not dependency resolution or vendor
1076
1094
  - Type: array of string; optional.
1077
1095
  - Default: none declared.
1078
1096
  - Allowed values: schema type plus the normative behavior in this entry.
1079
- - Normative source: [`spec/_.hint:153`](../spec/_.hint#L153).
1097
+ - Normative source: [`spec/_.hint:155`](../spec/_.hint#L155).
1080
1098
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1081
1099
 
1082
1100
  Behavior and consequence:
@@ -1091,7 +1109,7 @@ the external-contact boundary used by `contact`.
1091
1109
  - Type: object; optional.
1092
1110
  - Default: none declared.
1093
1111
  - Allowed values: schema type plus the normative behavior in this entry.
1094
- - Normative source: [`spec/_.hint:160`](../spec/_.hint#L160).
1112
+ - Normative source: [`spec/_.hint:162`](../spec/_.hint#L162).
1095
1113
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1096
1114
 
1097
1115
  Behavior and consequence:
@@ -1108,7 +1126,7 @@ versioned by the consumer — never by the dependency. Defaults: empty, meaning
1108
1126
  - Type: string; optional.
1109
1127
  - Default: none declared.
1110
1128
  - Allowed values: pattern `^[a-z0-9][a-z0-9._-]{0,63}$`.
1111
- - Normative source: [`spec/_.hint:629`](../spec/_.hint#L629).
1129
+ - Normative source: [`spec/_.hint:639`](../spec/_.hint#L639).
1112
1130
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1113
1131
 
1114
1132
  Behavior and consequence:
@@ -1121,7 +1139,7 @@ manifest); the lock is keyed on it.
1121
1139
  - Type: string; required.
1122
1140
  - Default: none declared.
1123
1141
  - Allowed values: minimum length 1.
1124
- - Normative source: [`spec/_.hint:634`](../spec/_.hint#L634).
1142
+ - Normative source: [`spec/_.hint:644`](../spec/_.hint#L644).
1125
1143
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1126
1144
 
1127
1145
  Behavior and consequence:
@@ -1134,7 +1152,7 @@ Stored exactly as given; credentials are never stored.
1134
1152
  - Type: string; optional.
1135
1153
  - Default: the owner's `release.channel`, otherwise remote HEAD.
1136
1154
  - Allowed values: minimum length 1.
1137
- - Normative source: [`spec/_.hint:639`](../spec/_.hint#L639).
1155
+ - Normative source: [`spec/_.hint:649`](../spec/_.hint#L649).
1138
1156
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1139
1157
 
1140
1158
  Behavior and consequence:
@@ -1153,7 +1171,7 @@ the new source and pin together.
1153
1171
  - Type: string; optional.
1154
1172
  - Default: `.`.
1155
1173
  - Allowed values: minimum length 1.
1156
- - Normative source: [`spec/_.hint:650`](../spec/_.hint#L650).
1174
+ - Normative source: [`spec/_.hint:660`](../spec/_.hint#L660).
1157
1175
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1158
1176
 
1159
1177
  Behavior and consequence:
@@ -1165,7 +1183,7 @@ string. Subdirectory containing the dependency's `a2amodule.yml` (monorepo). Def
1165
1183
  - Type: string; optional.
1166
1184
  - Default: `locked`.
1167
1185
  - Allowed values: one of `locked`, `floating`.
1168
- - Normative source: [`spec/_.hint:654`](../spec/_.hint#L654).
1186
+ - Normative source: [`spec/_.hint:664`](../spec/_.hint#L664).
1169
1187
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1170
1188
 
1171
1189
  Behavior and consequence:
@@ -1186,7 +1204,7 @@ Known values:
1186
1204
  - Type: array of string; optional.
1187
1205
  - Default: all matching detected ecosystems.
1188
1206
  - Allowed values: schema type plus the normative behavior in this entry.
1189
- - Normative source: [`spec/_.hint:660`](../spec/_.hint#L660).
1207
+ - Normative source: [`spec/_.hint:670`](../spec/_.hint#L670).
1190
1208
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1191
1209
 
1192
1210
  Behavior and consequence:
@@ -1205,7 +1223,7 @@ dependency is a state the tool can always see and always fix, never one it hides
1205
1223
  - Type: object; optional.
1206
1224
  - Default: none declared.
1207
1225
  - Allowed values: schema type plus the normative behavior in this entry.
1208
- - Normative source: [`spec/_.hint:671`](../spec/_.hint#L671).
1226
+ - Normative source: [`spec/_.hint:681`](../spec/_.hint#L681).
1209
1227
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1210
1228
 
1211
1229
  Behavior and consequence:
@@ -1218,7 +1236,7 @@ the locked source tree in this consumer; a dependency is never vendored implicit
1218
1236
  - Type: object; optional.
1219
1237
  - Default: none declared.
1220
1238
  - Allowed values: schema type plus the normative behavior in this entry.
1221
- - Normative source: [`spec/_.hint:676`](../spec/_.hint#L676).
1239
+ - Normative source: [`spec/_.hint:686`](../spec/_.hint#L686).
1222
1240
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1223
1241
 
1224
1242
  Behavior and consequence:
@@ -1231,7 +1249,7 @@ locking or contacting this dependency. Defaults preserve the permissive behavior
1231
1249
  - Type: string; optional.
1232
1250
  - Default: `any`.
1233
1251
  - Allowed values: one of `any`, `signed`.
1234
- - Normative source: [`spec/_.hint:689`](../spec/_.hint#L689).
1252
+ - Normative source: [`spec/_.hint:699`](../spec/_.hint#L699).
1235
1253
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1236
1254
 
1237
1255
  Behavior and consequence:
@@ -1245,7 +1263,7 @@ the check on the next mutation and on `status`; unknown values are rejected.
1245
1263
  - Type: string; optional.
1246
1264
  - Default: none declared.
1247
1265
  - Allowed values: minimum length 1.
1248
- - Normative source: [`spec/_.hint:695`](../spec/_.hint#L695).
1266
+ - Normative source: [`spec/_.hint:705`](../spec/_.hint#L705).
1249
1267
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1250
1268
 
1251
1269
  Behavior and consequence:
@@ -1259,7 +1277,7 @@ Changing it changes the trusted SSH/GPG signer set. A failed check leaves the lo
1259
1277
  - Type: string; optional.
1260
1278
  - Default: `any`.
1261
1279
  - Allowed values: one of `any`, `signed`.
1262
- - Normative source: [`spec/_.hint:701`](../spec/_.hint#L701).
1280
+ - Normative source: [`spec/_.hint:711`](../spec/_.hint#L711).
1263
1281
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1264
1282
 
1265
1283
  Behavior and consequence:
@@ -1273,7 +1291,7 @@ are accepted; unknown values are rejected.
1273
1291
  - Type: boolean; optional.
1274
1292
  - Default: `false`.
1275
1293
  - Allowed values: schema type plus the normative behavior in this entry.
1276
- - Normative source: [`spec/_.hint:707`](../spec/_.hint#L707).
1294
+ - Normative source: [`spec/_.hint:717`](../spec/_.hint#L717).
1277
1295
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1278
1296
 
1279
1297
  Behavior and consequence:
@@ -1286,7 +1304,7 @@ rather than a warning. Changing it changes mismatch severity, not the origin com
1286
1304
  - Type: string; optional.
1287
1305
  - Default: `submodule`.
1288
1306
  - Allowed values: one of `submodule`, `copy`.
1289
- - Normative source: [`spec/_.hint:721`](../spec/_.hint#L721).
1307
+ - Normative source: [`spec/_.hint:731`](../spec/_.hint#L731).
1290
1308
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1291
1309
 
1292
1310
  Behavior and consequence:
@@ -1300,7 +1318,7 @@ one representation with the other transactionally; unknown values are rejected.
1300
1318
  - Type: string; optional.
1301
1319
  - Default: `<settings.vendor-dir>/<dependency-id>`.
1302
1320
  - Allowed values: minimum length 1.
1303
- - Normative source: [`spec/_.hint:727`](../spec/_.hint#L727).
1321
+ - Normative source: [`spec/_.hint:737`](../spec/_.hint#L737).
1304
1322
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1305
1323
 
1306
1324
  Behavior and consequence:
@@ -1317,7 +1335,7 @@ reports violations and never silently rewrites the path.
1317
1335
  - Type: boolean; optional.
1318
1336
  - Default: `false`.
1319
1337
  - Allowed values: schema type plus the normative behavior in this entry.
1320
- - Normative source: [`spec/_.hint:736`](../spec/_.hint#L736).
1338
+ - Normative source: [`spec/_.hint:746`](../spec/_.hint#L746).
1321
1339
  - Example: see the [public library manifest](https://github.com/neprel/git-a2a-demo-acme-lib/blob/main/a2amodule.yml) and [consumer manifest](https://github.com/neprel/git-a2a-demo-acme-app/blob/main/a2amodule.yml).
1322
1340
 
1323
1341
  Behavior and consequence: