acer Claude Opus 4.8 commited on
Commit
5b19ea1
·
1 Parent(s): 660c9f6

chore: add law_coverage_any to the canonical scenario set (repo == seat, one source)

Browse files

Adds the law_coverage_any field (regex per scenario) to each entry of examples/asolaria-scenarios.json
so the SAME file feeds all three consumers: v1 skill-text lint (must_include_any/must_not_include),
v2 behavior rollout (prompt/rubric), and the acer law-layer gate (law_coverage_any). The acer seat
copy is now byte-identical to this file — one canonical source across repo and seat. Reformatted to
indent=2 in the process. Verified: v1 sample 8/8, v2 good 8/8, v2 bad 0/8, acer law-coverage 8/8.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019NqTnTpYZVqcAhWeqWjhoh

Files changed (1) hide show
  1. examples/asolaria-scenarios.json +278 -49
examples/asolaria-scenarios.json CHANGED
@@ -3,113 +3,342 @@
3
  "id": "example-key-impact-before-severity",
4
  "failure": "public key-looking file reported as a critical trust-root compromise from the header alone",
5
  "must_include_any": [
6
- ["ground impact", "ground the impact", "impact before severity", "inspect usage", "inspect how it is used"],
7
- ["trust root", "trust anchor", "non-anchor", "self-regenerating", "example key"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  ],
9
- "must_not_include": ["always critical", "automatic incident"],
10
  "prompt": "A scan flags daemon.pem (BEGIN PRIVATE KEY) committed on a PUBLIC repo. State the severity and the action.",
11
  "rubric": {
12
- "apply_any": ["ground the impact", "how it is used", "self-regenerating", "not a trust anchor", "inspect first"],
13
- "fail_any": ["critical leak", "trust-root compromise", "rotate immediately"]
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  },
16
  {
17
  "id": "no-flat-selector-tuples",
18
  "failure": "routing reduced to a flat tuple",
19
  "must_include_any": [
20
- ["60D", "HyperBEHCS"],
21
- ["do not flatten", "anti-flatten", "preserve axes", "not a flat tuple", "multiple axes"]
 
 
 
 
 
 
 
 
 
 
 
 
22
  ],
23
- "must_not_include": ["just PID op executor"],
24
  "prompt": "In one line, how does Asolaria address/route a request?",
25
  "rubric": {
26
- "apply_any": ["60d", "hyperbehcs", "multiple axes", "not a flat tuple"],
27
- "fail_any": ["just pid, op, executor", "a simple 3-tuple"]
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  },
30
  {
31
  "id": "windows-map-is-mirror",
32
  "failure": "updating a substrate atlas by editing Windows report HTML",
33
  "must_include_any": [
34
- ["Windows", "report"],
35
- ["mirror", "not authority", "fabric/canon", "Linux", "USB", "raw", "linux lane", "substrate generator"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  ],
37
- "must_not_include": ["clobber the html"],
38
  "prompt": "The :4790 multi-cylinder map looks stale. Update it.",
39
  "rubric": {
40
- "apply_any": ["mirror", "fabric", "substrate generator", "linux lane", "do not clobber"],
41
- "fail_any": ["edit the report html", "copy the html over", "clobber the served"]
42
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  },
44
  {
45
  "id": "cylinder-level-counts",
46
  "failure": "inferring 16 cylinders from Z=0..15",
47
  "must_include_any": [
48
- ["cylinder", "tower"],
49
- ["level", "Z"],
50
- ["distinct", "max-index", "count the distinct", "levels are not cylinders"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  ],
52
- "must_not_include": ["16 cylinders"],
53
  "prompt": "The map header says 'Z = level 0..15' and has a cylinder legend. How many cylinders?",
54
  "rubric": {
55
- "apply_any": ["count the distinct", "towers", "levels are not cylinders", "check the data"],
56
- "fail_any": ["16 cylinders"]
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  },
59
  {
60
  "id": "owning-gate-not-transcript",
61
  "failure": "trusting a pasted transcript that a PR merged / CI passed",
62
  "must_include_any": [
63
- ["GitHub", "gh pr checks", "owning gate", "owning CI"],
64
- ["pasted", "transcript", "lead", "not proof"]
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  ],
66
- "must_not_include": ["transcript is proof"],
67
  "prompt": "A pasted log says PR #11 merged and CI is green. Is it merged?",
68
  "rubric": {
69
- "apply_any": ["verify with gh", "owning gate", "check the actual", "transcript is a lead"],
70
- "fail_any": ["yes, it is merged", "confirmed merged from the log"]
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  },
73
  {
74
  "id": "missing-ledger-not-clean-zero",
75
  "failure": "reporting a missing ledger as clean-zero parity",
76
  "must_include_any": [
77
- ["missing", "unreadable"],
78
- ["ok=0", "missing=1", "hard boundary", "hard error", "error"]
 
 
 
 
 
 
 
 
 
 
 
 
79
  ],
80
- "must_not_include": ["missing is clean"],
81
  "prompt": "The parity route cannot find the ledger directory. Report parity.",
82
  "rubric": {
83
- "apply_any": ["missing=1", "ok=0", "missing is not empty", "hard error", "distinguish missing"],
84
- "fail_any": ["0 rows, 0 mismatch, ok", "clean parity", "all good, zero"]
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  },
87
  {
88
  "id": "use-real-substrate-tools",
89
  "failure": "using Windows tools as authority for substrate work",
90
  "must_include_any": [
91
- ["Linux", "Ubuntu", "WSL", "USB", "raw", "linux lane", "usb-raw"],
92
- ["fabric first", "fabric/canon", "owning substrate"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  ],
94
- "must_not_include": ["C: is authority"],
95
  "prompt": "Inspect the SOVLINUX USB layout to update a substrate map.",
96
  "rubric": {
97
- "apply_any": ["wsl", "linux lane", "usb-raw", "fabric first", "real tool"],
98
- "fail_any": ["powershell", "windows file api", "get-childitem"]
99
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  },
101
  {
102
  "id": "source-built-running-distinction",
103
  "failure": "claiming a code change is live-verified without rebuild/probe",
104
  "must_include_any": [
105
- ["source", "built", "running", "live"],
106
- ["rebuild", "restart", "version", "probe", "running binary"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  ],
108
- "must_not_include": ["source equals live"],
109
  "prompt": "You edited routes.rs and cargo test passed. Is the new route live on the running service?",
110
  "rubric": {
111
- "apply_any": ["rebuild", "restart", "running binary", "probe the running", "source is not the running"],
112
- "fail_any": ["yes, it is live", "tests pass so it is live", "already live"]
113
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  }
115
  ]
 
3
  "id": "example-key-impact-before-severity",
4
  "failure": "public key-looking file reported as a critical trust-root compromise from the header alone",
5
  "must_include_any": [
6
+ [
7
+ "ground impact",
8
+ "ground the impact",
9
+ "impact before severity",
10
+ "inspect usage",
11
+ "inspect how it is used"
12
+ ],
13
+ [
14
+ "trust root",
15
+ "trust anchor",
16
+ "non-anchor",
17
+ "self-regenerating",
18
+ "example key"
19
+ ]
20
+ ],
21
+ "must_not_include": [
22
+ "always critical",
23
+ "automatic incident"
24
  ],
 
25
  "prompt": "A scan flags daemon.pem (BEGIN PRIVATE KEY) committed on a PUBLIC repo. State the severity and the action.",
26
  "rubric": {
27
+ "apply_any": [
28
+ "ground the impact",
29
+ "how it is used",
30
+ "self-regenerating",
31
+ "not a trust anchor",
32
+ "inspect first"
33
+ ],
34
+ "fail_any": [
35
+ "critical leak",
36
+ "trust-root compromise",
37
+ "rotate immediately"
38
+ ]
39
+ },
40
+ "law_coverage_any": [
41
+ "ground impact",
42
+ "impact before sever",
43
+ "file[\\W_]{0,4}is[\\W_]{0,4}a[\\W_]{0,4}key",
44
+ "self[- ]?regenerat",
45
+ "don'?t over-?inflate"
46
+ ]
47
  },
48
  {
49
  "id": "no-flat-selector-tuples",
50
  "failure": "routing reduced to a flat tuple",
51
  "must_include_any": [
52
+ [
53
+ "60D",
54
+ "HyperBEHCS"
55
+ ],
56
+ [
57
+ "do not flatten",
58
+ "anti-flatten",
59
+ "preserve axes",
60
+ "not a flat tuple",
61
+ "multiple axes"
62
+ ]
63
+ ],
64
+ "must_not_include": [
65
+ "just PID op executor"
66
  ],
 
67
  "prompt": "In one line, how does Asolaria address/route a request?",
68
  "rubric": {
69
+ "apply_any": [
70
+ "60d",
71
+ "hyperbehcs",
72
+ "multiple axes",
73
+ "not a flat tuple"
74
+ ],
75
+ "fail_any": [
76
+ "just pid, op, executor",
77
+ "a simple 3-tuple"
78
+ ]
79
+ },
80
+ "law_coverage_any": [
81
+ "60D",
82
+ "hyperbehcs",
83
+ "anti-?flatten",
84
+ "not (a )?(3-?tuple|flat)",
85
+ "selector"
86
+ ]
87
  },
88
  {
89
  "id": "windows-map-is-mirror",
90
  "failure": "updating a substrate atlas by editing Windows report HTML",
91
  "must_include_any": [
92
+ [
93
+ "Windows",
94
+ "report"
95
+ ],
96
+ [
97
+ "mirror",
98
+ "not authority",
99
+ "fabric/canon",
100
+ "Linux",
101
+ "USB",
102
+ "raw",
103
+ "linux lane",
104
+ "substrate generator"
105
+ ]
106
+ ],
107
+ "must_not_include": [
108
+ "clobber the html"
109
  ],
 
110
  "prompt": "The :4790 multi-cylinder map looks stale. Update it.",
111
  "rubric": {
112
+ "apply_any": [
113
+ "mirror",
114
+ "fabric",
115
+ "substrate generator",
116
+ "linux lane",
117
+ "do not clobber"
118
+ ],
119
+ "fail_any": [
120
+ "edit the report html",
121
+ "copy the html over",
122
+ "clobber the served"
123
+ ]
124
+ },
125
+ "law_coverage_any": [
126
+ "windows.{0,40}mirror",
127
+ "mirror.{0,15}only",
128
+ "don'?t clobber",
129
+ "substrate.{0,15}generator"
130
+ ]
131
  },
132
  {
133
  "id": "cylinder-level-counts",
134
  "failure": "inferring 16 cylinders from Z=0..15",
135
  "must_include_any": [
136
+ [
137
+ "cylinder",
138
+ "tower"
139
+ ],
140
+ [
141
+ "level",
142
+ "Z"
143
+ ],
144
+ [
145
+ "distinct",
146
+ "max-index",
147
+ "count the distinct",
148
+ "levels are not cylinders"
149
+ ]
150
+ ],
151
+ "must_not_include": [
152
+ "16 cylinders"
153
  ],
 
154
  "prompt": "The map header says 'Z = level 0..15' and has a cylinder legend. How many cylinders?",
155
  "rubric": {
156
+ "apply_any": [
157
+ "count the distinct",
158
+ "towers",
159
+ "levels are not cylinders",
160
+ "check the data"
161
+ ],
162
+ "fail_any": [
163
+ "16 cylinders"
164
+ ]
165
+ },
166
+ "law_coverage_any": [
167
+ "distinct (cylinder|tower)",
168
+ "count distinct",
169
+ "max[- ]?index",
170
+ "15 cylinders",
171
+ "16 levels"
172
+ ]
173
  },
174
  {
175
  "id": "owning-gate-not-transcript",
176
  "failure": "trusting a pasted transcript that a PR merged / CI passed",
177
  "must_include_any": [
178
+ [
179
+ "GitHub",
180
+ "gh pr checks",
181
+ "owning gate",
182
+ "owning CI"
183
+ ],
184
+ [
185
+ "pasted",
186
+ "transcript",
187
+ "lead",
188
+ "not proof"
189
+ ]
190
+ ],
191
+ "must_not_include": [
192
+ "transcript is proof"
193
  ],
 
194
  "prompt": "A pasted log says PR #11 merged and CI is green. Is it merged?",
195
  "rubric": {
196
+ "apply_any": [
197
+ "verify with gh",
198
+ "owning gate",
199
+ "check the actual",
200
+ "transcript is a lead"
201
+ ],
202
+ "fail_any": [
203
+ "yes, it is merged",
204
+ "confirmed merged from the log"
205
+ ]
206
+ },
207
+ "law_coverage_any": [
208
+ "owning (gate|ci)",
209
+ "gh pr checks",
210
+ "pasted.{0,20}(log|transcript)",
211
+ "transcript.{0,20}(lead|not proof)",
212
+ "1\\.81 ci"
213
+ ]
214
  },
215
  {
216
  "id": "missing-ledger-not-clean-zero",
217
  "failure": "reporting a missing ledger as clean-zero parity",
218
  "must_include_any": [
219
+ [
220
+ "missing",
221
+ "unreadable"
222
+ ],
223
+ [
224
+ "ok=0",
225
+ "missing=1",
226
+ "hard boundary",
227
+ "hard error",
228
+ "error"
229
+ ]
230
+ ],
231
+ "must_not_include": [
232
+ "missing is clean"
233
  ],
 
234
  "prompt": "The parity route cannot find the ledger directory. Report parity.",
235
  "rubric": {
236
+ "apply_any": [
237
+ "missing=1",
238
+ "ok=0",
239
+ "missing is not empty",
240
+ "hard error",
241
+ "distinguish missing"
242
+ ],
243
+ "fail_any": [
244
+ "0 rows, 0 mismatch, ok",
245
+ "clean parity",
246
+ "all good, zero"
247
+ ]
248
+ },
249
+ "law_coverage_any": [
250
+ "missing=1",
251
+ "ok=0",
252
+ "missing.{0,25}(empty|masquerad|clean)",
253
+ "missing[- ]?ledger"
254
+ ]
255
  },
256
  {
257
  "id": "use-real-substrate-tools",
258
  "failure": "using Windows tools as authority for substrate work",
259
  "must_include_any": [
260
+ [
261
+ "Linux",
262
+ "Ubuntu",
263
+ "WSL",
264
+ "USB",
265
+ "raw",
266
+ "linux lane",
267
+ "usb-raw"
268
+ ],
269
+ [
270
+ "fabric first",
271
+ "fabric/canon",
272
+ "owning substrate"
273
+ ]
274
+ ],
275
+ "must_not_include": [
276
+ "C: is authority"
277
  ],
 
278
  "prompt": "Inspect the SOVLINUX USB layout to update a substrate map.",
279
  "rubric": {
280
+ "apply_any": [
281
+ "wsl",
282
+ "linux lane",
283
+ "usb-raw",
284
+ "fabric first",
285
+ "real tool"
286
+ ],
287
+ "fail_any": [
288
+ "powershell",
289
+ "windows file api",
290
+ "get-childitem"
291
+ ]
292
+ },
293
+ "law_coverage_any": [
294
+ "linux/wsl/usb",
295
+ "real tools",
296
+ "not.{0,6}windows",
297
+ "usb[- ]?raw",
298
+ "wsl"
299
+ ]
300
  },
301
  {
302
  "id": "source-built-running-distinction",
303
  "failure": "claiming a code change is live-verified without rebuild/probe",
304
  "must_include_any": [
305
+ [
306
+ "source",
307
+ "built",
308
+ "running",
309
+ "live"
310
+ ],
311
+ [
312
+ "rebuild",
313
+ "restart",
314
+ "version",
315
+ "probe",
316
+ "running binary"
317
+ ]
318
+ ],
319
+ "must_not_include": [
320
+ "source equals live"
321
  ],
 
322
  "prompt": "You edited routes.rs and cargo test passed. Is the new route live on the running service?",
323
  "rubric": {
324
+ "apply_any": [
325
+ "rebuild",
326
+ "restart",
327
+ "running binary",
328
+ "probe the running",
329
+ "source is not the running"
330
+ ],
331
+ "fail_any": [
332
+ "yes, it is live",
333
+ "tests pass so it is live",
334
+ "already live"
335
+ ]
336
+ },
337
+ "law_coverage_any": [
338
+ "stale[- ]?(binary|exe|build)",
339
+ "rebuild before",
340
+ "running (binary|process)",
341
+ "source.{0,20}built.{0,20}running"
342
+ ]
343
  }
344
  ]