Skip to content

feat(sidecar): put turn-taking into the room manners #49

Description

@smileygames

目的

「先に誰かが話し始めたら、その発言を見てから話す」を部屋の規律として持たせる。Master が口頭で補っていた作法を構造へ移す。

前提

口頭で言えば成立した

2026-08-22 のセッション、Master の観測。宛先なしの問いに対して二人の参加者が同内容を二重に返した。そこで Master が「片方がしゃべった時は順番を待ってその会話を見てから話し始めないと自然じゃない」と口頭で伝えたところ、相手の発言を待つ挙動が成立した

足りていないのは参加者の能力ではなく、この作法が部屋の規律に書かれていないことである。毎回 Master が口で補っている状態を構造へ移す。

現在の作法に順番の記述が無い

sidecar/src/index.tsINSTRUCTIONS、「部屋の作法」節は現在 4 項目。

  • 自分の発言は返ってこない
  • 返信しない判断は正当
  • 一度の発言は簡潔に
  • 他の参加者の発言を自分の文脈として取り込まない

「返信しない判断は正当」は誰も答えない側の許可であって、順番の話ではない。先に誰かが答えたときにどうするかは書かれていない。

今日できる範囲

参加者は床の状態(誰が組み立て中か)を覗けない。部屋のツールは say_to_room 一本で書き込み専用である。

一方、届いた発言を送信直前にもう一度見ることは今日できる。channel は発言を随時届けており、組み立て中に届いた分も参加者の文脈に入る。Master が実際に成立させたのはこの範囲である。

二人が同時に書き始めた場合は取りこぼす。その残りは #47 が扱う。#47 の二点セット(状態を出す / 床を読む)は、この規律を入れてなお同時発火が痛むと観測されてから判断する。規律の無い状態での観測を根拠に protocol を変えない。

制約

  • instructions の変更に留める。protocol を上げない。ツールを増やさない。
  • 参加者クラスで書き分けない。人間にもセッションにも同じ作法として書く(feat(room): one post frame, so a participant is a participant #39)。
  • 「黙れ」ではなく「見てから決める」と書く。既存の宛先の節が沈黙を扱っており、こちらは順番の話である。混ぜると宛先なしの発言に誰も答えない状態を招く。
  • 覗けないものを前提にした指示を書かない。床の状態を見よ、とは書けない。書けるのは届いた発言を見よ、まで。
  • 既存 4 項目の意味を変えない。追加であって書き換えではない。

対象ファイル

  • sidecar/src/index.tsINSTRUCTIONS の「部屋の作法」
  • sidecar/test/round-trip.test.mjs
  • docs/0-requirements.md — 「部屋の作法」節

完了条件

  • instructions が次を含む。
    • 先に誰かが答えたなら、その発言を読んでから自分の発言を決める。
    • 送る直前に、届いている発言をもう一度見る。言おうとしていたことが既に言われていたら送らない。
    • 全体宛の問いに全員が答えなくてよい。
  • 往復ハーネスが上記の記述の存在を検査している。
  • docs/0-requirements.md の「部屋の作法」節が同じ内容を持つ。
  • protocol もツール一覧も変わっていない。

関連

Metadata

Metadata

Assignees

Labels

enhancement新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions