034-parameterized-definitions

Parameterized definitions, variants and tenant profiles (amends 002 and 006)

Lifecycle approvedImplementation completeVerification unknownQualification unknown

An amendment of approved specs 002 and 006 (R-16), for #76 child B4. A definition may declare, as optional members this spec adds to the #76 track version `rustev.definition/2` (introduced by spec 032), typed, bounded parameters with lock levels (`fixed`, `bounded`, `free`), reference them from a closed set of literal positions, declare named variants and scope inputs, steps, handlers, rules and adjustments to them. A versioned profile document (`rustev.profile/1`) binds parameter values, may extend one other profile, and names its definition by a version range. Instantiation, a pure phase before compilation, resolves the range against the supplied definitions, resolves the overlay chain, checks every lock and bound, substitutes values and prunes the variant, yielding a definition without parameterization that the compiler compiles into a `rustev.plan/3` (the #76 track version, introduced by spec 032, to which this spec adds the optional member `instantiation`) whose `PlanId` binds the template, the variant, the profile chain and every resolved value. Adds `rustev plan diff` (`rustev.plan-diff/1`) and `rustev profile check`. A `rustev.definition/1` compiled without a profile still yields a byte-identical `rustev.plan/2` and `PlanId`. Approved (A-31); implementation is complete (see the implementation record).

Read the full pinned specification ↗

Relationships

Claimed units

  • extends
    {
      "nature": "amending",
      "spec": "002-decision-contract-and-pure-core",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-contract/"
      }
    }
  • extends
    {
      "nature": "amending",
      "spec": "002-decision-contract-and-pure-core",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-core/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "004-evaluation-and-replay",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-eval/"
      }
    }
  • extends
    {
      "nature": "amending",
      "spec": "006-cli-surface",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-cli/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "031-public-api-and-release-family",
      "unit": {
        "kind": "directory",
        "path": "tools/rustev-release/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "027-node-and-wasm-bindings",
      "unit": {
        "kind": "directory",
        "path": "integrations/rustev-node/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "027-node-and-wasm-bindings",
      "unit": {
        "kind": "directory",
        "path": "integrations/rustev-wasm/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "027-node-and-wasm-bindings",
      "unit": {
        "kind": "directory",
        "path": "crates/rustev-surface/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "027-node-and-wasm-bindings",
      "unit": {
        "kind": "directory",
        "path": "tools/rustev-conformance/"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-boundaries-and-authority",
      "unit": {
        "kind": "file",
        "path": "Makefile"
      }
    }
  • extends
    {
      "nature": "additive",
      "spec": "001-boundaries-and-authority",
      "unit": {
        "kind": "directory",
        "path": "scripts/acceptance/"
      }
    }

Source headings

  1. 034: Parameterized definitions, variants and tenant profiles (amends 002 and 006)
  2. 1. Purpose
  3. 2. Territory
  4. 2.1 Binding principles of #76
  5. 3. Behavior
  6. 3.1 Definition version 2
  7. 3.2 Parameter declarations
  8. 3.3 Parameter references
  9. 3.4 Variants and optional items
  10. 3.5 Profiles
  11. 3.6 Definition version binding
  12. 3.7 Overlay resolution
  13. 3.8 Instantiation
  14. 3.9 Instantiation refusals
  15. 3.10 Plan version 3 and identity
  16. 3.11 Loading, replay and evaluation
  17. 3.12 Plan diff
  18. 3.13 Profile check
  19. 3.14 CLI surface (amends spec 006)
  20. 3.15 Library surface
  21. 3.16 Compatibility
  22. 4. Out of scope
  23. 5. Observable negative cases
  24. Acceptance
  25. Verification
  26. Implementation record
  27. Decisions at approval

Frozen anchors

No frozen anchors declared.