Repository navigation
Port the Parlance 0.15.0 runtime contract: 207/207 vectors - #4
Merged
Merged
Conversation
Parlance 0.15.0 changes how a node and its choices are presented, and a
0.14 runtime plays the new shapes wrong with no error. Vectors and schema
re-copied from parlance 440369d (the release-prep commit; v0.15.0 is not
tagged yet, and PIN says so and must move to the tag commit once it is).
- resolve_node is the one skip walk, shared by step_dialogue and
advance_node. Only an interstitial gated node (no choices, not isEnd) is
skipped; a gated node with choices or isEnd is returned with its line
hidden: textHidden true, text "". Both gates are judged on arrival.
- step_resolved_node(node, state, project, text_hidden) is the
presentation half of the contract's arrival sequence, for a caller that
applies onEnter between resolving and presenting.
- partition_choices: a fallback is offered only when no non-fallback
choice is visible (its own showIf still applies), and lockedChoices lists
failing choices whose whenLocked (else rules.choices.whenLockedDefault,
else "hide") is "show", with lockedText interpolated.
- choose_choice returns {"error": "... not selectable ..."} for a hidden,
locked or unoffered-fallback choice, where the reference throws.
- Absent node text is tolerated and stays absent; node and choice tags
pass through; the engine effect is an explicit no-op in apply_effect.
The runner asserts lockedChoiceIds and textHidden (absent = false) on
every step vector, text/nodeTags/visibleChoiceTags where stated, and
expectedError for choose_choice as for advance. `"project": null` in a
vector now maps to {} as the reference harness's asProject does.
Mutants on the skippable test, the fallback partition, the selectable
check, locked choices, per-choice whenLocked and the blanked hidden text
each turn the suite red. Removing the engine case does not: the match has
no default arm, so an unknown effect already leaves state unchanged; the
case is there to make that a stated decision rather than an accident.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018SVV6KXuhgbARyUvgQKbUP
The contract is unchanged since the release-prep commit this port was built against (440369d): every vendored vector and schema is byte-identical to parlance at a3c6454, which v0.15.0 tags. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018SVV6KXuhgbARyUvgQKbUP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This ports the runtime to Parlance v0.15.0.
conformance/PINpoints toa3c6454, the commit v0.15.0 tags. All vendored vectors and schemas are byte-identical to parlance at that commit.Runtime (
addons/parlance/runtime.gd)resolve_nodeis shared bystep_dialogueandadvance_node.isEnd).isEndis returned withtextHidden: trueandtext: "".step_resolved_node: the presenting half of the contract's resolve-once arrival sequence.partition_choices:lockedChoicesuseswhenLocked, thenrules.choices.whenLockedDefault, then"hide", and interpolateslockedText.choose_choicereturns{"error": "... not selectable ..."}for a hidden or locked choice, or a fallback that isn't currently offered.textis optional, and node and choice tags pass through unchanged.engineis an explicit no-op inapply_effect.lockedChoiceIdsandtextHidden.choose_choicehandlesexpectedError."project": nullin a vector maps to{}, as the reference harness does.Verification
conformanceworkflow is green.whenLocked, and blanking hidden text. The suite failed each time.enginecase does not fail any test.matchhas no default arm, so an unknown effect already leaves state unchanged; the explicit case documents that.text_hiddenargument ofstep_resolved_node.Merge once v0.15.0 is tagged at
a3c6454. mistfall-inn re-vendors this runtime next.🤖 Generated with Claude Code
https://claude.ai/code/session_018SVV6KXuhgbARyUvgQKbUP
Generated by Claude Code