polydeukes 0.5.0 → 0.6.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.
@@ -104,32 +104,8 @@
104
104
  "description": "The entry's own level. 'advise' records a break without stopping it; 'block' pins the entry at block. Composes with the surface's level, the lenient side winning; absent means advise; 'block' is the promotion rung.",
105
105
  "enum": ["block", "advise"]
106
106
  },
107
- "globOrGlobs": {
108
- "anyOf": [
109
- { "type": "string", "minLength": 1 },
110
- {
111
- "type": "array",
112
- "minItems": 1,
113
- "items": { "type": "string", "minLength": 1 }
114
- }
115
- ]
116
- },
117
- "requirePrecedent": {
118
- "description": "Context family — the session evidence one edit requires beforehand. Exactly one evidence key. The core owns and fully validates 'command'; every other key is adapter vocabulary whose value passes through verbatim (unconstrained here, judged by that adapter).",
119
- "type": "object",
120
- "minProperties": 1,
121
- "maxProperties": 1,
122
- "properties": {
123
- "command": {
124
- "description": "Core evidence vocabulary — regex over the shell command strings observed in the session.",
125
- "type": "string",
126
- "minLength": 1,
127
- "format": "regex"
128
- }
129
- }
130
- },
131
107
  "discipline": {
132
- "description": "One discipline entry — exactly one predicate family (forbid | immutable | forbidCommand | requirePrecedent), or a draft (id + why + draft: true, no predicate); in/except scope the forbid and requirePrecedent families, and when scopes requirePrecedent only.",
108
+ "description": "One discipline entry — a judged entry (id + declare, optionally why and enforce), or a draft (id + why + draft: true, no declaration).",
133
109
  "oneOf": [
134
110
  {
135
111
  "type": "object",
@@ -151,79 +127,50 @@
151
127
  {
152
128
  "type": "object",
153
129
  "additionalProperties": false,
154
- "required": ["id", "forbid"],
155
- "properties": {
156
- "id": { "$ref": "#/$defs/disciplineId" },
157
- "why": { "$ref": "#/$defs/disciplineWhy" },
158
- "enforce": { "$ref": "#/$defs/enforceLevel" },
159
- "in": { "$ref": "#/$defs/globOrGlobs" },
160
- "except": { "$ref": "#/$defs/globOrGlobs" },
161
- "forbid": {
162
- "description": "Delta family — string shorthand is equivalent to { added }.",
163
- "anyOf": [
164
- { "type": "string", "minLength": 1, "format": "regex" },
165
- {
166
- "type": "object",
167
- "additionalProperties": false,
168
- "required": ["added"],
169
- "properties": {
170
- "added": { "type": "string", "minLength": 1, "format": "regex" }
171
- }
172
- }
173
- ]
174
- }
175
- }
176
- },
177
- {
178
- "type": "object",
179
- "additionalProperties": false,
180
- "required": ["id", "immutable"],
181
- "properties": {
182
- "id": { "$ref": "#/$defs/disciplineId" },
183
- "why": { "$ref": "#/$defs/disciplineWhy" },
184
- "enforce": { "$ref": "#/$defs/enforceLevel" },
185
- "immutable": {
186
- "description": "Path family — its own glob is the scope.",
187
- "$ref": "#/$defs/globOrGlobs"
188
- }
189
- }
190
- },
191
- {
192
- "type": "object",
193
- "additionalProperties": false,
194
- "required": ["id", "forbidCommand"],
195
- "properties": {
196
- "id": { "$ref": "#/$defs/disciplineId" },
197
- "why": { "$ref": "#/$defs/disciplineWhy" },
198
- "enforce": { "$ref": "#/$defs/enforceLevel" },
199
- "forbidCommand": {
200
- "description": "Command family — regex over shell command strings.",
201
- "type": "string",
202
- "minLength": 1,
203
- "format": "regex"
204
- }
205
- }
206
- },
207
- {
208
- "type": "object",
209
- "additionalProperties": false,
210
- "required": ["id", "requirePrecedent"],
130
+ "required": ["id", "declare"],
211
131
  "properties": {
212
132
  "id": { "$ref": "#/$defs/disciplineId" },
213
133
  "why": { "$ref": "#/$defs/disciplineWhy" },
214
134
  "enforce": { "$ref": "#/$defs/enforceLevel" },
215
- "in": { "$ref": "#/$defs/globOrGlobs" },
216
- "except": { "$ref": "#/$defs/globOrGlobs" },
217
- "when": {
218
- "description": "Context-family trigger — added-direction delta regex. Absent means every in-scope change triggers.",
219
- "type": "string",
220
- "minLength": 1,
221
- "format": "regex"
222
- },
223
- "requirePrecedent": { "$ref": "#/$defs/requirePrecedent" }
135
+ "declare": { "$ref": "#/$defs/declarationBody" }
224
136
  }
225
137
  }
226
138
  ]
139
+ },
140
+ "declarationBody": {
141
+ "description": "Declaration family — one judgment written as data, in the grammar of the algebra declaration schema published beside this one, minus its 'discipline' key: the entry id is the declaration's name. The blocks' interiors are validated against that schema by the runtime validator.",
142
+ "type": "object",
143
+ "additionalProperties": false,
144
+ "required": ["mechanism", "extract", "relate"],
145
+ "properties": {
146
+ "mechanism": {
147
+ "enum": [
148
+ "pairing",
149
+ "companion",
150
+ "monotonic-order",
151
+ "fingerprint-sync",
152
+ "producer-owned",
153
+ "self-absolution-ban",
154
+ "actor-scope",
155
+ "precedent",
156
+ "phase-order",
157
+ "turn-locality",
158
+ "stated-ground",
159
+ "controlled-vocabulary",
160
+ "naming",
161
+ "added-only",
162
+ "one-way-marker",
163
+ "scoped-valve",
164
+ "forbidden-command"
165
+ ]
166
+ },
167
+ "scope": { "type": "object" },
168
+ "sources": { "type": "object" },
169
+ "supply": { "type": "object" },
170
+ "extract": { "type": "object", "minProperties": 1 },
171
+ "relate": { "type": "array", "minItems": 1 },
172
+ "witness": { "type": "object" }
173
+ }
227
174
  }
228
175
  }
229
176
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polydeukes",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "A development discipline framework for building alongside an AI coding partner — deterministic covenants, a verifiable work ledger, local memory, and adversarial verification. Alpha.",
5
5
  "keywords": [
6
6
  "harness",
@@ -37,8 +37,8 @@
37
37
  "import": "./dist/index.js"
38
38
  },
39
39
  "./claude-code": {
40
- "types": "./dist/claude-code-hook.d.ts",
41
- "import": "./dist/claude-code-hook.js"
40
+ "types": "./dist/claude-code.d.ts",
41
+ "import": "./dist/claude-code.js"
42
42
  },
43
43
  "./schema.json": "./dist/schema/polydeukes.schema.json"
44
44
  },
@@ -54,10 +54,10 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "yaml": "2.9.0",
57
- "@polydeukes/adapter-claude-code": "^0.5.0",
58
- "@polydeukes/adapter-git": "^0.5.0",
59
- "@polydeukes/covenant": "^0.5.0",
60
- "@polydeukes/core": "^0.5.0"
57
+ "@polydeukes/adapter-git": "^0.6.0",
58
+ "@polydeukes/covenant": "^0.6.0",
59
+ "@polydeukes/core": "^0.6.0",
60
+ "@polydeukes/adapter-claude-code": "^0.6.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/node": "^24.0.0",