Repository navigation
chore: remove .kilo_workflow from monorepo (machine-local) - #4909
Conversation
Shorten slot acquire to 8 minutes with a one-shot holders line, enumerate booted/unclaimed and claimed-but-dead devices in status, and fold prebuild plus claim/build into ios/android starts with a compact JSON stdout contract and bundle --ios-only.
Document the take→start→shards→serialized→stop→free lifecycle, platform scope table with iOS-only default, folded claim/build starts, and status device findings in WORKFLOW.md, the runbook, and README.
Add record.sh for segment-scoped device video, teach multi-flow Appium batching, inject section-level E2E_ARTIFACTS for verifier reuse, and document the contracts in the runbook and e2e-verifier role.
Add await-interactive --until-launched and 10-minute cadence, normalize reviewer FINDINGS: 0 to No findings., add steer --interrupt for in-flight turn cancel, shorten Kilobot wait to 600s, and document the starter monitor-to-dispatch lifecycle.
…rning Point agents at pnpm dev:setup-env and dev:seed for env/account blockers, note iOS-only E2E default in the README, and rewrite the android-emulator- died learning around the new status DEAD device line.
Name record.sh stop on VERIFICATION BLOCKED recovery and the shared E2E slot lifecycle so orchestrators cannot orphan simctl/screenrecord.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Executive SummaryThe incremental change ( Previous finding re-verified on the changed lines
Files Reviewed (1 file)
Assumptions
Previous Review Summaries (8 snapshots, latest commit f24703b)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit f24703b)Status: 1 Issue Found | Recommendation: Optional follow-up; safe to merge Executive SummaryBoth prior findings are fixed on the changed lines; the only remaining nit is that the new Android failure table maps GPU choice for the two boot-wait errors but not for Overview
Issue Details (click to expand)SUGGESTION
Previous findings re-verified on the changed lines
Files Reviewed (1 file)
Assumptions
Fix these issues in Kilo Cloud Previous review (commit bacd203)Status: 2 Issues Found | Recommendation: Address before merge Executive SummaryThe new Android failure runbook tells the bundle owner to tear the emulator down before evaluating the GPU policy, which makes that policy always resolve to software rendering, and the slot instructions still describe tooling this PR deletes. Overview
Issue Details (click to expand)WARNING
Previous findings re-verified on the changed lines
Files Reviewed (1 file)
Assumptions
Fix these issues in Kilo Cloud Previous review (commit aa7f773)Status: 3 Issues Found | Recommendation: Address before merge Executive SummaryThe removal commit ( Overview
Issue Details (click to expand)WARNING
Both survived the PR description's SUGGESTION
Verified on the changed lines
Files Reviewed (6 files, plus 82 deletions)
Assumptions
Fix these issues in Kilo Cloud Previous review (commit 6ccabc6)Status: No Issues Found | Recommendation: Merge Executive SummaryThe incremental change ( Resolved since the previous review
Verified on the changed lines
Files Reviewed (1 file)
Assumptions
Previous review (commit f0ebadf)Status: 1 Issue Found | Recommendation: Address before merge Executive SummaryThe new best-effort iOS reap in Overview
Issue Details (click to expand)CRITICAL
Resolved since the previous review
Verified on the changed lines
Files Reviewed (1 file)
Assumptions
Fix these issues in Kilo Cloud Previous review (commit 115a8e1)Status: 1 Issue Found | Recommendation: Address before merge Executive SummaryIncremental review of Overview
Issue Details (click to expand)SUGGESTION
Resolved since the previous review
Verified on the changed lines
Files Reviewed (1 file)
Assumptions
Fix these issues in Kilo Cloud Previous review (commit 3bb72df)Status: 2 Issues Found | Recommendation: Address before merge Executive SummaryIncremental review of Overview
Issue Details (click to expand)SUGGESTION
Verified on the changed lines
Files Reviewed (2 files)
Assumptions
Fix these issues in Kilo Cloud Previous review (commit cf5e418)Status: No Issues Found | Recommendation: Merge Executive SummaryIncremental review of Resolved since the previous review
Files Reviewed (1 file)
Assumptions
[Snapshot truncated.] Additional previous summary content was truncated to keep this comment within platform limits. Reviewed by claude-opus-5 · Input: 28 · Output: 5.5K · Cached: 553.8K Review guidance: REVIEW.md from base branch |
Clear Android remote video before each segment, quote state values, verify recorder PIDs, require simctl/adb success before DEAD checks, key android prebuild skip on gradlew, and fixed-string match for --until-launched.
Use untruncated ps -ww for recorder ownership, base64 state (no eval), SIGINT before clear on failed start liveness, and note when simctl/adb enumeration fails instead of printing a false all-clear.
base64 encode/decode failures and empty pid no longer become silent stop no-ops that orphan a live recorder.
Capture b64_encode before printf so encode errors abort start instead of writing an empty pid that turns stop into a silent no-op.
start clears unreadable state and continues; stop clears corrupt state as an idempotent no-op so bundle teardown cannot strand a device.
On corrupt stop, SIGINT android screenrecord / matching iOS simctl recordVideo before clearing state so blind cleanup cannot strand a device.
Guard pgrep under set -e so blind stop still clears state and exits 0.
Remove the shared multi-agent workflow from the monorepo so colleague agent pools are not polluted by personal automation, learnings, and role agents. - Delete .kilo_workflow/ (scripts, WORKFLOW.md, learnings) and the seven workflow role agents under .kilo/agent/ - Drop dev/local/workflow-scripts.test.ts (tested the removed scripts) - Stop worktree-prepare from copying workflow system learnings - Rewrite mobile e2e runbook / AGENTS / remote-cli / simulator comments to use pnpm dev helpers only — no .kilo_workflow paths remain in the tree The workflow continues at ~/Projects/.kilo_workflow (local git repo; agents under .kilo/agent/). Product E2E helpers (record.sh, appium multi-flow) stay.
…ed --wait logs Kilobot on PR #4909: - record.sh teardown order named e2e-stop-resource.sh, deleted by this PR - emulator-start --wait leaves $EMULATOR_LOG unset on failure; document the deterministic $TMPDIR log path and error-text path instead
Kilobot on PR #4909: - Decide attempt-2 GPU from the emulator-start error text before teardown; emulator-stop kills the PID and deletes the session record, so "process gone after stop" always looked like a dead-PID failure - Remove remaining take/free "slot" language; slot tooling left the monorepo
Kilobot suggestion: attempt-2 GPU table only covered the two boot-wait errors. Pre-boot launch throws (exited during launch, port bind timeout, foreign port, missing PID) also mean the host-GPU path failed — treat them like a dead PID and use swiftshader. Note pre-boot paths delete the session record before rethrowing.
Main deleted all of .kilo_workflow in #4909; the workflow now lives in a private repo. Remove the branch learning that survived the merge (already ported there) so the PR carries zero workflow diffs.
…costs (#4884) * fix(mobile): keep screen awake while agent works; animate subagent sheet dismiss Install expo-keep-awake and mount a conditional useKeepAwake host while the session is streaming or has pending messages, so the idle timer stays off exactly while the UI shows the agent as working (item 15). Mount the child session sheet behind a separate visible flag instead of unmounting it on close, so iOS plays the native slide-down animation instead of flashing the white window behind (item 21). * docs(mobile): reference kilo-design baseline in AGENTS.md (item 12) * fix(mobile): show Older activity residual in session context sheet Reconcile the persisted page total against the live cost breakdown when history is unpaginated: an Older activity row carries the residual exactly when it exceeds the 1 microdollar epsilon, so Total always matches the visible rows (item 23). * fix(mobile): disable native text selection inside message bubbles Gate selectable behind InMessageBubbleContext so a long-press anywhere in a message opens the details sheet without the iOS selection callout floating over it (item 13). Preparation group and child-sheet texts keep native selection as their only copy path; details-sheet copy and the a11y rotor path are unchanged. * fix(mobile): slash menu separators + SheetHeader title ellipsis Use the border-border theme token between slash-command rows and drop the trailing separator (item 24). Bound sheet titles in a flex-1 px-24 wrapper with numberOfLines=1 so long titles ellipsize without covering the Done/Cancel controls, which render after the title to stay on top (item 25). * fix(mobile): composer AppState restore, swipe-down dismiss, reliable growth Move message-input-app-state to src/lib as the shared home and reuse its blur-on-background / delayed-refocus pattern in the agents composer (item 19). Replace the hidden mirror-Text measurement with the TextInput's own onContentSizeChange plus pure, unit-tested reducers, so the composer reliably grows to its max height then scrolls (item 26). Add a downward-pan GestureDetector scoped to the composer input row so a swipe down dismisses the keyboard when the input is not scrollable (item 22). * docs(workflow): learning — CLI sessions read-only until TUI /remote relays them * fix(mobile): restore mirror-Text composer growth (item 26) iOS Fabric emits TextInput onContentSizeChange only from updateLayoutMetrics, so a fixed-height uncontrolled input never reports growth past the initial layout — the onContentSizeChange reducers could never grow the composer. Restore the mirror-Text measurement (useTextHeight), which follows JS text state deterministically and was iOS-proven on this composer. Keep the pure scroll-threshold helper; AppState focus restore (item 19) and swipe-down dismiss (item 22) unchanged. * fix(mobile): dismiss keyboard on Android EditText swipe-down (item 22) ReactEditText requests disallow-intercept on every ACTION_DOWN, so the wrapper's RNGH pan never sees the stream start from the focused input. Track bubbled JS touch moves on the composer host View and dismiss at the same 24px threshold, claiming the responder there. Android-only; the iOS RNGH path is unchanged. * fix(mobile): evaluate composer AppState refocus gate at fire time (item 19) The effect's [disabled, isSending] deps let any flip re-run the effect and clear the pending 100ms focus restore after 'active' had already consumed the restore flag — Android intermittently (5/16 cycles) never restored the composer keyboard. Subscribe once, schedule unconditionally on shouldFocus, and gate on live refs at fire time. * chore: drop .kilo_workflow remnants after main merge Main deleted all of .kilo_workflow in #4909; the workflow now lives in a private repo. Remove the branch learning that survived the merge (already ported there) so the PR carries zero workflow diffs. * fix(mobile): restore copy path for tool output and reasoning (item 13) In-bubble native selection was disabled so the iOS callout cannot float over the details sheet, but both remaining copy paths (details-sheet Copy message, a11y rotor) collect only text parts — tool commands/outputs/ errors and reasoning lost their only copy route. Extend collectCopyableText to serialize reasoning and tool parts; parts with no payload yet stay excluded. Addresses Kilobot thread on mono-scroll-block.tsx. * fix(mobile): bound child-sheet mount and keep-awake to their lifetimes Child sheet (item 21): the mounted-during-close pattern exists only to let the native dismiss animation play, but the sheet identity lived on for the rest of the screen, running child-transcript scans on every streaming render. Release it 350ms after close (covers the animation; the white flash is iOS-specific); a reopen before the release wins and a visible sheet is never released. Keep-awake (item 15): gate on useIsFocused so a screen covered by a pushed route stops holding the OS idle timer, and scope the expo tag by session id so stacked session screens cannot release each other's wake lock. Addresses two Kilobot threads on session-detail-content.tsx + child-session-sheet-state.ts. * fix(mobile): suppress sub-display Older-activity residuals (item 23) The 1µ$ reconciliation epsilon let 2-49µ$ residuals render an "Older activity $0.0000" row. Gate on what formatCost actually displays, mirroring formatSessionTotalCost's suppression, and reword the subtitle — the residual also absorbs ingest gaps when the full history is loaded. Addresses Kilobot thread on session-cost-breakdown.ts. * fix(mobile): scope Android swipe-dismiss touch tracking by identifier (item 22) topTouch* events fire per changed touch: a second finger overwrote the tracked gesture origin or reset it mid-drag, breaking the primary finger's swipe-to-dismiss. Track nativeEvent.identifier and ignore other identifiers, matching the RNGH pan's identifier awareness. Addresses Kilobot thread on chat-composer.tsx. * fix(mobile): release child sheet after iOS dismiss * fix(mobile): stop keep-awake after disconnect
Summary
What: Remove
.kilo_workflowand the seven workflow role agents from the monorepo. Product E2E helpers that landed on this branch (record.sh, Appium multi-flow, runbook cleanup) stay.Why: The multi-agent delivery workflow is personal/machine-local automation. Shipping it in the shared cloud repo pollutes colleague agent pools (role defs under
.kilo/agent/, learnings, scripts agents discover and follow). Moving it out keeps the monorepo product-only.How:
.kilo_workflow/entirely (scripts,WORKFLOW.md, committed learnings)starter,planner,orchestrator,plan-reviewer,implementer,impl-reviewer,e2e-verifierdev/local/workflow-scripts.test.ts(only tested the removed scripts)worktree-preparecopy of workflow system learningsapps/mobile/e2e/AGENTS.md(and related comments) to callpnpm dev:*/ simulator helpers directly — zero remaining.kilo_workflowstring references in the treeapps/mobile/e2e/record.sh, Appium multi-flow, record.sh testsMachine-local home:
~/Projects/.kilo_workflow(local git repo; role agents at.kilo/agent/; system learnings untracked underlearnings/system/). Snapshot matches the pre-removal tip of this branch.Verification
rg '\.kilo_workflow'over the worktree → no matchespnpm exec tsx --test dev/local/appium-wrapper.test.ts— 11/11 passVisual Changes
N/A