@afokapu/atdd-bun 0.10.32 → 0.10.33

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.
@@ -0,0 +1,436 @@
1
+ schema_version: "1.0.0"
2
+ profile: "htmx"
3
+ implementations:
4
+ - "htmx_e2e_detector"
5
+ - "htmx_hypermedia_detector"
6
+ - "htmx_tester_detector"
7
+ conventions:
8
+ - rule_id: "coder.htmx.fragment-escapes-interpolation"
9
+ path: "conventions/coder.htmx/coder.htmx.fragment-escapes-interpolation.convention.yaml"
10
+ - rule_id: "coder.htmx.swap-no-inline-handler"
11
+ path: "conventions/coder.htmx/coder.htmx.swap-no-inline-handler.convention.yaml"
12
+ - rule_id: "coder.htmx.swap-oob-carries-id"
13
+ path: "conventions/coder.htmx/coder.htmx.swap-oob-carries-id.convention.yaml"
14
+ - rule_id: "coder.htmx.verb-destructive-confirms"
15
+ path: "conventions/coder.htmx/coder.htmx.verb-destructive-confirms.convention.yaml"
16
+ - rule_id: "coder.htmx.verb-endpoint-is-routed"
17
+ path: "conventions/coder.htmx/coder.htmx.verb-endpoint-is-routed.convention.yaml"
18
+ - rule_id: "coder.htmx.verb-endpoint-same-origin"
19
+ path: "conventions/coder.htmx/coder.htmx.verb-endpoint-same-origin.convention.yaml"
20
+ - rule_id: "coder.htmx.verb-mutation-signals-progress"
21
+ path: "conventions/coder.htmx/coder.htmx.verb-mutation-signals-progress.convention.yaml"
22
+ - rule_id: "tester.htmx.a11y-harness"
23
+ path: "conventions/tester.htmx/tester.htmx.a11y-harness.convention.yaml"
24
+ - rule_id: "tester.htmx.covered-train-is-routed"
25
+ path: "conventions/tester.htmx/tester.htmx.covered-train-is-routed.convention.yaml"
26
+ - rule_id: "tester.htmx.e2e-binds-declared-subject"
27
+ path: "conventions/tester.htmx/tester.htmx.e2e-binds-declared-subject.convention.yaml"
28
+ - rule_id: "tester.htmx.e2e-spec-naming"
29
+ path: "conventions/tester.htmx/tester.htmx.e2e-spec-naming.convention.yaml"
30
+ - rule_id: "tester.htmx.exposed-journey-e2e-coverage"
31
+ path: "conventions/tester.htmx/tester.htmx.exposed-journey-e2e-coverage.convention.yaml"
32
+ - rule_id: "tester.htmx.fragment-asserts-returned-markup"
33
+ path: "conventions/tester.htmx/tester.htmx.fragment-asserts-returned-markup.convention.yaml"
34
+ - rule_id: "tester.htmx.journey-binding-header"
35
+ path: "conventions/tester.htmx/tester.htmx.journey-binding-header.convention.yaml"
36
+ - rule_id: "tester.htmx.journey-layer-assembly"
37
+ path: "conventions/tester.htmx/tester.htmx.journey-layer-assembly.convention.yaml"
38
+ - rule_id: "tester.htmx.journey-no-acceptance-marker"
39
+ path: "conventions/tester.htmx/tester.htmx.journey-no-acceptance-marker.convention.yaml"
40
+ - rule_id: "tester.htmx.journey-urn-format"
41
+ path: "conventions/tester.htmx/tester.htmx.journey-urn-format.convention.yaml"
42
+ - rule_id: "tester.htmx.presentation-smoke-coverage"
43
+ path: "conventions/tester.htmx/tester.htmx.presentation-smoke-coverage.convention.yaml"
44
+ - rule_id: "tester.htmx.responsive-harness"
45
+ path: "conventions/tester.htmx/tester.htmx.responsive-harness.convention.yaml"
46
+ - rule_id: "tester.htmx.responsive-journey-coverage"
47
+ path: "conventions/tester.htmx/tester.htmx.responsive-journey-coverage.convention.yaml"
48
+ - rule_id: "tester.htmx.swap-oob-asserts-destination-id"
49
+ path: "conventions/tester.htmx/tester.htmx.swap-oob-asserts-destination-id.convention.yaml"
50
+ - rule_id: "tester.htmx.train-e2e-coverage"
51
+ path: "conventions/tester.htmx/tester.htmx.train-e2e-coverage.convention.yaml"
52
+ - rule_id: "tester.htmx.verb-endpoint-coverage"
53
+ path: "conventions/tester.htmx/tester.htmx.verb-endpoint-coverage.convention.yaml"
54
+ - rule_id: "tester.htmx.visual-harness"
55
+ path: "conventions/tester.htmx/tester.htmx.visual-harness.convention.yaml"
56
+ relationships:
57
+ - confidence: 1
58
+ constraint: "mandatory"
59
+ control: "internal"
60
+ foundation: "start_to_start"
61
+ origin: "@afokapu/atdd-bun"
62
+ reason: "on a frontend journey a browser spec is the route's end-to-end proof"
63
+ source_ref: "atdd-bun.topology.e2e-location"
64
+ strength: "important"
65
+ target_ref: "tester.htmx.train-e2e-coverage"
66
+ type: "runs_alongside"
67
+ - confidence: 1
68
+ constraint: "mandatory"
69
+ control: "internal"
70
+ foundation: "start_to_start"
71
+ origin: "@afokapu/atdd-bun"
72
+ reason: "a viewport that blocks zoom is an accessibility failure as well as a responsive one"
73
+ source_ref: "coder.bun.responsive-viewport-meta"
74
+ strength: "important"
75
+ target_ref: "tester.htmx.a11y-harness"
76
+ type: "runs_alongside"
77
+ - confidence: 1
78
+ constraint: "mandatory"
79
+ control: "internal"
80
+ foundation: "start_to_start"
81
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.htmx/relationships.yaml"
82
+ reason: "Both govern what reaches the live DOM: one the ORIGIN the markup came from, the other the DATA inside it."
83
+ source_ref: "coder.htmx.fragment-escapes-interpolation"
84
+ strength: "critical"
85
+ target_ref: "coder.htmx.verb-endpoint-same-origin"
86
+ type: "runs_alongside"
87
+ - confidence: 1
88
+ constraint: "discretionary"
89
+ control: "internal"
90
+ foundation: "start_to_start"
91
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.htmx/relationships.yaml"
92
+ reason: "Both replace imperative JavaScript with a declarative hx- attribute the swap lifecycle can see."
93
+ source_ref: "coder.htmx.swap-no-inline-handler"
94
+ strength: "minor"
95
+ target_ref: "coder.htmx.verb-destructive-confirms"
96
+ type: "runs_alongside"
97
+ - confidence: 1
98
+ constraint: "discretionary"
99
+ control: "internal"
100
+ foundation: "start_to_start"
101
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.htmx/relationships.yaml"
102
+ reason: "Both concern what survives a swap: an oob element needs an id to land, an inline handler dies when its node is replaced."
103
+ source_ref: "coder.htmx.swap-oob-carries-id"
104
+ strength: "minor"
105
+ target_ref: "coder.htmx.swap-no-inline-handler"
106
+ type: "runs_alongside"
107
+ - confidence: 1
108
+ constraint: "mandatory"
109
+ control: "internal"
110
+ foundation: "start_to_start"
111
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.htmx/relationships.yaml"
112
+ reason: "Both govern a mutating control: one guards INTENT before the request, the other FEEDBACK during it."
113
+ source_ref: "coder.htmx.verb-destructive-confirms"
114
+ strength: "important"
115
+ target_ref: "coder.htmx.verb-mutation-signals-progress"
116
+ type: "runs_alongside"
117
+ - confidence: 1
118
+ constraint: "discretionary"
119
+ control: "internal"
120
+ foundation: "start_to_start"
121
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.htmx/relationships.yaml"
122
+ reason: "Two obligations on the same state-changing affordance. One requires it to tell the operator something is happening; this one requires it to reach a route the Station Master admits. A mutation can satisfy either alone and still be a button that signals progress while posting into nothing."
123
+ source_ref: "coder.htmx.verb-endpoint-is-routed"
124
+ strength: "important"
125
+ target_ref: "coder.htmx.verb-mutation-signals-progress"
126
+ type: "runs_alongside"
127
+ - confidence: 1
128
+ constraint: "mandatory"
129
+ control: "internal"
130
+ foundation: "start_to_start"
131
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.coder.htmx/relationships.yaml"
132
+ reason: "Both read the same hx- verb attributes: one judges WHERE the request goes, the other what the user sees while it is in flight."
133
+ source_ref: "coder.htmx.verb-endpoint-same-origin"
134
+ strength: "important"
135
+ target_ref: "coder.htmx.verb-mutation-signals-progress"
136
+ type: "runs_alongside"
137
+ - confidence: 1
138
+ constraint: "mandatory"
139
+ control: "internal"
140
+ foundation: "finish_to_start"
141
+ origin: "@afokapu/atdd-bun"
142
+ reason: "an accessibility spec is identified by its A11Y harness code"
143
+ source_ref: "tester.htmx.a11y-harness"
144
+ strength: "important"
145
+ target_ref: "tester.htmx.journey-urn-format"
146
+ type: "requires"
147
+ - confidence: 1
148
+ constraint: "mandatory"
149
+ control: "internal"
150
+ foundation: "finish_to_start"
151
+ origin: "@afokapu/atdd-bun"
152
+ reason: "Bun/htmx realization of the Vite accessibility harness"
153
+ source_ref: "tester.htmx.a11y-harness"
154
+ strength: "important"
155
+ target_ref: "tester.vite.a11y-harness"
156
+ type: "requires"
157
+ - confidence: 1
158
+ constraint: "mandatory"
159
+ control: "internal"
160
+ foundation: "finish_to_start"
161
+ origin: "@afokapu/atdd-bun"
162
+ reason: "only a declared train can be checked for a route that selects it"
163
+ source_ref: "tester.htmx.covered-train-is-routed"
164
+ strength: "critical"
165
+ target_ref: "tester.htmx.e2e-binds-declared-subject"
166
+ type: "requires"
167
+ - confidence: 1
168
+ constraint: "mandatory"
169
+ control: "internal"
170
+ foundation: "finish_to_start"
171
+ origin: "@afokapu/atdd-bun"
172
+ reason: "Bun/htmx realization, judged against interlocking routes in plan/"
173
+ source_ref: "tester.htmx.covered-train-is-routed"
174
+ strength: "important"
175
+ target_ref: "tester.vite.covered-train-is-routed"
176
+ type: "requires"
177
+ - confidence: 1
178
+ constraint: "mandatory"
179
+ control: "internal"
180
+ foundation: "finish_to_start"
181
+ origin: "@afokapu/atdd-bun"
182
+ reason: "a binding must be well-formed before it can be resolved against plan/"
183
+ source_ref: "tester.htmx.e2e-binds-declared-subject"
184
+ strength: "critical"
185
+ target_ref: "tester.htmx.journey-binding-header"
186
+ type: "requires"
187
+ - confidence: 1
188
+ constraint: "mandatory"
189
+ control: "internal"
190
+ foundation: "finish_to_start"
191
+ origin: "@afokapu/atdd-bun"
192
+ reason: "Bun/htmx realization of the Vite orphaned-spec rule, extended to journeys"
193
+ source_ref: "tester.htmx.e2e-binds-declared-subject"
194
+ strength: "important"
195
+ target_ref: "tester.vite.e2e-names-valid-train"
196
+ type: "requires"
197
+ - confidence: 1
198
+ constraint: "mandatory"
199
+ control: "internal"
200
+ foundation: "finish_to_start"
201
+ origin: "@afokapu/atdd-bun"
202
+ reason: "browser specs are recognised by their *.e2e.ts name, which is what brings them under the journey header rules"
203
+ source_ref: "tester.htmx.e2e-spec-naming"
204
+ strength: "important"
205
+ target_ref: "tester.htmx.journey-binding-header"
206
+ type: "enables"
207
+ - confidence: 1
208
+ constraint: "mandatory"
209
+ control: "internal"
210
+ foundation: "finish_to_start"
211
+ origin: "@afokapu/atdd-bun"
212
+ reason: "exposed journeys are the ones a journey declares with an exposed entrypoint"
213
+ source_ref: "tester.htmx.exposed-journey-e2e-coverage"
214
+ strength: "critical"
215
+ target_ref: "planner.journey.definition"
216
+ type: "requires"
217
+ - confidence: 1
218
+ constraint: "mandatory"
219
+ control: "internal"
220
+ foundation: "start_to_start"
221
+ origin: "@afokapu/atdd-bun"
222
+ reason: "a journey run end to end in a browser beside each exposed interlocking action smoke-tested through the Station Master"
223
+ source_ref: "tester.htmx.exposed-journey-e2e-coverage"
224
+ strength: "important"
225
+ target_ref: "tester.bun.interlocking-smoke-coverage-for-station-master"
226
+ type: "runs_alongside"
227
+ - confidence: 1
228
+ constraint: "mandatory"
229
+ control: "internal"
230
+ foundation: "finish_to_start"
231
+ origin: "@afokapu/atdd-bun"
232
+ reason: "Bun/htmx realization of the Vite journey header obligation"
233
+ source_ref: "tester.htmx.journey-binding-header"
234
+ strength: "important"
235
+ target_ref: "tester.vite.journey-train-header"
236
+ type: "requires"
237
+ - confidence: 1
238
+ constraint: "mandatory"
239
+ control: "internal"
240
+ foundation: "start_to_start"
241
+ origin: "@afokapu/atdd-bun"
242
+ reason: "the same journey header block: binding and layer are read together"
243
+ source_ref: "tester.htmx.journey-layer-assembly"
244
+ strength: "important"
245
+ target_ref: "tester.htmx.journey-binding-header"
246
+ type: "runs_alongside"
247
+ - confidence: 1
248
+ constraint: "mandatory"
249
+ control: "internal"
250
+ foundation: "finish_to_start"
251
+ origin: "@afokapu/atdd-bun"
252
+ reason: "Bun/htmx realization of the Vite layer rule"
253
+ source_ref: "tester.htmx.journey-layer-assembly"
254
+ strength: "important"
255
+ target_ref: "tester.vite.journey-layer-assembly"
256
+ type: "requires"
257
+ - confidence: 1
258
+ constraint: "mandatory"
259
+ control: "internal"
260
+ foundation: "start_to_start"
261
+ origin: "@afokapu/atdd-bun"
262
+ reason: "the two exclusive test identities: a journey spec binds to a train or journey, an acceptance test to its acceptance"
263
+ source_ref: "tester.htmx.journey-no-acceptance-marker"
264
+ strength: "important"
265
+ target_ref: "tester.bun.acceptance-binding-declared"
266
+ type: "runs_alongside"
267
+ - confidence: 1
268
+ constraint: "mandatory"
269
+ control: "internal"
270
+ foundation: "finish_to_start"
271
+ origin: "@afokapu/atdd-bun"
272
+ reason: "Bun/htmx realization of the Vite exclusive-identity rule"
273
+ source_ref: "tester.htmx.journey-no-acceptance-marker"
274
+ strength: "important"
275
+ target_ref: "tester.vite.journey-no-acceptance-marker"
276
+ type: "requires"
277
+ - confidence: 1
278
+ constraint: "mandatory"
279
+ control: "internal"
280
+ foundation: "finish_to_start"
281
+ origin: "@afokapu/atdd-bun"
282
+ reason: "a URN can only be checked against the subject once the binding names one"
283
+ source_ref: "tester.htmx.journey-urn-format"
284
+ strength: "critical"
285
+ target_ref: "tester.htmx.journey-binding-header"
286
+ type: "requires"
287
+ - confidence: 1
288
+ constraint: "mandatory"
289
+ control: "internal"
290
+ foundation: "finish_to_start"
291
+ origin: "@afokapu/atdd-bun"
292
+ reason: "Bun/htmx realization of the Vite journey URN grammar"
293
+ source_ref: "tester.htmx.journey-urn-format"
294
+ strength: "important"
295
+ target_ref: "tester.vite.journey-urn-format"
296
+ type: "requires"
297
+ - confidence: 1
298
+ constraint: "mandatory"
299
+ control: "internal"
300
+ foundation: "start_to_start"
301
+ origin: "@afokapu/atdd-bun"
302
+ reason: "a presentation component is proven rendered by a smoke that asserts on what the user can observe"
303
+ source_ref: "tester.htmx.presentation-smoke-coverage"
304
+ strength: "important"
305
+ target_ref: "tester.bun.smoke-observable-assertion"
306
+ type: "runs_alongside"
307
+ - confidence: 1
308
+ constraint: "mandatory"
309
+ control: "internal"
310
+ foundation: "finish_to_start"
311
+ origin: "@afokapu/atdd-bun"
312
+ reason: "Bun/htmx realization of the Vite presentation smoke rule"
313
+ source_ref: "tester.htmx.presentation-smoke-coverage"
314
+ strength: "important"
315
+ target_ref: "tester.vite.presentation-smoke-coverage"
316
+ type: "requires"
317
+ - confidence: 1
318
+ constraint: "mandatory"
319
+ control: "internal"
320
+ foundation: "start_to_start"
321
+ origin: "@afokapu/atdd-bun"
322
+ reason: "the static cause and the rendered proof of horizontal overflow"
323
+ source_ref: "tester.htmx.responsive-harness"
324
+ strength: "important"
325
+ target_ref: "coder.bun.responsive-no-fixed-width"
326
+ type: "runs_alongside"
327
+ - confidence: 1
328
+ constraint: "mandatory"
329
+ control: "internal"
330
+ foundation: "finish_to_start"
331
+ origin: "@afokapu/atdd-bun"
332
+ reason: "a browser can only prove a page fits a phone once the page declares a device-width viewport"
333
+ source_ref: "tester.htmx.responsive-harness"
334
+ strength: "critical"
335
+ target_ref: "coder.bun.responsive-viewport-meta"
336
+ type: "requires"
337
+ - confidence: 1
338
+ constraint: "mandatory"
339
+ control: "internal"
340
+ foundation: "finish_to_start"
341
+ origin: "@afokapu/atdd-bun"
342
+ reason: "a responsive spec is identified by its RESP harness code"
343
+ source_ref: "tester.htmx.responsive-harness"
344
+ strength: "important"
345
+ target_ref: "tester.htmx.journey-urn-format"
346
+ type: "requires"
347
+ - confidence: 1
348
+ constraint: "mandatory"
349
+ control: "internal"
350
+ foundation: "start_to_start"
351
+ origin: "@afokapu/atdd-bun"
352
+ reason: "the same exposed journeys, proven to run and proven to fit every viewport"
353
+ source_ref: "tester.htmx.responsive-journey-coverage"
354
+ strength: "important"
355
+ target_ref: "tester.htmx.exposed-journey-e2e-coverage"
356
+ type: "runs_alongside"
357
+ - confidence: 1
358
+ constraint: "mandatory"
359
+ control: "internal"
360
+ foundation: "finish_to_start"
361
+ origin: "@afokapu/atdd-bun"
362
+ reason: "a journey counts as covered only by a RESP spec that meets the responsive harness"
363
+ source_ref: "tester.htmx.responsive-journey-coverage"
364
+ strength: "critical"
365
+ target_ref: "tester.htmx.responsive-harness"
366
+ type: "requires"
367
+ - confidence: 1
368
+ constraint: "mandatory"
369
+ control: "internal"
370
+ foundation: "finish_to_start"
371
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.tester.htmx/relationships.yaml"
372
+ reason: "Asserting the destination id is a specific case of asserting the fragment at all: a test that never reaches the body cannot reach the id inside it."
373
+ source_ref: "tester.htmx.swap-oob-asserts-destination-id"
374
+ strength: "important"
375
+ target_ref: "tester.htmx.fragment-asserts-returned-markup"
376
+ type: "requires"
377
+ - confidence: 1
378
+ constraint: "mandatory"
379
+ control: "internal"
380
+ foundation: "start_to_start"
381
+ origin: "@afokapu/atdd-bun"
382
+ reason: "browser coverage per train beside runner-level coverage per interlocking route"
383
+ source_ref: "tester.htmx.train-e2e-coverage"
384
+ strength: "important"
385
+ target_ref: "tester.bun.interlocking-route-coverage"
386
+ type: "runs_alongside"
387
+ - confidence: 1
388
+ constraint: "mandatory"
389
+ control: "internal"
390
+ foundation: "start_to_start"
391
+ origin: "@afokapu/atdd-bun"
392
+ reason: "the two directions between trains and browser specs: every train has a spec, and every covered train is reachable"
393
+ source_ref: "tester.htmx.train-e2e-coverage"
394
+ strength: "important"
395
+ target_ref: "tester.htmx.covered-train-is-routed"
396
+ type: "runs_alongside"
397
+ - confidence: 1
398
+ constraint: "mandatory"
399
+ control: "internal"
400
+ foundation: "finish_to_start"
401
+ origin: "@afokapu/atdd-bun"
402
+ reason: "Bun/htmx realization of the Vite train coverage rule"
403
+ source_ref: "tester.htmx.train-e2e-coverage"
404
+ strength: "important"
405
+ target_ref: "tester.vite.train-e2e-coverage"
406
+ type: "requires"
407
+ - confidence: 1
408
+ constraint: "mandatory"
409
+ control: "internal"
410
+ foundation: "start_to_start"
411
+ origin: "atdd-extensions@3aa141e:official/atdd.extension.tester.htmx/relationships.yaml"
412
+ reason: "Two halves of one guarantee: coverage says every declared endpoint HAS a test, fragment-asserts-markup says that test looks at what the endpoint actually returns."
413
+ source_ref: "tester.htmx.verb-endpoint-coverage"
414
+ strength: "important"
415
+ target_ref: "tester.htmx.fragment-asserts-returned-markup"
416
+ type: "runs_alongside"
417
+ - confidence: 1
418
+ constraint: "mandatory"
419
+ control: "internal"
420
+ foundation: "finish_to_start"
421
+ origin: "@afokapu/atdd-bun"
422
+ reason: "a visual spec is identified by its VIS harness code"
423
+ source_ref: "tester.htmx.visual-harness"
424
+ strength: "important"
425
+ target_ref: "tester.htmx.journey-urn-format"
426
+ type: "requires"
427
+ - confidence: 1
428
+ constraint: "mandatory"
429
+ control: "internal"
430
+ foundation: "finish_to_start"
431
+ origin: "@afokapu/atdd-bun"
432
+ reason: "Bun/htmx realization of the Vite visual harness"
433
+ source_ref: "tester.htmx.visual-harness"
434
+ strength: "important"
435
+ target_ref: "tester.vite.visual-harness"
436
+ type: "requires"