packages feed

phino-0.0.157: test-resources/evaluate-packs/parks-a-firing-whose-morph-operand-diverged.yaml

# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The 'morph' of '$.a' fires an inner fork whose two sides, two different
# data, do not join. Under '--partial' the inner firing writes 'diverged' and
# the outer firing gets stuck right there, so the 'morph' of '$.b' and the
# outer join never run and the site of the outer fork is parked. Before #2014
# the outer join compared the unmorphed '$.a' with '$.b' and wrote a second
# 'diverged' that only echoed the first one.
symbolic: |
  - Ξ»: L_fork
    dataize:
      𝛿1: $.c
    morph:
      𝑛1: $.a
      𝑛2: $.b
    join:
      on: 𝛿1
      left: 𝑛1
      right: 𝑛2
location: 'Q.y'
partial: true
input: '⟦ y ↦ ⟦ c ↦ ⟦ Ξ» ‍ 𝜎1 ⟧, a ↦ ⟦ c ↦ ⟦ Ξ» ‍ 𝜎2 ⟧, a ↦ ⟦ Ξ” ‍ 01- ⟧, b ↦ ⟦ Ξ” ‍ 02- ⟧, Ξ» ‍ L_fork ⟧.Ο†, b ↦ ⟦ Ξ” ‍ 05- ⟧, Ξ» ‍ L_fork ⟧.Ο† ⟧'
result: '⟦ c ↦ ⟦ Ξ» ‍ 𝜎1 ⟧, a ↦ ⟦ c ↦ ⟦ Ξ» ‍ 𝜎2 ⟧, a ↦ ⟦ Ξ” ‍ 01- ⟧, b ↦ ⟦ Ξ” ‍ 02- ⟧, Ξ» ‍ L_fork ⟧.Ο†, b ↦ ⟦ Ξ” ‍ 05- ⟧, Ξ» ‍ L_fork ⟧.Ο†'
protocol: |
  𝕄(Ξ¦.y):
    𝔼(L_fork):
      𝛿1Β·1 := 𝔻(𝜎1:Ξ»)  # 𝔻(ΞΎ.c)
      𝕄(Ξ¦.a🌡1):
        𝔼(L_fork):
          𝛿1Β·2 := 𝔻(𝜎2:Ξ»)  # 𝔻(ΞΎ.c)
          𝑛1Β·2 := 01-:Ξ”  # 𝕄(ΞΎ.a)
          𝑛2Β·2 := 02-:Ξ”  # 𝕄(ΞΎ.b)
          diverged 𝑛1Β·2 vs 𝑛2Β·2  # they differ at .Ξ”, and the join names no otherwise
      stuck L_fork