testing/cross_backend/full_spine_mount.ts

The full live RPC mount for fuz_app's own spine test binary — the complete action set testing_spine_server.ts exposes on a single RPC endpoint, in one place.

Where default_spine_surface.ts defines the declared surface (create_spine_surface_spec / spine_rpc_endpoints — the create_standard_rpc_actions bundle the spec-derived suites auto-enumerate), this module defines its superset: the standard bundle plus the families the binary live-mounts but keeps off the declared surface —

  • the _testing_* daemon-token backdoors (create_testing_actions),
  • the full cell verb set (CRUD + grant + field + item + audit),
  • the opt-in actor_lookup / actor_search resolvers,
  • the _testing_action_manifest backdoor, appended last (it dumps the live method set for the cross-impl manifest-parity gate, so it must enumerate every method above it).

Single-sourcing the mount here lets the binary, the in-process parity setup, and the spine_method_coverage reconciliation test all build the same list — so a method can never be mounted in one place and forgotten in another. The reconciliation test enumerates build_full_spine_rpc_actions with stub deps and asserts the live method set equals the tagged coverage manifest; see src/test/cross_backend/spine_method_coverage.ts.

$lib-free by contract — like default_spine_surface.ts, this module is reached by the spawned TS binary under Gro's loader (which resolves .js.ts but not the $lib alias), so every import is relative. Keep it that way.

view source

Declarations
#

3 declarations

build_full_spine_rpc_actions
#

testing/cross_backend/full_spine_mount.ts view source

(deps: AppDeps, options: FullSpineMountOptions): RpcAction[] import {build_full_spine_rpc_actions} from '@fuzdev/fuz_app/testing/cross_backend/full_spine_mount.js';

Build the complete live RPC action list the spine test binary mounts on its single endpoint: the declared create_standard_rpc_actions bundle plus the off-surface families (_testing_* backdoors, cells, actor resolvers).

Mirrors the previous inline assembly in testing_spine_server.ts exactly — session_options is pinned to spine_session_options (the binary's cookie config) and roles to spine_roles (carrying cell_editor), so the only runtime-varying inputs are the daemon-token state + notification sender.

deps

the backend AppDeps (stub deps suffice for method enumeration)

type AppDeps

options

daemon-token state + optional WS notification sender

returns

RpcAction[]

every RpcAction the binary exposes, in mount order

full_spine_rpc_endpoints
#

testing/cross_backend/full_spine_mount.ts view source

(ctx: AppServerContext, options: FullSpineMountOptions): RpcEndpointSpec[] import {full_spine_rpc_endpoints} from '@fuzdev/fuz_app/testing/cross_backend/full_spine_mount.js';

Factory-form full mount at , the shape create_app_server's rpc_endpoints slot accepts. The spine binary wires this directly; the surface builder (create_spine_surface_spec) keeps using the narrower spine_rpc_endpoints so the declared surface stays the standard bundle only.

ctx

options

returns

RpcEndpointSpec[]

FullSpineMountOptions
#

testing/cross_backend/full_spine_mount.ts view source

FullSpineMountOptions import type {FullSpineMountOptions} from '@fuzdev/fuz_app/testing/cross_backend/full_spine_mount.js';

Options for / .

daemon_token_state

Daemon-token runtime state threaded into create_testing_actions — the _testing_reset handler mutates keeper_account_id after re-seeding. Pass the same instance the daemon-token middleware reads. For the coverage test (method enumeration only, handlers never run) any stub state satisfies it.

type DaemonTokenState

readonly

notification_sender?

WS notification sender for the role-grant-offer fan-out. Pass the SAME BackendWebsocketTransport the WS endpoint registers connections against (the transport is the connection registry). Omitted for enumeration.

type NotificationSender | null

readonly

Depends on
#