Skip to content

UW Markdown RFCs ​

This directory contains the request-for-comments documents that precede any normative change to UW Markdown — the format spec, the protocol spec, the JSON Schemas, the conformance corpus, or the public API of @uwmd/core.

See GOVERNANCE.md for when an RFC is required and how it gets accepted.

Process ​

  1. Copy 0000-template.md to NNNN-<short-slug>.md using the next free number.
  2. Fill in the design, compatibility, conformance, and implementation sections.
  3. Open a pull request or, in owner-led mode, commit it with the implementation.
  4. The project owner accepts, requests changes, or rejects the proposal.
  5. In owner-led mode there is no mandatory waiting period. After collaborative mode activates under GOVERNANCE.md, a normative RFC remains open for public comment for at least 14 days before acceptance.
  6. Accepted RFCs move to accepted; after the implementation ships, they move to implemented. Rejected and superseded RFCs remain as design history.
  7. An RFC whose own deliverable is the decision — it defines no fields and ships no code — is decided rather than accepted, and that is terminal. See Status values for the full vocabulary and for how decided differs from accepted.

Index ​

#TitleStatusAffects
0001Locale negotiationimplementedformat, protocol, core, conformance
0002Module signingimplementedprotocol, core, conformance, tooling
0003Custom asset-class declarations from modulesimplementedformat, protocol, core, conformance, tooling
0004Conformance test runner v2 (language-agnostic)implementedprotocol, core, conformance, tooling
0005Stochastic calculationsimplementedprotocol, core, conformance
0006Hospitality reference moduleimplementedcore, conformance, tooling
0007Sensitivity tables as a calc primitiveimplementedprotocol, core, conformance
0008Lease-up modelingimplementedprotocol, core, conformance
0009_meta v2 sub-object reorganizationimplementedformat, protocol, core, conformance
0010Signed blocksimplementedformat, protocol, core, conformance, tooling
0011Capability tokens for write authorizationimplementedprotocol, core, conformance
0013Embedding-based corpus retrievaldraftprotocol, core, conformance
0014Extensible multi-format interchangeimplementedformat, protocol, core, conformance, tooling
0015Portfolio and relationship profilesimplementedformat, protocol, core, conformance, tooling
0016Signed deterministic verification receiptsimplementedformat, protocol, core, conformance, tooling
0017.uw.md Lite / .uwx.md Extended source splitimplementedformat, protocol, core, conformance, tooling
0018Composable document profiles and deal packagesimplementedformat, protocol, core, conformance, tooling
0019Mixed-use composition as a document shapeimplementedformat, protocol, core, conformance, tooling
0020Align the format spec and examples with .uwx.mdimplementedformat, protocol, conformance, tooling
0021Composable UWX documents — externalization, composites, rollup receiptsimplementedformat, protocol, core, conformance, tooling
0022Market data as an attributable UW documentimplementedformat, protocol, core, conformance, tooling
0023A numeric model and a single quantization boundaryimplementedprotocol, core, conformance, tooling
0024Pin the iterative solvers so two engines agree on a rootimplementedprotocol, core, conformance
0025Scale percent displays by moving the point, not by dividingimplementedformat, core, conformance
0026A typed capital stack — tranches, preferred equity, and stack-aware sizingimplementedformat, protocol, core, conformance, tooling
0027Declare every asset class's size intensive, onceimplementedformat, protocol, core, conformance, tooling
0028Make a missing required section a reportable defectimplementedformat, core, conformance
0029Make stage requirements class-awareimplementedformat, core, conformance
0030Make partial conformance mechanically checkableimplementedprotocol, core, conformance, tooling
0031Reconcile the source vocabularies and close the unpoliced-write pathimplementedformat, protocol, core, conformance, tooling
0032State how _meta.provisional interacts with signingimplementedprotocol
0033Scope capital_stack to one point in timeimplementedformat
0034Calendar-anchored cash flows — dated series, day counts, deterministic xirr/xnpvimplementedformat, protocol, core, conformance
0035Distribution waterfall — state-and-verify promote, pref, and catch-up over a dated seriesimplementedformat, protocol, core, conformance
0036IRR-hurdled waterfall tiers — a closed-form boundary, not a nested solveimplementedformat, protocol, core, conformance
0037Cross-check resolution over variant maps, and a validation coverage channelimplementedformat, protocol, core, conformance
0038Tax basis on stated return metricsimplementedformat, protocol, core, conformance
0039Data-center module — the first product module on a module-declared asset classimplementedcore, conformance, tooling
0040Variant roles — resolve cross-checks by a declared role, not a key nameimplementedformat, protocol, core, conformance
0041Explicit period addressing for the standard seriesimplementedformat, protocol, core, conformance
0042Stated period inputs in refinementimplementedprotocol, core
0043Contextual Excel period bindingsimplementedprotocol, core, tooling
0044Project verified lease-up amounts onto explicit cash datesimplementedprotocol, core, conformance, tooling
0045Assemble explicitly covered property cash flowsimplementedprotocol, core, conformance, tooling
0046Document currency identityimplementedformat, protocol, core, conformance
0047Property cash-flow input inventoryimplementedcore, tooling
0048Standalone UW document kit and package examplesimplementedconformance, tooling, documentation
0049PostgreSQL JSONB lake adapter boundaryimplementedtooling, documentation
0050Preferred equity with a split couponimplementedformat, protocol, core, conformance
0051Distribution waterfall dual-hurdle "any" modeimplementedformat, protocol, core, conformance
0052Named exit sale deductionsimplementedprotocol, core, conformance
0053Tax abatements and reassessment basisimplementedformat, protocol, core, conformance
0054Where per-lease economics live (decision)decidedformat, documentation
0055Typed commercial lease clausesimplementedformat, protocol, core, conformance
0056Typed rate hedges, escrows and the reserves that fund themimplementedformat, protocol, core, conformance
0057The renovation draw, and capex that buys an expense reductionimplementedformat, protocol, core, conformance
0058Expense recoveries and the CAM true-upimplementedformat, protocol, core, conformance
0059Waterfall clawback as a terminal true-upimplementedformat, protocol, core, conformance
0060The four tranche-class candidates (decision)decideddocumentation
0061Keep protocol version labels synchronizedimplementedprotocol, tooling, documentation
0062Permit same-day cash-flow rows while refusing ambiguous selectorsacceptedformat, protocol, core, conformance

0012 is an unused number, left as a gap so existing references keep their meaning. RFC 0017 is retroactive: it documents a change that shipped before its RFC was written, and records that process failure rather than hiding it. See its Process failure section.

Status values ​

This is the authoritative list. An RFC's frontmatter status: must be one of these values, and npm run verify-indexes fails on any other.

  • draft — author is still iterating; reviewers may comment but the proposal is not stable.
  • active — open for comment; the 14-day minimum applies in collaborative mode.
  • accepted — merged with intent to implement, and this RFC itself still promises implementation that has not shipped.
  • decided — terminal. The RFC's own deliverable is the architectural or design decision, and it explicitly promises no implementation of its own.
  • implemented — the change has shipped in a release; CHANGELOG entry exists.
  • rejected — closed without merging the change. RFC stays in the directory.
  • superseded — replaced by a later RFC; cross-link both.
  • withdrawn — author pulled the proposal.

accepted versus decided ​

The test is what this RFC promises, not whether any work remains in the area.

A decided RFC may identify implementation that a separate future RFC would have to carry. That deferral does not demote it to accepted, because the deferred work was never this RFC's deliverable — there is nothing here left to ship, so it never becomes implemented.

RFC 0054 is the worked example: it decides where per-lease economics live, states outright that it "defines no fields and implements nothing", types the lease clauses through RFC 0055, and defers the periodic series until a consumer exists. It is decided, not accepted, even though it names future work.

Use accepted when the RFC in hand describes a change that is still owed.

When status changes, edit the RFC's frontmatter and update this index.

Released under the MIT License.