Repository navigation
Open
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)kind/designA design proposal (design-architect): multi-step, phased, decision-bearingA design proposal (design-architect): multi-step, phased, decision-bearingpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/blockedQueue or user escalation stateQueue or user escalation statestatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Description
Part of the worlds design program: #5955. Statements S36–S38 and S45 of the 2026-11-04 brief. This is the V3 stage of the program.
Requirement (Drew, in substance)
User-level code should be passable into a running world without recompiling the whole world:
- At least in one version of the compiler there is a way to make a DLL. The server side compiles that DLL itself — user code is never trusted pre-compiled.
- The platform then places the DLL in the appropriate location for the world-side code to call it.
- If a user changes what's running, the world-side code picks it up as soon as it's compiled and available to be hot-swapped in.
- Trust chain: the server can trust the code because it did the compilation itself; and the only non-pure things the user function can do are from the server's own platform being passed to it by the world author — and the world author can trust that chain too.
Design points to settle
- Interface contract: what signature/shape a user DLL exposes, and how the world discovers and binds it (name, version, interface hash). Mismatch behavior: refuse, fall back to previous version, or run the user's prior published code (see the compile-economics child — "keep running what you'd already published" is the stated default).
- Swap semantics: swap at tick boundary only? In-flight calls finish on the old code — state handoff between versions (the function's state is the world's problem, the function's problem, or serialized through a defined state type?).
- Which Roc compiler line actually supports the DLL path Drew remembers, and what it costs us to build on it (pin vs track).
- Isolation: a user DLL crashing or hanging must not take the world down (budgets: server-invariants child; per-function enforcement: gas/timeout research child).
- Distinction from the authoring hot-swap loop (
id world dev, #558 / #5541): that swaps world code for its author during development; this swaps per-user functions inside a live world for its players. Reuse its mechanics where they fit, but the trust and budget models differ.
Related
- Programming-model child of #5955 (functions passed by the world are the static case of this)
- Per-user function mapping child of #5955 (the consumer of this mechanism)
- Compile chain today:
pkgs/id/src/world_compile.rs
Done looks like
A design doc: DLL interface contract, server compile pipeline, placement/binding, swap semantics incl. failure fallbacks, and the trust argument written out end-to-end.
Metadata
Metadata
Assignees
Labels
app/idPackage/app: id (pkgs/ or apps/ in this repo)Package/app: id (pkgs/ or apps/ in this repo)kind/designA design proposal (design-architect): multi-step, phased, decision-bearingA design proposal (design-architect): multi-step, phased, decision-bearingpriority/normalOrdinary priority (the default)Ordinary priority (the default)queue/blockedQueue or user escalation stateQueue or user escalation statestatus/blockedQueue or user escalation stateQueue or user escalation statetask/triageQueue packet kind: verify, reproduce, and route this itemQueue packet kind: verify, reproduce, and route this item
Activity
developing-today commentedon Nov 5, 2026
CODE-1630
dezren39 commentedon Nov 5, 2026
Wave-2 tie-in (finding F3) + contradiction C3.
Record:
workspace/scratch/worlds-capabilities-brief-2026-11-04/conversation-tie-ins.md(F3, C3).dezren39 commentedon Nov 5, 2026
Wave-2 follow-ups filed from the prior-art research (Lane B). Granular sub-scopes of this issue, each carrying the relevant research findings + citations:
Research source:
workspace/scratch/worlds-capabilities-brief-2026-11-04/prior-art-research.md. Full wave-2 mapping:workspace/scratch/worlds-capabilities-brief-2026-11-04/wave2-map.md.dezren39 commentedon Nov 5, 2026
Ruling — C3/C4 affirmed as platform pillars, with an iteration doctrine (Drew, 2026-11-04 23:57 CST).
Handling user code (this issue: server-compiled DLLs, hot-swap) and fuel budgets (#5966) are, in Drew's words, "very big parts of making this a platform that other people can build on top of, interact with, and reason about." They are top-importance, not side features.
Doctrine for this work:
C3 substance stands as interpreted: user code is source-only, server-compiled (which is what reconciles hot-swap with the Oct 31 native trust boundary — see also #5996 for the alternatives exploration).
162 remaining items
dezren39 commentedon Nov 8, 2026
🤖 Agent note · handed off
opencode- handed off to the opencode claimant, which launches the bound opencode session; this lane does not work it directly.dezren39 commentedon Nov 8, 2026
Task 13258 (small_fix, PR #None): picked up by lane code-v, assigned_lane=opencode — handed off to the opencode claimant, which launches the bound session. Issue #5964 state OPEN. This worker will not work task 13258 directly.
developing-today commentedon Nov 8, 2026
🤖 Agent note · handed off
opencodedezren39 commentedon Nov 8, 2026
🤖 Agent note · picked up
c8b9355e-319a-4640-8096-7ad19480d151packet_defect: it requests a final design while the documented premise/alternatives gates are unresolved. Do not decide the DLL premise blind.dezren39 commentedon Nov 8, 2026
🤖 Agent note · blocked (packet defect)
c8b9355e-319a-4640-8096-7ad19480d151packet_defect; issue labels moved from parked to blocked.