polydeukes 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -91,14 +91,19 @@
91
91
  }
92
92
  },
93
93
  "disciplineId": {
94
- "description": "Unique handle — telemetry label and verdict reason prefix.",
94
+ "description": "Unique handle — telemetry label and verdict reason prefix. The three meta-covenant labels are reserved.",
95
95
  "type": "string",
96
- "minLength": 1
96
+ "minLength": 1,
97
+ "not": { "enum": ["self-mod", "shell-mod", "transcript-mod"] }
97
98
  },
98
99
  "disciplineWhy": {
99
- "description": "Prose rationale, documentation only never judged.",
100
+ "description": "Prose rationale — never judged, and carried into the break message.",
100
101
  "type": "string"
101
102
  },
103
+ "enforceLevel": {
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
+ "enum": ["block", "advise"]
106
+ },
102
107
  "globOrGlobs": {
103
108
  "anyOf": [
104
109
  { "type": "string", "minLength": 1 },
@@ -124,8 +129,25 @@
124
129
  }
125
130
  },
126
131
  "discipline": {
127
- "description": "One discipline entry — exactly one predicate family (forbid | immutable | forbidCommand | requirePrecedent); in/except scope the forbid and requirePrecedent families, and when scopes requirePrecedent only.",
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.",
128
133
  "oneOf": [
134
+ {
135
+ "type": "object",
136
+ "additionalProperties": false,
137
+ "required": ["id", "why", "draft"],
138
+ "properties": {
139
+ "id": { "$ref": "#/$defs/disciplineId" },
140
+ "why": {
141
+ "description": "A draft's only body is its prose, so why is required and non-empty here.",
142
+ "type": "string",
143
+ "minLength": 1
144
+ },
145
+ "draft": {
146
+ "description": "Marks an unpromoted entry — declared as prose, never judged, never recorded. Only the literal true exists; false would be dead data synonymous with absence.",
147
+ "const": true
148
+ }
149
+ }
150
+ },
129
151
  {
130
152
  "type": "object",
131
153
  "additionalProperties": false,
@@ -133,6 +155,7 @@
133
155
  "properties": {
134
156
  "id": { "$ref": "#/$defs/disciplineId" },
135
157
  "why": { "$ref": "#/$defs/disciplineWhy" },
158
+ "enforce": { "$ref": "#/$defs/enforceLevel" },
136
159
  "in": { "$ref": "#/$defs/globOrGlobs" },
137
160
  "except": { "$ref": "#/$defs/globOrGlobs" },
138
161
  "forbid": {
@@ -158,6 +181,7 @@
158
181
  "properties": {
159
182
  "id": { "$ref": "#/$defs/disciplineId" },
160
183
  "why": { "$ref": "#/$defs/disciplineWhy" },
184
+ "enforce": { "$ref": "#/$defs/enforceLevel" },
161
185
  "immutable": {
162
186
  "description": "Path family — its own glob is the scope.",
163
187
  "$ref": "#/$defs/globOrGlobs"
@@ -171,6 +195,7 @@
171
195
  "properties": {
172
196
  "id": { "$ref": "#/$defs/disciplineId" },
173
197
  "why": { "$ref": "#/$defs/disciplineWhy" },
198
+ "enforce": { "$ref": "#/$defs/enforceLevel" },
174
199
  "forbidCommand": {
175
200
  "description": "Command family — regex over shell command strings.",
176
201
  "type": "string",
@@ -186,6 +211,7 @@
186
211
  "properties": {
187
212
  "id": { "$ref": "#/$defs/disciplineId" },
188
213
  "why": { "$ref": "#/$defs/disciplineWhy" },
214
+ "enforce": { "$ref": "#/$defs/enforceLevel" },
189
215
  "in": { "$ref": "#/$defs/globOrGlobs" },
190
216
  "except": { "$ref": "#/$defs/globOrGlobs" },
191
217
  "when": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polydeukes",
3
- "version": "0.4.0",
3
+ "version": "0.5.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",
@@ -54,10 +54,10 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "yaml": "2.9.0",
57
- "@polydeukes/adapter-claude-code": "^0.4.0",
58
- "@polydeukes/adapter-git": "^0.4.0",
59
- "@polydeukes/core": "^0.4.0",
60
- "@polydeukes/covenant": "^0.4.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"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/node": "^24.0.0",