@sdd-method/sdd-cli 0.100.0 → 0.101.1
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.
- package/dist/lib/catalogue/builders/application-data-plane-bindings.d.ts +1 -1
- package/dist/lib/catalogue/builders/application-data-plane-bindings.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/application-data-plane-bindings.js +17 -7
- package/dist/lib/catalogue/builders/application-data-plane-bindings.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +182 -128
- package/dist/lib/catalogue/data-plane-coherence.d.ts +5 -4
- package/dist/lib/catalogue/data-plane-coherence.d.ts.map +1 -1
- package/dist/lib/catalogue/data-plane-coherence.js +9 -6
- package/dist/lib/catalogue/data-plane-coherence.js.map +1 -1
- package/dist/lib/catalogue/manifest-loader.d.ts +12 -0
- package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/manifest-loader.js +19 -0
- package/dist/lib/catalogue/manifest-loader.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# app-baseline, integration-baseline) via the seed-file lists at
|
|
13
13
|
# docs/method/foundations/*-method-seed-files.txt. Consumers receive it
|
|
14
14
|
# through `sdd-cli sync`. Drift detection comes for free from the
|
|
15
|
-
# refuse-or-overwrite model in ADR 0114 — the schema is in
|
|
15
|
+
# refuse-or-overwrite model in M-ADR 0114 — the schema is in
|
|
16
16
|
# MANAGED_PATHS.txt; consumer-side modification fails the next sync.
|
|
17
17
|
#
|
|
18
18
|
# Schema versioning: every structural change increments schema_version.
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
# versions independently of sdd-manifest-schema.yaml and
|
|
21
21
|
# aggregation-manifest-schema.yaml. The CLI declares per-schema compat
|
|
22
22
|
# ranges in `src/lib/catalogue/schema-compat.ts` and fails fast on
|
|
23
|
-
# out-of-range versions. Per ADR 0133 the canonical builder + aggregator
|
|
23
|
+
# out-of-range versions. Per M-ADR 0133 the canonical builder + aggregator
|
|
24
24
|
# update in lockstep with this schema; with the canonical builder shipped
|
|
25
25
|
# from sdd-method, "lockstep" collapses to a single CLI version bump.
|
|
26
26
|
#
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
# MUST release in lockstep with `supports` updated; migration tooling
|
|
35
35
|
# required.
|
|
36
36
|
#
|
|
37
|
-
# Federation: per ADR 0134 catalogues are built per SDD and aggregated at
|
|
37
|
+
# Federation: per M-ADR 0134 catalogues are built per SDD and aggregated at
|
|
38
38
|
# the ecosystem root. Every node catalogue carries a `source_sdd_id`
|
|
39
39
|
# column populated by the aggregator. Foreign keys may declare
|
|
40
40
|
# `external: true` — these are skipped by the per-SDD builder (logged as
|
|
@@ -45,9 +45,51 @@
|
|
|
45
45
|
# Builder contract: see docs/method/methods/catalogue-builder-specification.md.
|
|
46
46
|
# Category taxonomy: see docs/method/methods/product-category-taxonomy.md.
|
|
47
47
|
|
|
48
|
-
schema_version: "2.
|
|
48
|
+
schema_version: "2.40.1"
|
|
49
49
|
schema_owner: "sdd-method"
|
|
50
50
|
schema_status: "canonical"
|
|
51
|
+
# Bump rationale (2.40.1 — description patch, 2026-07-24): prefixes the 75
|
|
52
|
+
# remaining bare `ADR NNNN` references in this file as `M-ADR NNNN` (M-ADR 0186
|
|
53
|
+
# §4.6 canonical origin prefixes). All 25 distinct numbers were verified to
|
|
54
|
+
# resolve to method ADRs; the hyphen form `ADR-NNNN` is left untouched, since it
|
|
55
|
+
# is the deliberately prefix-stripped catalogue identity token (M-ADR 0140 §4.1).
|
|
56
|
+
# validate-no-bare-adr.sh now PASSES repo-wide (579 files) — it had been red on
|
|
57
|
+
# this one file. Prose only: no column, enum, key or nullability changed. Patched
|
|
58
|
+
# rather than folded into 2.40.0 because 2.40.0 had already been published (in
|
|
59
|
+
# @sdd-method/sdd-cli 0.101.0), and two different byte-contents under one version
|
|
60
|
+
# string is the same silent divergence the digest hook exists to prevent.
|
|
61
|
+
# Bump rationale (2.40.0 — additive minor, per M-ADR 0193 §4.7, 2026-07-24):
|
|
62
|
+
# adds a derived `direction` column (inbound | output) to
|
|
63
|
+
# application_data_plane_bindings. §4.7 models the output side as a
|
|
64
|
+
# DISTINGUISHED SUB-SET of the `pattern` vocabulary, and names three rules that
|
|
65
|
+
# branch on direction — reconciliation with product_platform_dependencies is
|
|
66
|
+
# inbound-only, the archetype-default WARN must compare like with like, and the
|
|
67
|
+
# M-ADR 0187 convergence reasoning differs by direction. The catalogue could not
|
|
68
|
+
# express that distinction: consumers had to re-derive it by hardcoding the
|
|
69
|
+
# pattern→direction mapping, and any that forgot would silently reconcile an
|
|
70
|
+
# output-side binding as though it consumed something. `direction` materialises
|
|
71
|
+
# the sub-set the ADR already declares. Derived from `pattern` by a single
|
|
72
|
+
# method-tier mapping (not authored — it is not a manifest field), so it adds no
|
|
73
|
+
# authoring burden and cannot disagree with `pattern`. Deliberately NOT part of
|
|
74
|
+
# the primary key: identity is unchanged ({product_id}__{pattern}__{locality}__
|
|
75
|
+
# {target}), and a derived value adds nothing to it. Also corrects four
|
|
76
|
+
# descriptions left stale by 2.37.0/2.38.0: `pattern` and the deviations
|
|
77
|
+
# `expectation` token list both omitted generate/publish, `runtime` omitted
|
|
78
|
+
# generate from the compute-bearing set, and `locality` claimed only own-store
|
|
79
|
+
# may be empty. Backward-compatible; SCHEMA_COMPAT "^2.0.0".
|
|
80
|
+
# Bump rationale (2.35.0–2.39.0 — RESTORED to canonical 2026-07-24): these five
|
|
81
|
+
# versions were authored directly into sdd-cli's VENDORED copy and never landed
|
|
82
|
+
# here, leaving the canonical five versions behind while builders shipped
|
|
83
|
+
# against the newer shape — the exact silent divergence M-ADR 0133 §4.2's
|
|
84
|
+
# direction-of-truth rule (canonical -> vendored, never the reverse) exists to
|
|
85
|
+
# prevent. check-canonical-schema-digest.sh detects it when pointed at a
|
|
86
|
+
# consumer checkout. Restored content: 2.35.0 `surface` +
|
|
87
|
+
# `application_archetype` columns on products (M-ADR 0167 / 0191); 2.36.0
|
|
88
|
+
# conditionally-nullable target_service_id on product_platform_dependencies
|
|
89
|
+
# (M-ADR 0192 async shared-stream); 2.37.0 application_data_plane_bindings
|
|
90
|
+
# (M-ADR 0193); 2.38.0 application_data_plane_deviations (M-ADR 0191 §4.3
|
|
91
|
+
# overlay); 2.39.0 application_conformance_coverage (§4.3 WS4). No content is
|
|
92
|
+
# newly decided here — this records where it came from.
|
|
51
93
|
# Bump rationale (2.34.0 — additive minor, per M-ADR 0189 F26 §3, ratified
|
|
52
94
|
# 2026-07-10): adds the `persona_container` edge — the L2-granularity
|
|
53
95
|
# companion to persona_c4system. Person→Container Rels are drawn routinely
|
|
@@ -148,7 +190,7 @@ schema_status: "canonical"
|
|
|
148
190
|
# have broken it silently. Backward-compatible; SCHEMA_COMPAT stays "^2.0.0".
|
|
149
191
|
# Bump rationale (2.26.0 — additive minor, per the repo-registry federation,
|
|
150
192
|
# 2026-06-18): marks `repo_contract.contract_id` external_for_profiles
|
|
151
|
-
# [application-product, integration-product]. Per ADR 0147 a repo's
|
|
193
|
+
# [application-product, integration-product]. Per M-ADR 0147 a repo's
|
|
152
194
|
# service-architecture external interfaces are a contract-CONSUMES source; an
|
|
153
195
|
# app/integration repo legitimately consumes a platform-resident contract (and,
|
|
154
196
|
# transitionally, its own BFF contract still held by the platform SDD before
|
|
@@ -165,7 +207,7 @@ schema_status: "canonical"
|
|
|
165
207
|
# 14 app SDDs hold screens but zero local feature specs). The per-SDD app build emits
|
|
166
208
|
# the edge carrying the bare realises slug and logs it [finding] external; the
|
|
167
209
|
# aggregator resolves the slug to the platform feature id (one slug vocabulary
|
|
168
|
-
# per capability — ADR 0177; ambiguous estate-wide matches are refused with a
|
|
210
|
+
# per capability — M-ADR 0177; ambiguous estate-wide matches are refused with a
|
|
169
211
|
# divergence finding, never guessed). Forward/app-owned estates are unaffected
|
|
170
212
|
# (the feature resolves locally → internal pass). Additive minor — the FK
|
|
171
213
|
# field is optional and SCHEMA_COMPAT stays "^2.0.0".
|
|
@@ -173,7 +215,7 @@ schema_status: "canonical"
|
|
|
173
215
|
# coordination item R5, 2026-06-13): adds an optional `external_for_profiles`
|
|
174
216
|
# array to FK rules and applies it to `capabilities.domain_id`. An app- or
|
|
175
217
|
# integration-product SDD legitimately names a platform-resident domain
|
|
176
|
-
# (ADR 0136: app/integration SDDs own no domains.csv rows), so the per-SDD
|
|
218
|
+
# (M-ADR 0136: app/integration SDDs own no domains.csv rows), so the per-SDD
|
|
177
219
|
# build cannot resolve that FK locally — yet the platform SDD genuinely owns
|
|
178
220
|
# its domains and SHOULD keep the local check. `external_for_profiles:
|
|
179
221
|
# [application-product, integration-product]` makes the FK behave external
|
|
@@ -193,7 +235,7 @@ schema_status: "canonical"
|
|
|
193
235
|
# separate column from `status` (documentation maturity) — a product can be
|
|
194
236
|
# reviewed AND deprecated. Backward-compatible — older readers ignore them;
|
|
195
237
|
# SCHEMA_COMPAT stays at "^2.0.0".
|
|
196
|
-
# Bump rationale (2.20.0 — additive minor, per ADR 0175): adds a nullable,
|
|
238
|
+
# Bump rationale (2.20.0 — additive minor, per M-ADR 0175): adds a nullable,
|
|
197
239
|
# free-form `evidence_class` column to `capabilities`, `contracts`,
|
|
198
240
|
# `domain_models`, `entities`, `events` — an evidence-class marker for the
|
|
199
241
|
# documentation-reverse method (packaged-SaaS / vendor-base packs). Free-form
|
|
@@ -206,7 +248,7 @@ schema_status: "canonical"
|
|
|
206
248
|
# entities, inherited file-level), and per-event `evidence_class` with a
|
|
207
249
|
# file-level fallback in event-catalog.yaml (events). Backward-compatible —
|
|
208
250
|
# older readers ignore it; SCHEMA_COMPAT stays at "^2.0.0".
|
|
209
|
-
# Bump rationale (2.19.0 — additive minor, per ADR 0170 §4.6): adds a nullable,
|
|
251
|
+
# Bump rationale (2.19.0 — additive minor, per M-ADR 0170 §4.6): adds a nullable,
|
|
210
252
|
# free-form `context` column to `screens`, `contracts`, `services`, `entities` —
|
|
211
253
|
# a bounded-context membership marker (adopter-defined values; not an FK, the
|
|
212
254
|
# `group`/`source` free-form pattern). Lets a consumer that spans multiple
|
|
@@ -215,9 +257,9 @@ schema_status: "canonical"
|
|
|
215
257
|
# contracts `info.x-context`); `services`/`entities` carry the column but await a
|
|
216
258
|
# derivation source. Backward-compatible — older readers ignore it; SCHEMA_COMPAT
|
|
217
259
|
# stays at "^2.0.0".
|
|
218
|
-
# Bump rationale (2.15.0 — additive minor, per ADR 0161): adds a new edge
|
|
260
|
+
# Bump rationale (2.15.0 — additive minor, per M-ADR 0161): adds a new edge
|
|
219
261
|
# catalogue `feature_event` materialising the (feature, event, role) edge
|
|
220
|
-
# via the derived join `feature_service ⋈ service_event`. Mirrors ADR 0160's
|
|
262
|
+
# via the derived join `feature_service ⋈ service_event`. Mirrors M-ADR 0160's
|
|
221
263
|
# capability_event derived-source pattern at the feature level, completing
|
|
222
264
|
# the capability/feature/service trio of materialised event edges. No
|
|
223
265
|
# authored shape — every row carries `source=derived`. Backward-compatible —
|
|
@@ -226,7 +268,7 @@ schema_status: "canonical"
|
|
|
226
268
|
# ─── Canonical enums ────────────────────────────────────────────────────────
|
|
227
269
|
#
|
|
228
270
|
# Enums constrain the values certain string columns may take. The canonical
|
|
229
|
-
# builder (sdd-cli catalogue build, per ADR 0134 §4.6) reads these from the
|
|
271
|
+
# builder (sdd-cli catalogue build, per M-ADR 0134 §4.6) reads these from the
|
|
230
272
|
# schema rather than hardcoding them, so adopters can update the canonical
|
|
231
273
|
# enum here without forking builder code.
|
|
232
274
|
|
|
@@ -254,7 +296,7 @@ enums:
|
|
|
254
296
|
c4_container_type:
|
|
255
297
|
description: >
|
|
256
298
|
Canonical C4 container kind for `c4_containers.type`, aligned with
|
|
257
|
-
c4model.com/abstractions (per ADR 0155). A C4 container is something
|
|
299
|
+
c4model.com/abstractions (per M-ADR 0155). A C4 container is something
|
|
258
300
|
that must be running for the system to work — an application or a
|
|
259
301
|
data store.
|
|
260
302
|
|
|
@@ -358,7 +400,7 @@ catalogues:
|
|
|
358
400
|
- { name: reference_architecture_equivalent, type: string, nullable: true }
|
|
359
401
|
- { name: status, type: string, nullable: false, description: "active | deferred | absent. The builder emits 'active' for every discovered domain directory — a domain that exists on disk is active by definition; deferred/absent rows have no authoring source yet (would come from roadmap/archetype declarations, not discovery)." }
|
|
360
402
|
- { name: repo_count, type: int, nullable: false }
|
|
361
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator at merge time per ADR 0134; left empty by per-SDD builders." }
|
|
403
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator at merge time per M-ADR 0134; left empty by per-SDD builders." }
|
|
362
404
|
|
|
363
405
|
products: &products_def
|
|
364
406
|
primary_key: id
|
|
@@ -367,7 +409,7 @@ catalogues:
|
|
|
367
409
|
columns:
|
|
368
410
|
- { name: id, type: string, nullable: false, description: "product_id slug." }
|
|
369
411
|
- { name: name, type: string, nullable: false }
|
|
370
|
-
- { name: domain_id, type: string, nullable: true, description: "Owning capability domain. Populated for platform-profile products (platform-root, platform-subsystem). App and integration products do not have a primary domain — see ADR 0136." }
|
|
412
|
+
- { name: domain_id, type: string, nullable: true, description: "Owning capability domain. Populated for platform-profile products (platform-root, platform-subsystem). App and integration products do not have a primary domain — see M-ADR 0136." }
|
|
371
413
|
- { name: profile, type: string, nullable: false, description: "platform-profile | application-product | integration-product | support-repo." }
|
|
372
414
|
- { name: category, type: string, nullable: true, description: "Architectural classification per docs/method/methods/product-category-taxonomy.md. Values: platform-root | platform-subsystem | application-product | integration-provider | integration-umbrella | support-repo. Determines whether the Product gets a c4_systems row." }
|
|
373
415
|
- { name: doc_path, type: string, nullable: false, description: "Path to _product/ directory, relative to docs/." }
|
|
@@ -376,13 +418,13 @@ catalogues:
|
|
|
376
418
|
- { name: deprecated_date, type: date, nullable: true, description: "Date the deprecation decision took effect. Only meaningful when lifecycle=deprecated. From the manifest's deprecated_date:. Added in 2.22.0." }
|
|
377
419
|
- { name: successor_sdd_id, type: string, nullable: true, description: "For deprecated products: sdd_id of the superseding SDD. Same vocabulary as sdd_id/source_sdd_id (NOT products.id). Soft reference — the aggregator orphan-checks it against contributing sdd_ids ([finding] orphan when unresolved), never a hard FK: the successor may live outside the aggregation scope. Added in 2.22.0." }
|
|
378
420
|
- { name: surface, type: string, nullable: true, description: "ui | api (empty for non-application-product). Application-product surface trait from the manifest's surface: field (M-ADR 0167, sdd-manifest-schema 1.2.0). Empty on non-application products. Added in 2.35.0." }
|
|
379
|
-
- { name: application_archetype, type: string, nullable: true, description: "Application-product shape classification from the manifest's application_archetype: field (M-ADR 0191, sdd-manifest-schema 1.2.0). Resolved-enum over a tiered vocabulary (method: unclassified; reference-architecture bundle; adopter). Defaults to 'unclassified' for application-product (with a coverage finding), empty for other profiles. Distinct from the ADR 0173 domain archetype and ADR 0169 openui archetype. Added in 2.35.0." }
|
|
421
|
+
- { name: application_archetype, type: string, nullable: true, description: "Application-product shape classification from the manifest's application_archetype: field (M-ADR 0191, sdd-manifest-schema 1.2.0). Resolved-enum over a tiered vocabulary (method: unclassified; reference-architecture bundle; adopter). Defaults to 'unclassified' for application-product (with a coverage finding), empty for other profiles. Distinct from the M-ADR 0173 domain archetype and M-ADR 0169 openui archetype. Added in 2.35.0." }
|
|
380
422
|
- { name: synthesis_quality, type: int, nullable: true, description: "Score 0-10 from assessment block (reverse method only)." }
|
|
381
423
|
- { name: synthesis_band, type: string, nullable: true, description: "developing | working | strong." }
|
|
382
424
|
- { name: last_assessed, type: date, nullable: true }
|
|
383
425
|
- { name: highest_snapshot_impact, type: string, nullable: true }
|
|
384
426
|
- { name: repo_count, type: int, nullable: false, description: "Number of repos mapped to this product." }
|
|
385
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
427
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
386
428
|
|
|
387
429
|
applications:
|
|
388
430
|
<<: *products_def
|
|
@@ -390,19 +432,19 @@ catalogues:
|
|
|
390
432
|
|
|
391
433
|
integrations:
|
|
392
434
|
primary_key: id
|
|
393
|
-
description: "Granular provider adapters. Each row is either (a) an integration-product SDD's own row (one per SDD; parent_product_id empty), or (b) a manifest-declared sub-integration of a multi-provider monolith (parent_product_id = umbrella SDD's id). Per ADR 0144 (schema 2.6.0), sub-integrations are declared via the optional `sub_integrations:` array in `integration-manifest.yaml`."
|
|
435
|
+
description: "Granular provider adapters. Each row is either (a) an integration-product SDD's own row (one per SDD; parent_product_id empty), or (b) a manifest-declared sub-integration of a multi-provider monolith (parent_product_id = umbrella SDD's id). Per M-ADR 0144 (schema 2.6.0), sub-integrations are declared via the optional `sub_integrations:` array in `integration-manifest.yaml`."
|
|
394
436
|
foreign_keys:
|
|
395
437
|
- { column: domain_id, references: domains.id, nullable: true }
|
|
396
438
|
- { column: parent_product_id, references: products.id, nullable: true }
|
|
397
439
|
columns:
|
|
398
440
|
- { name: id, type: string, nullable: false, description: "Provider slug." }
|
|
399
441
|
- { name: name, type: string, nullable: false }
|
|
400
|
-
- { name: domain_id, type: string, nullable: true, description: "Provider adapters are federation nodes, not capability-domain members. Left empty per ADR 0136." }
|
|
401
|
-
- { name: parent_product_id, type: string, nullable: true, description: "Umbrella integration-product. Empty for an SDD's own row; set to the SDD's integrationId for sub-integration rows declared via integration-manifest.yaml `sub_integrations:` (per ADR 0144, schema 2.6.0)." }
|
|
442
|
+
- { name: domain_id, type: string, nullable: true, description: "Provider adapters are federation nodes, not capability-domain members. Left empty per M-ADR 0136." }
|
|
443
|
+
- { name: parent_product_id, type: string, nullable: true, description: "Umbrella integration-product. Empty for an SDD's own row; set to the SDD's integrationId for sub-integration rows declared via integration-manifest.yaml `sub_integrations:` (per M-ADR 0144, schema 2.6.0)." }
|
|
402
444
|
- { name: category, type: string, nullable: false, description: "oem | device | fleet | camera | legacy | data-sharing | gateway-framework (extensible per ecosystem)." }
|
|
403
445
|
- { name: doc_path, type: string, nullable: false }
|
|
404
446
|
- { name: repo_count, type: int, nullable: false }
|
|
405
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
447
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
406
448
|
|
|
407
449
|
adrs:
|
|
408
450
|
primary_key: id
|
|
@@ -419,7 +461,7 @@ catalogues:
|
|
|
419
461
|
- { name: superseded_by_id, type: string, nullable: true }
|
|
420
462
|
- { name: inference_confidence, type: string, nullable: true, description: "high | medium | low (reverse-inferred ADRs only)." }
|
|
421
463
|
- { name: supersedes_raw, type: string, nullable: true, description: "Raw text from Supersedes bullet for later parsing." }
|
|
422
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
464
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
423
465
|
|
|
424
466
|
glossary_items:
|
|
425
467
|
primary_key: id
|
|
@@ -435,11 +477,11 @@ catalogues:
|
|
|
435
477
|
- { name: aliases, type: string, nullable: true, description: "';'-separated list." }
|
|
436
478
|
- { name: evidence, type: string, nullable: true }
|
|
437
479
|
- { name: notes, type: string, nullable: true }
|
|
438
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
480
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
439
481
|
|
|
440
482
|
glossary_xref:
|
|
441
483
|
primary_key: id
|
|
442
|
-
description: "Edge: cross-domain glossary relationships from glossary-alignment-manifest.yaml. Per ADR 0158, four walkers ingest into this catalogue: (a) forward declared pair-form {source, target} entries under aliases/conflicts, (b) reverse-method cross_domain_terms (emits references edges per referencer→owner), (c) reverse-method multi-domain conflicts (pair-wise expansion across domains[]), (d) forward-method supersedes (status: superseded entries with superseded_by back-link)."
|
|
484
|
+
description: "Edge: cross-domain glossary relationships from glossary-alignment-manifest.yaml. Per M-ADR 0158, four walkers ingest into this catalogue: (a) forward declared pair-form {source, target} entries under aliases/conflicts, (b) reverse-method cross_domain_terms (emits references edges per referencer→owner), (c) reverse-method multi-domain conflicts (pair-wise expansion across domains[]), (d) forward-method supersedes (status: superseded entries with superseded_by back-link)."
|
|
443
485
|
foreign_keys:
|
|
444
486
|
- { column: source_id, references: glossary_items.id, nullable: false }
|
|
445
487
|
- { column: target_id, references: glossary_items.id, nullable: false }
|
|
@@ -447,11 +489,11 @@ catalogues:
|
|
|
447
489
|
- { name: id, type: string, nullable: false, description: "Composite: {source_id}__{relation}__{target_id}." }
|
|
448
490
|
- { name: source_id, type: string, nullable: false }
|
|
449
491
|
- { name: target_id, type: string, nullable: false }
|
|
450
|
-
- { name: relation, type: string, nullable: false, description: "alias-of | conflicts-with | references | supersedes (extended in schema 2.12.0 per ADR 0158)." }
|
|
492
|
+
- { name: relation, type: string, nullable: false, description: "alias-of | conflicts-with | references | supersedes (extended in schema 2.12.0 per M-ADR 0158)." }
|
|
451
493
|
|
|
452
494
|
entity_glossary:
|
|
453
495
|
primary_key: id
|
|
454
|
-
description: "Edge: data-model entity → canonical glossary term. Added in schema 2.12.0 per ADR 0158. Source: glossary-alignment-manifest.yaml `models[].entities[]` with status ∈ {aligned, matched_direct} and non-empty glossary_term. PK derives from (domain, entity_name, glossary_item) so same-domain multi-diagram entries collapse to one row; cross-domain entries (e.g. platform-wide conceptual model + domain-specific model) emit one row per domain — legitimate cross-level cataloguing."
|
|
496
|
+
description: "Edge: data-model entity → canonical glossary term. Added in schema 2.12.0 per M-ADR 0158. Source: glossary-alignment-manifest.yaml `models[].entities[]` with status ∈ {aligned, matched_direct} and non-empty glossary_term. PK derives from (domain, entity_name, glossary_item) so same-domain multi-diagram entries collapse to one row; cross-domain entries (e.g. platform-wide conceptual model + domain-specific model) emit one row per domain — legitimate cross-level cataloguing."
|
|
455
497
|
foreign_keys:
|
|
456
498
|
- { column: domain_id, references: domains.id, nullable: false }
|
|
457
499
|
- { column: glossary_item_id, references: glossary_items.id, nullable: false }
|
|
@@ -461,7 +503,7 @@ catalogues:
|
|
|
461
503
|
- { name: entity_name, type: string, nullable: false }
|
|
462
504
|
- { name: glossary_item_id, type: string, nullable: false }
|
|
463
505
|
- { name: status, type: string, nullable: false, description: "aligned | matched_direct. Conflicting statuses within a domain resolve matched_direct > aligned with a divergence finding." }
|
|
464
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
506
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
465
507
|
|
|
466
508
|
services:
|
|
467
509
|
primary_key: id
|
|
@@ -473,16 +515,16 @@ catalogues:
|
|
|
473
515
|
- { name: id, type: string, nullable: false, description: "Service id, derived from artifact_id where artifact_type=service." }
|
|
474
516
|
- { name: name, type: string, nullable: false }
|
|
475
517
|
- { name: product_id, type: string, nullable: false }
|
|
476
|
-
- { name: domain_id, type: string, nullable: true, description: "Owning capability domain. Populated when the repo-config declared domain resolves to a docs/domains/<slug>/ in the local SDD; left empty otherwise per ADR 0136." }
|
|
518
|
+
- { name: domain_id, type: string, nullable: true, description: "Owning capability domain. Populated when the repo-config declared domain resolves to a docs/domains/<slug>/ in the local SDD; left empty otherwise per M-ADR 0136." }
|
|
477
519
|
- { name: primary_repo_id, type: string, nullable: true, description: "Main contributing repo. Nullable when service spans repos." }
|
|
478
520
|
- { name: runtime_type, type: string, nullable: true, description: "serverless-framework | jvm-service | lambda | k8s | ..." }
|
|
479
521
|
- { name: language, type: string, nullable: true }
|
|
480
522
|
- { name: component_type, type: string, nullable: true, description: "bff | api | consumer | ui | collector | processor | ..." }
|
|
481
523
|
- { name: status, type: string, nullable: true, description: "production-wired | non-production | library." }
|
|
482
524
|
- { name: confidence, type: string, nullable: true, description: "high | medium | low (reverse-method classification)." }
|
|
483
|
-
- { name: context, type: string, nullable: true, description: "Bounded-context membership (per ADR 0170 §4.6). Free-form adopter label, orthogonal to domain_id. Not an FK. Carried for forward-parity; awaits a derivation source (e.g. from the service's contracts' x-context). Added in schema 2.19.0." }
|
|
525
|
+
- { name: context, type: string, nullable: true, description: "Bounded-context membership (per M-ADR 0170 §4.6). Free-form adopter label, orthogonal to domain_id. Not an FK. Carried for forward-parity; awaits a derivation source (e.g. from the service's contracts' x-context). Added in schema 2.19.0." }
|
|
484
526
|
- { name: description, type: string, nullable: true }
|
|
485
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
527
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
486
528
|
column_enums:
|
|
487
529
|
component_type: enums.service_type # canonical builder validates against the service_type enum above
|
|
488
530
|
|
|
@@ -490,7 +532,7 @@ catalogues:
|
|
|
490
532
|
primary_key: id
|
|
491
533
|
foreign_keys:
|
|
492
534
|
# external_for_profiles (2.23.0): app/integration capabilities name a
|
|
493
|
-
# platform-resident domain (ADR 0136) — resolve at aggregation for those
|
|
535
|
+
# platform-resident domain (M-ADR 0136) — resolve at aggregation for those
|
|
494
536
|
# profiles, keep the local check for platform-profile. Required-ness is
|
|
495
537
|
# unchanged: a capability must still name a domain (nullable: false).
|
|
496
538
|
- { column: domain_id, references: domains.id, nullable: false, external_for_profiles: [application-product, integration-product] }
|
|
@@ -501,8 +543,8 @@ catalogues:
|
|
|
501
543
|
- { name: domain_id, type: string, nullable: false }
|
|
502
544
|
- { name: tree_category, type: string, nullable: true, description: "Top-level grouping when capability comes from a capability tree (reverse)." }
|
|
503
545
|
- { name: parent_capability_id, type: string, nullable: true }
|
|
504
|
-
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the capability's claims, from `capability.evidence_class` in the traceability manifest. Free-form; conventional values code-reverse | vendor-doc | operational (ADR 0175). Empty when undeclared. Added in schema 2.20.0." }
|
|
505
|
-
- { name: context, type: string, nullable: true, description: "Bounded-context membership from `capability.context` in the traceability manifest (per ADR 0170 §4.6) — completes the context dimension across screens/contracts/services/entities (2.19.0). Free-form adopter label, orthogonal to domain_id. Not an FK. Enables the screen↔capability context cross-check (convention finding, not FK). Empty when undeclared. Added in schema 2.21.0." }
|
|
546
|
+
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the capability's claims, from `capability.evidence_class` in the traceability manifest. Free-form; conventional values code-reverse | vendor-doc | operational (M-ADR 0175). Empty when undeclared. Added in schema 2.20.0." }
|
|
547
|
+
- { name: context, type: string, nullable: true, description: "Bounded-context membership from `capability.context` in the traceability manifest (per M-ADR 0170 §4.6) — completes the context dimension across screens/contracts/services/entities (2.19.0). Free-form adopter label, orthogonal to domain_id. Not an FK. Enables the screen↔capability context cross-check (convention finding, not FK). Empty when undeclared. Added in schema 2.21.0." }
|
|
506
548
|
- { name: description, type: string, nullable: true }
|
|
507
549
|
- { name: status, type: string, nullable: false, description: "active | planned | deprecated. Default 'active'." }
|
|
508
550
|
- { name: spec_path, type: string, nullable: true, description: "Path to capability spec file when one exists." }
|
|
@@ -510,7 +552,7 @@ catalogues:
|
|
|
510
552
|
- { name: runway_classification, type: string, nullable: true, description: "Business | Enabler-Runway | Hybrid (forward declares; reverse nullable until backfilled)." }
|
|
511
553
|
- { name: data_subset, type: string, nullable: true, description: "Keying-axis marker for foundational-tier / synthesis-tier capabilities whose evidence is keyed by ownership boundary or data subset rather than app group. Populated from `capability.data_subset` in the traceability manifest. Empty for implementing-tier capabilities (those use app_group on per-evidence rows). See `docs/method/methods/reverse/rubrics/reverse-platform-evidence-quality.md` §`app_group:` → `data_subset:` rename. Added in schema 2.9.0." }
|
|
512
554
|
- { name: slice_scope, type: string, nullable: true, description: "Per-slice marker when one capability legitimately covers multiple app groups or data subsets (e.g. a compliance capability spanning several regulated-fleet sub-groups). Same capability_id may appear across multiple rows when sliced; row identity is then `(id, slice_scope)`. Empty when the capability is not sliced. Per-slice AC numbering convention: AC1-ACN unsuffixed for the first slice; subsequent slices use AC numbering suffixed by slice. See `docs/method/methods/reverse/rubrics/reverse-platform-evidence-quality.md` §`slice_scope:` and `docs/method/methods/capability-spec-template.md` Guideline 9. Added in schema 2.9.0." }
|
|
513
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
555
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
514
556
|
|
|
515
557
|
feature_groups:
|
|
516
558
|
primary_key: id
|
|
@@ -535,7 +577,7 @@ catalogues:
|
|
|
535
577
|
- { name: parent_group_id, type: string, nullable: true, description: "Self-reference for nested groups (H3 within H2)." }
|
|
536
578
|
- { name: description, type: string, nullable: true, description: "Authored description (when group has explicit metadata) or null when derived from heading only." }
|
|
537
579
|
- { name: source, type: string, nullable: false, description: "feature-tree-h2 | feature-tree-h3 | feature-spec-explicit (when an authored feature spec declares group membership) | capability-spec-explicit." }
|
|
538
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
580
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
539
581
|
|
|
540
582
|
features:
|
|
541
583
|
primary_key: id
|
|
@@ -554,9 +596,9 @@ catalogues:
|
|
|
554
596
|
- { name: description, type: string, nullable: true }
|
|
555
597
|
- { name: maturity, type: string, nullable: true, description: "Standard: working | provisional | unknown | absent. Ecosystem-specific values may be added with parser awareness." }
|
|
556
598
|
- { name: status, type: string, nullable: false, description: "Default 'active'." }
|
|
557
|
-
- { name: source, type: string, nullable: false, description: "feature-tree | feature-set | capability-spec | feature-spec | feature-grounding. NOTE: feature-tree-group source removed in 1.3.0 — groups are now first-class in feature_groups.csv. As of schema 2.2.0, source: feature-tree is emitted by the canonical builder for rows derived from feature-tree.md bullets. As of schema 2.5.0, source: feature-grounding is emitted for rows derived from `docs/domains/<dom>/design/<capability>/feature-grounding.md` markdown tables (per ADR 0143). As of schema 2.7.0, source: capability-spec is emitted by the canonical builder for rows derived from `## Feature Grounding (code-path trace)` tables in `docs/domains/<dom>/product/<capability>.md` capability spec markdown (per ADR 0145). Feature-grounding and capability-spec rows are both capability-owned: product_id is empty; capability_id resolves from the file path." }
|
|
599
|
+
- { name: source, type: string, nullable: false, description: "feature-tree | feature-set | capability-spec | feature-spec | feature-grounding. NOTE: feature-tree-group source removed in 1.3.0 — groups are now first-class in feature_groups.csv. As of schema 2.2.0, source: feature-tree is emitted by the canonical builder for rows derived from feature-tree.md bullets. As of schema 2.5.0, source: feature-grounding is emitted for rows derived from `docs/domains/<dom>/design/<capability>/feature-grounding.md` markdown tables (per M-ADR 0143). As of schema 2.7.0, source: capability-spec is emitted by the canonical builder for rows derived from `## Feature Grounding (code-path trace)` tables in `docs/domains/<dom>/product/<capability>.md` capability spec markdown (per M-ADR 0145). Feature-grounding and capability-spec rows are both capability-owned: product_id is empty; capability_id resolves from the file path." }
|
|
558
600
|
- { name: runway, type: string, nullable: true, description: "Optional adopter-owned lifecycle / migration marker. Free string at method level — the schema declares no enum and ships no controlled vocabulary. Adopters MAY declare a per-SDD `feature-runway-vocabulary.yaml` at their SDD root; when present, the canonical builder validates captured values against it and emits a `convention` finding for unknown values. Empty when the adopter does not track migration state. Comparability across SDDs requires ecosystem-level vocabulary alignment as an explicit pre-step. Added in schema 2.2.0." }
|
|
559
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
601
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
560
602
|
|
|
561
603
|
personas:
|
|
562
604
|
primary_key: id
|
|
@@ -568,7 +610,7 @@ catalogues:
|
|
|
568
610
|
- { name: product_id, type: string, nullable: false }
|
|
569
611
|
- { name: role, type: string, nullable: true }
|
|
570
612
|
- { name: description, type: string, nullable: true }
|
|
571
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
613
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
572
614
|
|
|
573
615
|
user_journeys:
|
|
574
616
|
primary_key: id
|
|
@@ -582,7 +624,7 @@ catalogues:
|
|
|
582
624
|
- { name: supporting_personas, type: string, nullable: true }
|
|
583
625
|
- { name: trigger, type: string, nullable: true }
|
|
584
626
|
- { name: goal, type: string, nullable: true }
|
|
585
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
627
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
586
628
|
|
|
587
629
|
contracts:
|
|
588
630
|
primary_key: id
|
|
@@ -593,20 +635,20 @@ catalogues:
|
|
|
593
635
|
- { name: id, type: string, nullable: false }
|
|
594
636
|
- { name: name, type: string, nullable: false, description: "Display name from info.title or artifact_id." }
|
|
595
637
|
- { name: service_id, type: string, nullable: true, description: "Exposing service; resolved via primary_repo_id ↔ OpenAPI x-source-repo." }
|
|
596
|
-
- { name: source_repo_id, type: string, nullable: true, description: "Repo owning the contract source. Distinct from exposing service's repo per ADR 0110 (sibling-repo pattern)." }
|
|
638
|
+
- { name: source_repo_id, type: string, nullable: true, description: "Repo owning the contract source. Distinct from exposing service's repo per M-ADR 0110 (sibling-repo pattern)." }
|
|
597
639
|
- { name: kind, type: string, nullable: false, description: "rest | graphql | rpc | event. rpc covers Proto/gRPC; event covers Avro schemas." }
|
|
598
640
|
- { name: version, type: string, nullable: true }
|
|
599
|
-
- { name: status, type: string, nullable: false, description: "active | deprecated. Default 'active'. As of 2.22.0 the builder wires 'deprecated' from BASELINE.md deprecation-runway entries (contracts.{openapi|proto|avro}[].status, matched on path == spec_path; per ADR 0073 §4.8) when a BASELINE.md exists at the SDD root." }
|
|
641
|
+
- { name: status, type: string, nullable: false, description: "active | deprecated. Default 'active'. As of 2.22.0 the builder wires 'deprecated' from BASELINE.md deprecation-runway entries (contracts.{openapi|proto|avro}[].status, matched on path == spec_path; per M-ADR 0073 §4.8) when a BASELINE.md exists at the SDD root." }
|
|
600
642
|
- { name: spec_path, type: string, nullable: true }
|
|
601
643
|
- { name: visibility, type: string, nullable: true, description: "public | private | internal." }
|
|
602
|
-
- { name: context, type: string, nullable: true, description: "Bounded-context membership from OpenAPI `info.x-context` (per ADR 0170 §4.6). Free-form adopter label, orthogonal to the contract's domain folder. Not an FK. Empty when untagged. Added in schema 2.19.0." }
|
|
603
|
-
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the contract surface, from OpenAPI `info.x-evidence-class` (document root accepted as fallback, exactly like x-context). Free-form; conventional values code-reverse | vendor-doc | operational (ADR 0175). Empty when untagged. Added in schema 2.20.0." }
|
|
644
|
+
- { name: context, type: string, nullable: true, description: "Bounded-context membership from OpenAPI `info.x-context` (per M-ADR 0170 §4.6). Free-form adopter label, orthogonal to the contract's domain folder. Not an FK. Empty when untagged. Added in schema 2.19.0." }
|
|
645
|
+
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the contract surface, from OpenAPI `info.x-evidence-class` (document root accepted as fallback, exactly like x-context). Free-form; conventional values code-reverse | vendor-doc | operational (M-ADR 0175). Empty when untagged. Added in schema 2.20.0." }
|
|
604
646
|
- { name: description, type: string, nullable: true }
|
|
605
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
647
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
606
648
|
|
|
607
649
|
events:
|
|
608
650
|
primary_key: id
|
|
609
|
-
description: "Asynchronous messages. Cross-domain events (e.g. shared envelopes) leave domain_id empty. Per ADR 0156 (multi-source ingestion, schema 2.12.0): forward-method canonical source is `contracts/avro/*.avsc` files; reverse-method canonical source is `docs/domains/{domain}/contracts/events/event-catalog.yaml`. YAML wins on name/domain/publisher/transport/consumers; avsc augments schema_path/version. Both paths run and merge by id slug."
|
|
651
|
+
description: "Asynchronous messages. Cross-domain events (e.g. shared envelopes) leave domain_id empty. Per M-ADR 0156 (multi-source ingestion, schema 2.12.0): forward-method canonical source is `contracts/avro/*.avsc` files; reverse-method canonical source is `docs/domains/{domain}/contracts/events/event-catalog.yaml`. YAML wins on name/domain/publisher/transport/consumers; avsc augments schema_path/version. Both paths run and merge by id slug."
|
|
610
652
|
foreign_keys:
|
|
611
653
|
- { column: publisher_service_id, references: services.id, nullable: true }
|
|
612
654
|
- { column: domain_id, references: domains.id, nullable: true }
|
|
@@ -615,11 +657,11 @@ catalogues:
|
|
|
615
657
|
- { name: name, type: string, nullable: false }
|
|
616
658
|
- { name: publisher_service_id, type: string, nullable: true }
|
|
617
659
|
- { name: domain_id, type: string, nullable: true }
|
|
618
|
-
- { name: transport, type: string, nullable: true, description: "Open string per ADR 0156. Recommended values: kafka | sns | sqs | kinesis | eventbridge | mongodb-change-stream | nats | activemq | rabbitmq | jms | other. Values outside the recommended set emit [finding] convention." }
|
|
619
|
-
- { name: schema_path, type: string, nullable: true, description: "Path to event schema (Avro .avsc or JSON-Schema .json/.schema.json). Nullable — leave empty for loosely-typed events (e.g. ActiveMQ JMS, NATS with payload_schema: {type: object}). Per ADR 0156." }
|
|
660
|
+
- { name: transport, type: string, nullable: true, description: "Open string per M-ADR 0156. Recommended values: kafka | sns | sqs | kinesis | eventbridge | mongodb-change-stream | nats | activemq | rabbitmq | jms | other. Values outside the recommended set emit [finding] convention." }
|
|
661
|
+
- { name: schema_path, type: string, nullable: true, description: "Path to event schema (Avro .avsc or JSON-Schema .json/.schema.json). Nullable — leave empty for loosely-typed events (e.g. ActiveMQ JMS, NATS with payload_schema: {type: object}). Per M-ADR 0156." }
|
|
620
662
|
- { name: version, type: string, nullable: true }
|
|
621
|
-
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the event claim, from the per-event `evidence_class` key (alias `evidence-class`) in event-catalog.yaml, falling back to a file-level `evidence_class`/`evidence-class` top-level key in the same catalog YAML. Free-form; conventional values code-reverse | vendor-doc | operational (ADR 0175). Empty for avsc-only events and when undeclared. Added in schema 2.20.0." }
|
|
622
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
663
|
+
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the event claim, from the per-event `evidence_class` key (alias `evidence-class`) in event-catalog.yaml, falling back to a file-level `evidence_class`/`evidence-class` top-level key in the same catalog YAML. Free-form; conventional values code-reverse | vendor-doc | operational (M-ADR 0175). Empty for avsc-only events and when undeclared. Added in schema 2.20.0." }
|
|
664
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
623
665
|
|
|
624
666
|
c4_systems:
|
|
625
667
|
primary_key: id
|
|
@@ -632,7 +674,7 @@ catalogues:
|
|
|
632
674
|
- { name: kind, type: string, nullable: false, description: "platform | subsystem | application | integration. Derived 1:1 from manifest.category — see enums.c4_system_kind." }
|
|
633
675
|
- { name: diagram_path, type: string, nullable: true, description: "Path to L1 mermaid/markdown. Nullable — row exists for any architectural Product even if no L1 diagram has been authored yet (visible coverage gap)." }
|
|
634
676
|
- { name: description, type: string, nullable: true }
|
|
635
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
677
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
636
678
|
column_enums:
|
|
637
679
|
kind: enums.c4_system_kind
|
|
638
680
|
|
|
@@ -654,10 +696,10 @@ catalogues:
|
|
|
654
696
|
- { name: system_id, type: string, nullable: false, description: "Owning C4 system (every container is in exactly one system)." }
|
|
655
697
|
- { name: domain_id, type: string, nullable: true, description: "Optional organisational domain tag (denormalised; not C4-structural)." }
|
|
656
698
|
- { name: service_id, type: string, nullable: true, description: "Matched by container name ↔ service name/repo where possible." }
|
|
657
|
-
- { name: type, type: string, nullable: true, description: "Canonical C4 container kind — see enums.c4_container_type (Application | Data Store). Legacy values Infrastructure | External System are recognised-but-deprecated during 2.x (WARN); External System boxes belong in c4_external_systems. Per ADR 0155. Enum binding is advisory until 3.0.0." }
|
|
699
|
+
- { name: type, type: string, nullable: true, description: "Canonical C4 container kind — see enums.c4_container_type (Application | Data Store). Legacy values Infrastructure | External System are recognised-but-deprecated during 2.x (WARN); External System boxes belong in c4_external_systems. Per M-ADR 0155. Enum binding is advisory until 3.0.0." }
|
|
658
700
|
- { name: technology, type: string, nullable: true }
|
|
659
701
|
- { name: description, type: string, nullable: true }
|
|
660
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
702
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
661
703
|
|
|
662
704
|
c4_components:
|
|
663
705
|
primary_key: id
|
|
@@ -676,19 +718,19 @@ catalogues:
|
|
|
676
718
|
- { name: service_id, type: string, nullable: true, description: "Denormalised: the service the parent container represents, when applicable." }
|
|
677
719
|
- { name: path, type: string, nullable: true }
|
|
678
720
|
- { name: responsibility, type: string, nullable: true }
|
|
679
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
721
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
680
722
|
|
|
681
723
|
c4_external_systems:
|
|
682
724
|
primary_key: id
|
|
683
725
|
description: >
|
|
684
726
|
C4 external software systems — peer systems at the L1 context level
|
|
685
|
-
that the ecosystem integrates with but does not own (per ADR 0155).
|
|
727
|
+
that the ecosystem integrates with but does not own (per M-ADR 0155).
|
|
686
728
|
Rendered `System_Ext(...)` on L1/L2 diagrams. NOT a c4_container
|
|
687
729
|
(external systems are not inside your system) and NOT a c4_system
|
|
688
730
|
(they have no owning Product). External systems are inherently shared
|
|
689
731
|
references: the same external system may be declared by multiple SDDs,
|
|
690
732
|
so the aggregator dedups identical rows by PK rather than failing on
|
|
691
|
-
duplicate (the one narrowly-scoped exception to ADR 0134's
|
|
733
|
+
duplicate (the one narrowly-scoped exception to M-ADR 0134's
|
|
692
734
|
duplicate-PK rule); conflicting attributes on the same id surface as a
|
|
693
735
|
`convention` finding.
|
|
694
736
|
columns:
|
|
@@ -698,7 +740,7 @@ catalogues:
|
|
|
698
740
|
- { name: description, type: string, nullable: true, description: "What the external system provides." }
|
|
699
741
|
- { name: declared_id, type: string, nullable: true, description: "The diagram entry id of the first-seen declaration (M-ADR 0189 §4.2) — the declared identity the aggregator resolves against estate identifiers at adjudication. Added 2.30.0." }
|
|
700
742
|
- { name: source_scope, type: string, nullable: true, description: "Scope of the first-seen declaration: l1 (context diagram) or l2 (container diagram — scope-relative per M-ADR 0189 §4.1). Added 2.30.0." }
|
|
701
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
743
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
702
744
|
|
|
703
745
|
repositories:
|
|
704
746
|
primary_key: id
|
|
@@ -708,7 +750,7 @@ catalogues:
|
|
|
708
750
|
columns:
|
|
709
751
|
- { name: id, type: string, nullable: false, description: "canonical_repo_key." }
|
|
710
752
|
- { name: name, type: string, nullable: false }
|
|
711
|
-
- { name: domain_id, type: string, nullable: true, description: "Owning capability domain. Populated when the repo-config declared domain resolves to a docs/domains/<slug>/ in the local SDD; left empty otherwise per ADR 0136." }
|
|
753
|
+
- { name: domain_id, type: string, nullable: true, description: "Owning capability domain. Populated when the repo-config declared domain resolves to a docs/domains/<slug>/ in the local SDD; left empty otherwise per M-ADR 0136." }
|
|
712
754
|
- { name: product_id, type: string, nullable: true }
|
|
713
755
|
- { name: profile, type: string, nullable: false }
|
|
714
756
|
- { name: group, type: string, nullable: true }
|
|
@@ -722,13 +764,13 @@ catalogues:
|
|
|
722
764
|
- { name: total_lines, type: int, nullable: true }
|
|
723
765
|
- { name: languages, type: string, nullable: true, description: "';'-separated." }
|
|
724
766
|
- { name: doc_path, type: string, nullable: false }
|
|
725
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
767
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
726
768
|
column_enums:
|
|
727
769
|
service_type: enums.service_type # canonical builder validates against the service_type enum above
|
|
728
770
|
|
|
729
771
|
domain_models:
|
|
730
772
|
primary_key: id
|
|
731
|
-
description: "Per-domain ER diagram modelling the domain's aggregates, entities, and domain events. Platform-profile only — application and integration profiles emit headers-only. Forward source: `traceability.domain_model.path` in capability traceability manifests. Reverse source: file-system scan of `docs/domains/*/architecture/data-model.mermaid.md`. Added in schema 2.4.0; see ADR 0142."
|
|
773
|
+
description: "Per-domain ER diagram modelling the domain's aggregates, entities, and domain events. Platform-profile only — application and integration profiles emit headers-only. Forward source: `traceability.domain_model.path` in capability traceability manifests. Reverse source: file-system scan of `docs/domains/*/architecture/data-model.mermaid.md`. Added in schema 2.4.0; see M-ADR 0142."
|
|
732
774
|
foreign_keys:
|
|
733
775
|
- { column: domain_id, references: domains.id, nullable: false }
|
|
734
776
|
columns:
|
|
@@ -737,12 +779,12 @@ catalogues:
|
|
|
737
779
|
- { name: domain_id, type: string, nullable: false }
|
|
738
780
|
- { name: doc_path, type: string, nullable: false, description: "Path to data-model.mermaid.md." }
|
|
739
781
|
- { name: version, type: string, nullable: true, description: "Optional explicit version; null until the domain model is formally versioned (typically at first contract lock-in)." }
|
|
740
|
-
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the domain model, from a leading ```yaml fence in the data-model markdown carrying `evidence-class:` (documentation-reverse anchor convention). Free-form; conventional values code-reverse | vendor-doc | operational (ADR 0175). Empty when undeclared. Added in schema 2.20.0." }
|
|
741
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
782
|
+
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the domain model, from a leading ```yaml fence in the data-model markdown carrying `evidence-class:` (documentation-reverse anchor convention). Free-form; conventional values code-reverse | vendor-doc | operational (M-ADR 0175). Empty when undeclared. Added in schema 2.20.0." }
|
|
783
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
742
784
|
|
|
743
785
|
entities:
|
|
744
786
|
primary_key: id
|
|
745
|
-
description: "Data-model entity (a structural realisation of a concept inside a domain's data model). Distinct from glossary_items (vocabulary-level) and from domain_models (file-level). Added in schema 2.13.0 per ADR 0159. Forward source: `models[].entities[]` in glossary-alignment-manifest.yaml. Reverse source: `EntityName { ... }` declarations inside `erDiagram` fences in `docs/domains/{domain}/architecture/data-model.mermaid.md`. PK uses an entity-aware slug that normalises across UPPER_SNAKE and PascalCase authoring styles."
|
|
787
|
+
description: "Data-model entity (a structural realisation of a concept inside a domain's data model). Distinct from glossary_items (vocabulary-level) and from domain_models (file-level). Added in schema 2.13.0 per M-ADR 0159. Forward source: `models[].entities[]` in glossary-alignment-manifest.yaml. Reverse source: `EntityName { ... }` declarations inside `erDiagram` fences in `docs/domains/{domain}/architecture/data-model.mermaid.md`. PK uses an entity-aware slug that normalises across UPPER_SNAKE and PascalCase authoring styles."
|
|
746
788
|
foreign_keys:
|
|
747
789
|
- { column: domain_id, references: domains.id, nullable: true }
|
|
748
790
|
- { column: source_domain_model_id, references: domain_models.id, nullable: true }
|
|
@@ -753,15 +795,15 @@ catalogues:
|
|
|
753
795
|
- { name: domain_id, type: string, nullable: true, description: "Owning domain. Nullable when the source is a non-canonical domain hint such as `platform-wide`; the walker emits a finding in that case." }
|
|
754
796
|
- { name: source_domain_model_id, type: string, nullable: true, description: "FK to domain_models.csv — the file the entity was extracted from. Populated by the reverse-method walker (Mermaid parse); empty when authored only via the forward-method manifest." }
|
|
755
797
|
- { name: persistence_kind, type: string, nullable: true, description: "Open string; recommended values: relational-table | document-collection | event-payload | dto | view | other. Values outside the recommended set fire `[finding] convention`." }
|
|
756
|
-
- { name: context, type: string, nullable: true, description: "Bounded-context membership (per ADR 0170 §4.6). Free-form adopter label, orthogonal to domain_id. Not an FK. Carried for forward-parity; awaits a derivation source (Mermaid ER has no per-entity slot — populate via a sidecar classification or owning-service derivation). Added in schema 2.19.0." }
|
|
798
|
+
- { name: context, type: string, nullable: true, description: "Bounded-context membership (per M-ADR 0170 §4.6). Free-form adopter label, orthogonal to domain_id. Not an FK. Carried for forward-parity; awaits a derivation source (Mermaid ER has no per-entity slot — populate via a sidecar classification or owning-service derivation). Added in schema 2.19.0." }
|
|
757
799
|
- { name: glossary_term, type: string, nullable: true, description: "FK to glossary_items.id when the entity name resolves to a canonical glossary term (by entity-aware slug). Drives entity_glossary edge emission." }
|
|
758
800
|
- { name: notes, type: string, nullable: true, description: "Free-form notes preserved from the authoring source. Carries `status=...`, `superseded_by=...`, and column count for diagnostic value." }
|
|
759
|
-
- { name: evidence_class, type: string, nullable: true, description: "Evidence class inherited from the owning domain model's file-level declaration (the leading ```yaml fence's `evidence-class:` in data-model markdown). Free-form; conventional values code-reverse | vendor-doc | operational (ADR 0175). Empty when the source file declares none, and for manifest-sourced rows (the glossary-alignment manifest has no evidence slot). Added in schema 2.20.0." }
|
|
760
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
801
|
+
- { name: evidence_class, type: string, nullable: true, description: "Evidence class inherited from the owning domain model's file-level declaration (the leading ```yaml fence's `evidence-class:` in data-model markdown). Free-form; conventional values code-reverse | vendor-doc | operational (M-ADR 0175). Empty when the source file declares none, and for manifest-sourced rows (the glossary-alignment manifest has no evidence slot). Added in schema 2.20.0." }
|
|
802
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
761
803
|
|
|
762
804
|
# ---- Edge catalogues ----
|
|
763
805
|
# Edge catalogues do not carry source_sdd_id — provenance is recoverable
|
|
764
|
-
# from either endpoint's row per ADR 0134.
|
|
806
|
+
# from either endpoint's row per M-ADR 0134.
|
|
765
807
|
|
|
766
808
|
repo_capability:
|
|
767
809
|
primary_key: id
|
|
@@ -833,7 +875,7 @@ catalogues:
|
|
|
833
875
|
|
|
834
876
|
repo_contract:
|
|
835
877
|
primary_key: id
|
|
836
|
-
description: "Edge: repo implements/consumes contract. From contributes_to.artifact_type=contract-surface. Per ADR 0147 service-architecture external interfaces are a contract-consumes source; contract_id is external_for_profiles app/integration because their repos reference platform-resident (or platform-held BFF) contracts — resolved at aggregation, staying internal for platform-profile."
|
|
878
|
+
description: "Edge: repo implements/consumes contract. From contributes_to.artifact_type=contract-surface. Per M-ADR 0147 service-architecture external interfaces are a contract-consumes source; contract_id is external_for_profiles app/integration because their repos reference platform-resident (or platform-held BFF) contracts — resolved at aggregation, staying internal for platform-profile."
|
|
837
879
|
foreign_keys:
|
|
838
880
|
- { column: repo_id, references: repositories.id, nullable: false }
|
|
839
881
|
- { column: contract_id, references: contracts.id, nullable: false, external_for_profiles: [application-product, integration-product] }
|
|
@@ -870,7 +912,7 @@ catalogues:
|
|
|
870
912
|
|
|
871
913
|
service_contract:
|
|
872
914
|
primary_key: id
|
|
873
|
-
description: "Edge: service exposes or consumes contract. Both FKs are external (per ADR 0147): federated SDDs that walk per-repo service-architecture tables emit consumes rows where service_id resolves to the platform-root catalogue's services.csv (post-aggregation) and contract_id resolves to the platform-root contracts.csv. Internal builds (e.g. connect-mono) still optimistically validate locally. Schema 2.8.0."
|
|
915
|
+
description: "Edge: service exposes or consumes contract. Both FKs are external (per M-ADR 0147): federated SDDs that walk per-repo service-architecture tables emit consumes rows where service_id resolves to the platform-root catalogue's services.csv (post-aggregation) and contract_id resolves to the platform-root contracts.csv. Internal builds (e.g. connect-mono) still optimistically validate locally. Schema 2.8.0."
|
|
874
916
|
foreign_keys:
|
|
875
917
|
- { column: service_id, references: services.id, nullable: false, external: true }
|
|
876
918
|
- { column: contract_id, references: contracts.id, nullable: false, external: true }
|
|
@@ -894,7 +936,7 @@ catalogues:
|
|
|
894
936
|
|
|
895
937
|
service_entity:
|
|
896
938
|
primary_key: id
|
|
897
|
-
description: "Edge: service touches data-model entity. Added in schema 2.13.0 per ADR 0159. Primary source: per-domain `## Data Store Mapping` markdown table in `docs/domains/{domain}/architecture/data-model.mermaid.md` (relation=owns). Optional forward source (Phase 5 deferred): `entities:` block in `orchestration/repo-config/<repo>.yaml`. Service names resolve via heuristic (slug-of-name; trailing-id-segment) with optional adopter-authored alias map at `docs/platform/reference/service-name-aliases.yaml`."
|
|
939
|
+
description: "Edge: service touches data-model entity. Added in schema 2.13.0 per M-ADR 0159. Primary source: per-domain `## Data Store Mapping` markdown table in `docs/domains/{domain}/architecture/data-model.mermaid.md` (relation=owns). Optional forward source (Phase 5 deferred): `entities:` block in `orchestration/repo-config/<repo>.yaml`. Service names resolve via heuristic (slug-of-name; trailing-id-segment) with optional adopter-authored alias map at `docs/platform/reference/service-name-aliases.yaml`."
|
|
898
940
|
foreign_keys:
|
|
899
941
|
- { column: service_id, references: services.id, nullable: false }
|
|
900
942
|
- { column: entity_id, references: entities.id, nullable: false }
|
|
@@ -904,7 +946,7 @@ catalogues:
|
|
|
904
946
|
- { name: entity_id, type: string, nullable: false }
|
|
905
947
|
- { name: relation, type: string, nullable: false, description: "Open string; recommended values: owns | reads | writes | references. Data Store Mapping table source emits `owns`. Values outside the recommended set fire `[finding] convention`." }
|
|
906
948
|
- { name: evidence_path, type: string, nullable: true, description: "Source markdown path or feature-grounding row that produced the edge. Audit aid." }
|
|
907
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
949
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
908
950
|
|
|
909
951
|
capability_feature:
|
|
910
952
|
primary_key: id
|
|
@@ -940,7 +982,7 @@ catalogues:
|
|
|
940
982
|
|
|
941
983
|
capability_event:
|
|
942
984
|
primary_key: id
|
|
943
|
-
description: "Edge: capability publishes or consumes event. Schema 2.14.0 (per ADR 0160) multi-source ingestion: (1) forward shape A — `traceability.events[{id, role}]` (legacy aspirational shape, unauthored across observed adopters); (2) forward shape B — `traceability.contracts.published_events[]` / `consumed_events[]` with `{event, status, notes}` (the observed forward-method shape; event name slug-resolves against events.csv); (3) derived — `capability_service ⋈ service_event` join (zero authoring; associative not authoritative). Authored rows win on PK conflict with derived. The `source` column distinguishes the two so governance queries can filter to authoritative ownership. The earlier `## Related Events` capability-spec heading is retired (no adopter authored it; the template never carried the section)."
|
|
985
|
+
description: "Edge: capability publishes or consumes event. Schema 2.14.0 (per M-ADR 0160) multi-source ingestion: (1) forward shape A — `traceability.events[{id, role}]` (legacy aspirational shape, unauthored across observed adopters); (2) forward shape B — `traceability.contracts.published_events[]` / `consumed_events[]` with `{event, status, notes}` (the observed forward-method shape; event name slug-resolves against events.csv); (3) derived — `capability_service ⋈ service_event` join (zero authoring; associative not authoritative). Authored rows win on PK conflict with derived. The `source` column distinguishes the two so governance queries can filter to authoritative ownership. The earlier `## Related Events` capability-spec heading is retired (no adopter authored it; the template never carried the section)."
|
|
944
986
|
foreign_keys:
|
|
945
987
|
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
946
988
|
- { column: event_id, references: events.id, nullable: false }
|
|
@@ -949,7 +991,7 @@ catalogues:
|
|
|
949
991
|
- { name: capability_id, type: string, nullable: false }
|
|
950
992
|
- { name: event_id, type: string, nullable: false }
|
|
951
993
|
- { name: role, type: string, nullable: false, description: "publishes | consumes." }
|
|
952
|
-
- { name: source, type: string, nullable: false, description: "authored | derived. `authored` rows come from a traceability declaration (shape A or shape B); `derived` rows come from `capability_service ⋈ service_event` and represent associative coupling, not ownership. Schema 2.14.0 per ADR 0160." }
|
|
994
|
+
- { name: source, type: string, nullable: false, description: "authored | derived. `authored` rows come from a traceability declaration (shape A or shape B); `derived` rows come from `capability_service ⋈ service_event` and represent associative coupling, not ownership. Schema 2.14.0 per M-ADR 0160." }
|
|
953
995
|
|
|
954
996
|
capability_contract:
|
|
955
997
|
primary_key: id
|
|
@@ -998,7 +1040,7 @@ catalogues:
|
|
|
998
1040
|
|
|
999
1041
|
feature_event:
|
|
1000
1042
|
primary_key: id
|
|
1001
|
-
description: "Edge: feature publishes or consumes event. Derived only — emitted from the `feature_service ⋈ service_event` join, mirroring ADR 0160's capability_event derived path one rung lower in the capability/feature/service hierarchy. Every row carries `source=derived`; there is no authored shape (the authored signal lives at the service level via `service_event`, which the feature inherits through `feature_service`). PK is `{feature_id}__{event_id}__{role}` so the same feature can carry both publishes + consumes rows for the same event without collision. Schema 2.15.0 per ADR 0161."
|
|
1043
|
+
description: "Edge: feature publishes or consumes event. Derived only — emitted from the `feature_service ⋈ service_event` join, mirroring M-ADR 0160's capability_event derived path one rung lower in the capability/feature/service hierarchy. Every row carries `source=derived`; there is no authored shape (the authored signal lives at the service level via `service_event`, which the feature inherits through `feature_service`). PK is `{feature_id}__{event_id}__{role}` so the same feature can carry both publishes + consumes rows for the same event without collision. Schema 2.15.0 per M-ADR 0161."
|
|
1002
1044
|
foreign_keys:
|
|
1003
1045
|
- { column: feature_id, references: features.id, nullable: false }
|
|
1004
1046
|
- { column: event_id, references: events.id, nullable: false }
|
|
@@ -1044,11 +1086,11 @@ catalogues:
|
|
|
1044
1086
|
- { name: transport, type: string, nullable: false, description: "Delivery protocol: `appsync-websocket | pekko-ws | mqtt | sse | webhook-push | other`. The `other` value is escape-valve; adopters using it SHOULD record the actual transport in evidence." }
|
|
1045
1087
|
- { name: evidence, type: string, nullable: true, description: "Evidence-file citation (`<sub-repo>/<path>:<line>`) anchoring the channel declaration. Mirrors the citation pattern used elsewhere in evidence yamls." }
|
|
1046
1088
|
- { name: payload_ref, type: string, nullable: true, description: "Optional reference to a payload-contract event (`{event-name}` in the `events` catalogue) when the channel carries a contract-shaped payload. Empty when the payload is channel-private." }
|
|
1047
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1089
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1048
1090
|
|
|
1049
1091
|
capability_domain_model:
|
|
1050
1092
|
primary_key: id
|
|
1051
|
-
description: "Edge: capability references a domain model. Forward: declared in `traceability.domain_model` field of the capability traceability manifest. Reverse: inferred via capability → domain → domain_model. Platform-profile only. Added in schema 2.4.0; see ADR 0142."
|
|
1093
|
+
description: "Edge: capability references a domain model. Forward: declared in `traceability.domain_model` field of the capability traceability manifest. Reverse: inferred via capability → domain → domain_model. Platform-profile only. Added in schema 2.4.0; see M-ADR 0142."
|
|
1052
1094
|
foreign_keys:
|
|
1053
1095
|
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
1054
1096
|
- { column: domain_model_id, references: domain_models.id, nullable: false }
|
|
@@ -1060,7 +1102,7 @@ catalogues:
|
|
|
1060
1102
|
|
|
1061
1103
|
feature_domain_model:
|
|
1062
1104
|
primary_key: id
|
|
1063
|
-
description: "Edge: feature operates on a domain model. Derived from capability_feature ⋈ capability_domain_model (on capability_id). Platform-profile only. Orphan features (no capability link) get no row. Added in schema 2.4.0; see ADR 0142."
|
|
1105
|
+
description: "Edge: feature operates on a domain model. Derived from capability_feature ⋈ capability_domain_model (on capability_id). Platform-profile only. Orphan features (no capability link) get no row. Added in schema 2.4.0; see M-ADR 0142."
|
|
1064
1106
|
foreign_keys:
|
|
1065
1107
|
- { column: feature_id, references: features.id, nullable: false }
|
|
1066
1108
|
- { column: domain_model_id, references: domain_models.id, nullable: false }
|
|
@@ -1084,7 +1126,7 @@ catalogues:
|
|
|
1084
1126
|
|
|
1085
1127
|
persona_c4system:
|
|
1086
1128
|
primary_key: id
|
|
1087
|
-
description: "Edge: persona (C4 Person) uses a C4 system. Captures the L1 context 'Person uses System' relationship, extracted from Person(...) macros on the L1 context diagram and matched to personas rows. Per ADR 0155. Added in schema 2.10.0."
|
|
1129
|
+
description: "Edge: persona (C4 Person) uses a C4 system. Captures the L1 context 'Person uses System' relationship, extracted from Person(...) macros on the L1 context diagram and matched to personas rows. Per M-ADR 0155. Added in schema 2.10.0."
|
|
1088
1130
|
foreign_keys:
|
|
1089
1131
|
- { column: persona_id, references: personas.id, nullable: false }
|
|
1090
1132
|
- { column: c4_system_id, references: c4_systems.id, nullable: false }
|
|
@@ -1118,7 +1160,7 @@ catalogues:
|
|
|
1118
1160
|
|
|
1119
1161
|
system_external_dependency:
|
|
1120
1162
|
primary_key: id
|
|
1121
|
-
description: "Edge: a C4 system integrates with an external software system. Captures the L1 context 'System integrates with External System' relationship, extracted from System_Ext(...) + Rel(...) on L1/L2 diagrams. Per ADR 0155. Container-level external dependencies are out of scope (system-level only). Added in schema 2.10.0. From 2.30.0 (M-ADR 0189 §4.4): edges whose external endpoint the aggregator adjudicates as an INTERNAL system are rewritten onto system_system_dependency and removed from this catalogue."
|
|
1163
|
+
description: "Edge: a C4 system integrates with an external software system. Captures the L1 context 'System integrates with External System' relationship, extracted from System_Ext(...) + Rel(...) on L1/L2 diagrams. Per M-ADR 0155. Container-level external dependencies are out of scope (system-level only). Added in schema 2.10.0. From 2.30.0 (M-ADR 0189 §4.4): edges whose external endpoint the aggregator adjudicates as an INTERNAL system are rewritten onto system_system_dependency and removed from this catalogue."
|
|
1122
1164
|
foreign_keys:
|
|
1123
1165
|
- { column: c4_system_id, references: c4_systems.id, nullable: false }
|
|
1124
1166
|
- { column: external_system_id, references: c4_external_systems.id, nullable: false }
|
|
@@ -1183,7 +1225,7 @@ catalogues:
|
|
|
1183
1225
|
|
|
1184
1226
|
c4_container_entity:
|
|
1185
1227
|
primary_key: id
|
|
1186
|
-
description: "Derived edge: C4 container is responsible for data-model entity. Added in schema 2.13.0 per ADR 0159 §4.8. Pure transitive derivation: `service_entity ⋈ c4_containers.service_id`. Only the subset of containers with `service_id` populated contribute edges (per ADR 0155 the container ↔ service cardinality is o-or-1; data-store containers and infra-umbrella containers without a service mapping legitimately emit no rows)."
|
|
1228
|
+
description: "Derived edge: C4 container is responsible for data-model entity. Added in schema 2.13.0 per M-ADR 0159 §4.8. Pure transitive derivation: `service_entity ⋈ c4_containers.service_id`. Only the subset of containers with `service_id` populated contribute edges (per M-ADR 0155 the container ↔ service cardinality is o-or-1; data-store containers and infra-umbrella containers without a service mapping legitimately emit no rows)."
|
|
1187
1229
|
foreign_keys:
|
|
1188
1230
|
- { column: container_id, references: c4_containers.id, nullable: false }
|
|
1189
1231
|
- { column: entity_id, references: entities.id, nullable: false }
|
|
@@ -1196,7 +1238,7 @@ catalogues:
|
|
|
1196
1238
|
|
|
1197
1239
|
c4_system_entity:
|
|
1198
1240
|
primary_key: id
|
|
1199
|
-
description: "Derived edge: C4 system is responsible for data-model entity. Added in schema 2.13.0 per ADR 0159 §4.8. Pure aggregation roll-up: `c4_container_entity ⋈ c4_containers.system_id`, with container_count recording how many of the system's containers touch the entity (governance signal for cross-container concerns)."
|
|
1241
|
+
description: "Derived edge: C4 system is responsible for data-model entity. Added in schema 2.13.0 per M-ADR 0159 §4.8. Pure aggregation roll-up: `c4_container_entity ⋈ c4_containers.system_id`, with container_count recording how many of the system's containers touch the entity (governance signal for cross-container concerns)."
|
|
1200
1242
|
foreign_keys:
|
|
1201
1243
|
- { column: system_id, references: c4_systems.id, nullable: false }
|
|
1202
1244
|
- { column: entity_id, references: entities.id, nullable: false }
|
|
@@ -1262,7 +1304,7 @@ catalogues:
|
|
|
1262
1304
|
- { name: required_stability, type: string, nullable: true, description: "locked | provisional | unknown. Optional; the consuming SDD's expectation of contract stability." }
|
|
1263
1305
|
- { name: contract_path, type: string, nullable: true, description: "Path to the contract file the dependency is against, as declared in the consuming SDD's evidence. External — resolution happens at aggregation if it happens at all." }
|
|
1264
1306
|
- { name: consumed_by_services, type: string, nullable: true, description: "Comma-separated list of service names within the consuming product that consume the dependency. Free-text; not FK-validated (services are within-product and resolution is owner-side concern)." }
|
|
1265
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1307
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1266
1308
|
|
|
1267
1309
|
cross_sdd_platform_capability:
|
|
1268
1310
|
primary_key: id
|
|
@@ -1283,7 +1325,7 @@ catalogues:
|
|
|
1283
1325
|
finding and produces no row. Cross-SDD references are external
|
|
1284
1326
|
by definition. Added in schema 2.9.0; see
|
|
1285
1327
|
`content/plans/v0-9-0-cohort-sweep-derived-bundle.md`
|
|
1286
|
-
§"Cross-SDD platform-capability-edge" and ADR 0134.
|
|
1328
|
+
§"Cross-SDD platform-capability-edge" and M-ADR 0134.
|
|
1287
1329
|
foreign_keys:
|
|
1288
1330
|
- { column: consuming_product_id, references: products.id, nullable: false, external: true }
|
|
1289
1331
|
- { column: platform_capability_id, references: capabilities.id, nullable: false, external: true }
|
|
@@ -1300,30 +1342,39 @@ catalogues:
|
|
|
1300
1342
|
primary_key: id
|
|
1301
1343
|
description: >
|
|
1302
1344
|
Application-product edge (M-ADR 0193): one row per declared data-plane
|
|
1303
|
-
binding — a typed way the service sources or
|
|
1304
|
-
a COMPOSITION of these bindings, a second axis orthogonal
|
|
1305
|
-
`application_archetype` (0191). Built per-SDD from the manifest's
|
|
1345
|
+
binding — a typed way the service sources, holds, produces or exposes data.
|
|
1346
|
+
The data-plane is a COMPOSITION of these bindings, a second axis orthogonal
|
|
1347
|
+
to `application_archetype` (0191). Built per-SDD from the manifest's
|
|
1306
1348
|
`data_plane.bindings` block (application-product only; other profiles emit
|
|
1307
|
-
headers-only).
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
`
|
|
1313
|
-
|
|
1314
|
-
|
|
1349
|
+
headers-only). The `pattern` vocabulary splits by DIRECTION (§4.7): an
|
|
1350
|
+
INBOUND data-sourcing sub-set (retrieve | own-store | stream-ingest |
|
|
1351
|
+
project) and an OUTPUT-side sub-set (generate | publish), materialised as
|
|
1352
|
+
the derived `direction` column. An INBOUND binding whose `target` is a
|
|
1353
|
+
platform capability/service reconciles with
|
|
1354
|
+
`product_platform_dependencies` — a `retrieve@internal` binding is a
|
|
1355
|
+
synchronous platform dependency and a `stream-ingest@internal` binding is
|
|
1356
|
+
the M-ADR 0192 `contract_type: event` async dependency; the genuinely new
|
|
1357
|
+
inbound rows are `own-store` (a self-binding) and any `external-vendor`
|
|
1358
|
+
binding. OUTPUT-side rows do NOT participate in that reconciliation
|
|
1359
|
+
(§4.7 rule 1): `publish` is a contract the service PROVIDES, not one it
|
|
1360
|
+
consumes, so it has no inbound counterpart to cross-check — consumers must
|
|
1361
|
+
filter on `direction` before reconciling, which is what the column is for.
|
|
1362
|
+
The archetype-default-vs-declared WARN keys on the bare `pattern` token and
|
|
1363
|
+
so spans both directions (§4.7 rule 2). Added in schema 2.37.0;
|
|
1364
|
+
`direction` added in 2.40.0.
|
|
1315
1365
|
foreign_keys:
|
|
1316
1366
|
- { column: product_id, references: products.id, nullable: false }
|
|
1317
1367
|
columns:
|
|
1318
|
-
- { name: id, type: string, nullable: false, description: "{product_id}__{pattern}__{locality}__{target} (empty components collapse to blanks). A duplicate emits a divergence finding and is dropped." }
|
|
1368
|
+
- { name: id, type: string, nullable: false, description: "{product_id}__{pattern}__{locality}__{target} (empty components collapse to blanks). A duplicate emits a divergence finding and is dropped. `direction` is NOT a component — it is derived from `pattern`, so it adds nothing to identity." }
|
|
1319
1369
|
- { name: product_id, type: string, nullable: false, description: "The application-product declaring this binding (this SDD's product id)." }
|
|
1320
|
-
- { name: pattern, type: string, nullable: false, description: "Closed method-tier enum: retrieve | own-store | stream-ingest | project. How the data relates to the service (
|
|
1321
|
-
- { name:
|
|
1370
|
+
- { name: pattern, type: string, nullable: false, description: "Closed method-tier enum: retrieve | own-store | stream-ingest | project (inbound, data-sourcing) | generate | publish (output-side, per M-ADR 0193 §4.7). How the data relates to the service (§4.1)." }
|
|
1371
|
+
- { name: direction, type: string, nullable: false, description: "inbound | output. DERIVED from `pattern` by a single method-tier mapping — not authored, and not a manifest field, so it cannot disagree with `pattern`. Materialises the output-side sub-set §4.7 declares (generate/publish => output; everything else => inbound). Exists because three §4.7 rules branch on direction: platform-dep reconciliation is inbound-only, the archetype WARN must compare like with like, and the M-ADR 0187 convergence reasoning differs by direction. Added in 2.40.0." }
|
|
1372
|
+
- { name: locality, type: string, nullable: true, description: "Closed enum: internal-platform | internal-domain | external-vendor. Where the other end sits. REQUIRED on the inbound data-sourcing patterns (retrieve/stream-ingest/project); may be empty for own-store (a self-binding with no other end) and for the output-side patterns (generate/publish), which may carry one but do not require it (M-ADR 0193 §4.7)." }
|
|
1322
1373
|
- { name: transport, type: string, nullable: true, description: "Open string — the wire (rest | graphql | grpc | appsync | kinesis | kafka | eventhub | cdc | ...). Values outside the recommended set emit a convention finding." }
|
|
1323
|
-
- { name: runtime, type: string, nullable: true, description: "Free adopter-tier field — backend-compute runtime (e.g. java | node). Only on compute-bearing patterns (stream-ingest
|
|
1374
|
+
- { name: runtime, type: string, nullable: true, description: "Free adopter-tier field — backend-compute runtime (e.g. java | node). Only on compute-bearing patterns (stream-ingest | project | generate — `generate` is compute-bearing per M-ADR 0193 §4.7); empty otherwise. A runtime on retrieve/own-store/publish is malformed and FAILs at manifest load." }
|
|
1324
1375
|
- { name: target, type: string, nullable: true, description: "Free adopter-tier field — the specific counterpart (a platform service id, an upstream domain service, a named vendor). Instance identity; keeps locality a small class enum." }
|
|
1325
1376
|
- { name: notes, type: string, nullable: true, description: "Optional free-text annotation." }
|
|
1326
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1377
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1327
1378
|
|
|
1328
1379
|
application_data_plane_deviations:
|
|
1329
1380
|
primary_key: id
|
|
@@ -1335,16 +1386,19 @@ catalogues:
|
|
|
1335
1386
|
architecture bundle (and its `expected_bindings`) resolves — can suppress a
|
|
1336
1387
|
mismatch it is told is sanctioned variance. The `expectation` value is the
|
|
1337
1388
|
**bare pattern token** (`retrieve` | `own-store` | `stream-ingest` |
|
|
1338
|
-
`project`) that the product knowingly diverges
|
|
1339
|
-
pattern the WARN keys on.
|
|
1389
|
+
`project` | `generate` | `publish`) that the product knowingly diverges
|
|
1390
|
+
from; it must match the pattern the WARN keys on. The token set spans both
|
|
1391
|
+
directions — the WARN keys on the bare pattern, so an output-side
|
|
1392
|
+
expectation is deviated exactly like an inbound one (M-ADR 0193 §4.7 rule
|
|
1393
|
+
2). Added in schema 2.38.0; output-side tokens documented in 2.40.0.
|
|
1340
1394
|
foreign_keys:
|
|
1341
1395
|
- { column: product_id, references: products.id, nullable: false }
|
|
1342
1396
|
columns:
|
|
1343
1397
|
- { name: id, type: string, nullable: false, description: "{product_id}__{expectation}. A duplicate emits a divergence finding and is dropped." }
|
|
1344
1398
|
- { name: product_id, type: string, nullable: false, description: "The application-product declaring this deviation (this SDD's product id)." }
|
|
1345
|
-
- { name: expectation, type: string, nullable: false, description: "The bare data-plane pattern token the product diverges from (retrieve | own-store | stream-ingest | project). Must match the WARN's pattern key." }
|
|
1399
|
+
- { name: expectation, type: string, nullable: false, description: "The bare data-plane pattern token the product diverges from (retrieve | own-store | stream-ingest | project | generate | publish). Must match the WARN's pattern key. Spans both directions per M-ADR 0193 §4.7 rule 2." }
|
|
1346
1400
|
- { name: rationale, type: string, nullable: false, description: "Why the deviation is correct. Non-empty (enforced at manifest load)." }
|
|
1347
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1401
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1348
1402
|
|
|
1349
1403
|
application_conformance_coverage:
|
|
1350
1404
|
primary_key: id
|
|
@@ -1367,9 +1421,9 @@ catalogues:
|
|
|
1367
1421
|
- { name: tag, type: string, nullable: false, description: "The conformance-expectation tag (opaque; matches an archetype's `conformance` tag in the reference-architecture vocabulary)." }
|
|
1368
1422
|
- { name: status, type: string, nullable: false, description: "covered (the product's suite exercises it) | deviated (deliberately not covered, with a rationale)." }
|
|
1369
1423
|
- { name: rationale, type: string, nullable: true, description: "Why the tag is deviated. Present (non-empty) only when status=deviated." }
|
|
1370
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1424
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1371
1425
|
|
|
1372
|
-
# ---- UI screens family (schema 2.16.0, per ADR 0166) ----
|
|
1426
|
+
# ---- UI screens family (schema 2.16.0, per M-ADR 0166) ----
|
|
1373
1427
|
# Application-product profile. Builder reads authored screen-spec artefacts
|
|
1374
1428
|
# (`screens/*.md`: frontmatter + a normative ```openui-lang fenced block).
|
|
1375
1429
|
# Forward: agent-authored. Reverse: the extraction toolkit projects an app's
|
|
@@ -1377,7 +1431,7 @@ catalogues:
|
|
|
1377
1431
|
# these artefacts; see research/adr-0166-prototypes/ for the Phase Pre validation).
|
|
1378
1432
|
screens:
|
|
1379
1433
|
primary_key: id
|
|
1380
|
-
description: "UI screen specified in the OpenUI Lang grammar (per ADR 0166). One row per screen / coherent screen group. Application-product profile (other profiles emit headers-only). Source: authored `screens/*.md` (frontmatter + ```openui-lang block); the reverse toolkit produces these from a router + component-tree projection."
|
|
1434
|
+
description: "UI screen specified in the OpenUI Lang grammar (per M-ADR 0166). One row per screen / coherent screen group. Application-product profile (other profiles emit headers-only). Source: authored `screens/*.md` (frontmatter + ```openui-lang block); the reverse toolkit produces these from a router + component-tree projection."
|
|
1381
1435
|
foreign_keys:
|
|
1382
1436
|
- { column: product_id, references: products.id, nullable: false }
|
|
1383
1437
|
columns:
|
|
@@ -1385,29 +1439,29 @@ catalogues:
|
|
|
1385
1439
|
- { name: name, type: string, nullable: false, description: "Screen slug / display name." }
|
|
1386
1440
|
- { name: product_id, type: string, nullable: false, description: "Owning application-product." }
|
|
1387
1441
|
- { name: route, type: string, nullable: true, description: "Route path the screen is mounted at, when applicable." }
|
|
1388
|
-
- { name: status, type: string, nullable: true, description: "Maturity marker; uses the standard working | provisional | unknown | absent vocabulary (per ADR 0165) where applicable." }
|
|
1442
|
+
- { name: status, type: string, nullable: true, description: "Maturity marker; uses the standard working | provisional | unknown | absent vocabulary (per M-ADR 0165) where applicable." }
|
|
1389
1443
|
- { name: source, type: string, nullable: false, description: "screen-spec (forward) | screen-extraction (reverse)." }
|
|
1390
1444
|
- { name: domain, type: string, nullable: true, description: "Authored owning-domain hint from frontmatter `domain:` (a docs/domains/<domain>/ slug). Organisational grouping for multi-domain (platform-profile) SDDs; the authoritative screen->domain relationship is still derived via realises -> feature -> capability.domain_id (screen_feature). Empty when unauthored." }
|
|
1391
1445
|
- { name: group, type: string, nullable: true, description: "Authored sub-grouping hint from frontmatter `group:` — a finer organisational axis within (or orthogonal to) domain, e.g. shell | shell-embed | identity. Free-form adopter label; not an FK. Empty when unauthored." }
|
|
1392
|
-
- { name: context, type: string, nullable: true, description: "Bounded-context membership from frontmatter `context:` (per ADR 0170 §4.6). Free-form adopter label, orthogonal to domain/group — the consumed bounded context for a surface that spans several. Not an FK. Empty when unauthored. Added in schema 2.19.0." }
|
|
1393
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1446
|
+
- { name: context, type: string, nullable: true, description: "Bounded-context membership from frontmatter `context:` (per M-ADR 0170 §4.6). Free-form adopter label, orthogonal to domain/group — the consumed bounded context for a surface that spans several. Not an FK. Empty when unauthored. Added in schema 2.19.0." }
|
|
1447
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1394
1448
|
|
|
1395
1449
|
ui_components:
|
|
1396
1450
|
primary_key: id
|
|
1397
|
-
description: "An entry in the adopter-owned component registry that screens compose against (per ADR 0166) — the UI-structure contract. A screen composes registry components but never defines one. Application-product profile. Source: components referenced across the SDD's screen-spec ```openui-lang blocks (registry projection); the reverse toolkit discovers the authoritative registry from the design-system import surface."
|
|
1451
|
+
description: "An entry in the adopter-owned component registry that screens compose against (per M-ADR 0166) — the UI-structure contract. A screen composes registry components but never defines one. Application-product profile. Source: components referenced across the SDD's screen-spec ```openui-lang blocks (registry projection); the reverse toolkit discovers the authoritative registry from the design-system import surface."
|
|
1398
1452
|
foreign_keys:
|
|
1399
1453
|
- { column: product_id, references: products.id, nullable: false }
|
|
1400
1454
|
columns:
|
|
1401
1455
|
- { name: id, type: string, nullable: false, description: "Slugged PK: {product_id}-{component-slug}." }
|
|
1402
1456
|
- { name: name, type: string, nullable: false, description: "Component identifier as used in the grammar." }
|
|
1403
1457
|
- { name: product_id, type: string, nullable: false, description: "Owning application-product." }
|
|
1404
|
-
- { name: kind, type: string, nullable: true, description: "Optional classification: layout | display | input | chart | element | composite | remote | remote-iframe | remote-webcomponent. A `remote*` kind marks a micro-frontend federation seam (ADR 0166 §4.7)." }
|
|
1458
|
+
- { name: kind, type: string, nullable: true, description: "Optional classification: layout | display | input | chart | element | composite | remote | remote-iframe | remote-webcomponent. A `remote*` kind marks a micro-frontend federation seam (M-ADR 0166 §4.7)." }
|
|
1405
1459
|
- { name: source, type: string, nullable: false, description: "screen-spec (forward) | design-system-import (reverse)." }
|
|
1406
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1460
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1407
1461
|
|
|
1408
1462
|
screen_component:
|
|
1409
1463
|
primary_key: id
|
|
1410
|
-
description: "Edge: screen composes a UI component. Parsed from the screen-spec ```openui-lang block's component references (per ADR 0166)."
|
|
1464
|
+
description: "Edge: screen composes a UI component. Parsed from the screen-spec ```openui-lang block's component references (per M-ADR 0166)."
|
|
1411
1465
|
foreign_keys:
|
|
1412
1466
|
- { column: screen_id, references: screens.id, nullable: false }
|
|
1413
1467
|
- { column: component_id, references: ui_components.id, nullable: false }
|
|
@@ -1415,27 +1469,27 @@ catalogues:
|
|
|
1415
1469
|
- { name: id, type: string, nullable: false, description: "Composite PK: {screen_id}__{component_id}." }
|
|
1416
1470
|
- { name: screen_id, type: string, nullable: false }
|
|
1417
1471
|
- { name: component_id, type: string, nullable: false }
|
|
1418
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1472
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1419
1473
|
|
|
1420
1474
|
screen_feature:
|
|
1421
1475
|
primary_key: id
|
|
1422
|
-
description: "Edge: screen realises a feature (traceability). Forward: `realises:` frontmatter on the screen-spec. Reverse: route → feature mapping. Per ADR 0166."
|
|
1476
|
+
description: "Edge: screen realises a feature (traceability). Forward: `realises:` frontmatter on the screen-spec. Reverse: route → feature mapping. Per M-ADR 0166."
|
|
1423
1477
|
foreign_keys:
|
|
1424
1478
|
- { column: screen_id, references: screens.id, nullable: false }
|
|
1425
1479
|
# feature_id is profile-conditional external (2.23.0 mechanism, applied
|
|
1426
1480
|
# 2.24.0): an app/integration screen may realise a platform-resident
|
|
1427
|
-
# feature (ADR 0177 single-slug vocabulary). Internal for platform-profile
|
|
1481
|
+
# feature (M-ADR 0177 single-slug vocabulary). Internal for platform-profile
|
|
1428
1482
|
# (owns its features); resolved at aggregation for app/integration.
|
|
1429
1483
|
- { column: feature_id, references: features.id, nullable: false, external_for_profiles: [application-product, integration-product] }
|
|
1430
1484
|
columns:
|
|
1431
1485
|
- { name: id, type: string, nullable: false, description: "Composite PK: {screen_id}__{feature_id}. For app/integration builds the feature_id may be a bare realises slug until the aggregator resolves it to the platform feature id (then the PK is regenerated)." }
|
|
1432
1486
|
- { name: screen_id, type: string, nullable: false }
|
|
1433
1487
|
- { name: feature_id, type: string, nullable: false }
|
|
1434
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1488
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1435
1489
|
|
|
1436
1490
|
persona_screen:
|
|
1437
1491
|
primary_key: id
|
|
1438
|
-
description: "Edge: persona can access a screen. Forward: `persona_access:` frontmatter. Reverse: route persona-access guards, permission/feature-flag config, or a host shell's per-persona menu (where the backend pre-filters visible screens). Per ADR 0166."
|
|
1492
|
+
description: "Edge: persona can access a screen. Forward: `persona_access:` frontmatter. Reverse: route persona-access guards, permission/feature-flag config, or a host shell's per-persona menu (where the backend pre-filters visible screens). Per M-ADR 0166."
|
|
1439
1493
|
foreign_keys:
|
|
1440
1494
|
- { column: persona_id, references: personas.id, nullable: false }
|
|
1441
1495
|
- { column: screen_id, references: screens.id, nullable: false }
|
|
@@ -1443,11 +1497,11 @@ catalogues:
|
|
|
1443
1497
|
- { name: id, type: string, nullable: false, description: "Composite PK: {persona_id}__{screen_id}." }
|
|
1444
1498
|
- { name: persona_id, type: string, nullable: false }
|
|
1445
1499
|
- { name: screen_id, type: string, nullable: false }
|
|
1446
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1500
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1447
1501
|
|
|
1448
1502
|
screen_action:
|
|
1449
1503
|
primary_key: id
|
|
1450
|
-
description: "Edge: screen emits an action, optionally resolved to a catalogued event. The behavioural MFE seam — inter-bundle communication as a catalogued contract, not an ad-hoc string. Forward: `action=` declarations in the ```openui-lang block. Reverse: emitted custom-event / event-bus wiring. event_id is external-capable (the event may live in the platform SDD). Per ADR 0166 + ADR 0156."
|
|
1504
|
+
description: "Edge: screen emits an action, optionally resolved to a catalogued event. The behavioural MFE seam — inter-bundle communication as a catalogued contract, not an ad-hoc string. Forward: `action=` declarations in the ```openui-lang block. Reverse: emitted custom-event / event-bus wiring. event_id is external-capable (the event may live in the platform SDD). Per M-ADR 0166 + M-ADR 0156."
|
|
1451
1505
|
foreign_keys:
|
|
1452
1506
|
- { column: screen_id, references: screens.id, nullable: false }
|
|
1453
1507
|
- { column: event_id, references: events.id, nullable: true, external: true }
|
|
@@ -1455,25 +1509,25 @@ catalogues:
|
|
|
1455
1509
|
- { name: id, type: string, nullable: false, description: "Composite PK: {screen_id}__{action-slug}." }
|
|
1456
1510
|
- { name: screen_id, type: string, nullable: false }
|
|
1457
1511
|
- { name: action, type: string, nullable: false, description: "Declared action label emitted by the screen." }
|
|
1458
|
-
- { name: event_id, type: string, nullable: true, description: "Catalogued event the action maps to (per ADR 0156). External-capable; empty when the action does not resolve to a domain event." }
|
|
1459
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1512
|
+
- { name: event_id, type: string, nullable: true, description: "Catalogued event the action maps to (per M-ADR 0156). External-capable; empty when the action does not resolve to a domain event." }
|
|
1513
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1460
1514
|
|
|
1461
1515
|
conformance_finding:
|
|
1462
1516
|
primary_key: id
|
|
1463
|
-
description: "Conformance-reverse drift summary, one row per check (method ADR 0180). NOT produced by `catalogue build` (it reads the spec repo) — produced by `sdd-cli conformance --emit-finding` (which has the code repo) and federated here by the aggregator. Each row is a run-dated snapshot of declared-vs-observed drift for an implementation member (ADR 0181 role/lifecycle), so estate-wide conformance is queryable (aggregate union) and trendable (snapshot diff across runs/commits). Verdicts are PROVISIONAL — disposition (code-defect | spec-stale | divergence) is triage, recorded elsewhere. No enforced FK on implementation_repo: the code repo is frequently cross-repo and not in this SDD's repositories.csv. Added in schema 2.25.0."
|
|
1517
|
+
description: "Conformance-reverse drift summary, one row per check (method M-ADR 0180). NOT produced by `catalogue build` (it reads the spec repo) — produced by `sdd-cli conformance --emit-finding` (which has the code repo) and federated here by the aggregator. Each row is a run-dated snapshot of declared-vs-observed drift for an implementation member (M-ADR 0181 role/lifecycle), so estate-wide conformance is queryable (aggregate union) and trendable (snapshot diff across runs/commits). Verdicts are PROVISIONAL — disposition (code-defect | spec-stale | divergence) is triage, recorded elsewhere. No enforced FK on implementation_repo: the code repo is frequently cross-repo and not in this SDD's repositories.csv. Added in schema 2.25.0."
|
|
1464
1518
|
columns:
|
|
1465
1519
|
- { name: id, type: string, nullable: false, description: "Check id (unique within the SDD; source_sdd_id disambiguates across the federation)." }
|
|
1466
1520
|
- { name: check_id, type: string, nullable: false }
|
|
1467
|
-
- { name: target, type: string, nullable: false, description: "code-vs-contract | binding-vs-reality (ADR 0180 §2.5)." }
|
|
1468
|
-
- { name: implementation_repo, type: string, nullable: true, description: "The implementation member the check is about (ADR 0181). Empty when checks were not binding-derived." }
|
|
1469
|
-
- { name: role, type: string, nullable: true, description: "as-is | to-be (ADR 0181). Empty when not binding-derived." }
|
|
1470
|
-
- { name: lifecycle, type: string, nullable: true, description: "planned | migrating | active | legacy-active | deprecated | decommissioned (ADR 0181)." }
|
|
1521
|
+
- { name: target, type: string, nullable: false, description: "code-vs-contract | binding-vs-reality (M-ADR 0180 §2.5)." }
|
|
1522
|
+
- { name: implementation_repo, type: string, nullable: true, description: "The implementation member the check is about (M-ADR 0181). Empty when checks were not binding-derived." }
|
|
1523
|
+
- { name: role, type: string, nullable: true, description: "as-is | to-be (M-ADR 0181). Empty when not binding-derived." }
|
|
1524
|
+
- { name: lifecycle, type: string, nullable: true, description: "planned | migrating | active | legacy-active | deprecated | decommissioned (M-ADR 0181)." }
|
|
1471
1525
|
- { name: declared, type: number, nullable: false, description: "Count of the declared surface (spec/binding/contract)." }
|
|
1472
1526
|
- { name: observed, type: number, nullable: false, description: "Count of the observed surface (code)." }
|
|
1473
1527
|
- { name: matched, type: number, nullable: false }
|
|
1474
1528
|
- { name: conformance_pct, type: number, nullable: false, description: "matched / denom * 100 (denom per the check)." }
|
|
1475
1529
|
- { name: declared_not_observed, type: number, nullable: false, description: "Count declared but not observed (candidate: spec-stale / unimplemented / dangling)." }
|
|
1476
1530
|
- { name: observed_not_declared, type: number, nullable: false, description: "Count observed but not declared (candidate: binding-stale / code-defect)." }
|
|
1477
|
-
- { name: needs_triage, type: boolean, nullable: false, description: "True when any asymmetry exists. Triage, not auto-fail (ADR 0180 §2.3)." }
|
|
1531
|
+
- { name: needs_triage, type: boolean, nullable: false, description: "True when any asymmetry exists. Triage, not auto-fail (M-ADR 0180 §2.3)." }
|
|
1478
1532
|
- { name: run_date, type: string, nullable: false, description: "ISO date of the conformance run — the snapshot stamp enabling trend over time." }
|
|
1479
|
-
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
1533
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|