Repository navigation
chore(migration): land the v2 bootstrap on v2 - #15014
marius-kilocode wants to merge 21 commits into
Conversation
… and deferred channel naming
chore(dev): run bun dev in an isolated v2 profile
Upstream OpenCode workflows that publish, deploy, post, label or close things do not belong in Kilo CI. Remove them, and remove the pure check workflows that never trigger on Kilo branches. Keep test.yml as the test gate and run check.yml on every pull request, so v2 PRs get `bun run check`. Add script/check-workflows.ts, modeled on the v1 guard, and run it from the new kilo-v2.yml so an upstream merge cannot bring a workflow back without review.
Port the v1 merge tooling `skipFiles` behavior for workflows: `bun script/check-workflows.ts --fix` runs `git rm -f` on the upstream workflows that Kilo removed, which also resolves their modify/delete conflicts. A new upstream workflow still fails the check for review. Add the step to the v2 upstream merge procedure in the fork conventions.
docs(migration): new v2 migration plan
docs: add v2 migration skill with TUI self-test recipe
chore(ci): remove upstream workflows and guard the workflow list
| path.join(process.env.XDG_DATA_HOME ?? path.join(os.homedir(), ".local", "share"), "kilo", "auth.json"), | ||
| ) | ||
| if (!(await file.exists())) return config({}) | ||
| const auth = (await file.json()).kilo |
There was a problem hiding this comment.
SUGGESTION: Unguarded auth.json parse can abort bun dev
kiloLogin() is awaited at top level (line 12), so if $XDG_DATA_HOME/kilo/auth.json exists but is empty or truncated (v1 Kilo rewrites it on token refresh), or holds valid JSON that is not an object, (await file.json()).kilo throws and the whole dev launcher fails instead of falling back to signed-out. The exists()/json() pair is also a TOCTOU: a delete in between throws ENOENT. Consider (await file.json().catch(() => undefined))?.kilo so it degrades gracefully.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| // The CLI uses the working directory as the project directory. | ||
| cwd: process.env.INIT_CWD ?? process.cwd(), | ||
| env: { | ||
| ...process.env, |
There was a problem hiding this comment.
SUGGESTION: Isolation guarantee can be bypassed by inherited env vars
The header promises that no store outside the profile "is read or changed", but ...process.env forwards OPENCODE_CONFIG_DIR (used in packages/util/src/global.ts:79 and taking precedence over XDG_CONFIG_HOME) and OPENCODE_DB (packages/cli/src/database-path.ts:6), and HOME is not overridden. A developer with either variable set reads and writes outside .kilo-v2-dev. Consider explicitly clearing or overriding these for the child process.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
|
|
||
| ## Isolation: never touch the v1 setup | ||
|
|
||
| - Run the CLI only through `bun dev` (`script/dev-isolated.ts`). It keeps all data in one profile directory. Never run `bun run --cwd packages/cli`, `dev:live` or `opencode` directly. They use the installed OpenCode data and service. |
There was a problem hiding this comment.
SUGGESTION: Conflicts with AGENTS.md on dev:live
This line says to never run dev:live, but the repo AGENTS.md says to prefer dev:live over plain bun run dev for live TUI testing. Both files are active agent guidance, so they now give opposite instructions for the same workflow. Please reconcile, or scope this rule explicitly to isolation-sensitive tests.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| > [!WARNING] | ||
| > **Stale; rewrite pending in U-L4-01 ([plan](../plans/kilo-v2-migration-plan.md)).** Expected behavior was quoted from the archived port, not v1 (Decision 3), and scenarios carry no gate tags. Keep the scenario IDs; do not use the expectations as acceptance. | ||
|
|
||
| Separate from the [implementation plan](kilo-opencode-v2-issue-13750.md). |
There was a problem hiding this comment.
SUGGESTION: Broken internal link target
kilo-opencode-v2-issue-13750.md does not exist under test-plans/ (nor anywhere in the repo); discovery/doc-inventory.md:170 already records this as a dangling index link. The current plan is plans/kilo-v2-migration-plan.md.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| ## Evidence and scope — 2026-09-05 | ||
|
|
||
| This audit expands the acceptance checklist behind the existing | ||
| [43-row port inventory](../../plans/kilo-opencode-v2-issue-13750.md#inventory-kilo-orgkilocode). |
There was a problem hiding this comment.
SUGGESTION: Broken internal link target
../../plans/kilo-opencode-v2-issue-13750.md does not exist — migration-tracking/plans/ contains no kilo-opencode-v2-issue-13750.md. Point at the current plan (plans/kilo-v2-migration-plan.md) or an existing anchor.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| ### B4 — Manual scenario statuses stay NOT RUN | ||
|
|
||
| `UI-081`/`UI-082`/`UI-083` remain **NOT RUN** in the root-owned | ||
| [UI test plan](../plans/kilo-opencode-v2-test-plan-ui.md). The automated |
There was a problem hiding this comment.
SUGGESTION: Wrong relative link path
../plans/kilo-opencode-v2-test-plan-ui.md resolves to technical-notes/plans/..., which does not exist. The UI test plan is at migration-tracking/test-plans/kilo-opencode-v2-test-plan-ui.md, i.e. ../../test-plans/kilo-opencode-v2-test-plan-ui.md from this file.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
| feature-specific services (FIM/next-edit, speech, image generation, Claw and | ||
| remaining cloud/indexing paths), presence integration handback, and full native | ||
| end-to-end acceptance. Existing logs still contain unrelated missing-method | ||
| errors. Review the detailed [existing-port evidence](../kilocode/baseline/existing-vscode-port.md) |
There was a problem hiding this comment.
SUGGESTION: Systematic broken link prefix in this file
This link and ~32 others use the ../kilocode/baseline/... prefix, but that directory is now ../technical-notes/baseline/... (and session sharing is ../technical-notes/session-sharing.md), so all of them 404. Line 1838 of this same file already uses the correct ../technical-notes/baseline/ prefix.
Reply with @kilocode-bot fix it to have Kilo Code address this issue.
Code Review SummaryStatus: 8 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)SUGGESTION
Note: the PR was closed at 2026-10-13T08:15:04Z (not merged) with head Files Reviewed (125 files)
Fix these issues in Kilo Cloud Reviewed by deepseek-v4.1-flash · Input: 127.5K · Output: 19.2K · Cached: 704.8K |
What Problem This Solves
The Kilo v2 work merges into
kilo-v2-clean-bootstrap, but the integration branch isv2.origin/v2is still the plain upstream base (5e73d5cb1f7) with no Kilo changes. Because of this:v2does not have the migration plan, the v2 migration skill, the isolatedbun dev, or the Kilo CI lane.v2still has all 27 upstream workflows. The push that createdv2(2026-10-12, 16:19 UTC) started upstreampublish(startup failure),check,test,nix-eval,deploy-wwwanddeploy-files(skipped). Each new push tov2starts them again.Why This Change Was Made
This lands the working base on the integration branch, as agreed in the 2026-10-12 sync (the bootstrap branch was only to keep the plan PR readable). It contains everything on
kilo-v2-clean-bootstrap:c4042b3,a876c29,56416ab,b16f4bd,160ce87,490703ebun devprofileThe 6 seed commits were not reviewed in a PR, because #14987 used the bootstrap branch as its base. Most of this PR's diff is
c4042b3(90 files, 18,133 lines ofmigration-tracking/docs seeded from the archived port). Review those commits here.v2has no commits that are missing fromkilo-v2-clean-bootstrap, so the merge has no conflicts.Merge with "Create a merge commit". Do not squash. The open stacked PRs (#14997, #14998, #14999) contain the bootstrap history. A squash would make their diffs against
v2show all bootstrap commits again.User Impact
None for users. For the team:
v2has only the Kilo workflows (kilo-v2.yml,check.yml,test.yml). Upstream publish and deploy workflows no longer start on pushes tov2.kilo-v2-clean-bootstrap(chore(ci): build v2 CLI artifacts for Linux and macOS #14997, feat(gateway): add Kilo device login on the v2 plugin API #14998, feat(core): add Kilo agents #14999) tov2.origin/v2. A follow-up must change the "Current working base" row inmigration-tracking/plans/migration-context.mdfromkilo-v2-clean-bootstraptov2.Evidence
git rev-list --count kilo-v2-clean-bootstrap..v2is0. The merge has no conflicts.migration-tracking/and the removed upstream workflows under.github/workflows/. Use the Files tab with a commit filter to review the seed commits on their own.git grep "kilo-v2-clean"finds no reference to the old branch name, except thekilo-v2-clean-bootstrapbranch name itself.kilo-v2-clean-bootstrap.