Skip to content

Add scenario state keys for the remaining independent value reads (Is Duplicating A Hero and class) #111

Closed

Description

@e54-bot

Problem

After #108, Bastion on athena main with the committed docs/scenario-examples/valid/bastion.json ends not_modeled at tick 0:

{ "status": "not_modeled", "construct": "value isDuplicatingAHero", "tick": 0,
  "location": { "rule": 234, "name": "[Player] Skip hero with ultimate", "eventPlayer": "p2", "condition": 2 } }

Is Duplicating A Hero is a per-player fact the scenario can state and no Bastion action changes. The #105 audit left it, and other reads like it, as not_modeled. Stopping once per read costs a full cycle each, so this issue covers the class.

Scope

  1. Add isDuplicatingAHero to the version-2 player state map (same rules as the keys already there: catalog value id, absent key gives missing_input named state.<key>, unknown key rejected, null refused).
  2. Walk bastion.ow again (AST, not by running it) and list every remaining unmodeled value read that is a per-player or global scenario fact and that no action Bastion calls can change (check the action list in the feat(sim): model presentation and game-mode actions as no-ops #104 PR body: for example the health, life-state, roster, ultimate, ability, forced-hero, match-clock and facing families are changed by Bastion actions, so those are not in scope here). For each such read, add a state key, or a top-level input if it is global, with the same absent-input rule. Reads that an action in Bastion can change stay not_modeled; list them in the PR body with the action that changes them, grouped by state family, so one design issue per family can follow.
  3. Do not guess. If the catalog text for a read does not say it is independent of other state the model carries, keep it not_modeled and name why.
  4. Docs: docs/scenario-format.md (state keys table, missing inputs), schema file, docs/simulator-interface.md; docs/findings.md only if you make a modeled-not-measured choice. Update bastion.json with values that let Bastion run.

Acceptance

  • Tests for each new key: present, absent (missing_input naming state.<key>), wrong type rejected.
  • Bastion rerun with the committed bastion.json unchanged except what this PR adds: report the new first stop, or completion, plus the grouped list of remaining unmodeled reads and the actions that block them. Parent: Run Bastion to completion on athena-sim #45.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions