Skip to content

[DO NOT MERGE] refactor(sdk): network layer foundations — break cycles, single isServer, logging discipline - #1519

Draft
cyaiox wants to merge 1 commit into
stack/01-test-harnessfrom
stack/02-foundations
Draft

[DO NOT MERGE] refactor(sdk): network layer foundations — break cycles, single isServer, logging discipline#1519
cyaiox wants to merge 1 commit into
stack/01-test-harnessfrom
stack/02-foundations

Conversation

@cyaiox

@cyaiox cyaiox commented Aug 5, 2026

Copy link
Copy Markdown
Member

Phase 0 of the authoritative-server network refactor (pure enablement,
no wire or public-API change; characterization suite green, all 13
defect pins still red):

  • constants.ts leaf module (AUTH_SERVER_PEER_ID, LIVEKIT_MAX_SIZE,
    DEBUG_NETWORK_MESSAGES, IProfile) dissolves all four import cycles
    rooted in message-bus-sync; re-exports keep old import paths working
  • runtime-context.ts: one isServer atom per transport instance; the
    duplicate module-scope atom and second ~system isServer call in
    network/index.ts are gone; Room drops its redundant isServerFuture
  • ecs-adapter.ts: the network layer's 22 deep @dcl/ecs/dist imports now
    route through one module (public-API promotion is a separate PR)
  • error logs un-gated from DEBUG in the server validator; stray
    always-on authoritative log re-gated; throw 1 replaced with Error;
    transport.onmessage! assertions replaced with a guarded deliver;
    fetchProfile rejection now caught and logged
  • observables.ts: add the six missing switch breaks (duplicate
    subscriber registrations); residual double-registration for the two
    shared-subscriber event pairs documented as a known ceiling
  • logger.ts: delete-entity messages serialized once (the redundant
    earlier branch removed, keeping types out of the Unknown bucket)
  • debugger statement removed from rendererTransport
  • snapshot goldens regenerated: metric lines only (bundle size ±0.1k,
    memory counters), ERR! grep clean

Claude-Session: https://claude.ai/code/session_01Kzo6zwrn1CA79S4RN1dgsU

🤖 Generated with Claude Code

https://claude.ai/code/session_01Kzo6zwrn1CA79S4RN1dgsU


📚 Stack (splits #1505 — merge top-down within each stack)

Network layer (each PR is one self-contained, independently-green commit):

  1. test(sdk): characterization baseline for the network layer refactor #1518 test harness — characterization baseline + red defect suite (this stack's root)
  2. [DO NOT MERGE] refactor(sdk): network layer foundations — break cycles, single isServer, logging discipline #1519 foundations — cycle break, single isServer, logging discipline
  3. [DO NOT MERGE] feat(sdk): hydration FSM — deterministic late-join and reconnect convergence #1520 hydration FSM — late-join/reconnect correctness
  4. [DO NOT MERGE] feat(sdk): default-deny server validation, fixed correction path, O(1) entity lookup #1521 validator — default-deny, correction path, entity index
  5. [DO NOT MERGE] refactor(sdk): unify CRDT codec into a parse-once pipeline #1522 codec — parse-once pipeline (wire goldens byte-identical)
  6. [DO NOT MERGE] feat(sdk): clients target the authoritative server; registry collisions; players dedupe #1523 topology — targeted sends, registry collisions, players dedupe
  7. [DO NOT MERGE] refactor(sdk): parameterize network boot, document the host contract #1524 boot + host-conformance doc
  8. [DO NOT MERGE] refactor(sdk): ponytail sweep — delete what the refactor no longer needs #1525 simplification sweep (−95 lines)

sdk-commands (independent of the stack above):

After a parent squash-merges, the child needs git rebase --onto origin/auth-server <old-parent> <child> — ping the session and it gets restacked.

…ver, logging discipline

Phase 0 of the authoritative-server network refactor (pure enablement,
no wire or public-API change; characterization suite green, all 13
defect pins still red):

- constants.ts leaf module (AUTH_SERVER_PEER_ID, LIVEKIT_MAX_SIZE,
  DEBUG_NETWORK_MESSAGES, IProfile) dissolves all four import cycles
  rooted in message-bus-sync; re-exports keep old import paths working
- runtime-context.ts: one isServer atom per transport instance; the
  duplicate module-scope atom and second ~system isServer call in
  network/index.ts are gone; Room drops its redundant isServerFuture
- ecs-adapter.ts: the network layer's 22 deep @dcl/ecs/dist imports now
  route through one module (public-API promotion is a separate PR)
- error logs un-gated from DEBUG in the server validator; stray
  always-on authoritative log re-gated; throw 1 replaced with Error;
  transport.onmessage! assertions replaced with a guarded deliver;
  fetchProfile rejection now caught and logged
- observables.ts: add the six missing switch breaks (duplicate
  subscriber registrations); residual double-registration for the two
  shared-subscriber event pairs documented as a known ceiling
- logger.ts: delete-entity messages serialized once (the redundant
  earlier branch removed, keeping types out of the Unknown bucket)
- debugger statement removed from rendererTransport
- snapshot goldens regenerated: metric lines only (bundle size ±0.1k,
  memory counters), ERR! grep clean

Claude-Session: https://claude.ai/code/session_01Kzo6zwrn1CA79S4RN1dgsU
@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Test this pull request

  • The @dcl/sdk package can be tested in scenes by running

    npm install "https://sdk-team-cdn.decentraland.org/@dcl/js-sdk-toolchain/branch/stack/02-foundations/dcl-sdk-7.25.1-31013684944.commit-14ad040.tgz"
  • The @dcl/js-runtime package can be tested in scenes by running

    npm install "https://sdk-team-cdn.decentraland.org/@dcl/js-sdk-toolchain/branch/stack/02-foundations/@dcl/js-runtime/dcl-js-runtime-7.25.1-31013684944.commit-14ad040.tgz"
  • To test with npx init

    export SDK_COMMANDS="https://sdk-team-cdn.decentraland.org/@dcl/js-sdk-toolchain/branch/stack/02-foundations/dcl-sdk-commands-7.25.1-31013684944.commit-14ad040.tgz"
    npx $SDK_COMMANDS init
  • The /changerealm command to test test in-world

    /changerealm https://sdk-team-cdn.decentraland.org/ipfs/stack/02-foundations-e2e
    
  • You can preview this build entering:
    https://playground.decentraland.org/?sdk-branch=stack/02-foundations

@cyaiox cyaiox changed the title refactor(sdk): network layer foundations — break cycles, single isServer, logging discipline [DO NOT MERGE] refactor(sdk): network layer foundations — break cycles, single isServer, logging discipline Aug 5, 2026
@cyaiox
cyaiox marked this pull request as draft August 5, 2026 14:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant