Sandbox/RainbowFork
From OHC Network Wiki
More languages
More actions
Older versions: Sandbox/RainbowFork/Prod/Unicorn/ColourModel/3.0.0  Sandbox/RainbowFork/Prod/Unicorn/ColourModel/2.0.0  Sandbox/RainbowFork/Prod/Unicorn/ColourModel/1.0.0  Sandbox/RainbowFork/Dev/ColourModel/2.0.0  Sandbox/RainbowFork/Dev/ColourModel/1.0.0
ℹ️ Forking across time — the full demo
Sandbox/Version demo showed versioning. Sandbox/ModelFork showed forking. This page shows both — multiple sync cycles between an upstream and its downstream fork — using the most important data model ever conceived: the 7 colours of the rainbow.
Once upon a time...
A Development Entity owned the canonical Rainbow Colour Model. Seven simple colours. Life was peaceful.
Then Unicorn Dev appeared. Unicorns love rainbows. They forked the model immediately.
Then the Development Entity went absolutely unhinged. Types changed. Colours were deleted. Random fields appeared out of nowhere.
Unicorn Dev had to keep up — without losing their sparkle.
The cast
| Entity | Role | Latest |
|---|---|---|
| 🧪 Dev | Upstream (source of truth) | v3.0.0 "Full Chaos" |
| 🦄 Unicorn Dev | Downstream fork | v5.0.0 "Perfectly Balanced" |
Dev's frozen history
- v1.0.0 "The Classic" — 7 colours, all strings, the world made sense
- v2.0.0 "Tech Disruption" — types changed, colours deleted, chaos begins
Unicorn's frozen history
- v1.0.0 "Born from Rainbows" — fork point, identical to Dev v1.0.0
- v2.0.0 "Getting Fancy" — custom fields added
- v3.0.0 "Sync Wave 1" — first selective sync from Dev v2.0.0
The complete timeline
| When | Dev upstream | Unicorn downstream |
|---|---|---|
| Start | v1.0.0 — 7 strings | — |
| 🦄 Fork | — | v1.0.0 — forks from Dev v1.0.0 (identical) |
| Sparkles! | — | v2.0.0 — adds sparkle_level, glitter_mode, unicorn_power |
| 💥 Chaos wave 1 | v2.0.0 — colour_1→Integer, colour_2/7 deleted, colour_4→Boolean, colour_6→Float, +fave_colour, +energy | — |
| 🔄 Sync 1 | — | v3.0.0 — cherry-picked from Dev v2.0.0 (adopted 3, declined 4) |
| 💥 Chaos wave 2 | v3.0.0 — colour_1→Boolean, colour_3→Integer, colour_5 deleted, colour_6→String, +mood, +rgb_tuple, +is_neon, +wavelength, -fave_colour | — |
| ✨ More sparkles | — | v4.0.0 — adds rainbows_per_second, magic_spell |
| 🔄 Sync 2 | — | v5.0.0 — cherry-picked from Dev v3.0.0 (adopted 6, declined 5) |
All fields across all forks
| Model | Field | FieldType | Notes |
|---|---|---|---|
| ColourModel_Dev_v1 | colour_1 | String | Red |
| ColourModel_Dev_v1 | colour_2 | String | Orange |
| ColourModel_Dev_v1 | colour_3 | String | Yellow |
| ColourModel_Dev_v1 | colour_4 | String | Green |
| ColourModel_Dev_v1 | colour_5 | String | Blue |
| ColourModel_Dev_v1 | colour_6 | String | Indigo |
| ColourModel_Dev_v1 | colour_7 | String | Violet |
| ColourModel_Dev_v2 | colour_1 | Integer | 0xFF0000 (was String) |
| ColourModel_Dev_v2 | colour_3 | String | Yellow (unchanged) |
| ColourModel_Dev_v2 | colour_4 | Boolean | is_green? (was String) |
| ColourModel_Dev_v2 | colour_5 | String | Blue (unchanged) |
| ColourModel_Dev_v2 | colour_6 | Float | 440.0 nm (was String) |
| ColourModel_Dev_v2 | energy | Float | NEW — photon energy in eV |
| ColourModel_Dev_v2 | fave_colour | String | NEW — developer's favourite colour |
| ColourModel_Dev_v3 | colour_1 | Boolean | is_red? (was Integer) |
| ColourModel_Dev_v3 | colour_3 | Integer | 575 nm (was String) |
| ColourModel_Dev_v3 | colour_4 | Boolean | is_green? (unchanged) |
| ColourModel_Dev_v3 | colour_6 | String | "Indigo" (was Float) |
| ColourModel_Dev_v3 | energy | Float | unchanged — 2.1 eV |
| ColourModel_Dev_v3 | is_neon | Boolean | NEW — does it glow? |
| ColourModel_Dev_v3 | mood | String | NEW — current mood of the colour |
| ColourModel_Dev_v3 | rgb_tuple | String | NEW — "255,0,0" format |
| ColourModel_Dev_v3 | wavelength_max | Float | NEW — 780 nm |
| ColourModel_Dev_v3 | wavelength_min | Float | NEW — 380 nm |
| ColourModel_Unicorn_latest | colour_1 | Integer | Synced from Dev v2.0.0 — declined Dev v3.0.0 change |
| ColourModel_Unicorn_latest | colour_2 | String | '''Kept''' — declined upstream deletion (twice) |
| ColourModel_Unicorn_latest | colour_3 | String | '''Kept''' — declined type change to Integer |
| ColourModel_Unicorn_latest | colour_4 | String | '''Kept''' — declined type change to Boolean |
| ColourModel_Unicorn_latest | colour_5 | String | '''Kept''' — declined upstream deletion |
| ColourModel_Unicorn_latest | colour_6 | String | Synced from Dev v3.0.0 (back to String) |
| ColourModel_Unicorn_latest | colour_7 | String | '''Kept''' — declined upstream deletion (twice) |
| ColourModel_Unicorn_latest | energy | Float | Synced from Dev v2.0.0 — unchanged in Dev v3.0.0 |
| ColourModel_Unicorn_latest | fave_colour | String | Synced from Dev v2.0.0 — declined Dev v3.0.0 deletion |
| ColourModel_Unicorn_latest | glitter_mode | Boolean | '''Custom''' — preserved across all syncs |
| ColourModel_Unicorn_latest | is_neon | Boolean | Synced from Dev v3.0.0 |
| ColourModel_Unicorn_latest | magic_spell | String | '''Custom''' — preserved |
| ColourModel_Unicorn_latest | mood | String | Synced from Dev v3.0.0 |
| ColourModel_Unicorn_latest | rainbows_per_second | Integer | '''Custom''' — preserved |
| ColourModel_Unicorn_latest | rgb_tuple | String | Synced from Dev v3.0.0 |
| ColourModel_Unicorn_latest | sparkle_level | Integer | '''Custom''' — 1-10 — preserved across all syncs |
| ColourModel_Unicorn_latest | unicorn_power | Float | '''Custom''' — mega-sparkles — preserved |
| ColourModel_Unicorn_latest | wavelength_max | Float | Synced from Dev v3.0.0 |
| ColourModel_Unicorn_latest | wavelength_min | Float | Synced from Dev v3.0.0 |
| ColourModel_Unicorn_v1 | colour_1 | String | Red |
| ColourModel_Unicorn_v1 | colour_2 | String | Orange |
| ColourModel_Unicorn_v1 | colour_3 | String | Yellow |
| ColourModel_Unicorn_v1 | colour_4 | String | Green |
| ColourModel_Unicorn_v1 | colour_5 | String | Blue |
| ColourModel_Unicorn_v1 | colour_6 | String | Indigo |
| ColourModel_Unicorn_v1 | colour_7 | String | Violet |
| ColourModel_Unicorn_v2 | colour_1 | String | Inherited from upstream v1.0.0 |
| ColourModel_Unicorn_v2 | colour_2 | String | Inherited from upstream v1.0.0 |
| ColourModel_Unicorn_v2 | colour_3 | String | Inherited from upstream v1.0.0 |
| ColourModel_Unicorn_v2 | colour_4 | String | Inherited from upstream v1.0.0 |
| ColourModel_Unicorn_v2 | colour_5 | String | Inherited from upstream v1.0.0 |
| ColourModel_Unicorn_v2 | colour_6 | String | Inherited from upstream v1.0.0 |
| ColourModel_Unicorn_v2 | colour_7 | String | Inherited from upstream v1.0.0 |
| ColourModel_Unicorn_v2 | glitter_mode | Boolean | '''Custom''' — is glitter enabled? |
| ColourModel_Unicorn_v2 | sparkle_level | Integer | '''Custom''' — 1-10 |
| ColourModel_Unicorn_v2 | unicorn_power | Float | '''Custom''' — mega-sparkles |
| ColourModel_Unicorn_v3 | colour_1 | Integer | Synced from Dev v2.0.0 |
| ColourModel_Unicorn_v3 | colour_2 | String | '''Kept''' — declined upstream deletion |
| ColourModel_Unicorn_v3 | colour_3 | String | Unchanged |
| ColourModel_Unicorn_v3 | colour_4 | String | '''Kept''' — declined type change to Boolean |
| ColourModel_Unicorn_v3 | colour_5 | String | Unchanged |
| ColourModel_Unicorn_v3 | colour_6 | String | '''Kept''' — declined type change to Float |
| ColourModel_Unicorn_v3 | colour_7 | String | '''Kept''' — declined upstream deletion |
| ColourModel_Unicorn_v3 | energy | Float | Synced from Dev v2.0.0 |
| ColourModel_Unicorn_v3 | fave_colour | String | Synced from Dev v2.0.0 |
| ColourModel_Unicorn_v3 | glitter_mode | Boolean | '''Custom''' |
| ColourModel_Unicorn_v3 | sparkle_level | Integer | '''Custom''' — 1-10 |
| ColourModel_Unicorn_v3 | unicorn_power | Float | '''Custom''' — mega-sparkles |