67 lines
1.1 KiB
Markdown
67 lines
1.1 KiB
Markdown
# PR-24 — Validate Contract Calls in Frontend (Arity + Types)
|
|
|
|
### Goal
|
|
|
|
Move contract validation to compile time.
|
|
|
|
### Required Changes
|
|
|
|
* During PBS type checking:
|
|
|
|
* Validate argument count against contract signature
|
|
* Validate argument types
|
|
|
|
* Lower only validated calls to `HostCall`
|
|
|
|
### Tests
|
|
|
|
* Wrong arity → `E_TYPE_MISMATCH`
|
|
* Correct call lowers to Core IR `HostCall`
|
|
|
|
---
|
|
|
|
# PR-25 — Core IR Invariants Test Suite
|
|
|
|
### Goal
|
|
|
|
Lock in correct semantics before touching the VM.
|
|
|
|
### Required Invariants
|
|
|
|
* Every `Begin*` has a matching `End*`
|
|
* Gate passed to `Begin*` is available at `End*`
|
|
* No storage writes without `BeginMutate`
|
|
* No silent fallbacks
|
|
|
|
### Tests
|
|
|
|
* Property-style tests or golden IR assertions
|
|
|
|
---
|
|
|
|
## STOP POINT
|
|
|
|
After PR-25:
|
|
|
|
* Core IR correctly represents PBS HIP semantics
|
|
* Lowering is deterministic and safe
|
|
* VM is still unchanged
|
|
|
|
**Only after this point may VM PRs begin.**
|
|
|
|
Any VM work before this is a hard rejection.
|
|
|
|
---
|
|
|
|
## Instruction to Junie
|
|
|
|
If any rule in this document is unclear:
|
|
|
|
* Stop
|
|
* Add a failing test
|
|
* Document the ambiguity
|
|
|
|
Do not invent behavior.
|
|
|
|
This document is binding.
|