Publish the console ABI authority map: runtime catalogs win, PBS stdlib is delivery. Recut specs 18, 8, and 6.2 and lock them with ConsoleAbiAuthoritySpecTest. Housekeep DSC-0061 with LSN-0064.
5.1 KiB
| id | ticket | title | created | tags | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| LSN-0064 | multi-frontend-sdk-canonical-definition | Runtime owns console ABI; PBS is delivery | 2026-09-19 |
|
Runtime owns console ABI; PBS is delivery
Original Problem
"SDK" mixed three layers: platform ABI, PBS stdlib shells, and docs. The PBS
compiler reads [Host] and [IntrinsicCall] from .pbs files. It does not
read the runtime registry. Intrinsics already had a CSV in the runtime
repository, a handwritten Java enum, and a disabled parity test. Spec 8
documented audio and @core:math. Disk had game/stdlib/1 with color,
asset, composer, gfx, input, and log. Spec 18 preferred @sdk:* for
host APIs while @sdk:input was a builtin.
There is no second language in this phase. The risk was not a missing generic
SDK. The risk was treating PBS shells, or a stale spec, as console ABI.
DEC-0047 had already classified canonical host identity as platform-owned and
left PbsHostAdmissionValidator in the PBS package until a shared source
existed.
Consolidated Decision
This discussion was an audit. It published an authority map. It did not create a canonical schema, generate bindings, enable intrinsic parity, or move the host-admission validator.
The console has two distinct axes:
- VM-owned intrinsics, identity
canonical_name@versionplusfinal_id; - host-backed calls, identity
(module, name, version)plus capability.
Do not unify those axes into one catalog while PBS is the only frontend.
Conflict resolution:
- Intrinsic conflict:
runtime/docs/vm-arch/INTRINSICS.csvwins. Studiodocs/vm-arch/INTRINSICS.csvis a mirror.IRVMIntrinsicDefinitionis derived. PBS[BuiltinType]/[IntrinsicCall]shells are delivery. - Host conflict: runtime spec 16 and
SyscallMetawin. PBS[Host]attributes must not define ABI. They declare the shell the PBS compiler reads today.
@sdk:* / @core:* paths must not imply ownership. @sdk:input is a
registered builtin exception. It was not moved to @core.
PBS conformance means PBS shells and docs match runtime ABI, not the reverse.
PbsHostAdmissionValidator may stay in the PBS package. E_HOST_* is not
eternal PBS semantics.
Final Implementation
The work was editorial and test-facing.
Spec 18 now states that PBS stdlib is delivery and must not define syscall IDs,
intrinsic final_id values, or SyscallMeta. Runtime catalogs outrank it.
@sdk:input is recorded as the current builtin exception.
Spec 8 now documents <target>/stdlib/<N>/... with current line 1 at
game/stdlib/1: core/color and sdk/{asset,composer,gfx,input,log}. It no
longer ships audio or @core:math as current modules.
Spec 6.2 now requires PBS host shells to repeat the runtime registry and forbids
inventing (module, name, version). The authority example is
("gfx2d", "clear", 1).
ConsoleAbiAuthoritySpecTest locks those sentences. No production compiler
code, stdlib .pbs, or validator package moved. The intrinsic parity test
stays disabled.
Examples
Runtime wins:
color.rgb@1/final_id0x1101come fromINTRINSICS.csv;("gfx2d", "clear", 1)and("asset", "load", 1)come fromSyscallMeta.
PBS delivers, and does not own, those identities:
@core:colorwith[BuiltinType(name = "color", version = 1)];@sdk:gfxLowGfx.clearwith[Host(module = "gfx2d", name = "clear", version = 1)];@sdk:inputwith[BuiltinType]/[IntrinsicCall]under@sdk.
Stale docs that the recut removed as current line-1 inventory:
stdlib/1/sdk/audio;@core:mathas a packaged module.
Pitfalls
- Do not treat PBS stdlib as the ABI catalog because the compiler already reads it. That is convenience, not authority.
- Do not create
HOSTCALLS.csvor generate the Java enum because the map now exists. A catalog waits on a second consumer. - Do not move
PbsHostAdmissionValidatoron the strength of this map. DEC-0047 classified identity as platform; this discussion published who wins; the validator still has no shared catalog to consume. - Do not read
@sdkas host and@coreas VM. Path is packaging.@sdk:inputis builtin. - Do not enable
IRVMIntrinsicRegistryParityTestas a side effect of a doc recut. That is compiler/runtime sync, not PBS packaging conformance. - Do not put the authority map only in a decision. Housekeep deletes workflow artifacts. Specs and this lesson keep the map.
References
- Decision:
DEC-0048 - Plan:
PLN-0127 - Related lesson:
LSN-0063- Language vs platform validation ownership - Related lesson:
LSN-0061- PBX is the language-neutral runtime boundary docs/specs/compiler/18. Standard Library Surface Specification.mddocs/specs/compiler-languages/pbs/8. Stdlib Environment Packaging and Loading Specification.mddocs/specs/compiler-languages/pbs/6.2. Host ABI Binding and Loader Resolution Specification.mddocs/vm-arch/README.md../runtime/docs/vm-arch/INTRINSICS.csv../runtime/docs/specs/runtime/16-host-abi-and-syscalls.mdprometeu-compiler/prometeu-build-pipeline/src/test/java/p/studio/compiler/specs/ConsoleAbiAuthoritySpecTest.java