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?