@adhdev/daemon-core 0.9.82-rc.513 → 0.9.82-rc.515

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -398,6 +398,40 @@ export interface RepoMeshRelatedRepo {
398
398
  * (see migrateLoadedMeshConfig).
399
399
  */
400
400
 
401
+ /**
402
+ * Direction-B unified mirrored member state (REMOTE-NODE-SLOT-CAP-CHIP fix).
403
+ *
404
+ * A single self-reported observability envelope stamped by the daemon that OWNS a
405
+ * node's workspace and carried wholesale on the git_status envelope
406
+ * (reporterMemberState), replacing the fragmented per-field self-heal that mirrored
407
+ * providerVersions and daemonBuildVersion ad-hoc but silently dropped `slots`. The
408
+ * coordinator ingests this whole object onto the mirrored remote node in one place
409
+ * (mesh-node-identity.recordInlineMeshDirectGitTruth).
410
+ *
411
+ * Source-of-truth model: EACH NODE owns its own slots/versions locally; the
412
+ * coordinator is a pure mirror of a remote member's reported state. Its own
413
+ * join-time `policy` copy for a remote member is a stale empty `{}` and must never
414
+ * shadow this mirror (that would be a precedence inversion — see
415
+ * resolveNodeCapabilitySlots).
416
+ */
417
+ export interface MeshReportedMemberState {
418
+ /** Reporter node's detected provider CLI/ACP versions (keyed by provider id). */
419
+ providerVersions?: Record<string, string>;
420
+ /** Reporter daemon's build version (getDaemonBuildInfo().version). */
421
+ daemonBuildVersion?: string;
422
+ /**
423
+ * Reporter node's OWN resolved capability slots (resolveNodeCapabilitySlots over
424
+ * its LOCAL real policy). This is the field the coordinator's join-time policy
425
+ * copy lacks for a remote member, and the reason remote slot-cap chips were
426
+ * missing. For a remote mirrored node this is authoritative over the (empty)
427
+ * local policy.slots; for the coordinator's own node the local policy is used
428
+ * directly (never mirrored here).
429
+ */
430
+ slots?: NodeCapabilitySlot[];
431
+ /** Epoch ms the report was stamped; used for mirror staleness reasoning. */
432
+ lastReportedAt?: number;
433
+ }
434
+
401
435
  export interface RepoMeshNodePolicy {
402
436
  readOnly?: boolean;
403
437
  canPush?: boolean;
@@ -915,6 +949,24 @@ export interface LocalMeshNodeEntry {
915
949
  * owning daemon, carried on the git_status envelope (reporterDaemonBuildVersion)
916
950
  * alongside the provider versions. Absent until first reported. */
917
951
  reportedDaemonBuildVersion?: string;
952
+ /**
953
+ * Unified mirrored "member state" self-reported by the daemon that owns this
954
+ * node's workspace, carried wholesale on the git_status envelope
955
+ * (reporterMemberState) and ingested by the coordinator in one place. This is
956
+ * the Direction-B consolidation of the previously per-field self-heal
957
+ * (reportedProviderVersions, reportedDaemonBuildVersion — and now the node's
958
+ * OWN resolved capability `slots`, which the coordinator's join-time policy copy
959
+ * for a remote member does NOT carry). Each node owns its own slots/versions
960
+ * locally; the coordinator is a pure mirror of what a remote member reports over
961
+ * P2P — it must never treat its stale join-time policy copy as authoritative for
962
+ * a remote node's slots. The legacy flat fields above stay populated in parallel
963
+ * during rollout for back-compat (see mesh-node-identity ingest). `slots` is the
964
+ * reporter node's own resolved capability slots (resolveNodeCapabilitySlots over
965
+ * its LOCAL real policy). `lastReportedAt` is the epoch ms the report was
966
+ * stamped, so a partitioned node's mirror does not linger as fresh forever.
967
+ * Absent until the first envelope carrying it is ingested.
968
+ */
969
+ reportedMemberState?: MeshReportedMemberState;
918
970
  /**
919
971
  * The operator-set machine nickname (config.machineNickname) of the daemon
920
972
  * that owns this node's workspace. The local coordinator stamps its own