/ specs / 0005-orthogonal-isa.md
0005-orthogonal-isa.md
 1  # SPEC-0005 — Orthogonal ISA
 2  
 3  Status: Draft
 4  
 5  ## Purpose
 6  
 7  Define the runtime instruction set.
 8  
 9  ## Orthogonality rules
10  
11  Each instruction SHOULD do one thing.
12  
13  Instructions MUST NOT depend on hidden global state.
14  
15  Instructions SHOULD be serializable for logs, tests, traces, and replay.
16  
17  Instruction names SHOULD remain stable once protocol integration depends on them.
18  
19  ## Initial instructions
20  
21  - `Mount`
22  - `Render`
23  - `Patch`
24  - `PushEvent`
25  - `Navigate`
26  - `Subscribe`
27  - `Unsubscribe`
28  - `Shutdown`
29  
30  ## Classification
31  
32  An instruction can be classified by destination:
33  
34  - server-runtime instruction
35  - client-runtime instruction
36  - transport instruction
37  - application instruction
38  
39  ## Testability
40  
41  Every instruction must have:
42  
43  - stable opcode string
44  - documented meaning
45  - deterministic test behaviour
46  - clear error handling
47  
48  ## Open questions
49  
50  - Should ISA carry typed payloads only, or allow opaque JSON payloads at the edge?
51  - Should navigation be a primitive instruction or a higher-level command?
52  - Should pubsub subscribe/unsubscribe live in core or adapter packages?