Sil-Q interface revision 0.7.0
The interface now exposes native player information in a readable default view, with the same structured response format for reads and actions. Gameplay rules, randomness and programmatic victory scoring remain unchanged. This revision is incompatible with old controllers; historical runs retain their frozen package.
What changed
- The default CLI view puts messages, health/status changes, character details,
prompts and displayed creatures before a numbered native screen. It includes
every color and shade in a coordinate legend.
--jsonreturns structured data. - All gameplay responses use
state, orderedevents, execution accounting, pagination and a history receipt. HTTP additionally returns every intermediate frame; the CLI retains those frames in its local archive. Single-key attacks and attacks inside batches use the same event format. - Native input routines report direction, item, quantity, confirmation and text prompts. Item lists open by default using the game's normal display preference. Structured choices copy descriptions already drawn on screen, including their locations; unidentified properties remain unidentified.
- Named actions cover inventory, equipment, throwing, firing, doors and other
ordinary commands.
respondchecks the current prompt and binds its trial/frame. - Input is guarded by default. Non-movement commands return after one key, even
if a target was inferred. Movement/wait can repeat at a command prompt. Text
entry stops after Enter/Escape; selectors and confirmations return after one
response.
remaining_keysis explicit and never queued. Raw sequences remain available throughpress --raw. acknowledgedismisses only consecutive native message pages, up to 64 per request, preserving their events and frames. It stops at the next decision point or ending. It never resumes movement or decides whether an action is safe.displayed_monstersreplaces the misleadingvisible_monstersname. Detection and native memory remain possible. Explicitunavailablereasons accompany null fields. Coordinates remain screen-relative; no hidden map coordinates, persistent monster identifiers, or tactical recommendations are added.
The implementation separates native prompt capture (engine/observation.h),
validated wire types (models.py), input boundaries/replies (controls.py),
response composition (presentation.py) and readable output (rendering.py).
The public auditor checks the entire formatted view, including colors, prompts,
character details and intermediate events, against recorded native frames.
Verification
- 393 unique tests passed: 391 in the base run and the two optional plotting tests in a subsequent 18-test plotting run.
- Native checks passed 6,435 sanitizer frames, 4,758 production replay frames, 612 fixture replay frames and 1,480 paired hidden-state frames. Native screen checks cover six depths through 1,000 feet; the paired hidden-state checks changed 581 concealed monsters.
- Tests exercise one/two adjacent doors, the
c8trap, item labels copied from actual screen cells, quantity entry stopping at Enter, wrong-prompt rejection, and acknowledgment stopping before the next decision. - The earlier 375-frame manual game was replayed on both optimized and sanitized new builds. Every trusted gameplay state and message matched; 11 screen frames changed because of item lists and the previously fixed sunlight label.
- Real containers passed Inspect integration and restart recovery, including preserved deadlines and exact request receipts. These made no model requests.
- A short public walkthrough (
.private/silq-interface-play-20260916) exercised character creation, typed name entry, dropping and recovering food, quantity entry, opening/closing a door, direction entry and declining a confirmation. Guardedc8closed the door and left8unsent. The game was retired at 50 feet with full health. All 46 logged commands passed public auditing against 47 native frames, with no errors or projection differences; all 47 frames replayed exactly. This is interface QA, not a capability result or endgame coverage.
Evidence is retained in .private/interface-validation/ and the walkthrough
folder. No paid model experiments were launched. The historical 139,923-frame
mixed-command fuzz result remains evidence for the 0.6.2 baseline; it is not
represented as a new 0.7.0 fuzz run. Research still requires a completed, reviewed
pilot on the current implementation.