@mrciphersmith/keryx 0.2.75 → 0.2.77
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 +15 -10
- package/dist/cli.js +11809 -9037
- package/dist/proxy-worker.js +12 -12
- package/package.json +1 -1
- package/src/gdgraph/build.ts +12 -0
- package/src/gdgraph/query.ts +51 -1
- package/src/gdgraph/types.ts +77 -0
- package/src/gdgraph/wiki-layer-no-git.test.ts +73 -0
- package/src/gdgraph/wiki-layer.test.ts +211 -0
- package/src/gdgraph/wiki-layer.ts +213 -0
- package/src/gdskills/bundled/rules/core/api-contracts.mdc +6 -4
- package/src/gdskills/bundled/rules/core/model-selection.mdc +4 -5
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.codex.md +4 -38
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.cursor.md +4 -38
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.md +4 -38
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.opencode.md +4 -38
- package/src/gdskills/bundled/skills/orchestration/feature-analyzer/SKILL.zed.md +4 -38
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.codex.md +1 -3
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.cursor.md +1 -3
- package/src/gdskills/bundled/skills/orchestration/feature-dev/SKILL.md +1 -3
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.codex.md +35 -34
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.cursor.md +35 -34
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.md +35 -34
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.opencode.md +35 -34
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/SKILL.zed.md +35 -34
- package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json +1 -1
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.codex.md +2 -4
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.cursor.md +2 -4
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.md +2 -4
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.opencode.md +2 -4
- package/src/gdskills/bundled/skills/orchestration/task-implementer/SKILL.zed.md +2 -4
- package/src/gdskills/bundled/skills/planning/autodoc-orchestrator/SKILL.md +10 -6
- package/src/gdskills/bundled/skills/planning/interview/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/interview/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.codex.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.cursor.md +1 -1
- package/src/gdskills/bundled/skills/planning/interviewer/SKILL.md +1 -1
- package/src/gdskills/bundled/skills/platform/agent-entrypoint-distiller/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/review/review-architecture/SKILL.md +1 -2
- package/src/gdskills/bundled/skills/review/review-backend/SKILL.md +2 -2
- package/src/gdskills/bundled/skills/review/review-clean-code/SKILL.md +1 -2
- package/src/gdskills/bundled/skills/review/review-core-boundaries/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/review/review-flow-graph/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/review/review-frontend-conventions/SKILL.md +4 -0
- package/src/gdskills/bundled/skills/review/review-highload/SKILL.md +1 -2
- package/src/gdskills/bundled/skills/review/review-orchestrator/SKILL.md +108 -23
- package/src/gdskills/bundled/skills/review/review-orchestrator/review-context.schema.json +175 -0
- package/src/gdskills/bundled/skills/review/review-orchestrator/reviewer-finding.schema.json +7 -0
- package/src/gdskills/bundled/skills/review/review-pr-feedback/SKILL.md +2 -3
- package/src/gdskills/bundled/skills/review/review-style/SKILL.md +2 -3
- package/src/gdskills/bundled/skills/review/review-testing-practices/SKILL.md +5 -0
- package/src/gdskills/bundled/skills/review/review-verifier/SKILL.md +1 -2
- package/src/gdskills/contracts/review-finding.schema.json +4 -0
|
@@ -474,7 +474,7 @@ FOR step in PLAN:
|
|
|
474
474
|
— that counter is the attempt budget, and it survives a session restart.
|
|
475
475
|
|
|
476
476
|
2.1.2 Execute step (see step-specific instructions below)
|
|
477
|
-
|
|
477
|
+
If the sub-agent returns a malformed result or fails to follow formatting rules, run an explicit retry:
|
|
478
478
|
"The previous output was malformed. Fix these errors: [errors] and try again." (Max 2 retries before counting as critical failure).
|
|
479
479
|
Re-open the step before each retry so the retry is counted.
|
|
480
480
|
|
|
@@ -728,7 +728,7 @@ keryx job step <job-name> prepare --status completed --reason "feature/<branch-s
|
|
|
728
728
|
|
|
729
729
|
### 2.5 Step: TESTS-CREATOR + IMPLEMENT
|
|
730
730
|
|
|
731
|
-
|
|
731
|
+
tests-creator runs before task-implementer for every task, with no exceptions.
|
|
732
732
|
|
|
733
733
|
There is no `wave-executor` agent. Each wave is two dispatches the orchestrator makes
|
|
734
734
|
itself — `tests-creator`, then `task-implementer` — and both are real, installed
|
|
@@ -1949,8 +1949,8 @@ What actually bounds this orchestrator:
|
|
|
1949
1949
|
| reviewer fan-out | 4 in flight | `keryx review budget --outstanding <n>` before every dispatch (2.6.1) |
|
|
1950
1950
|
| spend | 3 USD by default | `keryx review budget --spent <usd>` — a non-zero exit means stop and ask |
|
|
1951
1951
|
|
|
1952
|
-
Each of these is a number some command reads or writes. A guard
|
|
1953
|
-
observe is not a guard
|
|
1952
|
+
Each of these is a number some command reads or writes. A guard no command can
|
|
1953
|
+
observe is not a guard; this section lists only observable ones.
|
|
1954
1954
|
|
|
1955
1955
|
**Context passing rules (minimal context principle):**
|
|
1956
1956
|
- `issue-analyzer`: receives only issue data + codebase paths (NOT previous job state)
|
|
@@ -2053,36 +2053,37 @@ what to show a user who asks mid-run.
|
|
|
2053
2053
|
|
|
2054
2054
|
## Rules of Engagement
|
|
2055
2055
|
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2056
|
+
Everything this orchestrator does is described once, with its reason, in the
|
|
2057
|
+
section that owns it. This section is not a second copy of that. It carries the
|
|
2058
|
+
three rules stated nowhere else, and the four whose cost, when you get them
|
|
2059
|
+
wrong, cannot be undone by trying again.
|
|
2060
|
+
|
|
2061
|
+
### Stated only here
|
|
2062
|
+
|
|
2063
|
+
- **Do not ask the user anything between Phase 0 and completion.** Two
|
|
2064
|
+
exceptions: a critical failure, and a decision to extend the plan (analyze →
|
|
2065
|
+
implement). Everything else was settled in Phase 0, or is settled by the
|
|
2066
|
+
package rather than by asking.
|
|
2067
|
+
- **Do not push the branch until the user confirms**, unless `auto_create_pr` is
|
|
2068
|
+
set. A push is visible to everyone watching the repository, and there is no
|
|
2069
|
+
version of un-pushing it that they do not see.
|
|
2070
|
+
- **Say where the job package is when the job ends.** It is the only durable
|
|
2071
|
+
record of the run, and a user who cannot find it is left with nothing to read.
|
|
2072
|
+
|
|
2073
|
+
### Unrecoverable if wrong
|
|
2074
|
+
|
|
2075
|
+
- **Branch with `git worktree add`** — never `git checkout -b` or
|
|
2076
|
+
`git switch -c`. Those switch the main working directory out from under the
|
|
2077
|
+
user's own session, mid-run.
|
|
2078
|
+
- **Run every later command in the worktree directory**, not the project root.
|
|
2079
|
+
A build, test or commit that lands in the wrong tree is attributed to work
|
|
2080
|
+
nobody did.
|
|
2081
|
+
- **`keryx job` is the only writer of `state.json`**, this orchestrator
|
|
2082
|
+
included. It validates each write against the `job-orchestrator-state`
|
|
2083
|
+
contract; a hand-written file satisfies no contract, and the next session
|
|
2084
|
+
resumes into a state that never existed.
|
|
2085
|
+
- **Ask for the project directory in Phase 0.** There is no default. A wrong
|
|
2086
|
+
guess writes a job package into somebody else's repository.
|
|
2086
2087
|
|
|
2087
2088
|
---
|
|
2088
2089
|
|
|
@@ -474,7 +474,7 @@ FOR step in PLAN:
|
|
|
474
474
|
— that counter is the attempt budget, and it survives a session restart.
|
|
475
475
|
|
|
476
476
|
2.1.2 Execute step (see step-specific instructions below)
|
|
477
|
-
|
|
477
|
+
If the sub-agent returns a malformed result or fails to follow formatting rules, run an explicit retry:
|
|
478
478
|
"The previous output was malformed. Fix these errors: [errors] and try again." (Max 2 retries before counting as critical failure).
|
|
479
479
|
Re-open the step before each retry so the retry is counted.
|
|
480
480
|
|
|
@@ -728,7 +728,7 @@ keryx job step <job-name> prepare --status completed --reason "feature/<branch-s
|
|
|
728
728
|
|
|
729
729
|
### 2.5 Step: TESTS-CREATOR + IMPLEMENT
|
|
730
730
|
|
|
731
|
-
|
|
731
|
+
tests-creator runs before task-implementer for every task, with no exceptions.
|
|
732
732
|
|
|
733
733
|
There is no `wave-executor` agent. Each wave is two dispatches the orchestrator makes
|
|
734
734
|
itself — `tests-creator`, then `task-implementer` — and both are real, installed
|
|
@@ -1949,8 +1949,8 @@ What actually bounds this orchestrator:
|
|
|
1949
1949
|
| reviewer fan-out | 4 in flight | `keryx review budget --outstanding <n>` before every dispatch (2.6.1) |
|
|
1950
1950
|
| spend | 3 USD by default | `keryx review budget --spent <usd>` — a non-zero exit means stop and ask |
|
|
1951
1951
|
|
|
1952
|
-
Each of these is a number some command reads or writes. A guard
|
|
1953
|
-
observe is not a guard
|
|
1952
|
+
Each of these is a number some command reads or writes. A guard no command can
|
|
1953
|
+
observe is not a guard; this section lists only observable ones.
|
|
1954
1954
|
|
|
1955
1955
|
**Context passing rules (minimal context principle):**
|
|
1956
1956
|
- `issue-analyzer`: receives only issue data + codebase paths (NOT previous job state)
|
|
@@ -2053,36 +2053,37 @@ what to show a user who asks mid-run.
|
|
|
2053
2053
|
|
|
2054
2054
|
## Rules of Engagement
|
|
2055
2055
|
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2056
|
+
Everything this orchestrator does is described once, with its reason, in the
|
|
2057
|
+
section that owns it. This section is not a second copy of that. It carries the
|
|
2058
|
+
three rules stated nowhere else, and the four whose cost, when you get them
|
|
2059
|
+
wrong, cannot be undone by trying again.
|
|
2060
|
+
|
|
2061
|
+
### Stated only here
|
|
2062
|
+
|
|
2063
|
+
- **Do not ask the user anything between Phase 0 and completion.** Two
|
|
2064
|
+
exceptions: a critical failure, and a decision to extend the plan (analyze →
|
|
2065
|
+
implement). Everything else was settled in Phase 0, or is settled by the
|
|
2066
|
+
package rather than by asking.
|
|
2067
|
+
- **Do not push the branch until the user confirms**, unless `auto_create_pr` is
|
|
2068
|
+
set. A push is visible to everyone watching the repository, and there is no
|
|
2069
|
+
version of un-pushing it that they do not see.
|
|
2070
|
+
- **Say where the job package is when the job ends.** It is the only durable
|
|
2071
|
+
record of the run, and a user who cannot find it is left with nothing to read.
|
|
2072
|
+
|
|
2073
|
+
### Unrecoverable if wrong
|
|
2074
|
+
|
|
2075
|
+
- **Branch with `git worktree add`** — never `git checkout -b` or
|
|
2076
|
+
`git switch -c`. Those switch the main working directory out from under the
|
|
2077
|
+
user's own session, mid-run.
|
|
2078
|
+
- **Run every later command in the worktree directory**, not the project root.
|
|
2079
|
+
A build, test or commit that lands in the wrong tree is attributed to work
|
|
2080
|
+
nobody did.
|
|
2081
|
+
- **`keryx job` is the only writer of `state.json`**, this orchestrator
|
|
2082
|
+
included. It validates each write against the `job-orchestrator-state`
|
|
2083
|
+
contract; a hand-written file satisfies no contract, and the next session
|
|
2084
|
+
resumes into a state that never existed.
|
|
2085
|
+
- **Ask for the project directory in Phase 0.** There is no default. A wrong
|
|
2086
|
+
guess writes a job package into somebody else's repository.
|
|
2086
2087
|
|
|
2087
2088
|
---
|
|
2088
2089
|
|
|
@@ -474,7 +474,7 @@ FOR step in PLAN:
|
|
|
474
474
|
— that counter is the attempt budget, and it survives a session restart.
|
|
475
475
|
|
|
476
476
|
2.1.2 Execute step (see step-specific instructions below)
|
|
477
|
-
|
|
477
|
+
If the sub-agent returns a malformed result or fails to follow formatting rules, run an explicit retry:
|
|
478
478
|
"The previous output was malformed. Fix these errors: [errors] and try again." (Max 2 retries before counting as critical failure).
|
|
479
479
|
Re-open the step before each retry so the retry is counted.
|
|
480
480
|
|
|
@@ -728,7 +728,7 @@ keryx job step <job-name> prepare --status completed --reason "feature/<branch-s
|
|
|
728
728
|
|
|
729
729
|
### 2.5 Step: TESTS-CREATOR + IMPLEMENT
|
|
730
730
|
|
|
731
|
-
|
|
731
|
+
tests-creator runs before task-implementer for every task, with no exceptions.
|
|
732
732
|
|
|
733
733
|
There is no `wave-executor` agent. Each wave is two dispatches the orchestrator makes
|
|
734
734
|
itself — `tests-creator`, then `task-implementer` — and both are real, installed
|
|
@@ -1949,8 +1949,8 @@ What actually bounds this orchestrator:
|
|
|
1949
1949
|
| reviewer fan-out | 4 in flight | `keryx review budget --outstanding <n>` before every dispatch (2.6.1) |
|
|
1950
1950
|
| spend | 3 USD by default | `keryx review budget --spent <usd>` — a non-zero exit means stop and ask |
|
|
1951
1951
|
|
|
1952
|
-
Each of these is a number some command reads or writes. A guard
|
|
1953
|
-
observe is not a guard
|
|
1952
|
+
Each of these is a number some command reads or writes. A guard no command can
|
|
1953
|
+
observe is not a guard; this section lists only observable ones.
|
|
1954
1954
|
|
|
1955
1955
|
**Context passing rules (minimal context principle):**
|
|
1956
1956
|
- `issue-analyzer`: receives only issue data + codebase paths (NOT previous job state)
|
|
@@ -2053,36 +2053,37 @@ what to show a user who asks mid-run.
|
|
|
2053
2053
|
|
|
2054
2054
|
## Rules of Engagement
|
|
2055
2055
|
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2056
|
+
Everything this orchestrator does is described once, with its reason, in the
|
|
2057
|
+
section that owns it. This section is not a second copy of that. It carries the
|
|
2058
|
+
three rules stated nowhere else, and the four whose cost, when you get them
|
|
2059
|
+
wrong, cannot be undone by trying again.
|
|
2060
|
+
|
|
2061
|
+
### Stated only here
|
|
2062
|
+
|
|
2063
|
+
- **Do not ask the user anything between Phase 0 and completion.** Two
|
|
2064
|
+
exceptions: a critical failure, and a decision to extend the plan (analyze →
|
|
2065
|
+
implement). Everything else was settled in Phase 0, or is settled by the
|
|
2066
|
+
package rather than by asking.
|
|
2067
|
+
- **Do not push the branch until the user confirms**, unless `auto_create_pr` is
|
|
2068
|
+
set. A push is visible to everyone watching the repository, and there is no
|
|
2069
|
+
version of un-pushing it that they do not see.
|
|
2070
|
+
- **Say where the job package is when the job ends.** It is the only durable
|
|
2071
|
+
record of the run, and a user who cannot find it is left with nothing to read.
|
|
2072
|
+
|
|
2073
|
+
### Unrecoverable if wrong
|
|
2074
|
+
|
|
2075
|
+
- **Branch with `git worktree add`** — never `git checkout -b` or
|
|
2076
|
+
`git switch -c`. Those switch the main working directory out from under the
|
|
2077
|
+
user's own session, mid-run.
|
|
2078
|
+
- **Run every later command in the worktree directory**, not the project root.
|
|
2079
|
+
A build, test or commit that lands in the wrong tree is attributed to work
|
|
2080
|
+
nobody did.
|
|
2081
|
+
- **`keryx job` is the only writer of `state.json`**, this orchestrator
|
|
2082
|
+
included. It validates each write against the `job-orchestrator-state`
|
|
2083
|
+
contract; a hand-written file satisfies no contract, and the next session
|
|
2084
|
+
resumes into a state that never existed.
|
|
2085
|
+
- **Ask for the project directory in Phase 0.** There is no default. A wrong
|
|
2086
|
+
guess writes a job package into somebody else's repository.
|
|
2086
2087
|
|
|
2087
2088
|
---
|
|
2088
2089
|
|
|
@@ -474,7 +474,7 @@ FOR step in PLAN:
|
|
|
474
474
|
— that counter is the attempt budget, and it survives a session restart.
|
|
475
475
|
|
|
476
476
|
2.1.2 Execute step (see step-specific instructions below)
|
|
477
|
-
|
|
477
|
+
If the sub-agent returns a malformed result or fails to follow formatting rules, run an explicit retry:
|
|
478
478
|
"The previous output was malformed. Fix these errors: [errors] and try again." (Max 2 retries before counting as critical failure).
|
|
479
479
|
Re-open the step before each retry so the retry is counted.
|
|
480
480
|
|
|
@@ -728,7 +728,7 @@ keryx job step <job-name> prepare --status completed --reason "feature/<branch-s
|
|
|
728
728
|
|
|
729
729
|
### 2.5 Step: TESTS-CREATOR + IMPLEMENT
|
|
730
730
|
|
|
731
|
-
|
|
731
|
+
tests-creator runs before task-implementer for every task, with no exceptions.
|
|
732
732
|
|
|
733
733
|
There is no `wave-executor` agent. Each wave is two dispatches the orchestrator makes
|
|
734
734
|
itself — `tests-creator`, then `task-implementer` — and both are real, installed
|
|
@@ -1949,8 +1949,8 @@ What actually bounds this orchestrator:
|
|
|
1949
1949
|
| reviewer fan-out | 4 in flight | `keryx review budget --outstanding <n>` before every dispatch (2.6.1) |
|
|
1950
1950
|
| spend | 3 USD by default | `keryx review budget --spent <usd>` — a non-zero exit means stop and ask |
|
|
1951
1951
|
|
|
1952
|
-
Each of these is a number some command reads or writes. A guard
|
|
1953
|
-
observe is not a guard
|
|
1952
|
+
Each of these is a number some command reads or writes. A guard no command can
|
|
1953
|
+
observe is not a guard; this section lists only observable ones.
|
|
1954
1954
|
|
|
1955
1955
|
**Context passing rules (minimal context principle):**
|
|
1956
1956
|
- `issue-analyzer`: receives only issue data + codebase paths (NOT previous job state)
|
|
@@ -2053,36 +2053,37 @@ what to show a user who asks mid-run.
|
|
|
2053
2053
|
|
|
2054
2054
|
## Rules of Engagement
|
|
2055
2055
|
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2056
|
+
Everything this orchestrator does is described once, with its reason, in the
|
|
2057
|
+
section that owns it. This section is not a second copy of that. It carries the
|
|
2058
|
+
three rules stated nowhere else, and the four whose cost, when you get them
|
|
2059
|
+
wrong, cannot be undone by trying again.
|
|
2060
|
+
|
|
2061
|
+
### Stated only here
|
|
2062
|
+
|
|
2063
|
+
- **Do not ask the user anything between Phase 0 and completion.** Two
|
|
2064
|
+
exceptions: a critical failure, and a decision to extend the plan (analyze →
|
|
2065
|
+
implement). Everything else was settled in Phase 0, or is settled by the
|
|
2066
|
+
package rather than by asking.
|
|
2067
|
+
- **Do not push the branch until the user confirms**, unless `auto_create_pr` is
|
|
2068
|
+
set. A push is visible to everyone watching the repository, and there is no
|
|
2069
|
+
version of un-pushing it that they do not see.
|
|
2070
|
+
- **Say where the job package is when the job ends.** It is the only durable
|
|
2071
|
+
record of the run, and a user who cannot find it is left with nothing to read.
|
|
2072
|
+
|
|
2073
|
+
### Unrecoverable if wrong
|
|
2074
|
+
|
|
2075
|
+
- **Branch with `git worktree add`** — never `git checkout -b` or
|
|
2076
|
+
`git switch -c`. Those switch the main working directory out from under the
|
|
2077
|
+
user's own session, mid-run.
|
|
2078
|
+
- **Run every later command in the worktree directory**, not the project root.
|
|
2079
|
+
A build, test or commit that lands in the wrong tree is attributed to work
|
|
2080
|
+
nobody did.
|
|
2081
|
+
- **`keryx job` is the only writer of `state.json`**, this orchestrator
|
|
2082
|
+
included. It validates each write against the `job-orchestrator-state`
|
|
2083
|
+
contract; a hand-written file satisfies no contract, and the next session
|
|
2084
|
+
resumes into a state that never existed.
|
|
2085
|
+
- **Ask for the project directory in Phase 0.** There is no default. A wrong
|
|
2086
|
+
guess writes a job package into somebody else's repository.
|
|
2086
2087
|
|
|
2087
2088
|
---
|
|
2088
2089
|
|
|
@@ -474,7 +474,7 @@ FOR step in PLAN:
|
|
|
474
474
|
— that counter is the attempt budget, and it survives a session restart.
|
|
475
475
|
|
|
476
476
|
2.1.2 Execute step (see step-specific instructions below)
|
|
477
|
-
|
|
477
|
+
If the sub-agent returns a malformed result or fails to follow formatting rules, run an explicit retry:
|
|
478
478
|
"The previous output was malformed. Fix these errors: [errors] and try again." (Max 2 retries before counting as critical failure).
|
|
479
479
|
Re-open the step before each retry so the retry is counted.
|
|
480
480
|
|
|
@@ -728,7 +728,7 @@ keryx job step <job-name> prepare --status completed --reason "feature/<branch-s
|
|
|
728
728
|
|
|
729
729
|
### 2.5 Step: TESTS-CREATOR + IMPLEMENT
|
|
730
730
|
|
|
731
|
-
|
|
731
|
+
tests-creator runs before task-implementer for every task, with no exceptions.
|
|
732
732
|
|
|
733
733
|
There is no `wave-executor` agent. Each wave is two dispatches the orchestrator makes
|
|
734
734
|
itself — `tests-creator`, then `task-implementer` — and both are real, installed
|
|
@@ -1949,8 +1949,8 @@ What actually bounds this orchestrator:
|
|
|
1949
1949
|
| reviewer fan-out | 4 in flight | `keryx review budget --outstanding <n>` before every dispatch (2.6.1) |
|
|
1950
1950
|
| spend | 3 USD by default | `keryx review budget --spent <usd>` — a non-zero exit means stop and ask |
|
|
1951
1951
|
|
|
1952
|
-
Each of these is a number some command reads or writes. A guard
|
|
1953
|
-
observe is not a guard
|
|
1952
|
+
Each of these is a number some command reads or writes. A guard no command can
|
|
1953
|
+
observe is not a guard; this section lists only observable ones.
|
|
1954
1954
|
|
|
1955
1955
|
**Context passing rules (minimal context principle):**
|
|
1956
1956
|
- `issue-analyzer`: receives only issue data + codebase paths (NOT previous job state)
|
|
@@ -2053,36 +2053,37 @@ what to show a user who asks mid-run.
|
|
|
2053
2053
|
|
|
2054
2054
|
## Rules of Engagement
|
|
2055
2055
|
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2056
|
+
Everything this orchestrator does is described once, with its reason, in the
|
|
2057
|
+
section that owns it. This section is not a second copy of that. It carries the
|
|
2058
|
+
three rules stated nowhere else, and the four whose cost, when you get them
|
|
2059
|
+
wrong, cannot be undone by trying again.
|
|
2060
|
+
|
|
2061
|
+
### Stated only here
|
|
2062
|
+
|
|
2063
|
+
- **Do not ask the user anything between Phase 0 and completion.** Two
|
|
2064
|
+
exceptions: a critical failure, and a decision to extend the plan (analyze →
|
|
2065
|
+
implement). Everything else was settled in Phase 0, or is settled by the
|
|
2066
|
+
package rather than by asking.
|
|
2067
|
+
- **Do not push the branch until the user confirms**, unless `auto_create_pr` is
|
|
2068
|
+
set. A push is visible to everyone watching the repository, and there is no
|
|
2069
|
+
version of un-pushing it that they do not see.
|
|
2070
|
+
- **Say where the job package is when the job ends.** It is the only durable
|
|
2071
|
+
record of the run, and a user who cannot find it is left with nothing to read.
|
|
2072
|
+
|
|
2073
|
+
### Unrecoverable if wrong
|
|
2074
|
+
|
|
2075
|
+
- **Branch with `git worktree add`** — never `git checkout -b` or
|
|
2076
|
+
`git switch -c`. Those switch the main working directory out from under the
|
|
2077
|
+
user's own session, mid-run.
|
|
2078
|
+
- **Run every later command in the worktree directory**, not the project root.
|
|
2079
|
+
A build, test or commit that lands in the wrong tree is attributed to work
|
|
2080
|
+
nobody did.
|
|
2081
|
+
- **`keryx job` is the only writer of `state.json`**, this orchestrator
|
|
2082
|
+
included. It validates each write against the `job-orchestrator-state`
|
|
2083
|
+
contract; a hand-written file satisfies no contract, and the next session
|
|
2084
|
+
resumes into a state that never existed.
|
|
2085
|
+
- **Ask for the project directory in Phase 0.** There is no default. A wrong
|
|
2086
|
+
guess writes a job package into somebody else's repository.
|
|
2086
2087
|
|
|
2087
2088
|
---
|
|
2088
2089
|
|
package/src/gdskills/bundled/skills/orchestration/job-orchestrator/input-contract.schema.json
CHANGED
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
},
|
|
67
67
|
"base_branch": {
|
|
68
68
|
"type": "string",
|
|
69
|
-
"description": "Base branch to create the feature branch from. NO DEFAULT, deliberately: SKILL.md 0.2 auto-detects the repository's own default branch and asks the operator to confirm it.
|
|
69
|
+
"description": "Base branch to create the feature branch from. NO DEFAULT, deliberately: SKILL.md 0.2 auto-detects the repository's own default branch and asks the operator to confirm it. Any value shipped here would be silently inherited by a caller that omits the field, and a branch name is never portable between projects."
|
|
70
70
|
},
|
|
71
71
|
"additional_codebases": {
|
|
72
72
|
"type": "array",
|
|
@@ -534,10 +534,8 @@ second copy of a schema is how that happens.
|
|
|
534
534
|
9. **DO** verify your work before reporting.
|
|
535
535
|
10. **DO** make `STATUS: <TOKEN>` the first line of your final message, and put no
|
|
536
536
|
JSON in the response body. The full JSON result is the file Phase 6.1 writes
|
|
537
|
-
and records.
|
|
538
|
-
|
|
539
|
-
Results`, and `parseChildResult`, the production function that throws on any
|
|
540
|
-
first line that is not a canonical STATUS token.)
|
|
537
|
+
and records. `parseChildResult` throws on any first line that is not a
|
|
538
|
+
canonical STATUS token.
|
|
541
539
|
|
|
542
540
|
---
|
|
543
541
|
|
|
@@ -534,10 +534,8 @@ second copy of a schema is how that happens.
|
|
|
534
534
|
9. **DO** verify your work before reporting.
|
|
535
535
|
10. **DO** make `STATUS: <TOKEN>` the first line of your final message, and put no
|
|
536
536
|
JSON in the response body. The full JSON result is the file Phase 6.1 writes
|
|
537
|
-
and records.
|
|
538
|
-
|
|
539
|
-
Results`, and `parseChildResult`, the production function that throws on any
|
|
540
|
-
first line that is not a canonical STATUS token.)
|
|
537
|
+
and records. `parseChildResult` throws on any first line that is not a
|
|
538
|
+
canonical STATUS token.
|
|
541
539
|
|
|
542
540
|
---
|
|
543
541
|
|
|
@@ -534,10 +534,8 @@ second copy of a schema is how that happens.
|
|
|
534
534
|
9. **DO** verify your work before reporting.
|
|
535
535
|
10. **DO** make `STATUS: <TOKEN>` the first line of your final message, and put no
|
|
536
536
|
JSON in the response body. The full JSON result is the file Phase 6.1 writes
|
|
537
|
-
and records.
|
|
538
|
-
|
|
539
|
-
Results`, and `parseChildResult`, the production function that throws on any
|
|
540
|
-
first line that is not a canonical STATUS token.)
|
|
537
|
+
and records. `parseChildResult` throws on any first line that is not a
|
|
538
|
+
canonical STATUS token.
|
|
541
539
|
|
|
542
540
|
---
|
|
543
541
|
|