---
# System prepended metadata

title: cadCAD Release Plan

---

# cadCAD Release Plan


## Types of model data input-output:
- Single Input, Single Ouput (SISO)
- Single Input, Multiple Output (SIMO)
- Multiple Input, Single Oupit (MISO)
- Multiple Input, Multiple Output (MIMO)

## Milestones:
- early preview SISO
- Canonical GDS
- PyCon

## Features Breakdown for each Release

### SISO
- ready for external feedback
- series composition

Release Notes

first alpha
can do SISO blocks
- only be concatenated in series

example:


```python
@block
def isValidParticle(domain:Point[Particle])-> Point[Bit]:
    dx= domain['vel']['x']
    dy= domain['vel']['y']

    vmax = domain['maxspeed']

    output = {'bit':bool(dx**2+dy**2<=vmax**2)}

    return Point(Bit, output)
```


In order to make a cadCAD Model:
1. Define the state space
2. Define the state transition blocks containing logic for the state transitions
3. Define the experiment object:
   - intial state that is a point in the defined state space from step 1
   -  a key-value pair python dictonary with experiment parameters:
      - a string key called "steps", set by an integer for the number of steps for each run
      - "iteration_n", set by an integer for the number of sequential simulations on the same experiment
   - A tuple of blocks which defines a serial pipeline of state transition blocks (from step 2)
8. You can run the experiment by executing the .run method on the experiment object
9. The result is a result matrix, where each line is a trajectory corresponding to a simulation you have defined


### Canonical GDS 
- Decorator based MISO
- Hybrid composition
  - compose blocks, assert same domain, and pass same point (SIMO)
  - x -> g(x)=U



### PyCon Release (April) - BETA

- Domain Specific Langauge
  - small formal language to encode syntax and semantics for pipeline of blocks
    - encodes what is needed for serial and parallel composition of any kind of block (SISO, SIMO, MISO, MIMO)
    - modular syntax, grammar (each bit has meaning as individual strings)
    - reduces uncertainty by lowering to a series of block calls in compilation 
      - rules of block pipeline
      - point validity on space of the dynamics
  - engine langauge agnostic (python, rust, julia) 
  - enables higher level functionality and features
    - enables visual cadCAD 
    - UX sugar stack
      - eg, tooling that can write the DSL for users like visual cadCAD with block diagrams writiing the blocks
- parallel composition
  - check with Zargham: of mutliple SISOs? 
  - yields MIMO
- Parameter blocks
- building blocks
- compiler work
- experiment tools