In this section: Hands-On Examples

Chapter 11 UMA code example

Evolution without fragmentation tutorial

This tutorial shows what happens after deployment. You will follow drift, duplicated behavior, version sprawl, and runtime-governed recovery without pretending every system can be rewritten.

Tutorial route

Use the links here to move between the evolution chapters without burying the learning path in the footer.

What you will learn

  • how locally valid changes create fragmentation over time
  • why versioning needs explicit coexistence rules
  • how runtime governance supports brownfield adoption

Prerequisites

  • Rust 1.76 or newer
  • Node.js 20 or newer
  • a checkout of the repository

Full tutorial

  1. Enter the example
    cd chapter-11-evolution-without-fragmentation
  2. List the evolution labs
    ./scripts/list_labs.sh
  3. Validate the contract anchor
    ./scripts/validate_evolution.sh lab1-contract-anchor
  4. Run the coherent baseline
    ./scripts/run_evolution_demo.sh lab1-contract-anchor
  5. Inspect behavioral drift
    ./scripts/diff_evolution.sh lab1-contract-anchor lab2-behavioral-drift
  6. Run duplicate implementations
    ./scripts/run_evolution_demo.sh lab3-duplicate-implementations
  7. Run governed coexistence
    ./scripts/run_evolution_demo.sh lab5-runtime-governed-coexistence
  8. Run the full smoke path
    ./scripts/smoke_evolution_labs.sh

What to inspect

After each command, look for these proof points. They are the signals that connect the code example back to the UMA architecture claim.

  • Verdict
  • behavioral_drift
  • duplicate_behavior
  • version_fragmentation
  • Runtime Decisions

Acceptance check

The chapter-level validation path is:

./scripts/smoke_evolution_labs.sh

Return to the repository root for the final acceptance gate:

cd ..
./scripts/smoke_reader_paths.sh

Where to go next

Chapter 12 turns runtime decisions into discoverable artifacts.