@mrciphersmith/keryx 0.3.86 → 0.3.88
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/dist/cli.js +1807 -703
- package/dist/core.js +5 -1
- package/package.json +1 -1
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.detail.md +16 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +14 -15
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +9 -1
package/dist/core.js
CHANGED
|
@@ -10852,7 +10852,7 @@ var init_skill_length_ceilings = __esm(() => {
|
|
|
10852
10852
|
"review/review-jev-scenarios": 187,
|
|
10853
10853
|
"review/review-layout": 238,
|
|
10854
10854
|
"review/review-logic": 377,
|
|
10855
|
-
"review/review-orchestrator":
|
|
10855
|
+
"review/review-orchestrator": 1614,
|
|
10856
10856
|
"review/review-performance": 374,
|
|
10857
10857
|
"review/review-pr-feedback": 895,
|
|
10858
10858
|
"review/review-regression": 216,
|
|
@@ -25505,6 +25505,10 @@ function dispatchErrors(value) {
|
|
|
25505
25505
|
errors.push(`${role}: missing or shared execution identity`);
|
|
25506
25506
|
if (text(run.executionId))
|
|
25507
25507
|
executions.add(run.executionId);
|
|
25508
|
+
if (run.status === "not-run") {
|
|
25509
|
+
errors.push(`${role}: not run${text(run.notRunReason) ? ` (${run.notRunReason})` : ""}; a reviewer that did not run is never a clean pass`);
|
|
25510
|
+
continue;
|
|
25511
|
+
}
|
|
25508
25512
|
if (run.status !== "complete" || run.scopeComplete !== true)
|
|
25509
25513
|
errors.push(`${role}: reviewer scope is incomplete`);
|
|
25510
25514
|
if (!text(run.rawEvidence))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrciphersmith/keryx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.88",
|
|
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": {
|
|
@@ -657,3 +657,19 @@ State what made the original claim wrong, in one sentence, and if the same
|
|
|
657
657
|
reasoning error has now happened twice in one review, say that too. A reviewer
|
|
658
658
|
that names its own recurring error is calibrating; one that quietly drops a
|
|
659
659
|
finding is hiding a result.
|
|
660
|
+
|
|
661
|
+
## Job Context Awareness
|
|
662
|
+
|
|
663
|
+
When dispatched by `job-orchestrator` or called with an explicit context path, the prompt MAY include:
|
|
664
|
+
|
|
665
|
+
```
|
|
666
|
+
JOB_NAME: <job-name>
|
|
667
|
+
CONTEXT_PATH: .metaproject/jobs/<job-name>/ai/context.md
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
If provided and the file exists, read the context document **before** running scope detection.
|
|
671
|
+
Use it to understand:
|
|
672
|
+
- Intentionally chosen libraries and patterns (do not flag as issues)
|
|
673
|
+
- Architectural decisions already agreed upon, and acceptance criteria driving the Stage 1 spec compliance gate
|
|
674
|
+
|
|
675
|
+
If absent, proceed normally — context is optional and non-blocking.
|
|
@@ -13,7 +13,7 @@ triggers:
|
|
|
13
13
|
- "review --legacy-profiles"
|
|
14
14
|
metadata:
|
|
15
15
|
author: "MrCipherSmith"
|
|
16
|
-
version: "1.
|
|
16
|
+
version: "1.11.0"
|
|
17
17
|
category: "review"
|
|
18
18
|
compatible_harnesses: "cursor,codex,zed,opencode,claude"
|
|
19
19
|
license: "MIT"
|
|
@@ -40,7 +40,7 @@ Review Orchestrator Progress:
|
|
|
40
40
|
- [ ] Step 3: Build the bounded scope with `keryx review scope` — never by hand
|
|
41
41
|
- [ ] Step 3b: On a deep round, compute scope B with `keryx review blast-radius` — never by browsing — and KEEP the `--json` file; `review ingest --blast-radius <file>` is refused without it
|
|
42
42
|
- [ ] Step 4: Parse flags / auto-detect domain from scope
|
|
43
|
-
- [ ] Step 5: Start questions, once, after Steps 1 and 3 — reviewers (default `--all`), counterpart verification (default on), model plan; unattended takes the defaults (SKILL.detail.md § "Start questions"; legacy/profile reviewers stay flag-only)
|
|
43
|
+
- [ ] Step 5: Start questions, once, after Steps 1 and 3 — reviewers (default `--all`), counterpart verification (default on), model plan; unattended — and an `auto` or `trust` shell session, which has no operator at the keyboard — takes the defaults (SKILL.detail.md § "Start questions"; legacy/profile reviewers stay flag-only)
|
|
44
44
|
- [ ] Step 5c: When `review.jev.select` is on, run `keryx review jev-select` over the finalized candidate set and drop its `skip` decisions from Wave A/B — see "Reviewer selection with Jev"
|
|
45
45
|
- [ ] Step 6: Plan sub-agent dispatch and token budgets; compute each dispatch's model with `keryx review tier` (6a: publish this plan)
|
|
46
46
|
- [ ] Step 7: Stage 1 gate - spec compliance check (if issue/task provided)
|
|
@@ -77,6 +77,17 @@ Publish this checklist with `plan_set` under the ids `step-0`…`step-14` once,
|
|
|
77
77
|
- A reply is a result only if it starts with a `STATUS:` line and carries a `REVIEW_RESULT` block matching `reviewer-finding.schema.json`; anything else is `BLOCKED`.
|
|
78
78
|
- The model comes from `keryx review tier` (Step 6).
|
|
79
79
|
|
|
80
|
+
## Shell host (keryx shell, or any host with no file-reading subagent) — mandatory
|
|
81
|
+
|
|
82
|
+
A reviewer on this host cannot open a path: its file tool reads inside its working directory only, and a pointer it cannot follow becomes a round spent on a refusal. So the pointer rule above does not apply; the TEXT travels in the prompt, in slices small enough to finish.
|
|
83
|
+
|
|
84
|
+
1. **Slice first.** `keryx review slice --ref <base> --out <dir>` after `keryx review scope`. It writes `slice-NN.diff` files of at most 150000 bytes each and a `manifest.json`; ledgers (csv, lockfiles, snapshots, generated files) are listed under `omissions` with a reason — list them in the report as not reviewed, never as clean.
|
|
85
|
+
2. **Slices travel by `context_files`.** Write the slices under the project (the default `--out`, `.metaproject/data/review/slices`, already is) and pass each reviewer its slice paths in `spawn_subagent`'s `context_files`: the host copies the text into that reviewer's task, so you never paste or retype a slice. Put the `slices` ids in its reviewer-input. A dispatch that names a git range but no slice and no `context_files` leaves the reviewer with nothing to read — that is `BLOCKED`, not a review.
|
|
86
|
+
3. **Check before dispatch.** `keryx review dispatch-check --payload <file> --manifest <dir>/manifest.json` for the wave; exit 1 means a payload names no slice, is over the ceiling, or breaks `reviewer-input.schema.json`. Fix it; do not dispatch around it.
|
|
87
|
+
4. **One batch.** Dispatch the whole wave — up to 10 reviewers — in one message, not one at a time. Give each reviewer `max_rounds` of at least 40 (the default); a reviewer that spends its rounds reading the skill and the schema returns nothing.
|
|
88
|
+
5. **Incomplete means retry once, then Not run.** On `INCOMPLETE` or `BLOCKED`, `keryx review retry-plan --manifest <dir>/manifest.json --result <result.json>` decides: it cuts the assigned slices in half and names the one retry, and after that prints the `- **Not run:** …` line to paste into the report. An unfinished reviewer is never counted as a clean pass.
|
|
89
|
+
6. **Machine artifacts by direct write.** Save slices, payloads and results by redirection or `keryx ctx run --raw -- <command>`; the summarized form of `keryx ctx run` drops the bytes a later step parses.
|
|
90
|
+
|
|
80
91
|
## Control
|
|
81
92
|
|
|
82
93
|
- **Profiles.** The default is read-only: one round, no edits. `--fix` hands the findings to `flow-orchestrator` or `task-implementer`; the orchestrator never edits code. Control returns to this main session after each hand-off, which loads this skill again (never the implementer, which would nest); each re-review counts toward the ceiling (it adds 1 to the count).
|
|
@@ -1568,19 +1579,7 @@ and name unchecked commits. Do not duplicate findings; cite extended ones.
|
|
|
1568
1579
|
|
|
1569
1580
|
## Job Context Awareness
|
|
1570
1581
|
|
|
1571
|
-
When
|
|
1572
|
-
|
|
1573
|
-
```
|
|
1574
|
-
JOB_NAME: <job-name>
|
|
1575
|
-
CONTEXT_PATH: .metaproject/jobs/<job-name>/ai/context.md
|
|
1576
|
-
```
|
|
1577
|
-
|
|
1578
|
-
If provided and the file exists, read the context document **before** running scope detection.
|
|
1579
|
-
Use it to understand:
|
|
1580
|
-
- Intentionally chosen libraries and patterns (do not flag as issues)
|
|
1581
|
-
- Architectural decisions already agreed upon, and acceptance criteria driving the Stage 1 spec compliance gate
|
|
1582
|
-
|
|
1583
|
-
If absent, proceed normally — context is optional and non-blocking.
|
|
1582
|
+
When a prompt carries `JOB_NAME` and `CONTEXT_PATH`, read that context document before scope detection (`SKILL.detail.md` § "Job Context Awareness"). It is optional and non-blocking.
|
|
1584
1583
|
|
|
1585
1584
|
---
|
|
1586
1585
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"string",
|
|
23
23
|
"null"
|
|
24
24
|
],
|
|
25
|
-
"description": "Absolute path of the reviewer's registered `<path>/SKILL.md`, set for every reviewer from the `project` half of `keryx review reviewers --json` and omitted for a bundled one. The file is the reviewer's definition: it overrides the built-in definition of a same-named agent type, whichever runtime branch dispatches it. A path that does not exist makes the reviewer BLOCKED, never substituted. Optional
|
|
25
|
+
"description": "Absolute path of the reviewer's registered `<path>/SKILL.md`, set for every reviewer from the `project` half of `keryx review reviewers --json` and omitted for a bundled one. The file is the reviewer's definition: it overrides the built-in definition of a same-named agent type, whichever runtime branch dispatches it. A path that does not exist makes the reviewer BLOCKED, never substituted. Optional. `keryx review dispatch-check --payload <file>` validates a payload against this schema and refuses a `diff` scope that names no slice or whose assigned bytes exceed the ceiling."
|
|
26
26
|
},
|
|
27
27
|
"scope_mode": {
|
|
28
28
|
"type": "string",
|
|
@@ -31,6 +31,14 @@
|
|
|
31
31
|
"path"
|
|
32
32
|
]
|
|
33
33
|
},
|
|
34
|
+
"slices": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"description": "Slice ids (or manifest-relative paths) from `keryx review slice` that this reviewer is assigned. A `diff` scope names its slices here or carries a `diff` that fits the slice ceiling; `keryx review dispatch-check` refuses a payload that does neither.",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"minLength": 1
|
|
40
|
+
}
|
|
41
|
+
},
|
|
34
42
|
"context_doc": {
|
|
35
43
|
"type": [
|
|
36
44
|
"string",
|