Playing Sil-Q through the public interface
I played a fresh, ordinary game as Calen, a Noldor of Fingolfin's house, through
the same isolated public client used by evaluated agents. I chose the actions
myself, using the guide, native screens, messages, and public structured fields.
No hidden state was read until play ended. A logging wrapper numbered screen
rows; later I abbreviated repeated output and automatically acknowledged only
the explicit more mode, retaining every response. This was not an autonomous
controller experiment or a GPT-5.5/Astra API run.
The session reached 100 feet, killed 17 enemies (12 wolves, three Mewlips, one Tanglethorn, one orc skirmisher), and ended by deliberate retirement after recovering to 41/41 HP. Minimum observed HP was 24. There were 374 native keypresses, including birth and menus, and 375 recorded native frames. The final native player-turn counter was 389. These are different quantities: running and resting can consume many game turns in one command, while menus consume inputs without game turns. There were 18 message acknowledgment frames. No model API requests were made.
How it felt
Playable, but expensive to operate carefully. I could identify myself, fight, retreat, recover, equip a cloak, throw and recover weapons, inspect monster lore, and descend. I did not experience the earlier ambiguity between the player and hostile glyphs. Navigation, prompt handling, and deciding how far to batch took considerable attention alongside actual tactics. One manually played early-game session cannot establish endgame fairness or prove the absence of defects.
| Moment | Frames | What it showed |
|---|---|---|
| Walking northeast moved the player upward in the dungeon but downward on the screen after a panel scroll. | 57–61 | Screen coordinates require fresh interpretation. They cannot be stored as dungeon coordinates. |
| A wolf approached and attacked during a four-key movement batch. | 74–78 | The intermediate attack survived in message_events, although the final frame's message list was empty. Reading only the final list would miss it. |
| I walked one square past a torch and tried to pick it up. | 118–125 | My counting error was easy to recover from, but raw map reading introduces avoidable work. |
| Fighting a pack triggered message paging. | 143–147 | player and visible_monsters became null during more. This correctly avoids presenting a partially completed turn as a normal observation; the controller must acknowledge and then reassess. |
| Descending displayed the old floor during the staircase message, then the new 100-foot floor. | 233–234 | The depth transition was correct. Acting from the intermediate screen as if the transition had finished would be a controller mistake. |
| A Mewlip drained my torch. | 243–245 | Both the message and the reduced inventory fuel were available. Important consequences extend beyond HP. |
| I fought two wolves in the open while orcs woke up, then retreated to a corridor. | 336–360 | The health loss was explicit. Positioning materially changed the fight. These were tactical decisions, not missing warnings. |
I sent c8, expecting a direction prompt. |
361–363 | c inferred the only door and closed it; 8 reopened it. Sending c alone fixed my mistake. The guide now explains this native behavior. |
| Rest ended when orcs opened the door; after driving them off and closing it again, rest healed me fully. | 363–375 | Native interruption worked in this encounter. This is not a universal guarantee that rest is safe. |
Findings and repairs
A real display defect: at frames 187 and 191, the native bottom-right corner
reservation clipped Sunlight to Sunligh. Revision 0.6.3 moves the terrain
field one column left. Inspection also found that shorter Pit and Web labels
did not erase the rest of a preceding longer label. They now pad the entire
field. A native regression checks both transitions, clearing, and preservation
of the neighboring Fast indicator under sanitized and optimized builds.
A documentation ambiguity: the Tanglethorn remained drawn and listed after
I moved out of sight. Upstream update_mon() deliberately remembers encountered
immobile, mindless creatures. This was not an information leak or a newly seen
enemy. The guide now says visible_monsters follows native display/detection/
memory and does not promise current line of sight. The gameplay behavior is
preserved.
Remaining friction: repeated full screens and color runs are bulky, panels scroll, inventory letters change after pickups, identical monsters have no stable public identity, and directional commands sometimes infer a target. A compact public-view formatter and careful prompt handling would help. Any such changes should preserve native information and actions; a helper must not silently decide when combat or rest is safe.
This experience strengthens the case for plotting depth alongside binary wins and reviewing concrete deaths. It does not establish that medium or max reasoning is saturated, or estimate the cost of a full game. My early-game progress is not a model capability result and is excluded from capability aggregates.
Evidence
The original run is .private/silq-lived-play-20260916/ (0.6.2). Its
public-play-audit.json checks 195 logged commands, matches 194 public screens,
and reports no projection differences or command errors. replay.json reproduces
all 375 native frames exactly using the frozen original build.
After play ended, .private/validation-20260916-play/forward-replay.json replayed
the same input/random stream on both the optimized and sanitized repaired builds.
All trusted gameplay state, RNG counters, messages and structured observations
were identical. Only the two sunlight displays changed. This is a regression
replay, not a second independently played game.
The original public log and frozen source remain intact. A separate 0.6.3 public regression run repeats those manually chosen commands through fresh containers; it is labeled as a scripted replay, not new strategic evidence. Experiment snapshots were refreshed without dispatching any models.