Skip to content

Complete public Node-client result narrowing on an explicit semver track #1183

Description

@devin-ai-integration

Problem

CONTEXT.md intentionally defers narrowing roughly 15 public Node-client methods that still return
Record<string, unknown>. Canonical result contracts now exist for a typed subset, but completing
the migration changes the public TypeScript API and requires an explicit compatibility decision.

Scope

  • Inventory every remaining broad-return client method and map it to an existing canonical command
    or domain result contract.
  • Move missing option/result contracts into neutral command/domain modules; the client consumes
    them rather than owning canonical command shapes.
  • Narrow methods in coherent command-family batches with compile-time parity tests.
  • Add migration/release notes describing source compatibility and any newly exposed exact unions or
    optionality.

Decision required

Before implementation, maintainers must choose whether this ships in the next minor as an intended
type narrowing or waits for the next major. Do not hide the decision with casts or compatibility
aliases that preserve the broad type indefinitely.

Constraints

  • Keep this separate from the executable-contract projection research spike.
  • No new runtime schema dependency or generated source.
  • Runtime payloads remain byte-compatible unless separately approved.

Acceptance criteria

  • The inventory is complete and linked to canonical ownership.
  • The selected release/semver policy is documented.
  • Migrated methods no longer fall back to Record<string, unknown>.
  • Public type tests, typecheck, lint, package build, and relevant client tests pass.

Origin: CONTEXT.md Phase 2c and post-#1174 architecture follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions