@sdd-method/sdd-cli 0.10.0 → 0.12.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/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/catalogue/aggregate.d.ts +39 -0
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -0
- package/dist/lib/catalogue/aggregate.js +344 -0
- package/dist/lib/catalogue/aggregate.js.map +1 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts +25 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.js +111 -0
- package/dist/lib/catalogue/aggregation-manifest-loader.js.map +1 -0
- package/dist/lib/catalogue/build.d.ts +42 -0
- package/dist/lib/catalogue/build.d.ts.map +1 -0
- package/dist/lib/catalogue/build.js +373 -0
- package/dist/lib/catalogue/build.js.map +1 -0
- package/dist/lib/catalogue/builders/adr-supersedes.d.ts +14 -0
- package/dist/lib/catalogue/builders/adr-supersedes.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/adr-supersedes.js +62 -0
- package/dist/lib/catalogue/builders/adr-supersedes.js.map +1 -0
- package/dist/lib/catalogue/builders/adrs.d.ts +27 -0
- package/dist/lib/catalogue/builders/adrs.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/adrs.js +191 -0
- package/dist/lib/catalogue/builders/adrs.js.map +1 -0
- package/dist/lib/catalogue/builders/c4-containers.d.ts +16 -0
- package/dist/lib/catalogue/builders/c4-containers.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/c4-containers.js +169 -0
- package/dist/lib/catalogue/builders/c4-containers.js.map +1 -0
- package/dist/lib/catalogue/builders/c4-systems.d.ts +10 -0
- package/dist/lib/catalogue/builders/c4-systems.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/c4-systems.js +99 -0
- package/dist/lib/catalogue/builders/c4-systems.js.map +1 -0
- package/dist/lib/catalogue/builders/capabilities.d.ts +11 -0
- package/dist/lib/catalogue/builders/capabilities.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/capabilities.js +173 -0
- package/dist/lib/catalogue/builders/capabilities.js.map +1 -0
- package/dist/lib/catalogue/builders/capability-edges.d.ts +27 -0
- package/dist/lib/catalogue/builders/capability-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/capability-edges.js +166 -0
- package/dist/lib/catalogue/builders/capability-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/contracts.d.ts +15 -0
- package/dist/lib/catalogue/builders/contracts.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/contracts.js +153 -0
- package/dist/lib/catalogue/builders/contracts.js.map +1 -0
- package/dist/lib/catalogue/builders/domains.d.ts +10 -0
- package/dist/lib/catalogue/builders/domains.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/domains.js +93 -0
- package/dist/lib/catalogue/builders/domains.js.map +1 -0
- package/dist/lib/catalogue/builders/event-edges.d.ts +20 -0
- package/dist/lib/catalogue/builders/event-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/event-edges.js +112 -0
- package/dist/lib/catalogue/builders/event-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/events.d.ts +26 -0
- package/dist/lib/catalogue/builders/events.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/events.js +99 -0
- package/dist/lib/catalogue/builders/events.js.map +1 -0
- package/dist/lib/catalogue/builders/feature-groups.d.ts +10 -0
- package/dist/lib/catalogue/builders/feature-groups.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/feature-groups.js +118 -0
- package/dist/lib/catalogue/builders/feature-groups.js.map +1 -0
- package/dist/lib/catalogue/builders/features.d.ts +35 -0
- package/dist/lib/catalogue/builders/features.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/features.js +206 -0
- package/dist/lib/catalogue/builders/features.js.map +1 -0
- package/dist/lib/catalogue/builders/glossary-xref.d.ts +11 -0
- package/dist/lib/catalogue/builders/glossary-xref.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/glossary-xref.js +107 -0
- package/dist/lib/catalogue/builders/glossary-xref.js.map +1 -0
- package/dist/lib/catalogue/builders/glossary.d.ts +14 -0
- package/dist/lib/catalogue/builders/glossary.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/glossary.js +150 -0
- package/dist/lib/catalogue/builders/glossary.js.map +1 -0
- package/dist/lib/catalogue/builders/index.d.ts +57 -0
- package/dist/lib/catalogue/builders/index.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/index.js +33 -0
- package/dist/lib/catalogue/builders/index.js.map +1 -0
- package/dist/lib/catalogue/builders/integrations.d.ts +12 -0
- package/dist/lib/catalogue/builders/integrations.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/integrations.js +85 -0
- package/dist/lib/catalogue/builders/integrations.js.map +1 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.d.ts +26 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.js +133 -0
- package/dist/lib/catalogue/builders/persona-journey-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/personas.d.ts +22 -0
- package/dist/lib/catalogue/builders/personas.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/personas.js +150 -0
- package/dist/lib/catalogue/builders/personas.js.map +1 -0
- package/dist/lib/catalogue/builders/product-edges.d.ts +15 -0
- package/dist/lib/catalogue/builders/product-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/product-edges.js +97 -0
- package/dist/lib/catalogue/builders/product-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/products.d.ts +26 -0
- package/dist/lib/catalogue/builders/products.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/products.js +57 -0
- package/dist/lib/catalogue/builders/products.js.map +1 -0
- package/dist/lib/catalogue/builders/repo-edges.d.ts +18 -0
- package/dist/lib/catalogue/builders/repo-edges.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/repo-edges.js +113 -0
- package/dist/lib/catalogue/builders/repo-edges.js.map +1 -0
- package/dist/lib/catalogue/builders/repositories.d.ts +78 -0
- package/dist/lib/catalogue/builders/repositories.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/repositories.js +204 -0
- package/dist/lib/catalogue/builders/repositories.js.map +1 -0
- package/dist/lib/catalogue/builders/service-contract.d.ts +11 -0
- package/dist/lib/catalogue/builders/service-contract.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/service-contract.js +53 -0
- package/dist/lib/catalogue/builders/service-contract.js.map +1 -0
- package/dist/lib/catalogue/builders/services.d.ts +15 -0
- package/dist/lib/catalogue/builders/services.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/services.js +40 -0
- package/dist/lib/catalogue/builders/services.js.map +1 -0
- package/dist/lib/catalogue/builders/user-journeys.d.ts +24 -0
- package/dist/lib/catalogue/builders/user-journeys.d.ts.map +1 -0
- package/dist/lib/catalogue/builders/user-journeys.js +253 -0
- package/dist/lib/catalogue/builders/user-journeys.js.map +1 -0
- package/dist/lib/catalogue/canonical-schema.yaml +624 -0
- package/dist/lib/catalogue/cli-version.d.ts +10 -0
- package/dist/lib/catalogue/cli-version.d.ts.map +1 -0
- package/dist/lib/catalogue/cli-version.js +10 -0
- package/dist/lib/catalogue/cli-version.js.map +1 -0
- package/dist/lib/catalogue/csv-reader.d.ts +7 -0
- package/dist/lib/catalogue/csv-reader.d.ts.map +1 -0
- package/dist/lib/catalogue/csv-reader.js +97 -0
- package/dist/lib/catalogue/csv-reader.js.map +1 -0
- package/dist/lib/catalogue/csv-writer.d.ts +29 -0
- package/dist/lib/catalogue/csv-writer.d.ts.map +1 -0
- package/dist/lib/catalogue/csv-writer.js +55 -0
- package/dist/lib/catalogue/csv-writer.js.map +1 -0
- package/dist/lib/catalogue/findings.d.ts +27 -0
- package/dist/lib/catalogue/findings.d.ts.map +1 -0
- package/dist/lib/catalogue/findings.js +34 -0
- package/dist/lib/catalogue/findings.js.map +1 -0
- package/dist/lib/catalogue/fk-validator.d.ts +44 -0
- package/dist/lib/catalogue/fk-validator.d.ts.map +1 -0
- package/dist/lib/catalogue/fk-validator.js +90 -0
- package/dist/lib/catalogue/fk-validator.js.map +1 -0
- package/dist/lib/catalogue/index.d.ts +27 -0
- package/dist/lib/catalogue/index.d.ts.map +1 -0
- package/dist/lib/catalogue/index.js +18 -0
- package/dist/lib/catalogue/index.js.map +1 -0
- package/dist/lib/catalogue/manifest-loader.d.ts +47 -0
- package/dist/lib/catalogue/manifest-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/manifest-loader.js +161 -0
- package/dist/lib/catalogue/manifest-loader.js.map +1 -0
- package/dist/lib/catalogue/schema-compat.d.ts +47 -0
- package/dist/lib/catalogue/schema-compat.d.ts.map +1 -0
- package/dist/lib/catalogue/schema-compat.js +52 -0
- package/dist/lib/catalogue/schema-compat.js.map +1 -0
- package/dist/lib/catalogue/schema-loader.d.ts +58 -0
- package/dist/lib/catalogue/schema-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/schema-loader.js +86 -0
- package/dist/lib/catalogue/schema-loader.js.map +1 -0
- package/dist/lib/catalogue/traceability-loader.d.ts +56 -0
- package/dist/lib/catalogue/traceability-loader.d.ts.map +1 -0
- package/dist/lib/catalogue/traceability-loader.js +217 -0
- package/dist/lib/catalogue/traceability-loader.js.map +1 -0
- package/dist/lib/catalogue/validate.d.ts +16 -0
- package/dist/lib/catalogue/validate.d.ts.map +1 -0
- package/dist/lib/catalogue/validate.js +137 -0
- package/dist/lib/catalogue/validate.js.map +1 -0
- package/dist/lib/catalogue/version.d.ts +3 -0
- package/dist/lib/catalogue/version.d.ts.map +1 -0
- package/dist/lib/catalogue/version.js +18 -0
- package/dist/lib/catalogue/version.js.map +1 -0
- package/dist/lib/init/index.d.ts.map +1 -1
- package/dist/lib/init/index.js +6 -1
- package/dist/lib/init/index.js.map +1 -1
- package/dist/lib/init/integration.d.ts +1 -1
- package/dist/lib/init/integration.d.ts.map +1 -1
- package/dist/lib/init/integration.js +5 -0
- package/dist/lib/init/integration.js.map +1 -1
- package/dist/lib/list/discover.js +8 -1
- package/dist/lib/list/discover.js.map +1 -1
- package/dist/lib/lock-file.d.ts +38 -3
- package/dist/lib/lock-file.d.ts.map +1 -1
- package/dist/lib/lock-file.js +213 -29
- package/dist/lib/lock-file.js.map +1 -1
- package/dist/lib/mcp/build-info.d.ts +1 -1
- package/dist/lib/mcp/build-info.js +1 -1
- package/dist/lib/repo-kind.d.ts +17 -2
- package/dist/lib/repo-kind.d.ts.map +1 -1
- package/dist/lib/repo-kind.js +46 -2
- package/dist/lib/repo-kind.js.map +1 -1
- package/dist/lib/sync/index.d.ts.map +1 -1
- package/dist/lib/sync/index.js +65 -20
- package/dist/lib/sync/index.js.map +1 -1
- package/dist/verbs/catalogue.d.ts +3 -0
- package/dist/verbs/catalogue.d.ts.map +1 -0
- package/dist/verbs/catalogue.js +60 -0
- package/dist/verbs/catalogue.js.map +1 -0
- package/package.json +3 -3
- package/scripts/copy-yaml-assets.mjs +38 -0
- package/scripts/sync-canonical-schema.sh +39 -0
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
# Catalogue Schema (Canonical)
|
|
2
|
+
#
|
|
3
|
+
# Authoritative schema for all catalogues defined by the SDD method's shared
|
|
4
|
+
# catalogue metamodel. Consumed by:
|
|
5
|
+
# - Catalogue builders (forward + reverse) for column ordering and FK
|
|
6
|
+
# validation.
|
|
7
|
+
# - The catalogue-integrity gate skill (FK PASS, coverage, drift).
|
|
8
|
+
# - Downstream tools (DuckDB, pandas) for type information.
|
|
9
|
+
# - sdd-mcp `sdd://catalogue/schema` resource (Phase 8).
|
|
10
|
+
#
|
|
11
|
+
# Distribution: ships in every method baseline (platform-baseline,
|
|
12
|
+
# app-baseline, integration-baseline) via the seed-file lists at
|
|
13
|
+
# docs/method/foundations/*-method-seed-files.txt. Consumers receive it
|
|
14
|
+
# through `sdd-cli sync`. Drift detection comes for free from the
|
|
15
|
+
# refuse-or-overwrite model in ADR 0114 — the schema is in
|
|
16
|
+
# MANAGED_PATHS.txt; consumer-side modification fails the next sync.
|
|
17
|
+
#
|
|
18
|
+
# Schema versioning: every structural change increments schema_version.
|
|
19
|
+
# Per resolution of adopt-canonical-catalogue-builder.md §7.5, this schema
|
|
20
|
+
# versions independently of sdd-manifest-schema.yaml and
|
|
21
|
+
# aggregation-manifest-schema.yaml. The CLI declares per-schema compat
|
|
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
|
|
24
|
+
# update in lockstep with this schema; with the canonical builder shipped
|
|
25
|
+
# from sdd-method, "lockstep" collapses to a single CLI version bump.
|
|
26
|
+
#
|
|
27
|
+
# Bump rules:
|
|
28
|
+
# - Patch (1.X.0 → 1.X.1): typo / description / non-structural fix.
|
|
29
|
+
# - Minor (1.X.0 → 1.(X+1).0): additive change (new optional column,
|
|
30
|
+
# new entity catalogue, new enum value, new nullable FK). Backward
|
|
31
|
+
# compatible — older readers ignore new fields/catalogues.
|
|
32
|
+
# - Major (1.X.0 → 2.0.0): breaking change (column rename, retype,
|
|
33
|
+
# required-field addition, enum-value removal, edge-FK retype). CLI
|
|
34
|
+
# MUST release in lockstep with `supports` updated; migration tooling
|
|
35
|
+
# required.
|
|
36
|
+
#
|
|
37
|
+
# Federation: per ADR 0134 catalogues are built per SDD and aggregated at
|
|
38
|
+
# the ecosystem root. Every node catalogue carries a `source_sdd_id`
|
|
39
|
+
# column populated by the aggregator. Foreign keys may declare
|
|
40
|
+
# `external: true` — these are skipped by the per-SDD builder (logged as
|
|
41
|
+
# `[finding] external`) and validated by the aggregator after merge.
|
|
42
|
+
# Default for unspecified `external` is `false` (internal FK).
|
|
43
|
+
#
|
|
44
|
+
# Conceptual model: see docs/method/methods/catalogue-metamodel.md.
|
|
45
|
+
# Builder contract: see docs/method/methods/catalogue-builder-specification.md.
|
|
46
|
+
# Category taxonomy: see docs/method/methods/product-category-taxonomy.md.
|
|
47
|
+
|
|
48
|
+
schema_version: "2.1.0"
|
|
49
|
+
schema_owner: "sdd-method"
|
|
50
|
+
schema_status: "canonical"
|
|
51
|
+
|
|
52
|
+
# ─── Canonical enums ────────────────────────────────────────────────────────
|
|
53
|
+
#
|
|
54
|
+
# Enums constrain the values certain string columns may take. The canonical
|
|
55
|
+
# builder (sdd-cli catalogue build, per ADR 0134 §4.6) reads these from the
|
|
56
|
+
# schema rather than hardcoding them, so adopters can update the canonical
|
|
57
|
+
# enum here without forking builder code.
|
|
58
|
+
|
|
59
|
+
enums:
|
|
60
|
+
|
|
61
|
+
c4_system_kind:
|
|
62
|
+
description: >
|
|
63
|
+
Architectural kind of a C4 system. Derived 1:1 from the originating
|
|
64
|
+
SDD manifest's category — every architectural product (the only
|
|
65
|
+
ones that get a c4_systems row) maps to exactly one of these three
|
|
66
|
+
kinds. Non-architectural categories (platform-subsystem,
|
|
67
|
+
integration-umbrella, support-repo) emit no c4_systems row.
|
|
68
|
+
Mapping table:
|
|
69
|
+
platform-root → platform
|
|
70
|
+
application-product → application
|
|
71
|
+
integration-provider → integration
|
|
72
|
+
values:
|
|
73
|
+
- { value: platform, description: "The ecosystem's platform-root system. Exactly one per ecosystem after federation aggregation." }
|
|
74
|
+
- { value: application, description: "An application-product system, consumes platform services and contracts." }
|
|
75
|
+
- { value: integration, description: "An integration-provider system, bridges an external provider into the platform." }
|
|
76
|
+
|
|
77
|
+
service_type:
|
|
78
|
+
description: >
|
|
79
|
+
Type of repository, declared in `orchestration/repo-config/*.yaml` as
|
|
80
|
+
`service_type` and surfaced in `repositories.service_type` and
|
|
81
|
+
`services.component_type`. The canonical builder uses this to decide
|
|
82
|
+
which repos are runtime services (api_service, worker, gateway,
|
|
83
|
+
frontend, mobile) and which are non-runtime (library, infrastructure,
|
|
84
|
+
documentation). Whether a repo is a vertical-domain application is
|
|
85
|
+
conveyed by its SDD manifest's `profile: application-product`, not by
|
|
86
|
+
a service_type tag — this enum is strictly about runtime artefact
|
|
87
|
+
shape (per resolution of adopt-canonical-catalogue-builder.md §7.1).
|
|
88
|
+
values:
|
|
89
|
+
- { value: api_service, runtime: true, emits_service_row: true, description: "REST/GraphQL/RPC service exposing an API." }
|
|
90
|
+
- { value: worker, runtime: true, emits_service_row: true, description: "Background event/queue processor." }
|
|
91
|
+
- { value: gateway, runtime: true, emits_service_row: true, description: "Edge or API gateway (Zuplo, Apigee, etc.)." }
|
|
92
|
+
- { value: frontend, runtime: true, emits_service_row: true, description: "Web UI deployable (Vue, React, Svelte, etc.). Includes vertical-domain application frontends — the SDD profile distinguishes platform-frontends from app-frontends." }
|
|
93
|
+
- { value: mobile, runtime: true, emits_service_row: true, description: "Mobile app deployable (iOS, Android)." }
|
|
94
|
+
- { value: library, runtime: false, emits_service_row: false, description: "Shared package shipped to consumers (npm, PyPI, Maven, etc.)." }
|
|
95
|
+
- { value: infrastructure, runtime: false, emits_service_row: false, description: "IaC, CI/CD, build tooling — not a runtime deployable." }
|
|
96
|
+
- { value: documentation, runtime: false, emits_service_row: false, description: "Docs-only repo." }
|
|
97
|
+
|
|
98
|
+
catalogues:
|
|
99
|
+
|
|
100
|
+
domains:
|
|
101
|
+
primary_key: id
|
|
102
|
+
columns:
|
|
103
|
+
- { name: id, type: string, nullable: false, description: "Slug, e.g. identity, asset." }
|
|
104
|
+
- { name: name, type: string, nullable: false, description: "Display name." }
|
|
105
|
+
- { name: description, type: string, nullable: false }
|
|
106
|
+
- { name: method_profile, type: string, nullable: false, description: "platform-profile | application-product | integration-product." }
|
|
107
|
+
- { name: reference_architecture_equivalent, type: string, nullable: true }
|
|
108
|
+
- { name: status, type: string, nullable: false, description: "active | deferred | absent." }
|
|
109
|
+
- { name: repo_count, type: int, nullable: false }
|
|
110
|
+
- { 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." }
|
|
111
|
+
|
|
112
|
+
products: &products_def
|
|
113
|
+
primary_key: id
|
|
114
|
+
foreign_keys:
|
|
115
|
+
- { column: domain_id, references: domains.id, nullable: true }
|
|
116
|
+
columns:
|
|
117
|
+
- { name: id, type: string, nullable: false, description: "product_id slug." }
|
|
118
|
+
- { name: name, type: string, nullable: false }
|
|
119
|
+
- { 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." }
|
|
120
|
+
- { name: profile, type: string, nullable: false, description: "platform-profile | application-product | integration-product | support-repo." }
|
|
121
|
+
- { 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." }
|
|
122
|
+
- { name: doc_path, type: string, nullable: false, description: "Path to _product/ directory, relative to docs/." }
|
|
123
|
+
- { name: status, type: string, nullable: true, description: "scaffolded | populated | reviewed | ..." }
|
|
124
|
+
- { name: synthesis_quality, type: int, nullable: true, description: "Score 0-10 from assessment block (reverse method only)." }
|
|
125
|
+
- { name: synthesis_band, type: string, nullable: true, description: "developing | working | strong." }
|
|
126
|
+
- { name: last_assessed, type: date, nullable: true }
|
|
127
|
+
- { name: highest_snapshot_impact, type: string, nullable: true }
|
|
128
|
+
- { name: repo_count, type: int, nullable: false, description: "Number of repos mapped to this product." }
|
|
129
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
130
|
+
|
|
131
|
+
applications:
|
|
132
|
+
<<: *products_def
|
|
133
|
+
description: "Filtered view of products where profile = application-product."
|
|
134
|
+
|
|
135
|
+
integrations:
|
|
136
|
+
primary_key: id
|
|
137
|
+
description: "Granular provider adapters. Each row is one provider folder under an umbrella integration-product."
|
|
138
|
+
foreign_keys:
|
|
139
|
+
- { column: domain_id, references: domains.id, nullable: true }
|
|
140
|
+
- { column: parent_product_id, references: products.id, nullable: true }
|
|
141
|
+
columns:
|
|
142
|
+
- { name: id, type: string, nullable: false, description: "Provider slug." }
|
|
143
|
+
- { name: name, type: string, nullable: false }
|
|
144
|
+
- { name: domain_id, type: string, nullable: true, description: "Provider adapters are federation nodes, not capability-domain members. Left empty per ADR 0136." }
|
|
145
|
+
- { name: parent_product_id, type: string, nullable: true, description: "Umbrella integration-product." }
|
|
146
|
+
- { name: category, type: string, nullable: false, description: "oem | device | fleet | camera | legacy | data-sharing | gateway-framework (extensible per ecosystem)." }
|
|
147
|
+
- { name: doc_path, type: string, nullable: false }
|
|
148
|
+
- { name: repo_count, type: int, nullable: false }
|
|
149
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
150
|
+
|
|
151
|
+
adrs:
|
|
152
|
+
primary_key: id
|
|
153
|
+
foreign_keys:
|
|
154
|
+
- { column: domain_id, references: domains.id, nullable: false }
|
|
155
|
+
- { column: superseded_by_id, references: adrs.id, nullable: true }
|
|
156
|
+
columns:
|
|
157
|
+
- { name: id, type: string, nullable: false, description: "ADR id, e.g. ADR-0001 or {domain}-D001." }
|
|
158
|
+
- { name: title, type: string, nullable: false }
|
|
159
|
+
- { name: status, type: string, nullable: true, description: "Accepted | Proposed | Superseded | Deprecated | Deferred (forward) plus reverse-inferred | reverse-adapted (reverse)." }
|
|
160
|
+
- { name: domain_id, type: string, nullable: false, description: "'platform' for cross-cutting ADRs; domain slug otherwise." }
|
|
161
|
+
- { name: decision_date, type: date, nullable: true }
|
|
162
|
+
- { name: doc_path, type: string, nullable: false }
|
|
163
|
+
- { name: superseded_by_id, type: string, nullable: true }
|
|
164
|
+
- { name: inference_confidence, type: string, nullable: true, description: "high | medium | low (reverse-inferred ADRs only)." }
|
|
165
|
+
- { name: supersedes_raw, type: string, nullable: true, description: "Raw text from Supersedes bullet for later parsing." }
|
|
166
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
167
|
+
|
|
168
|
+
glossary_items:
|
|
169
|
+
primary_key: id
|
|
170
|
+
foreign_keys:
|
|
171
|
+
- { column: owning_domain_id, references: domains.id, nullable: true }
|
|
172
|
+
- { column: canonical_term_id, references: glossary_items.id, nullable: true }
|
|
173
|
+
columns:
|
|
174
|
+
- { name: id, type: string, nullable: false, description: "Slug: {domain}-{term-slug} for uniqueness." }
|
|
175
|
+
- { name: term, type: string, nullable: false }
|
|
176
|
+
- { name: definition, type: string, nullable: false }
|
|
177
|
+
- { name: owning_domain_id, type: string, nullable: true, description: "Null for platform-level terms." }
|
|
178
|
+
- { name: canonical_term_id, type: string, nullable: true, description: "Set when this term is an alias for another." }
|
|
179
|
+
- { name: aliases, type: string, nullable: true, description: "';'-separated list." }
|
|
180
|
+
- { name: evidence, type: string, nullable: true }
|
|
181
|
+
- { name: notes, type: string, nullable: true }
|
|
182
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
183
|
+
|
|
184
|
+
glossary_xref:
|
|
185
|
+
primary_key: id
|
|
186
|
+
description: "Edge: cross-domain glossary relationships from glossary-alignment-manifest.yaml."
|
|
187
|
+
foreign_keys:
|
|
188
|
+
- { column: source_id, references: glossary_items.id, nullable: false }
|
|
189
|
+
- { column: target_id, references: glossary_items.id, nullable: false }
|
|
190
|
+
columns:
|
|
191
|
+
- { name: id, type: string, nullable: false, description: "Composite: {source_id}__{relation}__{target_id}." }
|
|
192
|
+
- { name: source_id, type: string, nullable: false }
|
|
193
|
+
- { name: target_id, type: string, nullable: false }
|
|
194
|
+
- { name: relation, type: string, nullable: false, description: "alias-of | conflicts-with." }
|
|
195
|
+
|
|
196
|
+
services:
|
|
197
|
+
primary_key: id
|
|
198
|
+
foreign_keys:
|
|
199
|
+
- { column: product_id, references: products.id, nullable: false }
|
|
200
|
+
- { column: domain_id, references: domains.id, nullable: true }
|
|
201
|
+
- { column: primary_repo_id, references: repositories.id, nullable: true }
|
|
202
|
+
columns:
|
|
203
|
+
- { name: id, type: string, nullable: false, description: "Service id, derived from artifact_id where artifact_type=service." }
|
|
204
|
+
- { name: name, type: string, nullable: false }
|
|
205
|
+
- { name: product_id, type: string, nullable: false }
|
|
206
|
+
- { 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." }
|
|
207
|
+
- { name: primary_repo_id, type: string, nullable: true, description: "Main contributing repo. Nullable when service spans repos." }
|
|
208
|
+
- { name: runtime_type, type: string, nullable: true, description: "serverless-framework | jvm-service | lambda | k8s | ..." }
|
|
209
|
+
- { name: language, type: string, nullable: true }
|
|
210
|
+
- { name: component_type, type: string, nullable: true, description: "bff | api | consumer | ui | collector | processor | ..." }
|
|
211
|
+
- { name: status, type: string, nullable: true, description: "production-wired | non-production | library." }
|
|
212
|
+
- { name: confidence, type: string, nullable: true, description: "high | medium | low (reverse-method classification)." }
|
|
213
|
+
- { name: description, type: string, nullable: true }
|
|
214
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
215
|
+
column_enums:
|
|
216
|
+
component_type: enums.service_type # canonical builder validates against the service_type enum above
|
|
217
|
+
|
|
218
|
+
capabilities:
|
|
219
|
+
primary_key: id
|
|
220
|
+
foreign_keys:
|
|
221
|
+
- { column: domain_id, references: domains.id, nullable: false }
|
|
222
|
+
- { column: parent_capability_id, references: capabilities.id, nullable: true }
|
|
223
|
+
columns:
|
|
224
|
+
- { name: id, type: string, nullable: false, description: "Capability slug." }
|
|
225
|
+
- { name: name, type: string, nullable: false }
|
|
226
|
+
- { name: domain_id, type: string, nullable: false }
|
|
227
|
+
- { name: tree_category, type: string, nullable: true, description: "Top-level grouping when capability comes from a capability tree (reverse)." }
|
|
228
|
+
- { name: parent_capability_id, type: string, nullable: true }
|
|
229
|
+
- { name: description, type: string, nullable: true }
|
|
230
|
+
- { name: status, type: string, nullable: false, description: "active | planned | deprecated. Default 'active'." }
|
|
231
|
+
- { name: spec_path, type: string, nullable: true, description: "Path to capability spec file when one exists." }
|
|
232
|
+
- { name: source, type: string, nullable: false, description: "capability-tree | product-map | capability-spec." }
|
|
233
|
+
- { name: runway_classification, type: string, nullable: true, description: "Business | Enabler-Runway | Hybrid (forward declares; reverse nullable until backfilled)." }
|
|
234
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
235
|
+
|
|
236
|
+
feature_groups:
|
|
237
|
+
primary_key: id
|
|
238
|
+
description: >
|
|
239
|
+
Hierarchical grouping for features. First-class entity per resolution
|
|
240
|
+
of adopt-canonical-catalogue-builder.md §7.2 — replaces the previous
|
|
241
|
+
reverse-only synthetic `feature-tree-group` rows in features.csv.
|
|
242
|
+
Both forward and reverse can use feature_groups: forward
|
|
243
|
+
application-product SDDs whose `feature-tree.md` has H2/H3 structure,
|
|
244
|
+
reverse SDDs whose extracted feature trees are inherently
|
|
245
|
+
hierarchical, and any SDD that promotes groups to first-class with
|
|
246
|
+
authored metadata. Groups can nest via `parent_group_id`.
|
|
247
|
+
foreign_keys:
|
|
248
|
+
- { column: product_id, references: products.id, nullable: true }
|
|
249
|
+
- { column: capability_id, references: capabilities.id, nullable: true }
|
|
250
|
+
- { column: parent_group_id, references: feature_groups.id, nullable: true }
|
|
251
|
+
columns:
|
|
252
|
+
- { name: id, type: string, nullable: false, description: "{product_id|capability_id}-group-{slug}[-{nested-slug}]." }
|
|
253
|
+
- { name: name, type: string, nullable: false, description: "Display name from H2/H3 heading or authored." }
|
|
254
|
+
- { name: product_id, type: string, nullable: true, description: "Owning product (when group is product-scoped)." }
|
|
255
|
+
- { name: capability_id, type: string, nullable: true, description: "Owning capability (when group is capability-scoped)." }
|
|
256
|
+
- { name: parent_group_id, type: string, nullable: true, description: "Self-reference for nested groups (H3 within H2)." }
|
|
257
|
+
- { name: description, type: string, nullable: true, description: "Authored description (when group has explicit metadata) or null when derived from heading only." }
|
|
258
|
+
- { 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." }
|
|
259
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
260
|
+
|
|
261
|
+
features:
|
|
262
|
+
primary_key: id
|
|
263
|
+
foreign_keys:
|
|
264
|
+
- { column: product_id, references: products.id, nullable: true }
|
|
265
|
+
- { column: capability_id, references: capabilities.id, nullable: true }
|
|
266
|
+
- { column: parent_group_id, references: feature_groups.id, nullable: true }
|
|
267
|
+
- { column: parent_feature_id, references: features.id, nullable: true }
|
|
268
|
+
columns:
|
|
269
|
+
- { name: id, type: string, nullable: false, description: "{product_id|capability_id}-{feature-slug}." }
|
|
270
|
+
- { name: name, type: string, nullable: false }
|
|
271
|
+
- { name: product_id, type: string, nullable: true, description: "Owning product (null for capability-spec-sourced features)." }
|
|
272
|
+
- { name: capability_id, type: string, nullable: true }
|
|
273
|
+
- { name: parent_group_id, type: string, nullable: true, description: "Owning feature_group (typical when feature comes from a hierarchical feature-tree.md). Use this OR parent_feature_id, not both." }
|
|
274
|
+
- { name: parent_feature_id, type: string, nullable: true, description: "Self-reference for explicit feature nesting (rare — most hierarchies are group-based via parent_group_id)." }
|
|
275
|
+
- { name: description, type: string, nullable: true }
|
|
276
|
+
- { name: maturity, type: string, nullable: true, description: "Standard: working | provisional | unknown | absent. Ecosystem-specific values may be added with parser awareness." }
|
|
277
|
+
- { name: status, type: string, nullable: false, description: "Default 'active'." }
|
|
278
|
+
- { name: source, type: string, nullable: false, description: "feature-tree | feature-set | capability-spec | feature-spec (forward-only). NOTE: feature-tree-group source removed in 1.3.0 — groups are now first-class in feature_groups.csv." }
|
|
279
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
280
|
+
|
|
281
|
+
personas:
|
|
282
|
+
primary_key: id
|
|
283
|
+
foreign_keys:
|
|
284
|
+
- { column: product_id, references: products.id, nullable: false }
|
|
285
|
+
columns:
|
|
286
|
+
- { name: id, type: string, nullable: false, description: "{product_id}-{persona-slug}." }
|
|
287
|
+
- { name: name, type: string, nullable: false }
|
|
288
|
+
- { name: product_id, type: string, nullable: false }
|
|
289
|
+
- { name: role, type: string, nullable: true }
|
|
290
|
+
- { name: description, type: string, nullable: true }
|
|
291
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
292
|
+
|
|
293
|
+
user_journeys:
|
|
294
|
+
primary_key: id
|
|
295
|
+
foreign_keys:
|
|
296
|
+
- { column: product_id, references: products.id, nullable: false }
|
|
297
|
+
columns:
|
|
298
|
+
- { name: id, type: string, nullable: false, description: "{product_id}-{journey-slug}." }
|
|
299
|
+
- { name: name, type: string, nullable: false }
|
|
300
|
+
- { name: product_id, type: string, nullable: false }
|
|
301
|
+
- { name: primary_persona, type: string, nullable: true, description: "Free-text. Supports 'X → Y (handoff)'." }
|
|
302
|
+
- { name: supporting_personas, type: string, nullable: true }
|
|
303
|
+
- { name: trigger, type: string, nullable: true }
|
|
304
|
+
- { name: goal, type: string, nullable: true }
|
|
305
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
306
|
+
|
|
307
|
+
contracts:
|
|
308
|
+
primary_key: id
|
|
309
|
+
foreign_keys:
|
|
310
|
+
- { column: service_id, references: services.id, nullable: true }
|
|
311
|
+
- { column: source_repo_id, references: repositories.id, nullable: true }
|
|
312
|
+
columns:
|
|
313
|
+
- { name: id, type: string, nullable: false }
|
|
314
|
+
- { name: name, type: string, nullable: false, description: "Display name from info.title or artifact_id." }
|
|
315
|
+
- { name: service_id, type: string, nullable: true, description: "Exposing service; resolved via primary_repo_id ↔ OpenAPI x-source-repo." }
|
|
316
|
+
- { 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)." }
|
|
317
|
+
- { name: kind, type: string, nullable: false, description: "rest | graphql | rpc | event. rpc covers Proto/gRPC; event covers Avro schemas." }
|
|
318
|
+
- { name: version, type: string, nullable: true }
|
|
319
|
+
- { name: status, type: string, nullable: false, description: "active | deprecated. Default 'active'." }
|
|
320
|
+
- { name: spec_path, type: string, nullable: true }
|
|
321
|
+
- { name: visibility, type: string, nullable: true, description: "public | private | internal." }
|
|
322
|
+
- { name: description, type: string, nullable: true }
|
|
323
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
324
|
+
|
|
325
|
+
events:
|
|
326
|
+
primary_key: id
|
|
327
|
+
description: "Asynchronous messages. Cross-domain events (e.g. shared envelopes) leave domain_id empty."
|
|
328
|
+
foreign_keys:
|
|
329
|
+
- { column: publisher_service_id, references: services.id, nullable: true }
|
|
330
|
+
- { column: domain_id, references: domains.id, nullable: true }
|
|
331
|
+
columns:
|
|
332
|
+
- { name: id, type: string, nullable: false }
|
|
333
|
+
- { name: name, type: string, nullable: false }
|
|
334
|
+
- { name: publisher_service_id, type: string, nullable: true }
|
|
335
|
+
- { name: domain_id, type: string, nullable: true }
|
|
336
|
+
- { name: transport, type: string, nullable: true, description: "kafka | sns | sqs | kinesis | eventbridge | mongodb-change-stream." }
|
|
337
|
+
- { name: schema_path, type: string, nullable: true }
|
|
338
|
+
- { name: version, type: string, nullable: true }
|
|
339
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
340
|
+
|
|
341
|
+
c4_systems:
|
|
342
|
+
primary_key: id
|
|
343
|
+
foreign_keys:
|
|
344
|
+
- { column: product_id, references: products.id, nullable: false }
|
|
345
|
+
columns:
|
|
346
|
+
- { name: id, type: string, nullable: false, description: "Typically {product_id}-system." }
|
|
347
|
+
- { name: name, type: string, nullable: false }
|
|
348
|
+
- { name: product_id, type: string, nullable: false, description: "Owning product. Architectural products only (per category taxonomy)." }
|
|
349
|
+
- { name: kind, type: string, nullable: false, description: "platform | application | integration. Derived 1:1 from manifest.category — see enums.c4_system_kind." }
|
|
350
|
+
- { 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)." }
|
|
351
|
+
- { name: description, type: string, nullable: true }
|
|
352
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
353
|
+
column_enums:
|
|
354
|
+
kind: enums.c4_system_kind
|
|
355
|
+
|
|
356
|
+
c4_containers:
|
|
357
|
+
primary_key: id
|
|
358
|
+
description: >
|
|
359
|
+
C4 L2. Each container belongs to exactly one C4 system. `domain_id`
|
|
360
|
+
is a denormalised organisational tag, not a C4-structural attribute
|
|
361
|
+
— multi-domain ecosystems use it for filtering/reporting.
|
|
362
|
+
`service_id` is the optional "may represent" link to a runtime
|
|
363
|
+
service when the container is a deployable application.
|
|
364
|
+
foreign_keys:
|
|
365
|
+
- { column: system_id, references: c4_systems.id, nullable: false }
|
|
366
|
+
- { column: domain_id, references: domains.id, nullable: true }
|
|
367
|
+
- { column: service_id, references: services.id, nullable: true }
|
|
368
|
+
columns:
|
|
369
|
+
- { name: id, type: string, nullable: false, description: "{system_id}-{container-slug}." }
|
|
370
|
+
- { name: name, type: string, nullable: false }
|
|
371
|
+
- { name: system_id, type: string, nullable: false, description: "Owning C4 system (every container is in exactly one system)." }
|
|
372
|
+
- { name: domain_id, type: string, nullable: true, description: "Optional organisational domain tag (denormalised; not C4-structural)." }
|
|
373
|
+
- { name: service_id, type: string, nullable: true, description: "Matched by container name ↔ service name/repo where possible." }
|
|
374
|
+
- { name: type, type: string, nullable: true, description: "Application | Data Store | Infrastructure | External System." }
|
|
375
|
+
- { name: technology, type: string, nullable: true }
|
|
376
|
+
- { name: description, type: string, nullable: true }
|
|
377
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
378
|
+
|
|
379
|
+
c4_components:
|
|
380
|
+
primary_key: id
|
|
381
|
+
description: >
|
|
382
|
+
C4 L3. Each component belongs to exactly one C4 container.
|
|
383
|
+
`service_id` is denormalised from `c4_containers.service_id` for
|
|
384
|
+
query convenience — populated when the parent container represents
|
|
385
|
+
a runtime service.
|
|
386
|
+
foreign_keys:
|
|
387
|
+
- { column: container_id, references: c4_containers.id, nullable: false }
|
|
388
|
+
- { column: service_id, references: services.id, nullable: true }
|
|
389
|
+
columns:
|
|
390
|
+
- { name: id, type: string, nullable: false, description: "{container_id}-{component-slug}." }
|
|
391
|
+
- { name: name, type: string, nullable: false }
|
|
392
|
+
- { name: container_id, type: string, nullable: false, description: "Owning C4 container." }
|
|
393
|
+
- { name: service_id, type: string, nullable: true, description: "Denormalised: the service the parent container represents, when applicable." }
|
|
394
|
+
- { name: path, type: string, nullable: true }
|
|
395
|
+
- { name: responsibility, type: string, nullable: true }
|
|
396
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
397
|
+
|
|
398
|
+
repositories:
|
|
399
|
+
primary_key: id
|
|
400
|
+
foreign_keys:
|
|
401
|
+
- { column: domain_id, references: domains.id, nullable: true }
|
|
402
|
+
- { column: product_id, references: products.id, nullable: true }
|
|
403
|
+
columns:
|
|
404
|
+
- { name: id, type: string, nullable: false, description: "canonical_repo_key." }
|
|
405
|
+
- { name: name, type: string, nullable: false }
|
|
406
|
+
- { 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." }
|
|
407
|
+
- { name: product_id, type: string, nullable: true }
|
|
408
|
+
- { name: profile, type: string, nullable: false }
|
|
409
|
+
- { name: group, type: string, nullable: true }
|
|
410
|
+
- { name: category, type: string, nullable: true }
|
|
411
|
+
- { name: tier, type: string, nullable: true, description: "S1..S4 for support repos, else null." }
|
|
412
|
+
- { name: component_type, type: string, nullable: true }
|
|
413
|
+
- { name: files, type: int, nullable: true }
|
|
414
|
+
- { name: code, type: int, nullable: true }
|
|
415
|
+
- { name: comment, type: int, nullable: true }
|
|
416
|
+
- { name: blank, type: int, nullable: true }
|
|
417
|
+
- { name: total_lines, type: int, nullable: true }
|
|
418
|
+
- { name: languages, type: string, nullable: true, description: "';'-separated." }
|
|
419
|
+
- { name: doc_path, type: string, nullable: false }
|
|
420
|
+
- { name: source_sdd_id, type: string, nullable: true, description: "Originating SDD slug. Populated by the aggregator per ADR 0134." }
|
|
421
|
+
column_enums:
|
|
422
|
+
service_type: enums.service_type # canonical builder validates against the service_type enum above
|
|
423
|
+
|
|
424
|
+
# ---- Edge catalogues ----
|
|
425
|
+
# Edge catalogues do not carry source_sdd_id — provenance is recoverable
|
|
426
|
+
# from either endpoint's row per ADR 0134.
|
|
427
|
+
|
|
428
|
+
repo_capability:
|
|
429
|
+
primary_key: id
|
|
430
|
+
description: "Edge: repo contributes to capability. From contributes_to.artifact_type=capability."
|
|
431
|
+
foreign_keys:
|
|
432
|
+
- { column: repo_id, references: repositories.id, nullable: false }
|
|
433
|
+
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
434
|
+
columns:
|
|
435
|
+
- { name: id, type: string, nullable: false }
|
|
436
|
+
- { name: repo_id, type: string, nullable: false }
|
|
437
|
+
- { name: capability_id, type: string, nullable: false }
|
|
438
|
+
|
|
439
|
+
repo_contract:
|
|
440
|
+
primary_key: id
|
|
441
|
+
description: "Edge: repo implements contract. From contributes_to.artifact_type=contract-surface."
|
|
442
|
+
foreign_keys:
|
|
443
|
+
- { column: repo_id, references: repositories.id, nullable: false }
|
|
444
|
+
- { column: contract_id, references: contracts.id, nullable: false }
|
|
445
|
+
columns:
|
|
446
|
+
- { name: id, type: string, nullable: false }
|
|
447
|
+
- { name: repo_id, type: string, nullable: false }
|
|
448
|
+
- { name: contract_id, type: string, nullable: false }
|
|
449
|
+
|
|
450
|
+
product_capability:
|
|
451
|
+
primary_key: id
|
|
452
|
+
description: "Edge: product depends on / consumes capability. Forward sources from app-platform-dependencies.yaml. capability_id is external because the consuming product (an application-product SDD) references a capability owned by the platform SDD."
|
|
453
|
+
foreign_keys:
|
|
454
|
+
- { column: product_id, references: products.id, nullable: false }
|
|
455
|
+
- { column: capability_id, references: capabilities.id, nullable: false, external: true }
|
|
456
|
+
columns:
|
|
457
|
+
- { name: id, type: string, nullable: false }
|
|
458
|
+
- { name: product_id, type: string, nullable: false }
|
|
459
|
+
- { name: capability_id, type: string, nullable: false }
|
|
460
|
+
- { name: role, type: string, nullable: false, description: "consumes." }
|
|
461
|
+
- { name: notes, type: string, nullable: true }
|
|
462
|
+
|
|
463
|
+
product_service:
|
|
464
|
+
primary_key: id
|
|
465
|
+
description: "Edge: product depends on / consumes service. Forward sources from app-platform-dependencies.yaml. service_id is external because the consuming product (an application-product SDD) references a service owned by the platform SDD."
|
|
466
|
+
foreign_keys:
|
|
467
|
+
- { column: product_id, references: products.id, nullable: false }
|
|
468
|
+
- { column: service_id, references: services.id, nullable: false, external: true }
|
|
469
|
+
columns:
|
|
470
|
+
- { name: id, type: string, nullable: false }
|
|
471
|
+
- { name: product_id, type: string, nullable: false }
|
|
472
|
+
- { name: service_id, type: string, nullable: false }
|
|
473
|
+
- { name: role, type: string, nullable: false, description: "consumes." }
|
|
474
|
+
- { name: required_stability, type: string, nullable: true, description: "provisional | locked." }
|
|
475
|
+
|
|
476
|
+
service_contract:
|
|
477
|
+
primary_key: id
|
|
478
|
+
description: "Edge: service exposes or consumes contract."
|
|
479
|
+
foreign_keys:
|
|
480
|
+
- { column: service_id, references: services.id, nullable: false }
|
|
481
|
+
- { column: contract_id, references: contracts.id, nullable: false }
|
|
482
|
+
columns:
|
|
483
|
+
- { name: id, type: string, nullable: false, description: "{service_id}__{contract_id}__{role}." }
|
|
484
|
+
- { name: service_id, type: string, nullable: false }
|
|
485
|
+
- { name: contract_id, type: string, nullable: false }
|
|
486
|
+
- { name: role, type: string, nullable: false, description: "exposes | consumes." }
|
|
487
|
+
|
|
488
|
+
service_event:
|
|
489
|
+
primary_key: id
|
|
490
|
+
description: "Edge: service publishes or consumes event."
|
|
491
|
+
foreign_keys:
|
|
492
|
+
- { column: service_id, references: services.id, nullable: false }
|
|
493
|
+
- { column: event_id, references: events.id, nullable: false }
|
|
494
|
+
columns:
|
|
495
|
+
- { name: id, type: string, nullable: false, description: "{service_id}__{event_id}__{role}." }
|
|
496
|
+
- { name: service_id, type: string, nullable: false }
|
|
497
|
+
- { name: event_id, type: string, nullable: false }
|
|
498
|
+
- { name: role, type: string, nullable: false, description: "publishes | consumes." }
|
|
499
|
+
|
|
500
|
+
capability_feature:
|
|
501
|
+
primary_key: id
|
|
502
|
+
description: "Edge: capability decomposes into features. Forward: traceability.runway.enables. Reverse: parsed from spec Feature Grounding."
|
|
503
|
+
foreign_keys:
|
|
504
|
+
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
505
|
+
- { column: feature_id, references: features.id, nullable: false }
|
|
506
|
+
columns:
|
|
507
|
+
- { name: id, type: string, nullable: false }
|
|
508
|
+
- { name: capability_id, type: string, nullable: false }
|
|
509
|
+
- { name: feature_id, type: string, nullable: false }
|
|
510
|
+
|
|
511
|
+
capability_service:
|
|
512
|
+
primary_key: id
|
|
513
|
+
description: "Edge: capability is realised by services. Parsed from Related Services table in capability spec."
|
|
514
|
+
foreign_keys:
|
|
515
|
+
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
516
|
+
- { column: service_id, references: services.id, nullable: false }
|
|
517
|
+
columns:
|
|
518
|
+
- { name: id, type: string, nullable: false }
|
|
519
|
+
- { name: capability_id, type: string, nullable: false }
|
|
520
|
+
- { name: service_id, type: string, nullable: false }
|
|
521
|
+
- { name: role, type: string, nullable: true }
|
|
522
|
+
|
|
523
|
+
capability_event:
|
|
524
|
+
primary_key: id
|
|
525
|
+
description: "Edge: capability publishes or consumes event. Parsed from `## Related Events` table in capability spec."
|
|
526
|
+
foreign_keys:
|
|
527
|
+
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
528
|
+
- { column: event_id, references: events.id, nullable: false }
|
|
529
|
+
columns:
|
|
530
|
+
- { name: id, type: string, nullable: false }
|
|
531
|
+
- { name: capability_id, type: string, nullable: false }
|
|
532
|
+
- { name: event_id, type: string, nullable: false }
|
|
533
|
+
- { name: role, type: string, nullable: false, description: "publishes | consumes." }
|
|
534
|
+
|
|
535
|
+
capability_contract:
|
|
536
|
+
primary_key: id
|
|
537
|
+
description: "Edge: capability exposes or depends on contract. Forward: declared in traceability.contracts. Reverse: derived via service_contract ⋈ capability_service."
|
|
538
|
+
foreign_keys:
|
|
539
|
+
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
540
|
+
- { column: contract_id, references: contracts.id, nullable: false }
|
|
541
|
+
columns:
|
|
542
|
+
- { name: id, type: string, nullable: false }
|
|
543
|
+
- { name: capability_id, type: string, nullable: false }
|
|
544
|
+
- { name: contract_id, type: string, nullable: false }
|
|
545
|
+
- { name: source, type: string, nullable: false, description: "declared (forward) | derived (reverse)." }
|
|
546
|
+
|
|
547
|
+
journey_feature:
|
|
548
|
+
primary_key: id
|
|
549
|
+
description: "Edge: journey touches features. Parsed from Related features bullet."
|
|
550
|
+
foreign_keys:
|
|
551
|
+
- { column: journey_id, references: user_journeys.id, nullable: false }
|
|
552
|
+
- { column: feature_id, references: features.id, nullable: false }
|
|
553
|
+
columns:
|
|
554
|
+
- { name: id, type: string, nullable: false }
|
|
555
|
+
- { name: journey_id, type: string, nullable: false }
|
|
556
|
+
- { name: feature_id, type: string, nullable: false }
|
|
557
|
+
|
|
558
|
+
persona_feature:
|
|
559
|
+
primary_key: id
|
|
560
|
+
description: "Edge: persona uses features. Parsed from Related features bullet."
|
|
561
|
+
foreign_keys:
|
|
562
|
+
- { column: persona_id, references: personas.id, nullable: false }
|
|
563
|
+
- { column: feature_id, references: features.id, nullable: false }
|
|
564
|
+
columns:
|
|
565
|
+
- { name: id, type: string, nullable: false }
|
|
566
|
+
- { name: persona_id, type: string, nullable: false }
|
|
567
|
+
- { name: feature_id, type: string, nullable: false }
|
|
568
|
+
|
|
569
|
+
feature_service:
|
|
570
|
+
primary_key: id
|
|
571
|
+
description: "Edge: feature is implemented by service. Parsed from Feature Services table in feature-tree.md."
|
|
572
|
+
foreign_keys:
|
|
573
|
+
- { column: feature_id, references: features.id, nullable: false }
|
|
574
|
+
- { column: service_id, references: services.id, nullable: false }
|
|
575
|
+
columns:
|
|
576
|
+
- { name: id, type: string, nullable: false }
|
|
577
|
+
- { name: feature_id, type: string, nullable: false }
|
|
578
|
+
- { name: service_id, type: string, nullable: false }
|
|
579
|
+
|
|
580
|
+
feature_repo:
|
|
581
|
+
primary_key: id
|
|
582
|
+
description: "Edge: feature is implemented in repo. From contributes_to.artifact_type=feature-set."
|
|
583
|
+
foreign_keys:
|
|
584
|
+
- { column: feature_id, references: features.id, nullable: false }
|
|
585
|
+
- { column: repo_id, references: repositories.id, nullable: false }
|
|
586
|
+
columns:
|
|
587
|
+
- { name: id, type: string, nullable: false }
|
|
588
|
+
- { name: feature_id, type: string, nullable: false }
|
|
589
|
+
- { name: repo_id, type: string, nullable: false }
|
|
590
|
+
|
|
591
|
+
persona_journey:
|
|
592
|
+
primary_key: id
|
|
593
|
+
description: "Edge: persona participates in journey. Roles: primary | handoff | supporting."
|
|
594
|
+
foreign_keys:
|
|
595
|
+
- { column: persona_id, references: personas.id, nullable: false }
|
|
596
|
+
- { column: journey_id, references: user_journeys.id, nullable: false }
|
|
597
|
+
columns:
|
|
598
|
+
- { name: id, type: string, nullable: false }
|
|
599
|
+
- { name: persona_id, type: string, nullable: false }
|
|
600
|
+
- { name: journey_id, type: string, nullable: false }
|
|
601
|
+
- { name: role, type: string, nullable: false, description: "primary | handoff | supporting." }
|
|
602
|
+
|
|
603
|
+
capability_adr:
|
|
604
|
+
primary_key: id
|
|
605
|
+
description: "Edge: ADR informs capability. Forward: declared in capability spec Architecture Decisions. Reverse: same plus heuristic match supplements with confidence."
|
|
606
|
+
foreign_keys:
|
|
607
|
+
- { column: capability_id, references: capabilities.id, nullable: false }
|
|
608
|
+
- { column: adr_id, references: adrs.id, nullable: false }
|
|
609
|
+
columns:
|
|
610
|
+
- { name: id, type: string, nullable: false }
|
|
611
|
+
- { name: capability_id, type: string, nullable: false }
|
|
612
|
+
- { name: adr_id, type: string, nullable: false }
|
|
613
|
+
- { name: confidence, type: string, nullable: false, description: "spec | high | medium." }
|
|
614
|
+
|
|
615
|
+
adr_supersedes:
|
|
616
|
+
primary_key: id
|
|
617
|
+
description: "Edge: superseding ADR → superseded ADR. Parsed from Supersedes bullets where prose references a known ADR id."
|
|
618
|
+
foreign_keys:
|
|
619
|
+
- { column: superseding_adr_id, references: adrs.id, nullable: false }
|
|
620
|
+
- { column: superseded_adr_id, references: adrs.id, nullable: false }
|
|
621
|
+
columns:
|
|
622
|
+
- { name: id, type: string, nullable: false }
|
|
623
|
+
- { name: superseding_adr_id, type: string, nullable: false }
|
|
624
|
+
- { name: superseded_adr_id, type: string, nullable: false }
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sdd-cli version constant, used in error messages from the catalogue
|
|
3
|
+
* builder + aggregator + validate subcommands.
|
|
4
|
+
*
|
|
5
|
+
* Read from package.json at build time would be cleaner, but Node's ESM
|
|
6
|
+
* loader doesn't import JSON without flags. Hardcoding here is the
|
|
7
|
+
* simpler short-term path; keep in sync with package.json's `version`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CLI_VERSION = "0.11.0";
|
|
10
|
+
//# sourceMappingURL=cli-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-version.d.ts","sourceRoot":"","sources":["../../../src/lib/catalogue/cli-version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,WAAW,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sdd-cli version constant, used in error messages from the catalogue
|
|
3
|
+
* builder + aggregator + validate subcommands.
|
|
4
|
+
*
|
|
5
|
+
* Read from package.json at build time would be cleaner, but Node's ESM
|
|
6
|
+
* loader doesn't import JSON without flags. Hardcoding here is the
|
|
7
|
+
* simpler short-term path; keep in sync with package.json's `version`.
|
|
8
|
+
*/
|
|
9
|
+
export const CLI_VERSION = "0.11.0";
|
|
10
|
+
//# sourceMappingURL=cli-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-version.js","sourceRoot":"","sources":["../../../src/lib/catalogue/cli-version.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC"}
|