Skip to content

Fix product dependencies - #564

Merged
dwolfson merged 1 commit into
odpi:mainfrom
mandy-chessell:oak2026
Sep 26, 2026
Merged

dwolfson merged 1 commit into
odpi:mainfrom
mandy-chessell:oak2026

Conversation

@mandy-chessell

Copy link
Copy Markdown
Contributor

Coco supply chains: record handoffs between chains as peer links, not overlapping members; set the data lake's deployed implementation type

Summary

A review of product-dependencies.md found dependencies tagged with supply chains they don't belong to. For
example, Hospital Certifications ← Worker Qualifications was tagged with both Workforce Competency and
Clinical Trials, and the Clinical Trials tag was wrong. The dependency file copied its tags faithfully from
the wires in strategic-supply-chain-analysis.md, so the problem was in how the analysis modelled data
passing from one chain to another.

The analysis handled each crossing by adding the component on the far side as a "(handover)" member of
both chains and tagging the crossing wire with both. So the chains overlapped, no crossing was visible, and
a wire could carry a chain that neither the data nor the business process belonged to. This PR adopts a
simpler convention:

  • A chain's members are its own components. The components of other chains that it exchanges data with
    are listed under each chain in a separate Component | Handoff table, and are not added as members.
  • A wire names a chain only when both its ends are members of that chain. A wire that crosses between
    chains names no chain; ISC Qualified Names is optional.
  • The crossing is recorded once, between the two chains, as a Link Information Supply Chain Peers
    in strategic-information-supply-chains.md.
  • Product dependencies follow their wire: one dependency per chain on the wire, or a single dependency
    with no ISC Qualified Name for a crossing wire.

Registers (Competency Register, Worker Master Register, Product Master Register, ...) legitimately belong to
several chains, so a wire between two shared members can still name two chains. Five wires do.

Changes

1. coco-data-hub/strategic-supply-chain-analysis.md

  • Wrong tags removed:
    • The Clinical Trials tag on four wires: Clinical Trials is modelled in CocoComboArchive and none of
      these components is a member of it.
    • Nine tags where the data on the wire isn't that chain's data. For example, New Employee Onboarding
      on "locate employee data" and "payroll postings", and Batch Manufacturing on the incoming-material
      testing wires.
  • Wires deleted:
    • Two direct postings to the ledger (revenue posting, payment instruction). Those postings already
      reach the ledger through the subledger feeds, so they were being posted twice.
    • A duplicate certificated signatory wire.
  • Memberships: removed 37: the 33 "(handover)" ones, plus four left with no wire in their chain
    (Accounting ledgers ×3, Market Authorisation Register). 111 remain. Each chain now has a handoffs
    table that keeps the original rationale text.
  • Wire tags: 27 wires retagged, so 10 now cross between chains and name no chain.
  • Wording: the Part 3 introduction, the Clinical Trials note and the handovers appendix are rewritten
    to match (123 wires: 10 crossing, 5 naming two chains).

0. data-governance-program/strategic-information-supply-chains.md

  • Nine new peer links, bringing the total to 30, one for every chain pair that a crossing wire connects:
    • pack configuration: New Drug Product Details → Product Serialisation
    • product handling requirements: New Drug Product Details → Cold Chain
    • label or authorisation change: Adverse Event → New Drug Product Details
    • signal referred to quality: Adverse Event → Batch Manufacturing
    • certificated signatory: Workforce Competency → Cold Chain
    • inbound patient material: Personalized Treatment Ordering → Cold Chain
    • hazardous holdings: Physical Inventory → Occupational Health
    • expense access: New Employee Onboarding → Employee Expense Payment
    • payroll postings: New Employee Onboarding → Financial Close
  • All nine chains are created earlier in the file, so there are no forward references.

1. coco-data-hub/strategic-digital-products/product-dependencies.md

  • Rebuilt to follow the wires. There are now 124 dependencies, down from 163:
    • 112 name the chain they implement;
    • 10 cross between chains and name none;
    • 1 is Cold Chain Transit Records ← Carrier Transit Events (two products of one component), now
      labelled "carrier journey events" and tagged Cold Chain;
    • 1 is new: Carrier Transit Events ← Dangerous Goods Consignment Records ("consigned to
      carrier"). Without it, the Cold Chain and Dangerous Goods Consignment dependencies split into two
      unconnected halves, because the wires between them pass through the external carrier systems, which
      have no product.
  • A redundant "read directly" dependency was removed. A missing ___ separator was fixed. The overview
    and per-chain table were updated.

1. coco-data-hub/README.md, strategic-digital-products/README.md

  • Counts updated: 123 wires, 10 crossing wires, 15 archive memberships, 124 dependencies, per-group totals.

1. coco-data-hub/setting-up-the-data-hub.ipynb

  • The request body that creates the coco data lake directory asset now sets
    "deployedImplementationType": "File System Directory", so the asset is created with its deployed
    implementation type.

Verification

  • Structural checks (balanced ___ delimiters, complete command blocks) pass on all three command
    files.
  • Consistency checks:
    • Every dependency matches a wire and a chain on that wire.
    • Every chain member has a wire in its chain.
    • Every handoff row has a crossing wire.
    • Every crossing chain pair has a peer link.
    • Each chain's dependencies form one connected graph, matching its wires.
  • dr_egeria --directive validate: no warnings or errors on the analysis (316 commands), the
    dependencies (124) and the supply chains file (131).
  • Quickstart platform: brought into line with these files by a pyegeria script working by relationship
    GUID. That removed 44 memberships, retagged 37 wires, detached 3 wires, detached 51 and created 12
    dependencies, and created 9 peer links. Egeria and the files now match exactly: 558 wires,
    124 dependencies, 31 chain links.

Dr.Egeria fix this depends on

Re-running a file of multi-link Link commands used to duplicate every DigitalProductDependency and
SolutionLinkingWire. Both are MULTI_LINK, and Dr.Egeria's check for an existing relationship was missing
(dependencies) or never matched (wires). This is fixed in pyegeria 6.1.21. Re-running
product-dependencies.md on 6.1.21 updated all 124 dependencies in place and created none. Load these
files with pyegeria ≥ 6.1.21.

Not in this PR

Working-tree changes outside coco-workbooks/ (the platform Dockerfile, tools/, runtime volumes) are not
part of this PR.

🤖 Generated with Claude Code

Signed-off-by: Mandy Chessell <mandy.e.chessell@gmail.com>
@dwolfson
dwolfson self-requested a review September 26, 2026 19:26
@dwolfson dwolfson self-assigned this Sep 26, 2026
@dwolfson
dwolfson merged commit a68464c into odpi:main Sep 26, 2026
4 checks passed
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.

2 participants