Kind.outcome has no shape a host can read generically
Deriving a terminal identity to index — "which ending did this finished session reach" —
means calling kind.outcome() and then guessing at the returned object's fields. Adventures
recognises { endingId } and reports nothing for any other kind, degrading rather than
guessing. Terminal identity is supposed to be the cross-version-stable vocabulary
(07-replay.md §3); it is stable per kind but not legible across them.
Found by the first downstream host — see design/90-decisions.md, Found by the first
downstream host — SubZeroDev.Adventures.
Done when
Agent instructions
- Authority: this issue, since the bullet no longer lives in
design/90-decisions.md's
open register (Found by the first downstream host).
- Stop if: widening
Kind.outcome's shape turns out to require changing every existing
kind's implementation rather than adding an optional common field.
Kind.outcomehas no shape a host can read genericallyDeriving a terminal identity to index — "which ending did this finished session reach" —
means calling
kind.outcome()and then guessing at the returned object's fields. Adventuresrecognises
{ endingId }and reports nothing for any other kind, degrading rather thanguessing. Terminal identity is supposed to be the cross-version-stable vocabulary
(
07-replay.md§3); it is stable per kind but not legible across them.Found by the first downstream host — see
design/90-decisions.md, Found by the firstdownstream host — SubZeroDev.Adventures.
Done when
Kind.outcomegains some minimal cross-kind-legible field (or a documentedcommon shape) a host can read without per-kind knowledge, or the contract states
explicitly that outcome legibility is deliberately per-kind and a host must degrade
gracefully per kind, the way Adventures already does.
Agent instructions
design/90-decisions.md'sopen register (Found by the first downstream host).
Kind.outcome's shape turns out to require changing every existingkind's implementation rather than adding an optional common field.