Repository navigation
Closed
Description
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
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 catalogGame Modemember ids) with the absent-input rule: absent givesmissing_inputnamed for the field; an unknown id is rejected at load; no default. Add it todocs/scenario-examples/valid/bastion.jsonwith a mode the workload can run in.- Audit every other value that
bastion.owreads 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'sHealth,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 itnot_modeledand 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_modeledand list it.
- Scenario fact (cannot be derived from the program or scenario today, for example
- Docs:
docs/scenario-format.md(field table, modeled reads, missing inputs), schema file,docs/simulator-interface.md,docs/findings.mdfor modeled-not-measured choices; the committedbastion.jsonexample must includebuttonsfor 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 atbutton.reload, p2, rule 93, so fix the example),slotandmatchPhase.
Acceptance
- Tests for each new input: present, absent (
missing_inputnaming the field), unknown value rejected; each newly derived value. - Bastion rerun with the committed
bastion.jsonunchanged 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.
Metadata
Metadata
Assignees
Labels
No labels
Activity
feat(sim): model Remove From Array, classify Custom Color