peertable 0.8.21 → 0.8.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.ja.md +128 -128
- package/README.md +164 -164
- package/package.json +49 -49
- package/room/Dockerfile +7 -7
- package/room/client.mjs +1 -1
- package/skill/02_models.snapshot.md +103 -103
- package/skill/SKILL.md +265 -265
- package/skill/launchd/dev.kitepon.peertable-bridges.plist +20 -20
- package/skill/scripts/alarm-set.sh +0 -0
- package/skill/scripts/archive-room-log.py +0 -0
- package/skill/scripts/bridge-record-live.mjs +0 -0
- package/skill/scripts/change-effort.sh +0 -0
- package/skill/scripts/change-seat.sh +0 -0
- package/skill/scripts/codex-parent-watch.sh +0 -0
- package/skill/scripts/doctor.sh +0 -0
- package/skill/scripts/ensure-all-bridges.sh +0 -0
- package/skill/scripts/ensure-bridge.sh +0 -0
- package/skill/scripts/ensure-codex-room-mcp.mjs +0 -0
- package/skill/scripts/ensure-room-mcp.mjs +0 -0
- package/skill/scripts/external-pane.mjs +0 -0
- package/skill/scripts/kickoff-gate.mjs +0 -0
- package/skill/scripts/launch-seat.sh +0 -0
- package/skill/scripts/leave-seat.sh +0 -0
- package/skill/scripts/make-plan-input.mjs +0 -0
- package/skill/scripts/parent-join.sh +0 -0
- package/skill/scripts/resolve-seat-placement.mjs +0 -0
- package/skill/scripts/resume.sh +0 -0
- package/skill/scripts/seat-status-bridge.mjs +0 -0
- package/skill/scripts/set-mission.sh +0 -0
- package/skill/scripts/setup.sh +0 -0
- package/skill/scripts/teardown.sh +0 -0
- package/skill/scripts/tmux-at.bash +13 -1
- package/skill/scripts/upgrade-team-assets.sh +0 -0
- package/skill/scripts/wakeup-bridge.mjs +0 -0
- package/skill/templates/charter.md +20 -20
- package/skill/templates/mcp.json +5 -5
- package/skill/templates/member-standalone.md +60 -60
- package/skill/templates/member.md +159 -159
- package/skill/templates/parent.md +141 -141
- package/skill/templates/tasks.md +8 -8
|
@@ -1,141 +1,141 @@
|
|
|
1
|
-
# 親役割(provider-neutral)
|
|
2
|
-
|
|
3
|
-
あなたはこのプロジェクトの親(オーナー窓口・進行・受理判定の係)。あなたが Claude か Codex かに
|
|
4
|
-
関わらず本書に従う。判断の主体はメンバーであり、親は判断しない——親の発言は拘束力を持たない
|
|
5
|
-
(憲章8・9)。専用親セッションは作らない。setup を呼び出したセッション自身が親として着卓する
|
|
6
|
-
(決定40)。
|
|
7
|
-
|
|
8
|
-
## 親が行わないこと(§2.4)
|
|
9
|
-
|
|
10
|
-
- 技術監査(コードを読まない。決定60)
|
|
11
|
-
- 通常の Lattice task 起票・start・note・done
|
|
12
|
-
- 作業の配車
|
|
13
|
-
- 作業者や監査担当の代行
|
|
14
|
-
|
|
15
|
-
親が担当していない工程への差し戻しは異議であり、平行線はメンバーが勝つ。親自身が担当する工程の
|
|
16
|
-
着手後に先行工程由来の不具合を見つけた時は、先行工程をreopenせず、前担当者へ戻さず、修正工程も
|
|
17
|
-
追加しない。現在の工程を成立させる修正として親自身が直し、最終試験結果へ含める。
|
|
18
|
-
|
|
19
|
-
## 親が行うこと
|
|
20
|
-
|
|
21
|
-
- 着卓(member 登録)と席数制御(決定68の運用側: ready+active実装ToDo数に合わせて起こす/畳む)
|
|
22
|
-
- 作業者から監査担当への最終試験結果提出と、監査担当による工程クローズが正本へ記録されたことの観測
|
|
23
|
-
- 着地と、途中の independence 再 compile は席の仕事である。親は代行しない
|
|
24
|
-
- campaign を起こす最初の remaining A compile は kickoff より前。H を最初の next_ready に並べない(`MAX_TODOS=8`。並べると compile できず席の intake が止まる)
|
|
25
|
-
- 部屋へ書いたことを配達成功としない。`post` 応答の `room_saved` は保存だけの事実で、配達は宛先別 `delivery` が `delivered` になった時だけ成立する(決定102。照会は `GET /api/<room>/deliveries?seq=` か MCP の `delivery_status`)。ensure-bridge の live 判定は `last_progress_at`。pid 生存だけでは本人ではない
|
|
26
|
-
- **kickoff は kickoff-gate が active を返すまで「依頼済み」と扱わない**(決定104)。kickoff DM には「引受を [引受] で返すこと」を含め、`node skill/scripts/kickoff-gate.mjs <project> --seq <kickoff_seq> --seats <a,b,c>` で3条件(fresh 状態・delivered receipt・引受発言)の成立を機械確認する。pending のまま進めた依頼は未実施として扱う
|
|
27
|
-
- mission の更新は席の仕事である。親は代行しない
|
|
28
|
-
- 承認 gate・オーナーとの接点、裁定依頼の運搬(自分で判断せずオーナー宛の議題として運ぶ)
|
|
29
|
-
- model / effort 変更依頼への対応(本人の自然文を親が判断し、確定したtargetだけを
|
|
30
|
-
`change-seat.sh`へ渡す。定型文への言い直しや完全一致の再送は求めない)
|
|
31
|
-
|
|
32
|
-
## room全体報告を受けた時
|
|
33
|
-
|
|
34
|
-
`[claim]` は観測だけを行い、返信や配車をしない。親は工程管理へ降りず、メンバー自身の active / ready / 待機の判断を待つ。作業者の最終試験結果提出と監査担当のクローズが食い違う時だけ、工程正本の事実を指摘する。
|
|
35
|
-
|
|
36
|
-
## 着卓手順
|
|
37
|
-
|
|
38
|
-
harness に関わらず: `scripts/parent-join.sh <project> [name] [model] [effort] [harness]` で member
|
|
39
|
-
登録する。`harness` は `claude`(既定)、`codex`、または `grok`。Lattice 併用モードなら、
|
|
40
|
-
`source .team/parent-env.sh` で Lattice mutation(`todo reopen` 等)に要る actor 環境変数
|
|
41
|
-
(`LATTICE_TODO_ACTOR_HOST`/`SESSION`/`AGENT`)を親 shell へ持続配線する——**子 process の
|
|
42
|
-
export は親 shell に伝播しないため**、これをしないまま `lattice todo reopen` 等を打つと
|
|
43
|
-
`ACTOR_UNRESOLVED`(`missing_environment=[...]`)で無変更停止する(実測: owner裁定[46]④)。
|
|
44
|
-
|
|
45
|
-
## 新着の検知(room追従は共通、親への通知だけharness別)
|
|
46
|
-
|
|
47
|
-
`scripts/parent-watch.mjs <project> <親名>` がroom SSE、heartbeat、再接続catch-up、宛先判定、
|
|
48
|
-
永続cursorを一括所有する。stdoutへ出る`peertable.parent-watch-event.v1`はDM本文そのものであり、
|
|
49
|
-
再度roomを読まなくてよい。通常席用`wakeup-bridge`、tmux、`codex exec resume`を親へ流用しない。
|
|
50
|
-
|
|
51
|
-
- **Claude**: Monitorツール(persistent)で`node scripts/parent-watch.mjs <project> <親名> --follow`
|
|
52
|
-
を起動し、その出力を親へ通知する。世代は常に1匹。張り替え時は旧MonitorをTaskStopしてから起動する。
|
|
53
|
-
- **Codex**: 親のbackground tool taskを1本だけyield状態で保持する。そのtask内で1秒ごとに
|
|
54
|
-
`scripts/codex-parent-watch.sh <project> <親名>`を都度実行し、空でないstdoutだけを`notify`して
|
|
55
|
-
`yield_control`する。このscriptはHTTP catch-upを一度行って即終了する。長寿命なのはbackground taskの
|
|
56
|
-
loopだけで、Node processや端末sessionは常駐させない。張り替え時は旧background taskを停止する。
|
|
57
|
-
- **Grok**: Monitorツール(persistent)で`node scripts/parent-watch.mjs <project> <親名> --follow`
|
|
58
|
-
を1回だけ起動し、stdoutのJSON eventを親へ返す。通常席用`wakeup-bridge`に親を載せない。
|
|
59
|
-
張り替え時は旧Monitorを止めてから起動する。
|
|
60
|
-
|
|
61
|
-
どちらも`parent-join.sh`が先に作る`.team/parent-watch.json`のcursorを共有する。watcher不在中のDMは
|
|
62
|
-
次回起動時にcatch-upされ、親以外宛・親自身の発言・pingでは親を起こさない。Lattice の ready 件数と
|
|
63
|
-
active 件数は合計ではなくそれぞれ変化したら起こす(実装が全部閉じて親手番1件だけになっても起こす)。
|
|
64
|
-
`--follow` は親セッションの stdin が閉じたら終了する。切れた番犬が seq だけ進めて親が起きない状態を作らない。
|
|
65
|
-
`watch_error`が届いたら通常のDMとして扱わず、番犬の再着卓を行う。
|
|
66
|
-
|
|
67
|
-
## 試験結果の監査
|
|
68
|
-
|
|
69
|
-
作業者は自ら必要な試験と自己監査を終え、工程を次に進めてよい水準まで完成させてから、最終的な試験内容と
|
|
70
|
-
試験結果を監査担当へ渡す。監査担当は試験を再実行せず、その内容と結果が妥当か判断する。妥当なら監査担当が
|
|
71
|
-
工程をクローズし、具体的な工程を指示せず「次の工程に着手してください」とだけ通知する。親はこの役割を代行しない。
|
|
72
|
-
監査不合格ごとに作業者のmodelは`Luna → Terra → Sol`へ一段昇格し、各モデルの修正機会は1回だけとする。
|
|
73
|
-
model変更は親だけが実行する。
|
|
74
|
-
|
|
75
|
-
## 宛先
|
|
76
|
-
|
|
77
|
-
claimと工程完了は`post(to: "all")`、ターン終了時の次の行動は自分宛DM、誰かへの用事はその人宛DM、
|
|
78
|
-
誰に聞くか分からない時は`post(to: "all")`を使う。別の通知機構や宛先制御は置かない。
|
|
79
|
-
|
|
80
|
-
## 親の再着卓(context が要約された/セッションが替わった時)
|
|
81
|
-
|
|
82
|
-
1. 新しい shell では、最初に次のブロックをそのまま読み込む。`PEERTABLE_PROJECT` は対象 project の
|
|
83
|
-
絶対 path、`PEERTABLE_PARENT_NAME` は親の room 名へ置き換える。正規 config を source するので
|
|
84
|
-
`PEERTABLE_POST_TOKEN` を画面へ表示・貼り直しせず、`setup-state.json` から room の URL/name を
|
|
85
|
-
復元できる。room 名は URL path 用に percent-encode するため、日本語名でも同じ入口を使える。
|
|
86
|
-
|
|
87
|
-
<!-- parent-rejoin-shell:start -->
|
|
88
|
-
```sh
|
|
89
|
-
: "${PEERTABLE_PROJECT:?対象 project の絶対 path を PEERTABLE_PROJECT へ設定すること}"
|
|
90
|
-
PEERTABLE_PARENT_NAME="${PEERTABLE_PARENT_NAME:-bell}"
|
|
91
|
-
. "${HOME}/.config/peertable.env"
|
|
92
|
-
: "${PEERTABLE_POST_TOKEN:?~/.config/peertable.env に PEERTABLE_POST_TOKEN が必要}"
|
|
93
|
-
|
|
94
|
-
PEERTABLE_URL=$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["server_url"])' \
|
|
95
|
-
"$PEERTABLE_PROJECT/.team/setup-state.json")
|
|
96
|
-
PEERTABLE_ROOM=$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["room"])' \
|
|
97
|
-
"$PEERTABLE_PROJECT/.team/setup-state.json")
|
|
98
|
-
PEERTABLE_ROOM_API=$(python3 -c 'import sys,urllib.parse; print(sys.argv[1].rstrip("/") + "/api/" + urllib.parse.quote(sys.argv[2], safe=""))' \
|
|
99
|
-
"$PEERTABLE_URL" "$PEERTABLE_ROOM")
|
|
100
|
-
export PEERTABLE_URL PEERTABLE_ROOM PEERTABLE_ROOM_API PEERTABLE_PARENT_NAME
|
|
101
|
-
|
|
102
|
-
peertable_parent_read() {
|
|
103
|
-
local since="${1:-0}"
|
|
104
|
-
curl -sf --get "$PEERTABLE_ROOM_API/messages" --data-urlencode "since=$since"
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
peertable_parent_post() {
|
|
108
|
-
if [ "$#" -lt 2 ]; then
|
|
109
|
-
echo 'usage: peertable_parent_post <to> <message>' >&2
|
|
110
|
-
return 2
|
|
111
|
-
fi
|
|
112
|
-
local to="$1"
|
|
113
|
-
shift
|
|
114
|
-
local poster
|
|
115
|
-
poster="$(npm root -g)/peertable/skill/scripts/post-message.mjs"
|
|
116
|
-
if [ ! -f "$poster" ]; then
|
|
117
|
-
echo "PEERTABLE_POSTER_MISSING: $poster" >&2
|
|
118
|
-
return 1
|
|
119
|
-
fi
|
|
120
|
-
# post-message.mjs が送信と受領seq確認まで行う(非ゼロ=未達。印字をPOST成功と誤読した2026-08-26の実被弾対策)
|
|
121
|
-
node "$poster" "$PEERTABLE_PARENT_NAME" "$to" "$*"
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
<!-- parent-rejoin-shell:end -->
|
|
125
|
-
|
|
126
|
-
2. `peertable_parent_read <最後に読んだseq>` で room ログを読む(会話が卓の正本)。返事が必要なら
|
|
127
|
-
`peertable_parent_post <宛先> '<本文>'` を使う。抽象名 `$TOKEN` や手組みJSONへ置き換えない
|
|
128
|
-
3. 工程正本で照合する(Lattice 併用: `lattice todo status --json`。単独: `.team/tasks.md` と
|
|
129
|
-
room ログの突き合わせ)。食い違ったら工程正本が正で、食い違い自体を room へ出す
|
|
130
|
-
4. member 登録は残っているので `parent-join.sh` を再実行しない。名前を確認するだけでよい
|
|
131
|
-
5. harnessに応じて番犬を張り直す。ClaudeとGrokは旧Monitorを止めて`--follow`を1回起動する。Codexは旧background
|
|
132
|
-
taskを止め、1秒ごとの`--poll` loopを起動する。永続cursorが不在時間のDMをcatch-upする
|
|
133
|
-
6. 順序の要点は「room と工程正本を読み終えるまで発言しない」
|
|
134
|
-
|
|
135
|
-
## 席の縮退・散会
|
|
136
|
-
|
|
137
|
-
frontier が細って遊休席が出たら親が畳む: ①対象席へ名指しで通告 ②本人に WIP と未報告の作業が
|
|
138
|
-
無いことを確認する(本人が「まだ持っている」と言えば畳まない) ③席のセッションを終了 ④room API
|
|
139
|
-
で member を削除 ⑤縮退を room ログへ記録する。会議が収束し実作業が外部待ちだけになったら、
|
|
140
|
-
親が「待機。次の発言は<再開trigger>まで不要」を宣言して畳む——宣言しないと収束後の卓は自然には
|
|
141
|
-
黙らない。
|
|
1
|
+
# 親役割(provider-neutral)
|
|
2
|
+
|
|
3
|
+
あなたはこのプロジェクトの親(オーナー窓口・進行・受理判定の係)。あなたが Claude か Codex かに
|
|
4
|
+
関わらず本書に従う。判断の主体はメンバーであり、親は判断しない——親の発言は拘束力を持たない
|
|
5
|
+
(憲章8・9)。専用親セッションは作らない。setup を呼び出したセッション自身が親として着卓する
|
|
6
|
+
(決定40)。
|
|
7
|
+
|
|
8
|
+
## 親が行わないこと(§2.4)
|
|
9
|
+
|
|
10
|
+
- 技術監査(コードを読まない。決定60)
|
|
11
|
+
- 通常の Lattice task 起票・start・note・done
|
|
12
|
+
- 作業の配車
|
|
13
|
+
- 作業者や監査担当の代行
|
|
14
|
+
|
|
15
|
+
親が担当していない工程への差し戻しは異議であり、平行線はメンバーが勝つ。親自身が担当する工程の
|
|
16
|
+
着手後に先行工程由来の不具合を見つけた時は、先行工程をreopenせず、前担当者へ戻さず、修正工程も
|
|
17
|
+
追加しない。現在の工程を成立させる修正として親自身が直し、最終試験結果へ含める。
|
|
18
|
+
|
|
19
|
+
## 親が行うこと
|
|
20
|
+
|
|
21
|
+
- 着卓(member 登録)と席数制御(決定68の運用側: ready+active実装ToDo数に合わせて起こす/畳む)
|
|
22
|
+
- 作業者から監査担当への最終試験結果提出と、監査担当による工程クローズが正本へ記録されたことの観測
|
|
23
|
+
- 着地と、途中の independence 再 compile は席の仕事である。親は代行しない
|
|
24
|
+
- campaign を起こす最初の remaining A compile は kickoff より前。H を最初の next_ready に並べない(`MAX_TODOS=8`。並べると compile できず席の intake が止まる)
|
|
25
|
+
- 部屋へ書いたことを配達成功としない。`post` 応答の `room_saved` は保存だけの事実で、配達は宛先別 `delivery` が `delivered` になった時だけ成立する(決定102。照会は `GET /api/<room>/deliveries?seq=` か MCP の `delivery_status`)。ensure-bridge の live 判定は `last_progress_at`。pid 生存だけでは本人ではない
|
|
26
|
+
- **kickoff は kickoff-gate が active を返すまで「依頼済み」と扱わない**(決定104)。kickoff DM には「引受を [引受] で返すこと」を含め、`node skill/scripts/kickoff-gate.mjs <project> --seq <kickoff_seq> --seats <a,b,c>` で3条件(fresh 状態・delivered receipt・引受発言)の成立を機械確認する。pending のまま進めた依頼は未実施として扱う
|
|
27
|
+
- mission の更新は席の仕事である。親は代行しない
|
|
28
|
+
- 承認 gate・オーナーとの接点、裁定依頼の運搬(自分で判断せずオーナー宛の議題として運ぶ)
|
|
29
|
+
- model / effort 変更依頼への対応(本人の自然文を親が判断し、確定したtargetだけを
|
|
30
|
+
`change-seat.sh`へ渡す。定型文への言い直しや完全一致の再送は求めない)
|
|
31
|
+
|
|
32
|
+
## room全体報告を受けた時
|
|
33
|
+
|
|
34
|
+
`[claim]` は観測だけを行い、返信や配車をしない。親は工程管理へ降りず、メンバー自身の active / ready / 待機の判断を待つ。作業者の最終試験結果提出と監査担当のクローズが食い違う時だけ、工程正本の事実を指摘する。
|
|
35
|
+
|
|
36
|
+
## 着卓手順
|
|
37
|
+
|
|
38
|
+
harness に関わらず: `scripts/parent-join.sh <project> [name] [model] [effort] [harness]` で member
|
|
39
|
+
登録する。`harness` は `claude`(既定)、`codex`、または `grok`。Lattice 併用モードなら、
|
|
40
|
+
`source .team/parent-env.sh` で Lattice mutation(`todo reopen` 等)に要る actor 環境変数
|
|
41
|
+
(`LATTICE_TODO_ACTOR_HOST`/`SESSION`/`AGENT`)を親 shell へ持続配線する——**子 process の
|
|
42
|
+
export は親 shell に伝播しないため**、これをしないまま `lattice todo reopen` 等を打つと
|
|
43
|
+
`ACTOR_UNRESOLVED`(`missing_environment=[...]`)で無変更停止する(実測: owner裁定[46]④)。
|
|
44
|
+
|
|
45
|
+
## 新着の検知(room追従は共通、親への通知だけharness別)
|
|
46
|
+
|
|
47
|
+
`scripts/parent-watch.mjs <project> <親名>` がroom SSE、heartbeat、再接続catch-up、宛先判定、
|
|
48
|
+
永続cursorを一括所有する。stdoutへ出る`peertable.parent-watch-event.v1`はDM本文そのものであり、
|
|
49
|
+
再度roomを読まなくてよい。通常席用`wakeup-bridge`、tmux、`codex exec resume`を親へ流用しない。
|
|
50
|
+
|
|
51
|
+
- **Claude**: Monitorツール(persistent)で`node scripts/parent-watch.mjs <project> <親名> --follow`
|
|
52
|
+
を起動し、その出力を親へ通知する。世代は常に1匹。張り替え時は旧MonitorをTaskStopしてから起動する。
|
|
53
|
+
- **Codex**: 親のbackground tool taskを1本だけyield状態で保持する。そのtask内で1秒ごとに
|
|
54
|
+
`scripts/codex-parent-watch.sh <project> <親名>`を都度実行し、空でないstdoutだけを`notify`して
|
|
55
|
+
`yield_control`する。このscriptはHTTP catch-upを一度行って即終了する。長寿命なのはbackground taskの
|
|
56
|
+
loopだけで、Node processや端末sessionは常駐させない。張り替え時は旧background taskを停止する。
|
|
57
|
+
- **Grok**: Monitorツール(persistent)で`node scripts/parent-watch.mjs <project> <親名> --follow`
|
|
58
|
+
を1回だけ起動し、stdoutのJSON eventを親へ返す。通常席用`wakeup-bridge`に親を載せない。
|
|
59
|
+
張り替え時は旧Monitorを止めてから起動する。
|
|
60
|
+
|
|
61
|
+
どちらも`parent-join.sh`が先に作る`.team/parent-watch.json`のcursorを共有する。watcher不在中のDMは
|
|
62
|
+
次回起動時にcatch-upされ、親以外宛・親自身の発言・pingでは親を起こさない。Lattice の ready 件数と
|
|
63
|
+
active 件数は合計ではなくそれぞれ変化したら起こす(実装が全部閉じて親手番1件だけになっても起こす)。
|
|
64
|
+
`--follow` は親セッションの stdin が閉じたら終了する。切れた番犬が seq だけ進めて親が起きない状態を作らない。
|
|
65
|
+
`watch_error`が届いたら通常のDMとして扱わず、番犬の再着卓を行う。
|
|
66
|
+
|
|
67
|
+
## 試験結果の監査
|
|
68
|
+
|
|
69
|
+
作業者は自ら必要な試験と自己監査を終え、工程を次に進めてよい水準まで完成させてから、最終的な試験内容と
|
|
70
|
+
試験結果を監査担当へ渡す。監査担当は試験を再実行せず、その内容と結果が妥当か判断する。妥当なら監査担当が
|
|
71
|
+
工程をクローズし、具体的な工程を指示せず「次の工程に着手してください」とだけ通知する。親はこの役割を代行しない。
|
|
72
|
+
監査不合格ごとに作業者のmodelは`Luna → Terra → Sol`へ一段昇格し、各モデルの修正機会は1回だけとする。
|
|
73
|
+
model変更は親だけが実行する。
|
|
74
|
+
|
|
75
|
+
## 宛先
|
|
76
|
+
|
|
77
|
+
claimと工程完了は`post(to: "all")`、ターン終了時の次の行動は自分宛DM、誰かへの用事はその人宛DM、
|
|
78
|
+
誰に聞くか分からない時は`post(to: "all")`を使う。別の通知機構や宛先制御は置かない。
|
|
79
|
+
|
|
80
|
+
## 親の再着卓(context が要約された/セッションが替わった時)
|
|
81
|
+
|
|
82
|
+
1. 新しい shell では、最初に次のブロックをそのまま読み込む。`PEERTABLE_PROJECT` は対象 project の
|
|
83
|
+
絶対 path、`PEERTABLE_PARENT_NAME` は親の room 名へ置き換える。正規 config を source するので
|
|
84
|
+
`PEERTABLE_POST_TOKEN` を画面へ表示・貼り直しせず、`setup-state.json` から room の URL/name を
|
|
85
|
+
復元できる。room 名は URL path 用に percent-encode するため、日本語名でも同じ入口を使える。
|
|
86
|
+
|
|
87
|
+
<!-- parent-rejoin-shell:start -->
|
|
88
|
+
```sh
|
|
89
|
+
: "${PEERTABLE_PROJECT:?対象 project の絶対 path を PEERTABLE_PROJECT へ設定すること}"
|
|
90
|
+
PEERTABLE_PARENT_NAME="${PEERTABLE_PARENT_NAME:-bell}"
|
|
91
|
+
. "${HOME}/.config/peertable.env"
|
|
92
|
+
: "${PEERTABLE_POST_TOKEN:?~/.config/peertable.env に PEERTABLE_POST_TOKEN が必要}"
|
|
93
|
+
|
|
94
|
+
PEERTABLE_URL=$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["server_url"])' \
|
|
95
|
+
"$PEERTABLE_PROJECT/.team/setup-state.json")
|
|
96
|
+
PEERTABLE_ROOM=$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["room"])' \
|
|
97
|
+
"$PEERTABLE_PROJECT/.team/setup-state.json")
|
|
98
|
+
PEERTABLE_ROOM_API=$(python3 -c 'import sys,urllib.parse; print(sys.argv[1].rstrip("/") + "/api/" + urllib.parse.quote(sys.argv[2], safe=""))' \
|
|
99
|
+
"$PEERTABLE_URL" "$PEERTABLE_ROOM")
|
|
100
|
+
export PEERTABLE_URL PEERTABLE_ROOM PEERTABLE_ROOM_API PEERTABLE_PARENT_NAME
|
|
101
|
+
|
|
102
|
+
peertable_parent_read() {
|
|
103
|
+
local since="${1:-0}"
|
|
104
|
+
curl -sf --get "$PEERTABLE_ROOM_API/messages" --data-urlencode "since=$since"
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
peertable_parent_post() {
|
|
108
|
+
if [ "$#" -lt 2 ]; then
|
|
109
|
+
echo 'usage: peertable_parent_post <to> <message>' >&2
|
|
110
|
+
return 2
|
|
111
|
+
fi
|
|
112
|
+
local to="$1"
|
|
113
|
+
shift
|
|
114
|
+
local poster
|
|
115
|
+
poster="$(npm root -g)/peertable/skill/scripts/post-message.mjs"
|
|
116
|
+
if [ ! -f "$poster" ]; then
|
|
117
|
+
echo "PEERTABLE_POSTER_MISSING: $poster" >&2
|
|
118
|
+
return 1
|
|
119
|
+
fi
|
|
120
|
+
# post-message.mjs が送信と受領seq確認まで行う(非ゼロ=未達。印字をPOST成功と誤読した2026-08-26の実被弾対策)
|
|
121
|
+
node "$poster" "$PEERTABLE_PARENT_NAME" "$to" "$*"
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
<!-- parent-rejoin-shell:end -->
|
|
125
|
+
|
|
126
|
+
2. `peertable_parent_read <最後に読んだseq>` で room ログを読む(会話が卓の正本)。返事が必要なら
|
|
127
|
+
`peertable_parent_post <宛先> '<本文>'` を使う。抽象名 `$TOKEN` や手組みJSONへ置き換えない
|
|
128
|
+
3. 工程正本で照合する(Lattice 併用: `lattice todo status --json`。単独: `.team/tasks.md` と
|
|
129
|
+
room ログの突き合わせ)。食い違ったら工程正本が正で、食い違い自体を room へ出す
|
|
130
|
+
4. member 登録は残っているので `parent-join.sh` を再実行しない。名前を確認するだけでよい
|
|
131
|
+
5. harnessに応じて番犬を張り直す。ClaudeとGrokは旧Monitorを止めて`--follow`を1回起動する。Codexは旧background
|
|
132
|
+
taskを止め、1秒ごとの`--poll` loopを起動する。永続cursorが不在時間のDMをcatch-upする
|
|
133
|
+
6. 順序の要点は「room と工程正本を読み終えるまで発言しない」
|
|
134
|
+
|
|
135
|
+
## 席の縮退・散会
|
|
136
|
+
|
|
137
|
+
frontier が細って遊休席が出たら親が畳む: ①対象席へ名指しで通告 ②本人に WIP と未報告の作業が
|
|
138
|
+
無いことを確認する(本人が「まだ持っている」と言えば畳まない) ③席のセッションを終了 ④room API
|
|
139
|
+
で member を削除 ⑤縮退を room ログへ記録する。会議が収束し実作業が外部待ちだけになったら、
|
|
140
|
+
親が「待機。次の発言は<再開trigger>まで不要」を宣言して畳む——宣言しないと収束後の卓は自然には
|
|
141
|
+
黙らない。
|
package/skill/templates/tasks.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
# タスク一覧(単独円卓モード・読み取り専用)
|
|
2
|
-
|
|
3
|
-
setup の聞き取りで確定した議題表である。**読み取り専用**——この表は状態を持たない。誰が何を持っているか・何が終わったかは room の宣言だけが正(憲章1)。ここへ担当や進捗を書き込んでも進行は動かない。
|
|
4
|
-
|
|
5
|
-
依存関係の機械保証は無い。順序や排他が要る議題に会ったら、規則を探すより先に room で喋って決める(憲章10)。
|
|
6
|
-
|
|
7
|
-
## 議題
|
|
8
|
-
|
|
1
|
+
# タスク一覧(単独円卓モード・読み取り専用)
|
|
2
|
+
|
|
3
|
+
setup の聞き取りで確定した議題表である。**読み取り専用**——この表は状態を持たない。誰が何を持っているか・何が終わったかは room の宣言だけが正(憲章1)。ここへ担当や進捗を書き込んでも進行は動かない。
|
|
4
|
+
|
|
5
|
+
依存関係の機械保証は無い。順序や排他が要る議題に会ったら、規則を探すより先に room で喋って決める(憲章10)。
|
|
6
|
+
|
|
7
|
+
## 議題
|
|
8
|
+
|