Skip to content

Port resolveQuests, progression and nextContinuations (182/182 vectors) - #3

Merged
mwburke merged 1 commit into
mainfrom
claude/parlance-0.14-upgrade-8ank7c
Sep 23, 2026
Merged

mwburke merged 1 commit into
mainfrom
claude/parlance-0.14-upgrade-8ank7c

Conversation

@mwburke

@mwburke mwburke commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Adds the last three conformance families this port skipped. With them, all 182 vectors at the v0.14.0 pin run and pass.

Changes

  • resolve_quests(state, project) fires quest stage onComplete and outcome effects when their condition (completeWhen/reachedWhen) holds.
    • Each item fires once, recorded in quest_fired, and the pass repeats until nothing new fires.
    • Order is quests by id, then stages, then outcomes, each in array order.
    • Effects with no condition never fire on their own, and it never writes quest_stages.
    • Returns {state, firings}.
  • Progression: level_for_xp, points_earned, available_points, effective_skill, skill_cap, recompute_skills, and invest_skill_point. invest_skill_point does nothing unless a point is available and the skill is below its cap.
    • Levels and points are derived from total-earned xp.
    • Per-skill max comes from an optional skills registry.
  • next_continuations(state, project, visited, current_dialogue_id) decides what to offer when a scene ends.
    • A pending cutscene comes first.
    • Next, any character whose active_dialogue__ flag is set and whose winning offer reads that flag at the top level. These are marked queued and ignore the visited set.
    • Otherwise, each character's best eligible offer, with the visited filter.
    • clear_active_dialogue and clear_pending_cutscene clear the flag and the pending cutscene once the host has used them.
  • The runner now runs all three families instead of skipping them.
  • README: scoreboard, "11 of 11", and a list of the new functions. It also notes that main now meets the README's own v1.0.0 bar ("complete against the spec"), but no tag is created.

Verification

  • godot --headless --script tests/conformance_runner.gd (Godot 4.4): 182 passed, 0 failed, 0 skipped.
  • Mutation checks:
    • Caught: removing the once-only check, the skill-cap guard, or the forced-offer flag test.
    • README's >=→> example: still 6 failures.
    • Not caught: removing the fixpoint loop. The vectors' cascade case happens to run in quest-id order, so a single pass reaches it. This is a gap in the upstream vectors, which a port never hand-edits. It needs a vector upstream where a later quest's firing satisfies an earlier quest's condition.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Wc6JEuMmSXJEJSRYwGjn1f


Generated by Claude Code

The last three families the port skipped. With them every vendored
conformance vector runs and passes against the v0.14.0 pin.

- resolve_quests fires quest stage onComplete and outcome effects whose
  completeWhen/reachedWhen holds, once each (recorded in quest_fired), to
  a fixpoint, in quest-id then array order. Unconditioned effects never
  auto-fire, and quest_stages is never written.
- Progression: level_for_xp, points_earned, available_points,
  effective_skill, skill_cap, recompute_skills and the guarded
  invest_skill_point. Levels and points derive from total-earned xp;
  per-skill max comes from an optional skills registry.
- next_continuations returns a pending cutscene first, then forced
  routing (a routed character whose winning offer reads its
  active_dialogue__ flag at the top level, visited set ignored), else
  discovery with the visited filter. clear_active_dialogue and
  clear_pending_cutscene are the helpers that consume them.

Mutants on once-only firing, the skill cap guard and the forced-offer
flag test each turn the suite red. Dropping the fixpoint loop does not:
the vectors' cascade case runs in quest-id order, so a single pass
already reaches it. That is a gap in the upstream vectors, not fixed
here, because a pinned vector is never hand-edited.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wc6JEuMmSXJEJSRYwGjn1f
mwburke pushed a commit to Orbitope/parlance-releases that referenced this pull request Sep 22, 2026
Both ports gained resolveQuests, progression and nextContinuations, so
the scoreboards drop their SKIP row and read 182 passed, 0 skipped. The
engine-contract note about SKIP now describes it as what an unfinished
port does, since this one no longer has any.

Merge after Orbitope/parlance-gdscript#3 and Orbitope/parlance-unity#3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wc6JEuMmSXJEJSRYwGjn1f
mwburke pushed a commit to Orbitope/mistfall-inn that referenced this pull request Sep 23, 2026
parlance-gdscript now ports every conformance family at the v0.14.0 pin.
Re-copied runtime.gd so this vendored addon stays byte-identical to it.
The game does not call the new functions yet, so play is unchanged; the
game boots headless with no script errors.

Depends on Orbitope/parlance-gdscript#3 landing: this is its runtime.gd.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wc6JEuMmSXJEJSRYwGjn1f
@mwburke
mwburke merged commit b7d16ca into main Sep 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants