A Logic Manifest is used to deploy logics to the MOI Protocol. It is a composite artifact that describes the bytecode, the interfaces (ABI) and other parameters for the runtime of choice. It can be represented in encoding formats such as JSON or YAML as it is designed to be human-readable. The MOI Protocol, however, expects the Manifest to be encoded with POLO when sending it in an IxLogicDeploy interaction.

POLO Manifest Format (v0)

[0] **syntax**: uint64 

[1] **engine**: struct
    [0] **kind**: string
    [1] **flags**: array 
        [-] string

[2] **elements**: array
    [-] struct
		    [0] **ptr**: uint64
		    [1] **deps**: array
		        [-] uint64
		    [2] **kind**: string
		    [3] **data**: struct
		        [ custom ]

JSON Manifest Format (v0)

{
    "**syntax**": <uint64>,
    "**engine**": {
        "**kind**": <string>,
        "**flags**": <list, str>  
    },
    "**elements**": [
        {
            "**ptr**": <uint64>,
						 "**deps**": <list, uint64>,
            "**kind**": <str>,
            "**data**": <object>        
        }, 
    ]
}

YAML Manifest Format (v0)

**syntax**: <uint64>

**engine**: 
	**kind**: <string>
  **flags**: <list, str>

**elements**:
	- **ptr**: <uint64>
	  **deps**: <list, uint64>
	  **kind**: <string>
	  **data**: <object>

Manifest Syntax Version

The syntax version of the manifest file. Currently, the only valid value is 0

Engine Kind & Flags

The engine [kind] for along with some [flags].

Supported Values

Runtime Engine [kind] value [flags] documentation [elements] documentation
PISA PISA PISA Flags PISA Elements

Elements

Manifests describe a series of elements that collectively form the executable logic for the engine. Each engine runtime can specify its own rules for handling manifest. But in the unified manifest form, each element is identified by a unique 64-bit pointer. [ptr]

The element also describes an array of element pointers depicting its dependencies [deps] with other elements in the manifest. These dependencies are important for optimally fetching only the required elements when the engine is initialised for a specific call.

The [kind] of the element is an arbitrary string that is unique to an element form within the namespace of an engine. This kind determines the form of the contents for the [data] field which decodes into a structure defined by the runtime for that kind.