PulseTrade.Comm.Actor.Registry
0.1.0-alpha5
dotnet add package PulseTrade.Comm.Actor.Registry --version 0.1.0-alpha5
NuGet\Install-Package PulseTrade.Comm.Actor.Registry -Version 0.1.0-alpha5
<PackageReference Include="PulseTrade.Comm.Actor.Registry" Version="0.1.0-alpha5" />
<PackageVersion Include="PulseTrade.Comm.Actor.Registry" Version="0.1.0-alpha5" />
<PackageReference Include="PulseTrade.Comm.Actor.Registry" />
paket add PulseTrade.Comm.Actor.Registry --version 0.1.0-alpha5
#r "nuget: PulseTrade.Comm.Actor.Registry, 0.1.0-alpha5"
#:package PulseTrade.Comm.Actor.Registry@0.1.0-alpha5
#addin nuget:?package=PulseTrade.Comm.Actor.Registry&version=0.1.0-alpha5&prerelease
#tool nuget:?package=PulseTrade.Comm.Actor.Registry&version=0.1.0-alpha5&prerelease
PulseTrade.Comm.Actor.Registry
PulseTrade.Comm.Actor.Registry is the low-dependency PTC actor lifecycle package introduced by RFC-PTC-0017.
The package owns:
- explicit
ActorOfRegistered/registeredActorOfwrappers; - register / unregister lifecycle events;
- terminated watcher support for classic Akka actors;
- sharding lifecycle vocabulary for region, proxy, and entity state;
- renderer-neutral
ActorTreeDocument; - deterministic
ActorTreeMarkdownreport generation; - a small in-memory outbox helper for sink retry tests and bootstrap scenarios;
- an optional UTF-8 JSONL append/replay baseline for package-level restart tests.
The package does not reference PTCS, GW, RN, PTCS.Dynamic, or any host project. PTCS.Host is expected to subscribe to lifecycle events and project them into PCSL, /actors/api/snapshot, /sync/ws, IndexedDB refresh, and report APIs.
Journal / Snapshot / DB
This package does not use Akka.Persistence or SQL Server. It does not create Akka journal tables, snapshot-store tables, or SQL tables.
Durability status:
0.1.0-alpha3is a package-level JSONL baseline plus machine-readable durability profile only.0.1.0-alpha4keeps that durability boundary and adds full transport address capture forActorSystem.ActorOfRegistered/ actor-contextActorOfRegisteredcallsites when the Akka system exposes a default address.- It can append lifecycle events to a caller-selected file and replay them from a fresh store instance after process restart.
- It is not a production durable actor registry provider.
- It is not a persistent actor and does not configure
akka.persistence.journalorakka.persistence.snapshot-store. - Production non-volatile
/actorstruth is expected to come from PTCS.Host projection into PTCS PCSL/SQL-backed storage, plus the future durable outbox/provider work tracked by PTC3-071/072/076.
Current durable baseline:
ActorRegistryFileJsonlStore.create <path>stores lifecycle events as UTF-8 JSONL.- The verifier path is
.pcsl/verify.ptcActorRegistryPackage/registry.jsonl. - The caller owns the file path; there is no hardcoded database name.
- There is no current database name and no
CREATE TABLEstatement in this package.
Machine-readable profile:
let profile = ActorRegistryDurabilityProfile.fileJsonl true
profile.ProviderKey // "file-jsonl"
profile.LocalReplayCapable // true when a path is configured
profile.UsesAkkaPersistence // false
profile.CreatesAkkaJournalTables // false
profile.CreatesAkkaSnapshotTables // false
profile.UsesSqlServer // false
profile.CreatesSqlTables // false
profile.ProductionReady // false
Reserved provider keys are pcsl and sql-server, exposed through ActorRegistryDurabilityProfile.reservedPcsl and ActorRegistryDurabilityProfile.reservedSqlServer. They are not implemented in this core package and return ProductionReady=false.
JSONL record shape is one ActorRegistryLifecycleEvent per line:
{
"contractVersion": "ptc.actor-registry.lifecycle-event.v1",
"eventId": "registered-0001",
"eventKind": "Registered",
"runtimeKind": "Actor",
"systemName": "DemoSystem",
"address": "akka://DemoSystem/user/worker",
"fullPath": "/user/worker",
"parentPath": "/user",
"name": "worker",
"status": "Active",
"statusVersion": 1,
"generation": "gen-1",
"nodeId": "node-a",
"role": null,
"shardId": null,
"entityId": null,
"typeName": null,
"tags": ["ptc"],
"metadata": { "package": "demo" },
"observedAtUtc": "2026-06-28T00:00:00.0000000+00:00"
}
SQL Server / PCSL projection providers are intentionally not embedded in this low-dependency package yet. Production PTCS.Host should project lifecycle events into its own PCSL/SQL-backed actor registry stream and materialized snapshot when that host slice is enabled. Do not treat the JSONL file as the production database.
Basic Usage
open System.Threading.Tasks
open Akka.Actor
open PulseTrade.Comm.Actor.Registry
let events = System.Collections.Concurrent.ConcurrentQueue<ActorRegistryLifecycleEvent>()
let sink : ActorRegistryEventSink =
fun event ->
events.Enqueue event
Task.CompletedTask
let settings =
ActorRegistrySettings.create sink
|> ActorRegistrySettings.withTags [ "ptc"; "demo" ]
let system = ActorSystem.Create("Demo")
let props = Props.Create(fun () -> UntypedActor.Empty)
let registered =
system.ActorOfRegistered(settings, props, "worker")
Use the wrapper deliberately. F# extension members do not override Akka.NET instance ActorOf; callsites must opt in by calling ActorOfRegistered or ActorRegistryActorOf.registeredActorOf.
Address behavior:
ActorSystem.ActorOfRegistered,IActorContext.ActorOfRegistered, andIUntypedActorContext.ActorOfRegisteredtry to recordactor.Path.ToStringWithAddress(system.AsInstanceOf<ExtendedActorSystem>.Provider.DefaultAddress), so PTCS/actorscan distinguish PTCS/GW/RN nodes.- The generic
IActorRefFactoryhelper cannot always discover an owning actor system, so it may still record the local actor path. Use theActorSystemor context overload when full transport address matters.
Documents
doc/SDK_API.mddescribes the public SDK/API surface.doc/ActorArchitecture.mddescribes watcher, outbox, ActorTree, and sharding lifecycle boundaries.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Akka (>= 1.5.69)
- FSharp.Core (>= 10.1.301)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on PulseTrade.Comm.Actor.Registry:
| Package | Downloads |
|---|---|
|
PulseTrade.Comm.GW
Durable facade package for Generic Gateway task-ticket, recovery, delivery, forwarding, and host adapter integration. |
|
|
PulseTrade.Comm.ResourceNode.DurableProxy
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha5 | 0 | 6/29/2026 |
| 0.1.0-alpha4 | 49 | 6/28/2026 |
| 0.1.0-alpha3 | 54 | 6/27/2026 |
| 0.1.0-alpha2 | 49 | 6/27/2026 |