basecamp / basecamp/hotcell

Report the hotcell-server gem version in the describe response

Open
#21 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Ruby
Stars
23
Forks
0
Avg merge
11h 43m
Merged PRs (30d)
27

Description

`Control#describe` (`hotcell-server/lib/hot_cell/control.rb:45`) answers:

```ruby
{ v: PROTOCOL_VERSION, operations: Registry.names, groups: groups, **@configuration.to_h }
```

`PROTOCOL_VERSION` is the hardcoded `1` in `hotcell-core/lib/hot_cell/protocol.rb:7` — the wire contract, which changes only when the format does. `@configuration.to_h` carries limits and scheduling. So nothing in the answer says which build of the cell is running, and `HotCell::Server::VERSION` only became a single-sourced number in 0.1.0.

Add it, so an operator can tell which cell image is deployed without shelling into the container. It is also what would let a client report a skew that the protocol version cannot see: two cells can agree on `v: 1` and still differ in behaviour, and today the only signal is that one of them answers differently.

Worth settling when doing it:

- Which version to send. `hotcell-server` is the gem that answers, but a cell's behaviour also depends on the operation gems it carries.
- Whether the client checks it. `describe_cells` already warns about a missing operation and a group mismatch; a version older than the client's is a third thing it could say at boot rather than at the first request.
- Adding a key is backward compatible, but a client that starts *requiring* it is not: a cell too old to report one has to stay readable.

Contributor guide

Open the contributing guide

Research direction

Start with Control#describe in hotcell-server/lib/hot_cell/control.rb and the version definition in hotcell-core/lib/hot_cell/protocol.rb, then inspect the existing describe_cells path mentioned in the issue. Resolve which version information the response exposes and how older cells remain readable; done means the behavior and client compatibility expectations are settled.

Written by the indexing model from the issue text.

Assessment

Tech stack
ruby
Domain
api, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.