docs: align the IPC reference with the code it describes #350

Merged
natsukium merged 1 commit from docs/reference-code-divergences into main 2026-09-22 20:34:53 +09:00
Owner

Reference-only corrections from the pre-release review of the frozen surfaces. No wire, CLI, or config surface changes.

Changes

  • MAX_SESSION_TAGS / MAX_TAG_BYTES row (OpsMsg::Tag delta): drop "and closes". The daemon answers OpsMsg::TagsUpdated with denied set and keeps the connection, which is what the outcome column and the family section already say.
  • "no contract manifest" paragraph: name the row codec's packed_cells payload as the third thing outside felis.proto, after the frame header and the preface. docs/reference/workspace.md already calls it "the single hand-off", so the two pages now agree.
  • Mouse(MouseEvent) bullet: state the mods bit layout (shift 1, alt 2, ctrl 4), the one bit table the reference never carried. workspace.md claims the bit tables stay in ipc.md, and the Key bullet names its own, so the mouse triple was the gap.

Not in this PR

Two other reference/implementation divergences need a decision rather than a wording fix and are tracked in #349: the SessionAttach.id_prefix validation the reference says is decode-time (the daemon answers NoMatch), and the Kitty placement X / Y parameters the reference lists but the dispatcher never reads.

Related: #347 (the review that produced these), #349.

Reference-only corrections from the pre-release review of the frozen surfaces. No wire, CLI, or config surface changes. ## Changes - **`MAX_SESSION_TAGS` / `MAX_TAG_BYTES` row (`OpsMsg::Tag` delta):** drop "and closes". The daemon answers `OpsMsg::TagsUpdated` with `denied` set and keeps the connection, which is what the outcome column and the family section already say. - **"no contract manifest" paragraph:** name the row codec's `packed_cells` payload as the third thing outside `felis.proto`, after the frame header and the preface. `docs/reference/workspace.md` already calls it "the single hand-off", so the two pages now agree. - **`Mouse(MouseEvent)` bullet:** state the `mods` bit layout (shift `1`, alt `2`, ctrl `4`), the one bit table the reference never carried. `workspace.md` claims the bit tables stay in `ipc.md`, and the `Key` bullet names its own, so the mouse triple was the gap. ## Not in this PR Two other reference/implementation divergences need a decision rather than a wording fix and are tracked in #349: the `SessionAttach.id_prefix` validation the reference says is decode-time (the daemon answers `NoMatch`), and the Kitty placement `X` / `Y` parameters the reference lists but the dispatcher never reads. Related: #347 (the review that produced these), #349.
docs: align the IPC reference with the code it describes
All checks were successful
darwin / detect relevant changes (pull_request) Successful in 4s
darwin / build felis (aarch64-darwin) (pull_request) Has been skipped
pr / nix flake check (pull_request) Successful in 26s
pr / cargo build / clippy / test / deny (pull_request) Successful in 1m47s
pr / wire schema is compatible with the base (pull_request) Successful in 14s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 59s
pr / publish felis (x86_64-linux) (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 4s
darwin / darwin docs-only no-op (pull_request) Successful in 1s
windows / cargo clippy (Windows cross) (pull_request) Has been skipped
windows / cargo nextest (Windows) (pull_request) Has been skipped
windows / frontend smoke (Windows) (pull_request) Has been skipped
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
windows / windows docs-only no-op (pull_request) Successful in 1s
2ca3219cc8
Three statements in the reference contradicted the implementation or left
a specified layer out, and the reference is what a non-Rust peer
implements from.

The TagsUpdated limit row said the daemon closes the connection after
answering with `denied`, which it does not: the connection stays usable
and only the delta is refused, exactly as the outcome column and the
family section already say. The "no contract manifest" paragraph listed
the frame header and the preface as what lives outside `felis.proto`, but
the row codec's `packed_cells` payload is a third external specification
(row-codec.md), which workspace.md already names. And the mouse arm's
`mods` bits were the one bit table the reference never carried, though
workspace.md claims the bit tables stay in ipc.md; the `Key` bullet names
its bits, so the mouse triple is the gap.

Fixing the reference rather than the code: the TagsUpdated behavior is
the one the rest of the page describes, and the other two are omissions.

Assisted-by: Pi Coding Agent:deepseek-v4.1-flash
natsukium deleted branch docs/reference-code-divergences 2026-09-22 20:34:53 +09:00
Commenting is not possible because the repository is archived.
No description provided.