6.8 KiB
| id | ticket | title | status | created | completed | tags | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0005 | pbs-game-facing-asset-refs-and-call-result-discard | Propagate DEC-0005 Asset Address Surface into Compiler, Packer, and Studio Specs | done | 2026-03-27 | 2026-03-27 |
|
Objective
Propagate DEC-0005 into the normative documentation so PBS asset authoring, backend-owned FESurfaceContext, and the separation between asset and bank become explicit, cross-domain, and implementation-ready.
Background
DEC-0005 locks the symbolic authoring surface for assets around:
- hierarchical
assets...addressing; Addressableas the public/editorial PBS type shape;FESurfaceContextas a backend-owned contract delivered to the frontend;List<Addressable(address, asset_id)>as the v1 asset slice;- backend-owned validation and lowering from symbolic address to runtime-facing
asset_id; - explicit separation between asset references and bank-internal addressing.
The repository already documents:
- packer ownership of
asset_id; - Studio ownership of asset workspace UX;
- PBS low-level runtime asset access through
LowAssets.
What is still missing is the normative bridge between these surfaces.
Scope
Included
- Update PBS language specs to define the symbolic asset address model and the backend-to-frontend contract.
- Update packer specs to state how the operational snapshot projects canonical asset addresses without turning
asset_nameinto a first-class operational identity. - Update Studio specs to state that UI-facing asset identity aligns with the canonical address surface and namespace collision rules.
- Add or update compiler-level specs so backend-owned asset lowering and
FESurfaceContextownership are normatively visible.
Excluded
- Implementing parser, semantic, lowering, or diagnostics code.
- Designing bank-internal member addressing.
- Defining richer future
FESurfaceContextslices beyond assets. - Introducing rename-fragility warnings or LSP-only UX refinements.
Execution Steps
Step 1 - Update PBS Normative Surface Documents
What:
Document the symbolic PBS surface for asset references and the Addressable model.
How: Revise the PBS specs so they state:
assetsis a compile-time namespace root;- leaves correspond to terminal
Addressablevalues; - the canonical symbolic identity is the normalized asset-root-derived address;
asset_nameis not the operational compile-time identity;- the PBS frontend may use a fake/editorial
Addressabletype while the backend remains the owner of executable semantics.
File(s):
docs/specs/compiler-languages/pbs/4. Static Semantics Specification.mddocs/specs/compiler-languages/pbs/5. Manifest, Stdlib, and SDK Resolution Specification.mddocs/specs/compiler-languages/pbs/12. Diagnostics Specification.mddocs/specs/compiler-languages/pbs/13. Lowering IRBackend Specification.md
Step 2 - Update Backend Contract and Lowering Specs
What:
Make the backend-owned FESurfaceContext and asset-lowering ownership explicit in compiler-wide specs.
How: Add or revise sections that state:
- the frontend receives a minimal backend-derived surface, not the raw packer snapshot;
- v1 assets arrive as
List<Addressable(address, asset_id)>; - backend validation and final lowering ownership remain backend-only;
- symbolic asset references lower into the already-accepted
LowAssetscontract before runtime execution.
File(s):
docs/specs/compiler/18. Standard Library Surface Specification.mddocs/specs/compiler/20. IRBackend to IRVM Lowering Specification.md- optional conformance/matrix sync if needed:
docs/specs/compiler/22. Backend Spec-to-Test Conformance Matrix.md
Step 3 - Update Packer And Studio Domain Specs
What: Align packer and Studio domain specs with the symbolic address model and namespace rules.
How: Revise the specs so they state:
- packer remains owner of operational asset identity and derives canonical addresses from asset roots;
asset_nameis not required as an operational registry field;- Studio should expose canonical address identity in UX where appropriate;
- Studio must prevent terminal-vs-namespace collisions on asset root creation and moves.
File(s):
docs/specs/packer/2. Workspace, Registry, and Asset Identity Specification.mddocs/specs/packer/5. Diagnostics, Operations, and Studio Integration Specification.mddocs/specs/studio/4. Assets Workspace Specification.md
Step 4 - Cross-Check Decision Boundaries
What:
Verify that the edited specs preserve the intended scope split between DEC-0004, DEC-0005, and bank-specific addressing.
How: Check that:
DEC-0004still owns only the low-levelLowAssetsABI;DEC-0005owns the symbolic authoring and backend-owned surface contract;- no updated document accidentally defines bank-internal member addressing or future richer
FESurfaceContextslices.
File(s):
discussion/workflow/decisions/DEC-0004-pbs-low-level-asset-manager-surface.mdif restored for reference, otherwise usediscussion/lessons/DSC-0008-pbs-low-level-asset-manager-surface/LSN-0023-lowassets-runtime-aligned-sdk-surface.mddiscussion/workflow/decisions/DEC-0005-pbs-asset-address-surface-and-be-lowering.md
Test Requirements
Unit Tests
- None required for the editorial plan itself.
Integration Tests
- None required for the editorial plan itself.
Manual Verification
- Read updated specs together and verify the same terminology is used for
Addressable, canonical address,asset_id, andFESurfaceContext. - Verify no document reintroduces
asset_nameas the normative compile-time identity. - Verify no document collapses
assetreferences with bank-internal addressing.
Acceptance Criteria
- PBS specs describe hierarchical asset addressing and
Addressableas the symbolic authoring surface. - Compiler specs state that the backend exposes a minimal
FESurfaceContextand retains final validation/lowering ownership. - Packer specs state that canonical asset addresses are derived operationally without promoting
asset_nameback to first-class identity. - Studio specs state the namespace-collision rule for asset root creation and moves.
- Updated docs preserve the scope boundary between low-level
LowAssetsABI and symbolic asset references.
Dependencies
DEC-0005-pbs-asset-address-surface-and-be-lowering- Existing
DEC-0004low-levelLowAssetscontract
Risks
- Cross-domain wording may drift if compiler, packer, and Studio specs are updated independently.
- Over-documenting future
FESurfaceContextexpansion now would make the contract harder to keep stable. - It is easy to accidentally reintroduce
asset_nameas an editorial convenience unless the operational/authoring distinction stays explicit.