Skip to content

tracking: what the first emitter needs from the IR, the passes, the engine and its design, in order #977

Open
28 of 40 issues completed

Description

@OmarAlJarrah

The goal and context come first, then the ordered plan. Each step is a sub-issue, and the blocked-by relations are set on the issues themselves.

End goal

The first milestone's emitters (Go, Kotlin/JVM and Kotlin KMP, #901) can be built on the golden spec, the Cloudflare API schema (cloudflare/api-schemas openapi.json), without guessing. Done means all of the following:

  • every fact the plan layer and the refiners read is either carried by the IR or derived by one stated rule;
  • every value they read has a rule in docs/emitters/ for each case the golden spec contains;
  • the engine owns what the design gives it: fatality, rendering and writing.

Context

The measurements in #919 walked every compiled document of the golden spec and a corpus of 1,838 OpenAPI specs the way milestones M3a to M3c would, at c387e25c. They counted where a consumer has to guess.

  • Design gaps. The design gives no rule for return shapes beyond models and lists, base URLs, nameless enum members, discriminated unions as the compiler emits them, anyOf, streams, non-model error bodies, or most Unmodeled entries.
  • Facts the IR doesn't carry. Usage, which the design reads for every type, is never computed.
  • What the IR does carry. A reflection walk found 46% of its declared fields never set by any compiler, which bounds what M3 should implement.

#919's report carries the evidence and the commands behind every number.

Plan

1. Settle the contract before plan code is written

2. First models, enums and one client (M3a)

3. The hard axes and operations (M3b, M3c)

Out of scope: the OpenAPI front end's own plan (#920), and the architecture and contributor-path work (#976).

Priority: P0, the tier of its highest open step (#255).

Activity

  1. added
    type:choreRefactor or cleanup, no behavior change
    priority:P0Blocks the first emitter: an IR or plan contract hole, or a valid spec it fails on
    on Oct 19, 2026
  2. 13 remaining items

  3. OmarAlJarrah commented on Nov 2, 2026

    @OmarAlJarrah
    MemberAuthor

    The emitter-design steps of this plan now each have a PR. The design docs work goes in eight stacked PRs, which merge in order, plus one on #1229:

    Still open among this tracker's steps once those land, none of them design work: #821 (Validate's diagnostic order), #665 (pagination's IR gaps) and #647 (canonical-name collisions), which belong to the IR and passes. The tracker stays open for them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:P0Blocks the first emitter: an IR or plan contract hole, or a valid spec it fails ontype:choreRefactor or cleanup, no behavior change

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions