@sdd-method/sdd-cli 1.12.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/catalogue/aggregate.d.ts +18 -7
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregate.js +272 -43
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts +9 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregation-manifest-loader.js +16 -4
- package/dist/lib/catalogue/aggregation-manifest-loader.js.map +1 -1
- package/dist/lib/catalogue/baseline-check.d.ts.map +1 -1
- package/dist/lib/catalogue/baseline-check.js +27 -0
- package/dist/lib/catalogue/baseline-check.js.map +1 -1
- package/dist/lib/catalogue/builders/capabilities.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/capabilities.js +141 -23
- package/dist/lib/catalogue/builders/capabilities.js.map +1 -1
- package/dist/lib/catalogue/builders/capability-edges.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/capability-edges.js +8 -9
- package/dist/lib/catalogue/builders/capability-edges.js.map +1 -1
- package/dist/lib/catalogue/builders/capability-spec.d.ts +4 -3
- package/dist/lib/catalogue/builders/capability-spec.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/capability-spec.js +19 -3
- package/dist/lib/catalogue/builders/capability-spec.js.map +1 -1
- package/dist/lib/catalogue/builders/contracts.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/contracts.js +17 -0
- package/dist/lib/catalogue/builders/contracts.js.map +1 -1
- package/dist/lib/catalogue/builders/feature-grounding.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/feature-grounding.js +15 -0
- package/dist/lib/catalogue/builders/feature-grounding.js.map +1 -1
- package/dist/lib/catalogue/builders/repo-edges.js +16 -0
- package/dist/lib/catalogue/builders/repo-edges.js.map +1 -1
- package/dist/lib/catalogue/builders/service-contract.d.ts.map +1 -1
- package/dist/lib/catalogue/builders/service-contract.js +5 -0
- package/dist/lib/catalogue/builders/service-contract.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +221 -12
- package/dist/lib/catalogue/manifest-loader.d.ts +8 -0
- package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/manifest-loader.js +9 -0
- package/dist/lib/catalogue/manifest-loader.js.map +1 -1
- package/dist/lib/catalogue/rubric-coverage-map.yaml +1 -0
- package/dist/lib/catalogue/traceability-loader.d.ts +28 -0
- package/dist/lib/catalogue/traceability-loader.d.ts.map +1 -1
- package/dist/lib/catalogue/traceability-loader.js +55 -0
- package/dist/lib/catalogue/traceability-loader.js.map +1 -1
- package/dist/lib/plan/read-sdd.d.ts +1 -0
- package/dist/lib/plan/read-sdd.d.ts.map +1 -1
- package/dist/lib/plan/read-sdd.js +1 -1
- package/dist/lib/plan/read-sdd.js.map +1 -1
- package/package.json +2 -2
- package/scripts/vitest-teardown.mjs +40 -0
|
@@ -8,12 +8,21 @@
|
|
|
8
8
|
# - Downstream tools (DuckDB, pandas) for type information.
|
|
9
9
|
# - sdd-mcp `sdd://catalogue/schema` resource (Phase 8).
|
|
10
10
|
#
|
|
11
|
-
# Distribution:
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
11
|
+
# Distribution: NOT via a baseline bundle. This file relocated into sdd-cli at
|
|
12
|
+
# v0.9.0 and is in NO seed list — the three forward seed lists record the
|
|
13
|
+
# relocation in their own comments. Verified in-tarball (2026-08-09): absent from
|
|
14
|
+
# platform-baseline, app-baseline, integration-baseline and
|
|
15
|
+
# reverse-extension-baseline; present in the installed CLI at
|
|
16
|
+
# dist/lib/catalogue/canonical-schema.yaml. So a schema change reaches estates
|
|
17
|
+
# through a CLI RELEASE, not through a cut or a sync, and the M-ADR 0114
|
|
18
|
+
# refuse-or-overwrite/MANAGED_PATHS drift model does NOT apply to it.
|
|
19
|
+
#
|
|
20
|
+
# ⚠ The stale form of this note claimed the opposite on all three counts
|
|
21
|
+
# (ships in every baseline / arrives via `sdd-cli sync` / guarded by
|
|
22
|
+
# MANAGED_PATHS.txt). That claim mis-scoped a release plan once — it makes a
|
|
23
|
+
# schema minor look like a multi-repo bundle wave when it is a CLI publish.
|
|
24
|
+
# Truth direction for the copies: canonical HERE → vendored in sdd-cli via
|
|
25
|
+
# scripts/sync-canonical-schema.sh. Never author into the vendored copy.
|
|
17
26
|
#
|
|
18
27
|
# Schema versioning: every structural change increments schema_version.
|
|
19
28
|
#
|
|
@@ -62,9 +71,144 @@
|
|
|
62
71
|
# Builder contract: see docs/method/methods/guides/catalogue-builder-specification.md.
|
|
63
72
|
# Category taxonomy: see docs/method/methods/standards/product-category-taxonomy.md.
|
|
64
73
|
|
|
65
|
-
schema_version: "3.
|
|
74
|
+
schema_version: "3.8.0"
|
|
66
75
|
schema_owner: "sdd-method"
|
|
67
76
|
schema_status: "canonical"
|
|
77
|
+
# Bump rationale (3.8.0 — additive minor, per M-ADR 0157 §4.3 and M-ADR 0143 §4.4 as
|
|
78
|
+
# amended): `capability_service.role` gains a closed enum (`enums.capability_service_role`,
|
|
79
|
+
# bound via column_enums) carrying the four values the capability traceability manifest
|
|
80
|
+
# template has documented since it offered the field — primary | related | dependency |
|
|
81
|
+
# backend-gateway. Until now the catalogue column was an undescribed free string, so no
|
|
82
|
+
# builder could filter on a role and no consumer could be told what one meant. Why now:
|
|
83
|
+
# `repo_capability` is described as "repo CONTRIBUTES to capability" but its universal
|
|
84
|
+
# reverse path (capability_service ⋈ services.primary_repo_id) emitted an edge for EVERY
|
|
85
|
+
# role, so a capability's declared `dependency` on a service surfaced downstream as that
|
|
86
|
+
# service's repo implementing the capability. Measured before the fix: 102 of 165
|
|
87
|
+
# repo_capability rows in the forward reference estate (62%) rested only on non-primary
|
|
88
|
+
# roles (dependency 55, related 47); one row in the reverse reference estate. The builder
|
|
89
|
+
# now excludes `dependency` from Path X and keeps `related` and `backend-gateway`, which
|
|
90
|
+
# participate in delivering the capability (`related` was realising in every measured
|
|
91
|
+
# use). Nullable stays true — the enum validator checks values, not presence. Also in this
|
|
92
|
+
# bump: the 3.7.0 rationale below says "43 catalogues"; the count is 44 (every catalogue
|
|
93
|
+
# carrying `source_sdd_id`), and the 45th `platform_sdd_id` — on
|
|
94
|
+
# `cross_sdd_platform_capability` — is that edge's own platform leg (schema 2.9.0), not
|
|
95
|
+
# the 0208 stamp (M-ADR 0208 §4.4 as corrected). Zero authored-content change.
|
|
96
|
+
# Bump rationale (3.7.0 — additive minor, 2026-09-02, per M-ADR 0208): every node
|
|
97
|
+
# catalogue that carries `source_sdd_id` gains `platform_sdd_id` — the platform a row
|
|
98
|
+
# belongs to, stamped by the aggregator from its own identity with preserve-if-set
|
|
99
|
+
# semantics (M-ADR 0134 §4.5 step 4 applied to a second column), per the fill rule in
|
|
100
|
+
# 0208 §4.4. Nullable; per-SDD builders leave it empty. Why: every aggregate the method
|
|
101
|
+
# had produced held exactly one platform-root, so "which platform does this row belong
|
|
102
|
+
# to" was answered by membership and never stored. The reference adopter's
|
|
103
|
+
# organisation-tier aggregate holds 96 platform-roots, and there the question has no
|
|
104
|
+
# answer in the data: the federation edge for members, and the org-tier key of
|
|
105
|
+
# `domains` (`(platform_sdd_id, id)` — two platforms may each own `identity`), both
|
|
106
|
+
# need this column. 43 catalogues; measured on the org rollup that 1,959 rows carry a
|
|
107
|
+
# domain reference across 13 FK columns and 20 member capability rows reference a
|
|
108
|
+
# platform domain in the second adopter, so the column is needed on member rows now,
|
|
109
|
+
# not later. Zero authored-content change. Also corrected in this bump: the 2.28.0
|
|
110
|
+
# rationale below says the platform cardinality is "an invariant nothing yet enforces"
|
|
111
|
+
# — stale since M-ADR 0189 §4.4 shipped checkPlatformKindUniqueness; 0208 §4.2 gives
|
|
112
|
+
# that check its tier. And the `subsystem` enum text "estate model" -> "platform model".
|
|
113
|
+
#
|
|
114
|
+
# Bump rationale (3.6.0 — additive-narrowing minor, 2026-08-09): 3.5.0 admitted TWO
|
|
115
|
+
# ORTHOGONAL AXES into `capabilities.status`, and this corrects it. Raised by the
|
|
116
|
+
# forward estate against the producer, one release later.
|
|
117
|
+
#
|
|
118
|
+
# M-ADR 0201 §1, verbatim: "The spec-lifecycle gate validates a `**Status:**`
|
|
119
|
+
# vocabulary of `placeholder | first-draft | detailed-pre-lock` — FORWARD-AUTHORING
|
|
120
|
+
# STAGES, each with structural requirements." §4.1 extends that ladder with
|
|
121
|
+
# `reverse-derived`. So `placeholder` and `detailed-pre-lock` are rungs on the
|
|
122
|
+
# SPEC-AUTHORING ladder, which lives in the spec header and is already gated there.
|
|
123
|
+
# 3.5.0 admitted both into a LIFECYCLE column, so one field carried two axes.
|
|
124
|
+
#
|
|
125
|
+
# Measured at the forward estate (78 canonical manifests / 74 capability rows):
|
|
126
|
+
# every capability spec carries a `**Status:**` header — detailed-pre-lock 57,
|
|
127
|
+
# placeholder 15, first-draft 2, ZERO missing, and NOT ONE of those is a lifecycle
|
|
128
|
+
# word. The two surfaces disagree on 61 of 78 rows. That is NOT 61 defects: it is
|
|
129
|
+
# two axes disagreeing because they ARE two axes, and reading it as defects is the
|
|
130
|
+
# error the figure invites.
|
|
131
|
+
#
|
|
132
|
+
# So `capabilities.status` narrows to LIFECYCLE ONLY:
|
|
133
|
+
# active | planned | exploration | deprecated
|
|
134
|
+
# `exploration` stays — it is NOT on M-ADR 0201's authoring ladder, it has M-ADR
|
|
135
|
+
# 0089's workflow and gates behind it, and it describes the capability rather than
|
|
136
|
+
# its document. `placeholder` and `detailed-pre-lock` are RETRACTED from this column.
|
|
137
|
+
#
|
|
138
|
+
# ⚠ THE SYMMETRY THAT SETTLED IT: 3.5.0 added `contract_provenance` precisely so a
|
|
139
|
+
# PROVENANCE claim would stop being written into a MATURITY ladder — and in the same
|
|
140
|
+
# change-set wrote an AUTHORING-STAGE claim into a LIFECYCLE ladder, one field over.
|
|
141
|
+
# Same defect class, same change-set, opposite directions. The fix for one is the
|
|
142
|
+
# argument for the other.
|
|
143
|
+
#
|
|
144
|
+
# ⚠ Why this is a correction and not an amendment of 3.5.0: 3.5.0 was never
|
|
145
|
+
# published to the registry, but it WAS vendored, built into a locally-installed CLI,
|
|
146
|
+
# and cited by an estate's committed work. A version that means two different things
|
|
147
|
+
# is the defect this programme keeps paying for, so the vocabulary change gets its
|
|
148
|
+
# own number.
|
|
149
|
+
#
|
|
150
|
+
# COST, stated because it lands on an estate rather than here: the forward estate's
|
|
151
|
+
# re-authoring goes from 1 row back to 18 (11 `placeholder` + 6 `detailed-pre-lock`
|
|
152
|
+
# + 1 `first-draft`). No information is lost — the authoring stage those 17 rows were
|
|
153
|
+
# expressing is ALREADY declared in each spec's own header, where the spec-lifecycle
|
|
154
|
+
# gate validates it. What changes is that the lifecycle column stops carrying a
|
|
155
|
+
# second axis, so a reader can finally tell what `capabilities.status` is claiming.
|
|
156
|
+
# Nothing is enforced: still no `column_enums` binding, so the 18 surface as
|
|
157
|
+
# non-gating convention findings and no build breaks.
|
|
158
|
+
# Bump rationale (3.5.0 — additive minor, 2026-08-09): the capability lifecycle
|
|
159
|
+
# vocabulary is widened to what estates measurably author, and contract-set
|
|
160
|
+
# PROVENANCE gains a column so it stops being written into a maturity field.
|
|
161
|
+
# Both halves come from estates executing the method rather than reading it.
|
|
162
|
+
#
|
|
163
|
+
# 1. `capabilities.status` gains `exploration`, `placeholder`, `detailed-pre-lock`
|
|
164
|
+
# alongside active | planned | deprecated. Measured: 44 of one estate's 78
|
|
165
|
+
# manifests were outside the old three-member set (exploration 26,
|
|
166
|
+
# placeholder 11, detailed-pre-lock 6, first-draft 1). Each admitted value
|
|
167
|
+
# VARIES WITHIN a domain — the ruled discriminator separating a genuine phase
|
|
168
|
+
# from an authoring convention — and `exploration` additionally has M-ADR 0089's
|
|
169
|
+
# workflow and a named gate behind it. Admitting the three takes that estate's
|
|
170
|
+
# re-authoring from 38 rows to 1; the earlier plan of admitting only
|
|
171
|
+
# `detailed-pre-lock` would have re-authored 37 rows that were declaring
|
|
172
|
+
# something TRUE.
|
|
173
|
+
# STILL NOT BOUND via column_enums, deliberately and stagedly — see the column
|
|
174
|
+
# description. Out-of-vocabulary values are carried and reported, never emptied
|
|
175
|
+
# and never rejected; `nullable` stays false so no cell is emptied and the
|
|
176
|
+
# empty-means-unauthored-or-rejected ambiguity does not arise. Bind only when
|
|
177
|
+
# the convention-finding count is measured ZERO at both estates. Measured at
|
|
178
|
+
# 3.5.0: forward estate 1 residual row (`first-draft`, n=1, referred to that
|
|
179
|
+
# estate); reverse estate ZERO. So binding is one row away, not a distant goal.
|
|
180
|
+
#
|
|
181
|
+
# ⚠ A correction recorded because the wrong figure nearly shipped in this very
|
|
182
|
+
# comment: an earlier draft claimed the reverse estate held 20 out-of-vocabulary
|
|
183
|
+
# `capability.status` rows (`reverse-first-draft`). It does not. That value lives
|
|
184
|
+
# at `legacy.status`, a different field in a legacy block, and the 20 was
|
|
185
|
+
# produced by an indentation-matched text search rather than a structural read.
|
|
186
|
+
# Structurally, the reverse estate's `capability.status` is 100% in-vocabulary
|
|
187
|
+
# across 180 manifests. Read a key by its PATH, never by its indentation.
|
|
188
|
+
#
|
|
189
|
+
# 2. `capabilities.contract_provenance` (nullable) added, reusing the shipped
|
|
190
|
+
# `authoring-mode` vocabulary (hand-authored | reverse-extracted | generated)
|
|
191
|
+
# rather than inventing a second provenance vocabulary. Strictly orthogonal to
|
|
192
|
+
# `traceability.contracts.status`. Evidence: 2 reverse-estate manifests wrote
|
|
193
|
+
# `reverse-extracted` into contracts.status, where it is invalid, because a
|
|
194
|
+
# COMPLETE reverse-derived contract surface could not say both true things at
|
|
195
|
+
# once.
|
|
196
|
+
#
|
|
197
|
+
# ⚠ Recorded because it bounds what this bump achieves: the maturity ladder the new
|
|
198
|
+
# column is orthogonal to has NO catalogue column — `traceability.contracts.status`
|
|
199
|
+
# is validator-enforced but uncatalogued, and therefore queryable by nothing. The
|
|
200
|
+
# provenance half is given a column so it does not join that class; giving the
|
|
201
|
+
# ladder one is a candidate follow-on, deliberately not bundled here.
|
|
202
|
+
#
|
|
203
|
+
# ⚠ One rule was MEASURED FALSE during design and is NOT shipped: "a `placeholder`
|
|
204
|
+
# capability has no authored features" — 10 of 11 carry 1–5 features. `placeholder`
|
|
205
|
+
# is admitted with its rule explicitly OPEN, referred to the estate. An admitted
|
|
206
|
+
# value with an honestly-open rule beats an invented rule that the data refutes.
|
|
207
|
+
#
|
|
208
|
+
# Additive and backward-compatible; SCHEMA_COMPAT unchanged at "^3.0.0". No
|
|
209
|
+
# existing check changes verdict, no column changes nullability, no value is
|
|
210
|
+
# retired. Reaches estates via a CLI RELEASE, not a cut — this file is in no
|
|
211
|
+
# bundle.
|
|
68
212
|
# Bump rationale (3.4.0 — additive minor, 2026-08-08, per M-ADR 0207): the
|
|
69
213
|
# forward scaffold declaration joins the metamodel. Two new derived catalogues
|
|
70
214
|
# (`scaffolds`, `scaffold_items`) and three new bound enums (`scaffold_status`,
|
|
@@ -590,7 +734,8 @@ schema_status: "canonical"
|
|
|
590
734
|
# no c4_containers rows, and no finding for exactly the SDDs the promotion
|
|
591
735
|
# path creates (adopter finding F5 / gov WS6). `platform` is NOT reused for
|
|
592
736
|
# these rows: the enum documents it as "exactly one per ecosystem after
|
|
593
|
-
# federation aggregation"
|
|
737
|
+
# federation aggregation" — enforced since M-ADR 0189 §4.4 by
|
|
738
|
+
# checkPlatformKindUniqueness, and tier-scoped per M-ADR 0208 §4.2 — reuse would
|
|
594
739
|
# have broken it silently. Backward-compatible; SCHEMA_COMPAT stays "^2.0.0".
|
|
595
740
|
# Bump rationale (2.26.0 — additive minor, per the repo-registry federation,
|
|
596
741
|
# 2026-06-18): marks `repo_contract.contract_id` external_for_profiles
|
|
@@ -753,6 +898,24 @@ enums:
|
|
|
753
898
|
- { value: weighted, description: "Weighted 1-5 dimensions rolled into a weighted_score against a pass threshold, with flags and hard gates. The forward house form; all fifteen method-side registries use it." }
|
|
754
899
|
- { value: banded, description: "Dimensions summed to an integer total and mapped to a named band. The reverse family's form. Added in 3.3.0. The band vocabulary is PER-RUBRIC and deliberately unbound — see the band column." }
|
|
755
900
|
|
|
901
|
+
capability_service_role:
|
|
902
|
+
description: >
|
|
903
|
+
The part a service plays in delivering ONE capability. A property of
|
|
904
|
+
the capability↔service RELATIONSHIP, never of the service: the same
|
|
905
|
+
service is legitimately `primary` for capabilities in its own domain
|
|
906
|
+
and `backend-gateway` for capabilities elsewhere. Authored in the
|
|
907
|
+
capability traceability manifest services[].role (see the
|
|
908
|
+
capability-traceability-manifest-template). Bound in 3.8.0; the
|
|
909
|
+
values and their meanings are the template's, unchanged. Consumers
|
|
910
|
+
deriving "which repos realise this capability" MUST read this column
|
|
911
|
+
or use repo_capability, which excludes `dependency` (M-ADR 0157 §4.3
|
|
912
|
+
as amended) — a repo_capability row is a contribution claim.
|
|
913
|
+
values:
|
|
914
|
+
- { value: primary, description: "Realises this capability." }
|
|
915
|
+
- { value: related, description: "Participates in delivering this capability without being its primary realiser. Contributes; kept in repo_capability." }
|
|
916
|
+
- { value: dependency, description: "This capability DEPENDS ON the service — the inverse direction of contribution. The relationship is real and catalogued here; it does NOT produce a repo_capability row." }
|
|
917
|
+
- { value: backend-gateway, description: "Owned by ANOTHER domain and the sanctioned entry point into that domain's data for this capability — not merely a dependency, the door in. Expect it on cross-domain rows only. Contributes; kept in repo_capability." }
|
|
918
|
+
|
|
756
919
|
c4_system_kind:
|
|
757
920
|
description: >
|
|
758
921
|
Architectural kind of a C4 system. Derived 1:1 from the originating
|
|
@@ -767,8 +930,8 @@ enums:
|
|
|
767
930
|
application-product → application
|
|
768
931
|
integration-provider → integration
|
|
769
932
|
values:
|
|
770
|
-
- { value: platform, description: "
|
|
771
|
-
- { value: subsystem, description: "A promoted platform subsystem (M-ADR 0170 §4.2) — a separate deployable that is a peer System in the
|
|
933
|
+
- { value: platform, description: "A platform-root system — the one system that identifies a platform (M-ADR 0208 §4.1; 'platform-ecosystem' is the long form, 1:1 with the root). Exactly one per PLATFORM; an organisation-tier aggregate legitimately carries one per constituent platform, keyed by platform_sdd_id (0208 §4.2). An invariant `subsystem` exists to protect — do not reuse `platform` for subsystem rows." }
|
|
934
|
+
- { value: subsystem, description: "A promoted platform subsystem (M-ADR 0170 §4.2) — a separate deployable that is a peer System in the platform model, contained by the platform root on the same footing as application and integration (M-ADR 0208 §4.1). Added 2.28.0 per M-ADR 0133 §4.2c." }
|
|
772
935
|
- { value: application, description: "An application-product system, consumes platform services and contracts." }
|
|
773
936
|
- { value: integration, description: "An integration-provider system, bridges an external provider into the platform." }
|
|
774
937
|
|
|
@@ -931,6 +1094,7 @@ catalogues:
|
|
|
931
1094
|
- { 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)." }
|
|
932
1095
|
- { name: repo_count, type: int, nullable: false }
|
|
933
1096
|
- { 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." }
|
|
1097
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
934
1098
|
|
|
935
1099
|
products: &products_def
|
|
936
1100
|
primary_key: id
|
|
@@ -956,6 +1120,7 @@ catalogues:
|
|
|
956
1120
|
- { name: highest_snapshot_impact, type: string, nullable: true }
|
|
957
1121
|
- { name: repo_count, type: int, nullable: false, description: "Number of repos mapped to this product." }
|
|
958
1122
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1123
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
959
1124
|
|
|
960
1125
|
applications:
|
|
961
1126
|
<<: *products_def
|
|
@@ -980,6 +1145,7 @@ catalogues:
|
|
|
980
1145
|
- { name: pattern_qualifier, type: string, nullable: true, description: "Free-text sub-variant from `patternQualifier` where delivery semantics differ materially within a pattern (e.g. poll as a provider-issued ordered cursor vs a client-built window). Deliberately unconstrained — the method owns the pattern vocabulary, not every provider's delivery nuance. Added in 2.45.0." }
|
|
981
1146
|
- { name: exemplar, type: string, nullable: true, description: "`true` when the emitting SDD is a reference exemplar (demonstrates a profile shape rather than modelling a real provider relationship); empty otherwise. Derived from the SDD manifest's `exemplar:` field (sdd-manifest-schema 1.8.0), same source as `products.exemplar` — neither column is independently authorable. Carried on `sub_integrations` rows too, INHERITED from the emitting SDD. That deliberately differs from `ingestion_pattern`/`invocation_pattern`, which are empty on sub rows, and the difference is the point: a pattern is a MECHANISM (how this integration acquires data), genuinely one per SDD, whereas `exemplar` is a REALITY STATUS that propagates to everything the SDD emits — if the SDD is a demonstration then every provider relationship it declares is a demonstration. Leaving sub rows empty would flag the umbrella and count its demonstration sub-providers as real, reproducing the rollup overcount this column exists to fix one level down. Do not normalise it to match the pattern columns. The trade accepted: a real SDD with one demonstration sub-provider is unexpressible — a state that should not exist. Added in 2.46.0." }
|
|
982
1147
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1148
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
983
1149
|
|
|
984
1150
|
integration_component:
|
|
985
1151
|
primary_key: id
|
|
@@ -1027,6 +1193,7 @@ catalogues:
|
|
|
1027
1193
|
- { name: primary_entities, type: string, nullable: true, description: "Semicolon-joined `dataFlow.primaryEntities`. Adopter-tier entity names; joined rather than normalised because the tier is descriptive, not an FK surface." }
|
|
1028
1194
|
- { name: declared_in, type: string, nullable: false, description: "components-array | component-manifest — WHICH of M-ADR 0171 §9.1's two homes declared this component. Added in 2.49.0, when the second home became catalogued. Required because §10.1 states that any coverage reasoning MUST say which form it counts, and once one table holds both, a consumer cannot tell them apart: merging them without this recreates the reference-exemplar problem — well-formed rows that do not mean what a consumer assumes. Measured at the time of wiring: the array form was 15 components across 5 SDDs, the per-component form 86 across 21, and the two are DISJOINT (no id collision, no SDD using both). `resolution` also reads differently by form — for the array form `componentRepo` is an optional declaration (0 of 15 declared it); for the per-component form the containing `repos/<component>/` directory IS the repo, so linkage is structural rather than declared." }
|
|
1029
1195
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1196
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1030
1197
|
|
|
1031
1198
|
adrs:
|
|
1032
1199
|
primary_key: id
|
|
@@ -1044,6 +1211,7 @@ catalogues:
|
|
|
1044
1211
|
- { name: inference_confidence, type: string, nullable: true, description: "high | medium | low (reverse-inferred ADRs only)." }
|
|
1045
1212
|
- { name: supersedes_raw, type: string, nullable: true, description: "Raw text from Supersedes bullet for later parsing." }
|
|
1046
1213
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1214
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1047
1215
|
|
|
1048
1216
|
glossary_items:
|
|
1049
1217
|
primary_key: id
|
|
@@ -1060,6 +1228,7 @@ catalogues:
|
|
|
1060
1228
|
- { name: evidence, type: string, nullable: true }
|
|
1061
1229
|
- { name: notes, type: string, nullable: true }
|
|
1062
1230
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1231
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1063
1232
|
|
|
1064
1233
|
glossary_xref:
|
|
1065
1234
|
primary_key: id
|
|
@@ -1086,6 +1255,7 @@ catalogues:
|
|
|
1086
1255
|
- { name: glossary_item_id, type: string, nullable: false }
|
|
1087
1256
|
- { name: status, type: string, nullable: false, description: "aligned | matched_direct. Conflicting statuses within a domain resolve matched_direct > aligned with a divergence finding." }
|
|
1088
1257
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1258
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1089
1259
|
|
|
1090
1260
|
services:
|
|
1091
1261
|
primary_key: id
|
|
@@ -1107,6 +1277,7 @@ catalogues:
|
|
|
1107
1277
|
- { 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." }
|
|
1108
1278
|
- { name: description, type: string, nullable: true }
|
|
1109
1279
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1280
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1110
1281
|
column_enums:
|
|
1111
1282
|
component_type: enums.service_type # canonical builder validates against the service_type enum above
|
|
1112
1283
|
|
|
@@ -1128,13 +1299,15 @@ catalogues:
|
|
|
1128
1299
|
- { 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." }
|
|
1129
1300
|
- { 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." }
|
|
1130
1301
|
- { name: description, type: string, nullable: true }
|
|
1131
|
-
- { name: status, type: string, nullable: false, description: "active | planned | deprecated. Default 'active'." }
|
|
1302
|
+
- { name: status, type: string, nullable: false, description: "Capability LIFECYCLE phase — this column carries ONE axis and the reader may rely on that. active | planned | exploration | deprecated. Default 'active'. History, because the shape of the mistake is the useful part: the prior three-member set (active|planned|deprecated) could not express what estates authored, so 3.5.0 widened it to six on measured evidence — 44 of one estate's 78 manifests were outside it (exploration 26, placeholder 11, detailed-pre-lock 6, first-draft 1), each recurring value varying WITHIN a domain, which is the ruled discriminator for a genuine phase over an authoring convention. But 3.6.0 RETRACTED `placeholder` and `detailed-pre-lock`: per M-ADR 0201 §1 those are rungs on the SPEC-AUTHORING ladder (`placeholder | first-draft | detailed-pre-lock`, plus §4.1's `reverse-derived`), declared in each spec's own `**Status:**` header and gated there by the spec-lifecycle gate. Admitting them here made one column carry two orthogonal axes, so a reader could not tell whether `placeholder` described the capability or its document. **Where the other axis lives: the spec header. Do not re-import it here.** `exploration` stays and is NOT authoring vocabulary — it is absent from 0201's ladder, has M-ADR 0089's workflow and named gates behind it, and describes the capability rather than its spec; a capability declaring it must carry a populated `traceability.exploration` block, and one that does not is a loud contradiction (validate-traceability enforces this; measured 0 of 26 violations). ⚠ A rule this column deliberately does NOT carry: `placeholder`'s. The obvious one (no authored features) was MEASURED FALSE — 4 of 11 carried features, one of them 9 — and the deeper reason no rule fit is that `placeholder` was never making a claim about the capability at all. That unwritable rule was the first symptom of the axis error, before anyone had named it. ⚠ DELIBERATELY NOT BOUND via column_enums, and this is staged rather than permanent: binding carries hard-fail teeth, and at 3.5.0 one out-of-vocabulary row remains (forward estate, `first-draft`, n=1, referred to that estate; the reverse estate measures ZERO across 180 manifests). An out-of-vocabulary value is CARRIED, not emptied and not rejected, and is reported as a convention finding by validate-traceability — nullable stays false and no cell is ever emptied, so the empty-means-unauthored-or-rejected ambiguity of the products.synthesis_band / quality_scores.gate precedents does not arise here. Bind only once that count is ZERO at both estates; binding a set not proven to cover what estates author is how synthesis_band earned its deprecation. On drift and enforcement, stated with its confound rather than as a slogan: the enforced sibling `contracts.status` drifted 1.2% (2 of 172) while this unenforced field drifted 56% (44 of 78) at the SAME estate — but the other estate's copy of this same unenforced field drifted 0% of 180, so enforcement is not the only variable. The difference is authoring shape: the forward estate hand-authors per capability across 13 domains and explores vocabulary doing it, while the reverse estate's manifests come from one largely uniform extraction process. That uniformity is itself the phase-vs-convention discriminator firing — a value uniform across a whole estate is tracking the process that wrote it." }
|
|
1132
1303
|
- { name: spec_path, type: string, nullable: true, description: "Path to capability spec file when one exists." }
|
|
1304
|
+
- { name: contract_provenance, type: string, nullable: true, description: "How this capability's declared contract SET was produced, from `traceability.contracts.provenance`. hand-authored | reverse-extracted | generated — the vocabulary the method already ships for `authoring-mode`, reused deliberately so provenance has one vocabulary and not two. Empty means undeclared, and undeclared reads as `hand-authored` by convention. Added at 3.5.0. ⚠ STRICTLY ORTHOGONAL to the contract-set maturity ladder (`traceability.contracts.status`: planned | provisional | partial | complete | locked | none): provenance never constrains status and status never constrains provenance, and `reverse-extracted` + `complete` is the legitimate pair that motivated the field. Evidence: 2 reverse-estate manifests had written `reverse-extracted` INTO contracts.status, where it is invalid, because a complete reverse-derived contract surface had no way to say both true things at once and the author picked the provenance one. A rule here that constrained maturity would re-create exactly that defect. ⚠ Note the asymmetry this column exposes and does not fix: the maturity ladder it is orthogonal to has NO catalogue column at all — `traceability.contracts.status` is validator-enforced but uncatalogued, so it is queryable by no consumer. That is the authored-but-uncatalogued class (a block with no column has no automated reader, so nothing can notice when it is absent or wrong); this column is given one precisely so the provenance half does not join it. Giving the ladder a column is a candidate follow-on, not done here." }
|
|
1133
1305
|
- { name: source, type: string, nullable: false, description: "capability-tree | product-map | capability-spec." }
|
|
1134
1306
|
- { name: runway_classification, type: string, nullable: true, description: "Business | Enabler-Runway | Hybrid (forward declares; reverse nullable until backfilled)." }
|
|
1135
1307
|
- { 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." }
|
|
1136
1308
|
- { 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." }
|
|
1137
1309
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1310
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1138
1311
|
|
|
1139
1312
|
feature_groups:
|
|
1140
1313
|
primary_key: id
|
|
@@ -1160,6 +1333,7 @@ catalogues:
|
|
|
1160
1333
|
- { name: description, type: string, nullable: true, description: "Authored description (when group has explicit metadata) or null when derived from heading only." }
|
|
1161
1334
|
- { 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." }
|
|
1162
1335
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1336
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1163
1337
|
|
|
1164
1338
|
features:
|
|
1165
1339
|
primary_key: id
|
|
@@ -1181,6 +1355,7 @@ catalogues:
|
|
|
1181
1355
|
- { 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." }
|
|
1182
1356
|
- { 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." }
|
|
1183
1357
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1358
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1184
1359
|
|
|
1185
1360
|
personas:
|
|
1186
1361
|
primary_key: id
|
|
@@ -1193,6 +1368,7 @@ catalogues:
|
|
|
1193
1368
|
- { name: role, type: string, nullable: true }
|
|
1194
1369
|
- { name: description, type: string, nullable: true }
|
|
1195
1370
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1371
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1196
1372
|
|
|
1197
1373
|
user_journeys:
|
|
1198
1374
|
primary_key: id
|
|
@@ -1207,6 +1383,7 @@ catalogues:
|
|
|
1207
1383
|
- { name: trigger, type: string, nullable: true }
|
|
1208
1384
|
- { name: goal, type: string, nullable: true }
|
|
1209
1385
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1386
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1210
1387
|
|
|
1211
1388
|
contracts:
|
|
1212
1389
|
primary_key: id
|
|
@@ -1228,6 +1405,7 @@ catalogues:
|
|
|
1228
1405
|
- { name: description, type: string, nullable: true }
|
|
1229
1406
|
- { name: discovery, type: string, nullable: true, description: "discovered | declared-external. `discovered` (default) means the builder walked the spec file and parsed it, so title/version/context/evidence_class are trustworthy. `declared-external` means the row exists ONLY because a capability traceability manifest declared it with an explicit external marker and the file was never read — so those columns are necessarily EMPTY and their emptiness carries no information. A consumer that cannot tell the two apart will treat a declaration as a validated contract. Added in schema 2.51.0 (D13)." }
|
|
1230
1407
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1408
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1231
1409
|
|
|
1232
1410
|
events:
|
|
1233
1411
|
primary_key: id
|
|
@@ -1245,6 +1423,7 @@ catalogues:
|
|
|
1245
1423
|
- { name: version, type: string, nullable: true }
|
|
1246
1424
|
- { 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." }
|
|
1247
1425
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1426
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1248
1427
|
|
|
1249
1428
|
c4_systems:
|
|
1250
1429
|
primary_key: id
|
|
@@ -1258,6 +1437,7 @@ catalogues:
|
|
|
1258
1437
|
- { 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)." }
|
|
1259
1438
|
- { name: description, type: string, nullable: true }
|
|
1260
1439
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1440
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1261
1441
|
column_enums:
|
|
1262
1442
|
kind: enums.c4_system_kind
|
|
1263
1443
|
|
|
@@ -1283,6 +1463,7 @@ catalogues:
|
|
|
1283
1463
|
- { name: technology, type: string, nullable: true }
|
|
1284
1464
|
- { name: description, type: string, nullable: true }
|
|
1285
1465
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1466
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1286
1467
|
column_enums:
|
|
1287
1468
|
type: enums.c4_container_type
|
|
1288
1469
|
|
|
@@ -1304,6 +1485,7 @@ catalogues:
|
|
|
1304
1485
|
- { name: path, type: string, nullable: true }
|
|
1305
1486
|
- { name: responsibility, type: string, nullable: true }
|
|
1306
1487
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1488
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1307
1489
|
|
|
1308
1490
|
c4_external_systems:
|
|
1309
1491
|
primary_key: id
|
|
@@ -1326,6 +1508,7 @@ catalogues:
|
|
|
1326
1508
|
- { 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, and the source of the row id since 3.0.0. Added 2.30.0." }
|
|
1327
1509
|
- { 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." }
|
|
1328
1510
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1511
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1329
1512
|
|
|
1330
1513
|
repositories:
|
|
1331
1514
|
primary_key: id
|
|
@@ -1350,6 +1533,7 @@ catalogues:
|
|
|
1350
1533
|
- { name: languages, type: string, nullable: true, description: "';'-separated." }
|
|
1351
1534
|
- { name: doc_path, type: string, nullable: false }
|
|
1352
1535
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1536
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1353
1537
|
column_enums:
|
|
1354
1538
|
component_type: enums.service_type # the repo-config `service_type` value lands in THIS column (3.1.3 — the binding previously named the authoring field and checked nothing)
|
|
1355
1539
|
|
|
@@ -1366,6 +1550,7 @@ catalogues:
|
|
|
1366
1550
|
- { name: version, type: string, nullable: true, description: "Optional explicit version; null until the domain model is formally versioned (typically at first contract lock-in)." }
|
|
1367
1551
|
- { 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." }
|
|
1368
1552
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1553
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1369
1554
|
|
|
1370
1555
|
entities:
|
|
1371
1556
|
primary_key: id
|
|
@@ -1385,6 +1570,7 @@ catalogues:
|
|
|
1385
1570
|
- { 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." }
|
|
1386
1571
|
- { 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." }
|
|
1387
1572
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1573
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1388
1574
|
|
|
1389
1575
|
# ---- Edge catalogues ----
|
|
1390
1576
|
# Edge catalogues do not carry source_sdd_id — provenance is recoverable
|
|
@@ -1568,6 +1754,7 @@ catalogues:
|
|
|
1568
1754
|
- { 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`." }
|
|
1569
1755
|
- { name: evidence_path, type: string, nullable: true, description: "Source markdown path or feature-grounding row that produced the edge. Audit aid." }
|
|
1570
1756
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1757
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1571
1758
|
|
|
1572
1759
|
capability_feature:
|
|
1573
1760
|
primary_key: id
|
|
@@ -1599,7 +1786,9 @@ catalogues:
|
|
|
1599
1786
|
- { name: id, type: string, nullable: false }
|
|
1600
1787
|
- { name: capability_id, type: string, nullable: false }
|
|
1601
1788
|
- { name: service_id, type: string, nullable: false }
|
|
1602
|
-
- { name: role, type: string, nullable: true }
|
|
1789
|
+
- { name: role, type: string, nullable: true, description: "The part the service plays in delivering THIS capability — a property of the relationship, not of the service (capability-traceability-manifest-template). Closed enum, see enums.capability_service_role. Nullable: legacy rows may carry no role; the enum validator checks values, not presence. `dependency` rows are excluded from repo_capability Path X (M-ADR 0157 §4.3 as amended). Enum bound in 3.8.0." }
|
|
1790
|
+
column_enums:
|
|
1791
|
+
role: enums.capability_service_role
|
|
1603
1792
|
|
|
1604
1793
|
capability_event:
|
|
1605
1794
|
primary_key: id
|
|
@@ -1708,6 +1897,7 @@ catalogues:
|
|
|
1708
1897
|
- { 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." }
|
|
1709
1898
|
- { 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." }
|
|
1710
1899
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
1900
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1711
1901
|
|
|
1712
1902
|
capability_domain_model:
|
|
1713
1903
|
primary_key: id
|
|
@@ -1821,6 +2011,7 @@ catalogues:
|
|
|
1821
2011
|
- { name: to_container_id, type: string, nullable: false }
|
|
1822
2012
|
- { name: interaction, type: string, nullable: true, description: "Label carried over from the originating Rel(...) line." }
|
|
1823
2013
|
- { name: source_sdd_id, type: string, nullable: true, description: "SDD whose diagram declared the originating reference. Member-emitted rows set it directly (F19); adjudication-derived rows are stamped by the aggregator." }
|
|
2014
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1824
2015
|
|
|
1825
2016
|
system_system_dependency:
|
|
1826
2017
|
primary_key: id
|
|
@@ -1843,6 +2034,7 @@ catalogues:
|
|
|
1843
2034
|
- { name: to_system_id, type: string, nullable: false }
|
|
1844
2035
|
- { name: interaction, type: string, nullable: true, description: "Optional label/protocol carried over from the originating Rel(...) line." }
|
|
1845
2036
|
- { name: source_sdd_id, type: string, nullable: true, description: "SDD whose diagram declared the originating reference. Populated by the aggregator." }
|
|
2037
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1846
2038
|
|
|
1847
2039
|
c4_container_entity:
|
|
1848
2040
|
primary_key: id
|
|
@@ -1856,6 +2048,7 @@ catalogues:
|
|
|
1856
2048
|
- { name: entity_id, type: string, nullable: false }
|
|
1857
2049
|
- { name: relation, type: string, nullable: false, description: "Inherits from upstream service_entity.relation when derived." }
|
|
1858
2050
|
- { name: source_sdd_id, type: string, nullable: true }
|
|
2051
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1859
2052
|
|
|
1860
2053
|
c4_system_entity:
|
|
1861
2054
|
primary_key: id
|
|
@@ -1869,6 +2062,7 @@ catalogues:
|
|
|
1869
2062
|
- { name: entity_id, type: string, nullable: false }
|
|
1870
2063
|
- { name: container_count, type: integer, nullable: false, description: "Number of the system's containers that touch this entity. Aggregated from c4_container_entity." }
|
|
1871
2064
|
- { name: source_sdd_id, type: string, nullable: true }
|
|
2065
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1872
2066
|
|
|
1873
2067
|
capability_adr:
|
|
1874
2068
|
primary_key: id
|
|
@@ -1928,6 +2122,7 @@ catalogues:
|
|
|
1928
2122
|
- { 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." }
|
|
1929
2123
|
- { 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)." }
|
|
1930
2124
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2125
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
1931
2126
|
|
|
1932
2127
|
cross_sdd_platform_capability:
|
|
1933
2128
|
primary_key: id
|
|
@@ -1998,6 +2193,7 @@ catalogues:
|
|
|
1998
2193
|
- { 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." }
|
|
1999
2194
|
- { name: notes, type: string, nullable: true, description: "Optional free-text annotation." }
|
|
2000
2195
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2196
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2001
2197
|
|
|
2002
2198
|
application_data_plane_deviations:
|
|
2003
2199
|
primary_key: id
|
|
@@ -2022,6 +2218,7 @@ catalogues:
|
|
|
2022
2218
|
- { 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." }
|
|
2023
2219
|
- { name: rationale, type: string, nullable: false, description: "Why the deviation is correct. Non-empty (enforced at manifest load)." }
|
|
2024
2220
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2221
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2025
2222
|
|
|
2026
2223
|
application_conformance_coverage:
|
|
2027
2224
|
primary_key: id
|
|
@@ -2045,6 +2242,7 @@ catalogues:
|
|
|
2045
2242
|
- { name: status, type: string, nullable: false, description: "covered (the product's suite exercises it) | deviated (deliberately not covered, with a rationale)." }
|
|
2046
2243
|
- { name: rationale, type: string, nullable: true, description: "Why the tag is deviated. Present (non-empty) only when status=deviated." }
|
|
2047
2244
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2245
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2048
2246
|
|
|
2049
2247
|
# ---- UI screens family (schema 2.16.0, per M-ADR 0166) ----
|
|
2050
2248
|
# Application-product profile. Builder reads authored screen-spec artefacts
|
|
@@ -2069,6 +2267,7 @@ catalogues:
|
|
|
2069
2267
|
- { 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." }
|
|
2070
2268
|
- { name: evidence_class, type: string, nullable: true, description: "Evidence class of the screen's claims, from frontmatter `evidence_class:` (alias `evidence-class:`). Free-form; conventional values code-reverse | vendor-doc | operational (M-ADR 0175). Empty when undeclared. Completes the evidence-class dimension for the packaged-SaaS case: a packaged-SaaS SDD catalogues the vendor's STANDARD screens (documentation-reversed from vendor publications, `vendor-doc`) alongside the organisation's CUSTOMISED screens (code-reversed, `code-reverse`) per M-ADR 0175 §3.1 — without this column the two are indistinguishable, and doc-derived UI claims masquerade as code-verified. Orthogonal to `source` (`screen-spec` | `screen-extraction`), which records the authoring DIRECTION, not the evidence's strength: a `screen-extraction` screen can be either class, since a vendor's documented UI is extracted-but-not-code-verified. Added in schema 2.42.0." }
|
|
2071
2269
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2270
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2072
2271
|
|
|
2073
2272
|
ui_components:
|
|
2074
2273
|
primary_key: id
|
|
@@ -2082,6 +2281,7 @@ catalogues:
|
|
|
2082
2281
|
- { 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)." }
|
|
2083
2282
|
- { name: source, type: string, nullable: false, description: "screen-spec (forward) | design-system-import (reverse)." }
|
|
2084
2283
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2284
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2085
2285
|
|
|
2086
2286
|
screen_component:
|
|
2087
2287
|
primary_key: id
|
|
@@ -2094,6 +2294,7 @@ catalogues:
|
|
|
2094
2294
|
- { name: screen_id, type: string, nullable: false }
|
|
2095
2295
|
- { name: component_id, type: string, nullable: false }
|
|
2096
2296
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2297
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2097
2298
|
|
|
2098
2299
|
screen_feature:
|
|
2099
2300
|
primary_key: id
|
|
@@ -2110,6 +2311,7 @@ catalogues:
|
|
|
2110
2311
|
- { name: screen_id, type: string, nullable: false }
|
|
2111
2312
|
- { name: feature_id, type: string, nullable: false }
|
|
2112
2313
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2314
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2113
2315
|
|
|
2114
2316
|
persona_screen:
|
|
2115
2317
|
primary_key: id
|
|
@@ -2122,6 +2324,7 @@ catalogues:
|
|
|
2122
2324
|
- { name: persona_id, type: string, nullable: false }
|
|
2123
2325
|
- { name: screen_id, type: string, nullable: false }
|
|
2124
2326
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2327
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2125
2328
|
|
|
2126
2329
|
screen_action:
|
|
2127
2330
|
primary_key: id
|
|
@@ -2135,6 +2338,7 @@ catalogues:
|
|
|
2135
2338
|
- { name: action, type: string, nullable: false, description: "Declared action label emitted by the screen." }
|
|
2136
2339
|
- { 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." }
|
|
2137
2340
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2341
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2138
2342
|
|
|
2139
2343
|
conformance_finding:
|
|
2140
2344
|
primary_key: id
|
|
@@ -2155,6 +2359,7 @@ catalogues:
|
|
|
2155
2359
|
- { name: needs_triage, type: boolean, nullable: false, description: "True when any asymmetry exists. Triage, not auto-fail (M-ADR 0180 §2.3)." }
|
|
2156
2360
|
- { name: run_date, type: string, nullable: false, description: "ISO date of the conformance run — the snapshot stamp enabling trend over time." }
|
|
2157
2361
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2362
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2158
2363
|
|
|
2159
2364
|
quality_scores:
|
|
2160
2365
|
primary_key: id
|
|
@@ -2216,6 +2421,7 @@ catalogues:
|
|
|
2216
2421
|
- { name: required_actions_count, type: int, nullable: false, description: "Number of remediation actions the assessment recorded." }
|
|
2217
2422
|
- { name: sdd_id, type: string, nullable: true, description: "SDD whose gate-registry authored this row. Soft FK to products.id — nullable because a registry can score targets in an SDD that emits no product row." }
|
|
2218
2423
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134; left empty by per-SDD builders." }
|
|
2424
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2219
2425
|
|
|
2220
2426
|
quality_score_dimensions:
|
|
2221
2427
|
primary_key: id
|
|
@@ -2245,6 +2451,7 @@ catalogues:
|
|
|
2245
2451
|
- { name: dimension_score, type: number, nullable: true, description: "Score on that dimension. Empty for an unscored entry (the templates author explicit nulls)." }
|
|
2246
2452
|
- { name: dimension_weight, type: number, nullable: true, description: "Weight the rubric assigns the dimension, where discoverable. Usually EMPTY: weights live in the rubric document and the registry header comment, not per entry — so this column is honest about the fact that a weighted_score cannot currently be recomputed from these rows alone." }
|
|
2247
2453
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2454
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2248
2455
|
|
|
2249
2456
|
scaffolds:
|
|
2250
2457
|
primary_key: id
|
|
@@ -2279,6 +2486,7 @@ catalogues:
|
|
|
2279
2486
|
- { name: manifest_schema, type: string, nullable: false, description: "The scaffold manifest format version the file declared (scaffold_schema field), so format evolution is diffable and a future migration can state its denominator." }
|
|
2280
2487
|
- { name: sdd_id, type: string, nullable: true, description: "SDD whose manifest authored this row. Soft FK to products.id — nullable because a scaffold can be declared in an SDD that emits no product row." }
|
|
2281
2488
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134; left empty by per-SDD builders." }
|
|
2489
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2282
2490
|
column_enums:
|
|
2283
2491
|
status: enums.scaffold_status
|
|
2284
2492
|
|
|
@@ -2320,6 +2528,7 @@ catalogues:
|
|
|
2320
2528
|
- { name: edge_target_ref, type: string, nullable: true, description: "For edge items: the declared target endpoint, second FK column. Empty for entity and contract items." }
|
|
2321
2529
|
- { name: state, type: string, nullable: false, description: "Resolution verdict — see the scaffold_item_state enum. Derived, never authored; recomputed on every build, so realisation flips rows exactly when the target lands." }
|
|
2322
2530
|
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per M-ADR 0134." }
|
|
2531
|
+
- { name: platform_sdd_id, type: string, nullable: true, description: "The platform this row belongs to — sdd_id of its platform-root. Stamped by the aggregator per M-ADR 0208 §4.4 (preserve-if-set, fill rule by pull path); left empty by per-SDD builders. Added in 3.7.0." }
|
|
2323
2532
|
column_enums:
|
|
2324
2533
|
item_kind: enums.scaffold_item_kind
|
|
2325
2534
|
state: enums.scaffold_item_state
|