Skip to content

Port resolveQuests, progression and nextContinuations (all 11 families) - #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 vendored but never ran. With them, all 182 vectors at the v0.14.0 pin run and pass.

Changes

  • ResolveQuests(state, project) fires quest stage onComplete and outcome effects when their condition (completeWhen/reachedWhen) holds.
    • Each item fires once, recorded in QuestFired, and the pass repeats until nothing new fires.
    • Order is quests by id (ordinal compare), then stages, then outcomes, each in array order.
    • Effects with no condition never fire on their own, and it never writes QuestStages.
  • Progression: LevelForXp, PointsEarned, AvailablePoints, EffectiveSkill, SkillCap, RecomputeSkills, and InvestSkillPoint. InvestSkillPoint does nothing unless a point is available and the skill is below its cap. Per-skill max comes from an optional skills registry.
  • NextContinuations(state, project, visited, currentDialogueId) 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.
    • ClearActiveDialogue and ClearPendingCutscene clear the flag and the pending cutscene once the host has used them.
  • New NUnit fixtures NextContinuations, ResolveQuests and Progression, which mirror the reference test setup.
  • README: "11 of 11", and usage notes for the new functions.

Verification

  • cd Parlance.Tests && dotnet test (.NET 8): 12 passed, 0 failed. Each fixture runs every vector in its file.
  • Mutation checks: removing the once-only check, the skill-cap guard, the cap clamp, or the forced-offer flag test each fails a test.
  • Removing the fixpoint loop is not caught by the vectors (see the note on Orbitope/parlance-gdscript for why); that's an upstream vector gap.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Wc6JEuMmSXJEJSRYwGjn1f


Generated by Claude Code

The last three families the port had vendored but never run. All 12 test
fixtures now pass, covering every vector against the v0.14.0 pin.

- ResolveQuests fires quest stage onComplete and outcome effects whose
  completeWhen/reachedWhen holds, once each (recorded in QuestFired), to
  a fixpoint, in ordinal quest-id then array order. Unconditioned effects
  never auto-fire, and QuestStages is never written.
- Progression: LevelForXp, PointsEarned, AvailablePoints, EffectiveSkill,
  SkillCap, RecomputeSkills and the guarded InvestSkillPoint, with an
  optional skills registry for per-skill max.
- NextContinuations 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. ClearActiveDialogue and ClearPendingCutscene consume
  them.

Mutants on once-only firing, the cap guard, the cap clamp and the
forced-offer flag test each turn the suite red.

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
mwburke merged commit 33f945b into main Sep 23, 2026
1 check 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