thurview 0.14.0 → 0.16.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.
- package/README.md +140 -87
- package/dist/cli.js +24 -1
- package/dist/cli.js.map +1 -1
- package/dist/document/compile.js +107 -1
- package/dist/document/compile.js.map +1 -1
- package/dist/document/schema.js +17 -0
- package/dist/document/schema.js.map +1 -1
- package/dist/queue.js +123 -0
- package/dist/queue.js.map +1 -0
- package/dist/server/server.js +10 -10
- package/dist/server/server.js.map +1 -1
- package/dist/store.js +10 -0
- package/dist/store.js.map +1 -1
- package/dist/ui/app.css +25 -0
- package/dist/ui/app.js +141 -12
- package/dist/ui/app.js.map +2 -2
- package/package.json +1 -1
- package/skills/thurview/SKILL.md +32 -15
- package/skills/thurview/references/components.md +38 -0
- package/skills/thurview/references/document-authoring.md +19 -0
- package/skills/thurview/references/lifecycle.md +21 -0
- package/skills/thurview-design/SKILL.md +5 -5
- package/skills/{thurview/references/code-explainer.md → thurview-explain/SKILL.md} +95 -30
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thurview",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Guided, evidence-anchored reviews of agent-written code. A coding agent authors the review; you read, ask, comment and decide in the browser.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
package/skills/thurview/SKILL.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: thurview
|
|
3
|
-
description: Author and publish a thurview
|
|
3
|
+
description: Author and publish a thurview review - a guided, evidence-anchored explanation of a change, a review of a branch, pull request or commit range, which the reader opens in the browser, annotates, asks questions about, and approves or sends back. To explain a codebase or one subsystem as it stands, use the thurview-explain skill; for a design, an architecture proposal or an implementation plan — a change not written yet — use the thurview-design skill. Use when the user asks to review a branch or PR, to explain or walk through a change, "review my branch against main", or invokes /thurview. Not for a pass/fail bug hunt.
|
|
4
4
|
user-invocable: true
|
|
5
|
-
argument-hint: "[<pr-number|pr-url> | --base <ref> --head <ref>
|
|
5
|
+
argument-hint: "[<pr-number|pr-url> | --base <ref> --head <ref>]"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# thurview
|
|
@@ -16,8 +16,9 @@ request asks for.
|
|
|
16
16
|
- A **code explainer** explains a CODEBASE, or one subsystem, at a single
|
|
17
17
|
pinned commit, so the reader can see the architecture well enough to spot
|
|
18
18
|
design problems themselves. It has no diff and nothing to approve, and it
|
|
19
|
-
states what it did not examine.
|
|
20
|
-
|
|
19
|
+
states what it did not examine. It is a separate skill —
|
|
20
|
+
`thurview-explain`, installed beside this one; run `thurview skill` for its
|
|
21
|
+
path. Stop here and read that instead.
|
|
21
22
|
- A **design** explains a change that is NOT WRITTEN YET: a design, an
|
|
22
23
|
architecture proposal, an implementation plan. It is pinned to the one commit
|
|
23
24
|
it argues from, its anchors are the code as it stands, and what it would
|
|
@@ -64,10 +65,9 @@ directory; `thurview <command> --help` shows flags and examples.
|
|
|
64
65
|
$ARGUMENTS
|
|
65
66
|
|
|
66
67
|
Empty: a review of the current branch against its up-to-date trunk. A PR
|
|
67
|
-
number or URL: that pull request. `--base`/`--head`: that range.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
[Code explainer](references/code-explainer.md). A request for how something
|
|
68
|
+
number or URL: that pull request. `--base`/`--head`: that range. A request to
|
|
69
|
+
explain the codebase, a subsystem or its architecture rather than a change: a
|
|
70
|
+
code explainer, per the `thurview-explain` skill. A request for how something
|
|
71
71
|
_should_ be built rather than what was built: a design, per the
|
|
72
72
|
`thurview-design` skill.
|
|
73
73
|
|
|
@@ -86,8 +86,7 @@ Read [Components](references/components.md) before you edit `data.yaml` or add
|
|
|
86
86
|
a fenced component. Read [Lifecycle](references/lifecycle.md) for statuses,
|
|
87
87
|
storage and thread rules. Read [Software map](references/software-map.md)
|
|
88
88
|
before you author `map.yaml`. Read [Theme](references/theme.md) before you
|
|
89
|
-
write `theme.yaml`.
|
|
90
|
-
the request is a codebase rather than a change.
|
|
89
|
+
write `theme.yaml`.
|
|
91
90
|
|
|
92
91
|
## Workflow
|
|
93
92
|
|
|
@@ -170,6 +169,13 @@ depends on what, what it left untested. Then compare the stated intent (commit
|
|
|
170
169
|
messages, PR description, the user's own words) with what the code does. The
|
|
171
170
|
gap is the most valuable finding.
|
|
172
171
|
|
|
172
|
+
Answer one question explicitly while you are in there: where does the change
|
|
173
|
+
let input cross a trust boundary? What counts is defined once, in the
|
|
174
|
+
`thurview-fix` skill's `SKILL.md` under "Findings" - read it there rather than
|
|
175
|
+
deciding again, and record the answer in `data.yaml` under `security` in step 5.
|
|
176
|
+
It is a place for the reader to look, not a finding and not a severity; a
|
|
177
|
+
repository with a SAST tool already has that job covered.
|
|
178
|
+
|
|
173
179
|
Do not spend the review on naming, formatting, import order, or missing
|
|
174
180
|
defensive checks. Linters, type checkers and `/code-review` catch those, and a
|
|
175
181
|
reader who wanted them would have run those instead.
|
|
@@ -226,6 +232,13 @@ format. See [Components](references/components.md) for the shape and
|
|
|
226
232
|
[Document authoring](references/document-authoring.md) for what earns an
|
|
227
233
|
entry. Never write one for a capability the change did not deliver.
|
|
228
234
|
|
|
235
|
+
Then answer the security question from step 3 in the same file: `security: none`
|
|
236
|
+
when the change crosses no trust boundary, or one entry per place it does, each
|
|
237
|
+
with a head anchor the reader opens. Both are answers; leaving the key out is
|
|
238
|
+
not, and publishes as "not assessed". See
|
|
239
|
+
[Document authoring](references/document-authoring.md) and
|
|
240
|
+
[Components](references/components.md).
|
|
241
|
+
|
|
229
242
|
### 6. Theme the review after the project
|
|
230
243
|
|
|
231
244
|
Read [Theme](references/theme.md). Decide the look in its order: what the
|
|
@@ -258,6 +271,8 @@ Tell the user, in a few lines and nothing more:
|
|
|
258
271
|
- what the review covers, in one sentence, and where to start: the Review tab
|
|
259
272
|
as a rule; the Files tab when the change is small and the diff is the story
|
|
260
273
|
- the interface delta `verdict`, in its own words
|
|
274
|
+
- the `security` verdict, in one clause: what the change crosses, or that it
|
|
275
|
+
crosses nothing
|
|
261
276
|
- which theme source you used: the user's request, the project's design
|
|
262
277
|
system (name the files), or the default skin
|
|
263
278
|
- when the review has no map, why not, in one clause
|
|
@@ -323,11 +338,11 @@ Do not pin the same commit as base and head to fake it. That leaves a review
|
|
|
323
338
|
whose Files, Commits and interface-delta surfaces all describe a change that
|
|
324
339
|
does not exist, which is a claim, not a gap.
|
|
325
340
|
|
|
326
|
-
Run `thurview explain [<path>]` instead and follow
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
341
|
+
Run `thurview explain [<path>]` instead and follow the `thurview-explain`
|
|
342
|
+
skill. It is the same loop - pin, author, publish, wait, answer - over a
|
|
343
|
+
document kind whose unit is a codebase: no diff, no commits, no interface
|
|
344
|
+
delta, and a Coverage tab stating what the document reached and what it did
|
|
345
|
+
not.
|
|
331
346
|
|
|
332
347
|
## Designing a change rather than reviewing one
|
|
333
348
|
|
|
@@ -343,6 +358,8 @@ Report completion only when all of these hold:
|
|
|
343
358
|
- The reader has the URL of a published revision.
|
|
344
359
|
- Every `error` diagnostic is resolved.
|
|
345
360
|
- The map is published, or you said why it is not.
|
|
361
|
+
- `security` in `data.yaml` is answered: `none`, or the crossings. A review
|
|
362
|
+
published as "not assessed" is not finished.
|
|
346
363
|
- The review is waiting on the reader, accepted, closed, dismissed or deleted.
|
|
347
364
|
|
|
348
365
|
Close with the decision and its summary (`wait.decision`), and the URL. When
|
|
@@ -42,6 +42,10 @@ interfaces:
|
|
|
42
42
|
change: added # added | changed | removed
|
|
43
43
|
capability: Validate a review without sealing a revision.
|
|
44
44
|
anchor: dryRunFlag # must hold a line the diff moved
|
|
45
|
+
|
|
46
|
+
security: # a review only; omit until you have looked
|
|
47
|
+
- boundary: The --shell flag reaches execFile's argv unquoted.
|
|
48
|
+
anchor: spawn # a head anchor, with a peek
|
|
45
49
|
```
|
|
46
50
|
|
|
47
51
|
An anchor without `peek` can label a map node but cannot open code.
|
|
@@ -70,6 +74,40 @@ Each entry in `interfaces` does one of two things, and never both:
|
|
|
70
74
|
"`thurview publish` gains `--dry-run`", not "added a boolean to
|
|
71
75
|
PublishOptions".
|
|
72
76
|
|
|
77
|
+
## security
|
|
78
|
+
|
|
79
|
+
Where this change lets input cross a trust boundary. The browser shows it under
|
|
80
|
+
the interface delta, so the reader is told either way rather than left to
|
|
81
|
+
remember to look for it.
|
|
82
|
+
|
|
83
|
+
**What counts as a trust boundary is defined once**, in the `thurview-fix`
|
|
84
|
+
skill's `SKILL.md` under "Findings". Read it there. Nothing here repeats it, so
|
|
85
|
+
the two cannot drift into disagreeing about what counts. That skill turns what
|
|
86
|
+
it names into a ranked finding; this one only puts the place in front of the
|
|
87
|
+
reader, so the same definition selects the lines and stops there.
|
|
88
|
+
|
|
89
|
+
Three states, and they are three different claims:
|
|
90
|
+
|
|
91
|
+
- **omitted**, or the word `pending` - you have not looked yet. The panel says
|
|
92
|
+
"not assessed", which is what a stub published before the walkthrough should
|
|
93
|
+
be saying.
|
|
94
|
+
- **`security: none`** - you looked, and the change crosses none. Say it
|
|
95
|
+
explicitly: it is what makes this panel worth reading the next time.
|
|
96
|
+
- **a list** - one entry per place. `boundary` is one sentence in the reader's
|
|
97
|
+
terms; `anchor` is a head anchor with a `peek`, because a crossing is the
|
|
98
|
+
boundary as the change leaves it.
|
|
99
|
+
|
|
100
|
+
`publish` refuses an unknown anchor, an anchor with no `peek` and a `graph: base`
|
|
101
|
+
anchor: an anchor that opens nothing is how a reader stops trusting the ones that
|
|
102
|
+
do. It also refuses an empty list - write `none` rather than leave the reader to
|
|
103
|
+
work out which of the two you meant. Resolving a crossing marks its anchor used,
|
|
104
|
+
so an anchor that only a crossing names raises no "defined but never used".
|
|
105
|
+
|
|
106
|
+
There is no severity here. A crossing is a place for the reader to look; the
|
|
107
|
+
severity that exists belongs to the findings in `thurview-fix`, not to this
|
|
108
|
+
document. An explainer and a design are pinned to one commit and have no change,
|
|
109
|
+
so `publish` refuses the key on either.
|
|
110
|
+
|
|
73
111
|
## Anchor link
|
|
74
112
|
|
|
75
113
|
```markdown
|
|
@@ -94,6 +94,25 @@ only when one of these holds:
|
|
|
94
94
|
Anything else is noise: the entry is already there, or there is nothing to
|
|
95
95
|
add. An interface the change did not deliver is never an entry.
|
|
96
96
|
|
|
97
|
+
## Trust boundaries
|
|
98
|
+
|
|
99
|
+
Every review answers where the change lets input cross a trust boundary, in
|
|
100
|
+
`data.yaml` under `security`. It is not a section you write: the browser shows
|
|
101
|
+
it under the interface delta, one line per place with the anchor the reader
|
|
102
|
+
opens.
|
|
103
|
+
|
|
104
|
+
Answer it after you have read the diff and the graph, and answer it either way.
|
|
105
|
+
`security: none` is the whole answer for a change that crosses none, and writing
|
|
106
|
+
it is what makes the panel worth reading on the review where it is not none. A
|
|
107
|
+
review that leaves the key out publishes as "not assessed", which is honest for
|
|
108
|
+
a stub and is not an answer.
|
|
109
|
+
|
|
110
|
+
What counts as a trust boundary is defined once, in the `thurview-fix` skill's
|
|
111
|
+
`SKILL.md` under "Findings" - read it there rather than deciding again. Do not
|
|
112
|
+
turn this into an audit: thurview surfaces the places, it does not rank them,
|
|
113
|
+
and a repository that runs a SAST tool already has the other job covered. See
|
|
114
|
+
[Components](components.md) for the shape and what `publish` refuses.
|
|
115
|
+
|
|
97
116
|
## Evidence
|
|
98
117
|
|
|
99
118
|
Every claim about code carries an anchor. An anchor is a named source range
|
|
@@ -131,6 +131,7 @@ ${THURVIEW_HOME:-~/.thurview}/
|
|
|
131
131
|
├── THURVIEW.md user guidance (optional)
|
|
132
132
|
├── server.json running server, if any
|
|
133
133
|
├── agents/<id>.json heartbeat of a running `wait`, removed when it ends
|
|
134
|
+
├── forge/<id>.json what the forge last said of the change request: head, state, CI, last pass posted
|
|
134
135
|
├── passes/<id>.json the submission `forge pass` wrote, for `forge submit`
|
|
135
136
|
└── reviews/<id>/
|
|
136
137
|
├── review.md you edit
|
|
@@ -145,6 +146,26 @@ ${THURVIEW_HOME:-~/.thurview}/
|
|
|
145
146
|
A failed publish leaves the last sealed revision in place. The reader can
|
|
146
147
|
switch between revisions in the browser.
|
|
147
148
|
|
|
149
|
+
## The queue
|
|
150
|
+
|
|
151
|
+
The home page lists every document, grouped by repository and ordered by whose
|
|
152
|
+
turn it is. It is read from the store on every load and never published, so it
|
|
153
|
+
cannot go stale. Whose turn, most urgent first:
|
|
154
|
+
|
|
155
|
+
| Turn | When |
|
|
156
|
+
| ------ | ------------------------------------------------------------------------- |
|
|
157
|
+
| you | a decision on a change request that no `forge submit` has posted yet |
|
|
158
|
+
| you | `awaiting-review`, pinned at the change request's head, no thread waiting |
|
|
159
|
+
| agent | the change request's head moved past the pin: `scaffold --update` |
|
|
160
|
+
| agent | a thread `needsAgent`, or `awaiting-agent-updates` |
|
|
161
|
+
| agent | `draft`: nothing published yet |
|
|
162
|
+
| nobody | `accepted`, `closed`, dismissed, or the change request merged or closed |
|
|
163
|
+
|
|
164
|
+
The forge columns come from `forge/<id>.json`, which `scaffold --pr`, `forge
|
|
165
|
+
status` and `forge submit` write for the document bound to that change request.
|
|
166
|
+
Run `thurview forge status --review <id>` to refresh a row; until something
|
|
167
|
+
has, the row says the forge was not read.
|
|
168
|
+
|
|
148
169
|
## wait
|
|
149
170
|
|
|
150
171
|
`thurview wait --review <id> [--timeout <s>]` polls the review and returns
|
|
@@ -54,11 +54,11 @@ whole repository. The rest of the request is what to design.
|
|
|
54
54
|
|
|
55
55
|
## Which kind is this
|
|
56
56
|
|
|
57
|
-
| The request is about | Kind | Skill
|
|
58
|
-
| ------------------------------------------------------------- | ---------- |
|
|
59
|
-
| code that is written — a branch, a PR, a range | review | `thurview`
|
|
60
|
-
| code that exists, explained — "how does this work" | explainer | `thurview
|
|
61
|
-
| code that is **not written yet** — "how should we build this" | **design** | this one
|
|
57
|
+
| The request is about | Kind | Skill |
|
|
58
|
+
| ------------------------------------------------------------- | ---------- | ------------------ |
|
|
59
|
+
| code that is written — a branch, a PR, a range | review | `thurview` |
|
|
60
|
+
| code that exists, explained — "how does this work" | explainer | `thurview-explain` |
|
|
61
|
+
| code that is **not written yet** — "how should we build this" | **design** | this one |
|
|
62
62
|
|
|
63
63
|
A plan for work already done is a review. An explanation with a
|
|
64
64
|
recommendation stapled on is an explainer that broke its own rule. If the
|
|
@@ -1,33 +1,80 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: thurview-explain
|
|
3
|
+
description: Author and publish a thurview code explainer - a guided, evidence-anchored explanation of a codebase, or one subsystem of it, at a single pinned commit, which the reader opens in the browser, annotates, asks questions about, and sends back or marks done. Every claim is anchored to a file and line range, a software map carries the parts the prose does not reach, and coverage states what was never examined. Use when the user asks to explain or walk through a codebase, how a system or a subsystem works, where its design problems might be, "explain this repository", "how does the server work", or invokes /thurview-explain. Not for reviewing a change that is already written, which is the thurview skill.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
argument-hint: "[<path scope>] [--commit <ref>]"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# thurview explain
|
|
2
9
|
|
|
3
10
|
A **review** explains a change. An **explainer** explains a codebase, or one
|
|
4
11
|
subsystem of it, at a single pinned commit, so the reader can see the
|
|
5
12
|
architecture well enough to spot design problems themselves.
|
|
6
13
|
|
|
7
14
|
Same engine, different unit. It shares anchors, peeks, the map, threads,
|
|
8
|
-
revisions and the publish → wait → answer loop
|
|
9
|
-
|
|
10
|
-
change. Where a review shows the
|
|
11
|
-
**coverage**: what it examined at that
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
revisions and the publish → wait → answer loop with the `thurview` skill's
|
|
16
|
+
review. It has no diff, no commits and no interface delta, because those are
|
|
17
|
+
claims about a change and there is no change. Where a review shows the
|
|
18
|
+
interface delta, an explainer shows **coverage**: what it examined at that
|
|
19
|
+
commit, and what it did not.
|
|
20
|
+
|
|
21
|
+
| Tab | Review | Explainer |
|
|
22
|
+
| -------- | ----------------------------------- | ------------------------------------------------------------ |
|
|
23
|
+
| Review | the walkthrough, with the delta | **Explainer**: the document, with coverage |
|
|
24
|
+
| Files | split diff of the changed files | absent |
|
|
25
|
+
| Commits | base..head | absent |
|
|
26
|
+
| Map | parts, marked added/changed/removed | parts at the pinned commit |
|
|
27
|
+
| Coverage | absent | **what the document reached, and what it did not** |
|
|
28
|
+
| Threads | ask, comment, decide | same, and the decision reads _Done reading_ / _Send it back_ |
|
|
29
|
+
|
|
30
|
+
## Which kind is this
|
|
23
31
|
|
|
24
32
|
Write an explainer when the request is about the code as it stands: "explain
|
|
25
33
|
this codebase", "how does the server work", "walk me through `src/graph`",
|
|
26
|
-
"I want to see the architecture".
|
|
27
|
-
|
|
34
|
+
"I want to see the architecture".
|
|
35
|
+
|
|
36
|
+
| The request is about | Kind | Skill |
|
|
37
|
+
| ------------------------------------------------------------- | ------------- | ----------------- |
|
|
38
|
+
| code that exists, explained - "how does this work" | **explainer** | this one |
|
|
39
|
+
| code that is written - a branch, a PR, a range | review | `thurview` |
|
|
40
|
+
| code that is **not written yet** - "how should we build this" | design | `thurview-design` |
|
|
28
41
|
|
|
29
42
|
If the request is a change, do not reach for an explainer because the change is
|
|
30
|
-
large. A large change is still a change.
|
|
43
|
+
large. A large change is still a change. An explanation with a recommendation
|
|
44
|
+
stapled on is an explainer that broke its own rule - see "Surface structure; do
|
|
45
|
+
not grade it" below, and write the design instead when the request is genuinely
|
|
46
|
+
"explain this, then propose a change".
|
|
47
|
+
|
|
48
|
+
## Request
|
|
49
|
+
|
|
50
|
+
$ARGUMENTS
|
|
51
|
+
|
|
52
|
+
A path scope narrows the explainer to one part of the system; with none it is
|
|
53
|
+
the whole repository.
|
|
54
|
+
|
|
55
|
+
## Before authoring
|
|
56
|
+
|
|
57
|
+
Read the guidance files that exist, in this order; the second wins on conflict.
|
|
58
|
+
|
|
59
|
+
1. `~/.thurview/THURVIEW.md` (or `$THURVIEW_HOME/THURVIEW.md`), user guidance.
|
|
60
|
+
2. `THURVIEW.md` at the repository root, repository guidance.
|
|
61
|
+
|
|
62
|
+
`thurview explain` lists the ones it found under `guidance`.
|
|
63
|
+
|
|
64
|
+
The `thurview` skill ships the references this one shares - document authoring,
|
|
65
|
+
components, software map, theme, lifecycle. `thurview skill` prints the path of
|
|
66
|
+
every bundled SKILL.md; the references sit beside each one. Read **Document
|
|
67
|
+
authoring** before you write `review.md`, **Components** before you edit
|
|
68
|
+
`data.yaml`, **Software map** before you author `map.yaml`, **Theme** before you
|
|
69
|
+
write `theme.yaml`, and **Lifecycle** for statuses, storage and thread rules -
|
|
70
|
+
they are identical for all three kinds.
|
|
71
|
+
|
|
72
|
+
Run the CLI as `thurview`; `npx -y thurview` runs the published package with
|
|
73
|
+
the same commands. Every command prints TOON on stdout - the result, then
|
|
74
|
+
`help[]` with the next commands. Errors are structured on stdout too (`error`,
|
|
75
|
+
`code`, `help`); exit 1 is a failure, 2 a usage error. If a command answers
|
|
76
|
+
`unknown command` for something this skill tells you to run, the installed CLI
|
|
77
|
+
is older than the skill: run `thurview update`, retry once, then report it.
|
|
31
78
|
|
|
32
79
|
## The document kind, in one command
|
|
33
80
|
|
|
@@ -59,7 +106,8 @@ So work in three layers, and let each carry what it is good at.
|
|
|
59
106
|
`thurview graph architecture --review <id>`: communities become nodes, their
|
|
60
107
|
files become the node's `files` globs, and the edges between communities
|
|
61
108
|
become edges. Every part of the scope should appear here, including the parts
|
|
62
|
-
the prose will not reach. See
|
|
109
|
+
the prose will not reach. See the `thurview` skill's Software map
|
|
110
|
+
reference for the shape.
|
|
63
111
|
2. **Subsystem — the prose carries depth.** Pick the parts that carry the most
|
|
64
112
|
structure and the most traffic, and explain those. Three to six sections.
|
|
65
113
|
Everything else stays on the map.
|
|
@@ -85,7 +133,7 @@ puts one of three states on it:
|
|
|
85
133
|
|
|
86
134
|
The counts go above the document and onto the Coverage tab, and `publish`
|
|
87
135
|
prints them with the files it did not examine. You cannot forget to state
|
|
88
|
-
coverage, and you cannot overstate it: to move a file out of
|
|
136
|
+
coverage, and you cannot overstate it: to move a file out of _not examined_ you
|
|
89
137
|
have to actually anchor it or actually place it on the map.
|
|
90
138
|
|
|
91
139
|
Two consequences worth planning for:
|
|
@@ -106,8 +154,8 @@ smaller than it is.
|
|
|
106
154
|
|
|
107
155
|
## Surface structure; do not grade it
|
|
108
156
|
|
|
109
|
-
thurview's thesis holds here:
|
|
110
|
-
you understand it fast enough to review it yourself
|
|
157
|
+
thurview's thesis holds here: _it does not review the code for you; it helps
|
|
158
|
+
you understand it fast enough to review it yourself._ An explainer exists so
|
|
111
159
|
the reader can **detect** design problems. That is only consistent with the
|
|
112
160
|
thesis if you surface structure and leave the conclusion to them.
|
|
113
161
|
|
|
@@ -145,17 +193,19 @@ the code" - not a finding.
|
|
|
145
193
|
`thurview graph callers <name>` and `tests-for <name>` answer the follow-ups.
|
|
146
194
|
`graph interfaces` and `graph impact` compare two commits and are refused.
|
|
147
195
|
3. Author `map.yaml` from the architecture output, covering the whole scope.
|
|
148
|
-
Dispatch a sub-agent for it if you have one, exactly as
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
196
|
+
Dispatch a sub-agent for it if you have one, exactly as the `thurview`
|
|
197
|
+
skill's review does.
|
|
198
|
+
4. Author `review.md` and `data.yaml` per **Document authoring**, minus the
|
|
199
|
+
interface-delta section: an explainer has none, and declaring
|
|
200
|
+
`interfaces` in `data.yaml` is an error. So is `security`, which is what a
|
|
201
|
+
change carries input across and an explainer has no change. So is
|
|
202
|
+
`graph: base` on an anchor - there is one commit.
|
|
203
|
+
5. `theme.yaml` as usual - see **Theme**.
|
|
154
204
|
6. `thurview publish --review <id>`. Read `coverage` and `notExamined`. If the
|
|
155
205
|
split is not the one you meant, anchor or place more and publish again.
|
|
156
206
|
7. `thurview open --review <id>`, then `thurview wait --review <id>`. The loop,
|
|
157
207
|
the statuses and the thread rules are identical to a review; see
|
|
158
|
-
|
|
208
|
+
**Lifecycle**.
|
|
159
209
|
|
|
160
210
|
## Hand over
|
|
161
211
|
|
|
@@ -164,3 +214,18 @@ words (including how many files were not examined), which parts you chose to
|
|
|
164
214
|
explain and on what basis, and that you are waiting for their questions. Do not
|
|
165
215
|
list the design problems you think you saw. The document is built so the reader
|
|
166
216
|
finds them.
|
|
217
|
+
|
|
218
|
+
## Completion criteria
|
|
219
|
+
|
|
220
|
+
Report completion only when all of these hold:
|
|
221
|
+
|
|
222
|
+
- The reader has the URL of a published revision.
|
|
223
|
+
- Every `error` diagnostic is resolved.
|
|
224
|
+
- The map is published, or you said why it is not - and the coverage split says
|
|
225
|
+
the same thing the document does.
|
|
226
|
+
- The explainer is waiting on the reader, accepted, closed, dismissed or
|
|
227
|
+
deleted.
|
|
228
|
+
|
|
229
|
+
Close with the decision and its summary (`wait.decision`) and the URL. When the
|
|
230
|
+
reader has not responded, say so and leave it open; a later session picks it up
|
|
231
|
+
from `thurview` in the same worktree.
|