# PBS IR and Lowering Workshop 4 Status: Active ## Purpose Run the fourth focused discussion for `12. IR and Lowering Specification.md` on the backend-facing edges: - builtin projections, - builtin constants, - intrinsic member calls, - host-binding emission, - and artifact invariants required before verifier or loader stages. ## Why This Slice Last This slice should come last because it depends on the general lowering contract plus the special ownership rules around VM-owned versus host-backed behavior. ## Proposed Meeting Order 1. Reconfirm already-settled builtin and host-binding facts. 2. Close lowering obligations for builtin projections and constants. 3. Close lowering obligations for intrinsic member calls. 4. Close host-binding emission obligations. 5. Close pre-verifier and pre-loader artifact invariants. ## Decisions To Produce 1. Builtin lowering obligations beyond already-settled metadata consumption. 2. Host-binding emission obligations before loader resolution. 3. The artifact invariants required before verifier/loader stages. 4. The exact boundary between `12`, `15`, and `19`. ## Candidate Decisions ### 1. Builtin Projections Stay VM-Owned Through Lowering Candidate direction: - builtin projection access lowers through VM-owned operations only, - and never through host-binding tables or host syscall paths. Rationale: - This is already settled; `12` needs only to make the preserved obligation explicit. ### 2. Builtin Constants Lower Through Materialization, Not Constant Folding Semantics Candidate direction: - builtin constants lower through their VM-owned materialization path, - not through ordinary user-authored compile-time constant evaluation. Rationale: - This keeps builtin shells distinct from ordinary `declare const`. ### 3. Host-Binding Emission Must Be Explicit Before `15` Candidate direction: - lowering must produce canonical host-binding entries, - deduplicate them by canonical identity, - and emit host-backed callsites in the pre-load form already fixed elsewhere. Rationale: - This is the bridge between bound source and artifact mapping. ### 4. `12` Defines Artifact Invariants, `15` Defines Encoding Candidate direction: - `12` states what must be true of the emitted artifact boundary, - `15` states exactly how those facts appear in PBX and bytecode form, - `19` states what must be verified. Rationale: - This keeps the three backend-facing specs from overlapping. ## Questions To Resolve In The Room 1. Does `12` need any abstract instruction vocabulary for builtins and host calls? 2. Which invariants belong to lowering rather than to verification? 3. How much ordering and dedup detail should `12` restate versus reference from other specs? 4. Should intrinsic lowering be specified as abstract op families or only semantic obligations? 5. What exact artifact guarantees must `13` eventually assert? ## Expected Outputs 1. a decision record for builtin lowering obligations, 2. a decision record for host-binding emission obligations, 3. and an artifact-invariants checklist spanning `12`, `15`, and `19`. ## Explicit Deferrals - exact bytecode instruction encodings, - exact PBX section layout, - and verifier algorithm details. ## Inputs - `docs/pbs/specs/6.1. Intrinsics and Builtin Types Specification.md` - `docs/pbs/specs/6.2. Host ABI Binding and Loader Resolution Specification.md` - `docs/pbs/specs/12. IR and Lowering Specification.md` - `docs/pbs/specs/15. Bytecode and PBX Mapping Specification.md` - `docs/pbs/specs/19. Verification and Safety Checks Specification.md` - `docs/pbs/agendas/12. IR and Lowering Agenda.md` - `docs/pbs/agendas/12.3. IR and Lowering Workshop 3 - Callables, Services, Contracts, and Callbacks.md`