git-a2a 1.7.1-rc.4 → 2.0.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.
@@ -1,1368 +0,0 @@
1
- <!-- Code generated by tools/gen-reference.py; DO NOT EDIT. -->
2
- # Manifest field reference
3
-
4
- This reference is generated from the compiled normative `spec/_.hint` and
5
- `spec/schema/a2amodule.schema.json`. Run `make docs-check` to detect drift.
6
- Paths use `[]` for one array entry. Unknown `x-*` extension keys are allowed at every
7
- declared object boundary and are preserved; other unknown keys are validation errors.
8
-
9
- ## `schema`
10
-
11
- - Type: integer; required.
12
- - Default: exactly `1`.
13
- - Allowed values: exact value `1`.
14
- - Normative source: [`spec/_.hint:115`](../spec/_.hint#L115).
15
- - 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).
16
-
17
- Behavior and consequence:
18
-
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, 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).
23
-
24
- ## `module`
25
-
26
- - Type: object; required.
27
- - Default: none declared.
28
- - Allowed values: schema type plus the normative behavior in this entry.
29
- - Normative source: [`spec/_.hint:122`](../spec/_.hint#L122).
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).
31
-
32
- Behavior and consequence:
33
-
34
- object; the module description. See [#module](../spec/_.hint).
35
-
36
- ## `agents`
37
-
38
- - Type: array of object; optional.
39
- - Default: none declared.
40
- - Allowed values: schema type plus the normative behavior in this entry.
41
- - Normative source: [`spec/_.hint:126`](../spec/_.hint#L126).
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).
43
-
44
- Behavior and consequence:
45
-
46
- list of agent bindings, see [#agent](../spec/_.hint). Empty or absent means "no agent owns this; treat
47
- as a plain library" — still importable, nobody to ask.
48
-
49
- ## `policy`
50
-
51
- - Type: object; optional.
52
- - Default: none declared.
53
- - Allowed values: schema type plus the normative behavior in this entry.
54
- - Normative source: [`spec/_.hint:131`](../spec/_.hint#L131).
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).
56
-
57
- Behavior and consequence:
58
-
59
- object, see [#policy](../spec/_.hint). Routing defaults and consumer permissions.
60
-
61
- ## `settings`
62
-
63
- - Type: object; optional.
64
- - Default: none declared.
65
- - Allowed values: schema type plus the normative behavior in this entry.
66
- - Normative source: [`spec/_.hint:135`](../spec/_.hint#L135).
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).
68
-
69
- Behavior and consequence:
70
-
71
- object, see [#settings](../spec/_.hint). Consumer-local defaults; owners of dependencies never read
72
- these settings from a consumer.
73
-
74
- ## `dependencies`
75
-
76
- - Type: array of object; optional.
77
- - Default: none declared.
78
- - Allowed values: schema type plus the normative behavior in this entry.
79
- - Normative source: [`spec/_.hint:140`](../spec/_.hint#L140).
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).
81
-
82
- Behavior and consequence:
83
-
84
- list, see [#dependency](../spec/_.hint). Modules this module depends on.
85
-
86
- ## `module.id`
87
-
88
- - Type: string; required.
89
- - Default: none declared.
90
- - Allowed values: pattern `^[a-z0-9][a-z0-9._-]{0,63}$`.
91
- - Normative source: [`spec/_.hint:182`](../spec/_.hint#L182).
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).
93
-
94
- Behavior and consequence:
95
-
96
- string, required. Stable identifier, `^[a-z0-9][a-z0-9._-]{0,63}$`. Consumers refer to the
97
- dependency by this id and the lock keys on it; `add` verifies that the fetched manifest's `id`
98
- equals the id the consumer expected (when given) and otherwise adopts it. Renaming an id is a
99
- breaking change for every consumer.
100
-
101
- ## `module.name`
102
-
103
- - Type: string; optional.
104
- - Default: `module.id`.
105
- - Allowed values: schema type plus the normative behavior in this entry.
106
- - Normative source: [`spec/_.hint:189`](../spec/_.hint#L189).
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).
108
-
109
- Behavior and consequence:
110
-
111
- string. Display name. Defaults to `id`.
112
-
113
- ## `module.description`
114
-
115
- - Type: string; optional.
116
- - Default: none declared.
117
- - Allowed values: schema type plus the normative behavior in this entry.
118
- - Normative source: [`spec/_.hint:193`](../spec/_.hint#L193).
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).
120
-
121
- Behavior and consequence:
122
-
123
- string, recommended. One paragraph answering "what is this and what is it for" — it is what a
124
- consumer's agent reads in its roster, so it should also say what kind of questions the owner
125
- expects. Whitespace is normalised when rendered.
126
-
127
- ## `module.languages`
128
-
129
- - Type: array of string; optional.
130
- - Default: none declared.
131
- - Allowed values: open vocabulary; see the known-values table in this entry.
132
- - Normative source: [`spec/_.hint:199`](../spec/_.hint#L199).
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).
134
-
135
- Behavior and consequence:
136
-
137
- list of strings, open vocabulary and informative. Known tokens and their behavior are in
138
- `vocabulary_languages`. Not used for wiring; `exports` is. Changing it changes discovery metadata
139
- only; unknown values are accepted and preserved.
140
-
141
- Known values:
142
-
143
- | Known value | What the tool does | Consequence of changing it | Unknown value |
144
- | --- | --- | --- | --- |
145
- | `typescript` | Reports TypeScript as module metadata. | Changes discovery/documentation only; wiring still follows exports. | Accepted and preserved as informative metadata. |
146
- | `python` | Reports Python as module metadata. | Changes discovery/documentation only; wiring still follows exports. | Accepted and preserved as informative metadata. |
147
- | `go` | Reports Go as module metadata. | Changes discovery/documentation only; wiring still follows exports. | Accepted and preserved as informative metadata. |
148
- | `rust`, `swift`, `dart`, `ruby`, `php`, `elixir`, `haskell`, `zig`, `clojure`, `nix` | Reports the declared language as module metadata. | Changes discovery/documentation only; wiring still follows exports. | Accepted and preserved as informative metadata. |
149
-
150
- ## `module.surface`
151
-
152
- - Type: string; optional.
153
- - Default: none declared.
154
- - Allowed values: minimum length 1.
155
- - Normative source: [`spec/_.hint:205`](../spec/_.hint#L205).
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).
157
-
158
- Behavior and consequence:
159
-
160
- string; relative directory path. Published content for consumers. Absent means nothing is
161
- published beyond the manifest.
162
-
163
- ## `module.repository`
164
-
165
- - Type: string; optional.
166
- - Default: none declared.
167
- - Allowed values: schema type plus the normative behavior in this entry.
168
- - Normative source: [`spec/_.hint:210`](../spec/_.hint#L210).
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).
170
-
171
- Behavior and consequence:
172
-
173
- string; the canonical git URL of this module as its owner declares it. Lets a consumer that
174
- obtained the module from elsewhere (a fork, a mirror, a copy) see that it is not on the
175
- canonical source — and that the `agents` listed may belong to the original owner rather than
176
- to whoever maintains the copy. Informative; never used to fetch.
177
-
178
- ## `module.moved-to`
179
-
180
- - Type: object; optional.
181
- - Default: none declared.
182
- - Allowed values: schema type plus the normative behavior in this entry.
183
- - Normative source: [`spec/_.hint:217`](../spec/_.hint#L217).
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).
185
-
186
- Behavior and consequence:
187
-
188
- object, optional: `git` (string, required; the new canonical URL), `path` (string), `notes`
189
- (string). An owner leaves it in the last manifest at the old location when the module moves.
190
- Consumers are told on `update` and follow it only on explicit request; a tool never switches a
191
- source silently.
192
-
193
- ## `module.docs`
194
-
195
- - Type: string; optional.
196
- - Default: none declared.
197
- - Allowed values: schema type plus the normative behavior in this entry.
198
- - Normative source: [`spec/_.hint:224`](../spec/_.hint#L224).
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).
200
-
201
- Behavior and consequence:
202
-
203
- string; URL of human documentation.
204
-
205
- ## `module.release`
206
-
207
- - Type: object; optional.
208
- - Default: none declared.
209
- - Allowed values: schema type plus the normative behavior in this entry.
210
- - Normative source: [`spec/_.hint:228`](../spec/_.hint#L228).
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).
212
-
213
- Behavior and consequence:
214
-
215
- object: `channel` (string, the ref consumers should follow by default, e.g. `main`), `tags`
216
- (boolean, whether semver tags are published), `notes` (string, free text, e.g. "main is the only
217
- release channel"). `release.channel` is the default `ref` a consumer gets when it adds this
218
- module without naming one.
219
-
220
- ## `module.exports`
221
-
222
- - Type: array of object; optional.
223
- - Default: none declared.
224
- - Allowed values: schema type plus the normative behavior in this entry.
225
- - Normative source: [`spec/_.hint:235`](../spec/_.hint#L235).
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).
227
-
228
- Behavior and consequence:
229
-
230
- list of export entries; how to import this module per ecosystem. Each entry: `ecosystem`
231
- (string, required; use package-url type names: `npm`, `pypi`, `golang`, `cargo`, `maven`,
232
- `nuget`, `swift`, `cocoapods`, `pub`, `gem`, `composer`, `hex`, `hackage`, …), `name` (string,
233
- required; the name the ecosystem imports: npm package name, PEP 503 distribution name, Go module
234
- path, crate name, Maven `group:artifact`), `path` (string, optional; subdirectory containing the
235
- ecosystem's own manifest, default the module directory), `notes` (string, optional; anything a
236
- wiring tool or agent must know, e.g. "vanity import path, needs replace", "prepare script builds
237
- dist"). Ecosystem-specific keys are allowed under `x-<ecosystem>-*`.
238
-
239
- ## `module.moved-to.git`
240
-
241
- - Type: string; required.
242
- - Default: none declared.
243
- - Allowed values: schema type plus the normative behavior in this entry.
244
- - Normative source: [`spec/_.hint:251`](../spec/_.hint#L251).
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).
246
-
247
- Behavior and consequence:
248
-
249
- string, required. New canonical Git URL. Changing it changes the destination offered to users;
250
- consumers remain on the current source until an explicit `set --git`.
251
-
252
- ## `module.moved-to.path`
253
-
254
- - Type: string; optional.
255
- - Default: `.`.
256
- - Allowed values: minimum length 1.
257
- - Normative source: [`spec/_.hint:256`](../spec/_.hint#L256).
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).
259
-
260
- Behavior and consequence:
261
-
262
- string, optional relative path, default `.`. Subdirectory containing the moved module. Changing
263
- it changes the destination module root offered with the new Git URL.
264
-
265
- ## `module.moved-to.notes`
266
-
267
- - Type: string; optional.
268
- - Default: none declared.
269
- - Allowed values: schema type plus the normative behavior in this entry.
270
- - Normative source: [`spec/_.hint:261`](../spec/_.hint#L261).
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).
272
-
273
- Behavior and consequence:
274
-
275
- string, optional. Human migration context printed with the move notice. Changing it changes only
276
- the guidance, never the source automatically.
277
-
278
- ## `module.release.channel`
279
-
280
- - Type: string; optional.
281
- - Default: none declared.
282
- - Allowed values: schema type plus the normative behavior in this entry.
283
- - Normative source: [`spec/_.hint:270`](../spec/_.hint#L270).
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).
285
-
286
- Behavior and consequence:
287
-
288
- string, optional. Default ref used by `add` when the consumer supplies no ref, commonly `main`.
289
- Changing it affects future adds; existing consumers retain their declared ref until `set`.
290
-
291
- ## `module.release.tags`
292
-
293
- - Type: boolean; optional.
294
- - Default: `false`.
295
- - Allowed values: schema type plus the normative behavior in this entry.
296
- - Normative source: [`spec/_.hint:275`](../spec/_.hint#L275).
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).
298
-
299
- Behavior and consequence:
300
-
301
- boolean, optional, default `false`. Declares whether the owner publishes semantic-version tags.
302
- Changing it changes what consumers may reasonably select with `set --ref`; it does not create tags.
303
-
304
- ## `module.release.notes`
305
-
306
- - Type: string; optional.
307
- - Default: none declared.
308
- - Allowed values: schema type plus the normative behavior in this entry.
309
- - Normative source: [`spec/_.hint:280`](../spec/_.hint#L280).
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).
311
-
312
- Behavior and consequence:
313
-
314
- string, optional. Free release-channel guidance shown to consumers. Changing it changes guidance
315
- only and does not resolve or move a dependency.
316
-
317
- ## `module.exports[].ecosystem`
318
-
319
- - Type: string; required.
320
- - Default: none declared.
321
- - Allowed values: minimum length 1; open vocabulary; see the known-values table in this entry.
322
- - Normative source: [`spec/_.hint:289`](../spec/_.hint#L289).
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).
324
-
325
- Behavior and consequence:
326
-
327
- string, required, open vocabulary. Known values and adapter behavior are in
328
- `vocabulary_ecosystems`. Changing it selects a different adapter and therefore a different native
329
- manifest; an unknown value remains valid published metadata but has no wiring adapter.
330
-
331
- Known values:
332
-
333
- | Known value | What the tool does | Consequence of changing it | Unknown value |
334
- | --- | --- | --- | --- |
335
- | `npm` | Wires a Git dependency in package.json through npm/yarn/pnpm/bun. | Selects the JavaScript package name and adapter. | Accepted; without an adapter it remains published metadata and cannot be wired. |
336
- | `pypi` | Wires a Git dependency in pyproject.toml through uv. | Selects the Python distribution name and adapter. | Accepted; without an adapter it remains published metadata and cannot be wired. |
337
- | `golang` | Wires the Go module at the locked commit with go.mod edits. | Selects the Go import path and adapter. | Accepted; without an adapter it remains published metadata and cannot be wired. |
338
- | `cargo`, `swift`, `pub`, `gem`, `composer`, `hex`, `hackage`, `zig`, `clojure`, `nix` | Uses the matching native Git-dependency adapter. | Selects a different native manifest and package identity. | Accepted; without an adapter it remains published metadata and cannot be wired. |
339
- | `cmake`, `gradle`, `msbuild`, `maven`, `meson` | Uses a vendored integration adapter and generated include when the dependency is vendored. | Selects the build-system integration and generated file. | Accepted; without an adapter it remains published metadata and cannot be wired. |
340
-
341
- ## `module.exports[].name`
342
-
343
- - Type: string; required.
344
- - Default: none declared.
345
- - Allowed values: minimum length 1.
346
- - Normative source: [`spec/_.hint:295`](../spec/_.hint#L295).
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).
348
-
349
- Behavior and consequence:
350
-
351
- string, required. Native package/import name in the named ecosystem. Changing it rewires the
352
- consumer from the old native entry to the new one on the next mutation or `wire`.
353
-
354
- ## `module.exports[].path`
355
-
356
- - Type: string; optional.
357
- - Default: the module directory (`.`).
358
- - Allowed values: minimum length 1.
359
- - Normative source: [`spec/_.hint:300`](../spec/_.hint#L300).
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).
361
-
362
- Behavior and consequence:
363
-
364
- string, optional relative path, default `.`. Subdirectory containing the ecosystem package.
365
- Changing it changes the Git subdirectory expression; unsupported adapters report `not wired`.
366
-
367
- ## `module.exports[].notes`
368
-
369
- - Type: string; optional.
370
- - Default: none declared.
371
- - Allowed values: schema type plus the normative behavior in this entry.
372
- - Normative source: [`spec/_.hint:305`](../spec/_.hint#L305).
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).
374
-
375
- Behavior and consequence:
376
-
377
- string, optional. Export-specific facts shown to tools and agents. Changing it changes published
378
- guidance but does not itself alter adapter behavior.
379
-
380
- ## `agents[].name`
381
-
382
- - Type: string; required.
383
- - Default: none declared.
384
- - Allowed values: minimum length 1.
385
- - Normative source: [`spec/_.hint:314`](../spec/_.hint#L314).
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).
387
-
388
- Behavior and consequence:
389
-
390
- string, required. The agent's own name — must equal `name` in its A2A card when a card is given.
391
- An agent may appear in many modules (one agent, many repositories) and a module may list many
392
- agents (one repository, many agents), so `name` must be stable across repositories. Identity
393
- for de-duplication across modules is the `card` URL when present, else `name`; two bindings in
394
- different modules with the same card URL are the same agent, and tools may merge what they know
395
- about it. Names are scoped to whoever controls the card URL, so a public ecosystem never relies
396
- on a bare name being globally unique.
397
-
398
- ## `agents[].role`
399
-
400
- - Type: string; required.
401
- - Default: none declared.
402
- - Allowed values: minimum length 1; open vocabulary; see the known-values table in this entry.
403
- - Normative source: [`spec/_.hint:324`](../spec/_.hint#L324).
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).
405
-
406
- Behavior and consequence:
407
-
408
- string, required, open vocabulary. A role says what the agent owns for this module; core values
409
- and routing consequences are in `vocabulary_roles`. Unknown roles are accepted and participate in
410
- routing when `policy.intents` names the same token.
411
-
412
- Known values:
413
-
414
- | Known value | What the tool does | Consequence of changing it | Unknown value |
415
- | --- | --- | --- | --- |
416
- | `owner` | Default routing target; identifies the agent that commits, merges, and releases. | Requests using the default route select a different binding. | Accepted and routed when policy names the same token. |
417
- | `maintainer` | Routes intents mapped to a maintainer. | Changes which bindings match those intents. | Accepted and routed when policy names the same token. |
418
- | `spec` | Routes specification, task, or sequencing ownership. | Changes which bindings match policy entries such as `change: spec`. | Accepted and routed when policy names the same token. |
419
- | `reviewer` | Routes review ownership. | Changes which bindings match review policy. | Accepted and routed when policy names the same token. |
420
- | `support` | Routes support ownership. | Changes which bindings match support policy. | Accepted and routed when policy names the same token. |
421
-
422
- ## `agents[].scope`
423
-
424
- - Type: array of string; optional.
425
- - Default: `["**"]`.
426
- - Allowed values: schema type plus the normative behavior in this entry.
427
- - Normative source: [`spec/_.hint:330`](../spec/_.hint#L330).
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).
429
-
430
- Behavior and consequence:
431
-
432
- list of glob patterns relative to the module directory. What this agent answers for and may
433
- change. Default `["**"]`. Two agents may overlap; resolution prefers the more specific match,
434
- then declared order.
435
-
436
- ## `agents[].card`
437
-
438
- - Type: string; optional.
439
- - Default: none declared.
440
- - Allowed values: minimum length 1.
441
- - Normative source: [`spec/_.hint:336`](../spec/_.hint#L336).
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).
443
-
444
- Behavior and consequence:
445
-
446
- string. URL of the agent's A2A Agent Card (`https://…/.well-known/agent-card.json`) or a
447
- repository-relative path to a card file (A2A "direct configuration"). When present the card is
448
- the authority for `description`, `skills`, interfaces and security; git-a2a snapshots it.
449
-
450
- ## `agents[].description`
451
-
452
- - Type: string; optional.
453
- - Default: none declared.
454
- - Allowed values: schema type plus the normative behavior in this entry.
455
- - Normative source: [`spec/_.hint:342`](../spec/_.hint#L342).
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).
457
-
458
- Behavior and consequence:
459
-
460
- string. Only when no card is available or to add module-specific wording ("for this repository,
461
- ask it about …"). Never a copy of the card's description.
462
-
463
- ## `agents[].contacts`
464
-
465
- - Type: array of object; optional.
466
- - Default: none declared.
467
- - Allowed values: open vocabulary; see the known-values table in this entry.
468
- - Normative source: [`spec/_.hint:347`](../spec/_.hint#L347).
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).
470
-
471
- Behavior and consequence:
472
-
473
- ordered list. Each contact: `intents` (list of strings, required; `"*"` allowed), `kind`
474
- (string, required; open vocabulary, see [#contact\_kinds](../spec/_.hint)), `note` (string,
475
- optional; free-text instructions shown verbatim to the asker, e.g. "state the version you are
476
- on"), plus kind-specific keys. Order expresses preference within an intent.
477
-
478
- ## `agents[].trust`
479
-
480
- - Type: object; optional.
481
- - Default: none declared.
482
- - Allowed values: schema type plus the normative behavior in this entry.
483
- - Normative source: [`spec/_.hint:354`](../spec/_.hint#L354).
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).
485
-
486
- Behavior and consequence:
487
-
488
- object, optional: `signatures` (boolean), `accepts-external` (boolean), `jwks` (list of https
489
- URLs), `keys` (list of JWK SHA-256 thumbprints, RFC 7638), `origins` (list of origins
490
- `scheme://host[:port]`), `jwks-max-age` (duration, default `24h`), `x-*`. Defaults: no
491
- verification required, external not stated, nothing pinned.
492
-
493
- Verification when `signatures: true`: at least one detached JWS over the RFC 8785 canonical card
494
- (top-level `signatures` excluded) must verify with a key that is (a) in a JWKS whose URL is listed
495
- in `jwks`, or (b) whose thumbprint is listed in `keys`, or — only when both lists are empty — (c)
496
- served by a `jku` with the same origin as the card URL, in which case `validate` and `doctor`
497
- report "unpinned key source". The first verified `kid` and thumbprint are recorded in the lock
498
- (`cards-keys`); a different key later is a `status` failure `trust: key changed` until the
499
- consumer accepts it with `update --accept-keys`. Keys missing from a freshly fetched JWKS no
500
- longer verify. An unsigned, invalid or unverifiable card makes `status` fail; `update` retains
501
- the dependency update but prints a trust warning.
502
-
503
- Origin check (always on, severity depends on `signatures`): the card URL and every
504
- `supportedInterfaces[].url` must be in `origins` when declared; otherwise their origin must equal
505
- the origin of `module.repository`, or the card's git-a2a extension `params.repository` must equal
506
- the dependency's canonical `git`. A mismatch is a failure when `signatures: true` or when the
507
- consumer requires `card-origin`, a warning otherwise.
508
-
509
- ## `agents[].contacts[].intents`
510
-
511
- - Type: array of string; required.
512
- - Default: none declared.
513
- - Allowed values: minimum 1 item(s); open vocabulary; see the known-values table in this entry.
514
- - Normative source: [`spec/_.hint:382`](../spec/_.hint#L382).
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).
516
-
517
- Behavior and consequence:
518
-
519
- list of strings, required and non-empty, open vocabulary; `"*"` is the fallback. Changing the
520
- list changes which requests may select this contact. Core values, fallback behavior, and unknown
521
- handling are in `vocabulary_intents`.
522
-
523
- Known values:
524
-
525
- | Known value | What the tool does | Consequence of changing it | Unknown value |
526
- | --- | --- | --- | --- |
527
- | `question` | Routes a request for explanation; defaults to role `owner`. | Selects contacts declaring `question` or `*`. | Accepted; policy and contacts can route any matching token. |
528
- | `change` | Routes a proposed behavior/API change. | Selects contacts declaring `change` or `*`. | Accepted; policy and contacts can route any matching token. |
529
- | `bug` | Routes a defect report. | Selects contacts declaring `bug` or `*`. | Accepted; policy and contacts can route any matching token. |
530
- | `review` | Routes a review request. | Selects contacts declaring `review` or `*`. | Accepted; policy and contacts can route any matching token. |
531
- | `incident` | Routes an operational incident. | Selects contacts declaring `incident` or `*`. | Accepted; policy and contacts can route any matching token. |
532
- | `*` | Acts as a contact fallback after exact intent matches. | Broadens that contact to unmatched intents. | Accepted; any other unknown token is an exact-match intent. |
533
-
534
- ## `agents[].contacts[].kind`
535
-
536
- - Type: string; required.
537
- - Default: none declared.
538
- - Allowed values: minimum length 1; open vocabulary; see the known-values table in this entry.
539
- - Normative source: [`spec/_.hint:388`](../spec/_.hint#L388).
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).
541
-
542
- Behavior and consequence:
543
-
544
- string, required, open vocabulary. Changing it selects another delivery driver or instruction
545
- renderer and changes which kind-specific fields are valid. Known values and unknown handling are
546
- in `contact_kinds`.
547
-
548
- Known values:
549
-
550
- The kind vocabulary is open; these kinds have defined keys and delivery behavior:
551
-
552
- | Kind | Allowed kind-specific keys | Driver or instruction | Consequence of changing it | Unknown kind |
553
- | --- | --- | --- | --- | --- |
554
- | `a2a` | `url`, optional `skill` | Sends A2A `SendMessage` JSON-RPC 1.0; the only kind derivable from a card. | Changes the JSON-RPC endpoint or target skill. | Accepted, but no delivery driver is selected. |
555
- | `github-issue` | `repo`, optional `server`, `labels`, `template` | Creates an issue through `gh`, then GitHub REST fallback (`server` selects a GitHub Enterprise host; API base `https://<server>/api/v3` unless `GITHUB_API_URL` overrides). | Changes the repository, host, labels, or issue template. | Accepted, but no delivery driver is selected. |
556
- | `gitlab-issue` | `repo`, optional `server` (default `gitlab.com`), `labels`, `template` | Creates an issue through `glab`, then GitLab REST fallback (`POST /api/v4/projects/<url-encoded path>/issues`, token from `GITLAB_TOKEN`/`GLAB_TOKEN`). | Changes the project, host, labels, or template. | Accepted, but no delivery driver is selected. |
557
- | `gitea-issue` | `repo`, `server` (required), optional `labels` | Creates an issue through `tea`, then Gitea/Forgejo REST fallback (`POST /api/v1/repos/<owner>/<repo>/issues`, token from `GITEA_TOKEN`/`FORGEJO_TOKEN`). Covers Gitea, Forgejo and Codeberg. | Changes the instance or repository. | Accepted, but no delivery driver is selected. |
558
- | `bitbucket-issue` | `repo` (`workspace/slug`), optional `labels` | Prints an instruction with a prefilled deep link; Bitbucket Cloud only — Data Center has no issue tracker. | Changes the instructed destination. | Accepted, but no delivery driver is selected. |
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. |
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. | — |
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. | — |
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. |
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. |
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. |
565
- | `url` | `url`, optional `note` | Prints the URL instruction. | Changes the instructed destination. | Accepted, but no delivery driver is selected. |
566
-
567
- An unknown kind is rendered as `kind: <value>` with its extension keys, is never a validation
568
- error, and cannot be delivered by `contact` until a driver exists.
569
-
570
- Issue-kind instructions include a prefilled, URL-encoded and length-capped deep link when the
571
- forge supports one, so a driverless contact is one click for a human and one request for an
572
- agent. GitHub, Gitea, and Bitbucket use `…/issues/new?title=…&body=…`; GitLab uses
573
- `…/-/issues/new?issue[title]=…&issue[description]=…`. The title is the same capped first
574
- non-empty message line used by delivery drivers, and the body/description is the capped full
575
- message. Forges without a tracker (Gerrit, Bitbucket Data Center, bare git hosting) are served
576
- by `email`, `jira`, `url`, or a chat kind — contacts bind to intents, not to where the code is
577
- hosted.
578
-
579
- Driver resolution per contact, in order: a consumer-installed plugin executable
580
- `git-a2a-contact-<kind>` on PATH; the built-in driver; a declared `http`/`exec` invocation the
581
- consumer has consented to; the rendered instruction. The chosen path is named in the delivery
582
- record and by `contact --list-drivers`.
583
-
584
- ## `agents[].contacts[].note`
585
-
586
- - Type: string; optional.
587
- - Default: none declared.
588
- - Allowed values: schema type plus the normative behavior in this entry.
589
- - Normative source: [`spec/_.hint:394`](../spec/_.hint#L394).
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).
591
-
592
- Behavior and consequence:
593
-
594
- string, optional. Instructions printed verbatim after the route. Changing it changes the asker's
595
- guidance, not routing priority or delivery mechanics.
596
-
597
- ## `agents[].contacts[].url`
598
-
599
- - Type: string; optional.
600
- - Default: none declared.
601
- - Allowed values: schema type plus the normative behavior in this entry.
602
- - Normative source: [`spec/_.hint:399`](../spec/_.hint#L399).
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).
604
-
605
- Behavior and consequence:
606
-
607
- string, optional for `a2a`, `jira`, and `url`, required and HTTPS for `http`. Changing it changes
608
- the service or instruction destination; for A2A it is the JSON-RPC endpoint. `http` templates may
609
- place non-message placeholders only in query values according to `contact_placeholders`.
610
-
611
- ## `agents[].contacts[].skill`
612
-
613
- - Type: string; optional.
614
- - Default: none declared.
615
- - Allowed values: schema type plus the normative behavior in this entry.
616
- - Normative source: [`spec/_.hint:405`](../spec/_.hint#L405).
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).
618
-
619
- Behavior and consequence:
620
-
621
- string, optional for `a2a`. Skill identifier requested from the remote agent. Changing it changes
622
- the A2A target skill without changing the endpoint.
623
-
624
- ## `agents[].contacts[].address`
625
-
626
- - Type: string; optional.
627
- - Default: none declared.
628
- - Allowed values: schema type plus the normative behavior in this entry.
629
- - Normative source: [`spec/_.hint:410`](../spec/_.hint#L410).
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).
631
-
632
- Behavior and consequence:
633
-
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.
637
-
638
- ## `agents[].contacts[].subject-prefix`
639
-
640
- - Type: string; optional.
641
- - Default: none declared.
642
- - Allowed values: schema type plus the normative behavior in this entry.
643
- - Normative source: [`spec/_.hint:416`](../spec/_.hint#L416).
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).
645
-
646
- Behavior and consequence:
647
-
648
- string, optional for `email`. Prefix suggested for the email subject. Changing it changes only
649
- the printed instruction.
650
-
651
- ## `agents[].contacts[].repo`
652
-
653
- - Type: string; optional.
654
- - Default: none declared.
655
- - Allowed values: schema type plus the normative behavior in this entry.
656
- - Normative source: [`spec/_.hint:421`](../spec/_.hint#L421).
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).
658
-
659
- Behavior and consequence:
660
-
661
- string for `github-issue`, `gitlab-issue`, `gitea-issue`, and `bitbucket-issue`; normally
662
- `owner/name`, while GitLab permits nested `group/subgroup/name`. Changing it changes the repository
663
- where the issue driver delivers the request.
664
-
665
- ## `agents[].contacts[].labels`
666
-
667
- - Type: array of string; optional.
668
- - Default: none declared.
669
- - Allowed values: schema type plus the normative behavior in this entry.
670
- - Normative source: [`spec/_.hint:427`](../spec/_.hint#L427).
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).
672
-
673
- Behavior and consequence:
674
-
675
- list of strings, optional for issue kinds. Changing it changes labels requested when an issue is
676
- created; a missing label is a delivery error from the host.
677
-
678
- ## `agents[].contacts[].template`
679
-
680
- - Type: string; optional.
681
- - Default: none declared.
682
- - Allowed values: schema type plus the normative behavior in this entry.
683
- - Normative source: [`spec/_.hint:432`](../spec/_.hint#L432).
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).
685
-
686
- Behavior and consequence:
687
-
688
- string, optional for issue kinds. Issue form/template name. Changing it changes the requested
689
- template without changing routing.
690
-
691
- ## `agents[].contacts[].project`
692
-
693
- - Type: string; optional.
694
- - Default: none declared.
695
- - Allowed values: schema type plus the normative behavior in this entry.
696
- - Normative source: [`spec/_.hint:477`](../spec/_.hint#L477).
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).
698
-
699
- Behavior and consequence:
700
-
701
- string for `jira` and `azure-boards`. Project key. Changing it changes the project named in the
702
- instruction.
703
-
704
- ## `agents[].contacts[].organization`
705
-
706
- - Type: string; optional.
707
- - Default: none declared.
708
- - Allowed values: schema type plus the normative behavior in this entry.
709
- - Normative source: [`spec/_.hint:437`](../spec/_.hint#L437).
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).
711
-
712
- Behavior and consequence:
713
-
714
- string for `azure-boards`. Changing it changes the Azure DevOps organization named by the
715
- instruction.
716
-
717
- ## `agents[].contacts[].issue-type`
718
-
719
- - Type: string; optional.
720
- - Default: none declared.
721
- - Allowed values: schema type plus the normative behavior in this entry.
722
- - Normative source: [`spec/_.hint:482`](../spec/_.hint#L482).
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).
724
-
725
- Behavior and consequence:
726
-
727
- string, optional for `jira`. Issue type. Changing it changes the Jira issue kind named in the
728
- instruction.
729
-
730
- ## `agents[].contacts[].channel`
731
-
732
- - Type: string; optional.
733
- - Default: none declared.
734
- - Allowed values: schema type plus the normative behavior in this entry.
735
- - Normative source: [`spec/_.hint:487`](../spec/_.hint#L487).
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).
737
-
738
- Behavior and consequence:
739
-
740
- string, optional for chat kinds. Channel name or id. Changing it changes the printed chat
741
- destination; chat contacts are instruction-only.
742
-
743
- ## `agents[].contacts[].handle`
744
-
745
- - Type: string; optional.
746
- - Default: none declared.
747
- - Allowed values: schema type plus the normative behavior in this entry.
748
- - Normative source: [`spec/_.hint:492`](../spec/_.hint#L492).
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).
750
-
751
- Behavior and consequence:
752
-
753
- string, optional for chat kinds. Agent mention or handle. Changing it changes whom the asker is
754
- told to address.
755
-
756
- ## `agents[].contacts[].server`
757
-
758
- - Type: string; optional.
759
- - Default: none declared.
760
- - Allowed values: schema type plus the normative behavior in this entry.
761
- - Normative source: [`spec/_.hint:497`](../spec/_.hint#L497).
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).
763
-
764
- Behavior and consequence:
765
-
766
- string, optional for chat kinds. Workspace or server URL/name. Changing it disambiguates the
767
- printed chat destination.
768
-
769
- ## `agents[].contacts[].method`
770
-
771
- - Type: string; optional.
772
- - Default: none declared.
773
- - Allowed values: schema type plus the normative behavior in this entry.
774
- - Normative source: [`spec/_.hint:442`](../spec/_.hint#L442).
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).
776
-
777
- Behavior and consequence:
778
-
779
- string, optional for `http`, default `POST`. Changing it changes the exact instructed or allowed
780
- HTTP request method.
781
-
782
- ## `agents[].contacts[].headers`
783
-
784
- - Type: object; optional.
785
- - Default: none declared.
786
- - Allowed values: schema type plus the normative behavior in this entry.
787
- - Normative source: [`spec/_.hint:447`](../spec/_.hint#L447).
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).
789
-
790
- Behavior and consequence:
791
-
792
- map of string to string, optional for `http`. Values are static literals: placeholders are invalid,
793
- and git-a2a never adds credentials from the declaration or consumer environment.
794
-
795
- ## `agents[].contacts[].content-type`
796
-
797
- - Type: string; optional.
798
- - Default: none declared.
799
- - Allowed values: schema type plus the normative behavior in this entry.
800
- - Normative source: [`spec/_.hint:452`](../spec/_.hint#L452).
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).
802
-
803
- Behavior and consequence:
804
-
805
- string, optional for `http`. It selects the request Content-Type and JSON-aware placeholder
806
- escaping when it contains `json`.
807
-
808
- ## `agents[].contacts[].body`
809
-
810
- - Type: string; optional.
811
- - Default: none declared.
812
- - Allowed values: schema type plus the normative behavior in this entry.
813
- - Normative source: [`spec/_.hint:457`](../spec/_.hint#L457).
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).
815
-
816
- Behavior and consequence:
817
-
818
- string template, optional for `http`. It may use every value in `contact_placeholders`, including
819
- `{message}`; changing it changes the exact instructed or delivered payload.
820
-
821
- ## `agents[].contacts[].command`
822
-
823
- - Type: array of string; optional.
824
- - Default: none declared.
825
- - Allowed values: minimum 1 item(s).
826
- - Normative source: [`spec/_.hint:462`](../spec/_.hint#L462).
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).
828
-
829
- Behavior and consequence:
830
-
831
- list of strings, required for `exec`. The first item is a bare binary name without a path separator;
832
- remaining items are argv entries. It is never interpreted by a shell.
833
-
834
- ## `agents[].contacts[].args`
835
-
836
- - Type: array of string; optional.
837
- - Default: none declared.
838
- - Allowed values: schema type plus the normative behavior in this entry.
839
- - Normative source: [`spec/_.hint:467`](../spec/_.hint#L467).
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).
841
-
842
- Behavior and consequence:
843
-
844
- list of string templates, optional for `exec`, appended to `command`. It may use every non-message
845
- placeholder in `contact_placeholders`; changing it changes argv only.
846
-
847
- ## `agents[].contacts[].stdin`
848
-
849
- - Type: string; optional.
850
- - Default: none declared.
851
- - Allowed values: schema type plus the normative behavior in this entry.
852
- - Normative source: [`spec/_.hint:472`](../spec/_.hint#L472).
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).
854
-
855
- Behavior and consequence:
856
-
857
- string template, optional for `exec`, default `{message}`. It may use the complete placeholder set
858
- and is passed as stdin without shell or environment expansion.
859
-
860
- ## `agents[].trust.signatures`
861
-
862
- - Type: boolean; optional.
863
- - Default: `false`.
864
- - Allowed values: schema type plus the normative behavior in this entry.
865
- - Normative source: [`spec/_.hint:506`](../spec/_.hint#L506).
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).
867
-
868
- Behavior and consequence:
869
-
870
- boolean, optional, default `false`. When changed to `true`, unsigned, invalid, or unverifiable
871
- cards make `status` fail and make `update` warn while retaining the dependency update.
872
-
873
- ## `agents[].trust.accepts-external`
874
-
875
- - Type: boolean; optional.
876
- - Default: unstated.
877
- - Allowed values: schema type plus the normative behavior in this entry.
878
- - Normative source: [`spec/_.hint:511`](../spec/_.hint#L511).
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).
880
-
881
- Behavior and consequence:
882
-
883
- boolean, optional, default unstated. `false` is enforced by `contact`: a consumer whose
884
- organisation differs from the owner's is refused (exit 2) unless `--external-ok`; `who` marks the
885
- agent "(external requests not accepted)". Organisation = origin host plus first path segment of
886
- `module.repository`, or the values of `settings.organisation` when declared.
887
-
888
- ## `agents[].trust.jwks`
889
-
890
- - Type: array of string; optional.
891
- - Default: no pinned JWKS sources.
892
- - Allowed values: schema type plus the normative behavior in this entry.
893
- - Normative source: [`spec/_.hint:518`](../spec/_.hint#L518).
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).
895
-
896
- Behavior and consequence:
897
-
898
- list of HTTPS URLs, optional. A card signature may use a key served by one of these pinned JWKS
899
- sources. Changing the list changes the accepted key authorities; a newly selected key is still
900
- subject to lock key-change review.
901
-
902
- ## `agents[].trust.keys`
903
-
904
- - Type: array of string; optional.
905
- - Default: no pinned key thumbprints.
906
- - Allowed values: schema type plus the normative behavior in this entry.
907
- - Normative source: [`spec/_.hint:524`](../spec/_.hint#L524).
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).
909
-
910
- Behavior and consequence:
911
-
912
- list of RFC 7638 JWK SHA-256 thumbprints, optional. A card signature may use a key matching one
913
- of these pins regardless of JWKS URL. Changing the list changes the exact accepted public keys.
914
-
915
- ## `agents[].trust.origins`
916
-
917
- - Type: array of string; optional.
918
- - Default: repository/card binding rules.
919
- - Allowed values: schema type plus the normative behavior in this entry.
920
- - Normative source: [`spec/_.hint:529`](../spec/_.hint#L529).
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).
922
-
923
- Behavior and consequence:
924
-
925
- list of `scheme://host[:port]` origins, optional. When present, card and interface URLs must use
926
- one of these origins. Changing it changes the allowed network identity of the agent binding.
927
-
928
- ## `agents[].trust.jwks-max-age`
929
-
930
- - Type: string; optional.
931
- - Default: `24h`.
932
- - Allowed values: minimum length 1.
933
- - Normative source: [`spec/_.hint:534`](../spec/_.hint#L534).
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).
935
-
936
- Behavior and consequence:
937
-
938
- duration string, optional, default `24h`. Online status refreshes older JWKS cache entries;
939
- offline status reports their age. Changing it changes refresh freshness, never the cache's
940
- recoverable status.
941
-
942
- ## `policy.intents`
943
-
944
- - Type: object; optional.
945
- - Default: unlisted intents route to `owner`.
946
- - Allowed values: schema type plus the normative behavior in this entry.
947
- - Normative source: [`spec/_.hint:599`](../spec/_.hint#L599).
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).
949
-
950
- Behavior and consequence:
951
-
952
- map intent → role. Which role answers which intent by default. Absent intents default to
953
- `owner`. Example: `change: spec` sends change requests to the specification agent rather than
954
- the coder — the pattern where engineers have full autonomy inside their repository and none
955
- outside it, and the manager owns the WHAT.
956
-
957
- Known values:
958
-
959
- | Known value | What the tool does | Consequence of changing it | Unknown value |
960
- | --- | --- | --- | --- |
961
- | `question` | Routes a request for explanation; defaults to role `owner`. | Selects contacts declaring `question` or `*`. | Accepted; policy and contacts can route any matching token. |
962
- | `change` | Routes a proposed behavior/API change. | Selects contacts declaring `change` or `*`. | Accepted; policy and contacts can route any matching token. |
963
- | `bug` | Routes a defect report. | Selects contacts declaring `bug` or `*`. | Accepted; policy and contacts can route any matching token. |
964
- | `review` | Routes a review request. | Selects contacts declaring `review` or `*`. | Accepted; policy and contacts can route any matching token. |
965
- | `incident` | Routes an operational incident. | Selects contacts declaring `incident` or `*`. | Accepted; policy and contacts can route any matching token. |
966
- | `*` | Acts as a contact fallback after exact intent matches. | Broadens that contact to unmatched intents. | Accepted; any other unknown token is an exact-match intent. |
967
-
968
- | Known value | What the tool does | Consequence of changing it | Unknown value |
969
- | --- | --- | --- | --- |
970
- | `owner` | Default routing target; identifies the agent that commits, merges, and releases. | Requests using the default route select a different binding. | Accepted and routed when policy names the same token. |
971
- | `maintainer` | Routes intents mapped to a maintainer. | Changes which bindings match those intents. | Accepted and routed when policy names the same token. |
972
- | `spec` | Routes specification, task, or sequencing ownership. | Changes which bindings match policy entries such as `change: spec`. | Accepted and routed when policy names the same token. |
973
- | `reviewer` | Routes review ownership. | Changes which bindings match review policy. | Accepted and routed when policy names the same token. |
974
- | `support` | Routes support ownership. | Changes which bindings match support policy. | Accepted and routed when policy names the same token. |
975
-
976
- ## `policy.consumers`
977
-
978
- - Type: object; optional.
979
- - Default: none declared.
980
- - Allowed values: open vocabulary; see the known-values table in this entry.
981
- - Normative source: [`spec/_.hint:606`](../spec/_.hint#L606).
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).
983
-
984
- Behavior and consequence:
985
-
986
- object: `may` and `may-not`, lists of tokens from an open vocabulary (`read-surface`, `ask`,
987
- `open-issue`, `propose-change`, `commit`, `edit-spec`, `release`, …). Rendered verbatim into the
988
- consumer's roster block so an agent sees the boundary before it acts. Defaults when absent:
989
- `may: [read-surface, ask]`, `may-not: [commit]`.
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:613`](../spec/_.hint#L613).
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
-
1006
- ## `policy.notes`
1007
-
1008
- - Type: string; optional.
1009
- - Default: none declared.
1010
- - Allowed values: schema type plus the normative behavior in this entry.
1011
- - Normative source: [`spec/_.hint:620`](../spec/_.hint#L620).
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).
1013
-
1014
- Behavior and consequence:
1015
-
1016
- string. Anything else consumers must know, verbatim.
1017
-
1018
- ## `policy.consumers.may`
1019
-
1020
- - Type: array of string; optional.
1021
- - Default: `[read-surface, ask]`.
1022
- - Allowed values: schema type plus the normative behavior in this entry.
1023
- - Normative source: [`spec/_.hint:628`](../spec/_.hint#L628).
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).
1025
-
1026
- Behavior and consequence:
1027
-
1028
- list of strings, optional, default `[read-surface, ask]`. Changing it changes the allowed actions
1029
- rendered into consumer AGENTS.md rosters; the CLI reports the boundary but does not become an
1030
- authorization service. Known values and unknown handling are in `vocabulary_consumers`.
1031
-
1032
- Known values:
1033
-
1034
- | Known value | What the tool does | Consequence of changing it | Unknown value |
1035
- | --- | --- | --- | --- |
1036
- | `read-surface` | Tells consumers they may read the published surface. | Adding/removing it changes the rendered boundary only. | Accepted and rendered verbatim; git-a2a does not enforce authorization. |
1037
- | `ask` | Tells consumers they may contact an owning agent. | Adding/removing it changes the rendered boundary only. | Accepted and rendered verbatim; git-a2a does not enforce authorization. |
1038
- | `open-issue`, `propose-change` | Tells consumers they may request owner-side work. | Adding/removing it changes the rendered boundary only. | Accepted and rendered verbatim; git-a2a does not enforce authorization. |
1039
- | `commit`, `edit-spec`, `release` | Common `may-not` boundaries for owner-controlled changes. | Adding/removing one changes the prohibition shown in the roster. | Accepted and rendered verbatim; downstream agents must obey it. |
1040
-
1041
- ## `policy.consumers.may-not`
1042
-
1043
- - Type: array of string; optional.
1044
- - Default: `[commit]`.
1045
- - Allowed values: schema type plus the normative behavior in this entry.
1046
- - Normative source: [`spec/_.hint:634`](../spec/_.hint#L634).
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).
1048
-
1049
- Behavior and consequence:
1050
-
1051
- list of strings, optional, default `[commit]`. Changing it changes the prohibited actions rendered
1052
- into consumer rosters; downstream agents remain responsible for obeying the declaration. Known
1053
- values and unknown handling are in `vocabulary_consumers`.
1054
-
1055
- Known values:
1056
-
1057
- | Known value | What the tool does | Consequence of changing it | Unknown value |
1058
- | --- | --- | --- | --- |
1059
- | `read-surface` | Tells consumers they may read the published surface. | Adding/removing it changes the rendered boundary only. | Accepted and rendered verbatim; git-a2a does not enforce authorization. |
1060
- | `ask` | Tells consumers they may contact an owning agent. | Adding/removing it changes the rendered boundary only. | Accepted and rendered verbatim; git-a2a does not enforce authorization. |
1061
- | `open-issue`, `propose-change` | Tells consumers they may request owner-side work. | Adding/removing it changes the rendered boundary only. | Accepted and rendered verbatim; git-a2a does not enforce authorization. |
1062
- | `commit`, `edit-spec`, `release` | Common `may-not` boundaries for owner-controlled changes. | Adding/removing one changes the prohibition shown in the roster. | Accepted and rendered verbatim; downstream agents must obey it. |
1063
-
1064
- ## `settings.vendor-dir`
1065
-
1066
- - Type: string; optional.
1067
- - Default: `deps`.
1068
- - Allowed values: minimum length 1.
1069
- - Normative source: [`spec/_.hint:148`](../spec/_.hint#L148).
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).
1071
-
1072
- Behavior and consequence:
1073
-
1074
- string, optional relative path, default `deps`. Parent directory used when a vendored dependency
1075
- does not declare `vendor.path`. `vendor/` is deliberately not the default because Go and Composer
1076
- assign their own semantics to that name. Changing it moves only dependencies that use the default;
1077
- explicit `vendor.path` values remain unchanged. It obeys all vendored-path safety rules.
1078
-
1079
- ## `settings.sync-targets`
1080
-
1081
- - Type: array of string; optional.
1082
- - Default: none declared.
1083
- - Allowed values: schema type plus the normative behavior in this entry.
1084
- - Normative source: [`spec/_.hint:155`](../spec/_.hint#L155).
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).
1086
-
1087
- Behavior and consequence:
1088
-
1089
- list of relative paths, optional. Additional files whose managed roster block `sync` maintains.
1090
- Changing the list changes sync destinations, not dependency resolution or vendoring.
1091
-
1092
- ## `settings.organisation`
1093
-
1094
- - Type: array of string; optional.
1095
- - Default: none declared.
1096
- - Allowed values: schema type plus the normative behavior in this entry.
1097
- - Normative source: [`spec/_.hint:160`](../spec/_.hint#L160).
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).
1099
-
1100
- Behavior and consequence:
1101
-
1102
- list of strings, optional. Origins or `origin/owner` prefixes that count as "our organisation"
1103
- for `accepts-external` decisions, e.g. `["https://github.com/neprel", "ssh://git.internal"]`.
1104
- Default: the origin host and first path segment of `module.repository`. Changing it changes only
1105
- the external-contact boundary used by `contact`.
1106
-
1107
- ## `settings.contact`
1108
-
1109
- - Type: object; optional.
1110
- - Default: none declared.
1111
- - Allowed values: schema type plus the normative behavior in this entry.
1112
- - Normative source: [`spec/_.hint:167`](../spec/_.hint#L167).
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).
1114
-
1115
- Behavior and consequence:
1116
-
1117
- object, optional: consumer consent for owner-described invocations. `allow-http` — list of
1118
- origins (`https://host[:port]`); a dependency's `http` contact is delivered only when its URL's
1119
- origin is listed, otherwise it renders as an instruction. `allow-exec` — list of bare binary
1120
- names; a dependency's `exec` contact runs only when `command[0]` is listed and resolves on
1121
- PATH. The lists live in the consumer's own manifest, so consent is authored, reviewed, and
1122
- versioned by the consumer — never by the dependency. Defaults: empty, meaning instruction-only.
1123
-
1124
- ## `dependencies[].id`
1125
-
1126
- - Type: string; optional.
1127
- - Default: none declared.
1128
- - Allowed values: pattern `^[a-z0-9][a-z0-9._-]{0,63}$`.
1129
- - Normative source: [`spec/_.hint:688`](../spec/_.hint#L688).
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).
1131
-
1132
- Behavior and consequence:
1133
-
1134
- string. The dependency's `module.id` for an a2a module, or the repository basename for a plain
1135
- dependency. Required after `add` (the CLI fills it); the lock is keyed on it.
1136
-
1137
- ## `dependencies[].git`
1138
-
1139
- - Type: string; required.
1140
- - Default: none declared.
1141
- - Allowed values: minimum length 1.
1142
- - Normative source: [`spec/_.hint:693`](../spec/_.hint#L693).
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).
1144
-
1145
- Behavior and consequence:
1146
-
1147
- string, required. The git URL (`ssh://`, `https://`, `git@host:path` scp form, `file://`).
1148
- Stored exactly as given; credentials are never stored.
1149
-
1150
- ## `dependencies[].ref`
1151
-
1152
- - Type: string; optional.
1153
- - Default: the owner's `release.channel`, otherwise remote HEAD.
1154
- - Allowed values: minimum length 1.
1155
- - Normative source: [`spec/_.hint:698`](../spec/_.hint#L698).
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).
1157
-
1158
- Behavior and consequence:
1159
-
1160
- string. Branch, tag or commit to follow. Default: the dependency's `release.channel`, else the
1161
- remote HEAD. Resolution: a 40-hex string is a commit; a full refname (`refs/heads/x`,
1162
- `refs/tags/x`) is exactly that; a short name is resolved in git's own order — `refs/tags/<ref>`
1163
- before `refs/heads/<ref>` — and an ambiguity is reported with the name chosen. A commit ref
1164
- implies `track: locked`. Changing `ref`, `git` or `path` of an existing dependency is an
1165
- ordinary edit (`git-a2a set`): identity is `module.id`, so the fetched manifest must carry the
1166
- same id unless the consumer explicitly accepts a different one; every wired ecosystem follows
1167
- the new source and pin together.
1168
-
1169
- ## `dependencies[].path`
1170
-
1171
- - Type: string; optional.
1172
- - Default: `.`.
1173
- - Allowed values: minimum length 1.
1174
- - Normative source: [`spec/_.hint:709`](../spec/_.hint#L709).
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).
1176
-
1177
- Behavior and consequence:
1178
-
1179
- string. Subdirectory containing the dependency's `a2amodule.yml` or `a2amodule.yaml`
1180
- (monorepo), or the adopted plain source root. Default `.`.
1181
-
1182
- ## `dependencies[].track`
1183
-
1184
- - Type: string; optional.
1185
- - Default: `locked`.
1186
- - Allowed values: one of `locked`, `floating`.
1187
- - Normative source: [`spec/_.hint:714`](../spec/_.hint#L714).
1188
- - 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).
1189
-
1190
- Behavior and consequence:
1191
-
1192
- `locked` (default) or `floating`, a closed vocabulary described in `vocabulary_track`. Every mode
1193
- still records one observed commit in the lock. Changing the mode rewrites supported native
1194
- dependency forms; unknown values are rejected.
1195
-
1196
- Known values:
1197
-
1198
- | Value | What the tool does | Consequence of changing it | Unknown value |
1199
- | --- | --- | --- | --- |
1200
- | `locked` | Pins every supported ecosystem to the one commit recorded in the lock. | Switching to it replaces floating native refs with the resolved commit. | Rejected by validation. |
1201
- | `floating` | Writes a branch/tag form where the adapter supports it while still recording the observed commit. | Switching to it lets native tools follow the declared ref independently. | Rejected by validation. |
1202
-
1203
- ## `dependencies[].wire`
1204
-
1205
- - Type: array of string; optional.
1206
- - Default: all matching detected ecosystems.
1207
- - Allowed values: schema type plus the normative behavior in this entry.
1208
- - Normative source: [`spec/_.hint:720`](../spec/_.hint#L720).
1209
- - 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
-
1211
- Behavior and consequence:
1212
-
1213
- list of ecosystems to wire, or absent for "every export that matches a manifest detected in this
1214
- repository". An empty list means "record the dependency, wire nothing". When `wire` is absent
1215
- and an export cannot be expressed in its ecosystem (the ecosystem has no git form for that URL,
1216
- no subdirectory support, a floating ref it cannot store), the tool wires what it can, reports
1217
- the rest as `not wired: <reason>` and `status` shows that ecosystem as `unwired`; it is an error
1218
- only for an ecosystem named explicitly in `wire`. Wiring is repairable at any time
1219
- (`git-a2a wire [ID]` re-applies every adapter from the lock, idempotently) — a half-wired
1220
- dependency is a state the tool can always see and always fix, never one it hides.
1221
-
1222
- ## `dependencies[].vendor`
1223
-
1224
- - Type: object; optional.
1225
- - Default: none declared.
1226
- - Allowed values: schema type plus the normative behavior in this entry.
1227
- - Normative source: [`spec/_.hint:731`](../spec/_.hint#L731).
1228
- - 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).
1229
-
1230
- Behavior and consequence:
1231
-
1232
- object, optional, see [#vendor](../spec/_.hint). Its presence explicitly asks the tool to materialise
1233
- the locked source tree in this consumer; a dependency is never vendored implicitly.
1234
-
1235
- ## `dependencies[].shim`
1236
-
1237
- - Type: object; optional.
1238
- - Default: none declared.
1239
- - Allowed values: schema type plus the normative behavior in this entry.
1240
- - Normative source: [`spec/_.hint:683`](../spec/_.hint#L683).
1241
- - 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).
1242
-
1243
- Behavior and consequence:
1244
-
1245
- object, optional, see [#shim](../spec/_.hint). Consumer-authored fallback metadata for a plain Git
1246
- dependency.
1247
-
1248
- ## `dependencies[].require`
1249
-
1250
- - Type: object; optional.
1251
- - Default: none declared.
1252
- - Allowed values: schema type plus the normative behavior in this entry.
1253
- - Normative source: [`spec/_.hint:736`](../spec/_.hint#L736).
1254
- - 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).
1255
-
1256
- Behavior and consequence:
1257
-
1258
- object, optional, see [#require](../spec/_.hint). It states consumer-side checks that must pass before
1259
- locking or contacting this dependency. Defaults preserve the permissive behavior.
1260
-
1261
- ## `dependencies[].require.commits`
1262
-
1263
- - Type: string; optional.
1264
- - Default: `any`.
1265
- - Allowed values: one of `any`, `signed`.
1266
- - Normative source: [`spec/_.hint:771`](../spec/_.hint#L771).
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).
1268
-
1269
- Behavior and consequence:
1270
-
1271
- `any` (default) or `signed`. With `signed`, `add`, `update`, `fetch`, and `set` verify the
1272
- resolved commit or tag with Git against `signers` before changing the lock. Changing it re-runs
1273
- the check on the next mutation and on `status`; unknown values are rejected.
1274
-
1275
- ## `dependencies[].require.signers`
1276
-
1277
- - Type: string; optional.
1278
- - Default: none declared.
1279
- - Allowed values: minimum length 1.
1280
- - Normative source: [`spec/_.hint:777`](../spec/_.hint#L777).
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).
1282
-
1283
- Behavior and consequence:
1284
-
1285
- repository-relative path to a Git `allowed_signers` file, required when `commits: signed`.
1286
- Changing it changes the trusted SSH/GPG signer set. A failed check leaves the lock untouched;
1287
- `--insecure-skip-signers` is the explicit override and records `verified: skipped`.
1288
-
1289
- ## `dependencies[].require.cards`
1290
-
1291
- - Type: string; optional.
1292
- - Default: `any`.
1293
- - Allowed values: one of `any`, `signed`.
1294
- - Normative source: [`spec/_.hint:783`](../spec/_.hint#L783).
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).
1296
-
1297
- Behavior and consequence:
1298
-
1299
- `any` (default) or `signed`. `signed` treats every agent binding in the dependency as if it
1300
- declared `trust.signatures: true`. Changing it changes whether unsigned or unverifiable cards
1301
- are accepted; unknown values are rejected.
1302
-
1303
- ## `dependencies[].require.card-origin`
1304
-
1305
- - Type: boolean; optional.
1306
- - Default: `false`.
1307
- - Allowed values: schema type plus the normative behavior in this entry.
1308
- - Normative source: [`spec/_.hint:789`](../spec/_.hint#L789).
1309
- - 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).
1310
-
1311
- Behavior and consequence:
1312
-
1313
- boolean, optional, default `false`. When true, a card or interface origin mismatch is a failure
1314
- rather than a warning. Changing it changes mismatch severity, not the origin comparison.
1315
-
1316
- ## `dependencies[].vendor.mode`
1317
-
1318
- - Type: string; optional.
1319
- - Default: `submodule`.
1320
- - Allowed values: one of `submodule`, `copy`.
1321
- - Normative source: [`spec/_.hint:803`](../spec/_.hint#L803).
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).
1323
-
1324
- Behavior and consequence:
1325
-
1326
- `submodule` (default) or `copy`. `submodule` records a Git gitlink at the locked commit and may
1327
- initialise nested submodules. `copy` records a plain Git-metadata-free tree. Changing mode replaces
1328
- one representation with the other transactionally; unknown values are rejected.
1329
-
1330
- ## `dependencies[].vendor.path`
1331
-
1332
- - Type: string; optional.
1333
- - Default: `<settings.vendor-dir>/<dependency-id>`.
1334
- - Allowed values: minimum length 1.
1335
- - Normative source: [`spec/_.hint:809`](../spec/_.hint#L809).
1336
- - 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).
1337
-
1338
- Behavior and consequence:
1339
-
1340
- string, optional relative path. Default `<settings.vendor-dir>/<dependency-id>`, normally
1341
- `deps/<id>`. After slash normalisation it must be `..`-free and non-absolute; it must not be
1342
- `.git`, `.git-a2a`, or inside either; must not equal or be inside `module.surface`; must not overlap
1343
- another dependency's vendor path; and no existing path component may be a symlink. For submodule
1344
- mode it must not already be tracked or be a submodule registered with another URL. Validation
1345
- reports violations and never silently rewrites the path.
1346
-
1347
- ## `dependencies[].vendor.recursive`
1348
-
1349
- - Type: boolean; optional.
1350
- - Default: `false`.
1351
- - Allowed values: schema type plus the normative behavior in this entry.
1352
- - Normative source: [`spec/_.hint:818`](../spec/_.hint#L818).
1353
- - 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).
1354
-
1355
- Behavior and consequence:
1356
-
1357
- boolean, optional, default `false`. In submodule mode, initialise the dependency's own nested
1358
- submodules. In copy mode `true` is invalid because a Git tree contains nested gitlinks, not their
1359
- content. Changing it changes only nested-submodule initialisation.
1360
-
1361
- ## Extension fields
1362
-
1363
- At every schema object that declares `patternProperties`, keys beginning with `x-` are
1364
- extensions. The CLI preserves them; changing one changes only the extension consumer's
1365
- behavior. A known object rejects every other unknown key.
1366
-
1367
- For an authoring sequence rather than field-by-field lookup, read the
1368
- [owner's guide](authoring.md).