thurview 0.6.0 → 0.7.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 +4 -3
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/ui/app.css +98 -5
- package/dist/ui/app.js +270 -143
- package/dist/ui/app.js.map +4 -4
- package/package.json +1 -1
- package/skills/thurview/SKILL.md +12 -4
- package/skills/thurview/references/software-map.md +71 -10
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thurview",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.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
|
@@ -150,11 +150,18 @@ reader who wanted them would have run those instead.
|
|
|
150
150
|
Read every range you anchor from the pinned commit, not the working tree:
|
|
151
151
|
`git show <head>:<path>` or `git show <base>:<path>`.
|
|
152
152
|
|
|
153
|
-
### 4.
|
|
153
|
+
### 4. Decide on the map, then start it
|
|
154
154
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
the
|
|
155
|
+
The Map tab answers where the change landed in the system and what sits next
|
|
156
|
+
to it. A change that lands in one place does not raise that question: leave
|
|
157
|
+
`nodes: []`, say why in the handover, and go to step 5. A change that crosses a
|
|
158
|
+
boundary, adds or removes a part, or reaches code the diff does not show, does:
|
|
159
|
+
map it. [Software map](references/software-map.md) makes that call in full, and
|
|
160
|
+
a map that earns nothing is worse for the reader than none.
|
|
161
|
+
|
|
162
|
+
When it earns its place, dispatch one sub-agent to write `map.yaml` per that
|
|
163
|
+
reference now, so it works while you write the document, with this prompt
|
|
164
|
+
filled in:
|
|
158
165
|
|
|
159
166
|
```text
|
|
160
167
|
Use the thurview skill's software-map reference (`thurview skill` prints the
|
|
@@ -226,6 +233,7 @@ Tell the user, in a few lines and nothing more:
|
|
|
226
233
|
- the interface delta `verdict`, in its own words
|
|
227
234
|
- which theme source you used: the user's request, the project's design
|
|
228
235
|
system (name the files), or the default skin
|
|
236
|
+
- when the review has no map, why not, in one clause
|
|
229
237
|
- that you are now waiting for their questions and their decision
|
|
230
238
|
|
|
231
239
|
The page explains its own controls; do not describe them.
|
|
@@ -1,8 +1,66 @@
|
|
|
1
1
|
# Software map
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
## What it is for
|
|
4
|
+
|
|
5
|
+
The Files tab already answers *which lines changed*. The map answers the one
|
|
6
|
+
question no other tab does: **where the change landed in the system, and what
|
|
7
|
+
sits next to it.** A reader opens it to find out which parts the diff touched,
|
|
8
|
+
what those parts connect to, and therefore what could break that the diff
|
|
9
|
+
never mentions — and where to start reading.
|
|
10
|
+
|
|
11
|
+
That makes the map a reviewing instrument, not a picture of the architecture.
|
|
12
|
+
The Map tab reads it that way: parts the change touched are drawn before the
|
|
13
|
+
parts it did not, a part carrying changed files says how many, links into a
|
|
14
|
+
changed part are marked as the seams where two sides can fall out of step, and
|
|
15
|
+
the reader is offered one part to start at. A node that answers none of *where
|
|
16
|
+
did the change land*, *what does it sit next to*, *where do I start* does not
|
|
17
|
+
sit there harmlessly — it makes the ones that do harder to find.
|
|
18
|
+
|
|
19
|
+
Write it, then read it as the reader: does it send someone to the part of the
|
|
20
|
+
change that needs attention faster than scrolling the diff would? If not,
|
|
21
|
+
either cut nodes until it does, or ship no map at all.
|
|
22
|
+
|
|
23
|
+
## When to ship without a map
|
|
24
|
+
|
|
25
|
+
`nodes: []` is a real answer, not a gap. A map that adds nothing costs the
|
|
26
|
+
reader a tab they open, learn nothing from, and distrust on the next review.
|
|
27
|
+
An absent one costs nothing.
|
|
28
|
+
|
|
29
|
+
Ship without a map when:
|
|
30
|
+
|
|
31
|
+
- The change lands in one place and stays there. The Files tab already says
|
|
32
|
+
where it is; a map would only restate it with rounded corners.
|
|
33
|
+
- Every part you could name is a file the diff already lists. The map would be
|
|
34
|
+
the Files tab with fewer details.
|
|
35
|
+
- The repository has no structure worth naming at review scale — a handful of
|
|
36
|
+
modules with no boundary between them.
|
|
37
|
+
|
|
38
|
+
Author one when:
|
|
39
|
+
|
|
40
|
+
- The change crosses a boundary: one part now calls, stores or serves
|
|
41
|
+
something another part owns.
|
|
42
|
+
- It adds or removes a part, so the shape of the system is different after it.
|
|
43
|
+
- What the change touches is used by code the diff does not show, and the
|
|
44
|
+
reader has to know what that is before judging it.
|
|
45
|
+
- The review is an architecture review. There the map is the subject, not the
|
|
46
|
+
orientation for one.
|
|
47
|
+
|
|
48
|
+
When you skip it, say so in the handover, with the reason, in one line. Silence
|
|
49
|
+
reads as an oversight.
|
|
50
|
+
|
|
51
|
+
## What to model
|
|
52
|
+
|
|
53
|
+
Model the people, systems, containers, components and code elements a reader
|
|
54
|
+
must hold in mind to judge **this** change. Do not model incidental
|
|
55
|
+
implementation detail, and do not aim for completeness: an exhaustive map and
|
|
56
|
+
no map cost the reader about the same. For a large repository, keep the top
|
|
57
|
+
level small and put detail one level down, so the first screen is a short list
|
|
58
|
+
of places the change could be.
|
|
59
|
+
|
|
60
|
+
## Schema
|
|
61
|
+
|
|
62
|
+
`map.yaml` describes the repository structure at head, and optionally at base,
|
|
63
|
+
as nested nodes.
|
|
6
64
|
|
|
7
65
|
```yaml
|
|
8
66
|
nodes:
|
|
@@ -25,17 +83,20 @@ Rules:
|
|
|
25
83
|
`app.cli`). Identity is the id; keep ids stable between base and head.
|
|
26
84
|
- `kind`: `person`, `system`, `container`, `component`, `code`.
|
|
27
85
|
- `files`: globs relative to the repository root (`*`, `**`, `?`). They link
|
|
28
|
-
the node to changed files in the Files tab
|
|
29
|
-
|
|
30
|
-
|
|
86
|
+
the node to changed files in the Files tab, and they are what makes a node
|
|
87
|
+
say how much of the change it holds. A glob matching nothing at the pinned
|
|
88
|
+
commit is a warning.
|
|
89
|
+
- `anchor`: an anchor id from `data.yaml` that opens representative code. Give
|
|
90
|
+
one to every node the change touched; it is the shortest path from the map
|
|
91
|
+
to the code.
|
|
31
92
|
- Edges reference node ids. Labels are short verbs.
|
|
32
93
|
|
|
33
|
-
|
|
34
|
-
elements. Do not model incidental implementation detail. For a large
|
|
35
|
-
repository, keep the top level small and put detail one level down.
|
|
94
|
+
## Base and head
|
|
36
95
|
|
|
37
96
|
Work base first, then apply only the structural changes of the diff to get
|
|
38
|
-
head.
|
|
97
|
+
head. That is what lets the tab say *added*, *removed* and *changed* rather
|
|
98
|
+
than *touched*, and those three words are most of what a reader takes from the
|
|
99
|
+
map. Without `base`, nodes touched by the diff show as changed and nothing
|
|
39
100
|
shows as added or removed.
|
|
40
101
|
|
|
41
102
|
`thurview publish` validates the map with the document; map errors block
|