@mrciphersmith/keryx 0.3.113 → 0.3.115
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 -0
- package/dist/cli.js +414 -143
- package/dist/core.js +3 -1
- package/package.json +1 -1
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +8 -8
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +13 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/templates/review-report.md +22 -0
package/dist/core.js
CHANGED
|
@@ -28739,10 +28739,12 @@ function researchErrors(value, findings) {
|
|
|
28739
28739
|
ids.add(id);
|
|
28740
28740
|
if (!nonempty(o.source) || !nonempty(o.question))
|
|
28741
28741
|
errors.push(`${id}: source and question are required`);
|
|
28742
|
-
if (!["finding", "refuted", "out-of-scope"].includes(String(o.status)))
|
|
28742
|
+
if (!["finding", "refuted", "out-of-scope", "narrowed"].includes(String(o.status)))
|
|
28743
28743
|
errors.push(`${id}: unresolved research (${String(o.status)})`);
|
|
28744
28744
|
if (!nonempty(o.evidence) || !nonempty(o.reason))
|
|
28745
28745
|
errors.push(`${id}: closure needs evidence and reason`);
|
|
28746
|
+
if (o.status === "narrowed" && !nonempty(o.remains))
|
|
28747
|
+
errors.push(`${id}: narrowed needs a "what remains" text`);
|
|
28746
28748
|
if (o.status === "finding") {
|
|
28747
28749
|
const matches = findings.filter((f) => f && typeof f === "object" && (f.id === o.finding || f.global_id === o.finding));
|
|
28748
28750
|
if (!nonempty(o.finding) || matches.length !== 1)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrciphersmith/keryx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.115",
|
|
4
4
|
"description": "Version-controlled project context for AI coding agents: code graph, architecture wiki, project memory, relevant tests, quality signals, and task flows.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -207,8 +207,7 @@ keryx review complete <review-id-or-path>
|
|
|
207
207
|
[--finding <id> --disposition <state> --evidence <ref>]...
|
|
208
208
|
```
|
|
209
209
|
|
|
210
|
-
**An unrecognised option is refused, not ignored** — a misspelled flag exits
|
|
211
|
-
non-zero rather than printing `status: closed` and writing nothing at all.
|
|
210
|
+
**An unrecognised option is refused, not ignored** — a misspelled flag exits non-zero rather than printing `status: closed` and writing nothing at all.
|
|
212
211
|
|
|
213
212
|
`--verifications` takes what `review-verifier` returned. `--scope` takes the
|
|
214
213
|
whole `--json` output of `keryx review scope`, so the package records what the
|
|
@@ -234,9 +233,7 @@ Two channels, and both work:
|
|
|
234
233
|
it: it is copied into the package it screened and removed from the slot, so a
|
|
235
234
|
later round cannot be screened against a set nobody recomputed.
|
|
236
235
|
|
|
237
|
-
Do **not** write the record inside the package directory before the ingest. A
|
|
238
|
-
round that names no `--review-id` has not allocated that directory yet, and
|
|
239
|
-
creating it makes the ingest take the next free name instead.
|
|
236
|
+
Do **not** write the record inside the package directory before the ingest. A round that names no `--review-id` has not allocated that directory yet, and creating it makes the ingest take the next free name instead.
|
|
240
237
|
|
|
241
238
|
`--refuted` takes the findings this round **raised and then dismissed**, in the
|
|
242
239
|
same finding shape, each carrying `disposition: {state, evidence}` with one of
|
|
@@ -252,9 +249,12 @@ Everything except `unknown` must cite where the outcome is written down — the
|
|
|
252
249
|
commit, the test, the decision. A recorded state and its citation cannot be
|
|
253
250
|
overwritten by a later close; record a correction as a new round.
|
|
254
251
|
|
|
255
|
-
|
|
256
|
-
`
|
|
257
|
-
|
|
252
|
+
`review complete` on a PR-bound package refuses a merged PR or a moved head unless `report.md`'s first line names the reviewed SHA and says so; a package with no PR binding is unaffected.
|
|
253
|
+
`review complete` refuses a report with no `Evidence level:` line (`static only — did not run: <what>` or `ran — <what>`); a package ingested before the field existed only warns.
|
|
254
|
+
`review ingest` refuses an internal finding whose `quote` is not at its `path` at the reviewed SHA, and adds a `citation not found` line, never a deletion, to a rebuttal citing a rule or document that is not in the tree.
|
|
255
|
+
A finding may close as `narrowed` (research obligation `"status":"narrowed","remains":"<what remains>"`); it counts as closed only with that text, and the report keeps it under "Refuted and narrowed".
|
|
256
|
+
|
|
257
|
+
**Closing a fix round without dispositions leaves every finding reading `unknown`.** That is not "the reviewers were right"; it is "nobody wrote down what happened", and it is the single reason the precision figure cannot be read.
|
|
258
258
|
|
|
259
259
|
Managed modes:
|
|
260
260
|
|
|
@@ -259,6 +259,19 @@
|
|
|
259
259
|
},
|
|
260
260
|
"additionalProperties": false
|
|
261
261
|
}
|
|
262
|
+
},
|
|
263
|
+
"unavailable": {
|
|
264
|
+
"type": "array",
|
|
265
|
+
"description": "Sections that could not be read, with the reason. An empty section that is not listed here was read and held nothing.",
|
|
266
|
+
"items": {
|
|
267
|
+
"type": "object",
|
|
268
|
+
"required": ["section", "reason"],
|
|
269
|
+
"properties": {
|
|
270
|
+
"section": { "enum": ["affected", "wiki", "memory"] },
|
|
271
|
+
"reason": { "type": "string" }
|
|
272
|
+
},
|
|
273
|
+
"additionalProperties": false
|
|
274
|
+
}
|
|
262
275
|
}
|
|
263
276
|
},
|
|
264
277
|
"additionalProperties": false
|
|
@@ -34,8 +34,10 @@ what a reader must act on; everything else is folded.
|
|
|
34
34
|
|
|
35
35
|
```markdown
|
|
36
36
|
<!-- slot:pre-verdict -->
|
|
37
|
+
<only when the PR merged or its head moved: "Reviewed `<sha>` — the PR has since merged / moved on to `<new sha>`." as the very first line>
|
|
37
38
|
**Changes requested — 1 Blocker, 2 Major, 4 Minor, 1 question.** <what holds, and where the risk is — one sentence.>
|
|
38
39
|
Reviewed `<head>` against `<base>` · round N · <files> files, +<add>/−<del> · CI <green | red: check names>.
|
|
40
|
+
Evidence level: <static only — did not run: tests, build | ran — the commands that ran>
|
|
39
41
|
<!-- slot:after-verdict -->
|
|
40
42
|
|
|
41
43
|
### Prior findings (fix rounds only)
|
|
@@ -43,6 +45,7 @@ Reviewed `<head>` against `<base>` · round N · <files> files, +<add>/−<del>
|
|
|
43
45
|
### Major
|
|
44
46
|
### Minor
|
|
45
47
|
### Questions
|
|
48
|
+
### Refuted and narrowed (only when a finding was dismissed or narrowed)
|
|
46
49
|
|
|
47
50
|
<details><summary><b>Pre-existing (not blocking)</b></summary> … </details>
|
|
48
51
|
<details><summary><b>Scope</b></summary> … </details> (only when a pr-process note exists)
|
|
@@ -68,6 +71,25 @@ author answer, rendered under Questions, not as a finding.
|
|
|
68
71
|
The second line is the context line: head, base, round, size, CI. If head moved
|
|
69
72
|
during the round, add `· unchecked: <commits>`.
|
|
70
73
|
|
|
74
|
+
The third line is the **evidence level** and is required: `Evidence level: static
|
|
75
|
+
only — did not run: <what>` when nothing was executed, or `Evidence level: ran —
|
|
76
|
+
<what ran>`. `keryx review complete` refuses a report without it.
|
|
77
|
+
|
|
78
|
+
When the PR was merged or its head moved after the review, the report's first line
|
|
79
|
+
says so and names the reviewed SHA, or `keryx review complete` refuses.
|
|
80
|
+
|
|
81
|
+
### Refuted and narrowed
|
|
82
|
+
|
|
83
|
+
One line per finding that did not stand as reported, kept with its evidence so a
|
|
84
|
+
reader sees what was claimed and why it was set aside:
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
- **F-007. Dismissed** — <the author's rebuttal, quoted>. <citation not found: …> where the cited rule is not in the tree.
|
|
88
|
+
- **F-009. Narrowed** — <what the finding claimed>. **Remains:** <what is still open>. Evidence: <what was run>.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
A narrowed finding counts as closed only with its "Remains" text.
|
|
92
|
+
|
|
71
93
|
## One finding
|
|
72
94
|
|
|
73
95
|
Blocker and Major as a paragraph, visible:
|