Tracking issue collecting the breaking cleanups deliberately deferred to the next major version, so they ship together instead of scattering. All three were audited and verified in the July 2026 overengineering audit (#1367 arc).
1. Remove the legacy batch-step {command, positionals, flags} shape
src/cli/batch-steps.ts: ~90 of ~140 lines exist solely to translate the deprecated shape into the current {command, input} shape (readLegacyCliBatchStep, assertLegacyBatchStepKeys, readLegacyPositionals, readLegacyFlags, legacyStepToStructuredStep, cliFlagsFromBatchStep). A runtime deprecation warning ("deprecated and will be removed in the next major version") has been live since the structured shape became primary, and cli-help documents the boundary. Removal leaves readCliBatchStepsJson as a thin JSON-array validate + parseBatchStepRuntime map.
2. Remove the deprecated rotate SDK client surface
The runtime-layer duplicate was already removed in #1367 (the CLI alias in #1277). What remains is the published back-compat surface, annotated "Retained until the next major":
agent-device-client.ts rotate wrapper (independent one-line delegation to orientation with an action: 'rotate' relabel)
client-types.ts RotateCommandOptions / RotateCommandResult / DeprecatedCommandClient
3. Client-types narrowing (Record<string, unknown> → typed command results)
The largest remaining simplification (~−550 lines by earlier estimate), and the reason this needs a major: it narrows public client return types, which is API-changing for SDK consumers even though it strictly increases type information. The command-descriptor foundation it builds on (#905–#911) is merged. Needs a design pass on migration/compat notes before implementation — it is a typed-results migration, not a mechanical dedup.
Non-goals
Deprecated --session-locked / --session-lock-conflicts and replay export --format were already removed in #1367 (pre-1.0 breaking, CHANGELOG'd) and are not part of this bundle.
Tracking issue collecting the breaking cleanups deliberately deferred to the next major version, so they ship together instead of scattering. All three were audited and verified in the July 2026 overengineering audit (#1367 arc).
1. Remove the legacy batch-step
{command, positionals, flags}shapesrc/cli/batch-steps.ts: ~90 of ~140 lines exist solely to translate the deprecated shape into the current{command, input}shape (readLegacyCliBatchStep,assertLegacyBatchStepKeys,readLegacyPositionals,readLegacyFlags,legacyStepToStructuredStep,cliFlagsFromBatchStep). A runtime deprecation warning ("deprecated and will be removed in the next major version") has been live since the structured shape became primary, andcli-helpdocuments the boundary. Removal leavesreadCliBatchStepsJsonas a thin JSON-array validate +parseBatchStepRuntimemap.2. Remove the deprecated
rotateSDK client surfaceThe runtime-layer duplicate was already removed in #1367 (the CLI alias in #1277). What remains is the published back-compat surface, annotated "Retained until the next major":
agent-device-client.tsrotatewrapper (independent one-line delegation toorientationwith anaction: 'rotate'relabel)client-types.tsRotateCommandOptions/RotateCommandResult/DeprecatedCommandClient3. Client-types narrowing (
Record<string, unknown>→ typed command results)The largest remaining simplification (~−550 lines by earlier estimate), and the reason this needs a major: it narrows public client return types, which is API-changing for SDK consumers even though it strictly increases type information. The command-descriptor foundation it builds on (#905–#911) is merged. Needs a design pass on migration/compat notes before implementation — it is a typed-results migration, not a mechanical dedup.
Non-goals
Deprecated
--session-locked/--session-lock-conflictsandreplay export --formatwere already removed in #1367 (pre-1.0 breaking, CHANGELOG'd) and are not part of this bundle.