Skip to content

structural_completeness still FATAL-caps authored-campaign runs (campaign-arc quest can't resolve in one session) #1036

@100yenadmin

Description

@100yenadmin

Handoff from the craft-audit / leak-fix lane (the FICTION-ONLY #972 + Bless #973 work). TL;DR: we still cannot get a clean, non-capped story-craft score on the authored golden spines (embergloom-pact), because structural_completeness RED-caps the run even when the prose is clean. #1030 fixed the sibling false-caps (party_traveled, combat_not_left_active) but did not touch this gate. This blocks honest authored-spine measurement — the #32 reliable-RRI goal — and is a sibling of #897.

Evidence (the run that exposed it)

A 25-beat authored embergloom run (WORLDOS_ADVENTURE_ID=embergloom-pact, gs-ember-h24b, VM /root/worldos-qa/results/gs-ember-h24b.out):

[PASS] narration_no_ooc_leak          ← the leak fix held over a full arc, 0 leaks
[FAIL] structural_completeness — a 25-beat session with a companion never engaged a core
  system: 1 quest(s) still active at session end across a 3-location arc with no
  quest-resolution call (['The Embergloom Pact'])
[duo] done. story-craft=2.5 mechanical=2.5 angry-dm=2.5 behavioral=RED

The lenses are 2.5 only because behavioral went RED — the actual prose on these spines is the audit's honest 4.4–4.7. (This run predates #1030, but the capping logic is verified unchanged on current main, so it reproduces today.)

Why it fires (mechanism)

qa/assert_behavioral.py (current main):

  • unresolved_arc (L758–759) = active_quests and multi_location_arc(visited≥2) and not quest_resolution_engaged.
  • chk("structural_completeness", not bad_bits, …) (L771) — still fatal=True, no authored-campaign exemption.

In authored-campaign mode the only quest is the campaign-level arc ("The Embergloom Pact") — a 3-act, multi-session arc that legitimately cannot resolve in one 24–25-beat session. The DM visits ≥2 locations (it's a road-trip arc) and doesn't call complete_quest, so all three conditions trip and the gate FATAL-caps a genuinely good run.

Why #1030 didn't cover it

#1030 scoped party_traveled + combat_not_left_active to substantial-runs-only (WARN on short/truncated). structural_completeness was not in that changeset; it remains FATAL + unscoped.

The decision (needs a first-principles call — don't guess)

  • Option A — the gate is too strict for authored campaigns. When WORLDOS_ADVENTURE_ID is set and the only active quest is the campaign-level arc, an unresolved campaign quest is by-design (it spans sessions), not a dropped thread → scope unresolved_arc to WARN in that case. (Mirror the fix(qa): gate-severity audit — stop FATAL behavioral gates false-capping short emergent duos #1030 pattern: bias toward WARN = don't-false-cap.)
  • Option B — it's a real signal. A 25-beat session with a companion + 3 locations that never resolves any sub-quest IS under-driving the arc. Then the fix is content/DM-skill: the authored adventure should surface resolvable Act-1 sub-quests and the DM SKILL should drive complete_quest(evolves_to=…) on them. (Note: the prior memory claim that "54-beat and 24-beat runs DO resolve a sub-quest" is variable — this 25-beat run did not — so behavior is inconsistent, which itself argues for investigation.)
  • Recommended: sample 3–5 authored-spine runs at 24–30 beats, measure how often the DM closes a sub-quest, and inspect whether content/campaigns/embergloom-pact/adventure.json even has resolvable Act-1 sub-quests. If it has them but the DM skips them → B (DM-skill). If the campaign-arc-as-only-quest is structural → A (gate exemption). Likely a bit of both: an authored-mode WARN scope (A) plus a DM nudge to close sub-quests (B).

Impact

Until resolved, every authored-golden-spine RRI reads ~2.5 (capped) regardless of the real 4.4–4.7 prose quality — so we're flying blind on the one fixture that proves the story systems end-to-end. Sibling of #897 (behavioral gate false-caps the whole RRI).

Pointers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions