okstra 0.215.0 → 0.217.0
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/commands/pr/pr.d.mts +5 -1
- package/dist/commands/pr/pr.mjs +40 -14
- package/dist/commands/pr/pr.mjs.map +1 -1
- package/docs/cli.md +4 -4
- package/docs/pr-template-usage.md +2 -1
- package/docs/project-structure-overview.md +1 -1
- package/package.json +1 -1
- package/runtime/BUILD.json +2 -2
- package/runtime/python/okstra_ctl/adapters/providers/antigravity/adapter.py +4 -0
- package/runtime/python/okstra_ctl/adapters/providers/claude/adapter.py +4 -11
- package/runtime/python/okstra_ctl/phases/release_handoff/profile.md +6 -6
- package/runtime/python/okstra_ctl/phases/release_handoff/spec.md +1 -1
- package/runtime/python/okstra_ctl/render_final_report.py +1 -1
- package/runtime/python/okstra_token_usage/pricing.py +2 -0
- package/runtime/skills/okstra-pr-gen/SKILL.md +8 -44
- package/runtime/templates/pr/drafting-rules.md +32 -0
- package/runtime/templates/pr/pr-body.template.md +6 -11
- package/dist/commands/pr/default.md +0 -21
|
@@ -11,11 +11,13 @@ interface CommitSummary {
|
|
|
11
11
|
}
|
|
12
12
|
interface GenerationBundle {
|
|
13
13
|
readonly base: string;
|
|
14
|
+
readonly head: string;
|
|
14
15
|
readonly currentBranch: string | null;
|
|
15
16
|
readonly templateName: string;
|
|
16
17
|
readonly template: string;
|
|
17
18
|
readonly commits: readonly CommitSummary[];
|
|
18
19
|
readonly diffStat: string;
|
|
20
|
+
readonly draftingRules: string;
|
|
19
21
|
}
|
|
20
22
|
export declare function isValidTemplateName(name: string): boolean;
|
|
21
23
|
export declare function templateDir(home: string): string;
|
|
@@ -23,11 +25,13 @@ export declare function listTemplates(home: string): Promise<string[]>;
|
|
|
23
25
|
export declare function readTemplate(home: string, name: string | undefined): Promise<string>;
|
|
24
26
|
export declare function addTemplate(home: string, name: string, content: string, opts?: TemplateOptions): Promise<string>;
|
|
25
27
|
export declare function recommendBranches(cwd: string): BranchRecommendation;
|
|
26
|
-
export declare function buildGenBundle({ cwd, home, base, templateName, }: {
|
|
28
|
+
export declare function buildGenBundle({ cwd, home, base, head, templateName, templateFile, }: {
|
|
27
29
|
readonly cwd: string;
|
|
28
30
|
readonly home: string;
|
|
29
31
|
readonly base: string;
|
|
32
|
+
readonly head?: string;
|
|
30
33
|
readonly templateName: string | undefined;
|
|
34
|
+
readonly templateFile?: string | undefined;
|
|
31
35
|
}): Promise<GenerationBundle>;
|
|
32
36
|
export declare function renderGenerationBundle(bundle: GenerationBundle): string;
|
|
33
37
|
export declare function run(args: readonly string[]): Promise<number>;
|
package/dist/commands/pr/pr.mjs
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { promises as fs } from "node:fs";
|
|
2
2
|
import { execFileSync } from "node:child_process";
|
|
3
|
-
import {
|
|
4
|
-
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
import { join, resolve } from "node:path";
|
|
5
4
|
import { createInterface } from "node:readline/promises";
|
|
6
5
|
import { stdin as input, stdout as output } from "node:process";
|
|
7
6
|
import { resolveOkstraHome } from "../../lib/paths.mjs";
|
|
7
|
+
import { getPackageRoot } from "../../lib/version.mjs";
|
|
8
8
|
const NAME_RE = /^[A-Za-z0-9._-]+$/;
|
|
9
|
-
|
|
9
|
+
// release-handoff resolves the installed copy of this same file as its default, so both callers
|
|
10
|
+
// fill one template and follow one set of drafting rules.
|
|
11
|
+
const PR_TEMPLATE_DIR = join(getPackageRoot(), "runtime", "templates", "pr");
|
|
12
|
+
const DEFAULT_TEMPLATE_PATH = join(PR_TEMPLATE_DIR, "pr-body.template.md");
|
|
13
|
+
const DRAFTING_RULES_PATH = join(PR_TEMPLATE_DIR, "drafting-rules.md");
|
|
10
14
|
const USAGE = `okstra pr — PR body templates and PR generation
|
|
11
15
|
|
|
12
16
|
Usage:
|
|
@@ -15,7 +19,7 @@ Usage:
|
|
|
15
19
|
okstra pr template add --name <name> (--content <text> | --file <path>) [--yes]
|
|
16
20
|
okstra pr template path
|
|
17
21
|
okstra pr branches [--json]
|
|
18
|
-
okstra pr gen --base <ref> [--template <name|default>] [--json]
|
|
22
|
+
okstra pr gen --base <ref> [--head <ref>] [--template <name|default> | --template-file <path>] [--json]
|
|
19
23
|
`;
|
|
20
24
|
export function isValidTemplateName(name) {
|
|
21
25
|
return (typeof name === "string" &&
|
|
@@ -219,15 +223,18 @@ function cmdBranches(args, cwd) {
|
|
|
219
223
|
output.write((r.recommended.join("\n") || "(no branches)") + "\n");
|
|
220
224
|
return 0;
|
|
221
225
|
}
|
|
222
|
-
export async function buildGenBundle({ cwd, home, base, templateName, }) {
|
|
226
|
+
export async function buildGenBundle({ cwd, home, base, head = "HEAD", templateName, templateFile, }) {
|
|
223
227
|
if (!base)
|
|
224
228
|
throw new Error("gen requires --base");
|
|
225
229
|
const verified = tryGit(cwd, ["rev-parse", "--verify", "--quiet", `${base}^{commit}`]);
|
|
226
230
|
if (verified === null)
|
|
227
231
|
throw new Error(`base ref not found: ${base}`);
|
|
232
|
+
if (tryGit(cwd, ["rev-parse", "--verify", "--quiet", `${head}^{commit}`]) === null) {
|
|
233
|
+
throw new Error(`head ref not found: ${head}`);
|
|
234
|
+
}
|
|
228
235
|
const currentBranch = tryGit(cwd, ["rev-parse", "--abbrev-ref", "HEAD"]);
|
|
229
236
|
const logRaw = tryGit(cwd, [
|
|
230
|
-
"log", "--reverse", "--format=%h%x09%s", `${base}
|
|
237
|
+
"log", "--reverse", "--format=%h%x09%s", `${base}..${head}`,
|
|
231
238
|
]) || "";
|
|
232
239
|
const commits = logRaw
|
|
233
240
|
.split("\n")
|
|
@@ -236,12 +243,17 @@ export async function buildGenBundle({ cwd, home, base, templateName, }) {
|
|
|
236
243
|
const tab = line.indexOf("\t");
|
|
237
244
|
return { hash: line.slice(0, tab), subject: line.slice(tab + 1) };
|
|
238
245
|
});
|
|
239
|
-
const diffStat = tryGit(cwd, ["diff", "--stat", `${base}
|
|
240
|
-
const template =
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
246
|
+
const diffStat = tryGit(cwd, ["diff", "--stat", `${base}...${head}`]) || "";
|
|
247
|
+
const template = templateFile
|
|
248
|
+
? await fs.readFile(resolve(cwd, templateFile), "utf8")
|
|
249
|
+
: await readTemplate(home, templateName);
|
|
250
|
+
const resolvedName = templateFile
|
|
251
|
+
? resolve(cwd, templateFile)
|
|
252
|
+
: templateName && templateName !== "default" ? templateName : "default";
|
|
253
|
+
const draftingRules = await fs.readFile(DRAFTING_RULES_PATH, "utf8");
|
|
254
|
+
return {
|
|
255
|
+
base, head, currentBranch, templateName: resolvedName, template, commits, diffStat, draftingRules,
|
|
256
|
+
};
|
|
245
257
|
}
|
|
246
258
|
export function renderGenerationBundle(bundle) {
|
|
247
259
|
const commits = bundle.commits.length
|
|
@@ -250,6 +262,7 @@ export function renderGenerationBundle(bundle) {
|
|
|
250
262
|
return [
|
|
251
263
|
"Okstra PR generation",
|
|
252
264
|
`Base: ${bundle.base}`,
|
|
265
|
+
`Head: ${bundle.head}`,
|
|
253
266
|
`Current branch: ${bundle.currentBranch ?? "-"}`,
|
|
254
267
|
`Template name: ${bundle.templateName}`,
|
|
255
268
|
"Commits:",
|
|
@@ -258,20 +271,28 @@ export function renderGenerationBundle(bundle) {
|
|
|
258
271
|
bundle.diffStat || "-",
|
|
259
272
|
"Template:",
|
|
260
273
|
bundle.template,
|
|
274
|
+
"Drafting rules:",
|
|
275
|
+
bundle.draftingRules,
|
|
261
276
|
].join("\n");
|
|
262
277
|
}
|
|
263
278
|
async function cmdGen(args, cwd, home) {
|
|
264
279
|
const opts = {
|
|
265
280
|
base: null,
|
|
266
|
-
|
|
281
|
+
head: "HEAD",
|
|
282
|
+
template: null,
|
|
283
|
+
templateFile: null,
|
|
267
284
|
};
|
|
268
285
|
const json = args.includes("--json");
|
|
269
286
|
for (let i = 0; i < args.length; i++) {
|
|
270
287
|
const flag = args[i];
|
|
271
288
|
if (flag === "--base")
|
|
272
289
|
opts.base = takeValue(args, i++, flag);
|
|
290
|
+
else if (flag === "--head")
|
|
291
|
+
opts.head = takeValue(args, i++, flag);
|
|
273
292
|
else if (flag === "--template")
|
|
274
293
|
opts.template = takeValue(args, i++, flag);
|
|
294
|
+
else if (flag === "--template-file")
|
|
295
|
+
opts.templateFile = takeValue(args, i++, flag);
|
|
275
296
|
else if (flag === "--json")
|
|
276
297
|
continue;
|
|
277
298
|
else
|
|
@@ -279,11 +300,16 @@ async function cmdGen(args, cwd, home) {
|
|
|
279
300
|
}
|
|
280
301
|
if (opts.base === null)
|
|
281
302
|
throw new Error("gen requires --base");
|
|
303
|
+
if (opts.template !== null && opts.templateFile !== null) {
|
|
304
|
+
throw new Error("gen takes --template or --template-file, not both");
|
|
305
|
+
}
|
|
282
306
|
const bundle = await buildGenBundle({
|
|
283
307
|
cwd,
|
|
284
308
|
home,
|
|
285
309
|
base: opts.base,
|
|
286
|
-
|
|
310
|
+
head: opts.head,
|
|
311
|
+
templateName: opts.template ?? "default",
|
|
312
|
+
templateFile: opts.templateFile ?? undefined,
|
|
287
313
|
});
|
|
288
314
|
output.write(json ? JSON.stringify(bundle) + "\n" : renderGenerationBundle(bundle));
|
|
289
315
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr.mjs","sourceRoot":"","sources":["../../../src/commands/pr/pr.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pr.mjs","sourceRoot":"","sources":["../../../src/commands/pr/pr.mts"],"names":[],"mappings":"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"}
|
package/docs/cli.md
CHANGED
|
@@ -498,13 +498,13 @@ Then `okstra worker-dispatch --project-root <dir> --run-manifest <run-manifest>
|
|
|
498
498
|
The Codex worker (`--role-model analyser=codex/<model>`, `--codex-model`) and Codex lead runtime are separate. The former creates a worker assignment whose runner depends on the host; the latter selects Codex as the native lead boundary. On Claude Code the Codex worker uses a CLI wrapper, while on Codex it uses the host-native worker/session primitive.
|
|
499
499
|
|
|
500
500
|
> Every `--*-model` flag accepts only aliases registered in the provider mappings in `scripts/okstra_ctl/models.py`. An unregistered value is immediately rejected with `UnknownModelError`, preventing a contract violation where the manifest's `modelExecutionValue` differs from the actual execution value. Allowed values:
|
|
501
|
-
> - Claude (`--lead-model` / `--claude-model` / `--report-writer-model`): `fable`, `fable-5-1`, `claude-fable-5-1`, `fable-5`, `claude-fable-5`, `opus`, `opus-5`, `claude-opus-5`, `sonnet`, `sonnet-5`, `claude-sonnet-5`, `haiku`, `haiku-
|
|
501
|
+
> - Claude (`--lead-model` / `--claude-model` / `--report-writer-model`): `fable`, `fable-5-1`, `claude-fable-5-1`, `fable-5`, `claude-fable-5`, `opus`, `opus-5`, `claude-opus-5`, `sonnet`, `sonnet-5`, `claude-sonnet-5`, `haiku`, `haiku-5-5`, `claude-haiku-5-5`
|
|
502
502
|
> - Codex (`--codex-model`): `gpt-6-astra`, `gpt-6.1-sol`, `gpt-6-luna`. The bundled default is `gpt-6.1-sol`, which okstra runs at `high` reasoning effort (`-c model_reasoning_effort=high`, overriding `~/.codex/config.toml`) for both workers and a launched lead. GPT-6 Sol, GPT-5.6 Sol, Terra, and Luna, `gpt-5.4-mini`, and `codex-auto-review` remain in the catalog for historical records but are not selectable. When the CLI model cache matches the running CLI version, dispatch rejects identifiers absent from that catalog rather than renaming them. A missing or mismatched cache leaves availability enforcement to the provider CLI; model selection does not guarantee account access.
|
|
503
|
-
> - Antigravity (`--antigravity-model`): `gemini-3.1-pro` (default), `gemini-3.8-flash`, and their space-separated aliases. The antigravity worker uses the `agy` CLI to run Gemini-family models, so model IDs retain the `gemini-*` form.
|
|
503
|
+
> - Antigravity (`--antigravity-model`): `gemini-3.1-pro` (default), `gemini-4-argon`, `gemini-3.8-flash`, and their space-separated aliases. The antigravity worker uses the `agy` CLI to run Gemini-family models, so model IDs retain the `gemini-*` form.
|
|
504
504
|
> - Grok (`--worker-model grok=<model>`): `grok-4.7`
|
|
505
505
|
> - Kimi (`--worker-model kimi=<model>`): `kimi-k3`, `k3`, `k3-256k` and their registered display aliases
|
|
506
506
|
>
|
|
507
|
-
> Not every registered alias is offered for selection. A model whose `ModelSpec` sets `selectable=False` stays in the catalog — so served-model attestation and historical pricing still resolve it — but it is hidden from the wizard's role-model picker, from `okstra model list`, and from `--role-model`. `okstra model list` still prints them, marked `selectable: no` with the reason. Currently hidden: `claude/fable-5-1`, `claude/fable-5`, `claude/opus-5`, `claude/sonnet-5`, `claude/haiku-
|
|
507
|
+
> Not every registered alias is offered for selection. A model whose `ModelSpec` sets `selectable=False` stays in the catalog — so served-model attestation and historical pricing still resolve it — but it is hidden from the wizard's role-model picker, from `okstra model list`, and from `--role-model`. `okstra model list` still prints them, marked `selectable: no` with the reason. Currently hidden: `claude/fable-5-1`, `claude/fable-5`, `claude/opus-5`, `claude/sonnet-5`, `claude/haiku-5-5` (each one the pinned twin of a channel entry that already appears; `claude/fable-5` is the previous served id, kept for attestation and pricing), `kimi/k3` (same model as `kimi/kimi-k3`), `codex/gpt-5.4-mini`, `codex/codex-auto-review`, `grok/grok-build-0.1`, `kimi/k3-256k`.
|
|
508
508
|
|
|
509
509
|
### `--role-count`
|
|
510
510
|
|
|
@@ -883,7 +883,7 @@ The `okstra` Node CLI (`bin/okstra`) provides both installer/admin commands and
|
|
|
883
883
|
| `okstra recap <assemble\|record\|note> (<task-root\|task-key> \| --task-group <group>) …` | Backend for the okstra-inspect `recap` facet. `assemble` is read-only: for a task it prints a JSON summary of phase transitions across its runs; with `--task-group` it prints the group's start order (briefs in ordinal order, each `done` / `in progress` / `not started` from the catalog's task-manifests, memory entries only for tasks the catalog does not know) and every recorded task's latest conclusion from `group-context.md`'s Task Memory. `okstra model-io recap-input --task-group <group>` is the fixed-text projection of the same join. `record --kind <summary\|qa> --mode <artifact\|code> --answer <text> [--question <text>] [--citation <path:line> …]` appends one line to `<task-root>/recap/recap-log.jsonl`, or with `--task-group` to `.okstra/tasks/<group>/.recap/recap-log.jsonl`, and never mutates other artifacts. `note` is task-only. `note --kind <verification-evidence\|decision-draft\|analysis-note> --slug <topic> --purpose <text> --scope-note <text> (--body <markdown>\|--body-file <path>)` writes an agent-authored note to `<task-root>/notes/` and prints its path plus the `--clarification-response` argument for feeding it into a later run |
|
|
884
884
|
| `okstra user-response <list-view\|show-view\|begin\|answer\|plan-decision\|legacy-report-authoring\|finalize> …` | Backend for the `/okstra-user-response` skill. `list-view` and `show-view --report <md\|data.json> --project-root <dir>` are fixed-text model views; `show-view` validates that the report belongs to the explicit project root and prints each open row's why-asked line, linked plan items, and cited `path:line` artifacts so the skill can read them before asking. The legacy `list` and `show` JSON reads retain their automation-compatible fields. `begin --report <md\|data.json> --task-key <key>` returns an opaque transaction id. A predefined clarification choice uses `answer --transaction <id> --clarification-id <C-NNN> --kind <kind> --option-number <N>`; Python resolves the answer, disposition, reach, and scope effects from the validated report. Direct input instead uses `--disposition <answer\|reframe> --value-file <md> [--rationale-file <md>]`. Every value, rationale, and reason file must be a regular file under `<PROJECT_ROOT>/.okstra/tmp/user-response/`; external paths and symbolic links are rejected. `plan-decision` accepts `approved`, `revision-requested`, or `rejected`, validates any `--implementation-option` against the report candidates, and requires `--reason-file` for the latter two statuses. `legacy-report-authoring` is restricted to report contract 2.0. `finalize` validates the complete existing sidecar before a lossless merge, uses compare-and-swap under a run-local lock, and atomically publishes only the user-owned sidecar; exit 0 ok / 1 error. |
|
|
885
885
|
| `okstra option-comparison --report <data.json\|md>` | Read-only backend for the okstra-run comparison material. Prints one implementation-option-selection report's comparison facts as JSON: `criteria` (the eight evaluation criteria and their weights), `workers` (voting analysts in first-seen order), and per ranked direction `scores`, `scoreRationales`, the recorded `weightedScore` (publication already checks it against the recalculated value), `coverage` (verdict, counts, requirement ids), `safetyBlockers` and `unresolvedFeasibilityFacts` counts, and `votes` per worker (verdict, rationale, counterevidence); plus the report's `narrative` texts and `nextStep`, which is the next-phase pointer rationale. Exits 2 when the record has no `implementationOptionSelection` block or ranks no direction. |
|
|
886
|
-
| `okstra pr <template\|branches\|gen> … [--json]` | Backend for the okstra-pr-gen skill. Git-only—no project registration required. `template list\|show <name\|default>\|add --name <name> (--content <text>\|--file <path>)\|path` manages PR body templates under `~/.okstra/template/pr/` (
|
|
886
|
+
| `okstra pr <template\|branches\|gen> … [--json]` | Backend for the okstra-pr-gen skill. Git-only—no project registration required. `template list\|show <name\|default>\|add --name <name> (--content <text>\|--file <path>)\|path` manages PR body templates under `~/.okstra/template/pr/` (default `templates/pr/pr-body.template.md`, shared with release-handoff); `branches` recommends a base branch; `gen --base <ref> [--head <ref>] [--template <name\|default> \| --template-file <path>]` emits fixed `Base`, `Head`, `Current branch`, `Template name`, `Commits`, `Diff stat`, `Template`, and `Drafting rules` sections by default. `--head` reads a branch without checking it out. `--json` preserves the machine bundle for automation. |
|
|
887
887
|
| `okstra migrate [--apply] [--cwd <dir>] [--quiet]` | One-time migration of the project artifact root from `.project-docs/okstra/` to `.okstra/`. It is a dry run by default; `--apply` performs the move with `git mv` in a Git worktree, removes an empty `.project-docs/`, and synchronizes the `<PROJECT>/CLAUDE.md` import line, `.gitignore`, the project's rows in `~/.okstra/{recent,active}.jsonl`, and `~/.okstra/worktrees/registry.json`. It exits 1 if `.okstra/` already exists or the legacy directory is absent. Scheduled for removal by the end of v0.x |
|
|
888
888
|
| `okstra task-list [--project-root <path>]` | Combine `list_project_tasks` and `read_latest_task` into JSON containing the task catalog and latest task |
|
|
889
889
|
| `okstra task-show <task-key> [--project-root <path>]` | Summarize workflow, phase, status, and artifacts from the Task Read-Side Snapshot |
|
|
@@ -32,7 +32,8 @@ no PR template available: default template not found. Searched: <candidate paths
|
|
|
32
32
|
|
|
33
33
|
## 3. The original inside the source repository
|
|
34
34
|
|
|
35
|
-
- [`templates/pr/pr-body.template.md`](../templates/pr/pr-body.template.md) — the original that `npx okstra install` copies to `~/.okstra/templates/pr/pr-body.template.md` (§2 candidate 2). To change the copy, edit this file and install again.
|
|
35
|
+
- [`templates/pr/pr-body.template.md`](../templates/pr/pr-body.template.md) — the original that `npx okstra install` copies to `~/.okstra/templates/pr/pr-body.template.md` (§2 candidate 2). To change the copy, edit this file and install again. `okstra pr gen --template default` reads the packaged copy of the same file, so the okstra-pr-gen skill and release-handoff share one default.
|
|
36
|
+
- [`templates/pr/drafting-rules.md`](../templates/pr/drafting-rules.md) — the drafting rules `okstra pr gen` prints after the template. The release-handoff lead passes the resolved template with `okstra pr gen --template-file <PR_TEMPLATE_PATH>` and fills it by these rules.
|
|
36
37
|
|
|
37
38
|
## 4. Configuration commands — persistence
|
|
38
39
|
|
|
@@ -206,7 +206,7 @@ The Module column below is where the command's behaviour lives — a `src/` modu
|
|
|
206
206
|
| `token-usage` | `scripts/okstra-token-usage.py` | Wrap installed Python token usage CLI |
|
|
207
207
|
| `spawn-followups`, `error-log` | `scripts/okstra-spawn-followups.py`, `scripts/okstra-error-log.py` | Follow-up task bundle creation and run error-log append helpers |
|
|
208
208
|
| `memory` | `src/commands/memory/memory.mts` | Store/find global conversation memory under `~/.okstra/memory-book`; `add --source-key` returns the stored entry for a key it already holds, under a per-key lock (`src/lib/file-lock.mts`, shared with `chat`) |
|
|
209
|
-
| `pr` | `src/commands/pr/pr.mts` | `okstra pr <template\|branches\|gen>` — PR body template store under `~/.okstra/template/pr/` (
|
|
209
|
+
| `pr` | `src/commands/pr/pr.mts` | `okstra pr <template\|branches\|gen>` — PR body template store under `~/.okstra/template/pr/` (default `templates/pr/pr-body.template.md`, shared with release-handoff), base-branch recommendation, and a fixed-text generation bundle — template, `<base>..<head>` commits, `<base>...<head>` diffstat and the `templates/pr/drafting-rules.md` drafting rules — used by the okstra-pr-gen skill and the release-handoff lead. `--json` preserves the same fields as a machine contract. Git-only; no project registration required |
|
|
210
210
|
| `recap` | `scripts/okstra_ctl/recap.py` | `okstra recap <assemble\|record\|note>` Node wrapper backing the okstra-inspect `recap` facet — `assemble` is a read-only phase-transition summary for a task or, with `--task-group`, the group's start order plus each task's latest conclusion; `record` appends one line to `recap/recap-log.jsonl` (task) or `.okstra/tasks/<group>/.recap/recap-log.jsonl` (`--task-group`); `note` writes an agent-authored note under `notes/` and prints the `--clarification-response` argument for a follow-up run |
|
|
211
211
|
| `stage-map` | `scripts/okstra_ctl/stage_map_cli.py` | `okstra stage-map <task-key>` — exposes a task's implementation-planning Stage Map as JSON (`stages[].{stage_number,title,depends_on,step_count}` + consumer-state-based `doneStages[]`). If there is no Stage Map, `stages: []`. The read-side basis from which `okstra-schedule-gen` derives stage units and dependency closure |
|
|
212
212
|
| `design-prep` | `scripts/okstra_ctl/design_prep.py` | `okstra design-prep <list\|show\|write>` thin shim into `scripts/okstra_ctl/design_prep.py` — queries (`list`/`show`) the design items that implementation-planning pre-authored with AI, and records the user-confirmed responses as an append-only sidecar under `design-prep-inputs/` (`write`, `--confirmed` required). It never modifies the report snapshot |
|
package/package.json
CHANGED
package/runtime/BUILD.json
CHANGED
|
@@ -33,6 +33,10 @@ ANTIGRAVITY = {
|
|
|
33
33
|
"gemini-3.1-pro", "Gemini 3.1 Pro", "gemini-3.1-pro",
|
|
34
34
|
aliases=("gemini 3.1 pro",),
|
|
35
35
|
),
|
|
36
|
+
"gemini-4-argon": ModelSpec(
|
|
37
|
+
"gemini-4-argon", "Gemini 4 Argon", "gemini-4-argon",
|
|
38
|
+
aliases=("gemini 4 argon",),
|
|
39
|
+
),
|
|
36
40
|
"gemini-3.8-flash": ModelSpec(
|
|
37
41
|
"gemini-3.8-flash", "Gemini 3.8 Flash", "gemini-3.8-flash",
|
|
38
42
|
aliases=("gemini 3.8 flash",),
|
|
@@ -44,7 +44,7 @@ CLAUDE = {
|
|
|
44
44
|
# opus 채널이 지금 서빙하는 점-릴리스. 엔트리가 없으면 served-model 게이트가
|
|
45
45
|
# 관측값을 카탈로그에서 못 찾아 dispatch 가 exit 78 로 실패한다 — 실측
|
|
46
46
|
# 2026-09-23, 두 프로젝트에서 `claude-opus-5-5` 로 같은 실패(dev-10860
|
|
47
|
-
# stage-3·4·5).
|
|
47
|
+
# stage-3·4·5).
|
|
48
48
|
"opus-5-5": ModelSpec(
|
|
49
49
|
"opus-5-5", "opus-5-5", "claude-opus-5-5", aliases=("claude-opus-5-5",),
|
|
50
50
|
channel_family="opus", selectable=False,
|
|
@@ -66,16 +66,9 @@ CLAUDE = {
|
|
|
66
66
|
"haiku": ModelSpec(
|
|
67
67
|
"haiku", "haiku", "haiku", version_kind="channel", channel_family="haiku"
|
|
68
68
|
),
|
|
69
|
-
#
|
|
70
|
-
"haiku-
|
|
71
|
-
"haiku-
|
|
72
|
-
channel_family="haiku", selectable=False,
|
|
73
|
-
),
|
|
74
|
-
# 구버전이 아니라 haiku 채널이 실제로 서빙하는 날짜-고정 id 다. 이 엔트리가
|
|
75
|
-
# 없으면 served-model 게이트가 관측값을 카탈로그에서 못 찾아 dispatch 가
|
|
76
|
-
# "served model is not in the catalog" 로 실패한다(dispatch_core.py).
|
|
77
|
-
"haiku-4-5-20251001": ModelSpec(
|
|
78
|
-
"haiku-4-5-20251001", "haiku-4-5", "claude-haiku-4-5-20251001",
|
|
69
|
+
# haiku 채널이 서빙하는 점-릴리스(opus-5-5 와 같은 이유).
|
|
70
|
+
"haiku-5-5": ModelSpec(
|
|
71
|
+
"haiku-5-5", "haiku-5-5", "claude-haiku-5-5", aliases=("claude-haiku-5-5",),
|
|
79
72
|
channel_family="haiku", selectable=False,
|
|
80
73
|
),
|
|
81
74
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
- the run's input document (`release-handoff-input.md`, generated by prepare in place of a task brief — briefs belong to entry phases only) carries a `## Source Verification Report` section with `Stages` and one table row per cited `final-verification` final-report. The run context exposes the same selection as `HANDOFF_STAGES` (csv, never empty — prepare defaults it to every eligible stage).
|
|
17
17
|
- the lead opens each cited single-stage report and confirms its `verificationScope` is `single-stage` and its verdict is release-ready — `Verdict Token` exactly `accepted`, or exactly `conditional-accept` with every **Conditional Acceptance Condition** row declaring `blocksReleaseHandoff: false`. The rule lives in `okstra_ctl.release_gate.release_handoff_allowed`; the lead reads the reports against it and does not invent a third case. Eligibility was already enforced at prepare time (`okstra_ctl.handoff.compute_eligibility`) and is re-enforced by `okstra handoff pr-plan` — the lead never hand-computes it.
|
|
18
18
|
- Record each cited verdict and any blocking acceptance condition as entry-gate evidence. Read the `## release-handoff` section of `prompts/lead/phase-routing.md` before user questions or Git commands.
|
|
19
|
-
- when a cited verdict is `conditional-accept`, the lead MUST carry that stage's **Conditional Acceptance Condition** rows into **that stage's** PR body under a heading naming them as unresolved —
|
|
19
|
+
- when a cited verdict is `conditional-accept`, the lead MUST carry that stage's **Conditional Acceptance Condition** rows into **that stage's** PR body under a heading naming them as unresolved — each condition and the evidence the reviewer would need, restated in the reviewer's terms (what in the code is still open, and where). The condition id stays in the final report: a reviewer cannot open it, so the PR body never carries it. These conditions are the whole reason a non-`accepted` verdict was allowed through; a PR body that drops them turns a recorded condition into a silent one.
|
|
20
20
|
- the lead MUST capture `git status --short` and confirm the working tree is clean. Dirty state aborts the run; release-handoff packages the commits produced by `implementation`, it does not stage or commit changes.
|
|
21
21
|
- the lead MUST capture `git rev-parse --abbrev-ref HEAD` and record it as the run's current branch. It is evidence, not a PR head: every PR head comes from `okstra handoff pr-plan`. If the current branch is `main`, `master`, `prod`, `preprod`, `staging`, or `dev`, record it and do not push it — release-handoff never pushes a base branch.
|
|
22
22
|
- before pushing, run `okstra handoff pr-plan` again if anything mutated since entry, and confirm each selected stage is still present in its output. `pr-plan` re-checks eligibility and each stage's recorded verified commit. Record the pr-plan output in Executed Commands. These pre-push comparisons are lead instructions; the automated entry checks are enforced by `okstra_ctl.handoff_verification` and the handoff tests.
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
- `edit then proceed` — accept inline edits from the user (the user may edit any subset), then proceed with the edited text.
|
|
55
55
|
- `cancel` — end the run without executing push or PR commands; record the cancellation in the final report.
|
|
56
56
|
- Inline drafting rules (Okstra lead) — applied once per stage:
|
|
57
|
-
-
|
|
58
|
-
- **
|
|
57
|
+
- **Generation bundle** — for each stage run `okstra pr gen --base <base_commit> --head <head_commit> --template-file <PR_TEMPLATE_PATH>`, with `base_commit` and `head_commit` from the stage's pr-plan row and `PR_TEMPLATE_PATH` from the run context (`PR_TEMPLATE_SOURCE` says which configuration chose it). `--head` reads the stage branch without checking it out, so a torn-down stage worktree needs no re-attach. The bundle prints the stage's commits, diff stat, the template verbatim, and a `Drafting rules` section — the same rules the okstra-pr-gen skill fills a PR body by. If the command fails, show its error and abort the draft — do NOT invent a structure. A stacked PR's diff is that stage alone — do not describe a predecessor's work in it.
|
|
58
|
+
- **Fill** — follow every item of the bundle's `Drafting rules`: read the full `git diff <base_commit>...<head_commit>`, fill the template's sections from it (the template, never a hard-coded section list, is the structure), open the new-behavior section with its 2–4 bullet summary, and keep okstra identifiers — condition, finding and clarification ids, stage and phase labels, `.okstra/` paths — out of the title and body. The run brief, that stage's cited final-verification report and its implementation report explain why the change was made; restate what they say in the reviewer's terms rather than citing them.
|
|
59
59
|
- produce **two artifacts per stage** before showing them to the user:
|
|
60
60
|
1. **PR title** — by default the subject of that stage's most recent implementation commit, or a concise Conventional Commits-style summary of the stage's committed range.
|
|
61
61
|
2. **PR body** — markdown filled from `PR_TEMPLATE_PATH`, and nothing else. Do NOT append a stack plan, a stage checklist, a sentence about where this PR stops in the stack, or a merge-policy line: the stack's shape and merge rule belong to the final report and the closeout, not to a reviewer's PR. The user-confirmation step's diff (Q3 `edit then proceed`) is computed against the filled template, not against the raw template file.
|
|
62
62
|
- **Filled-body self-check (runs on each drafted body, before Q3 shows it).** "Fill in the placeholders" is only observable if someone checks that they were filled, so scan the drafted body for these and carry the result into Q3: a residual HTML comment or template marker (`<!-- … -->`, `_Describe your changes…_`, a bare `TODO` / `FIXME` the diff did not introduce), an unchecked `- [ ]` box with no inline N/A justification, a section heading whose body is empty, and a whole body short enough to carry no substance. Each hit is reported to the user with its line — never silently left in, and never auto-filled with invented content. The user remains free to accept it; the point is that they see it before choosing `use as-is`.
|
|
63
63
|
- Allowed actions during the run (Okstra lead only):
|
|
64
|
-
- read-only inspection: `git status`, `git status --short`, `git diff`, `git log`, `git rev-parse`, `git ls-remote --heads origin <name>`, `gh pr list --head <branch>`, `gh pr view <url>`.
|
|
64
|
+
- read-only inspection: `git status`, `git status --short`, `git diff`, `git log`, `git rev-parse`, `git ls-remote --heads origin <name>`, `gh pr list --head <branch>`, `gh pr view <url>`, and the drafting bundle `okstra pr gen --base <base_commit> --head <head_commit> --template-file <PR_TEMPLATE_PATH>`.
|
|
65
65
|
- merge-conflict probe (only when the user picked `push + PR`): `git fetch origin <chosen-base>` and the exact `git merge-tree` commands from step 2b. Both preserve the working tree and branch tips.
|
|
66
66
|
- branch push (only when the user picked `push + PR`): `git push -u origin <branch>` for each `push_plan` row whose `action` is `create` or `fast-forward`, in the order `push_plan` lists them (each `merge-base` branch before the PR that targets it, then the stage heads in ascending order). Skip an `up-to-date` row — origin already holds that commit. The pushed ref MUST come from a `push_plan` row — never the release base branch, and never a ref that list does not name.
|
|
67
67
|
- PR creation, one per stage (only when the user picked `push + PR` AND no PR with the same head already exists on origin): `gh pr create --base <row base_branch> --head <row head_branch> --title "<title>" --body "<body>"`. The title and body are the user-confirmed PR draft for that stage. Open them in ascending stage order so each base branch already exists on origin.
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
- Pick between the two `Checked out` variants by the command's `removedWorktree` field: a non-empty path takes the first, an empty string takes the second. Never write a removal that did not happen.
|
|
100
100
|
- **Routing recommendation**: record which selected stages were delivered, skipped, cancelled, or still need a PR. The lead chooses the next phase under `## release-handoff` in `prompts/lead/phase-routing.md`.
|
|
101
101
|
- Self-review pass before finalising the report (the Okstra lead runs this):
|
|
102
|
-
1. **Entry-gate audit** — record the final-verification report path and literal `Verdict Token` row for every delivered stage, and the conditions
|
|
102
|
+
1. **Entry-gate audit** — record the final-verification report path and literal `Verdict Token` row for every delivered stage, and the conditions restated in each conditional-accept stage's PR body. Record any missing evidence for the lead's routing decision.
|
|
103
103
|
2. **User-selection traceability** — every executed mutating command maps to a user selection captured in the report. Any mutating command without a corresponding user answer is a contract violation.
|
|
104
104
|
3. **Forbidden-action audit** — scan the run's session transcripts (`git`, `gh` invocations) for every entry in the Forbidden actions list above. Any occurrence means the run has crossed into unsafe territory and MUST be flagged as `contract-violated`.
|
|
105
105
|
4. **Push-target audit** — for every `git push` recorded, confirm the refspec resolves to a branch that appears in the pr-plan output, not to the release base branch.
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
6. **Idempotency check** — for every stage whose PR already existed at run start, confirm the report records `PR reused` rather than a fresh `gh pr create` invocation.
|
|
108
108
|
7. **Merge-conflict probe audit** — for any `push + PR` run, confirm the report's `Merge Conflict Probe` section is present and either records `Clean` or records `Conflicts detected` with the user's verbatim choice. A missing or unparseable probe entry on a `push + PR` run is a contract violation.
|
|
109
109
|
- Non-goals:
|
|
110
|
-
- re-litigating a final-verification verdict — release-handoff trusts the cited release-ready verdicts and does not reopen acceptance checks.
|
|
110
|
+
- re-litigating a final-verification verdict — release-handoff trusts the cited release-ready verdicts and does not reopen acceptance checks. Restating a conditional-accept's conditions in the PR body is reporting, not verification: the lead does not check whether a condition has been satisfied.
|
|
111
111
|
- creating, amending, squashing, rebasing, or rewriting commits. Commit production belongs to `implementation`; the only commits this phase may create are the merge commits `okstra handoff pr-plan` makes on a `merge-base` branch.
|
|
112
112
|
- bundling several stages into one PR, or building a branch that collects every stage. One stage is one PR.
|
|
113
113
|
- opening releases or deployments beyond the per-stage PRs the user chose to create.
|
|
@@ -173,7 +173,7 @@ flowchart TD
|
|
|
173
173
|
Global -->|missing| Default[okstra skill default template]
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
-
When the user picks a template on the customize path, the okstra-run skill performs the project/global scope save before render-bundle. The runtime puts the resolved `PR_TEMPLATE_PATH` and `PR_TEMPLATE_SOURCE` into the run context
|
|
176
|
+
When the user picks a template on the customize path, the okstra-run skill performs the project/global scope save before render-bundle. The runtime puts the resolved `PR_TEMPLATE_PATH` and `PR_TEMPLATE_SOURCE` into the run context. For each stage the lead runs `okstra pr gen --base <base_commit> --head <head_commit> --template-file <PR_TEMPLATE_PATH>` and fills the printed template by the bundle's `Drafting rules`, the same rules the okstra-pr-gen skill uses. The section structure must not be hard-coded. The default template is `templates/pr/pr-body.template.md`, which `okstra pr gen --template default` also reads.
|
|
177
177
|
|
|
178
178
|
## 7. Deliverables
|
|
179
179
|
|
|
@@ -72,6 +72,8 @@ CLAUDE_PRICING = {
|
|
|
72
72
|
"opus-4-6": (5.0, 6.25, 0.50, 25.0), # Opus 4.6 (legacy; pricing matches 4.7 per Anthropic)
|
|
73
73
|
"sonnet-4-6": (3.0, 3.75, 0.30, 15.0), # Sonnet 4.6 (cache prices derived from ratios)
|
|
74
74
|
"haiku-4-5": (1.0, 1.25, 0.10, 5.0), # Haiku 4.5 (cache prices derived from ratios)
|
|
75
|
+
# Haiku 5.5 bills prompts over 100K tokens at 5x; this row is the <=100K rate.
|
|
76
|
+
"haiku-5-5": (0.10, 0.125, 0.01, 0.50), # Haiku 5.5 (platform.claude.com pricing, read 2026-10-15)
|
|
75
77
|
|
|
76
78
|
# Claude 4 family fallbacks (Opus 4 / Sonnet 4 / Haiku 4 base).
|
|
77
79
|
"opus-4": (15.0, 18.75, 1.50, 75.0),
|
|
@@ -84,50 +84,14 @@ Present a 3-option base picker from the first two printed branches plus `Enter d
|
|
|
84
84
|
okstra pr gen --base <base> --template <template>
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
For a large diff, read it in sections. Fill the `template` placeholders from the
|
|
96
|
-
diff and commits: describe only what actually changed. Mark checklist boxes
|
|
97
|
-
`[x]` only when the diff supports them (tests touched → tests box, docs touched →
|
|
98
|
-
docs box). If the `Commits`/`Diff stat` sections print `-` (empty), tell the user there is nothing to
|
|
99
|
-
describe and stop. **Never** append AI trailers/footers.
|
|
100
|
-
|
|
101
|
-
Open the new-behavior section — `What is the new behavior` in the bundled default,
|
|
102
|
-
or the section of a stored template that describes the change — with a short
|
|
103
|
-
summary of what changed: 2–4 bullets, one change per bullet, each naming the
|
|
104
|
-
observable difference a reviewer would notice. Put the detailed description below
|
|
105
|
-
that summary. The summary restates the details; it adds no claim the diff does
|
|
106
|
-
not support.
|
|
107
|
-
|
|
108
|
-
### A3b. Identifier allowlist for the body
|
|
109
|
-
|
|
110
|
-
Reviewers have never seen okstra, so an okstra-internal id reads as a nonsense
|
|
111
|
-
token. Identifiers in the PR title and body come from this list and nothing else:
|
|
112
|
-
|
|
113
|
-
| allowed | example |
|
|
114
|
-
| --- | --- |
|
|
115
|
-
| repo-relative source path, optionally with a line | `src/commands/pr/pr.mjs:42` |
|
|
116
|
-
| symbol name that exists in the diff | `resolveTemplate()` |
|
|
117
|
-
| branch name, commit subject, commit SHA | `feature/dev-9436`, `a1b2c3d` |
|
|
118
|
-
| issue-tracker ticket id the reviewer can open | `dev-9436` |
|
|
119
|
-
|
|
120
|
-
okstra's own artifact identifiers are out of the allowlist — drop them:
|
|
121
|
-
|
|
122
|
-
- report item ids — `F-001`, `C-001`, `R-001`, `D-0001`, `PREP-001`
|
|
123
|
-
- run artifact names and their `<task-type>-<seq>` suffixes —
|
|
124
|
-
`final-report-implementation-3.data.json`, `run-manifest-implementation-3.json`
|
|
125
|
-
- phase / stage / worker labels — `final-verification`, `stage-2`, `codex-worker`
|
|
126
|
-
- any path under `.okstra/` — reports, decisions, glossary, user-response sidecars
|
|
127
|
-
|
|
128
|
-
When the only source for a claim is such an artifact, restate its substance in
|
|
129
|
-
the reviewer's terms — what changed in the code, and why — instead of citing the
|
|
130
|
-
id.
|
|
87
|
+
To describe a branch other than the checkout — a stage branch whose worktree is gone — add
|
|
88
|
+
`--head <branch>`; nothing is checked out.
|
|
89
|
+
|
|
90
|
+
Read the fixed `Base`, `Head`, `Current branch`, `Template name`, `Commits`, `Diff stat`,
|
|
91
|
+
`Template`, and `Drafting rules` sections. Then fill the template by following every item of
|
|
92
|
+
`Drafting rules`: it says how to read the full diff, when to stop, how to fill sections and
|
|
93
|
+
checkboxes, how to open the new-behavior section, and which identifiers the title and body may
|
|
94
|
+
carry. release-handoff drafts its PR bodies from the same rules.
|
|
131
95
|
|
|
132
96
|
### A4. Output and offer to create the PR
|
|
133
97
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
1. Read the full diff — it is the source of truth: `git diff <Base>...<Head>`, using the `Base` and
|
|
2
|
+
`Head` values above. Read a large diff in sections.
|
|
3
|
+
2. If `Commits` or `Diff stat` above is `-`, there is nothing to describe: stop and say so.
|
|
4
|
+
3. Fill the template from the diff and the commits. Describe only what actually changed. Strip HTML
|
|
5
|
+
comments; keep the template's sections as the structure.
|
|
6
|
+
4. Mark a checklist box `[x]` only when the diff supports it (tests touched → the tests box, docs
|
|
7
|
+
touched → the docs box).
|
|
8
|
+
5. Open the new-behavior section — `What is the new behavior` in the default template, or the section
|
|
9
|
+
of another template that describes the change — with a summary of 2–4 bullets, one change per
|
|
10
|
+
bullet, each naming the observable difference a reviewer would notice. Put the detailed description
|
|
11
|
+
below it. The summary adds no claim the diff does not support.
|
|
12
|
+
6. Never append an AI trailer or footer.
|
|
13
|
+
7. Identifiers in the PR title and body come from this list and nothing else, because reviewers have
|
|
14
|
+
never seen okstra and cannot open its artifacts:
|
|
15
|
+
|
|
16
|
+
| allowed | example |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| repo-relative source path, optionally with a line | `src/commands/pr/pr.mts:42` |
|
|
19
|
+
| symbol name that exists in the diff | `resolveTemplate()` |
|
|
20
|
+
| branch name, commit subject, commit SHA | `feature/dev-9436`, `a1b2c3d` |
|
|
21
|
+
| issue-tracker ticket id the reviewer can open | `dev-9436` |
|
|
22
|
+
|
|
23
|
+
okstra's own identifiers are out of the list — drop them:
|
|
24
|
+
|
|
25
|
+
- report item ids — `F-001`, `C-001`, `CA-001`, `R-001`, `D-0001`, `PREP-001`
|
|
26
|
+
- run artifact names and their `<task-type>-<seq>` suffixes —
|
|
27
|
+
`final-report-implementation-3.data.json`, `run-manifest-implementation-3.json`
|
|
28
|
+
- phase / stage / worker labels — `final-verification`, `stage-2`, `stage 1 of 2`, `codex-worker`
|
|
29
|
+
- any path under `.okstra/` — reports, decisions, glossary, user-response sidecars
|
|
30
|
+
|
|
31
|
+
When the only source for a claim is such an artifact, restate its substance in the reviewer's
|
|
32
|
+
terms — what changed in the code, and why — instead of citing the id.
|
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
<!--
|
|
2
|
-
okstra
|
|
2
|
+
okstra default PR body template — the single default for `okstra pr gen` and release-handoff.
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
1. The per-run override path entered in okstra-run
|
|
4
|
+
release-handoff resolves its template in this order, and uses this file only when none is configured:
|
|
5
|
+
1. The per-run override path entered in okstra-run
|
|
6
6
|
2. `prTemplatePath` of <project-root>/.okstra/project.json
|
|
7
7
|
3. `prTemplatePath` of ~/.okstra/config.json
|
|
8
8
|
4. This default file
|
|
9
|
+
`okstra pr gen --template default` (or no `--template`) reads this file too.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
The placeholder is filled in directly by the Okstra lead for the release-handoff based on the following inputs:
|
|
13
|
-
- The intent and scope of the run brief
|
|
14
|
-
- The grounds for the verdict in the referenced final-verification report
|
|
15
|
-
- The commit range from `git log --oneline <base>..HEAD`
|
|
16
|
-
- The file change statistics from `git diff <base>..HEAD --stat`
|
|
11
|
+
Fill it from `okstra pr gen` and the full diff, following the bundle's `Drafting rules` section.
|
|
17
12
|
-->
|
|
18
13
|
|
|
19
14
|
## **Please check if the PR fulfills these requirements**
|
|
20
15
|
- [ ] Commits have a single intent
|
|
21
16
|
- [ ] Tests for the changes have been added (for bug fixes / features)
|
|
22
|
-
- [
|
|
17
|
+
- [ ] I reviewed my own code
|
|
23
18
|
- [ ] I tested the changes (if not, explain why in the "Other information" section)
|
|
24
19
|
- [ ] Docs have been added / updated
|
|
25
20
|
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
## **Please check if the PR fulfills these requirements**
|
|
2
|
-
- [ ] Commits have a single intent
|
|
3
|
-
- [ ] Tests for the changes have been added (for bug fixes / features)
|
|
4
|
-
- [ ] I reviewed my own code
|
|
5
|
-
- [ ] I tested the changes (if not, explain why in the "Other information" section)
|
|
6
|
-
- [ ] Docs have been added / updated
|
|
7
|
-
|
|
8
|
-
## **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...)
|
|
9
|
-
<pr-kind>
|
|
10
|
-
|
|
11
|
-
## **What is the current behavior?** (You can also link to an open issue here)
|
|
12
|
-
<current-behavior>
|
|
13
|
-
|
|
14
|
-
## **What is the new behavior (if this is a feature change)?**
|
|
15
|
-
<new-behavior>
|
|
16
|
-
|
|
17
|
-
## **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?)
|
|
18
|
-
<breaking-change>
|
|
19
|
-
|
|
20
|
-
## **Other information**:
|
|
21
|
-
<other-information>
|