yarramate 0.6.0 → 0.7.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.
Files changed (38) hide show
  1. package/README.md +39 -12
  2. package/catalogues/core-enrichment.yaml +700 -0
  3. package/dist/adapters/mcp-cli.js +55 -49
  4. package/dist/apply-command.d.ts +2 -0
  5. package/dist/apply-command.js +199 -0
  6. package/dist/{new-command.d.ts → ask-command.d.ts} +1 -1
  7. package/dist/ask-command.js +729 -0
  8. package/dist/brief.d.ts +3 -0
  9. package/dist/brief.js +235 -0
  10. package/dist/cli-support.d.ts +1 -1
  11. package/dist/cli-support.js +1 -1
  12. package/dist/cli.js +22 -590
  13. package/dist/compiler.js +13 -0
  14. package/dist/core-contract.d.ts +1 -1
  15. package/dist/{status-command.d.ts → design-command.d.ts} +1 -1
  16. package/dist/design-command.js +218 -0
  17. package/dist/export-command.d.ts +2 -0
  18. package/dist/export-command.js +228 -0
  19. package/dist/interrogate-command.d.ts +104 -0
  20. package/dist/interrogate-command.js +268 -0
  21. package/dist/next-command.d.ts +5 -8
  22. package/dist/next-command.js +106 -211
  23. package/docs/CONSUMING-YARRAMATE.md +28 -21
  24. package/package.json +13 -11
  25. package/schema/yarramate-apply-result.schema.json +32 -0
  26. package/schema/yarramate-ask-result.schema.json +391 -0
  27. package/schema/yarramate-core-contract.schema.json +5 -11
  28. package/schema/yarramate-design-step.schema.json +152 -0
  29. package/schema/yarramate-document.schema.json +76 -9
  30. package/schema/yarramate-interrogation-report.schema.json +89 -0
  31. package/schema/yarramate-operations.schema.json +303 -0
  32. package/schema/yarramate-question-catalogue.schema.json +431 -0
  33. package/skills/yarramate-architecture/SKILL.md +42 -17
  34. package/skills/yarramate-architecture/references/native-authoring.md +73 -17
  35. package/dist/new-command.js +0 -111
  36. package/dist/status-command.js +0 -174
  37. package/schema/yarramate-next-result.schema.json +0 -85
  38. package/schema/yarramate-status-result.schema.json +0 -278
@@ -0,0 +1,700 @@
1
+ format: yarramate/question-catalogue/v1
2
+ id: core-enrichment
3
+ version: "0.3"
4
+ profile: yarramate/core@0.1
5
+ presentation:
6
+ title: Core enrichment interview
7
+ description: >-
8
+ The guided design path: motivation, business, and application waves plus
9
+ cross-cutting hygiene (technology and implementation follow in a later
10
+ version). Each question states the decision its answer changes; a
11
+ question that cannot is deleted, not softened. Adequacy is enforced by
12
+ linkage depth and attestation, never by reading words.
13
+
14
+ waves:
15
+ - id: motivation
16
+ name: Motivation
17
+ description: Why the system exists and what constrains it.
18
+ - id: business
19
+ name: Business
20
+ description: Who acts, what is served, and what information matters.
21
+ - id: application
22
+ name: Application
23
+ description: >-
24
+ How declared services are realized, performed, and fed with
25
+ information.
26
+ - id: hygiene
27
+ name: Model hygiene
28
+ description: Cross-cutting completeness that keeps every wave honest.
29
+
30
+ questions:
31
+ # ---- motivation ----------------------------------------------------------
32
+ - id: outcome-missing
33
+ wave: motivation
34
+ scope: workspace
35
+ trigger:
36
+ - condition: no-subject-of-kind
37
+ kinds:
38
+ - yarramate/core@0.1#goal
39
+ - yarramate/core@0.1#outcome
40
+ question: >-
41
+ What outcome justifies this system's existence?
42
+ materiality: >-
43
+ Without a declared goal or outcome, no alternative can be selected or
44
+ rejected on grounds anyone can review; every later trade-off becomes
45
+ taste.
46
+ authority: human
47
+ resolution: >-
48
+ Add at least one goal or outcome concept and relate principal services
49
+ to it with realization.
50
+
51
+ - id: stakeholders-missing
52
+ wave: motivation
53
+ scope: workspace
54
+ trigger:
55
+ - condition: no-subject-of-kind
56
+ kinds:
57
+ - yarramate/core@0.1#stakeholder
58
+ - yarramate/core@0.1#driver
59
+ question: >-
60
+ Which stakeholders and drivers shape this architecture?
61
+ materiality: >-
62
+ Drivers decide which qualities dominate when requirements conflict;
63
+ unstated drivers get re-litigated in every review.
64
+ authority: human
65
+ resolution: >-
66
+ Add stakeholder and driver concepts; use influence relationships toward
67
+ the goals they shape.
68
+
69
+ - id: constraints-missing
70
+ wave: motivation
71
+ scope: workspace
72
+ trigger:
73
+ - condition: no-subject-of-kind
74
+ kinds:
75
+ - yarramate/core@0.1#constraint
76
+ - yarramate/core@0.1#requirement
77
+ question: >-
78
+ Which constraints and requirements are non-negotiable?
79
+ materiality: >-
80
+ Non-negotiable constraints eliminate alternatives outright; discovering
81
+ them after design selection invalidates the selection.
82
+ authority: human
83
+ resolution: >-
84
+ Add constraint or requirement concepts and attach constraint references
85
+ from the subjects they bind.
86
+
87
+ - id: goal-unrealized
88
+ wave: motivation
89
+ scope: subject
90
+ subjects:
91
+ kinds:
92
+ - yarramate/core@0.1#goal
93
+ - yarramate/core@0.1#outcome
94
+ trigger:
95
+ - condition: missing-relationship
96
+ kinds:
97
+ - yarramate/core@0.1#realization
98
+ direction: incoming
99
+ question: >-
100
+ Nothing realizes {subject.name}. What fulfils it — or is it
101
+ aspirational?
102
+ materiality: >-
103
+ An unrealized goal either reprioritizes the roadmap or should be
104
+ declared aspirational so it stops steering design.
105
+ authority: either
106
+ resolution: >-
107
+ Add realization relationships from the fulfilling capability or
108
+ service, or record the aspirational status in the goal's description.
109
+
110
+
111
+ - id: goal-no-driver
112
+ wave: motivation
113
+ scope: subject
114
+ subjects:
115
+ kinds:
116
+ - yarramate/core@0.1#goal
117
+ - yarramate/core@0.1#outcome
118
+ trigger:
119
+ - condition: missing-linkage
120
+ kinds:
121
+ - yarramate/core@0.1#influence
122
+ direction: incoming
123
+ counterpartKinds:
124
+ - yarramate/core@0.1#driver
125
+ - yarramate/core@0.1#assessment
126
+ - yarramate/core@0.1#stakeholder
127
+ question: >-
128
+ What pressure produces {subject.name}?
129
+ materiality: >-
130
+ A goal with no driver behind it cannot be reprioritized when the
131
+ environment changes; it floats free of the forces that would retire
132
+ or sharpen it.
133
+ authority: human
134
+ resolution: >-
135
+ Add the driver, assessment, or stakeholder that motivates the goal
136
+ and connect it with an influence relationship.
137
+
138
+ - id: driver-influences-nothing
139
+ wave: motivation
140
+ scope: subject
141
+ subjects:
142
+ kinds:
143
+ - yarramate/core@0.1#driver
144
+ trigger:
145
+ - condition: missing-relationship
146
+ kinds:
147
+ - yarramate/core@0.1#influence
148
+ direction: outgoing
149
+ question: >-
150
+ What does {subject.name} actually push on?
151
+ materiality: >-
152
+ A driver that influences nothing cannot participate in any trade-off;
153
+ it is context theatre until it points at a goal or principle.
154
+ authority: either
155
+ resolution: >-
156
+ Add influence relationships toward the goals, principles, or
157
+ assessments the driver shapes, or remove it.
158
+
159
+ - id: stakeholder-unconcerned
160
+ wave: motivation
161
+ scope: subject
162
+ subjects:
163
+ kinds:
164
+ - yarramate/core@0.1#stakeholder
165
+ trigger:
166
+ - condition: missing-relationship
167
+ kinds:
168
+ - yarramate/core@0.1#influence
169
+ - yarramate/core@0.1#association
170
+ direction: any
171
+ question: >-
172
+ What does {subject.name} care about here?
173
+ materiality: >-
174
+ A stakeholder with no stated concern cannot veto or endorse anything;
175
+ their objections will arrive as surprises at review time.
176
+ authority: human
177
+ resolution: >-
178
+ Relate the stakeholder to the goals or drivers they care about, or
179
+ remove them from the model.
180
+
181
+ - id: requirement-unrealized
182
+ wave: motivation
183
+ scope: subject
184
+ subjects:
185
+ kinds:
186
+ - yarramate/core@0.1#requirement
187
+ trigger:
188
+ - condition: missing-relationship
189
+ kinds:
190
+ - yarramate/core@0.1#realization
191
+ direction: incoming
192
+ question: >-
193
+ Nothing realizes {subject.name}. What will fulfil it — or is it
194
+ out of scope?
195
+ materiality: >-
196
+ An unrealized requirement is either unplanned work hiding in plain
197
+ sight or scope that should be explicitly declined; both change the
198
+ roadmap.
199
+ authority: either
200
+ resolution: >-
201
+ Add realization from the fulfilling service, component, or behavior,
202
+ or record the descoping decision and remove the requirement.
203
+
204
+ - id: principle-unapplied
205
+ wave: motivation
206
+ scope: subject
207
+ subjects:
208
+ kinds:
209
+ - yarramate/core@0.1#principle
210
+ trigger:
211
+ - condition: missing-relationship
212
+ kinds:
213
+ - yarramate/core@0.1#influence
214
+ - yarramate/core@0.1#realization
215
+ direction: any
216
+ question: >-
217
+ Where does {subject.name} bite?
218
+ materiality: >-
219
+ A principle applied nowhere constrains nothing; naming what it
220
+ influences is what makes it enforceable in review.
221
+ authority: either
222
+ resolution: >-
223
+ Add influence relationships to the decisions the principle governs,
224
+ or realization from the elements that embody it.
225
+
226
+ - id: assessment-unlinked
227
+ wave: motivation
228
+ scope: subject
229
+ subjects:
230
+ kinds:
231
+ - yarramate/core@0.1#assessment
232
+ trigger:
233
+ - condition: isolated
234
+ question: >-
235
+ What does the finding {subject.name} bear on?
236
+ materiality: >-
237
+ An assessment that touches nothing changes no decision; link it to
238
+ the driver or goal it evaluates or drop it.
239
+ authority: either
240
+ resolution: >-
241
+ Relate the assessment to its driver or goal with influence or
242
+ association.
243
+
244
+ - id: motivation-unattested
245
+ wave: motivation
246
+ scope: subject
247
+ subjects:
248
+ kinds:
249
+ - yarramate/core@0.1#goal
250
+ - yarramate/core@0.1#outcome
251
+ - yarramate/core@0.1#requirement
252
+ trigger:
253
+ - condition: missing-attestation
254
+ topic: adequacy
255
+ question: >-
256
+ Has an accountable reviewer accepted {subject.name} as adequately
257
+ stated?
258
+ materiality: >-
259
+ Linkage proves the wiring exists; only a recorded judgment says the
260
+ words are right. Without an attestation, adequacy is nobody's
261
+ decision on record.
262
+ authority: human
263
+ resolution: >-
264
+ Review the subject's description and linkage, then record an
265
+ attestation with topic "adequacy" (revoke by deleting it; Git
266
+ reviews both).
267
+
268
+ # ---- business ------------------------------------------------------------
269
+ - id: service-consumer-unknown
270
+ wave: business
271
+ scope: subject
272
+ subjects:
273
+ kinds:
274
+ - yarramate/core@0.1#businessService
275
+ - yarramate/core@0.1#applicationService
276
+ - yarramate/core@0.1#technologyService
277
+ trigger:
278
+ - condition: missing-relationship
279
+ kinds:
280
+ - yarramate/core@0.1#serving
281
+ direction: outgoing
282
+ question: >-
283
+ Who or what consumes {subject.name}?
284
+ materiality: >-
285
+ A service with no consumer is either the system boundary stated
286
+ implicitly, missing model detail, or scope to delete.
287
+ authority: either
288
+ resolution: >-
289
+ Add serving relationships to the consuming actor, process, or
290
+ component; if the consumer is external, model it as an actor.
291
+
292
+ - id: owner-missing
293
+ wave: business
294
+ scope: subject
295
+ subjects:
296
+ kinds:
297
+ - yarramate/core@0.1#businessService
298
+ - yarramate/core@0.1#applicationService
299
+ - yarramate/core@0.1#applicationComponent
300
+ - yarramate/core@0.1#capability
301
+ trigger:
302
+ - condition: missing-claim
303
+ predicate: yarramate/ownership/owner
304
+ question: >-
305
+ Who is accountable for {subject.name}?
306
+ materiality: >-
307
+ Ownership decides who accepts changes, budgets maintenance, and
308
+ adjudicates constraint conflicts for the subject.
309
+ authority: either
310
+ resolution: >-
311
+ Add an owner reference to an accountable actor (evidence such as
312
+ CODEOWNERS may propose it; a human confirms accountability).
313
+
314
+ - id: actor-unassigned
315
+ wave: business
316
+ scope: subject
317
+ subjects:
318
+ kinds:
319
+ - yarramate/core@0.1#businessActor
320
+ - yarramate/core@0.1#businessRole
321
+ trigger:
322
+ - condition: missing-relationship
323
+ kinds:
324
+ - yarramate/core@0.1#assignment
325
+ direction: outgoing
326
+ question: >-
327
+ What behavior is {subject.name} actually responsible for?
328
+ materiality: >-
329
+ An actor with no assignment is either decorative or hiding an
330
+ undeclared responsibility boundary.
331
+ authority: either
332
+ resolution: >-
333
+ Add assignment relationships to the processes, functions, or services
334
+ the actor performs, or remove the actor.
335
+
336
+ - id: information-unaccessed
337
+ wave: business
338
+ scope: subject
339
+ subjects:
340
+ kinds:
341
+ - yarramate/core@0.1#businessObject
342
+ - yarramate/core@0.1#dataObject
343
+ trigger:
344
+ - condition: missing-relationship
345
+ kinds:
346
+ - yarramate/core@0.1#access
347
+ - yarramate/core@0.1#realization
348
+ direction: any
349
+ question: >-
350
+ Which behavior creates and maintains {subject.name}?
351
+ materiality: >-
352
+ Information nothing accesses cannot be owned, persisted, or exchanged
353
+ correctly; write responsibility determines consistency boundaries.
354
+ authority: either
355
+ resolution: >-
356
+ Add access relationships (with modes) from the behavior that reads and
357
+ writes it.
358
+
359
+ - id: no-service-declared
360
+ wave: business
361
+ scope: workspace
362
+ trigger:
363
+ - condition: no-subject-of-kind
364
+ kinds:
365
+ - yarramate/core@0.1#businessService
366
+ - yarramate/core@0.1#applicationService
367
+ - yarramate/core@0.1#technologyService
368
+ question: >-
369
+ What does this system offer its environment, and to whom?
370
+ materiality: >-
371
+ Declared services define the solution boundary; without them the model
372
+ cannot say what is inside versus outside.
373
+ authority: human
374
+ resolution: >-
375
+ Add the externally meaningful services and serve them to their
376
+ consumers.
377
+
378
+
379
+ - id: service-realizes-no-motivation
380
+ wave: business
381
+ scope: subject
382
+ subjects:
383
+ kinds:
384
+ - yarramate/core@0.1#businessService
385
+ - yarramate/core@0.1#capability
386
+ trigger:
387
+ - condition: missing-linkage
388
+ kinds:
389
+ - yarramate/core@0.1#realization
390
+ direction: outgoing
391
+ counterpartKinds:
392
+ - yarramate/core@0.1#requirement
393
+ - yarramate/core@0.1#goal
394
+ - yarramate/core@0.1#outcome
395
+ question: >-
396
+ Which requirement or goal does {subject.name} exist to satisfy?
397
+ materiality: >-
398
+ A service with no motivation link cannot be traded off against
399
+ anything; when budgets tighten nobody can say what breaks if it
400
+ goes.
401
+ authority: either
402
+ resolution: >-
403
+ Add realization from the service or capability to the requirement,
404
+ goal, or outcome it satisfies.
405
+
406
+ - id: process-untriggered
407
+ wave: business
408
+ scope: subject
409
+ subjects:
410
+ kinds:
411
+ - yarramate/core@0.1#businessProcess
412
+ trigger:
413
+ - condition: missing-relationship
414
+ kinds:
415
+ - yarramate/core@0.1#triggering
416
+ - yarramate/core@0.1#assignment
417
+ direction: incoming
418
+ question: >-
419
+ What starts {subject.name}?
420
+ materiality: >-
421
+ A process nothing triggers or performs either runs on an undeclared
422
+ schedule or does not actually happen; both are design facts worth
423
+ stating.
424
+ authority: either
425
+ resolution: >-
426
+ Add the triggering event or the assignment from its performer.
427
+
428
+ - id: business-service-unrealized
429
+ wave: business
430
+ scope: subject
431
+ subjects:
432
+ kinds:
433
+ - yarramate/core@0.1#businessService
434
+ statuses:
435
+ - planned
436
+ - current
437
+ trigger:
438
+ - condition: missing-linkage
439
+ kinds:
440
+ - yarramate/core@0.1#realization
441
+ direction: incoming
442
+ counterpartKinds:
443
+ - yarramate/core@0.1#businessProcess
444
+ - yarramate/core@0.1#businessFunction
445
+ - yarramate/core@0.1#applicationService
446
+ - yarramate/core@0.1#applicationComponent
447
+ - yarramate/core@0.1#capability
448
+ question: >-
449
+ What actually delivers {subject.name}?
450
+ materiality: >-
451
+ A business service with no realizing behavior or application is a
452
+ promise with no mechanism; the gap is where delivery estimates go
453
+ wrong.
454
+ authority: either
455
+ resolution: >-
456
+ Add realization from the process, function, or application element
457
+ that delivers it.
458
+
459
+
460
+ # ---- application ---------------------------------------------------------
461
+ - id: app-service-unrealized
462
+ wave: application
463
+ scope: subject
464
+ subjects:
465
+ kinds:
466
+ - yarramate/core@0.1#applicationService
467
+ statuses:
468
+ - planned
469
+ - current
470
+ trigger:
471
+ - condition: missing-linkage
472
+ kinds:
473
+ - yarramate/core@0.1#realization
474
+ direction: incoming
475
+ counterpartKinds:
476
+ - yarramate/core@0.1#applicationComponent
477
+ - yarramate/core@0.1#applicationFunction
478
+ - yarramate/core@0.1#applicationProcess
479
+ - yarramate/core@0.1#applicationCollaboration
480
+ question: >-
481
+ Which component or behavior realizes {subject.name}?
482
+ materiality: >-
483
+ An application service with no realizer is interface without
484
+ implementation; implementers cannot be handed a slice that names no
485
+ mechanism.
486
+ authority: either
487
+ resolution: >-
488
+ Add realization from the component, function, or process that
489
+ implements the service.
490
+
491
+ - id: component-realizes-nothing
492
+ wave: application
493
+ scope: subject
494
+ subjects:
495
+ kinds:
496
+ - yarramate/core@0.1#applicationComponent
497
+ statuses:
498
+ - planned
499
+ - current
500
+ trigger:
501
+ - condition: missing-relationship
502
+ kinds:
503
+ - yarramate/core@0.1#realization
504
+ - yarramate/core@0.1#assignment
505
+ direction: outgoing
506
+ question: >-
507
+ What does {subject.name} contribute?
508
+ materiality: >-
509
+ A component that realizes and performs nothing is either missing its
510
+ purpose links or is inventory the build does not need.
511
+ authority: either
512
+ resolution: >-
513
+ Add realization to the services it implements or assignment to the
514
+ behavior it performs, or remove it.
515
+
516
+ - id: behavior-unassigned
517
+ wave: application
518
+ scope: subject
519
+ subjects:
520
+ kinds:
521
+ - yarramate/core@0.1#applicationFunction
522
+ - yarramate/core@0.1#applicationProcess
523
+ statuses:
524
+ - planned
525
+ - current
526
+ trigger:
527
+ - condition: missing-linkage
528
+ kinds:
529
+ - yarramate/core@0.1#assignment
530
+ direction: incoming
531
+ counterpartKinds:
532
+ - yarramate/core@0.1#applicationComponent
533
+ - yarramate/core@0.1#applicationCollaboration
534
+ - yarramate/core@0.1#businessActor
535
+ - yarramate/core@0.1#businessRole
536
+ question: >-
537
+ Who or what performs {subject.name}?
538
+ materiality: >-
539
+ Behavior with no performer cannot be placed in any component
540
+ boundary; it will be implemented wherever the first builder happens
541
+ to put it.
542
+ authority: either
543
+ resolution: >-
544
+ Add assignment from the component, collaboration, or actor that
545
+ performs the behavior.
546
+
547
+ - id: event-triggers-nothing
548
+ wave: application
549
+ scope: subject
550
+ subjects:
551
+ kinds:
552
+ - yarramate/core@0.1#applicationEvent
553
+ - yarramate/core@0.1#businessEvent
554
+ trigger:
555
+ - condition: missing-relationship
556
+ kinds:
557
+ - yarramate/core@0.1#triggering
558
+ direction: outgoing
559
+ question: >-
560
+ What responds to {subject.name}?
561
+ materiality: >-
562
+ An event that triggers nothing is either an unhandled condition —
563
+ a real design gap — or noise; deciding which changes the build.
564
+ authority: either
565
+ resolution: >-
566
+ Add triggering to the responding process or function, or remove the
567
+ event.
568
+
569
+ - id: information-unowned
570
+ wave: application
571
+ scope: subject
572
+ subjects:
573
+ kinds:
574
+ - yarramate/core@0.1#dataObject
575
+ - yarramate/core@0.1#businessObject
576
+ trigger:
577
+ - condition: missing-claim
578
+ predicate: yarramate/ownership/owner
579
+ question: >-
580
+ Who is accountable for {subject.name} — its meaning, retention, and
581
+ access?
582
+ materiality: >-
583
+ Unowned information has no one to adjudicate schema changes,
584
+ retention, or access disputes; ownership is where data governance
585
+ starts.
586
+ authority: human
587
+ resolution: >-
588
+ Add an owner reference to the accountable actor.
589
+
590
+ - id: planned-design-unattested
591
+ wave: application
592
+ scope: subject
593
+ subjects:
594
+ kinds:
595
+ - yarramate/core@0.1#businessService
596
+ - yarramate/core@0.1#applicationService
597
+ - yarramate/core@0.1#applicationComponent
598
+ statuses:
599
+ - planned
600
+ trigger:
601
+ - condition: missing-attestation
602
+ topic: design-review
603
+ question: >-
604
+ Has the design of {subject.name} been reviewed before it is built?
605
+ materiality: >-
606
+ A planned element carries every unbuilt decision; a recorded
607
+ design-review attestation is the difference between a reviewed
608
+ intention and a hopeful one.
609
+ authority: human
610
+ resolution: >-
611
+ Review the planned element's slice, then record an attestation with
612
+ topic "design-review" (revoke by deleting it when the design
613
+ changes).
614
+
615
+ # ---- hygiene -------------------------------------------------------------
616
+ - id: concept-isolated
617
+ wave: hygiene
618
+ scope: subject
619
+ subjects:
620
+ kinds:
621
+ - yarramate/core@0.1#capability
622
+ - yarramate/core@0.1#businessService
623
+ - yarramate/core@0.1#applicationService
624
+ - yarramate/core@0.1#applicationComponent
625
+ - yarramate/core@0.1#businessActor
626
+ - yarramate/core@0.1#dataObject
627
+ - yarramate/core@0.1#businessObject
628
+ trigger:
629
+ - condition: isolated
630
+ question: >-
631
+ {subject.name} relates to nothing. How does it participate in the
632
+ architecture — or should it be removed?
633
+ materiality: >-
634
+ An isolated concept either misses relationships the design depends on
635
+ or inflates the model with noise that dilutes trust.
636
+ authority: either
637
+ resolution: >-
638
+ Connect it with its real relationships or delete it; do not keep
639
+ unexplained inventory.
640
+
641
+ - id: concept-undescribed
642
+ wave: hygiene
643
+ scope: subject
644
+ subjects:
645
+ kinds:
646
+ - yarramate/core@0.1#businessService
647
+ - yarramate/core@0.1#applicationService
648
+ - yarramate/core@0.1#applicationComponent
649
+ - yarramate/core@0.1#capability
650
+ - yarramate/core@0.1#dataObject
651
+ trigger:
652
+ - condition: missing-claim
653
+ predicate: yarramate/concept/description
654
+ question: >-
655
+ What does {subject.name} mean — and what does it deliberately not
656
+ include?
657
+ materiality: >-
658
+ Undescribed subjects accumulate contradictory interpretations; the
659
+ description is where scope disputes are settled once.
660
+ authority: either
661
+ resolution: >-
662
+ Add a description claim stating meaning and explicit exclusions.
663
+
664
+ - id: status-missing
665
+ wave: hygiene
666
+ scope: subject
667
+ subjects:
668
+ kinds:
669
+ - yarramate/core@0.1#businessService
670
+ - yarramate/core@0.1#applicationService
671
+ - yarramate/core@0.1#applicationComponent
672
+ - yarramate/core@0.1#capability
673
+ trigger:
674
+ - condition: missing-claim
675
+ predicate: yarramate/lifecycle/status
676
+ question: >-
677
+ Is {subject.name} current, planned, or retired?
678
+ materiality: >-
679
+ Lifecycle status separates the architecture that exists from the one
680
+ that is intended; conflating them corrupts both discovery and design.
681
+ authority: either
682
+ resolution: >-
683
+ Add a lifecycle status claim; planned subjects should also appear in a
684
+ target architecture state where states are used.
685
+
686
+ - id: states-undefined
687
+ wave: hygiene
688
+ scope: workspace
689
+ trigger:
690
+ - condition: no-state-defined
691
+ question: >-
692
+ Does change shape matter here — should baseline, transition, or target
693
+ states be declared?
694
+ materiality: >-
695
+ Without architecture states, current and target intent share one
696
+ undifferentiated model and comparisons are impossible.
697
+ authority: human
698
+ resolution: >-
699
+ Declare architecture states and mark presence with present-in where the
700
+ distinction carries decisions; explicitly decline states otherwise.