@a9n-shoji/rvw 0.4.3 → 0.6.0

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.
Files changed (33) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +143 -38
  3. package/dist/cli.mjs +1590 -83
  4. package/dist/cli.mjs.map +4 -4
  5. package/dist/web/assets/{DocumentViewer-CWTnSlpG.js → DocumentViewer-D_PY7MU3.js} +2 -2
  6. package/dist/web/assets/StructureViewer-dhpw7G3m.js +7 -0
  7. package/dist/web/assets/{WalkthroughPanel-D2KqSIf9.js → WalkthroughPanel-DvyIFY5z.js} +1 -1
  8. package/dist/web/assets/{WalkthroughViewer-BDb-99Qk.js → WalkthroughViewer-y-grnBAx.js} +1 -1
  9. package/dist/web/assets/index-D6YvPSBz.css +1 -0
  10. package/dist/web/assets/index-k6AcFBgL.js +11 -0
  11. package/dist/web/index.html +3 -3
  12. package/migrations/018_comment_watch_tasks.sql +10 -0
  13. package/migrations/019_comment_watch_write_reservations.sql +11 -0
  14. package/migrations/020_structure_retired_region_ids.sql +6 -0
  15. package/package.json +3 -1
  16. package/skills/rvw/SKILL.md +1 -1
  17. package/skills/rvw-review-compose/SKILL.md +171 -0
  18. package/skills/rvw-review-compose/agents/openai.yaml +4 -0
  19. package/skills/rvw-review-compose/references/review-composition.md +311 -0
  20. package/skills/rvw-structure/SKILL.md +107 -22
  21. package/skills/rvw-structure/agents/openai.yaml +2 -2
  22. package/skills/rvw-structure/references/structure-authoring.md +174 -30
  23. package/skills/rvw-walkthrough/SKILL.md +37 -12
  24. package/skills/rvw-walkthrough/agents/openai.yaml +2 -2
  25. package/skills/rvw-walkthrough/references/walkthrough-authoring.md +29 -4
  26. package/skills/rvw-watch-comments/SKILL.md +58 -13
  27. package/skills/rvw-watch-comments/scripts/auto-ack.mjs +67 -9
  28. package/skills/rvw-watch-comments/scripts/preflight.mjs +2 -1
  29. package/skills/rvw-watch-comments/scripts/watch-driver.mjs +47 -1
  30. package/skills/rvw-watch-comments/scripts/watch-state.mjs +376 -42
  31. package/dist/web/assets/StructureViewer-EKDvAQ2a.js +0 -5
  32. package/dist/web/assets/index-B0xRoLW2.css +0 -1
  33. package/dist/web/assets/index-DC6BgBp4.js +0 -11
package/CHANGELOG.md CHANGED
@@ -5,6 +5,84 @@
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.6.0] - 2026-09-07
9
+
10
+ ### Added
11
+
12
+ - 通知permissionの状態表示と、Agentのcomment更新経路を介さずbrowser / OS通知を確認できるテスト通知
13
+ - PR全体または明示されたreview subjectを調査し、Walkthrough、Structure、直接code readingから必要最小限の
14
+ 構成を選ぶCodex / Claude Code共通のbundled `rvw-review-compose` Skill
15
+ - Structureへthesis、attention start、optionalなconnected exact-Edge primary backbone、stable IDとresponsibility
16
+ summaryを持つunorderedなnamed comprehension regionからなるoptionalなauthorial `presentation`を追加。raw座標を保存せず、spatial organizerが
17
+ ある時だけcanonical配置をauthoringし、start-onlyではtopology配置のままGuide、focus、visual cue、exportへ
18
+ 説明意図を伝えられる
19
+ - Structure Viewerへ折り畳み可能なGuide、Home / Backによるfocus navigation、clickableなRegion framing、
20
+ backbone salienceとfocus-hop attentionの分離、complete extentを保つsemantic zoomを追加
21
+ - protocol version 5と`structure.presentation` capability
22
+
23
+ ### Changed
24
+
25
+ - `rvw open`の新規runtimeを既定で`127.0.0.1:43117`へ固定し、起動をまたいでorigin-scopedな通知permissionと
26
+ 設定を維持。空きportの自動選択は明示的な`--port 0`へ変更
27
+ - comment watcherのauthorityをshared rvw database上のgenerationとしてdurable化し、
28
+ `comment.watchOwnership` capabilityでpreflightする。repository単位のwriter reservationで異なるtask / processの
29
+ Git writerを直列化し、generationを持たないlegacy task stateは再初期化と明示的なactivateを必須に変更
30
+ - `rvw-walkthrough`と`rvw-structure`を一つのbounded Artifactを作るproducerとして明確化し、上位composerの
31
+ subject、review question、scope、inclusion / exclusionを優先しながら、`mustEstablish`、suggested origin / relation /
32
+ invariantはcommit済みsourceで独立に検証し、各representationの拒否境界を維持
33
+ - review composerからproducerをcanonical名と各hostのnative Skill mechanismでloadし、Codex / Claude Code固有の
34
+ user-facing invocation記法を共有runtime contractにしないfail-closedな委譲へ変更
35
+ - Structure preview / publish / updateはrequired nullableな`presentation`を受け取る。旧`graph_json`はread時に
36
+ `null`へnormalizeし、content rewriteは不要。migration 020は削除済みRegion IDのtombstoneだけを追加する
37
+ - Viewer / exportで共有するdeterministicなobstacle-aware relation routeとstable label placementへ変更し、
38
+ exact endpointのvisible boundary portへ接続する。non-endpoint NodeへのEdge貫通とfocus変更によるlabel jumpを防ぎ、
39
+ shared / near-coincident corridorを持つdistinct visible relation(parallel / reciprocalを含む)の実質的lane分離と
40
+ normal-detail labelの相互非重複を保証
41
+ - Structure presentationのRegion配列と各`nodeIds`を順序を持たないsetとして扱い、stable IDでcanonical化する
42
+ - Regionを持つGraphのcanonical projectionはRegion全体をcompound chunkとして先に配置し、direct factual
43
+ adjacency、internal crossing、boundary affinityを使って全体extentとEdge routeを抑える。backbone-onlyの
44
+ projectionは従来のderived bandを維持する
45
+ - partial Region membershipで残るneutral Contextをfactual connected component単位のrenderer-owned compoundとして
46
+ boundedに折り畳み、chain / bridge / fan-outをauthored Regionの全周へglobal packingすることで、12〜50 Nodeでも
47
+ 一方向へ伸びず、Regionとexact boundary relationの近くへ配置される
48
+ - Structure内のNode / Region / Context / exact Relation / source移動をbrowser historyへ統合し、Back / Forwardで
49
+ view mode、focus、hop depth、lens、cameraを復元する
50
+ - Region frameをpane-localなchunk lensとして保持し、focusを変えずmember / internal relationをfull relevanceで
51
+ 表示。Home / Node focus / depth変更で解除し、Backでfocus / depth / cameraと一緒に復元
52
+ - 長いprimary backboneのderived bandをdeterministicなserpentine複数行へ折り返し、region envelopeの衝突を
53
+ 避けながらcanonical mapの縦方向を活用。row / layerを新しいprotocol semanticsにはしない
54
+ - bundled Skillsのprotocol preflightをversion 5へ更新
55
+
56
+ ### Fixed
57
+
58
+ - 最後のviewerを閉じて再起動した際、random portによるorigin変更でAgentコメント通知が事実上リセットされる問題
59
+ - superseded watcherがauthorityを再取得できるrace、resolved / missing threadのhistorical eventがactionable workとして
60
+ 再処理される問題、別task / processのrepository writerが重複実行される問題
61
+ - Structureのfile逆引きをCmd / Ctrl+Clickした際に修飾キーが失われ、右ペインではなく左ペインへ開く問題
62
+ - 2-hop表示で遠距離のbackbone Node / Edgeだけが強いopacityを保ち、focusからの距離層を判別できない問題
63
+
64
+ ## [0.5.0] - 2026-09-03
65
+
66
+ ### Added
67
+
68
+ - Structure contentを保存せずcanonical projection、layout diagnostics、authoring warningsを確認できる
69
+ `rvw structure preview --stdin --json`と`structure.preview` protocol capability
70
+ - Structure publish / update成功時に、保存済みgraphから導出したlayout authoring warningを返すfeedback loop
71
+
72
+ ### Changed
73
+
74
+ - Structureのinitial projectionをpair-level topologyとSCC layeringを共有する実装へ整理し、terminal / hub originの
75
+ predecessorをnegative rankへ展開。入力順やpresentation contentに依存しないdeterministicなrefinement、diagnostics、
76
+ initial viewportを導入
77
+ - Structure Skillにpublish / update前のcanonical preview、factual entrypointとしてのorigin選択、短いEdge predicate、
78
+ overlapping / nested Node anchorの再検討手順を追加
79
+ - ViewerのEdge labelをgeometryと一致する最大2行へ制限し、SVG / PNG exportでは全文を省略せずwrapして保持
80
+
81
+ ### Fixed
82
+
83
+ - terminal originへ入る多数のpredecessorがoriginと同じ左端columnへ潰れ、non-forward relationと縦積みが増える問題
84
+ - Viewer向けEdge labelのellipsisがSVG / PNG exportにも流用され、standalone artifactからrelation全文が失われる回帰
85
+
8
86
  ## [0.4.3] - 2026-09-02
9
87
 
10
88
  ### Fixed
package/README.md CHANGED
@@ -6,8 +6,8 @@ repository全体を行き来し、PR本文、変更されたコード、変更
6
6
  Agentが実装やarchitectureの説明を提示した場合は、説明を独立したtabに残したまま、inline linkや
7
7
  Mermaid図から人間が選んだcodeだけを開けます。文書は最大2ペインへ並べられるため、
8
8
  説明と実装、callerとdefinition、Markdown previewとcodeを同時に読めます。
9
- 順序より関係が重要なsubjectは、Agentがsource anchor付きStructureとして提示でき、同じworkspaceで
10
- nodeとrelationを自由に辿れます。
9
+ 関係を同時に見渡したいsubjectは、Agentがsource anchorとoptionalなauthorial presentation付きStructureとして
10
+ 提示でき、意図されたspatial explanationを手がかりに同じworkspaceでnodeとrelationを自由に辿れます。
11
11
 
12
12
  diffは変更を見つける入口であり、レビュー対象の境界ではありません。人間が結果を読み、影響を追い、
13
13
  次に直すべきことを判断します。Codex / Claude Codeは、その判断を同梱された共通Skillと`rvw` CLI
@@ -67,20 +67,27 @@ rvw open https://github.com/owner/repository/pull/123
67
67
  rvw open
68
68
  ```
69
69
 
70
- serverは`127.0.0.1`の空きportだけへbindします。同じdatabaseで既にrvwが動いていれば、通常の
70
+ serverは`127.0.0.1:43117`へbindします。同じdatabaseで既にrvwが動いていれば、通常の
71
71
  `rvw open`はそのruntimeへPRを追加し、同じoriginで新しいtabを開きます。二つ目のserverやdatabase接続は
72
72
  起動しません。最初の`rvw open`だけがbackground runtimeを開始し、最初のtab接続を確認してから端末へ
73
73
  制御を返します。最後のtabを閉じると短い猶予後に停止し、リロード中や別tabが残っている間は停止しません。
74
- 異なる`RVW_DATABASE_PATH`を指定したruntimeは独立して起動できます。
74
+ 固定originにより、Browser NotificationのpermissionとAgentコメント通知設定は通常起動をまたいで維持されます。
75
+ 空きportを自動選択する場合は`--port 0`を明示します。この場合は起動ごとにoriginが変わり得るため、通知permissionと
76
+ browser storageは引き継がれません。異なる`RVW_DATABASE_PATH`のruntimeを同時に起動する場合は、二つ目へ別の
77
+ 固定`--port`または`--port 0`を指定します。
75
78
 
76
79
  serverを端末に接続したままにする場合は`rvw open --foreground`を使います。同じdatabaseのruntimeが
77
80
  既にあればforeground commandは競合を明示します。ブラウザだけを自動で開かない場合は
78
81
  `rvw open --no-open`を使います。active runtimeがあればURLを表示して再利用し、なければCtrl+Cまで
79
82
  signal管理のserverを起動します。再利用時もCLIがCtrl+Cまでviewer leaseを保持するため、表示したURLが
80
- 終了猶予中に無効になることはありません。初回の`--port`は尊重し、active runtimeと異なるportを指定した場合は
83
+ 終了猶予中に無効になることはありません。初回の`--port`は尊重し、省略時はactive runtimeのoriginを再利用します。
84
+ active runtimeと異なるportを明示した場合は
81
85
  二つ目を起動せず競合を返します。一度登録したPRは、完全URLまたは全登録PRで一意な番号を指定すれば
82
86
  repository外のdirectoryからも開けます。
83
87
 
88
+ 最上部の`...` menuでは、Browser Notificationのpermission状態を確認し、Agent更新と独立したテスト通知を送れます。
89
+ `Agentのコメントを通知`を有効にすると、初回読込後にAgentが追加・更新した最終回答を通知します。
90
+
84
91
  ## 変更を理解する
85
92
 
86
93
  初回openでPRのcommit履歴と最新PR本文を取得します。以後は保持済み状態を先に表示し、viewer起動後または最上部の`...` menuにある`GitHubと同期`で最新状態を取得します。独自の版取り込み操作はありません。
@@ -121,7 +128,8 @@ viewerはこの流れのために次を提供します。
121
128
 
122
129
  ## Agentの説明を人間の順序で検証する
123
130
 
124
- 外部Agentは`rvw-walkthrough` SkillとCLIを使い、実装説明を一つのsource commitをanchorとしてrvwへ提示できます。
131
+ 外部Agentは単一Artifact producerである`rvw-walkthrough` SkillとCLIを使い、一つのbounded subjectの
132
+ 実装説明を一つのsource commitをanchorとしてrvwへ提示できます。
125
133
 
126
134
  ```bash
127
135
  rvw walkthrough publish --stdin --json
@@ -159,27 +167,69 @@ Agentは現在内容を読み、同じ`rvw://walkthrough/<uuid>`を更新して
159
167
 
160
168
  ## codeの関係を空間として検証する
161
169
 
162
- 外部Agentは`rvw-structure` SkillとCLIを使い、PRに関係するboundedなbehaviorをfactualなcode entrypointから
163
- dependency、contract、side effectへ辿る空間として提示できます。必須の読み順を持つ説明はWalkthroughです。
170
+ 外部Agentは単一Artifact producerである`rvw-structure` SkillとCLIを使い、PRに関係する一つのboundedな
171
+ behaviorをfactualなcode entrypointからdependency、contract、side effectへ辿る空間として提示できます。
172
+ thesis、最初に見るNode、必要な場合だけ2〜12 Node / 1〜16 Edgeのconnected exact-relation backbone、
173
+ stable IDと責務summaryを持つcomprehension regionで説明の意図を表せます。artifactは一つのbounded behaviorに必要な
174
+ relationを保持し、Viewerはstableな全体像とfocus-relativeな局所lensを往復します。正直なspatial organizerがない場合も、意味のある
175
+ thesisとattention startだけを提示できます。順序とprose自体がartifactならWalkthroughです。
164
176
  entrypointを置けない静的なarchitecture/責務inventoryはStructureへ広げません。
165
177
 
166
178
  ```bash
179
+ rvw structure preview --stdin --json
167
180
  rvw structure publish --stdin --json
168
181
  rvw structure get rvw://structure/<uuid> --json
169
182
  rvw structure update rvw://structure/<uuid> --stdin --json
170
183
  rvw structure delete rvw://structure/<uuid> --json
171
184
  ```
172
185
 
173
- Structureは一つのexact `sourceOid`、宣言されたtitle / scope、entrypoint、stableなNode / Edge IDからなります。
186
+ Structureは一つのexact `sourceOid`、宣言されたtitle / scope、entrypoint、stableなNode / Edge ID、required nullableな
187
+ `presentation`からなります。presentationはraw座標ではなく、thesis、authorialなattention start、exact factual
188
+ Edgeのunordered setからなる一つのoptionalなconnected primary backbone、stable ID / label / 責務summary /
189
+ 重複しないNode membershipを持つcomprehension regionからなるauthorial semanticsです。backboneもregionも持たないstart-only presentationは、
190
+ 意味のあるthesisとattention startを伝えられる一方、graph配置へ存在しないspatial orderを作りません。
174
191
  Nodeは0または1件、Edgeは0件以上のsource anchorを持ち、rvwはcommit、UTF-8 path、line pair、endpoint、
175
- focus、重複ID、sizeを保存前に検証します。publish / updateはbrowserやnavigationを操作しません。
176
-
177
- viewerではfocusがある時に1-hop / 2-hopへ絞り、Allでは全Node / Edgeを表示します。relationを次数やIDで
178
- 暗黙に隠さず、pan、zoom、fit、node drag、layout resetで探索できます。通常clickでexact sourceを左、
192
+ 重複ID、presentation参照とmembership、sizeを保存前に検証します。publish / updateはbrowserやnavigationを操作しません。
193
+ publish / update前には同じgraph contentをpreviewし、presentationに依存しないtopology diagnosticsとauthoring warningから
194
+ origin、granularity、behavior / subject boundaryを再確認できます。warningは保存を拒否せず、graphを自動変更しません。
195
+
196
+ primary backboneまたはregionがあればcanonical配置へ反映し、backboneもregionもないstart-only presentationと
197
+ `presentation: null`は同じtopology projectionを使います。start-onlyでもthesisとattention startはoverview、
198
+ visual cue、exportへ残り、新規sessionは`startNodeId`から始まります。factual entrypointのoriginは別に示します。
199
+ header直下のcompact Guideはattention startと折り畳み可能なthesisだけを示し、backbone Edgeの完全なリストや
200
+ Region関係図を複製しません。Structure本体はGraph / Regionsを切り替えられ、Regions modeではRegionごとの責務を
201
+ 矩形として示し、factual Edgeから導出したdirectなRegion間connectionを矢印で表示します。Regionを選ぶとGraphへ
202
+ drill-downして、代表Nodeを捏造せずexact memberへviewportを移動します。Graph上にはRegionのfull label、責務summary、
203
+ member / internal relation数を持つcompact lensを表示し、対象Nodeと内部relationを専用styleで強調します。stable ID由来の
204
+ 略称を復号したり、Node配置からmembershipを推測したりする必要はありません。BackでRegions overviewへ戻れます。
205
+ Regions modeはcard geometryを狭いpaneへ押し込まず、初期表示 / ResetではStartを含む責務を読めるscaleで示し、
206
+ Fitだけがmap全体を収めます。独立したzoom / wheel・drag panで局所を読みます。このRegions cameraはGraph viewportと混ぜずpane-local sessionへ保持し、
207
+ mode切替、Region drillからのBack、tab往復でもそれぞれの位置を復元します。
208
+ region membershipは囲い枠ではなく明示Node IDに
209
+ 基づくため、manual drag後も変わりません。regionはnamed comprehension chunkで、summaryはそのchunkがthesisへ
210
+ 何を寄与するかを伝えます。Region arrayと各`nodeIds`の順序に意味はなく、stable IDでcanonical化されます。
211
+ Region間の関係は別のauthorial graphではなく、member間のdirect factual EdgeからViewerが導出します。
212
+ viewerではHomeでauthorial start(null presentationではorigin)とexact 1-hopを読み、canvas / minimapに残る
213
+ backbone emphasisでcoreの位置を保ちながら、Node focusの1-hop / 2-hop、Region frame、AllをBackで往復します。
214
+ HomeとRegion frameは対象を確実に見せるためAllへ切り替えます。Region frame中はfocusを維持したままmemberと内部relationを
215
+ full relevanceで読め、Home、Node focus、depth変更で解除します。Backは直前のview mode / focus / hop depth / framed region / viewportを復元します。
216
+ backbone membershipは固定されたauthorial salience、focus hopは一時的なreviewer attentionとして別に表示します。
217
+ 低zoomで省略するdetailもvisible / total件数、minimap、selection、Allから回収でき、pan、zoom、fit、node drag、
218
+ layout resetで探索できます。通常clickでexact sourceを左、
179
219
  `Cmd` / `Ctrl`+clickで右ペインへ開きます。globalなcommit選択は
180
- 変えません。node位置とviewportは同じbrowser sessionで保持しますが、SQLiteやAgent protocolへ座標を
181
- 保存しません。同じsubjectの更新は同じURIを完全置換し、存続するIDの位置を保ちます。別subjectは新しい
220
+ 変えません。GraphのNode位置 / viewportとRegions viewportは互いに独立して同じbrowser sessionで保持しますが、SQLiteやAgent protocolへ座標を
221
+ 保存しません。同じsubjectの更新は同じURIを完全置換します。通常は存続するIDの位置を保ちますが、backbone endpoint
222
+ adjacency、Region identity / membershipなどspatial organizerが変われば、新しいspatial semanticsへcanonical geometryをrebaseします。
223
+ frame中のRegion IDが存続する場合はchunk lensも維持し、current memberと内部relationのderived boundsへrefitします。
224
+ Regionのlabel / summaryや配列順だけの変更ではGraphのNode geometryをrebaseしません。
225
+ Regions cameraは別のderived-map basisでreconcileし、unorderedな配列順やsummary / thesisだけの変更では保持する一方、
226
+ Region label / membership、cross-Region Edge endpoint・direction・labelなどprojection / routingが変われば、
227
+ Startを読める新しいHome projectionへ戻します。map全体への縮小は明示的なFitだけが行います。
228
+ `null`とstart-onlyの往復やthesis / startだけの変更ではmanual geometryを保ちます。別subjectは新しい
182
229
  Structureとしてpublishします。
230
+ Node / Edge / Regionのstable IDは同じclaim / comprehension chunkが存続する間だけ維持し、一度削除したIDを
231
+ 別の意味で再利用しません。rvwは三種類すべてのretired IDをtombstoneとして保持し、後のupdateでの再導入を
232
+ 拒否します。存続中のIDが意味ごと差し替えられたかは機械判定せず、producerが新しいIDを割り当てます。
183
233
 
184
234
  Structure headerの`Export`から、現在のNode配置を保った図全体をstandalone SVGまたは2倍基準のPNGとして
185
235
  保存できます。focusや1-hop / 2-hopで画面上に絞り込んでいても、出力には全Node、全Relation、全Edge labelが
@@ -187,11 +237,11 @@ Structure headerの`Export`から、現在のNode配置を保った図全体をs
187
237
 
188
238
  ## Codex / Claude Code Skills
189
239
 
190
- アプリ本体からローカルSkillをインストールします。一度のinstallで、コメント処理用の`rvw`、
191
- Walkthroughのpublish・改善・削除用の`rvw-walkthrough`、Structureのpublish・置換・削除用の
192
- `rvw-structure`、新規コメント監視用の
193
- `rvw-watch-comments`が入ります。Skill名と内容はCodex / Claude Codeで共通で、
194
- platform指定は配置先だけを選びます。
240
+ アプリ本体からローカルSkillをインストールします。一度のinstallで、コメント処理用の`rvw`、PR全体の
241
+ 必要最小限のreview compositionを選ぶ`rvw-review-compose`、単一Walkthroughのpublish・改善・削除用の
242
+ `rvw-walkthrough`、単一Structureのpublish・置換・削除用の`rvw-structure`、新規コメント監視用の
243
+ `rvw-watch-comments`という5つが入ります。Skill名と内容はCodex / Claude Codeで共通で、platform指定は
244
+ 配置先だけを選びます。
195
245
 
196
246
  ```bash
197
247
  rvw skill install codex
@@ -201,8 +251,8 @@ rvw skill status
201
251
 
202
252
  既定の配置先は次です。
203
253
 
204
- - Codex: `~/.agents/skills/rvw`、`~/.agents/skills/rvw-walkthrough`、`~/.agents/skills/rvw-structure`、`~/.agents/skills/rvw-watch-comments`
205
- - Claude Code: `~/.claude/skills/rvw`、`~/.claude/skills/rvw-walkthrough`、`~/.claude/skills/rvw-structure`、`~/.claude/skills/rvw-watch-comments`
254
+ - Codex: `~/.agents/skills/rvw`、`~/.agents/skills/rvw-review-compose`、`~/.agents/skills/rvw-walkthrough`、`~/.agents/skills/rvw-structure`、`~/.agents/skills/rvw-watch-comments`
255
+ - Claude Code: `~/.claude/skills/rvw`、`~/.claude/skills/rvw-review-compose`、`~/.claude/skills/rvw-walkthrough`、`~/.claude/skills/rvw-structure`、`~/.claude/skills/rvw-watch-comments`
206
256
 
207
257
  rvwがインストールしたSkillには同梱版digestを記録します。`skill status --json`と`doctor --json`は、
208
258
  管理済みの旧版なら`updateAvailable: true`、ローカル編集なら`locallyModified: true`、記録のない差異なら
@@ -234,16 +284,47 @@ globalなcommit選択を変えずに開けます。
234
284
  rvw Skillを使って、https://github.com/owner/repository/pull/123 をreviewし、見つけた指摘をRVWのコメントとして作成してください。
235
285
  ```
236
286
 
237
- Walkthroughを作る場合は、説明したい対象と必要な作成指示をセッションへ伝えて`rvw-walkthrough` Skillを使います。
238
- Skillは明示された指示を優先し、未指定の作成判断だけを既定guideで補って、reviewerが変更または実装対象の
239
- mental modelを作るための最初の読解経路を構成します。文書の見出しや説明順序は固定せず、source anchorを持つ
240
- reference付きartifactとして検証してpublishします。Walkthrough全体へのコメントから説明を改善する場合は、
241
- 現在内容を取得して同じURIを更新し、重複した「改訂版」を追加しません。
287
+ PR全体または明示したreview subjectについて、どの説明surfaceが必要かも含めて任せる場合は
288
+ `rvw-review-compose` Skillを使います。
289
+
290
+ ```text
291
+ rvw-review-compose Skillを使って、https://github.com/owner/repository/pull/123 を理解するための
292
+ Walkthrough / Structureをおすすめの構成で作ってください。
293
+ ```
242
294
 
243
- Structureを作る場合は、behavior、entrypoint、scope、含める/除外する関係を伝えて`rvw-structure` Skillを使います。
244
- Skillは実際のcommit済みcodeを調査し、labelではなくclaimのidentityとしてstable IDを割り当てます。
245
- 読み順が本質ならWalkthroughを提案し、静的なarchitecture inventoryならStructureを作りません。producer authoringの実地評価は
246
- [Structure producer evaluation](docs/structure-producer-evaluation.md)に記録しています。
295
+ composerはcommit済みcodeと周辺contextを調査し、一度に内部化する概念を減らす最小構成を選びます。順序や
296
+ lifecycleが本体ならWalkthrough、ownershipやdependencyが本体ならStructure、局所的な分岐や実装詳細なら
297
+ Artifactを作らずcodeを直接読む入口を示します。WalkthroughStructureを常に一組にせず、固定のoverviewや
298
+ section templateも要求しません。作成後は通常のAgent responseで、構成理由、推奨される最初の入口、作成または
299
+ 更新したURI、意図的に直接code readingへ残した論点を返します。このresponseとcomposer内部の理解単位やbriefは
300
+ 永続Artifactではなく、厳密なreview完了planでもありません。ReviewerはWalkthrough、Structure、codeのどこからでも
301
+ 入り直せます。
302
+
303
+ composerは各producerをcanonical Skill名で、Codex / Claude Codeそれぞれのnative Skill mechanismからloadします。
304
+ 共有Skill本文は`$name`や`/name`をruntime protocolとして扱わず、producerがsessionで利用不能ならArtifact操作前に
305
+ 停止します。briefのsubject、review question、purpose / behavior boundary、scope、inclusion / exclusion、emphasisは
306
+ 調査範囲のauthorityですが、`mustEstablish`、suggested origin / relationship / invariantなどの実装assertionはproducerが
307
+ commit済みsourceとtestから独立に検証するcandidate claimです。briefやvalidなsource rangeだけで事実とはみなしません。
308
+
309
+ Walkthroughを一件作る場合は、説明したいbounded subjectと必要な作成指示をセッションへ伝えて
310
+ `rvw-walkthrough` Skillを直接使います。Skillは上位composerを含む明示されたbriefのsubject、review question、
311
+ scope、inclusion / exclusion、emphasisを優先し、未指定の作成判断だけを既定guideで補います。PR全体のArtifact数や
312
+ Structureとの役割分担を決めず、そのsubjectに適した一つのordered pathをsource anchor付きreferenceで検証して
313
+ publishします。`mustEstablish`その他の実装assertionはauthorityとして受け入れずsourceから再検証し、essential claimが
314
+ unsupported / contradictedなら無理なanchorを付けずcallerへ返します。ordered pathが適切でなければStructureを提案する
315
+ representation rejectionは残ります。
316
+ Walkthrough全体へのコメントから説明を改善する場合は、現在内容を取得して同じURIを更新し、重複した
317
+ 「改訂版」を追加しません。
318
+
319
+ Structureを作る場合は、behavior、entrypoint、scope、含める/除外する関係と、必要なら伝えたいthesis、
320
+ 最初に見るNode、connectedなexact factual relation setのprimary backbone、regionを伝えて`rvw-structure` Skillを使います。
321
+ Skillは上位composerを含む明示briefを調査boundaryのauthorityとして一つのbounded behaviorだけを扱い、suggested
322
+ entrypointやrelationを実際のcommit済みcodeから再検証して、labelではなくclaimのidentityとしてstable IDを割り当てます。
323
+ PR全体の構成や別behaviorのArtifactは自律的に増やしません。順序とprose自体が本質ならWalkthroughを提案し、
324
+ Structureを一本道のstepperにせず、静的なarchitecture inventoryも作らないrepresentation rejectionは残ります。
325
+ producer authoringの実地評価は
326
+ [Structure producer evaluation](docs/structure-producer-evaluation.md)、composition判断のfresh-context評価は
327
+ [Review composition decision evaluation](docs/review-composition-evaluation.md)に記録しています。
247
328
 
248
329
  新規root commentとreplyを継続監視する場合は`rvw-watch-comments` Skillを起動します。全登録PRを
249
330
  同梱driverから約1秒間隔で監視し、起動前の既存未解決commentは処理しません。自分のPRのfix-and-pushを起動taskへ
@@ -260,9 +341,12 @@ queue、retry、batch内のthread単位status post、自己返信抑制をtransa
260
341
  調査結果、実装内容、test結果が具体的なcodeに基づく場合、Skillは最終replyからexact commitの有用な
261
342
  line rangeへ`rvw-ref:` linkを付け、reviewerが根拠へ直接移動できるようにします。
262
343
 
263
- 四つのSkillはSQLiteを直接読まず、`rvw protocol --json`、`rvw comment ... --json`、
264
- `rvw walkthrough get/update/publish/delete ... --json`、`rvw structure get/update/publish/delete ... --json`、
265
- `rvw pr sync --stdin --json`だけを利用します。
344
+ 5つのSkillはrvwのapplication SQLiteを直接読まず、rvwへの操作には`rvw protocol --json`、`rvw agent status --json`、
345
+ `rvw comment ... --json`、
346
+ `rvw walkthrough get/update/publish/delete ... --json`、
347
+ `rvw structure list/preview/get/update/publish/delete ... --json`、`rvw pr sync --stdin --json`という既存contractだけを
348
+ 利用します。composerの追加による新しいCLI commandやprotocol capabilityはありません。既存Walkthrough URIが
349
+ 明示されない場合に全Walkthroughを列挙するcontractもないため、composerはSQLiteを読んで重複を推測しません。
266
350
  ローカルDBやrepositoryへアクセスできないCloud Agentは対象外です。
267
351
 
268
352
  ## 復旧
@@ -294,6 +378,10 @@ rvw pr refresh <PR_REF> --json
294
378
  rvw comment create --stdin --json
295
379
  rvw comment list <PR_REF> --state unresolved --limit 50 --offset 0 --json
296
380
  rvw comment watch [--after <CURSOR>] [--interval 10] --json-seq
381
+ rvw comment watch-task activate --task-id <UUID> --json
382
+ rvw comment watch-task verify --task-id <UUID> --generation <N> --json
383
+ rvw comment watch-task reserve-write --task-id <UUID> --generation <N> --lease-id <UUID> --write-key <OWNER/REPOSITORY> --json
384
+ rvw comment watch-task release-write --task-id <UUID> --generation <N> --lease-id <UUID> --json
297
385
  rvw comment get <COMMENT_URI> --json
298
386
  rvw comment get <COMMENT_URI> --include-pr-body --json
299
387
  rvw comment get <COMMENT_URI> --live --json
@@ -314,6 +402,12 @@ rvw pr attach <PR_REF> --repository <PATH> --json
314
402
  stdinをcloseし、shellではpipe、quoted heredoc、input redirectionのいずれかを使います。起動済みの
315
403
  対話commandへJSONと改行だけを送るとEOF待ちになります。
316
404
 
405
+ `comment watch-task`は同じrvw databaseを監視する外部taskのgenerationを管理します。新taskだけが
406
+ `activate`し、再開taskは保存済みgenerationを`verify`します。comment watch cursorは引き続きevent位置
407
+ だけを表し、consumer ownershipとは独立です。repository writer reservationもrvw databaseで共有され、
408
+ active generationの検証と取得が同じtransactionで行われます。旧generationの取得済みreservationは
409
+ releaseされるまで新generationをブロックします。
410
+
317
411
  `comment create`は登録済みPR、通常のcomment target、本文、任意のAgent名、投稿単位code referenceをstdin JSONで受け取り、
318
412
  未解決のroot threadを一件作成します。repository targetはexact commit、path、任意のinclusive line rangeを
319
413
  指定し、viewerと同じ文書・行検証を通ります。作成してもbrowserを開かず、tabやcommit選択を変更しません。
@@ -364,16 +458,27 @@ source checkoutでは、GitHub接続や保存済みPRを用意せずにrepositor
364
458
  pnpm demo
365
459
  ```
366
460
 
367
- このデモは小さなE2E fixtureとは分離され、現在のcheckoutにある直近6件のfirst-parent commitを
368
- 一つのsynthetic PRとして表示します。tree、文書、diff、検索はworktreeではなく実際のGit objectから読み、
369
- 100件以上の実在file、複数commit、変更外のtest・document・Skill、初期commentとWalkthroughを含みます。
461
+ 既定のデモは、固定metadataからtemporary directoryへ毎回同じSHA-1 Git historyを構築します。架空の注文
462
+ serviceに対するresilient order placement PRを、7 commits、changed / unchanged file、review comments、
463
+ Walkthrough、Structureを含む一貫したreview workloadとして表示します。networkや現在のrvw historyには依存しません。
370
464
  browserを自動で開かない場合は`pnpm demo -- --no-open`、portを変える場合は`RVW_DEMO_PORT`を指定します。
371
- デモを停止するには起動したterminalでCtrl+Cを押してください。
465
+
466
+ 現在のrvw checkoutをそのままreviewする任意のdogfood modeは別commandです。表示内容はlocal refsと
467
+ committed historyに応じて変わり、必要なfirst-parent historyが不足していれば明示的に失敗します。
468
+
469
+ ```bash
470
+ pnpm demo:dogfood
471
+ ```
472
+
473
+ fixtureのcontract / realistic / stress / dogfoodの境界、realistic historyの更新規則、anchor integrity、
474
+ stress coverageの場所は[Fixture architecture](docs/fixture-architecture.md)を参照してください。デモを停止するには
475
+ 起動したterminalでCtrl+Cを押してください。
372
476
 
373
477
  ```bash
374
478
  pnpm install --frozen-lockfile
375
479
  pnpm check
376
480
  pnpm test
481
+ pnpm test:dogfood
377
482
  pnpm test:e2e
378
483
  pnpm build
379
484
  pnpm test:package