{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://openeik.org/schemas/0.1/proposed/envelope/index.json",
  "$comment": "Proposed for OpenEik 0.2: Part XVII, commands with an envelope. Written by hand from Part XVII, not generated: tools/generate-schemas.mjs keeps this folder and lists none of it in index.json. No file of a model is held to it: an envelope and an answer are what a writer sends a command processor and what it answers, not files of a folder. A command processor applies it only when asked for the proposal (@openeik/tools: proposals [\"envelope\"]).",
  "title": "Commands with an envelope, proposed for 0.2",
  "description": "The index of the proposal envelope (Part XVII, proposed for 0.2). It is a schema that asserts nothing: its member x-eik-proposal names the two messages the proposal adds, the envelope a writer sends and the answer a processor gives, with their schemas, and the precondition each command kind takes in an envelope. Schema paths are relative to https://openeik.org/schemas/0.1/.",
  "x-eik-proposal": {
    "name": "envelope",
    "part": "XVII",
    "status": "proposed for 0.2",
    "files": [],
    "messages": [
      {
        "message": "envelope",
        "from": "a writer: a person's application, an agent, a host",
        "format": "openeik-envelope/0.1",
        "schema": "proposed/envelope/envelope.schema.json"
      },
      {
        "message": "answer",
        "from": "a command processor",
        "schema": "proposed/envelope/answer.schema.json"
      }
    ],
    "preconditions": {
      "create": "expectedHostRevision",
      "update": "expectedRevision",
      "delete": "expectedRevision",
      "type.upsert": "expectedRevision",
      "type.delete": "expectedRevision",
      "type.duplicate": "expectedSourceRevision",
      "level.upsert": "expectedLevel",
      "level.delete": "expectedLevel",
      "material.upsert": "expectedRevision",
      "grid.upsert": "expectedRevision",
      "project.rename": "expectedName",
      "project.elevationOffset": "expectedOffset",
      "project.site": "expectedSite",
      "project.envelope": "expectedEnvelope",
      "rooms.settings": "expectedSettings",
      "project.information": "expectedInformation",
      "project.excavation": "expectedExcavation",
      "project.precast": "expectedPrecast",
      "project.standards": "expectedStandards",
      "original.make": "expectedRevisions",
      "original.add": "expectedRevision",
      "original.remove": "expectedRevision",
      "original.rename": "expectedRevision",
      "original.dissolve": "expectedRevision",
      "original.frame": "expectedRevision",
      "original.edit": "expectedRevision",
      "copy.place": "expectedOriginalRevision",
      "copy.move": "expectedRevision",
      "copy.remove": "expectedRevision",
      "copy.unique": "expectedRevision",
      "image.upsert": "expectedHash",
      "image.delete": "expectedHash",
      "rebar.quick": "expectedHostRevision",
      "mesh.lay": "expectedHostRevision",
      "mep.downpipe": "expectedGutterRevision",
      "trusses.plan": "expectedRevision",
      "render.delete": "expectedRevision"
    }
  }
}
