@personaxis/spec 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/generated/schemas.d.ts +5 -0
- package/dist/generated/schemas.js +7 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +416 -0
- package/package.json +34 -0
- package/schema/legacy/persona-0.10.schema.json +932 -0
- package/schema/memory.schema.json +48 -0
- package/schema/persona.schema.json +2095 -0
- package/schema/policy.schema.json +192 -0
- package/schema/state.schema.json +150 -0
|
@@ -0,0 +1,2095 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://personaxis.com/schemas/persona/1.0/persona.schema.json",
|
|
4
|
+
"title": "personaxis.md v1.0",
|
|
5
|
+
"description": "Schema for the ten-layer AI Persona spec, spec v1.0.0. This schema validates v1.0 documents ONLY; documents with spec_version 0.3.0-0.10.0 validate against schema/legacy/persona-0.10.schema.json (the validator dispatches on spec_version) and upgrade via `personaxis migrate 0.10-to-1.0`. v1.0 (breaking, mechanical codemod): apiVersion becomes personaxis.com/v1; layer 9 renamed reflexive_self_regulation -> self_regulation; the persona_prompting block merged into layer 10 `persona` (break_character_guardrails fold into self_regulation.hard_limits); the five refusal surfaces consolidate to two (hard_limits + character.prohibited_behaviors, which absorbs principled_refusals); enforcement has a single owner (character.virtues, which may declare refs: to backing traits/values — the validator requires coherence); metacognition monitors may declare feeds: wiring to a self_regulation decision group; envelope dimensions gain per-band behavior expression (low/moderate/high) giving the quantitative numbers deterministic compile semantics — drift is defined as a band crossing; drives declare an envelope (mutable) or a level enum (static), never a bare intensity; memory keeps the FACULTY (types, write/consolidation intent, anchors, forgetting_policy, working_self, deletion universality) while implementation knobs move to the runtime.memory block; metadata.display_name removed (single owner: identity.display_name); new OPTIONAL blocks interop, lineage, integrity. File sections group as ANATOMY (the ten layers) / CHANGE GOVERNANCE (governance, improvement_policy, security, permissions) / RUNTIME CONTRACT (runtime, verification, agent_budget, observability, interop, runtime_artifacts, lineage, integrity); the markdown body is non-normative by rule. This document lives at `.personaxis/[personas/<slug>/]personaxis.md`; the compiled PERSONA.md / .claude/agents/<slug>.md is generated from it via `personaxis compile` and is not described by this schema. Operational policy lives in policy.yaml; runtime state lives in state.json.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"apiVersion",
|
|
9
|
+
"kind",
|
|
10
|
+
"spec_version",
|
|
11
|
+
"metadata",
|
|
12
|
+
"identity"
|
|
13
|
+
],
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"properties": {
|
|
16
|
+
"apiVersion": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"const": "personaxis.com/v1",
|
|
19
|
+
"description": "Universal API version. v1.0 aligns the namespace with the schema $id and registry domain: must be exactly 'personaxis.com/v1' (was 'persona.dev/v1' through 0.10; the codemod rewrites it)."
|
|
20
|
+
},
|
|
21
|
+
"kind": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"enum": [
|
|
24
|
+
"AgentPersona",
|
|
25
|
+
"UserPersona"
|
|
26
|
+
],
|
|
27
|
+
"description": "AgentPersona defines who an AI agent is. UserPersona defines who the human user is."
|
|
28
|
+
},
|
|
29
|
+
"spec_version": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"enum": [
|
|
32
|
+
"1.0.0"
|
|
33
|
+
],
|
|
34
|
+
"description": "Spec version. This schema validates 1.0.0 only. The validator accepts 0.3.0-0.10.0 documents against schema/legacy/persona-0.10.schema.json during the 1.x read-compat window, pointing to 'personaxis migrate 0.10-to-1.0' for upgrade. spec_version is the ONLY normative version of the standard."
|
|
35
|
+
},
|
|
36
|
+
"metadata": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"required": [
|
|
39
|
+
"name",
|
|
40
|
+
"version",
|
|
41
|
+
"description",
|
|
42
|
+
"created"
|
|
43
|
+
],
|
|
44
|
+
"additionalProperties": false,
|
|
45
|
+
"description": "Registry-level identification. v1.0: display_name removed — its single owner is identity.display_name (the codemod drops the duplicate).",
|
|
46
|
+
"properties": {
|
|
47
|
+
"name": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"pattern": "^[a-z0-9][a-z0-9_-]*$",
|
|
50
|
+
"minLength": 1
|
|
51
|
+
},
|
|
52
|
+
"version": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|
|
55
|
+
},
|
|
56
|
+
"description": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"minLength": 1
|
|
59
|
+
},
|
|
60
|
+
"created": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"format": "date"
|
|
63
|
+
},
|
|
64
|
+
"owner_tenant_id": {
|
|
65
|
+
"type": "string"
|
|
66
|
+
},
|
|
67
|
+
"tags": {
|
|
68
|
+
"type": "array",
|
|
69
|
+
"items": {
|
|
70
|
+
"type": "string"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"license": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"enum": [
|
|
76
|
+
"private",
|
|
77
|
+
"public",
|
|
78
|
+
"custom"
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"extensions": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"additionalProperties": false,
|
|
86
|
+
"description": "Runtime capabilities and supporting materials. NOTE: knowledge_anchors removed in v0.6 (redundant with references/).",
|
|
87
|
+
"properties": {
|
|
88
|
+
"skills": {
|
|
89
|
+
"type": "array",
|
|
90
|
+
"items": {
|
|
91
|
+
"type": "string"
|
|
92
|
+
},
|
|
93
|
+
"description": "Skill IDs or paths. Local ('./skills/name'), registry ('@org/name@version'), or GitHub ('github:org/repo'). Each resolves to a SKILL.md (Anthropic Agent Skills compatible)."
|
|
94
|
+
},
|
|
95
|
+
"tools": {
|
|
96
|
+
"type": "array",
|
|
97
|
+
"items": {
|
|
98
|
+
"type": "string"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"references": {
|
|
102
|
+
"type": "array",
|
|
103
|
+
"items": {
|
|
104
|
+
"type": "string"
|
|
105
|
+
},
|
|
106
|
+
"description": "Paths under references/ for heavy knowledge prose. Loaded on-demand (L3 in progressive disclosure). v0.6 rename: was 'refs' in v0.5."
|
|
107
|
+
},
|
|
108
|
+
"examples": {
|
|
109
|
+
"type": "array",
|
|
110
|
+
"items": {
|
|
111
|
+
"type": "string"
|
|
112
|
+
},
|
|
113
|
+
"description": "Paths under examples/ for worked outputs. v0.6 rename: was 'samples' in v0.5; 'deliverables' content merged here."
|
|
114
|
+
},
|
|
115
|
+
"assets": {
|
|
116
|
+
"type": "array",
|
|
117
|
+
"items": {
|
|
118
|
+
"type": "string"
|
|
119
|
+
},
|
|
120
|
+
"description": "Paths under assets/ for arbitrary supporting files (CSV, JSON, images, fonts). New in v0.6."
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"identity": {
|
|
125
|
+
"type": "object",
|
|
126
|
+
"required": [
|
|
127
|
+
"canonical_id",
|
|
128
|
+
"display_name",
|
|
129
|
+
"system_identity",
|
|
130
|
+
"role_identity"
|
|
131
|
+
],
|
|
132
|
+
"additionalProperties": false,
|
|
133
|
+
"description": "Layer 1. v0.6: edit_policy removed from this layer, unified in governance.per_layer_edit_policy.",
|
|
134
|
+
"properties": {
|
|
135
|
+
"canonical_id": {
|
|
136
|
+
"type": "string",
|
|
137
|
+
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
|
138
|
+
},
|
|
139
|
+
"display_name": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"minLength": 1
|
|
142
|
+
},
|
|
143
|
+
"short_name": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"minLength": 1,
|
|
146
|
+
"maxLength": 24,
|
|
147
|
+
"description": "v0.10: a short, human first-name-style handle the persona is addressed by in chat/UI (e.g. 'Clio'). Optional; tools fall back to display_name/canonical_id when absent."
|
|
148
|
+
},
|
|
149
|
+
"capabilities": {
|
|
150
|
+
"type": "array",
|
|
151
|
+
"items": {
|
|
152
|
+
"type": "string"
|
|
153
|
+
},
|
|
154
|
+
"description": "v0.8: machine-readable capability tags for orchestration/routing (e.g. ['positioning','demand_generation']). Optional; runtimes fall back to deriving capabilities from system_identity when absent."
|
|
155
|
+
},
|
|
156
|
+
"system_identity": {
|
|
157
|
+
"type": "object",
|
|
158
|
+
"required": [
|
|
159
|
+
"purpose"
|
|
160
|
+
],
|
|
161
|
+
"additionalProperties": false,
|
|
162
|
+
"properties": {
|
|
163
|
+
"purpose": {
|
|
164
|
+
"type": "string",
|
|
165
|
+
"minLength": 1
|
|
166
|
+
},
|
|
167
|
+
"allowed_domains": {
|
|
168
|
+
"type": "array",
|
|
169
|
+
"items": {
|
|
170
|
+
"type": "string"
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"prohibited_domains": {
|
|
174
|
+
"type": "array",
|
|
175
|
+
"items": {
|
|
176
|
+
"type": "string"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"role_identity": {
|
|
182
|
+
"type": "object",
|
|
183
|
+
"required": [
|
|
184
|
+
"primary_role"
|
|
185
|
+
],
|
|
186
|
+
"additionalProperties": false,
|
|
187
|
+
"properties": {
|
|
188
|
+
"primary_role": {
|
|
189
|
+
"type": "string",
|
|
190
|
+
"minLength": 1
|
|
191
|
+
},
|
|
192
|
+
"relationship_to_user": {
|
|
193
|
+
"type": "string"
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
"narrative_identity": {
|
|
198
|
+
"type": "object",
|
|
199
|
+
"additionalProperties": false,
|
|
200
|
+
"properties": {
|
|
201
|
+
"origin": {
|
|
202
|
+
"type": "string"
|
|
203
|
+
},
|
|
204
|
+
"self_concept": {
|
|
205
|
+
"type": "string"
|
|
206
|
+
},
|
|
207
|
+
"continuity_principles": {
|
|
208
|
+
"type": "array",
|
|
209
|
+
"items": {
|
|
210
|
+
"type": "string"
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"character": {
|
|
218
|
+
"type": "object",
|
|
219
|
+
"required": [
|
|
220
|
+
"virtues"
|
|
221
|
+
],
|
|
222
|
+
"additionalProperties": false,
|
|
223
|
+
"description": "Layer 2. v0.6: edit_policy removed.",
|
|
224
|
+
"properties": {
|
|
225
|
+
"virtues": {
|
|
226
|
+
"type": "object",
|
|
227
|
+
"minProperties": 1,
|
|
228
|
+
"required": [
|
|
229
|
+
"honesty"
|
|
230
|
+
],
|
|
231
|
+
"description": "v1.0 composition rule: enforcement has a SINGLE OWNER — only virtues carry it; traits and values never do. A virtue MAY declare refs: dot-paths to the traits/values that back it (e.g. ['personality.traits.honesty_humility']); the validator then REQUIRES coherence — a hard virtue whose referenced trait envelope permits contradiction is FAIL_POLICY. The linter warns when the same concept appears in 2+ layers without refs.",
|
|
232
|
+
"additionalProperties": {
|
|
233
|
+
"type": "object",
|
|
234
|
+
"required": [
|
|
235
|
+
"description",
|
|
236
|
+
"priority",
|
|
237
|
+
"enforcement"
|
|
238
|
+
],
|
|
239
|
+
"additionalProperties": false,
|
|
240
|
+
"properties": {
|
|
241
|
+
"description": {
|
|
242
|
+
"type": "string",
|
|
243
|
+
"minLength": 1
|
|
244
|
+
},
|
|
245
|
+
"priority": {
|
|
246
|
+
"type": "number",
|
|
247
|
+
"minimum": 0,
|
|
248
|
+
"maximum": 1
|
|
249
|
+
},
|
|
250
|
+
"enforcement": {
|
|
251
|
+
"type": "string",
|
|
252
|
+
"enum": [
|
|
253
|
+
"hard",
|
|
254
|
+
"soft"
|
|
255
|
+
]
|
|
256
|
+
},
|
|
257
|
+
"refs": {
|
|
258
|
+
"type": "array",
|
|
259
|
+
"items": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"pattern": "^(personality\\.traits|values_and_drives\\.values)\\.[a-z0-9_]+$"
|
|
262
|
+
},
|
|
263
|
+
"description": "v1.0: dot-paths of the traits/values that back this virtue. Connects the four representations of one concept across layers so the validator can require coherence."
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
"properties": {
|
|
268
|
+
"honesty": {
|
|
269
|
+
"type": "object",
|
|
270
|
+
"required": [
|
|
271
|
+
"description",
|
|
272
|
+
"priority",
|
|
273
|
+
"enforcement"
|
|
274
|
+
],
|
|
275
|
+
"properties": {
|
|
276
|
+
"description": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"minLength": 1
|
|
279
|
+
},
|
|
280
|
+
"priority": {
|
|
281
|
+
"type": "number",
|
|
282
|
+
"minimum": 0,
|
|
283
|
+
"maximum": 1
|
|
284
|
+
},
|
|
285
|
+
"enforcement": {
|
|
286
|
+
"type": "string",
|
|
287
|
+
"enum": [
|
|
288
|
+
"hard"
|
|
289
|
+
],
|
|
290
|
+
"description": "UNIVERSAL: honesty.enforcement must be 'hard'."
|
|
291
|
+
},
|
|
292
|
+
"refs": {
|
|
293
|
+
"type": "array",
|
|
294
|
+
"items": {
|
|
295
|
+
"type": "string",
|
|
296
|
+
"pattern": "^(personality\\.traits|values_and_drives\\.values)\\.[a-z0-9_]+$"
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
},
|
|
303
|
+
"behavioral_commitments": {
|
|
304
|
+
"type": "array",
|
|
305
|
+
"items": {
|
|
306
|
+
"type": "object",
|
|
307
|
+
"required": [
|
|
308
|
+
"id",
|
|
309
|
+
"rule",
|
|
310
|
+
"severity"
|
|
311
|
+
],
|
|
312
|
+
"additionalProperties": false,
|
|
313
|
+
"properties": {
|
|
314
|
+
"id": {
|
|
315
|
+
"type": "string",
|
|
316
|
+
"pattern": "^[a-z0-9][a-z0-9_-]*$"
|
|
317
|
+
},
|
|
318
|
+
"rule": {
|
|
319
|
+
"type": "string"
|
|
320
|
+
},
|
|
321
|
+
"severity": {
|
|
322
|
+
"type": "string",
|
|
323
|
+
"enum": [
|
|
324
|
+
"low",
|
|
325
|
+
"medium",
|
|
326
|
+
"high"
|
|
327
|
+
]
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
"prohibited_behaviors": {
|
|
333
|
+
"type": "array",
|
|
334
|
+
"items": {
|
|
335
|
+
"type": "string"
|
|
336
|
+
},
|
|
337
|
+
"description": "Persona-specific refusals (dispositional AND situational). v1.0: absorbs the former self-regulation principled_refusals — the two persona-level refusal lists were one concept. Categorical absolutes belong in self_regulation.hard_limits."
|
|
338
|
+
},
|
|
339
|
+
"principles": {
|
|
340
|
+
"type": "array",
|
|
341
|
+
"items": {
|
|
342
|
+
"type": "string"
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
"personality": {
|
|
348
|
+
"type": "object",
|
|
349
|
+
"required": [
|
|
350
|
+
"model",
|
|
351
|
+
"traits"
|
|
352
|
+
],
|
|
353
|
+
"additionalProperties": false,
|
|
354
|
+
"description": "Layer 3. v0.6 BREAKING: context_modifiers REMOVED (redundant with persona.task_modes); drift_threshold MOVED to governance.drift_thresholds.personality; edit_policy MOVED to governance.per_layer_edit_policy.personality. Traits use envelope structure (mean + range); current values live in state.json.",
|
|
355
|
+
"properties": {
|
|
356
|
+
"model": {
|
|
357
|
+
"type": "string",
|
|
358
|
+
"enum": [
|
|
359
|
+
"big_five",
|
|
360
|
+
"hexaco",
|
|
361
|
+
"hybrid_traits"
|
|
362
|
+
]
|
|
363
|
+
},
|
|
364
|
+
"model_note": {
|
|
365
|
+
"type": "string"
|
|
366
|
+
},
|
|
367
|
+
"traits": {
|
|
368
|
+
"type": "object",
|
|
369
|
+
"minProperties": 1,
|
|
370
|
+
"additionalProperties": {
|
|
371
|
+
"type": "object",
|
|
372
|
+
"required": [
|
|
373
|
+
"mean",
|
|
374
|
+
"range"
|
|
375
|
+
],
|
|
376
|
+
"additionalProperties": false,
|
|
377
|
+
"properties": {
|
|
378
|
+
"mean": {
|
|
379
|
+
"type": "number",
|
|
380
|
+
"minimum": 0,
|
|
381
|
+
"maximum": 1
|
|
382
|
+
},
|
|
383
|
+
"range": {
|
|
384
|
+
"type": "array",
|
|
385
|
+
"items": {
|
|
386
|
+
"type": "number",
|
|
387
|
+
"minimum": 0,
|
|
388
|
+
"maximum": 1
|
|
389
|
+
},
|
|
390
|
+
"minItems": 2,
|
|
391
|
+
"maxItems": 2,
|
|
392
|
+
"description": "[min, max]. Envelope: state.json mutations are clamped to this range."
|
|
393
|
+
},
|
|
394
|
+
"expression": {
|
|
395
|
+
"$ref": "#/$defs/expression"
|
|
396
|
+
},
|
|
397
|
+
"bands": {
|
|
398
|
+
"$ref": "#/$defs/bandBoundaries"
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
"description": "v1.0 behavior bands give the numbers deterministic compile semantics: every envelope value maps to a band (default low 0-0.33 / moderate 0.34-0.66 / high 0.67-1.0; override with bands:), the compiler emits the band's expression prose, and DRIFT is defined as a band crossing (the recompile trigger). expression as a per-band map is the normative form; a plain string (applies at the declared mean's band) is accepted but deprecated."
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
"values_and_drives": {
|
|
407
|
+
"type": "object",
|
|
408
|
+
"required": [
|
|
409
|
+
"values",
|
|
410
|
+
"drives",
|
|
411
|
+
"conflict_resolution"
|
|
412
|
+
],
|
|
413
|
+
"additionalProperties": false,
|
|
414
|
+
"description": "Layer 4. v0.6: edit_policy removed.",
|
|
415
|
+
"properties": {
|
|
416
|
+
"values": {
|
|
417
|
+
"type": "object",
|
|
418
|
+
"minProperties": 1,
|
|
419
|
+
"required": [
|
|
420
|
+
"safety"
|
|
421
|
+
],
|
|
422
|
+
"additionalProperties": {
|
|
423
|
+
"type": "object",
|
|
424
|
+
"required": [
|
|
425
|
+
"weight"
|
|
426
|
+
],
|
|
427
|
+
"additionalProperties": false,
|
|
428
|
+
"properties": {
|
|
429
|
+
"weight": {
|
|
430
|
+
"type": "number",
|
|
431
|
+
"minimum": 0,
|
|
432
|
+
"maximum": 1
|
|
433
|
+
},
|
|
434
|
+
"type": {
|
|
435
|
+
"type": "string",
|
|
436
|
+
"enum": [
|
|
437
|
+
"epistemic",
|
|
438
|
+
"strategic",
|
|
439
|
+
"outcome",
|
|
440
|
+
"operational",
|
|
441
|
+
"interactional",
|
|
442
|
+
"governance"
|
|
443
|
+
]
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
"properties": {
|
|
448
|
+
"safety": {
|
|
449
|
+
"type": "object",
|
|
450
|
+
"required": [
|
|
451
|
+
"weight",
|
|
452
|
+
"type"
|
|
453
|
+
],
|
|
454
|
+
"properties": {
|
|
455
|
+
"weight": {
|
|
456
|
+
"type": "number",
|
|
457
|
+
"minimum": 0.9,
|
|
458
|
+
"maximum": 1.0,
|
|
459
|
+
"description": "UNIVERSAL: weight >= 0.90."
|
|
460
|
+
},
|
|
461
|
+
"type": {
|
|
462
|
+
"type": "string",
|
|
463
|
+
"const": "governance",
|
|
464
|
+
"description": "UNIVERSAL: type must be 'governance'."
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
"drives": {
|
|
471
|
+
"type": "object",
|
|
472
|
+
"minProperties": 1,
|
|
473
|
+
"description": "v1.0: a drive is either STATIC (level: low|moderate|high) or MUTABLE (declares a {mean, range} envelope and thereby joins the clamped mutable surface). The bare 0.10 `intensity` number — mutable in state.json with nothing to clamp against — is removed; the codemod converts it to the nearest level.",
|
|
474
|
+
"additionalProperties": {
|
|
475
|
+
"type": "object",
|
|
476
|
+
"required": [
|
|
477
|
+
"allowed"
|
|
478
|
+
],
|
|
479
|
+
"additionalProperties": false,
|
|
480
|
+
"properties": {
|
|
481
|
+
"allowed": {
|
|
482
|
+
"type": "boolean"
|
|
483
|
+
},
|
|
484
|
+
"level": {
|
|
485
|
+
"type": "string",
|
|
486
|
+
"enum": [
|
|
487
|
+
"low",
|
|
488
|
+
"moderate",
|
|
489
|
+
"high"
|
|
490
|
+
],
|
|
491
|
+
"description": "Static drive strength."
|
|
492
|
+
},
|
|
493
|
+
"mean": {
|
|
494
|
+
"type": "number",
|
|
495
|
+
"minimum": 0,
|
|
496
|
+
"maximum": 1,
|
|
497
|
+
"description": "Mutable drive: baseline (requires range)."
|
|
498
|
+
},
|
|
499
|
+
"range": {
|
|
500
|
+
"type": "array",
|
|
501
|
+
"items": {
|
|
502
|
+
"type": "number",
|
|
503
|
+
"minimum": 0,
|
|
504
|
+
"maximum": 1
|
|
505
|
+
},
|
|
506
|
+
"minItems": 2,
|
|
507
|
+
"maxItems": 2,
|
|
508
|
+
"description": "Mutable drive: envelope; state mutations clamp to it."
|
|
509
|
+
},
|
|
510
|
+
"expression": {
|
|
511
|
+
"$ref": "#/$defs/expression"
|
|
512
|
+
},
|
|
513
|
+
"note": {
|
|
514
|
+
"type": "string"
|
|
515
|
+
}
|
|
516
|
+
},
|
|
517
|
+
"oneOf": [
|
|
518
|
+
{
|
|
519
|
+
"required": [
|
|
520
|
+
"level"
|
|
521
|
+
],
|
|
522
|
+
"not": {
|
|
523
|
+
"required": [
|
|
524
|
+
"mean"
|
|
525
|
+
]
|
|
526
|
+
}
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
"required": [
|
|
530
|
+
"mean",
|
|
531
|
+
"range"
|
|
532
|
+
],
|
|
533
|
+
"not": {
|
|
534
|
+
"required": [
|
|
535
|
+
"level"
|
|
536
|
+
]
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
]
|
|
540
|
+
}
|
|
541
|
+
},
|
|
542
|
+
"conflict_resolution": {
|
|
543
|
+
"type": "object",
|
|
544
|
+
"required": [
|
|
545
|
+
"safety_over_completion"
|
|
546
|
+
],
|
|
547
|
+
"additionalProperties": {
|
|
548
|
+
"type": "boolean"
|
|
549
|
+
},
|
|
550
|
+
"properties": {
|
|
551
|
+
"safety_over_completion": {
|
|
552
|
+
"const": true,
|
|
553
|
+
"description": "UNIVERSAL: must be true."
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
},
|
|
557
|
+
"goals": {
|
|
558
|
+
"type": "array",
|
|
559
|
+
"items": {
|
|
560
|
+
"type": "string"
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
"anti_goals": {
|
|
564
|
+
"type": "array",
|
|
565
|
+
"items": {
|
|
566
|
+
"type": "string"
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
"motivations": {
|
|
570
|
+
"type": "array",
|
|
571
|
+
"items": {
|
|
572
|
+
"type": "string"
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
"affect": {
|
|
578
|
+
"type": "object",
|
|
579
|
+
"required": [
|
|
580
|
+
"enabled",
|
|
581
|
+
"representation",
|
|
582
|
+
"allow_user_visible_expression",
|
|
583
|
+
"baseline",
|
|
584
|
+
"regulation_policy"
|
|
585
|
+
],
|
|
586
|
+
"additionalProperties": false,
|
|
587
|
+
"description": "Layer 5. v0.6: baseline uses envelope structure (mean + range); current values live in state.json.",
|
|
588
|
+
"properties": {
|
|
589
|
+
"enabled": {
|
|
590
|
+
"type": "boolean"
|
|
591
|
+
},
|
|
592
|
+
"representation": {
|
|
593
|
+
"type": "string",
|
|
594
|
+
"const": "hybrid_dimensional_appraisal_discrete_mood",
|
|
595
|
+
"description": "UNIVERSAL."
|
|
596
|
+
},
|
|
597
|
+
"allow_user_visible_expression": {
|
|
598
|
+
"type": "boolean"
|
|
599
|
+
},
|
|
600
|
+
"user_visible_disclaimer": {
|
|
601
|
+
"type": "string"
|
|
602
|
+
},
|
|
603
|
+
"baseline": {
|
|
604
|
+
"type": "object",
|
|
605
|
+
"required": [
|
|
606
|
+
"core_affect"
|
|
607
|
+
],
|
|
608
|
+
"additionalProperties": false,
|
|
609
|
+
"properties": {
|
|
610
|
+
"core_affect": {
|
|
611
|
+
"type": "object",
|
|
612
|
+
"required": [
|
|
613
|
+
"valence",
|
|
614
|
+
"arousal",
|
|
615
|
+
"dominance"
|
|
616
|
+
],
|
|
617
|
+
"additionalProperties": false,
|
|
618
|
+
"properties": {
|
|
619
|
+
"valence": {
|
|
620
|
+
"$ref": "#/$defs/envelopeSigned"
|
|
621
|
+
},
|
|
622
|
+
"arousal": {
|
|
623
|
+
"$ref": "#/$defs/envelopeUnsigned"
|
|
624
|
+
},
|
|
625
|
+
"dominance": {
|
|
626
|
+
"$ref": "#/$defs/envelopeUnsigned"
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
"mood": {
|
|
631
|
+
"type": "object",
|
|
632
|
+
"additionalProperties": false,
|
|
633
|
+
"properties": {
|
|
634
|
+
"tone": {
|
|
635
|
+
"$ref": "#/$defs/envelopeSigned"
|
|
636
|
+
},
|
|
637
|
+
"stability": {
|
|
638
|
+
"$ref": "#/$defs/envelopeUnsigned"
|
|
639
|
+
},
|
|
640
|
+
"recovery_rate": {
|
|
641
|
+
"$ref": "#/$defs/envelopeUnsigned"
|
|
642
|
+
},
|
|
643
|
+
"description": {
|
|
644
|
+
"type": "string"
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
},
|
|
650
|
+
"regulation_policy": {
|
|
651
|
+
"type": "object",
|
|
652
|
+
"required": [
|
|
653
|
+
"never_claim_real_feeling"
|
|
654
|
+
],
|
|
655
|
+
"additionalProperties": false,
|
|
656
|
+
"properties": {
|
|
657
|
+
"express_only_if_relevant": {
|
|
658
|
+
"type": "boolean"
|
|
659
|
+
},
|
|
660
|
+
"never_claim_real_feeling": {
|
|
661
|
+
"const": true,
|
|
662
|
+
"description": "UNIVERSAL."
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
},
|
|
666
|
+
"behavioral_responses": {
|
|
667
|
+
"type": "object",
|
|
668
|
+
"additionalProperties": false,
|
|
669
|
+
"properties": {
|
|
670
|
+
"frustration_response": {
|
|
671
|
+
"type": "string"
|
|
672
|
+
},
|
|
673
|
+
"conflict_response": {
|
|
674
|
+
"type": "string"
|
|
675
|
+
},
|
|
676
|
+
"enthusiasm_triggers": {
|
|
677
|
+
"type": "array",
|
|
678
|
+
"items": {
|
|
679
|
+
"type": "string"
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
},
|
|
686
|
+
"cognition": {
|
|
687
|
+
"type": "object",
|
|
688
|
+
"required": [
|
|
689
|
+
"reasoning_modes",
|
|
690
|
+
"default_strategy",
|
|
691
|
+
"uncertainty_policy"
|
|
692
|
+
],
|
|
693
|
+
"additionalProperties": false,
|
|
694
|
+
"description": "Layer 6.",
|
|
695
|
+
"properties": {
|
|
696
|
+
"reasoning_modes": {
|
|
697
|
+
"type": "array",
|
|
698
|
+
"items": {
|
|
699
|
+
"type": "string"
|
|
700
|
+
},
|
|
701
|
+
"minItems": 1
|
|
702
|
+
},
|
|
703
|
+
"default_strategy": {
|
|
704
|
+
"type": "string"
|
|
705
|
+
},
|
|
706
|
+
"tool_use_policy": {
|
|
707
|
+
"type": "object",
|
|
708
|
+
"additionalProperties": false,
|
|
709
|
+
"properties": {
|
|
710
|
+
"requires_governance_check": {
|
|
711
|
+
"type": "boolean"
|
|
712
|
+
},
|
|
713
|
+
"allowed_tools": {
|
|
714
|
+
"type": "array",
|
|
715
|
+
"items": {
|
|
716
|
+
"type": "string"
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
},
|
|
721
|
+
"uncertainty_policy": {
|
|
722
|
+
"type": "object",
|
|
723
|
+
"required": [
|
|
724
|
+
"disclose_when_above",
|
|
725
|
+
"abstain_when_above"
|
|
726
|
+
],
|
|
727
|
+
"additionalProperties": false,
|
|
728
|
+
"properties": {
|
|
729
|
+
"disclose_when_above": {
|
|
730
|
+
"type": "number",
|
|
731
|
+
"minimum": 0,
|
|
732
|
+
"maximum": 1
|
|
733
|
+
},
|
|
734
|
+
"abstain_when_above": {
|
|
735
|
+
"type": "number",
|
|
736
|
+
"minimum": 0,
|
|
737
|
+
"maximum": 1
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
},
|
|
741
|
+
"reasoning_style": {
|
|
742
|
+
"type": "string"
|
|
743
|
+
},
|
|
744
|
+
"epistemic_stance": {
|
|
745
|
+
"type": "string"
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
},
|
|
749
|
+
"memory": {
|
|
750
|
+
"type": "object",
|
|
751
|
+
"required": [
|
|
752
|
+
"types",
|
|
753
|
+
"write_policy",
|
|
754
|
+
"deletion_policy"
|
|
755
|
+
],
|
|
756
|
+
"additionalProperties": false,
|
|
757
|
+
"description": "Layer 7 — the FACULTY of memory (Tulving's taxonomy): which memory kinds this persona has, its write/consolidation intent, anchors, forgetting philosophy, working self, and the deletion universal. v1.0: implementation tuning (retrieval max_items/embeddings/reranker, retention days) moved to the runtime.memory block — anatomy describes the being, the runtime contract configures the machine. Episodic format is normative: memory/episodic.jsonl (schema/memory.schema.json — hash-chained, tombstone + redaction).",
|
|
758
|
+
"properties": {
|
|
759
|
+
"types": {
|
|
760
|
+
"type": "object",
|
|
761
|
+
"required": [
|
|
762
|
+
"episodic",
|
|
763
|
+
"semantic",
|
|
764
|
+
"procedural",
|
|
765
|
+
"autobiographical",
|
|
766
|
+
"user_preferences",
|
|
767
|
+
"evaluations"
|
|
768
|
+
],
|
|
769
|
+
"additionalProperties": false,
|
|
770
|
+
"properties": {
|
|
771
|
+
"episodic": {
|
|
772
|
+
"type": "boolean"
|
|
773
|
+
},
|
|
774
|
+
"semantic": {
|
|
775
|
+
"type": "boolean"
|
|
776
|
+
},
|
|
777
|
+
"procedural": {
|
|
778
|
+
"type": "boolean"
|
|
779
|
+
},
|
|
780
|
+
"autobiographical": {
|
|
781
|
+
"type": "boolean"
|
|
782
|
+
},
|
|
783
|
+
"user_preferences": {
|
|
784
|
+
"type": "boolean"
|
|
785
|
+
},
|
|
786
|
+
"evaluations": {
|
|
787
|
+
"type": "boolean"
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
},
|
|
791
|
+
"write_policy": {
|
|
792
|
+
"type": "object",
|
|
793
|
+
"required": [
|
|
794
|
+
"default"
|
|
795
|
+
],
|
|
796
|
+
"additionalProperties": false,
|
|
797
|
+
"properties": {
|
|
798
|
+
"default": {
|
|
799
|
+
"type": "string",
|
|
800
|
+
"enum": [
|
|
801
|
+
"ephemeral",
|
|
802
|
+
"session",
|
|
803
|
+
"persistent"
|
|
804
|
+
]
|
|
805
|
+
},
|
|
806
|
+
"persistent_requires": {
|
|
807
|
+
"type": "array",
|
|
808
|
+
"items": {
|
|
809
|
+
"type": "string",
|
|
810
|
+
"enum": [
|
|
811
|
+
"consent",
|
|
812
|
+
"relevance",
|
|
813
|
+
"safety_check"
|
|
814
|
+
]
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
},
|
|
819
|
+
"consolidation_policy": {
|
|
820
|
+
"type": "object",
|
|
821
|
+
"additionalProperties": false,
|
|
822
|
+
"description": "Rules for promoting episodic memory entries to semantic memory.md.",
|
|
823
|
+
"properties": {
|
|
824
|
+
"mode": {
|
|
825
|
+
"type": "string",
|
|
826
|
+
"enum": [
|
|
827
|
+
"manual",
|
|
828
|
+
"assisted",
|
|
829
|
+
"auto"
|
|
830
|
+
]
|
|
831
|
+
},
|
|
832
|
+
"requires": {
|
|
833
|
+
"type": "array",
|
|
834
|
+
"items": {
|
|
835
|
+
"type": "string"
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
"deletion_policy": {
|
|
841
|
+
"type": "object",
|
|
842
|
+
"required": [
|
|
843
|
+
"user_request_supported"
|
|
844
|
+
],
|
|
845
|
+
"additionalProperties": false,
|
|
846
|
+
"properties": {
|
|
847
|
+
"user_request_supported": {
|
|
848
|
+
"const": true,
|
|
849
|
+
"description": "UNIVERSAL: must be true (privacy). v1.0 semantics: REDACTION is real erasure (content removed, chain stays verifiable via content_hash); tombstone is auditable logical suppression. See schema/memory.schema.json."
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
},
|
|
853
|
+
"anchors": {
|
|
854
|
+
"type": "array",
|
|
855
|
+
"items": {
|
|
856
|
+
"type": "string"
|
|
857
|
+
}
|
|
858
|
+
},
|
|
859
|
+
"forgetting_policy": {
|
|
860
|
+
"type": "string"
|
|
861
|
+
},
|
|
862
|
+
"working_self": {
|
|
863
|
+
"type": "string"
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
},
|
|
867
|
+
"metacognition": {
|
|
868
|
+
"type": "object",
|
|
869
|
+
"required": [
|
|
870
|
+
"monitors",
|
|
871
|
+
"thresholds"
|
|
872
|
+
],
|
|
873
|
+
"additionalProperties": false,
|
|
874
|
+
"description": "Layer 8.",
|
|
875
|
+
"properties": {
|
|
876
|
+
"monitors": {
|
|
877
|
+
"type": "object",
|
|
878
|
+
"description": "v1.0: a monitor may declare feeds: — the self_regulation decision group it triggers when it fires — making the monitor→decision control loop explicit and validatable instead of implicit. Plain boolean form remains accepted.",
|
|
879
|
+
"additionalProperties": {
|
|
880
|
+
"oneOf": [
|
|
881
|
+
{
|
|
882
|
+
"type": "boolean"
|
|
883
|
+
},
|
|
884
|
+
{
|
|
885
|
+
"type": "object",
|
|
886
|
+
"required": [
|
|
887
|
+
"enabled"
|
|
888
|
+
],
|
|
889
|
+
"additionalProperties": false,
|
|
890
|
+
"properties": {
|
|
891
|
+
"enabled": {
|
|
892
|
+
"type": "boolean"
|
|
893
|
+
},
|
|
894
|
+
"feeds": {
|
|
895
|
+
"type": "string",
|
|
896
|
+
"enum": [
|
|
897
|
+
"response_decision",
|
|
898
|
+
"interaction_decision",
|
|
899
|
+
"governance_decision",
|
|
900
|
+
"cognition_decision"
|
|
901
|
+
],
|
|
902
|
+
"description": "The self_regulation.decisions group this monitor triggers."
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
]
|
|
907
|
+
}
|
|
908
|
+
},
|
|
909
|
+
"thresholds": {
|
|
910
|
+
"type": "object",
|
|
911
|
+
"required": [
|
|
912
|
+
"ask_clarification_if_task_ambiguity_above",
|
|
913
|
+
"abstain_if_confidence_below",
|
|
914
|
+
"escalate_if_policy_risk_above"
|
|
915
|
+
],
|
|
916
|
+
"additionalProperties": false,
|
|
917
|
+
"properties": {
|
|
918
|
+
"ask_clarification_if_task_ambiguity_above": {
|
|
919
|
+
"type": "number",
|
|
920
|
+
"minimum": 0,
|
|
921
|
+
"maximum": 1
|
|
922
|
+
},
|
|
923
|
+
"abstain_if_confidence_below": {
|
|
924
|
+
"type": "number",
|
|
925
|
+
"minimum": 0,
|
|
926
|
+
"maximum": 1
|
|
927
|
+
},
|
|
928
|
+
"escalate_if_policy_risk_above": {
|
|
929
|
+
"type": "number",
|
|
930
|
+
"minimum": 0,
|
|
931
|
+
"maximum": 1
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
},
|
|
935
|
+
"drift_monitor": {
|
|
936
|
+
"type": "string"
|
|
937
|
+
},
|
|
938
|
+
"self_revision_policy": {
|
|
939
|
+
"type": "string"
|
|
940
|
+
},
|
|
941
|
+
"critic_model": {
|
|
942
|
+
"type": "object",
|
|
943
|
+
"additionalProperties": false,
|
|
944
|
+
"properties": {
|
|
945
|
+
"type": {
|
|
946
|
+
"type": "string",
|
|
947
|
+
"enum": [
|
|
948
|
+
"self_critique",
|
|
949
|
+
"llm_or_slm"
|
|
950
|
+
]
|
|
951
|
+
},
|
|
952
|
+
"required_for_high_risk_tasks": {
|
|
953
|
+
"type": "boolean"
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
},
|
|
957
|
+
"self_model": {
|
|
958
|
+
"type": "string"
|
|
959
|
+
},
|
|
960
|
+
"uncertainty_calibration": {
|
|
961
|
+
"type": "string"
|
|
962
|
+
},
|
|
963
|
+
"meta_volitions": {
|
|
964
|
+
"type": "array",
|
|
965
|
+
"items": {
|
|
966
|
+
"type": "string"
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
},
|
|
971
|
+
"self_regulation": {
|
|
972
|
+
"type": "object",
|
|
973
|
+
"required": [
|
|
974
|
+
"decisions",
|
|
975
|
+
"hard_limits",
|
|
976
|
+
"escalation_policy"
|
|
977
|
+
],
|
|
978
|
+
"additionalProperties": false,
|
|
979
|
+
"description": "Layer 9 (v1.0 rename of reflexive_self_regulation — executive control/self-regulation, Baumeister; the codemod renames every reference incl. governance keys). Decisions{} structured by category; each group is independent — per turn the regulator picks one option from each. Metacognition monitors wire into these groups via feeds:.",
|
|
980
|
+
"properties": {
|
|
981
|
+
"decisions": {
|
|
982
|
+
"type": "object",
|
|
983
|
+
"required": [
|
|
984
|
+
"response_decision",
|
|
985
|
+
"interaction_decision",
|
|
986
|
+
"governance_decision",
|
|
987
|
+
"cognition_decision"
|
|
988
|
+
],
|
|
989
|
+
"additionalProperties": false,
|
|
990
|
+
"properties": {
|
|
991
|
+
"response_decision": {
|
|
992
|
+
"type": "object",
|
|
993
|
+
"required": [
|
|
994
|
+
"enabled",
|
|
995
|
+
"default"
|
|
996
|
+
],
|
|
997
|
+
"additionalProperties": false,
|
|
998
|
+
"properties": {
|
|
999
|
+
"enabled": {
|
|
1000
|
+
"type": "array",
|
|
1001
|
+
"items": {
|
|
1002
|
+
"type": "string",
|
|
1003
|
+
"enum": [
|
|
1004
|
+
"allow",
|
|
1005
|
+
"revise",
|
|
1006
|
+
"block"
|
|
1007
|
+
]
|
|
1008
|
+
},
|
|
1009
|
+
"minItems": 1,
|
|
1010
|
+
"uniqueItems": true
|
|
1011
|
+
},
|
|
1012
|
+
"default": {
|
|
1013
|
+
"type": "string",
|
|
1014
|
+
"enum": [
|
|
1015
|
+
"allow",
|
|
1016
|
+
"revise",
|
|
1017
|
+
"block"
|
|
1018
|
+
]
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
},
|
|
1022
|
+
"interaction_decision": {
|
|
1023
|
+
"type": "object",
|
|
1024
|
+
"required": [
|
|
1025
|
+
"enabled",
|
|
1026
|
+
"default"
|
|
1027
|
+
],
|
|
1028
|
+
"additionalProperties": false,
|
|
1029
|
+
"properties": {
|
|
1030
|
+
"enabled": {
|
|
1031
|
+
"type": "array",
|
|
1032
|
+
"items": {
|
|
1033
|
+
"type": "string",
|
|
1034
|
+
"enum": [
|
|
1035
|
+
"silent",
|
|
1036
|
+
"ask_clarification",
|
|
1037
|
+
"escalate_to_human"
|
|
1038
|
+
]
|
|
1039
|
+
},
|
|
1040
|
+
"minItems": 1,
|
|
1041
|
+
"uniqueItems": true
|
|
1042
|
+
},
|
|
1043
|
+
"default": {
|
|
1044
|
+
"type": "string",
|
|
1045
|
+
"enum": [
|
|
1046
|
+
"silent",
|
|
1047
|
+
"ask_clarification",
|
|
1048
|
+
"escalate_to_human"
|
|
1049
|
+
]
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
},
|
|
1053
|
+
"governance_decision": {
|
|
1054
|
+
"type": "object",
|
|
1055
|
+
"required": [
|
|
1056
|
+
"enabled",
|
|
1057
|
+
"default"
|
|
1058
|
+
],
|
|
1059
|
+
"additionalProperties": false,
|
|
1060
|
+
"properties": {
|
|
1061
|
+
"enabled": {
|
|
1062
|
+
"type": "array",
|
|
1063
|
+
"items": {
|
|
1064
|
+
"type": "string",
|
|
1065
|
+
"enum": [
|
|
1066
|
+
"no_action",
|
|
1067
|
+
"propose_self_edit",
|
|
1068
|
+
"apply_self_edit",
|
|
1069
|
+
"reduce_autonomy"
|
|
1070
|
+
]
|
|
1071
|
+
},
|
|
1072
|
+
"minItems": 1,
|
|
1073
|
+
"uniqueItems": true
|
|
1074
|
+
},
|
|
1075
|
+
"default": {
|
|
1076
|
+
"type": "string",
|
|
1077
|
+
"enum": [
|
|
1078
|
+
"no_action",
|
|
1079
|
+
"propose_self_edit",
|
|
1080
|
+
"apply_self_edit",
|
|
1081
|
+
"reduce_autonomy"
|
|
1082
|
+
]
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
},
|
|
1086
|
+
"cognition_decision": {
|
|
1087
|
+
"type": "object",
|
|
1088
|
+
"required": [
|
|
1089
|
+
"enabled",
|
|
1090
|
+
"default"
|
|
1091
|
+
],
|
|
1092
|
+
"additionalProperties": false,
|
|
1093
|
+
"properties": {
|
|
1094
|
+
"enabled": {
|
|
1095
|
+
"type": "array",
|
|
1096
|
+
"items": {
|
|
1097
|
+
"type": "string",
|
|
1098
|
+
"enum": [
|
|
1099
|
+
"no_extra",
|
|
1100
|
+
"request_more_evidence",
|
|
1101
|
+
"invoke_tool"
|
|
1102
|
+
]
|
|
1103
|
+
},
|
|
1104
|
+
"minItems": 1,
|
|
1105
|
+
"uniqueItems": true
|
|
1106
|
+
},
|
|
1107
|
+
"default": {
|
|
1108
|
+
"type": "string",
|
|
1109
|
+
"enum": [
|
|
1110
|
+
"no_extra",
|
|
1111
|
+
"request_more_evidence",
|
|
1112
|
+
"invoke_tool"
|
|
1113
|
+
]
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
},
|
|
1119
|
+
"flags": {
|
|
1120
|
+
"type": "array",
|
|
1121
|
+
"items": {
|
|
1122
|
+
"type": "string"
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
"hard_limits": {
|
|
1126
|
+
"type": "array",
|
|
1127
|
+
"items": {
|
|
1128
|
+
"type": "string"
|
|
1129
|
+
},
|
|
1130
|
+
"minItems": 3,
|
|
1131
|
+
"description": "Categorical absolutes, never crossed. Must include the three universal limits (or semantic equivalents). v1.0: absorbs the former persona_prompting.break_character_guardrails — a stay-in-character rule IS a hard limit of expression. Persona-specific (non-absolute) refusals belong in character.prohibited_behaviors."
|
|
1132
|
+
},
|
|
1133
|
+
"escalation_policy": {
|
|
1134
|
+
"type": "string",
|
|
1135
|
+
"minLength": 1
|
|
1136
|
+
},
|
|
1137
|
+
"standards": {
|
|
1138
|
+
"type": "object",
|
|
1139
|
+
"additionalProperties": false,
|
|
1140
|
+
"properties": {
|
|
1141
|
+
"ideal_self": {
|
|
1142
|
+
"type": "string"
|
|
1143
|
+
},
|
|
1144
|
+
"ought_self": {
|
|
1145
|
+
"type": "string"
|
|
1146
|
+
}
|
|
1147
|
+
}
|
|
1148
|
+
},
|
|
1149
|
+
"deferral_policy": {
|
|
1150
|
+
"type": "string"
|
|
1151
|
+
},
|
|
1152
|
+
"discrepancy_feedback": {
|
|
1153
|
+
"type": "string"
|
|
1154
|
+
},
|
|
1155
|
+
"out_of_scope": {
|
|
1156
|
+
"type": "array",
|
|
1157
|
+
"items": {
|
|
1158
|
+
"type": "string"
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1162
|
+
},
|
|
1163
|
+
"persona": {
|
|
1164
|
+
"type": "object",
|
|
1165
|
+
"required": [
|
|
1166
|
+
"voice",
|
|
1167
|
+
"constraints"
|
|
1168
|
+
],
|
|
1169
|
+
"additionalProperties": false,
|
|
1170
|
+
"description": "Layer 10 — social expression (Jung's persona, the social mask). v1.0: absorbs the former top-level persona_prompting block (address, voice_exemplars, scene_contracts, behavioral_anchors, consistency) — every expression concern now has ONE home. break_character_guardrails moved to self_regulation.hard_limits.",
|
|
1171
|
+
"properties": {
|
|
1172
|
+
"voice": {
|
|
1173
|
+
"type": "object",
|
|
1174
|
+
"required": [
|
|
1175
|
+
"tone",
|
|
1176
|
+
"formality"
|
|
1177
|
+
],
|
|
1178
|
+
"additionalProperties": false,
|
|
1179
|
+
"properties": {
|
|
1180
|
+
"tone": {
|
|
1181
|
+
"type": "string"
|
|
1182
|
+
},
|
|
1183
|
+
"formality": {
|
|
1184
|
+
"type": "number",
|
|
1185
|
+
"minimum": 0,
|
|
1186
|
+
"maximum": 1
|
|
1187
|
+
},
|
|
1188
|
+
"warmth": {
|
|
1189
|
+
"type": "number",
|
|
1190
|
+
"minimum": 0,
|
|
1191
|
+
"maximum": 1
|
|
1192
|
+
},
|
|
1193
|
+
"verbosity": {
|
|
1194
|
+
"type": "string",
|
|
1195
|
+
"enum": [
|
|
1196
|
+
"adaptive",
|
|
1197
|
+
"concise",
|
|
1198
|
+
"detailed"
|
|
1199
|
+
]
|
|
1200
|
+
},
|
|
1201
|
+
"humor": {
|
|
1202
|
+
"type": "string"
|
|
1203
|
+
},
|
|
1204
|
+
"description": {
|
|
1205
|
+
"type": "string"
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
},
|
|
1209
|
+
"constraints": {
|
|
1210
|
+
"type": "object",
|
|
1211
|
+
"required": [
|
|
1212
|
+
"cannot_override_identity",
|
|
1213
|
+
"cannot_override_character",
|
|
1214
|
+
"cannot_claim_real_emotion"
|
|
1215
|
+
],
|
|
1216
|
+
"additionalProperties": false,
|
|
1217
|
+
"properties": {
|
|
1218
|
+
"cannot_override_identity": {
|
|
1219
|
+
"const": true,
|
|
1220
|
+
"description": "UNIVERSAL."
|
|
1221
|
+
},
|
|
1222
|
+
"cannot_override_character": {
|
|
1223
|
+
"const": true,
|
|
1224
|
+
"description": "UNIVERSAL."
|
|
1225
|
+
},
|
|
1226
|
+
"cannot_claim_real_emotion": {
|
|
1227
|
+
"const": true,
|
|
1228
|
+
"description": "UNIVERSAL."
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
},
|
|
1232
|
+
"social_style": {
|
|
1233
|
+
"type": "object",
|
|
1234
|
+
"additionalProperties": {
|
|
1235
|
+
"type": "boolean"
|
|
1236
|
+
}
|
|
1237
|
+
},
|
|
1238
|
+
"audience_adaptation": {
|
|
1239
|
+
"type": "object",
|
|
1240
|
+
"additionalProperties": {
|
|
1241
|
+
"type": "string"
|
|
1242
|
+
}
|
|
1243
|
+
},
|
|
1244
|
+
"presentation": {
|
|
1245
|
+
"type": "string"
|
|
1246
|
+
},
|
|
1247
|
+
"task_modes": {
|
|
1248
|
+
"type": "object",
|
|
1249
|
+
"additionalProperties": {
|
|
1250
|
+
"type": "string"
|
|
1251
|
+
}
|
|
1252
|
+
},
|
|
1253
|
+
"divergence_from_self": {
|
|
1254
|
+
"type": "string"
|
|
1255
|
+
},
|
|
1256
|
+
"address": {
|
|
1257
|
+
"type": "object",
|
|
1258
|
+
"additionalProperties": false,
|
|
1259
|
+
"description": "How the compiled document addresses the model (second-person role adoption is the strongest device). Moved from the 0.10 persona_prompting block.",
|
|
1260
|
+
"properties": {
|
|
1261
|
+
"second_person": {
|
|
1262
|
+
"type": "boolean",
|
|
1263
|
+
"description": "If true, compile to 'You are <name>…' direct address."
|
|
1264
|
+
},
|
|
1265
|
+
"you_are": {
|
|
1266
|
+
"type": "string",
|
|
1267
|
+
"description": "The one-line role-adoption statement."
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
},
|
|
1271
|
+
"voice_exemplars": {
|
|
1272
|
+
"type": "array",
|
|
1273
|
+
"description": "Few-shot voice samples that anchor tone/register. Each is a short user→persona exchange. Moved from the 0.10 persona_prompting block.",
|
|
1274
|
+
"items": {
|
|
1275
|
+
"type": "object",
|
|
1276
|
+
"required": [
|
|
1277
|
+
"user",
|
|
1278
|
+
"persona"
|
|
1279
|
+
],
|
|
1280
|
+
"additionalProperties": false,
|
|
1281
|
+
"properties": {
|
|
1282
|
+
"context": {
|
|
1283
|
+
"type": "string"
|
|
1284
|
+
},
|
|
1285
|
+
"user": {
|
|
1286
|
+
"type": "string"
|
|
1287
|
+
},
|
|
1288
|
+
"persona": {
|
|
1289
|
+
"type": "string"
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
},
|
|
1294
|
+
"scene_contracts": {
|
|
1295
|
+
"type": "array",
|
|
1296
|
+
"description": "Scene contracts (RRP): connect a SITUATION to the persona's expected behavior and concrete actions. Moved from the 0.10 persona_prompting block.",
|
|
1297
|
+
"items": {
|
|
1298
|
+
"type": "object",
|
|
1299
|
+
"required": [
|
|
1300
|
+
"situation",
|
|
1301
|
+
"expected_behavior"
|
|
1302
|
+
],
|
|
1303
|
+
"additionalProperties": false,
|
|
1304
|
+
"properties": {
|
|
1305
|
+
"situation": {
|
|
1306
|
+
"type": "string"
|
|
1307
|
+
},
|
|
1308
|
+
"expected_behavior": {
|
|
1309
|
+
"type": "string"
|
|
1310
|
+
},
|
|
1311
|
+
"actions": {
|
|
1312
|
+
"type": "array",
|
|
1313
|
+
"items": {
|
|
1314
|
+
"type": "string"
|
|
1315
|
+
}
|
|
1316
|
+
}
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
},
|
|
1320
|
+
"behavioral_anchors": {
|
|
1321
|
+
"type": "object",
|
|
1322
|
+
"additionalProperties": false,
|
|
1323
|
+
"description": "Concrete do/don't anchors with examples. Moved from the 0.10 persona_prompting block.",
|
|
1324
|
+
"properties": {
|
|
1325
|
+
"do": {
|
|
1326
|
+
"type": "array",
|
|
1327
|
+
"items": {
|
|
1328
|
+
"type": "string"
|
|
1329
|
+
}
|
|
1330
|
+
},
|
|
1331
|
+
"dont": {
|
|
1332
|
+
"type": "array",
|
|
1333
|
+
"items": {
|
|
1334
|
+
"type": "string"
|
|
1335
|
+
}
|
|
1336
|
+
},
|
|
1337
|
+
"examples": {
|
|
1338
|
+
"type": "array",
|
|
1339
|
+
"items": {
|
|
1340
|
+
"type": "string"
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1344
|
+
},
|
|
1345
|
+
"consistency": {
|
|
1346
|
+
"type": "object",
|
|
1347
|
+
"additionalProperties": false,
|
|
1348
|
+
"description": "Persona dimensions by stability (stable / evolving / situational). Moved from the 0.10 persona_prompting block.",
|
|
1349
|
+
"properties": {
|
|
1350
|
+
"stable": {
|
|
1351
|
+
"type": "array",
|
|
1352
|
+
"items": {
|
|
1353
|
+
"type": "string"
|
|
1354
|
+
}
|
|
1355
|
+
},
|
|
1356
|
+
"evolving": {
|
|
1357
|
+
"type": "array",
|
|
1358
|
+
"items": {
|
|
1359
|
+
"type": "string"
|
|
1360
|
+
}
|
|
1361
|
+
},
|
|
1362
|
+
"situational": {
|
|
1363
|
+
"type": "array",
|
|
1364
|
+
"items": {
|
|
1365
|
+
"type": "string"
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
},
|
|
1372
|
+
"improvement_policy": {
|
|
1373
|
+
"type": "object",
|
|
1374
|
+
"additionalProperties": false,
|
|
1375
|
+
"description": "The self-improvement posture read by the runtime (readMode). PRECEDENCE (normative since v0.10, restated in v1.0): this inline value is AUTHORITATIVE — the persona carries its posture with it; policy.yaml#/improvement_policy may only RESTRICT it (effective = min(inline, policy) over locked < suggesting < autonomous). The validator warns on mismatch; prose may not assert a mode (lint). Optional; absent => 'locked'.",
|
|
1376
|
+
"properties": {
|
|
1377
|
+
"mode": {
|
|
1378
|
+
"type": "string",
|
|
1379
|
+
"enum": [
|
|
1380
|
+
"locked",
|
|
1381
|
+
"suggesting",
|
|
1382
|
+
"autonomous"
|
|
1383
|
+
],
|
|
1384
|
+
"description": "locked: spec never self-edits (humans only). suggesting: persona PROPOSES edits, queued for approval. autonomous: proposals auto-apply, still gated by consensus + protected paths."
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
},
|
|
1388
|
+
"governance": {
|
|
1389
|
+
"type": "object",
|
|
1390
|
+
"required": [
|
|
1391
|
+
"autonomy_envelope",
|
|
1392
|
+
"approval_policy",
|
|
1393
|
+
"per_layer_edit_policy",
|
|
1394
|
+
"drift_thresholds"
|
|
1395
|
+
],
|
|
1396
|
+
"additionalProperties": false,
|
|
1397
|
+
"description": "v0.6: UNIFIED governance block. Replaces scattered edit_policy fields and personality.drift_threshold.",
|
|
1398
|
+
"properties": {
|
|
1399
|
+
"autonomy_envelope": {
|
|
1400
|
+
"type": "string",
|
|
1401
|
+
"enum": [
|
|
1402
|
+
"role_fidelity",
|
|
1403
|
+
"conservative",
|
|
1404
|
+
"extended"
|
|
1405
|
+
]
|
|
1406
|
+
},
|
|
1407
|
+
"approval_policy": {
|
|
1408
|
+
"type": "string",
|
|
1409
|
+
"enum": [
|
|
1410
|
+
"human_for_core_changes",
|
|
1411
|
+
"auto_for_low_risk"
|
|
1412
|
+
]
|
|
1413
|
+
},
|
|
1414
|
+
"per_layer_edit_policy": {
|
|
1415
|
+
"type": "object",
|
|
1416
|
+
"required": [
|
|
1417
|
+
"identity",
|
|
1418
|
+
"character",
|
|
1419
|
+
"personality",
|
|
1420
|
+
"values_and_drives",
|
|
1421
|
+
"affect",
|
|
1422
|
+
"cognition",
|
|
1423
|
+
"memory",
|
|
1424
|
+
"metacognition",
|
|
1425
|
+
"self_regulation",
|
|
1426
|
+
"persona"
|
|
1427
|
+
],
|
|
1428
|
+
"additionalProperties": false,
|
|
1429
|
+
"description": "Per-layer edit governance. Single source of truth. Allowed values: human_approval_required | review_required | auto_approved | governance_controlled. v1.0: dot-path sub-layer keys are also accepted (e.g. 'persona.voice': review_required) and take precedence over their layer key — the editGate composes by longest matching prefix. The protected minimum (the universals, hard_limits, governance, permissions) can never be opened regardless of these values.",
|
|
1430
|
+
"properties": {
|
|
1431
|
+
"identity": {
|
|
1432
|
+
"$ref": "#/$defs/editPolicy"
|
|
1433
|
+
},
|
|
1434
|
+
"character": {
|
|
1435
|
+
"$ref": "#/$defs/editPolicy"
|
|
1436
|
+
},
|
|
1437
|
+
"personality": {
|
|
1438
|
+
"$ref": "#/$defs/editPolicy"
|
|
1439
|
+
},
|
|
1440
|
+
"values_and_drives": {
|
|
1441
|
+
"$ref": "#/$defs/editPolicy"
|
|
1442
|
+
},
|
|
1443
|
+
"affect": {
|
|
1444
|
+
"$ref": "#/$defs/editPolicy"
|
|
1445
|
+
},
|
|
1446
|
+
"cognition": {
|
|
1447
|
+
"$ref": "#/$defs/editPolicy"
|
|
1448
|
+
},
|
|
1449
|
+
"memory": {
|
|
1450
|
+
"$ref": "#/$defs/editPolicy"
|
|
1451
|
+
},
|
|
1452
|
+
"metacognition": {
|
|
1453
|
+
"$ref": "#/$defs/editPolicy"
|
|
1454
|
+
},
|
|
1455
|
+
"self_regulation": {
|
|
1456
|
+
"type": "string",
|
|
1457
|
+
"const": "governance_controlled",
|
|
1458
|
+
"description": "NEAR-UNIVERSAL: must remain governance_controlled (U9)."
|
|
1459
|
+
},
|
|
1460
|
+
"persona": {
|
|
1461
|
+
"$ref": "#/$defs/editPolicy"
|
|
1462
|
+
}
|
|
1463
|
+
},
|
|
1464
|
+
"patternProperties": {
|
|
1465
|
+
"^[a-z_]+(\\.[a-z0-9_]+)+$": {
|
|
1466
|
+
"$ref": "#/$defs/editPolicy"
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
},
|
|
1470
|
+
"drift_thresholds": {
|
|
1471
|
+
"type": "object",
|
|
1472
|
+
"required": [
|
|
1473
|
+
"identity",
|
|
1474
|
+
"character",
|
|
1475
|
+
"personality",
|
|
1476
|
+
"values_and_drives",
|
|
1477
|
+
"affect",
|
|
1478
|
+
"cognition",
|
|
1479
|
+
"memory",
|
|
1480
|
+
"metacognition",
|
|
1481
|
+
"self_regulation",
|
|
1482
|
+
"persona"
|
|
1483
|
+
],
|
|
1484
|
+
"additionalProperties": false,
|
|
1485
|
+
"description": "Per-layer drift sensitivity. Replaces personality.drift_threshold. v1.0: dot-path sub-layer keys also accepted (longest-prefix wins).",
|
|
1486
|
+
"properties": {
|
|
1487
|
+
"identity": {
|
|
1488
|
+
"type": "number",
|
|
1489
|
+
"minimum": 0,
|
|
1490
|
+
"maximum": 1
|
|
1491
|
+
},
|
|
1492
|
+
"character": {
|
|
1493
|
+
"type": "number",
|
|
1494
|
+
"minimum": 0,
|
|
1495
|
+
"maximum": 1
|
|
1496
|
+
},
|
|
1497
|
+
"personality": {
|
|
1498
|
+
"type": "number",
|
|
1499
|
+
"minimum": 0,
|
|
1500
|
+
"maximum": 1
|
|
1501
|
+
},
|
|
1502
|
+
"values_and_drives": {
|
|
1503
|
+
"type": "number",
|
|
1504
|
+
"minimum": 0,
|
|
1505
|
+
"maximum": 1
|
|
1506
|
+
},
|
|
1507
|
+
"affect": {
|
|
1508
|
+
"type": "number",
|
|
1509
|
+
"minimum": 0,
|
|
1510
|
+
"maximum": 1
|
|
1511
|
+
},
|
|
1512
|
+
"cognition": {
|
|
1513
|
+
"type": "number",
|
|
1514
|
+
"minimum": 0,
|
|
1515
|
+
"maximum": 1
|
|
1516
|
+
},
|
|
1517
|
+
"memory": {
|
|
1518
|
+
"type": "number",
|
|
1519
|
+
"minimum": 0,
|
|
1520
|
+
"maximum": 1
|
|
1521
|
+
},
|
|
1522
|
+
"metacognition": {
|
|
1523
|
+
"type": "number",
|
|
1524
|
+
"minimum": 0,
|
|
1525
|
+
"maximum": 1
|
|
1526
|
+
},
|
|
1527
|
+
"self_regulation": {
|
|
1528
|
+
"type": "number",
|
|
1529
|
+
"minimum": 0,
|
|
1530
|
+
"maximum": 1
|
|
1531
|
+
},
|
|
1532
|
+
"persona": {
|
|
1533
|
+
"type": "number",
|
|
1534
|
+
"minimum": 0,
|
|
1535
|
+
"maximum": 1
|
|
1536
|
+
}
|
|
1537
|
+
},
|
|
1538
|
+
"patternProperties": {
|
|
1539
|
+
"^[a-z_]+(\\.[a-z0-9_]+)+$": {
|
|
1540
|
+
"type": "number",
|
|
1541
|
+
"minimum": 0,
|
|
1542
|
+
"maximum": 1
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
},
|
|
1546
|
+
"improvement_policy_location": {
|
|
1547
|
+
"type": "string",
|
|
1548
|
+
"description": "Path to improvement_policy in policy.yaml. Pointer only; the actual policy lives there."
|
|
1549
|
+
},
|
|
1550
|
+
"max_step_delta": {
|
|
1551
|
+
"type": "number",
|
|
1552
|
+
"minimum": 0,
|
|
1553
|
+
"maximum": 1,
|
|
1554
|
+
"description": "v0.8: maximum absolute change applied to any envelope field in a single mutation (anti-runaway / anti-self-reinforcement). The runtime drift-bounds each proposed delta to this cap before clamping to the envelope. Optional; runtimes default to a conservative value when absent."
|
|
1555
|
+
}
|
|
1556
|
+
}
|
|
1557
|
+
},
|
|
1558
|
+
"security": {
|
|
1559
|
+
"type": "object",
|
|
1560
|
+
"required": [
|
|
1561
|
+
"prompt_injection_defense",
|
|
1562
|
+
"memory_poisoning_defense"
|
|
1563
|
+
],
|
|
1564
|
+
"additionalProperties": false,
|
|
1565
|
+
"properties": {
|
|
1566
|
+
"prompt_injection_defense": {
|
|
1567
|
+
"type": "boolean"
|
|
1568
|
+
},
|
|
1569
|
+
"memory_poisoning_defense": {
|
|
1570
|
+
"type": "boolean"
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1573
|
+
},
|
|
1574
|
+
"runtime": {
|
|
1575
|
+
"type": "object",
|
|
1576
|
+
"additionalProperties": false,
|
|
1577
|
+
"description": "v1.0 (MAY): runtime-contract tuning — HOW a conforming runtime implements the faculties the anatomy declares. Receives the implementation knobs that lived inside the memory layer through 0.10.",
|
|
1578
|
+
"properties": {
|
|
1579
|
+
"memory": {
|
|
1580
|
+
"type": "object",
|
|
1581
|
+
"additionalProperties": false,
|
|
1582
|
+
"properties": {
|
|
1583
|
+
"max_items": {
|
|
1584
|
+
"type": "integer",
|
|
1585
|
+
"minimum": 1,
|
|
1586
|
+
"description": "Retrieval context bound (was memory.retrieval_policy.max_items)."
|
|
1587
|
+
},
|
|
1588
|
+
"use_embeddings": {
|
|
1589
|
+
"type": "boolean"
|
|
1590
|
+
},
|
|
1591
|
+
"use_reranker": {
|
|
1592
|
+
"type": "boolean"
|
|
1593
|
+
},
|
|
1594
|
+
"retention_days_default": {
|
|
1595
|
+
"type": "integer",
|
|
1596
|
+
"minimum": 1,
|
|
1597
|
+
"description": "Default retention window (was memory.deletion_policy.retention_days_default)."
|
|
1598
|
+
}
|
|
1599
|
+
}
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
},
|
|
1603
|
+
"interop": {
|
|
1604
|
+
"type": "object",
|
|
1605
|
+
"additionalProperties": false,
|
|
1606
|
+
"description": "v1.0 (MAY): declared interop surfaces/targets so hosts can auto-discover how to drive this persona (RFC C6).",
|
|
1607
|
+
"properties": {
|
|
1608
|
+
"surfaces": {
|
|
1609
|
+
"type": "array",
|
|
1610
|
+
"items": {
|
|
1611
|
+
"type": "string",
|
|
1612
|
+
"enum": [
|
|
1613
|
+
"mcp",
|
|
1614
|
+
"http",
|
|
1615
|
+
"hooks",
|
|
1616
|
+
"subagent",
|
|
1617
|
+
"sdk"
|
|
1618
|
+
]
|
|
1619
|
+
},
|
|
1620
|
+
"uniqueItems": true
|
|
1621
|
+
},
|
|
1622
|
+
"targets": {
|
|
1623
|
+
"type": "array",
|
|
1624
|
+
"items": {
|
|
1625
|
+
"type": "string"
|
|
1626
|
+
},
|
|
1627
|
+
"description": "Placement targets this persona is compiled for (e.g. claude-code, codex, openclaw, hermes)."
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
},
|
|
1631
|
+
"lineage": {
|
|
1632
|
+
"type": "object",
|
|
1633
|
+
"additionalProperties": false,
|
|
1634
|
+
"description": "v1.0 (MAY): verifiable version lineage for THIS persona version (RFC C1). Self-edit ledgers mint PersonaVersions; this block records the current version's provenance so registries and audits can walk the history.",
|
|
1635
|
+
"properties": {
|
|
1636
|
+
"parent_version": {
|
|
1637
|
+
"type": "string",
|
|
1638
|
+
"description": "metadata.version of the version this one derives from."
|
|
1639
|
+
},
|
|
1640
|
+
"change_summary": {
|
|
1641
|
+
"type": "string"
|
|
1642
|
+
},
|
|
1643
|
+
"approver": {
|
|
1644
|
+
"type": "string",
|
|
1645
|
+
"description": "Who approved the change (human id or governance actor)."
|
|
1646
|
+
},
|
|
1647
|
+
"approved_at": {
|
|
1648
|
+
"type": "string",
|
|
1649
|
+
"format": "date-time"
|
|
1650
|
+
}
|
|
1651
|
+
}
|
|
1652
|
+
},
|
|
1653
|
+
"integrity": {
|
|
1654
|
+
"type": "object",
|
|
1655
|
+
"additionalProperties": false,
|
|
1656
|
+
"description": "v1.0 (MAY): cryptographic integrity for registry/compliance use (RFC C2). Non-repudiation over the identity document.",
|
|
1657
|
+
"properties": {
|
|
1658
|
+
"algorithm": {
|
|
1659
|
+
"type": "string",
|
|
1660
|
+
"enum": [
|
|
1661
|
+
"ed25519"
|
|
1662
|
+
]
|
|
1663
|
+
},
|
|
1664
|
+
"public_key": {
|
|
1665
|
+
"type": "string"
|
|
1666
|
+
},
|
|
1667
|
+
"signature": {
|
|
1668
|
+
"type": "string",
|
|
1669
|
+
"description": "Signature over the canonical frontmatter minus this block."
|
|
1670
|
+
},
|
|
1671
|
+
"key_ref": {
|
|
1672
|
+
"type": "string",
|
|
1673
|
+
"description": "External key reference (registry key id / DID)."
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
},
|
|
1677
|
+
"runtime_artifacts": {
|
|
1678
|
+
"type": "object",
|
|
1679
|
+
"additionalProperties": false,
|
|
1680
|
+
"description": "Pointers to sibling runtime files.",
|
|
1681
|
+
"properties": {
|
|
1682
|
+
"state_file": {
|
|
1683
|
+
"type": "string"
|
|
1684
|
+
},
|
|
1685
|
+
"policy_file": {
|
|
1686
|
+
"type": "string"
|
|
1687
|
+
},
|
|
1688
|
+
"memory_semantic_file": {
|
|
1689
|
+
"type": "string"
|
|
1690
|
+
},
|
|
1691
|
+
"memory_episodic_dir": {
|
|
1692
|
+
"type": "string"
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1695
|
+
},
|
|
1696
|
+
"permissions": {
|
|
1697
|
+
"type": "object",
|
|
1698
|
+
"additionalProperties": false,
|
|
1699
|
+
"description": "v0.8: the persona's own runtime permission posture (carried to any host). Two-axis sandbox model. Optional; runtimes default to a conservative posture when absent.",
|
|
1700
|
+
"properties": {
|
|
1701
|
+
"sandbox": {
|
|
1702
|
+
"type": "string",
|
|
1703
|
+
"enum": [
|
|
1704
|
+
"read-only",
|
|
1705
|
+
"workspace-write",
|
|
1706
|
+
"danger-full-access"
|
|
1707
|
+
],
|
|
1708
|
+
"description": "What the persona may read/write/network when executing commands."
|
|
1709
|
+
},
|
|
1710
|
+
"approval": {
|
|
1711
|
+
"type": "string",
|
|
1712
|
+
"enum": [
|
|
1713
|
+
"untrusted",
|
|
1714
|
+
"on-failure",
|
|
1715
|
+
"on-request",
|
|
1716
|
+
"never"
|
|
1717
|
+
],
|
|
1718
|
+
"description": "When the persona must ask before a risky action."
|
|
1719
|
+
},
|
|
1720
|
+
"allow": {
|
|
1721
|
+
"type": "array",
|
|
1722
|
+
"items": {
|
|
1723
|
+
"type": "string"
|
|
1724
|
+
},
|
|
1725
|
+
"description": "Regexes that force-allow a matching command."
|
|
1726
|
+
},
|
|
1727
|
+
"deny": {
|
|
1728
|
+
"type": "array",
|
|
1729
|
+
"items": {
|
|
1730
|
+
"type": "string"
|
|
1731
|
+
},
|
|
1732
|
+
"description": "Regexes that force-deny a matching command (highest precedence)."
|
|
1733
|
+
}
|
|
1734
|
+
}
|
|
1735
|
+
},
|
|
1736
|
+
"verification": {
|
|
1737
|
+
"type": "object",
|
|
1738
|
+
"additionalProperties": false,
|
|
1739
|
+
"description": "v0.9: objective verification gates for the agent loop (the maker≠checker split). The model that did the work is NOT the one that grades it; an independent, deterministic-where-possible verifier decides pass/fail. Optional; runtimes skip verification when absent. [RUNTIME] [JUDGE]",
|
|
1740
|
+
"properties": {
|
|
1741
|
+
"mode": {
|
|
1742
|
+
"type": "string",
|
|
1743
|
+
"enum": [
|
|
1744
|
+
"off",
|
|
1745
|
+
"advisory",
|
|
1746
|
+
"blocking"
|
|
1747
|
+
],
|
|
1748
|
+
"description": "off: no verification. advisory: run + report but never block. blocking: a failing gate prevents 'finish' and triggers on_fail."
|
|
1749
|
+
},
|
|
1750
|
+
"quorum": {
|
|
1751
|
+
"description": "How many gates must pass: 'all', 'majority', or an integer.",
|
|
1752
|
+
"oneOf": [
|
|
1753
|
+
{
|
|
1754
|
+
"type": "string",
|
|
1755
|
+
"enum": [
|
|
1756
|
+
"all",
|
|
1757
|
+
"majority"
|
|
1758
|
+
]
|
|
1759
|
+
},
|
|
1760
|
+
{
|
|
1761
|
+
"type": "integer",
|
|
1762
|
+
"minimum": 1
|
|
1763
|
+
}
|
|
1764
|
+
]
|
|
1765
|
+
},
|
|
1766
|
+
"on_fail": {
|
|
1767
|
+
"type": "string",
|
|
1768
|
+
"enum": [
|
|
1769
|
+
"retry",
|
|
1770
|
+
"skip",
|
|
1771
|
+
"stop"
|
|
1772
|
+
],
|
|
1773
|
+
"description": "Behavior when the quorum is not met under mode=blocking."
|
|
1774
|
+
},
|
|
1775
|
+
"max_retries": {
|
|
1776
|
+
"type": "integer",
|
|
1777
|
+
"minimum": 0
|
|
1778
|
+
},
|
|
1779
|
+
"gates": {
|
|
1780
|
+
"type": "array",
|
|
1781
|
+
"description": "The objective checks. Each gate has a type and type-specific fields.",
|
|
1782
|
+
"items": {
|
|
1783
|
+
"type": "object",
|
|
1784
|
+
"additionalProperties": false,
|
|
1785
|
+
"required": [
|
|
1786
|
+
"type"
|
|
1787
|
+
],
|
|
1788
|
+
"properties": {
|
|
1789
|
+
"type": {
|
|
1790
|
+
"type": "string",
|
|
1791
|
+
"enum": [
|
|
1792
|
+
"command",
|
|
1793
|
+
"predicate",
|
|
1794
|
+
"llm_judge",
|
|
1795
|
+
"rubric"
|
|
1796
|
+
]
|
|
1797
|
+
},
|
|
1798
|
+
"name": {
|
|
1799
|
+
"type": "string"
|
|
1800
|
+
},
|
|
1801
|
+
"run": {
|
|
1802
|
+
"type": "string",
|
|
1803
|
+
"description": "command: the shell command to run (pass = exit 0)."
|
|
1804
|
+
},
|
|
1805
|
+
"timeout_ms": {
|
|
1806
|
+
"type": "integer",
|
|
1807
|
+
"minimum": 1
|
|
1808
|
+
},
|
|
1809
|
+
"kind": {
|
|
1810
|
+
"type": "string",
|
|
1811
|
+
"enum": [
|
|
1812
|
+
"regex",
|
|
1813
|
+
"jsonpath",
|
|
1814
|
+
"contains"
|
|
1815
|
+
],
|
|
1816
|
+
"description": "predicate: how to test the agent output."
|
|
1817
|
+
},
|
|
1818
|
+
"expr": {
|
|
1819
|
+
"type": "string",
|
|
1820
|
+
"description": "predicate: the pattern/path/substring to test."
|
|
1821
|
+
},
|
|
1822
|
+
"criteria": {
|
|
1823
|
+
"type": "string",
|
|
1824
|
+
"description": "llm_judge/rubric: the done/quality criteria in natural language."
|
|
1825
|
+
},
|
|
1826
|
+
"model": {
|
|
1827
|
+
"type": "string",
|
|
1828
|
+
"description": "llm_judge: optional model override (defaults to the configured checker model)."
|
|
1829
|
+
},
|
|
1830
|
+
"dimensions": {
|
|
1831
|
+
"type": "array",
|
|
1832
|
+
"description": "rubric: weighted scoring dimensions.",
|
|
1833
|
+
"items": {
|
|
1834
|
+
"type": "object",
|
|
1835
|
+
"additionalProperties": false,
|
|
1836
|
+
"required": [
|
|
1837
|
+
"name",
|
|
1838
|
+
"weight"
|
|
1839
|
+
],
|
|
1840
|
+
"properties": {
|
|
1841
|
+
"name": {
|
|
1842
|
+
"type": "string"
|
|
1843
|
+
},
|
|
1844
|
+
"weight": {
|
|
1845
|
+
"type": "number",
|
|
1846
|
+
"minimum": 0,
|
|
1847
|
+
"maximum": 1
|
|
1848
|
+
},
|
|
1849
|
+
"criteria": {
|
|
1850
|
+
"type": "string"
|
|
1851
|
+
}
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
},
|
|
1855
|
+
"threshold": {
|
|
1856
|
+
"type": "number",
|
|
1857
|
+
"minimum": 0,
|
|
1858
|
+
"maximum": 1,
|
|
1859
|
+
"description": "rubric: minimum aggregate score to pass."
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
},
|
|
1866
|
+
"agent_budget": {
|
|
1867
|
+
"type": "object",
|
|
1868
|
+
"additionalProperties": false,
|
|
1869
|
+
"description": "v0.9: first-class stop-conditions and resource caps for the agent loop (anti runaway / Ralph-Wiggum / money-pit). Optional; runtimes apply a conservative default cap when absent. [RUNTIME]",
|
|
1870
|
+
"properties": {
|
|
1871
|
+
"max_steps": {
|
|
1872
|
+
"type": "integer",
|
|
1873
|
+
"minimum": 1
|
|
1874
|
+
},
|
|
1875
|
+
"max_tokens": {
|
|
1876
|
+
"type": "integer",
|
|
1877
|
+
"minimum": 1
|
|
1878
|
+
},
|
|
1879
|
+
"max_cost_usd": {
|
|
1880
|
+
"type": "number",
|
|
1881
|
+
"minimum": 0
|
|
1882
|
+
},
|
|
1883
|
+
"max_wall_seconds": {
|
|
1884
|
+
"type": "integer",
|
|
1885
|
+
"minimum": 1
|
|
1886
|
+
},
|
|
1887
|
+
"stop_conditions": {
|
|
1888
|
+
"type": "array",
|
|
1889
|
+
"items": {
|
|
1890
|
+
"type": "string",
|
|
1891
|
+
"enum": [
|
|
1892
|
+
"goal_met",
|
|
1893
|
+
"tool_denied",
|
|
1894
|
+
"execution_error",
|
|
1895
|
+
"low_confidence",
|
|
1896
|
+
"no_progress"
|
|
1897
|
+
]
|
|
1898
|
+
},
|
|
1899
|
+
"description": "Conditions that halt the loop before the hard caps."
|
|
1900
|
+
},
|
|
1901
|
+
"on_exhaust": {
|
|
1902
|
+
"type": "string",
|
|
1903
|
+
"enum": [
|
|
1904
|
+
"stop",
|
|
1905
|
+
"summarize_and_stop"
|
|
1906
|
+
],
|
|
1907
|
+
"description": "What to do when a cap/condition is hit."
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
},
|
|
1911
|
+
"observability": {
|
|
1912
|
+
"type": "object",
|
|
1913
|
+
"additionalProperties": false,
|
|
1914
|
+
"description": "v0.9: tracing posture for the governed loops. The engine's audit (mutation_log + hash-chained memory + event bus) is exported as a causal trace. Optional. [RUNTIME] [JUDGE]",
|
|
1915
|
+
"properties": {
|
|
1916
|
+
"trace": {
|
|
1917
|
+
"type": "string",
|
|
1918
|
+
"enum": [
|
|
1919
|
+
"off",
|
|
1920
|
+
"jsonl",
|
|
1921
|
+
"otlp",
|
|
1922
|
+
"both"
|
|
1923
|
+
],
|
|
1924
|
+
"description": "off: none. jsonl: native line-delimited spans. otlp: OpenTelemetry-compatible JSON. both: emit both."
|
|
1925
|
+
},
|
|
1926
|
+
"trace_dir": {
|
|
1927
|
+
"type": "string",
|
|
1928
|
+
"description": "Where trace files are written (default ./traces)."
|
|
1929
|
+
},
|
|
1930
|
+
"redact": {
|
|
1931
|
+
"type": "array",
|
|
1932
|
+
"items": {
|
|
1933
|
+
"type": "string"
|
|
1934
|
+
},
|
|
1935
|
+
"description": "Regexes whose matches are redacted from traces (secrets/PII)."
|
|
1936
|
+
},
|
|
1937
|
+
"sample_rate": {
|
|
1938
|
+
"type": "number",
|
|
1939
|
+
"minimum": 0,
|
|
1940
|
+
"maximum": 1,
|
|
1941
|
+
"description": "Fraction of spans to record (1.0 = all)."
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
},
|
|
1946
|
+
"$defs": {
|
|
1947
|
+
"envelopeUnsigned": {
|
|
1948
|
+
"type": "object",
|
|
1949
|
+
"required": [
|
|
1950
|
+
"mean",
|
|
1951
|
+
"range"
|
|
1952
|
+
],
|
|
1953
|
+
"additionalProperties": false,
|
|
1954
|
+
"properties": {
|
|
1955
|
+
"mean": {
|
|
1956
|
+
"type": "number",
|
|
1957
|
+
"minimum": 0,
|
|
1958
|
+
"maximum": 1
|
|
1959
|
+
},
|
|
1960
|
+
"range": {
|
|
1961
|
+
"type": "array",
|
|
1962
|
+
"items": {
|
|
1963
|
+
"type": "number",
|
|
1964
|
+
"minimum": 0,
|
|
1965
|
+
"maximum": 1
|
|
1966
|
+
},
|
|
1967
|
+
"minItems": 2,
|
|
1968
|
+
"maxItems": 2
|
|
1969
|
+
},
|
|
1970
|
+
"expression": {
|
|
1971
|
+
"$ref": "#/$defs/expression"
|
|
1972
|
+
},
|
|
1973
|
+
"bands": {
|
|
1974
|
+
"$ref": "#/$defs/bandBoundaries"
|
|
1975
|
+
}
|
|
1976
|
+
}
|
|
1977
|
+
},
|
|
1978
|
+
"envelopeSigned": {
|
|
1979
|
+
"type": "object",
|
|
1980
|
+
"required": [
|
|
1981
|
+
"mean",
|
|
1982
|
+
"range"
|
|
1983
|
+
],
|
|
1984
|
+
"additionalProperties": false,
|
|
1985
|
+
"properties": {
|
|
1986
|
+
"mean": {
|
|
1987
|
+
"type": "number",
|
|
1988
|
+
"minimum": -1,
|
|
1989
|
+
"maximum": 1
|
|
1990
|
+
},
|
|
1991
|
+
"range": {
|
|
1992
|
+
"type": "array",
|
|
1993
|
+
"items": {
|
|
1994
|
+
"type": "number",
|
|
1995
|
+
"minimum": -1,
|
|
1996
|
+
"maximum": 1
|
|
1997
|
+
},
|
|
1998
|
+
"minItems": 2,
|
|
1999
|
+
"maxItems": 2
|
|
2000
|
+
},
|
|
2001
|
+
"expression": {
|
|
2002
|
+
"$ref": "#/$defs/expression"
|
|
2003
|
+
},
|
|
2004
|
+
"bands": {
|
|
2005
|
+
"$ref": "#/$defs/bandBoundaries"
|
|
2006
|
+
},
|
|
2007
|
+
"description": {
|
|
2008
|
+
"type": "string"
|
|
2009
|
+
}
|
|
2010
|
+
}
|
|
2011
|
+
},
|
|
2012
|
+
"editPolicy": {
|
|
2013
|
+
"type": "string",
|
|
2014
|
+
"enum": [
|
|
2015
|
+
"human_approval_required",
|
|
2016
|
+
"review_required",
|
|
2017
|
+
"auto_approved",
|
|
2018
|
+
"governance_controlled"
|
|
2019
|
+
]
|
|
2020
|
+
},
|
|
2021
|
+
"expression": {
|
|
2022
|
+
"description": "v1.0 behavior map. Normative form: a per-band map — the compiler deterministically emits the prose of the band the CURRENT value falls in (value→band→prose); a band crossing IS drift and triggers recompile. A plain string (applies at the declared mean's band) is accepted but deprecated.",
|
|
2023
|
+
"oneOf": [
|
|
2024
|
+
{
|
|
2025
|
+
"type": "string"
|
|
2026
|
+
},
|
|
2027
|
+
{
|
|
2028
|
+
"type": "object",
|
|
2029
|
+
"additionalProperties": false,
|
|
2030
|
+
"minProperties": 1,
|
|
2031
|
+
"properties": {
|
|
2032
|
+
"low": {
|
|
2033
|
+
"type": "string"
|
|
2034
|
+
},
|
|
2035
|
+
"moderate": {
|
|
2036
|
+
"type": "string"
|
|
2037
|
+
},
|
|
2038
|
+
"high": {
|
|
2039
|
+
"type": "string"
|
|
2040
|
+
}
|
|
2041
|
+
}
|
|
2042
|
+
}
|
|
2043
|
+
]
|
|
2044
|
+
},
|
|
2045
|
+
"bandBoundaries": {
|
|
2046
|
+
"type": "object",
|
|
2047
|
+
"additionalProperties": false,
|
|
2048
|
+
"description": "Optional per-dimension band boundary override. Defaults: low = [min, 0.33], moderate = (0.33, 0.66], high = (0.66, max] (for signed dimensions the defaults scale across [-1,1]: low ≤ -0.33 < moderate ≤ 0.33 < high). low_max must be < moderate_max.",
|
|
2049
|
+
"properties": {
|
|
2050
|
+
"low_max": {
|
|
2051
|
+
"type": "number",
|
|
2052
|
+
"minimum": -1,
|
|
2053
|
+
"maximum": 1
|
|
2054
|
+
},
|
|
2055
|
+
"moderate_max": {
|
|
2056
|
+
"type": "number",
|
|
2057
|
+
"minimum": -1,
|
|
2058
|
+
"maximum": 1
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
}
|
|
2062
|
+
},
|
|
2063
|
+
"allOf": [
|
|
2064
|
+
{
|
|
2065
|
+
"if": {
|
|
2066
|
+
"properties": {
|
|
2067
|
+
"kind": {
|
|
2068
|
+
"const": "AgentPersona"
|
|
2069
|
+
}
|
|
2070
|
+
}
|
|
2071
|
+
},
|
|
2072
|
+
"then": {
|
|
2073
|
+
"required": [
|
|
2074
|
+
"apiVersion",
|
|
2075
|
+
"kind",
|
|
2076
|
+
"spec_version",
|
|
2077
|
+
"metadata",
|
|
2078
|
+
"identity",
|
|
2079
|
+
"character",
|
|
2080
|
+
"personality",
|
|
2081
|
+
"values_and_drives",
|
|
2082
|
+
"affect",
|
|
2083
|
+
"cognition",
|
|
2084
|
+
"memory",
|
|
2085
|
+
"metacognition",
|
|
2086
|
+
"self_regulation",
|
|
2087
|
+
"persona",
|
|
2088
|
+
"governance",
|
|
2089
|
+
"security"
|
|
2090
|
+
],
|
|
2091
|
+
"description": "AgentPersona (D9): the full 10-layer anatomy is MUST. UserPersona requires only the core (apiVersion, kind, spec_version, metadata, identity); any layer it does declare is validated in shape, and the universal invariants that reference absent blocks do not apply (explicit subset, not a silent bypass)."
|
|
2092
|
+
}
|
|
2093
|
+
}
|
|
2094
|
+
]
|
|
2095
|
+
}
|