Skip to content

Model Current Game Mode and the other value reads Bastion makes #105

Closed

Description

@e54-bot

Problem

After #103, Bastion on athena main (docs/scenario-examples/valid/bastion.json plus buttons for every slot on both players) runs rule 187 to its Wait and then ends not_modeled at tick 0:

{ "status": "not_modeled", "construct": "value getCurrentGamemode", "tick": 0,
  "location": { "rule": 188, "name": "[Bastion] Restart active match", "condition": 0 } }

Each unmodeled value costs a full cycle. #103 handled actions as a class; this issue does the same for the value reads Bastion makes.

Scope

  1. Current Game Mode (getCurrentGamemode): the game mode is a scenario fact the simulator cannot derive (the catalog records no map-to-mode mapping). Add an optional top-level scenario field (name it after the catalog read, e.g. gameMode, taking catalog Game Mode member ids) with the absent-input rule: absent gives missing_input named for the field; an unknown id is rejected at load; no default. Add it to docs/scenario-examples/valid/bastion.json with a mode the workload can run in.
  2. Audit every other value that bastion.ow reads and athena does not yet model (AST-walk the workload and compare with the evaluator's supported list, as Model presentation-only and game-mode actions as no-ops (Disable Inspector Recording and class) #103 did for actions). For each, classify with the catalog description:
    • Scenario fact (cannot be derived from the program or scenario today, for example Match Time, a player's Health, Is Dead, Number Of Players): add a scenario input with the absent-input rule, or, if it needs a model of state that other actions mutate (health pools, life state, roster, match clock), keep it not_modeled and list it in the PR body together with the category-2 actions that mutate it (the list in the Model presentation-only and game-mode actions as no-ops (Disable Inspector Recording and class) #103 PR body), so one follow-up issue per state family can design it.
    • Derivable from state athena already tracks: implement it.
    • Do not guess; if the catalog text does not settle a case, keep it not_modeled and list it.
  3. Docs: docs/scenario-format.md (field table, modeled reads, missing inputs), schema file, docs/simulator-interface.md, docs/findings.md for modeled-not-measured choices; the committed bastion.json example must include buttons for every slot Bastion reads (the Model presentation-only and game-mode actions as no-ops (Disable Inspector Recording and class) #103 PR reported it does not, and the run stops at button.reload, p2, rule 93, so fix the example), slot and matchPhase.

Acceptance

  • Tests for each new input: present, absent (missing_input naming the field), unknown value rejected; each newly derived value.
  • Bastion rerun with the committed bastion.json unchanged except what this PR adds: report the new first stop, or completion, and the remaining unmodeled values grouped by state family. 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