@mrciphersmith/keryx 0.3.59 → 0.3.61
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 +3 -3
- package/dist/core.js +2 -2
- package/package.json +1 -1
- package/src/gdskills/bundled/skills/orchestration/flow-orchestrator/SKILL.md +9 -11
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json +1 -1
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -16229,7 +16229,7 @@ var init_skill_length_ceilings = __esm(() => {
|
|
|
16229
16229
|
"orchestration/context-collector": 671,
|
|
16230
16230
|
"orchestration/feature-analyzer": 447,
|
|
16231
16231
|
"orchestration/feature-dev": 177,
|
|
16232
|
-
"orchestration/flow-orchestrator":
|
|
16232
|
+
"orchestration/flow-orchestrator": 694,
|
|
16233
16233
|
"orchestration/issue-analyzer": 373,
|
|
16234
16234
|
"orchestration/job-documenter": 414,
|
|
16235
16235
|
"orchestration/job-orchestrator": 2243,
|
|
@@ -20104,7 +20104,7 @@ var package_default;
|
|
|
20104
20104
|
var init_package = __esm(() => {
|
|
20105
20105
|
package_default = {
|
|
20106
20106
|
name: "@mrciphersmith/keryx",
|
|
20107
|
-
version: "0.3.
|
|
20107
|
+
version: "0.3.61",
|
|
20108
20108
|
description: "Version-controlled project context for AI coding agents: code graph, architecture wiki, project memory, relevant tests, quality signals, and task flows.",
|
|
20109
20109
|
private: false,
|
|
20110
20110
|
publishConfig: {
|
|
@@ -56454,7 +56454,7 @@ async function reviewGate(input) {
|
|
|
56454
56454
|
const verdict = await runReviewGate(input);
|
|
56455
56455
|
return { name: "review", status: verdict.status, detail: verdict.detail };
|
|
56456
56456
|
}
|
|
56457
|
-
var BLOCKING_SEVERITY_FLOORS, REVIEW_GATE_SEVERITY_FLOOR_DEFAULT = "minor", REVIEW_ROUND_CAP =
|
|
56457
|
+
var BLOCKING_SEVERITY_FLOORS, REVIEW_GATE_SEVERITY_FLOOR_DEFAULT = "minor", REVIEW_ROUND_CAP = 5, REVIEW_GATE_CONFIG_PATH = ".metaproject/tasks.config.json", DEFAULT_REVIEW_GATE_CONFIG, SEVERITY_RANK2, SHA_PATTERN3, HUMAN_DECISION_PATTERN, CORRECT_BUT_DISMISSED, REPLY_EVIDENCE_PATTERN, durableExternalCommentsGate = async (input) => {
|
|
56458
56458
|
const url = input.flow.pr.url;
|
|
56459
56459
|
if (url === null) {
|
|
56460
56460
|
return null;
|
package/dist/core.js
CHANGED
|
@@ -9801,7 +9801,7 @@ var init_skill_length_ceilings = __esm(() => {
|
|
|
9801
9801
|
"orchestration/context-collector": 671,
|
|
9802
9802
|
"orchestration/feature-analyzer": 447,
|
|
9803
9803
|
"orchestration/feature-dev": 177,
|
|
9804
|
-
"orchestration/flow-orchestrator":
|
|
9804
|
+
"orchestration/flow-orchestrator": 694,
|
|
9805
9805
|
"orchestration/issue-analyzer": 373,
|
|
9806
9806
|
"orchestration/job-documenter": 414,
|
|
9807
9807
|
"orchestration/job-orchestrator": 2243,
|
|
@@ -24759,7 +24759,7 @@ function unansweredComments(state) {
|
|
|
24759
24759
|
// src/flow/review-gate.ts
|
|
24760
24760
|
var BLOCKING_SEVERITY_FLOORS = ["blocker", "major", "minor"];
|
|
24761
24761
|
var REVIEW_GATE_SEVERITY_FLOOR_DEFAULT = "minor";
|
|
24762
|
-
var REVIEW_ROUND_CAP =
|
|
24762
|
+
var REVIEW_ROUND_CAP = 5;
|
|
24763
24763
|
var REVIEW_GATE_CONFIG_PATH = ".metaproject/tasks.config.json";
|
|
24764
24764
|
var DEFAULT_REVIEW_GATE_CONFIG = {
|
|
24765
24765
|
severityFloor: REVIEW_GATE_SEVERITY_FLOOR_DEFAULT,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrciphersmith/keryx",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.61",
|
|
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": {
|
|
@@ -81,8 +81,8 @@ flowchart TD
|
|
|
81
81
|
H -- "yes" --> I{"Ask user how to finish"}
|
|
82
82
|
I -- "create PR" --> J["create PR and run review/fix loop"]
|
|
83
83
|
J --> K{"review clean, PR mergeable?"}
|
|
84
|
-
K -- "no, attempts <
|
|
85
|
-
K -- "no, attempts =
|
|
84
|
+
K -- "no, attempts < 5" --> J
|
|
85
|
+
K -- "no, attempts = 5 or repetition detected" --> R["enrich context and change fix strategy"]
|
|
86
86
|
R --> J
|
|
87
87
|
K -- "yes" --> L["merge PR into recorded base branch"]
|
|
88
88
|
L --> M["keryx flow implemented --pr"]
|
|
@@ -153,7 +153,7 @@ it already tried. The flow package does.
|
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
6. Apply the Phase 4 attempt budget against the **persisted** count. If
|
|
156
|
-
`attempts.count` for the task has already reached **
|
|
156
|
+
`attempts.count` for the task has already reached **five**, do not
|
|
157
157
|
re-dispatch the same approach: go to the re-planning step (Phase 4, PR
|
|
158
158
|
review/fix loop, step 4) and record the decision in `journal.md`.
|
|
159
159
|
7. Run the repetition check before spending an attempt, whatever the count
|
|
@@ -533,7 +533,7 @@ answered it and who is behind it.
|
|
|
533
533
|
| `completion: <anything>` as a constraint STRING | **Not an outcome. Refuse it and ask for the typed field.** `constraints[]` is parsed by nothing, so a completion arriving there is never read at all. Such a dispatch is now refused for the missing `completion_outcome` rather than silently accepted — but the refusal is the contract's, not this row's, and a row telling you to honour the string would be a documented bypass of the fence in the file that owns it. |
|
|
534
534
|
|
|
535
535
|
A constraint that would raise this skill's own attempt budget is **not** obeyed.
|
|
536
|
-
The
|
|
536
|
+
The five-attempt bound and the `keryx review loop` repetition check are this
|
|
537
537
|
skill's, they are evidence-backed, and a caller asking for "loop until clean" gets
|
|
538
538
|
the bound plus an escalation — never an unbounded loop.
|
|
539
539
|
|
|
@@ -551,23 +551,21 @@ the bound plus an escalation — never an unbounded loop.
|
|
|
551
551
|
remaining `info` findings in the completion report rather than fixing them
|
|
552
552
|
under a loop that was not opened for them. A caller may lower the threshold in
|
|
553
553
|
`constraints`; it cannot raise it to merge over a `minor`.
|
|
554
|
-
3. Allow at most **
|
|
554
|
+
3. Allow at most **five** review/fix attempts for the current approach. Count
|
|
555
555
|
an attempt when review/check results are available, including a clean result,
|
|
556
556
|
and record it with `keryx flow task attempt <id> <Tn> --outcome ...` so the
|
|
557
557
|
count survives a session restart. Read the budget from that task's
|
|
558
558
|
`attempts.count` in `flow.json`, never from this session's memory.
|
|
559
559
|
|
|
560
|
-
|
|
561
|
-
already use. This skill said six, which was an outlier with nothing behind
|
|
562
|
-
it. The evidence converges on three: *"the first three to four repair
|
|
560
|
+
Five here by operator decision (message 178020; review findings surface across rounds, and the repetition check below stops a loop that is not converging), three in `task-implementer` and `job-orchestrator`. This skill said six, an outlier with nothing behind it. The evidence for a repair loop converges on three: *"the first three to four repair
|
|
563
561
|
iterations account for most achievable gains"*
|
|
564
562
|
([arXiv:2607.05197](https://arxiv.org/abs/2607.05197)); correctness falls
|
|
565
563
|
**0.820 -> 0.673** across two forced revisions while cumulative ever-correct
|
|
566
564
|
is **0.847** ([arXiv:2607.24604](https://arxiv.org/abs/2607.24604)) — the
|
|
567
565
|
agent finds the fix and then destroys it, throwing away ~15 points by not
|
|
568
566
|
stopping. Aider hardcodes `max_reflections = 3`; OpenHands' critic uses 3.
|
|
569
|
-
Rounds four through six were not buying convergence; they
|
|
570
|
-
regressions.
|
|
567
|
+
Rounds four through six of a self-fix loop were not buying convergence; they
|
|
568
|
+
were buying regressions. Review rounds are the exception, as stated above.
|
|
571
569
|
|
|
572
570
|
4. **Before** spending an attempt, and regardless of how much budget is left,
|
|
573
571
|
run the repetition check:
|
|
@@ -583,7 +581,7 @@ the bound plus an escalation — never an unbounded loop.
|
|
|
583
581
|
emitting the identical failing output three times must be caught on the
|
|
584
582
|
second, not after the budget runs out.
|
|
585
583
|
|
|
586
|
-
5. If the
|
|
584
|
+
5. If the fifth attempt is not clean, **or the repetition check escalated
|
|
587
585
|
earlier**, do not blindly repeat the same loop. Enrich context from the
|
|
588
586
|
findings, affected graph, relevant wiki, and health/testing artifacts;
|
|
589
587
|
identify the likely cycle cause; choose a materially different fix strategy
|
|
@@ -1265,8 +1265,8 @@ with evidence, not silence.
|
|
|
1265
1265
|
|
|
1266
1266
|
Only runs if NEEDS_FIX is true. Default max: **3 iterations** (`max_review_iterations`).
|
|
1267
1267
|
|
|
1268
|
-
Three is the
|
|
1269
|
-
|
|
1268
|
+
Three is the self-fix bound `task-implementer` and this skill share
|
|
1269
|
+
(`flow-orchestrator`'s review bound is five, by operator decision). *"The first three to four repair iterations account for
|
|
1270
1270
|
most achievable gains"* ([arXiv:2607.05197](https://arxiv.org/abs/2607.05197));
|
|
1271
1271
|
correctness falls **0.820 -> 0.673** across two forced revisions while
|
|
1272
1272
|
cumulative ever-correct is **0.847**
|
package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json
CHANGED
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"minimum": 1,
|
|
107
107
|
"maximum": 3,
|
|
108
108
|
"default": 3,
|
|
109
|
-
"description": "Max review → fix iterations. Three: the same bound `task-implementer
|
|
109
|
+
"description": "Max review → fix iterations. Three: the same bound `task-implementer` and SKILL.md 2.7 carry (`flow-orchestrator`'s review bound is five, by operator decision), pinned by src/gdskills/round-bound.test.ts. The default was 2 here, which made the contract disagree with the skill it validates."
|
|
110
110
|
},
|
|
111
111
|
"plan_approval": {
|
|
112
112
|
"type": "boolean",
|
|
@@ -362,8 +362,8 @@ non-zero exit the signal; if tests were created or modified they must pass.
|
|
|
362
362
|
|
|
363
363
|
Maximum 3 self-fix attempts per verification step.
|
|
364
364
|
|
|
365
|
-
Three,
|
|
366
|
-
|
|
365
|
+
Three, the same three `job-orchestrator` uses; `flow-orchestrator`'s review
|
|
366
|
+
bound is five by operator decision, so two repair bounds, not four. *"The first three to four repair iterations
|
|
367
367
|
account for most achievable gains"*
|
|
368
368
|
([arXiv:2607.05197](https://arxiv.org/abs/2607.05197)); correctness falls
|
|
369
369
|
**0.820 -> 0.673** across two forced revisions while cumulative ever-correct is
|
package/src/gdskills/bundled/skills/orchestration/task-implementer/input-contract.schema.json
CHANGED
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"type": "integer",
|
|
189
189
|
"minimum": 1,
|
|
190
190
|
"maximum": 3,
|
|
191
|
-
"description": "Fix iteration number. Three, the same bound `
|
|
191
|
+
"description": "Fix iteration number. Three, the same bound `job-orchestrator` and SKILL.md Phase 5.4 carry and `src/gdskills/round-bound.test.ts` pins (`flow-orchestrator`'s review bound is five); it was 2 here, a fourth disagreeing repair bound."
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
},
|