CR-AR-FMWK-01: Process Kernel + Business Process Specialization (root model) - #10
Merged
Merged
Conversation
added 6 commits
September 3, 2026 11:43
…(root model)
Lands CR-AR-FMWK-01 verbatim from /home/hermes/dea-work/process/00_inbox/.
This CR synchronizes the OpenDEAM root model (v0.5.0 -> v0.6.0) with the
Process kernel + specialization discipline established by CR-MM-PROC-01
(dea-metamodel, merged PR #163). Mirrors the dea:entity-resource ->
dea:entity-financial-resource/-physical-resource/-intangible-resource
template (ADR-0005 D3).
Root model changes:
- dea:entity-process becomes the abstract Process kernel (no layer
allocation; discriminator process-kernel; completeness_contract
declares the T2-catalog specialization contract).
- dea:entity-business-process becomes the Core specialization
(layer L3; building_block L3-value-delivery; specializes the
kernel; catalog_repo dea-catalog-processes).
Validator extension:
- scripts/validate_consumer.py gains a third branch for abstract
kernels (no layer, no dimension, has abstract: true). Simulated
locally: current validator emits a false-positive dimension drift;
new branch passes cleanly.
The model-validator (validate_model.py) does not require changes; the
existing check #7 (abstract: true requires realized_in_layers) and
check #3 (layer-allocated entities declare layer+building_block) are
already compatible with the new shape (abstract kernel declares
realized_in_layers: [L3] with no top-level layer field).
Per the ADR-0005 D3 edit rules, introducing a new abstract root-model kernel is a structural change requiring a minor version bump. - VERSION: 0.5.0 -> 0.6.0 - model.version: 0.5.0 -> 0.6.0 - supersedes: 0.5.0 -> 0.6.0 (next commit will update) Note: supersedes line currently reads 'opendeam-model.yaml v0.4.0' (this is what v0.5.0 set). The next-model-prep commit will refresh it to v0.5.0.
During implementation, validate_model.py (existing root-model validator) rejected the originally-drafted kernel shape: - 'layer: null' (no layer allocation) failed check #3 — an entity without layer is treated as a dimension entity and must declare scope_layers (semantically wrong for a kernel). - 'status: normative' is not in the schema enum (status enum is proposed/planned/scaffold/existing/deprecated/retired). - 'class_alias: BP' collided with the new specialization's alias; chose 'PRC' for the kernel so 'BP' retains backward-compatibility for existing catalog consumers. - 'specializes: dea:entity-process' (entity_id) is too long; 'specializes' takes a class_alias, not entity_id — chose 'specializes: PRC' (the kernel's alias). Delivered shape (now reflected in the CR text): - dea:entity-process (kernel): class_alias: PRC, layer: L3, building_block: L3-value-delivery, status: proposed, abstract: true, discriminator: process-kernel, realized_in_layers: [L3], completeness_contract for T2 specialization contract, legacy_ids: [dea:entity-process]. - dea:entity-business-process (specialization): class_alias: BP (preserved from v0.5.0 allocation), layer: L3, building_block: L3-value-delivery, status: scaffold, specializes: PRC, catalog_repo: dea-catalog-processes, measured_by: [MTR]. Mirrors the Resource kernel template (ADR-0005 D3; abstract + 'layer: L3'). Resource precedent: - dea:entity-resource (abstract kernel; L3; abstract: true; realized_in_layers: [L3]; completeness_contract for T2 specialization contract). - dea:entity-financial-resource / -physical-resource / -intangible-resource (specializations; 'specializes: RES'; 'catalog_repo' each; abstract: false). The amended CR text + this commit keep the working-folder copy in /home/hermes/dea-work/process/00_inbox/ byte-identical.
…ialization
Implements CR-AR-FMWK-01 §4.3:
- dea:entity-process becomes the abstract Process kernel
(class_alias: PRC; layer: L3; building_block: L3-value-delivery;
status: proposed; abstract: true; discriminator: process-kernel;
realized_in_layers: [L3]; entity_role: content;
completeness_contract for T2 specialization contract;
legacy_ids: [dea:entity-process] for semantic preservation;
description aligned with WSF wsf:Process + dea-metamodel
dea:Process).
- dea:entity-business-process becomes the Core specialization
(class_alias: BP — preserved from v0.5.0 allocation for backward
compatibility; layer: L3; building_block: L3-value-delivery;
status: scaffold; specializes: PRC; catalog_repo:
dea-catalog-processes; measured_by: [MTR]; description with
CR-MM-PROC-01 + CR-BP-SPEC-BP-01 references).
- model.supersedes: 'v0.4.0 (ADR-0005)' -> 'v0.5.0 (ADR-0006)'.
Mirrors the Resource kernel template (ADR-0005 D3). Mirrors the
CR-016/ADR-015 dea:Capability -> dea:BusinessCapability discipline
(dea-metamodel). Mirrors the WSF wsf:Process -> dea:Process ->
dea:BusinessProcess specialization chain.
Verification:
- scripts/validate_model.py: PASS.
5 layers, 27 building blocks, 54 entities (2 dimension),
70 relationships (v0.6.0).
- The 3 warnings emitted by validate_model.py are pre-existing
(BS/SC share dea-catalog-digital-business-service-factory;
MDP/MFS share dea-catalog-model-deployments; both lack
discriminators per ADR-0002 D6 — flagged as non-blocking
convention violations since v0.3.0).
Implements CR-AR-FMWK-01 §4.4. The consumer validator gains a third
branch that handles abstract root-model kernels (e.g. the new
dea:entity-process kernel; mirrors the existing Resource kernel
pattern from ADR-0005 D3).
Branch ordering (matters!):
1. canon.abstract: true -> abstract-kernel branch (new)
2. canon.layer: ... -> layer-allocated branch (existing)
3. else -> dimension-entity branch (existing)
The abstract-kernel branch:
- Skips the layer-equality check (the kernel's layer is for
the model's own constraint; the consumer declares the kernel
id in a multi-entity list without claiming a layer of its own).
- Rejects layer= or dimension= in the consumer pointer for the
kernel (the kernel is realized by specializations, not allocated
to a layer directly).
- Discriminator check still applies (kernel declares
discriminator: process-kernel; the consumer must echo it).
- class_alias check still applies (kernel alias PRC; the consumer
must echo it when declaring the kernel id).
Validation scenarios verified locally (5/5 pass):
A) Future catalog pointer (kernel + specialization): PASS
B) Legacy pointer (BP-only; layer=L3; no discriminator): FAIL
with 3 drifts (abstract kernel, class_alias, discriminator).
C) Kernel pointer with layer=L3: FAIL with abstract-kernel drift.
D) Specialization-only pointer (BP, L3): PASS (backward compat).
E) Specialization with bad class_alias: FAIL with class_alias drift.
Docstring updated to reflect the new branch + v0.6.0 (CR-AR-FMWK-01)
context. No other script behaviour changed; existing layer and
dimension branches operate exactly as before.
ADR-0006 records the architectural reasoning behind CR-AR-FMWK-01:
the Process kernel + Business Process specialization discipline that
mirrors the Capability + Resource template from ADR-0005 D3 and
ADR-015.
Decisions recorded:
D1. Kernel + first Core specialization discipline (mirror
Capability / Resource template).
D2. Consumer-validator extension (abstract-kernel branch in
scripts/validate_consumer.py).
D3. Consumer-validator scenario matrix (verified locally; 5/5).
D4. End-to-end authority chain (WSF -> dea-metamodel ->
dea-architecture-framework -> dea-catalog-processes).
README:
- Model Version badge: v0.5.0 -> v0.6.0
- First-level entity count: 53 -> 54
- Reusable workflow example: workflow ref v0.5.0 -> v0.6.0;
model_ref v0.5.0 -> v0.6.0 (matches the v0.6.0 release tag)
|
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CR-AR-FMWK-01: Process Kernel + Business Process Specialization (root model v0.5.0 -> v0.6.0)
Synchronizes the OpenDEAM root model with the Process kernel +
specialization discipline established by CR-MM-PROC-01 (dea-metamodel;
merged PR #163 / commit
1665209). Mirrors the Capability + Capabilityspecialization discipline (dea-metamodel, CR-016, ADR-015) and the
Resource kernel + Resource specialization discipline (ADR-0005 D3).
Authority chain (end-to-end)
Deliverables (5 atomic commits)
09cdd7fdocs: CR-AR-FMWK-01.md verbatim (md5047d717d...)22c9d16chore: VERSION 0.5.0 -> 0.6.0; model.version 0.5.0 -> 0.6.0ed67efedocs: CR text amendment (§3 + §4.3 + §6) to reflect validator-driven deviationsa7d017ffeat: kernel + Business Process specialization (root model)dcb3bc3feat(validator): abstract-kernel branch in check_one()41f65e5docs: ADR-0006 + README badgesValidator-driven deviations from original draft
layer: null; corrected tolayer: L3(validate_model.py check feat: OpenDEAM v0.5.0 — metamodel governance layer + Resource & Information/Knowledge (ADR-0005) #7 requiresrealized_in_layersreferencing valid layer IDs; mirrors Resource kernel)status: normative; corrected tostatus: proposed(schema enum doesn't includenormative)class_alias: BP; corrected toclass_alias: PRC(avoids alias collision; preservesBPfor the specialization for backward compat)specializesvalue: wasdea:entity-process(entity_id); corrected toPRC(schema takes a class_alias, maxLength 5)All deviations recorded in
change-requests/CR-AR-FMWK-01.md§3, §4.3, §6 + ADR-0006 D1.Validator extension
scripts/validate_consumer.pygains a third branch incheck_one():Consumer-validator scenarios (5/5 verified)
Verification (local)
scripts/validate_model.pyscripts/validate_consumer.py(5 scenarios)validate_consumer.pydocstringPause-before-merge
Per CR-programme convention, paused before merge. After merge, the
v0.6.0 tag is created and downstream repos advance their
model_refto v0.6.0.
Unblocks
dea-catalog-processes(after this merge +tag + catalog
model_refadvance).a34c7ffondea-catalog-processes(separate PR).Honest scoping notes
viewer/entity-graph.jsonis regenerated from this root model bythe
render-metamodelworkflow on tag push; it picks updea:Processand
dea:BusinessProcessautomatically after the v0.6.0 tag.validate_model.py(BS/SC sharedcatalog_repo; MDP/MFS shared catalog_repo) are pre-existing and
unrelated to Process.
CR-AR-FMWK-03 (other kernel + specialization chains) as follow-on
work; neither is scoped by this ADR.
Files (6 changed; +514/-10)
change-requests/CR-AR-FMWK-01.md(new; 333 lines)docs/ADRs/0006-opendeam-v0.6.0-process-kernel-specialization.md(new; 109 lines)model/opendeam-model.yaml(kernel + specialization entries)scripts/validate_consumer.py(abstract-kernel branch)VERSION(0.5.0 -> 0.6.0)README.md(badges + count)