64 lines
2.8 KiB
Markdown
64 lines
2.8 KiB
Markdown
# Host ABI Gate Validation Agenda
|
|
|
|
Status: Resolved agenda
|
|
Purpose: validate whether the current Host ABI contract is already stable enough to stop blocking the next phase
|
|
|
|
## 1. Context
|
|
|
|
This agenda validates whether `6. Host ABI Binding and Loader Resolution Specification.md` is already sufficient as the working contract for the path:
|
|
|
|
`declare host` -> PBX metadata -> loader resolution -> numeric syscall execution
|
|
|
|
The question here is not whether every binary-format detail is final.
|
|
The question is whether the current contract is already stable enough to unblock the next phase.
|
|
|
|
## 2. Decision
|
|
|
|
Decision: sufficient for the next phase.
|
|
|
|
The current Host ABI contract is explicit enough to unblock the next stage even if the specification remains marked `Temporary` for now.
|
|
|
|
`Temporary` should be interpreted here as "final binary-format and integration details may still be hardened", not as "core contract still missing".
|
|
|
|
## 3. Why This Is Sufficient
|
|
|
|
The current specification already fixes the parts that matter for phase-gating:
|
|
|
|
1. Canonical identity is stable and loader-facing: `(module, name, version)`.
|
|
2. The boundary between source-level `declare host` and runtime-facing canonical metadata is explicit.
|
|
3. The PBX contract is defined through mandatory `SYSC` metadata with required fields and validation rules.
|
|
4. Pre-load and post-load call forms are explicit: `HOSTCALL <sysc_index>` before load, `SYSCALL <id>` after patching.
|
|
5. The loader algorithm is normative, ordered, and deterministic.
|
|
6. ABI validation responsibility is split clearly between loader and verifier.
|
|
7. Capability gating is mandatory during load.
|
|
8. Deterministic failure cases are enumerated.
|
|
|
|
This is enough to keep compiler, PBX emitter, loader, and VM behavior aligned on the critical host-binding path.
|
|
|
|
## 4. Remaining Hardening That Does Not Block
|
|
|
|
The following items remain open, but they are hardening and integration details rather than gate blockers:
|
|
|
|
1. Final PBX section numbering and chunk registry policy.
|
|
2. Final opcode allocation for `HOSTCALL`.
|
|
3. Exact loader image materialization strategy (patch in place vs rebuild buffer).
|
|
4. Final integration shape with `ProgramImage` or equivalent loaded-program container.
|
|
|
|
These items can remain deferred without reopening the core contract above.
|
|
|
|
## 5. Practical Interpretation
|
|
|
|
For planning purposes, the Host ABI path should now be treated as closed for gate evaluation.
|
|
|
|
That means:
|
|
|
|
- it does not block the next phase,
|
|
- it does not require a semantic redesign before backend/runtime work continues,
|
|
- and any remaining work is implementation hardening or binary-format finalization.
|
|
|
|
## 6. References
|
|
|
|
- `6. Host ABI Binding and Loader Resolution Specification.md`
|
|
- `7. Cartridge Manifest and Runtime Capabilities Specification.md`
|
|
- `8. Stdlib Environment Packaging and Loading Specification.md`
|