Skip to content

COOL IDEA™: publish a reusable Wesley target for generated domain SDKs #828

Description

@flyingrobots

Opportunity

v19.0.1 can document and prove generated domain SDKs honestly, but each application still owns a renderer that maps Wesley operation metadata to git-warp Intents and bounded Observers. The checked-in users renderer is executable reference evidence, not a universal consumer tool.

A reusable, versioned git-warp Wesley target could remove most copy-and-adapt work while preserving the domain-free compiler boundary.

Product boundary

  • Wesley continues to own GraphQL structure, deterministic IR, request types, and directive metadata.
  • The git-warp target owns an explicit versioned directive vocabulary and the mapping from supported directives to runtime-backed Intent and Observer constructors.
  • Unsupported intent kinds, readings, decoders, cardinalities, or unbounded plans fail generation with structured diagnostics.
  • The target never guesses application semantics that are absent from the schema or target configuration.
  • Applications may still provide extension mappings for domain-specific validation and decoders.

Possible workflow

wesley target run git-warp \
  --schema src/warp/users.graphql \
  --out src/generated/users.generated.ts

The concrete command should follow Wesley's supported external-target protocol rather than hard-coding a private integration.

Acceptance sketch

  • Publish a versioned target descriptor and input/output contract.
  • Generate deterministic request types, runtime validators, Intents, and bounded Observers from the supported directive subset.
  • Import only supported root and /advanced git-warp surfaces.
  • Emit stable diagnostics for every unsupported or ambiguous mapping.
  • Prove byte-stable regeneration, consumer typechecking, and packed-package execution against a disposable real-Git Runtime.
  • Update the migration guide from the application-owned renderer recipe only after the reusable target is published and its version is pin-able.

Dependency posture

This is follow-up developer-experience work after #807 and the v19.0.1 migration-guidance milestone. It is not a v19.0.1 release blocker.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:apiPrimary work area: api.area:toolingPrimary work area: tooling.priority:laterDeferred or speculative work.priority:nextNext in line after active work.status:availableOpen and available for prioritization; not blocked or actively in progress.type:featureNew capability or product behavior.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions