Skip to content

CR-AR-FMWK-01: Process Kernel + Business Process Specialization (root model) - #10

Merged
emmanuel-a-otchere merged 6 commits into
mainfrom
feature/cr-ar-fmwk-01-process-kernel
Sep 3, 2026
Merged

emmanuel-a-otchere merged 6 commits into
mainfrom
feature/cr-ar-fmwk-01-process-kernel

Conversation

@emmanuel-a-otchere

Copy link
Copy Markdown
Contributor

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 + Capability
specialization discipline (dea-metamodel, CR-016, ADR-015) and the
Resource kernel + Resource specialization discipline (ADR-0005 D3).

Authority chain (end-to-end)

WSF                            (wsf:Process; Tier-3 derived)
└── dea-metamodel               (CR-MM-PROC-01)
     ├── dea:Process              (abstract Core kernel)
     │     ├── dea:BusinessProcess  (Core specialization)
     │     ├── (future) dea:OperationalProcess
     │     └── (future) dea:EngineeringProcess
     │
     │      WSF federation mapping: dea:Process <-> wsf:Process (EXACT)
     │
     └── dea-architecture-framework  (this CR)
          ├── dea:entity-process       (abstract kernel; PRC)
          └── dea:entity-business-process  (specialization; BP)

Deliverables (5 atomic commits)

  1. 09cdd7f docs: CR-AR-FMWK-01.md verbatim (md5 047d717d...)
  2. 22c9d16 chore: VERSION 0.5.0 -> 0.6.0; model.version 0.5.0 -> 0.6.0
  3. ed67efe docs: CR text amendment (§3 + §4.3 + §6) to reflect validator-driven deviations
  4. a7d017f feat: kernel + Business Process specialization (root model)
  5. dcb3bc3 feat(validator): abstract-kernel branch in check_one()
  6. 41f65e5 docs: ADR-0006 + README badges

Validator-driven deviations from original draft

  • kernel layer: was layer: null; corrected to layer: L3 (validate_model.py check feat: OpenDEAM v0.5.0 — metamodel governance layer + Resource & Information/Knowledge (ADR-0005) #7 requires realized_in_layers referencing valid layer IDs; mirrors Resource kernel)
  • kernel status: was status: normative; corrected to status: proposed (schema enum doesn't include normative)
  • kernel alias: was class_alias: BP; corrected to class_alias: PRC (avoids alias collision; preserves BP for the specialization for backward compat)
  • specializes value: was dea:entity-process (entity_id); corrected to PRC (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.py gains a third branch in check_one():

if canon.get("abstract"):        # NEW: abstract-kernel branch
    # kernel: skip layer check; reject mm.layer/dimension
elif "layer" in canon:           # existing: layer-allocated branch
    # layer: require mm.layer == canon.layer
else:                            # existing: dimension branch
    # dimension: require mm.dimension in allocator_ids

Consumer-validator scenarios (5/5 verified)

# Scenario Expected Result
A Future catalog pointer (kernel + specialization) PASS PASS
B Legacy BP-only pointer (no discriminator) FAIL FAIL (3 drifts)
C Kernel pointer with bad layer FAIL FAIL
D Specialization-only pointer (backward compat) PASS PASS
E Specialization with bad class_alias FAIL FAIL

Verification (local)

Check Result
scripts/validate_model.py PASS (5 layers, 27 building blocks, 54 entities, 70 relationships; v0.6.0)
scripts/validate_consumer.py (5 scenarios) 5/5 as expected
YAML lint clean
validate_consumer.py docstring updated to reflect new branch + v0.6.0 context

Pause-before-merge

Per CR-programme convention, paused before merge. After merge, the
v0.6.0 tag is created and downstream repos advance their model_ref
to v0.6.0.

Unblocks

  • CR-BP-SPEC-BP-01 on dea-catalog-processes (after this merge +
    tag + catalog model_ref advance).
  • Revert of a34c7ff on dea-catalog-processes (separate PR).

Honest scoping notes

  • viewer/entity-graph.json is regenerated from this root model by
    the render-metamodel workflow on tag push; it picks up dea:Process
    and dea:BusinessProcess automatically after the v0.6.0 tag.
  • The three warnings emitted by validate_model.py (BS/SC shared
    catalog_repo; MDP/MFS shared catalog_repo) are pre-existing and
    unrelated to Process.
  • ADR-0006 references CR-AR-FMWK-02 (future specialization ADRs) and
    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)

Coder 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)
@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@emmanuel-a-otchere
emmanuel-a-otchere merged commit 76463b2 into main Sep 3, 2026
1 check passed
@emmanuel-a-otchere
emmanuel-a-otchere deleted the feature/cr-ar-fmwk-01-process-kernel branch September 3, 2026 05:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant