Wheeler

Wheeler Improvement Proposals

A Wheeler Improvement Proposal, or WIP, records a decision that is too large for an issue or pull request. It explains the problem, sets the rules, assigns ownership, chooses a design, and says how the work will be tested and adopted.

WIPs are Wheeler's long-term decision record. A WIP-NNNN number identifies a proposal. It does not mean the work is currently underway. Proposals may describe planned, accepted, or active work. Guides and reference pages describe features that work today, so they must not present an unfinished WIP as current behavior.

When to write a WIP

Write a WIP for a change to:

A local refactor, small bug fix, test, documentation correction, or private optimization does not need a WIP. Write one only when the change affects one of these contracts.

Statuses

StatusMeaning
DraftThe author is still shaping the problem and design.
ReviewThe proposal is ready for review of its meaning, implementation, and migration.
AcceptedMaintainers approved the decision, but implementation has not started.
ImplementingWork is underway, and the progress checklist must stay current.
ImplementedTests, documentation, migration, and required deletion are complete.
SupersededA later WIP replaces all or part of this decision.
WithdrawnThe proposal will not move forward.

Only maintainers may change a WIP to Accepted, Implemented, Superseded, or Withdrawn. A major change to the meaning or architecture sends an accepted proposal back to Review.

How to create a proposal

  1. Copy the template to WIP-NNNN-short-title.md. Use the next unused four-digit number.
  2. Fill in every metadata field, including owners, dates, and dependencies.
  3. Write the summary, motivation, and use cases before choosing opcodes, classes, or APIs.
  4. Define the semantic model and its invariants. When state can change, explain forward and reverse behavior.
  5. Keep the proposal focused on one main decision with an acceptance suite that can finish on its own.
  6. Change the status to Review and ask each affected owner for feedback.
  7. Resolve every open question, or give it an owner and decision date.
  8. After acceptance, implement the design in reviewable stages. Update the progress checklist in the same pull requests.
  9. Update the current reference docs after the feature works.
  10. Mark the proposal Implemented only when tests, docs, migration, and required deletion are done.

Once a proposal leaves Draft, its number and filename stay fixed. A Draft may be renamed or split before review when its scope is wrong. Update every link in the same change, do not reuse another proposal's number, and do not leave a redirect file that creates two sources of truth. Git keeps the old history. Never reuse the number of a withdrawn proposal. When a later decision replaces a reviewed proposal, keep both files and connect them through Supersedes and Superseded by.

Depends on lists hard implementation requirements. Put related but nonblocking work in References. Status shows how mature the decision is, not how urgent the work is.

Design expectations

A Wheeler proposal should:

Write "Not applicable" and give a reason for sections that do not apply. Split work that can be accepted, implemented, or rolled back alone. Put final API reference in the manual after implementation. Keep task planning in issues.

Cross-proposal IR invariant

Every WIP must preserve one Wheeler intermediate-language model. Canonical .wbc 1.0 is the only semantic artifact. It contains the closed typed IR needed by the selected target: classical register and region bodies, reversible relations and inverse bodies, ordered hybrid workflows, backend-neutral quantum regions, effects, ownership, proofs, and bounds.

WIP-0029 may add non-executable generic typed bodies as a versioned library section inside .wbc. Those bodies do not create a separate source-template or host-object authority.

"Reversible IR" does not mean every operation is bijective. Each operation declares one explicit relation:

Source syntax, generic specialization, class evidence, tests, proofs, packages, native lowering, and documentation must keep those differences. No WIP may treat rewind as inverse, replay as physical reversal, compensation as uncomputation, a provider circuit as semantic IR, or an unchecked annotation as proof. Host ASTs, JVM bytecode, LLVM IR, native objects, and provider payloads are derived implementation data. Verified Wheeler IR remains authoritative.

Proposals

WIPStatusDecisionArea
WIP-0001ImplementingReversible bytecode and machine-state contractVM, bytecode, artifacts, history
WIP-0002ImplementingUnified classical and quantum semanticsLanguage, hybrid execution, quantum IR
WIP-0003ImplementingQuantum target contract and OpenQASM interoperabilityTargets, OpenQASM, simulators, hardware
WIP-0004ImplementingHybrid jobs, history, and replayRuntime, jobs, transactions, replay
WIP-0005ImplementingWheeler source language profileLanguage, compiler, ergonomics
WIP-0006ImplementingConcrete syntax, editor tooling, and teaching profileParser, Tree-sitter, documentation
WIP-0007ImplementingSelf-hosting compiler and reproducible bootstrapCompiler, language, trust chain
WIP-0008DraftJava-free runtime and native bootstrapRuntime, native code, distribution
WIP-0009ImplementingWheeler package and build systemPackages, builds, registry, tooling
WIP-0010DraftExecutable application portfolioExamples, conformance, applications
WIP-0011DraftIntegrated proofs and certificatesLanguage, proofs, trusted kernel
WIP-0012DraftWheeler standard libraryTypes, collections, quantum resources
WIP-0013ImplementingTyped frames, control flow, and bounded storageTypes, VM, storage, bootstrap
WIP-0014DraftBounded certified program synthesisFinite types, synthesis, quantum search, proofs, packages
WIP-0015DraftCertified adversarial schedule explorationProtocol models, concurrency, replay, proofs
WIP-0016DraftOne nonconfigurable source formatter with documentation enforcementSource formatting, documentation, editor and build tooling
WIP-0017ImplementingCompile-time constants and finite enumsNamed values, finite types, reversible and coherent semantics
WIP-0018DraftIntegrated deterministic testingTest declarations, runners, fixtures, replay, quantum and proof assertions
WIP-0019ImplementingIntegrated documentation publicationWheeler API docs, safe static rendering, Javadoc, links and search
WIP-0020DraftSemantic coverage and evidence accountingClassical, reversible, quantum, workflow and proof coverage
WIP-0021ImplementingUniform call and assertion syntaxSource syntax, assertions, reversible and quantum evidence, typed test doubles
WIP-0022DraftPackage instances and deterministic target graphsPackages, resolver, modules, lockfiles
WIP-0023DraftRecipe repositories and reproducible package revisionsRepositories, revisions, provenance, publication
WIP-0024DraftCanonical install images and system-package exportDebian, RPM, distribution tooling
WIP-0025DraftNative ABI descriptors, FFI, and system capabilitiesLanguage, runtime, native ABI, packages
WIP-0026DraftSelf-contained platform-native Wheeler executablesNative images, ELF, Mach-O, PE, embedded WBC
WIP-0028DraftDeterministic ownership, borrowing, regions, and no implicit tracing GCOwnership, borrowing, memory, regions, destruction
WIP-0029DraftParametric polymorphism, kinds, const generics, and bounded specializationTypes, generics, kinds, specialization
WIP-0030DraftCoherent type classes, associated types, instances, and lawsClasses, evidence, laws, packages
WIP-0031DraftEffect-, reversible-, coherent-, and unitary-polymorphic callablesEffects, callables, reversibility, quantum operations
WIP-0032DraftUnified asynchronous I/O fabric, operation graphs, and durability receiptsI/O, storage, networking, RDMA, durability, quantum workflows
WIP-0033DraftTyped coherent values and explicit reversible embeddingsLanguage, types, coherent values, quantum IR, proofs
WIP-0034DraftStructured uncomputation and clean ancilla scopesLanguage, ownership, uncomputation, ancillas, quantum IR
WIP-0035DraftReversible and coherent control flowLanguage, control flow, reversibility, coherent control, proofs
WIP-0036DraftSymbolic resource contracts and compositional cost evidenceLanguage, resource bounds, proofs, quantum planning, diagnostics
WIP-0037DraftHierarchical semantic routine graphs and verified transformationsIR, bytecode, routines, transformations, resource analysis, tooling
WIP-0038ImplementingRegular instruction forms and extension registryBytecode, VM, verifier, compiler, extensions, tooling
WIP-0039DraftDeterministic structured task machine and global rewindVM, structured tasks, scheduling, atomics, rewind
WIP-0040DraftExplicit schedule witnesses for reversible task scopesLanguage inverse, task witnesses, shared atomics
WIP-0041DraftReversible result slots and explicit presence valuesLanguage, returns, ownership, coherent values
WIP-0042DraftFirst-principles reversible and quantum computing tutorialsTutorials, pedagogy, executable examples, quantum foundations