Skip to content

feat(remote): advertise instance kind and process identity - #13565

Merged
iscekic merged 2 commits into
mainfrom
mobile-ux-ad6d-s1
Sep 1, 2026
Merged

feat(remote): advertise instance kind and process identity#13565
iscekic merged 2 commits into
mainfrom
mobile-ux-ad6d-s1

Conversation

@iscekic

@iscekic iscekic commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

No new behavior — this pull request prepares information for a separate interface update; it changes no screen or user action.


Implementation

Status A denotes an added file; M denotes a modified file. Sizes show added and removed lines from the accepted inventory.

RemoteProtocol.InstanceAdvertisement adds optional kind, startedAt, and gitBranch fields while accepting older advertisements and retained relay attachments.
kind accepts cli or remote; startedAt requires a 24-character timestamp with milliseconds; gitBranch allows at most 24 code units.
These fields must stay optional until older clients and retained attachments retire.

Files
  • packages/opencode/src/kilo-sessions/remote-protocol.ts — Source, M, +6/-0 lines: validates the optional metadata, including z.iso.datetime({ precision: 3 }).length(24) for startup time.
  • packages/opencode/test/kilocode/sessions/remote-protocol.test.ts — Test, M, +66/-0 lines: adds protocol tests.

buildInstanceAdvertisement defaults its optional producer-kind argument to cli; kilo remote overrides the stored advertisement with remote.
startedAt comes from new Date(performance.timeOrigin).toISOString() once, so all advertisements and reconnects share the process startup time.
One-argument callers still work; name and project limits remain 64 characters, the version limit remains 32, and connection lifecycles stay unchanged.

Files
  • packages/opencode/src/kilo-sessions/instance-advertisement.ts — Source, M, +12/-3 lines: types the second argument from the advertisement kind and fixes startup time per process.
  • packages/opencode/src/cli/cmd/remote.ts — Source, M, +1/-1 lines: passes remote before enabling the remote connection.
  • packages/opencode/test/kilocode/cli/cmd/remote.test.ts — Test, M, +19/-6 lines: revises the remote command tests.

KiloSessions refreshes instance gitBranch on each heartbeat using the Vcs.Service lookup already used for session rows.
The instance value stops at 24 code units without a trailing high surrogate; session rows keep the full branch.
Missing or failed lookups clear the instance branch; copied advertisements preserve kind and startedAt, including reconnect heartbeats.

Files
  • packages/opencode/src/kilo-sessions/kilo-sessions.ts — Source, M, +5/-1 lines: refreshes the copied advertisement with the bounded branch instead of sending the stored advertisement unchanged.
  • packages/opencode/test/kilocode/kilo-sessions.test.ts — Test, M, +135/-20 lines: adds and revises KiloSessions integration tests.
  • packages/opencode/test/kilocode/sessions/remote-ws.test.ts — Test, M, +60/-45 lines: revises the RemoteWS tests.

testAllow raises the classified AppRuntime count from 31 to 36 for the KiloSessions integration suite.
The classification covers Vcs.Service branch refresh, reconnects, limits, and failures, plus Session.Service checks that preserve complete session branches.
The guard still rejects unclassified references and any count mismatch.

Files
  • script/check-opencode-promise-facades.ts — Source, M, +5/-2 lines: adjusts the exact reference allowance and explains the service use in integration tests.

Release automation receives a minor-release request for kilo-code because the heartbeat gains optional metadata.
The release note covers instance kind, process startup time, and the current Git branch.

Files
  • .changeset/mobile-instance-metadata.md — Source, A, +5/-0 lines: adds the authored minor-release entry for the producer metadata.

Tests: 4 files updated (+280/-71 lines): remote.test.ts, kilo-sessions.test.ts, remote-protocol.test.ts, and remote-ws.test.ts.
Generated: 0 files.


Issue

No issue number was supplied. This pull request implements the approved optional metadata slice.

Context

This pull request adds producer metadata for later mobile instance selection. It contains no cloud or mobile implementation changes.

Worktrees

  • Kilo-Org/kilocode: /Users/igor/Projects/.worktrees/mobile-ux-ad6d-kilocode — contains all 10 changed files: 6 source files and 4 test files.
  • Kilo-Org/cloud: /Users/igor/Projects/.worktrees/mobile-ux-ad6d — cloud context only; no changes belong to this pull request.

Both worktrees retain branch mobile-ux-ad6d.
Review range: origin/main...mobile-ux-ad6d-s1; producer review head: bd5f1eb311ba977913490470aa468949da21e83c.
The supplied statistics total 314 insertions and 78 deletions.

Companion pull requests

Screenshots / Video

Visual Changes: N/A

This producer pull request has no direct interface change. N/A also records the missing accepted attachment report for the complete section.
The companion mobile changes still affect the interface.

before after
N/A N/A

How to Test

Verification

No end-to-end (E2E) report is attached because the complete functional runtime loop has not passed.
Generation 21 completed producer startup and the final N04 observation; required functional native proof remains incomplete.
The owner-descoped visual variants do not block readiness.

The permitted G3, settings, and observer units are complete; no remaining functional flow has standalone native proof.
The preparation cap prevents the missing flow and observer implementation, so the complete required functional loop has no pass.

Manual/local verification

  • The description agent did not rerun product checks. The handoff supplies no human test evidence.

Recorded verification

These results come from earlier agents; this description round runs no product check or continuous integration (CI) job.

  • All seven unchanged review heads passed the previous mechanical gates after the catalog placement correction.
  • The previous review record reports approving summaries and zero unresolved threads for all seven pull requests; none is human-ready.
  • The dispatcher refreshes the mechanical gates after publication.
  • Implementation-agent evidence: all 155 focused command-line interface (CLI) tests passed.
  • That 155-test result covers the initial producer implementation; the later CLI repair passed 107 tests and its scoped checks.
  • Recorded backend case B04 passed modern metadata checks and legacy normalization.
  • Recorded backend case B05 passed same-process reconnect with new ingest processes and unchanged producer identities, metadata, and capabilities.
  • These backend reports use earlier source heads; they do not establish a current native pass or permission to merge.

Retained B01–B04, N01, N02, N03-functional, and B05 have only their historical limited proof.

Carried proof and limits

Case Actual proof and source Present disposition
B01–B03 Generation 4 recorded 21 backend requests; retained in backend-g4-baseline-r1-report.md and decisions. Carry backend baseline proof only; no native settings-recovery proof follows.
B04 e2e-backend-producers-g5-r2-p1M2tB/backend-producers-g5-r2-report.md; actual producer metadata and legacy compatibility. Carry backend producer proof; current product changes do not alter that runtime contract.
B05 Generation 11 recorded same-process producer identity and metadata after ingest restart. Carry backend reconnect proof only; do not start genuine producers again.
N01 e2e-ios-zero-g5-r1-yyqmew/e2e-round.md:7–20; ios-baseline-zero-counts passed native empty counts, tab selection, and Home return. Complete limited empty-state proof; no unknown/loading/error, positive-count, keyboard, or localization proof follows.
N02 e2e-ios-baseline-r2-o8LO9w/e2e-round.md:13–29; ios-baseline-empty-history passed empty history and Go back. Complete limited empty-history proof; no populated/filter/search/later-page liveness proof follows.
N03-functional e2e-ios-producers-g11-r9-TRx1yg/e2e-round.md:31; producer-n03-g8.js passed genuine trio selection, checked identity, cancellation, and draft preservation. Historical head dce78998d885938e3f8bddcedd031f7f475776c9; no controlled-collision, keyboard, or current localized-label proof follows.
N04-functional e2e-ios-producers-g11-r9-TRx1yg/e2e-round.md:51–59; reconnect facts passed before the visual variant failed; Options expired was not reached. Preserve the partial assertions and failed verdict; no complete standalone flow pass exists.
N04 final variant Generation 21 retained the failed dark/extra-extra-large observation after header repair. Owner-descoped presentation; never use it as proof or a blocker for required default-state behavior.

Historical proof heads for N03-functional and B05 only:

  • Cloud: dce78998d885938e3f8bddcedd031f7f475776c9.
  • CLI: e8a3ce11fdaf26dd395629f4d5ee3463f7e7ad2f.

Earlier cases retain their own earlier evidence heads.
Historical N03 depends on spent producer inputs, stopped processes, and old coordination markers.
N01 and N02 cover completed criteria, not missing renewed flows; they justify neither an empty batch nor a new producer lifecycle.

Reviewer test steps

  1. Use Bun 1.3.14 with the declared dependencies installed.
  2. In packages/opencode, run each suite in a separate Bun process:
bun test ./test/kilocode/cli/cmd/remote.test.ts
bun test ./test/kilocode/kilo-sessions.test.ts
bun test ./test/kilocode/sessions/remote-protocol.test.ts
bun test ./test/kilocode/sessions/remote-ws.test.ts
  1. Confirm that each command executes tests and exits successfully.
  2. From the repository root, run the facade guard:
bun run script/check-opencode-promise-facades.ts

Blocked checks and substitute verification

  • The historical producer record reports no blocked local check; full type, build, and cross-platform checks remain with continuous integration (CI).
  • Focused tests and backend passes do not replace native proof or a passing attachment report.
  • The complete feature tip records generation 21 startup success, the owner-descoped N04 result, and the remaining functional gaps.
  • The preparation cap prevents missing flow and observer implementation; no remaining functional flow has standalone proof and current runtime prerequisites.

Current native gate — generation 33

The permitted G3, settings, and observer units have completed their checks and reviews.
No remaining functional flow qualifies for the next batch.
No native lifecycle, resource start, new preparation unit, or historical replay occurred.

  • The observer closure covers the gap inventory only; both executable bindings remain unavailable.
  • Host tests, prepared modules, and clean reviews are not standalone native proof.
  • The cap prohibits new preparation for a criterion without a standalone-proved flow.
  • Only standalone-proved flows with current prerequisites can enter the requested batch.
  • Historical completed cases must not be rerun solely to fill an otherwise empty batch.
  • Exclusion does not waive any required functional criterion or permit human-ready.
  • Different cold starts, adapter states, accounts, and fixtures must keep separate developer groups.
  • Mandatory preparation, exact authentication, budgets, default appearance and text, installation safety, and resource cleanup remain required.

The current inventory records these initialized sources and verified published trees:

Worktree Initialized source Verified published tree
/Users/igor/Projects/.worktrees/mobile-ux-ad6d 9f44255b82553cbae2aa2417e76a86d2cc505a9d faab85b479373a2e454e492e922face4a3a3b453
/Users/igor/Projects/.worktrees/mobile-ux-ad6d-kilocode 31e293d15dc1af38f5c3f74cbe02bc45b90f24f2 a779ae1f764e936b1865504cf826e4a151ec402c

The inventory records clean, pinned initialized branches and fresh passing stack.sh verify results for both worktrees.
These initialized source heads are not this pull request's review refs or native proof.
No current device claim, runtime lease, account readback, service identity, or fixture readiness is claimed.
All retained runtime identities are historical and stopped.

Preparation Retained host evidence and limit
G3 101 host cases and clean fresh review; automatic unsupported catalog response is approved.
G5 The existing guarded hold helper and disposable proof are approved; do not grow or replay them.
G6 Inventory and reuse contracts are approved; no live inventory or safe existing-row readiness has run.
G7 Same-membership restoration is approved; no native removal/restoration proof has run.
G4 Both isolated namespaces are preserved and unused; adapter/cold-start states require separate groups.
History 59 cases and clean bounded review; native calibration and real fixtures remain pending.
Connectivity 81 cases and clean bounded review; no native proof or executable announcement binding exists.
Keyboard/locale 31 wait cases and 74 retained/extended cases pass; actual focus and locale proof remain pending.
Settings 93 cases, eight scoped checks, and clean bounded recheck; no standalone native proof exists.
Observer The gap inventory completed closure and review; it supplies neither executable binding nor native proof.

No new runtime pass, uploaded demo, human-ready, assignment, or product merge exists.

Final authorized lifecycle — generation 21

The single authorized lifecycle ran; startup succeeded, and functional verification remains incomplete.

  • Workflow PR Use the phrase feature-merge instead of superset in displayName and README #315 merged the shared direct stage/launch repair at 0efb7d9f791354597699594ab493ce17cb07e314.
  • The lifecycle used the supplied paneIdentity repair with unchanged identity guards.
  • The lifecycle also used the separate selectedProducer repair with unchanged identity guards.
  • The supported bundle, fresh credential, preparation, terminal, remote, legacy, and dispatcher-trio passed once.
  • No terminal failure occurred, so the owner's conditional N04 startup waiver did not trigger.
  • The retained binary and final flow hashes matched the retained authorization record.
  • No replay, preparation test, native assertion, locator, or gesture changed.

Preparation retained these results:

  • Attempt 1 returned E2E NOT READY at profile-settle after 90 seconds while Appium started.
  • One recovery completed the Appium digest and ordinary preflight; the digest exposed the development launcher, not a signed-in surface.
  • Attempt 2 returned E2E READY and proved the account and four accessible choices.
  • Cloud Agent alone was checked; the English Run on picker remained open.
  • No timeout increased; no producer or observation restarted.

The verifier returned DONE VERIFICATION FAILED; the native wrapper returned CASE PASS for collection only, not visual acceptance.

  • Independent review found severely clipped Run on and Done labels under confirmed dark extra-extra-large settings.
  • The owner later descoped that visual criterion; the recorded failure does not block readiness.
  • Scrolling remains inconclusive: the flow issued zero swipes and retained unchanged target rectangles.
  • Enlarged terminal labels prevented independent target identification; the observation establishes no default-size scrolling defect.
  • Both original settings restored to light appearance and large text with matching readbacks.
  • The verifier's baseline check returned OK; no code, flow, or environment file changed.
  • A restored-boundary overlap does not prove a persistent default-state regression.
  • Missing legacy start text is expected; the legacy advertisement omits that field.

Retained verifier record: /Users/igor/Projects/.scratch/kilo-workflow-mobile-ux-ad6d.yql1or/e2e-ios-n04-last-g21-r1-FRm7mo/e2e-round.md.
Observation root: /Users/igor/Projects/.scratch/kilo-workflow-mobile-ux-ad6d.yql1or/producer-g20-n04-last-native.

  • Header still: N04-header-pre-scroll.png.
  • Terminal still: N04-scroll-visible.png.
  • Native state: native-state.json.
  • Raw recording: case/case.mp4.
  • Demo recording: case/case-demo.mp4.
  • Exact execution capture: case/case.log.

The verifier and visual checkers inspected the images; the dispatcher did not.
These local files are retained evidence, not public uploads or an uploaded demo.
No E2E reporter ran because the complete functional runtime loop has not passed.

  • Guarded cleanup and independent checks confirmed the owned session, processes, connections, credential environment, and runtime link were absent.
  • The recorder stopped, the device shut down, the owner stack stopped, and slot-2 was released; foreign resources remained untouched.
  • The generation 21 lifecycle authorization is spent; the current preparation cap and proof inventory govern further native work.

Owner-descoped criteria

  • Text-size variants and scaled-text geometry: owner-descoped.
  • Light/dark/theme variants and theme-only geometry: owner-descoped.
  • Contrast rendering and screen-reader presentation variants: owner-descoped.
  • N04 dark extra-extra-large header and scaled first-reveal observation: owner-descoped.
  • Final translated layout under visual variants: owner-descoped.

These criteria do not block readiness and receive no new runtime attempt.
Functional accessibility labels, roles, identifiers, and default behavior remain required.

Remaining functional proof gaps

  • Picker loading, Retry progress, empty Refresh, expiry, polling recovery, and displayed-fact collisions lack complete native proof.
  • Options expired remains unproved.
  • Controlled false-NetInfo, genuine transport failure, timeout, immediate recovery, and stale-result behavior remain unproved natively.
  • Personal/organization settings recovery in standalone/inline presentations remains unproved natively.
  • Populated normal/filtered/searched/paginated history and live Share labels remain unproved natively.
  • Organization-scoped live counts, cross-tab updates, invalid-state hiding, and cached rows remain unproved natively.
  • Keyboard focus return and functional accessible labels/roles remain incompletely proved.
  • Final localized labels and plurals lack resulting-head functional native proof.

All listed scenarios remain unproved; default functional labels, roles, identifiers, checked state, keyboard focus, and localization remain required.

Group Scenarios, criteria, and exact present exclusions
Picker LP01 (criteria 2, 3): g30-native-picker-report.md:3–5,60–66,85–87 contains no executable picker flow. G3 catalog compatibility is now approved, but no collision-selection flow or standalone proof exists.
LP02 (criterion 1): No executable state flow exists. Approved G5 controls cannot substitute for native loading, real error, Retry progress, empty Refresh, or polling observations.
LP03 (criteria 1, 4): No executable expiry/bridge-loss flow exists. Historical cancellation is retained, but silent expiry and Options expired remain unproved.
LP04 (criterion 5): Keyboard helpers are host-tested only; actual key paths, selectors, focus, and same-caller return remain uncalibrated and unproved.
History LH01 (criteria 15, 16): The approved history module has 59 host cases, not standalone native proof. Exact row selectors, scroll anchors, and the 35-root Org A registry remain runtime prerequisites.
LH02 (criterion 16): No native proof of initial/cached failures, preserved query recovery, unmatched states, or stale/denied row actions exists. Empty N02 proof covers only its recorded narrow state.
LH03 (criterion 17): No native localized Share-label or unchanged Home/card comparison exists; locale wiring and real row observations remain pending.
Counts and localization LC01 (criteria 18, 19, 21): g30-native-counts-report.md:3–5,61,69–74 contains no executable count flow or complete runtime schema. Full scoped totals and cross-tab/scope behavior remain unproved.
LC02 (criterion 20): No count flow exists. The reviewed observer inventory confirms no executable binding for actual committed unresolved organization state; the shared skeleton cannot distinguish it from request loading.
LC03 (criterion 20): No count flow exists. G7 restoration is host-approved only; actual selected-scope denial, committed removal history, exact restoration, and readbacks remain unproved.
LC04 (criterion 22): The locale module is host-approved, but picker/count integration and standalone native proof remain absent. All 15 reachable plural cases and eight group labels remain required.
Connectivity C01 (criteria 6, 7, 11): The connectivity module is host-approved only. Cold-start events, native selectors, timing correlation, and continuous announcement-invocation observation remain unproved.
C02 (criteria 6, 7, 11): Resume, the second nine-second false-source hold, HTTP 503 reachability, and retained content have no standalone native proof.
C03 (criteria 8, 10): Actual owned transport failure, delayed confirmation, immediate recovery, and exact localized invocations have no standalone native proof.
C04 (criteria 9, 10): The native three-second timeout and stale recovery order have no standalone proof. Host fixture tests cannot prove the native fetch deadline.
C05 (criterion 10): Native held actual outcomes, repeated sources, newer attempts, and out-of-order release remain unproved; complete invocation windows remain unavailable.
C06 (criteria 10, 11): Native destruction, quiet drainage, exact adapter restoration, and unmodified smoke remain unproved. No executable announcement observer exists through the full drain.
Settings S01 (criteria 12–14): g32-native-settings-closure-report.md:104–112 expressly records no standalone settings proof. Unknown cold boot, actual paused queries, Retry, and cached controls remain pending.
S02 (criteria 12–14): Actual organization standalone recovery, retained owner/member roles, selector/focus calibration, and native request evidence remain pending.
S03 (criteria 12–14): Personal inline recovery lacks actual healthy same-owner G6 inventory/readbacks, exact native focus calibration, and standalone proof. No installation mutation is authorized.
S04 (criteria 12–14): Organization inline recovery lacks actual healthy same-owner G6 inventory/readbacks, restricted-role native evidence, and standalone proof.
S05 (criteria 10, 14): Settings native destruction, exact adapter/caller restoration, listener absence, and unmodified smoke remain unproved.

The intersection of remaining criteria, standalone-proved flows, and current valid prerequisites is empty.
This is an authorization/evidence constraint, not a new product defect, failed check, or runtime attempt.
The required complete native gate cannot hold under that cap.

The completed catalogs, scoped tests, CI, and reviews do not substitute for these functional native criteria.
No human-ready label, new assignment, reviewer request, or product merge is permitted while the functional gate remains incomplete.

Historical direct startup — generation 19

These results describe generation 19, not the final generation 21 lifecycle.
The historical visual criteria do not form the current blocking list.

  • The owner confirmed an earlier update prompt consumed a startup character; the resulting ource command did not invoke the producer.
  • The owner retracted the earlier timing/load theory.
  • The final Q334 drill passed 5/5 for intact arguments, a real owned child, private capture, actual status, and cleanup.
  • Direct integration passed 97 focused cases and 62 retained rejection cases; namespace preparation passed 75 focused cases.
  • Native locators, gestures, and assertions stayed unchanged; non-live preparation establishes no native pass.
  • The supported iOS bundle, fresh credential preparation, and producer preparation passed.
  • Terminal start failed pending_pane_changed before the 240-second deadline.
  • The same recorded process ID, user ID, and birth time changed its observed executable from /bin/bash to kilo.
  • The guard accepted no producer identity; the owned pane remained running with an unknown exit status.
  • This evidence establishes neither the selected binary's runtime identity, its complete invocation, its advertisement, nor a product failure.
  • The dispatcher misread silent redirected tool output as success and called remote and legacy; both rejected startup_order before launch.
  • The trio snapshot, mandatory native preparation, and verifier never ran.
  • Generation 19 produced no native pass, screenshot, or recording; its header and six-scroll observations did not run.
  • No product source or review head changed during this preparation or lifecycle.
  • Guarded cleanup and independent owner checks passed; all resources stopped, and the dispatcher released the device slot.

Historical authorized startup — generation 17

These historical results come from the generation 17 lifecycle report.

  • Startup preparation passed 40 focused tests and 62 retained rejection cases; the native namespace passed 62 non-live cases.
  • The supported no-isolation Node launcher passed four real terminal fixtures.
  • The final flow changed only its namespace and receipt diagnostic; its locators, assertions, and gestures stayed unchanged.
  • The dispatcher completed the supported iOS-only bundle, fresh service status and credential, and producer preparation.
  • Terminal start failed with poll_deadline after the approved 240-second discovery budget.
  • The owned shell (process ID 35311) remained alive; diagnostics found no producer child and no completed exit receipt.
  • The producer exit status remains unknown.
  • The dispatcher retained private prelaunch output and safe diagnostics.
  • Remote and legacy startup, the trio snapshot, native preparation, and the verifier never ran.
  • Generation 17 produced no native locator, geometry, or gesture observation for the repaired-header and six-scroll criteria.
  • No product source or review head changed during this preparation or lifecycle.
  • Cleanup passed; the dispatcher stopped all owned resources and released the device slot.
  • That authorization is spent; it permits no additional lifecycle or locator repair.

Historical replacement startup — generation 16

  • The earlier non-live predicate regression passed; generation 16 did not rerun it or change the predicate.
  • The namespace-only replacement preparation kept the draft registration and locators unchanged.
  • The dispatcher completed the supported iOS-only bundle, fresh service status, private credential preparation, and producer preparation.
  • Terminal start returned wait_failed; its capture records WAIT TIMEOUT producer-start 60s, with no discovered advertisement.
  • Remote and legacy startup, the trio snapshot, native preparation, and the verifier never ran.
  • No native header or scroll observation exists; the timeout proves neither a historical predicate defect nor a product defect.
  • The replacement is spent and fully cleaned. No retry, locator repair, or other native scenario is authorized.

Historical failed startup — generation 14

During generation 14, terminal discovery returned poll_deadline before any advertisement.

  • The remote and legacy producers never started, so native preparation and the verifier did not run.
  • No header observation, scroll observation, or locator failure occurred.
  • This startup failure establishes no product defect or error inside a global workflow script.
  • That lifecycle is spent and fully cleaned.

Generations 16 and 17 used these source identities; they do not change this pull request's review range:

  • Cloud source: 9f44255b82553cbae2aa2417e76a86d2cc505a9d.
  • CLI source: 31e293d15dc1af38f5c3f74cbe02bc45b90f24f2.
  • Retained binary source: e8a3ce11fdaf26dd395629f4d5ee3463f7e7ad2f.

Generation 19 used these source identities without accepting a producer runtime identity.
N01's historical image-only review remained pending; its native labels did not prove screen-reader speech or external-keyboard focus.
The owner now descopes screen-reader presentation variants, but functional accessibility and keyboard focus remain required.

Human steps

  • before merge: Resolve the preparation authority before further native work.
  • before merge: Record native acceptance and current-head media. The preparation cap prevents the missing flow and observer implementation.
  • before merge: Attach current-head screenshots and recordings for the companion interface changes.
  • before merge: Complete the template's personal-review attestation.
  • before merge: Complete human review after all required functional gates pass.
  • before merge: Merge the product stack from bottom to top only after all required functional gates pass.
  • No product setup, secret, migration, flag, or deployment-order change is required before or after merge.
  • No new environment value is required.
  • after merge: No human step is known.

The media steps apply to required functional/default proof, not to owner-descoped visual variants.
No product merge is performed in this round.

Notes

The permitted G3, settings, and observer preparation units are complete. No remaining functional flow has standalone native proof. The preparation cap prevents the missing flow and observer implementation. Required functional native verification remains blocked; no new native lifecycle ran.

Generation 21 completed producer startup and the final N04 observation. The header failed under dark extra-extra-large settings; scrolling remained inconclusive. These visual variants are owner-descoped. Required functional native proof remains incomplete.

Native bot verification is pending on the complete mobile feature tip. This PR only adds optional producer metadata.

Checklist

  • Issue linked above, or exception explained
  • Tests/verification described
  • Screenshots/video included for visual changes, or marked N/A
  • Changeset considered for user-facing changes
  • I personally reviewed the diff and can explain the changes, including any AI-assisted work.

The handoff does not include the author's personal-review attestation.

Get in Touch

No contact handle was supplied.

Stacked PRs — merge bottom to top. Each level shows only its own diff.

Runtime verification (E2E, user advocacy, simplify) runs on the tip PR over every level.
Every level keeps its own checks, its own bot review, and its own threads; each one is answered on its own PR.
Each level is its own deliverable: it builds and passes its own checks alone.
A finding on a level is repaired on that level, then carried upward with stack.sh forward.

  1. mobile-ux-ad6d-s1feat(remote): advertise instance kind and process identity #13565 ← this PR

Comment thread .changeset/mobile-instance-metadata.md Outdated
@kilo-code-bot

kilo-code-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (4 files)
  • .changeset/mobile-instance-metadata.md
  • packages/opencode/test/kilocode/kilo-sessions.test.ts
  • packages/opencode/test/kilocode/sessions/remote-protocol.test.ts
  • script/check-opencode-promise-facades.ts
Previous Review Summary (commit e8a3ce1)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit e8a3ce1)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 1
Issue Details (click to expand)

SUGGESTION

File Line Issue
.changeset/mobile-instance-metadata.md 5 Changeset describes instance-picker UI this PR does not ship
Files Reviewed (9 files)
  • .changeset/mobile-instance-metadata.md - 1 issue
  • packages/opencode/src/cli/cmd/remote.ts - 0 issues
  • packages/opencode/src/kilo-sessions/instance-advertisement.ts - 0 issues
  • packages/opencode/src/kilo-sessions/kilo-sessions.ts - 0 issues
  • packages/opencode/src/kilo-sessions/remote-protocol.ts - 0 issues
  • packages/opencode/test/kilocode/cli/cmd/remote.test.ts - 0 issues
  • packages/opencode/test/kilocode/kilo-sessions.test.ts - 0 issues
  • packages/opencode/test/kilocode/sessions/remote-protocol.test.ts - 0 issues
  • packages/opencode/test/kilocode/sessions/remote-ws.test.ts - 0 issues

Fix these issues in Kilo Cloud


Reviewed by grok-4.6 · Input: 99.4K · Output: 6.3K · Cached: 230.4K

Review guidance: REVIEW.md from base branch main

@iscekic

iscekic commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator Author

(bot) The companion ingest PR is Kilo-Org/cloud#5666. Native verification remains pending on the complete mobile feature tip.

@iscekic
iscekic merged commit 49692a6 into main Sep 1, 2026
33 checks passed
@iscekic
iscekic deleted the mobile-ux-ad6d-s1 branch September 1, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants