Skip to content

S8a: Contract: machines and the datajack - #386

Merged
jamescrosswell merged 2 commits into
mainfrom
task/385-machines-contract
Oct 23, 2026
Merged

jamescrosswell merged 2 commits into
mainfrom
task/385-machines-contract

Conversation

@jamescrosswell

Copy link
Copy Markdown
Contributor

The contract #355 (S8, what the bionics do) builds on.

  • InteractableKind.JACK ("jack"): a machine only the datajack works, such as the metro's dead terminal and its maintenance lift. The maker space's machines stay machine. A link ending on a jack's stand tile is taken only with the datajack.
  • No new message. E at a jack sends pick_up, which already reaches clues (S13): with the datajack, it finds the clue the jack holds. docs/protocol.md now says pick_up reaches clues, and that player_collapsed leaves the lamp off (S4).
  • The jump is the player's own, higher with the hydraulic legs. The client reads the legs from player_state's body, so it needs no new field.
  • flushed hook. The protocol forwarder sets a line's flushed from app.state.flushed(line), as it does voiced, so S8 can set it from simile.conversation without touching the protocol.

Additive. simile schema --check and the protocol export are regenerated and pass.

Closes #385

🤖 Generated with Claude Code

jamescrosswell and others added 2 commits October 23, 2026 23:23
A jack interactable kind for the machines only the datajack works, pick_up
reaching clues and a jack's clue, the per-player jump, and player_collapsed
leaving the lamp off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jamescrosswell

Copy link
Copy Markdown
Contributor Author

Reviewed: approved.

Scope is only schema, protocol, the generated files, docs/protocol.md and their tests. The change is additive. flushed already existed on LineMessage and is still left out when false, so fixture dumps don't change. The only schema change is a new enum value, so old saves load. simile schema --check passes, and so do the protocol and schema tests (run on #387's branch, which contains this one). JACK, E sending pick_up, the app.state.flushed hook (same shape as voiced, with a test) and the protocol.md notes all match #385.

Optional nits:

  • The jack wording says a link "ending on" a stand tile. S8: What the bionics do #387 locks the link leaving from the lift's stand tile, and the way back up from the sewers is open. "leaving from" would match it.
  • In docs/protocol.md, the player_collapsed paragraph's edited line is about 130 characters and wasn't rewrapped.
  • Three docstrings are now three lines long: InteractableKind, PickUpMessage and PlayerCollapsedMessage. They're exported schema descriptions, so I left them.

@jamescrosswell
jamescrosswell marked this pull request as ready for review October 23, 2026 11:22
@jamescrosswell
jamescrosswell merged commit 253d8cd into main Oct 23, 2026
7 checks passed
@jamescrosswell
jamescrosswell deleted the task/385-machines-contract branch October 23, 2026 11:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

S8a: Contract: machines and the datajack

1 participant