@mrciphersmith/keryx 0.3.111 → 0.3.112
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 +41208 -40191
- package/dist/core.js +1633 -1433
- package/package.json +1 -1
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.detail.md +39 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-input.schema.json +7 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrciphersmith/keryx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.112",
|
|
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": {
|
|
@@ -689,3 +689,42 @@ Use it to understand:
|
|
|
689
689
|
- Architectural decisions already agreed upon, and acceptance criteria driving the Stage 1 spec compliance gate
|
|
690
690
|
|
|
691
691
|
If absent, proceed normally — context is optional and non-blocking.
|
|
692
|
+
|
|
693
|
+
## The mutation pass — `keryx review mutate`
|
|
694
|
+
|
|
695
|
+
Attended, the pass is not optional once mutants were proposed. The testing reviewer writes
|
|
696
|
+
each proposed mutant to `<review-dir>/research-evidence/mutants.json`:
|
|
697
|
+
`{ "mutants": [{ "id", "file", "anchor", "replacement" }] }`. `anchor` is exact text that
|
|
698
|
+
occurs once in `file`; `"runnable": false` at the top level says the suite cannot run here.
|
|
699
|
+
|
|
700
|
+
Run `keryx review mutate --test "<the nearest suite command>" --package <review-dir>`. It
|
|
701
|
+
applies each mutant in a scratch copy of the worktree (never in the worktree), refuses to
|
|
702
|
+
start when the baseline is red, and writes the table to `research-evidence/mutation-<n>.md`
|
|
703
|
+
and `.json`. A mutant is `killed` (the suite went red), `survived` (nothing pins that
|
|
704
|
+
behaviour), `timeout`, or `invalid` (anchor missing or not unique, file outside the copy).
|
|
705
|
+
A survivor is evidence for the finding that names it.
|
|
706
|
+
|
|
707
|
+
`keryx review complete` refuses while proposed mutants are unrun, unless
|
|
708
|
+
`dispatch.mutationWaiver = { operatorQuote, reason }` carries the operator's own words.
|
|
709
|
+
`keryx review run --autonomous` is unchanged: it records `Not run: mutation pass` as before.
|
|
710
|
+
|
|
711
|
+
### Severity audit — `keryx review severity-audit`
|
|
712
|
+
|
|
713
|
+
A reviewer that argues a finding from a mutant writes `mutant:<id>` in the finding's `evidence`.
|
|
714
|
+
After the mutation pass run `keryx review severity-audit --package <review-dir>`: a cited mutant
|
|
715
|
+
that survived on a file the review changed raises a minor finding to major and records
|
|
716
|
+
`severity_audit {from, to, evidence: "mutation-<n>.json#<id>"}`. A finding that cites a mutant no
|
|
717
|
+
run executed stays minor (a major is capped at minor) and gets the label `unproven`. The audit
|
|
718
|
+
never deletes a finding and never touches a blocker; it is a separate pass from the verifier,
|
|
719
|
+
which can only delete. `--dry-run` prints the changes without writing `findings.json`.
|
|
720
|
+
|
|
721
|
+
### Pull request context — `keryx review context-collect`
|
|
722
|
+
|
|
723
|
+
A pull-request review starts with `keryx review context-collect --repo <o/r> --pr <n> --package <review-dir>`.
|
|
724
|
+
It writes `pr-context.json` and `pr-context.md` into the package: every review comment in full (the
|
|
725
|
+
800-character cut applies only to a finding's `problem`), the round-1 intent (kept when a later round
|
|
726
|
+
collects a new head), the CI status (`--checks <file>` or `gh pr checks`; `unknown` when neither is
|
|
727
|
+
available) and the backend pins the pull request names (refs on lines that talk about the backend).
|
|
728
|
+
Set `pr_context` in every reviewer payload to the `.md` path; reviewers read it before the diff.
|
|
729
|
+
`keryx review dispatch-check --payload <file> --pr-context` refuses a payload without it
|
|
730
|
+
(`REVIEWER_INPUT_NO_PR_CONTEXT`).
|
|
@@ -1102,7 +1102,7 @@ whoever reads the merge commit a year later reads the body. When `review.jev.con
|
|
|
1102
1102
|
|
|
1103
1103
|
**Dispatch integrity is a completion prerequisite.** Use one distinct execution per selected reviewer role; do not combine multiple roles in one child or count sections of one response as independent runs. When budgets are tight, use sequential waves, not role batching. Resolve every project-rule anchor before dispatch; missing rules require context recovery or a blocked result, never silently skipped checks. A read-only pass cannot discharge executable obligations: dispatch a capable execution pass and retain its evidence. Partial scope and NEEDS_CONTEXT remain incomplete until rerun over the outstanding scope.
|
|
1104
1104
|
|
|
1105
|
-
**The reviewer set is not yours to shrink.** Run `keryx review required --mode all|diff --scope <scope.json>` (`all` for `--all`
|
|
1105
|
+
**The reviewer set is not yours to shrink.** Run `keryx review required --mode all|diff --scope <scope.json>` (`all` for a pull request, for `--all` and for no narrowing flag; `diff` only when the operator named a narrower mode — pass their words as `--operator-quote` and record them as `dispatch.operatorQuote`, without which the dispatch is refused), dispatch every reviewer it prints, and declare `mode` in `dispatch`; pass the same `--scope` to `keryx review start|ingest` so the package keeps the file list. Closure refuses a smaller set unless `dispatch.override = { operatorQuote, reason }` carries the operator's own words. New managed packages declare `reviewerDispatch: "research.json"`. Alongside the research ledger, provide `dispatch: { version: 1, mode: "all"|"diff", selected: [...], unresolvedRules: [], runs: [...] }`. Preserve the actual computed reviewer inventory. Each run has `reviewer`, unique `executionId`, `status: "complete"`, `scopeComplete: true`, `rawEvidence`, nonempty `ruleEvidence`, and boolean `executionRequired`. Required execution needs nonempty `executionEvidence` (command/output references); a source-only scope requires `executionReason`. Do not fabricate IDs or mark truncated responses complete. Runtime validates these declarations at closure and the flow gate, not their truth: independently audit evidence and inventory before freezing. Legacy artifact absence is compatibility, not proof of a correct launch. Research closure is mandatory: see [Runtime research-completion ledger](SKILL.detail.md#runtime-research-completion-ledger).
|
|
1106
1106
|
|
|
1107
1107
|
Dispatch selected reviewers in parallel when independent — this engine dispatches them itself (see "How to spawn"); a host without a dispatch tool returns `STATUS: BLOCKED` (`nested_dispatch_unavailable`) and never reviews alone — Preflight 1. Waves follow the diff domains in "Control" and keep their dependency order:
|
|
1108
1108
|
|
|
@@ -1124,7 +1124,7 @@ finding class is unreachable for the entire round, and no amount of verification
|
|
|
1124
1124
|
downstream recovers it. When a testing reviewer returns without a mutation table,
|
|
1125
1125
|
treat it the way you would treat a reviewer that returned without findings *and*
|
|
1126
1126
|
without evidence: ask once, then record that the pass did not run. Unattended: record
|
|
1127
|
-
`Not run: mutation pass` without asking.
|
|
1127
|
+
`Not run: mutation pass` without asking. Attended: run `keryx review mutate` ([The mutation pass](SKILL.detail.md#the-mutation-pass-keryx-review-mutate)).
|
|
1128
1128
|
|
|
1129
1129
|
### Wave C — verification, and what it replaced
|
|
1130
1130
|
|
|
@@ -160,6 +160,13 @@
|
|
|
160
160
|
"null"
|
|
161
161
|
]
|
|
162
162
|
},
|
|
163
|
+
"pr_context": {
|
|
164
|
+
"type": [
|
|
165
|
+
"string",
|
|
166
|
+
"null"
|
|
167
|
+
],
|
|
168
|
+
"description": "Path of the `pr-context.md` that `keryx review context-collect` wrote into the review package: every review comment in full, the round-1 intent, the CI status and the backend pins the pull request names. Required of a pull-request review by `keryx review dispatch-check --pr-context <package>`; a reviewer reads it before the diff."
|
|
169
|
+
},
|
|
163
170
|
"round": {
|
|
164
171
|
"type": "integer",
|
|
165
172
|
"minimum": 1,
|