neotoma 0.18.3 → 0.18.4

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.
Files changed (241) hide show
  1. package/dist/actions.d.ts +10 -0
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +86 -0
  4. package/dist/actions.js.map +1 -1
  5. package/dist/cli/bootstrap.js +0 -0
  6. package/dist/cli/index.d.ts +3 -0
  7. package/dist/cli/index.d.ts.map +1 -1
  8. package/dist/cli/index.js +22 -8
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/docs/developer/cli_reference.md +2 -1
  11. package/dist/docs/developer/fleet_onboarding.md +23 -0
  12. package/dist/docs/subsystems/conflict_resolution.md +72 -30
  13. package/dist/docs/testing/automated_test_catalog.md +12 -6
  14. package/dist/server.d.ts.map +1 -1
  15. package/dist/server.js +80 -0
  16. package/dist/server.js.map +1 -1
  17. package/dist/services/null_cleared_field_warning.d.ts +71 -0
  18. package/dist/services/null_cleared_field_warning.d.ts.map +1 -0
  19. package/dist/services/null_cleared_field_warning.js +77 -0
  20. package/dist/services/null_cleared_field_warning.js.map +1 -0
  21. package/dist/services/source_priority_warning.d.ts +57 -0
  22. package/dist/services/source_priority_warning.d.ts.map +1 -1
  23. package/dist/services/source_priority_warning.js +84 -0
  24. package/dist/services/source_priority_warning.js.map +1 -1
  25. package/dist/shared/action_schemas.d.ts +6 -0
  26. package/dist/shared/action_schemas.d.ts.map +1 -1
  27. package/dist/shared/action_schemas.js +6 -0
  28. package/dist/shared/action_schemas.js.map +1 -1
  29. package/package.json +2 -1
  30. package/dist/cli/activate.d.ts +0 -72
  31. package/dist/cli/activate.d.ts.map +0 -1
  32. package/dist/cli/activate.js +0 -160
  33. package/dist/cli/activate.js.map +0 -1
  34. package/dist/cli/auth_keygen.d.ts +0 -11
  35. package/dist/cli/auth_keygen.d.ts.map +0 -1
  36. package/dist/cli/auth_keygen.js +0 -110
  37. package/dist/cli/auth_keygen.js.map +0 -1
  38. package/dist/cli/packs.d.ts +0 -15
  39. package/dist/cli/packs.d.ts.map +0 -1
  40. package/dist/cli/packs.js +0 -156
  41. package/dist/cli/packs.js.map +0 -1
  42. package/dist/cli/triage.d.ts +0 -33
  43. package/dist/cli/triage.d.ts.map +0 -1
  44. package/dist/cli/triage.js +0 -251
  45. package/dist/cli/triage.js.map +0 -1
  46. package/dist/services/activation/stage_zero_five.d.ts +0 -62
  47. package/dist/services/activation/stage_zero_five.d.ts.map +0 -1
  48. package/dist/services/activation/stage_zero_five.js +0 -126
  49. package/dist/services/activation/stage_zero_five.js.map +0 -1
  50. package/dist/services/activation/user_preference.d.ts +0 -110
  51. package/dist/services/activation/user_preference.d.ts.map +0 -1
  52. package/dist/services/activation/user_preference.js +0 -98
  53. package/dist/services/activation/user_preference.js.map +0 -1
  54. package/dist/services/activation/vertical_detection.d.ts +0 -78
  55. package/dist/services/activation/vertical_detection.d.ts.map +0 -1
  56. package/dist/services/activation/vertical_detection.js +0 -219
  57. package/dist/services/activation/vertical_detection.js.map +0 -1
  58. package/dist/services/app_mount.d.ts +0 -166
  59. package/dist/services/app_mount.d.ts.map +0 -1
  60. package/dist/services/app_mount.js +0 -626
  61. package/dist/services/app_mount.js.map +0 -1
  62. package/dist/services/bundled_pages/html_shell.d.ts +0 -118
  63. package/dist/services/bundled_pages/html_shell.d.ts.map +0 -1
  64. package/dist/services/bundled_pages/html_shell.js +0 -242
  65. package/dist/services/bundled_pages/html_shell.js.map +0 -1
  66. package/dist/services/bundled_pages/tokens.d.ts +0 -496
  67. package/dist/services/bundled_pages/tokens.d.ts.map +0 -1
  68. package/dist/services/bundled_pages/tokens.js +0 -261
  69. package/dist/services/bundled_pages/tokens.js.map +0 -1
  70. package/dist/services/compliance/alerting.d.ts +0 -123
  71. package/dist/services/compliance/alerting.d.ts.map +0 -1
  72. package/dist/services/compliance/alerting.js +0 -169
  73. package/dist/services/compliance/alerting.js.map +0 -1
  74. package/dist/services/compliance/historical_backfill.d.ts +0 -74
  75. package/dist/services/compliance/historical_backfill.d.ts.map +0 -1
  76. package/dist/services/compliance/historical_backfill.js +0 -244
  77. package/dist/services/compliance/historical_backfill.js.map +0 -1
  78. package/dist/services/compliance/renderer.d.ts +0 -21
  79. package/dist/services/compliance/renderer.d.ts.map +0 -1
  80. package/dist/services/compliance/renderer.js +0 -208
  81. package/dist/services/compliance/renderer.js.map +0 -1
  82. package/dist/services/compliance/routes.d.ts +0 -55
  83. package/dist/services/compliance/routes.d.ts.map +0 -1
  84. package/dist/services/compliance/routes.js +0 -212
  85. package/dist/services/compliance/routes.js.map +0 -1
  86. package/dist/services/docs/site_page_frontmatter.d.ts +0 -58
  87. package/dist/services/docs/site_page_frontmatter.d.ts.map +0 -1
  88. package/dist/services/docs/site_page_frontmatter.js +0 -106
  89. package/dist/services/docs/site_page_frontmatter.js.map +0 -1
  90. package/dist/services/docs/site_page_index_builder.d.ts +0 -49
  91. package/dist/services/docs/site_page_index_builder.d.ts.map +0 -1
  92. package/dist/services/docs/site_page_index_builder.js +0 -152
  93. package/dist/services/docs/site_page_index_builder.js.map +0 -1
  94. package/dist/services/docs/site_pages_route.d.ts +0 -33
  95. package/dist/services/docs/site_pages_route.d.ts.map +0 -1
  96. package/dist/services/docs/site_pages_route.js +0 -124
  97. package/dist/services/docs/site_pages_route.js.map +0 -1
  98. package/dist/services/docs_bundle/frontmatter.d.ts +0 -26
  99. package/dist/services/docs_bundle/frontmatter.d.ts.map +0 -1
  100. package/dist/services/docs_bundle/frontmatter.js +0 -50
  101. package/dist/services/docs_bundle/frontmatter.js.map +0 -1
  102. package/dist/services/docs_bundle/loader.d.ts +0 -28
  103. package/dist/services/docs_bundle/loader.d.ts.map +0 -1
  104. package/dist/services/docs_bundle/loader.js +0 -91
  105. package/dist/services/docs_bundle/loader.js.map +0 -1
  106. package/dist/services/docs_bundle/render_html.d.ts +0 -15
  107. package/dist/services/docs_bundle/render_html.d.ts.map +0 -1
  108. package/dist/services/docs_bundle/render_html.js +0 -48
  109. package/dist/services/docs_bundle/render_html.js.map +0 -1
  110. package/dist/services/docs_bundle/types.d.ts +0 -73
  111. package/dist/services/docs_bundle/types.d.ts.map +0 -1
  112. package/dist/services/docs_bundle/types.js +0 -50
  113. package/dist/services/docs_bundle/types.js.map +0 -1
  114. package/dist/services/docs_install/loader.d.ts +0 -25
  115. package/dist/services/docs_install/loader.d.ts.map +0 -1
  116. package/dist/services/docs_install/loader.js +0 -63
  117. package/dist/services/docs_install/loader.js.map +0 -1
  118. package/dist/services/docs_install/renderer.d.ts +0 -40
  119. package/dist/services/docs_install/renderer.d.ts.map +0 -1
  120. package/dist/services/docs_install/renderer.js +0 -323
  121. package/dist/services/docs_install/renderer.js.map +0 -1
  122. package/dist/services/docs_install/routes.d.ts +0 -20
  123. package/dist/services/docs_install/routes.d.ts.map +0 -1
  124. package/dist/services/docs_install/routes.js +0 -117
  125. package/dist/services/docs_install/routes.js.map +0 -1
  126. package/dist/services/entity_submission/seed_product_feedback_schema.d.ts +0 -11
  127. package/dist/services/entity_submission/seed_product_feedback_schema.d.ts.map +0 -1
  128. package/dist/services/entity_submission/seed_product_feedback_schema.js +0 -45
  129. package/dist/services/entity_submission/seed_product_feedback_schema.js.map +0 -1
  130. package/dist/services/feedback/activation.d.ts +0 -20
  131. package/dist/services/feedback/activation.d.ts.map +0 -1
  132. package/dist/services/feedback/activation.js +0 -66
  133. package/dist/services/feedback/activation.js.map +0 -1
  134. package/dist/services/feedback/admin_proxy.d.ts +0 -73
  135. package/dist/services/feedback/admin_proxy.d.ts.map +0 -1
  136. package/dist/services/feedback/admin_proxy.js +0 -292
  137. package/dist/services/feedback/admin_proxy.js.map +0 -1
  138. package/dist/services/feedback/admin_session.d.ts +0 -36
  139. package/dist/services/feedback/admin_session.d.ts.map +0 -1
  140. package/dist/services/feedback/admin_session.js +0 -147
  141. package/dist/services/feedback/admin_session.js.map +0 -1
  142. package/dist/services/feedback/local_store.d.ts +0 -72
  143. package/dist/services/feedback/local_store.d.ts.map +0 -1
  144. package/dist/services/feedback/local_store.js +0 -95
  145. package/dist/services/feedback/local_store.js.map +0 -1
  146. package/dist/services/feedback/mirror_local_to_entity.d.ts +0 -42
  147. package/dist/services/feedback/mirror_local_to_entity.d.ts.map +0 -1
  148. package/dist/services/feedback/mirror_local_to_entity.js +0 -71
  149. package/dist/services/feedback/mirror_local_to_entity.js.map +0 -1
  150. package/dist/services/feedback/neotoma_payload.d.ts +0 -108
  151. package/dist/services/feedback/neotoma_payload.d.ts.map +0 -1
  152. package/dist/services/feedback/neotoma_payload.js +0 -169
  153. package/dist/services/feedback/neotoma_payload.js.map +0 -1
  154. package/dist/services/feedback/next_check.d.ts +0 -4
  155. package/dist/services/feedback/next_check.d.ts.map +0 -1
  156. package/dist/services/feedback/next_check.js +0 -22
  157. package/dist/services/feedback/next_check.js.map +0 -1
  158. package/dist/services/feedback/seed_schema.d.ts +0 -52
  159. package/dist/services/feedback/seed_schema.d.ts.map +0 -1
  160. package/dist/services/feedback/seed_schema.js +0 -160
  161. package/dist/services/feedback/seed_schema.js.map +0 -1
  162. package/dist/services/feedback/types.d.ts +0 -134
  163. package/dist/services/feedback/types.d.ts.map +0 -1
  164. package/dist/services/feedback/types.js +0 -23
  165. package/dist/services/feedback/types.js.map +0 -1
  166. package/dist/services/feedback/upgrade_guidance_map.d.ts +0 -24
  167. package/dist/services/feedback/upgrade_guidance_map.d.ts.map +0 -1
  168. package/dist/services/feedback/upgrade_guidance_map.js +0 -39
  169. package/dist/services/feedback/upgrade_guidance_map.js.map +0 -1
  170. package/dist/services/feedback/verification_request.d.ts +0 -14
  171. package/dist/services/feedback/verification_request.d.ts.map +0 -1
  172. package/dist/services/feedback/verification_request.js +0 -33
  173. package/dist/services/feedback/verification_request.js.map +0 -1
  174. package/dist/services/feedback_transport.d.ts +0 -15
  175. package/dist/services/feedback_transport.d.ts.map +0 -1
  176. package/dist/services/feedback_transport.js +0 -31
  177. package/dist/services/feedback_transport.js.map +0 -1
  178. package/dist/services/feedback_transport_http.d.ts +0 -14
  179. package/dist/services/feedback_transport_http.d.ts.map +0 -1
  180. package/dist/services/feedback_transport_http.js +0 -40
  181. package/dist/services/feedback_transport_http.js.map +0 -1
  182. package/dist/services/feedback_transport_local.d.ts +0 -20
  183. package/dist/services/feedback_transport_local.d.ts.map +0 -1
  184. package/dist/services/feedback_transport_local.js +0 -152
  185. package/dist/services/feedback_transport_local.js.map +0 -1
  186. package/dist/services/issues/syncIssuesFromGitHub.d.ts +0 -35
  187. package/dist/services/issues/syncIssuesFromGitHub.d.ts.map +0 -1
  188. package/dist/services/issues/syncIssuesFromGitHub.js +0 -193
  189. package/dist/services/issues/syncIssuesFromGitHub.js.map +0 -1
  190. package/dist/services/oauth_pages/render.d.ts +0 -25
  191. package/dist/services/oauth_pages/render.d.ts.map +0 -1
  192. package/dist/services/oauth_pages/render.js +0 -235
  193. package/dist/services/oauth_pages/render.js.map +0 -1
  194. package/dist/services/root_landing/auth_overview.d.ts +0 -60
  195. package/dist/services/root_landing/auth_overview.d.ts.map +0 -1
  196. package/dist/services/root_landing/auth_overview.js +0 -86
  197. package/dist/services/root_landing/auth_overview.js.map +0 -1
  198. package/dist/services/root_landing/cli_overview.d.ts +0 -34
  199. package/dist/services/root_landing/cli_overview.d.ts.map +0 -1
  200. package/dist/services/root_landing/cli_overview.js +0 -123
  201. package/dist/services/root_landing/cli_overview.js.map +0 -1
  202. package/dist/services/root_landing/http_api_overview.d.ts +0 -34
  203. package/dist/services/root_landing/http_api_overview.d.ts.map +0 -1
  204. package/dist/services/root_landing/http_api_overview.js +0 -110
  205. package/dist/services/root_landing/http_api_overview.js.map +0 -1
  206. package/dist/services/root_landing/mcp_overview.d.ts +0 -34
  207. package/dist/services/root_landing/mcp_overview.d.ts.map +0 -1
  208. package/dist/services/root_landing/mcp_overview.js +0 -133
  209. package/dist/services/root_landing/mcp_overview.js.map +0 -1
  210. package/dist/services/sandbox/inspector_redirect.d.ts +0 -41
  211. package/dist/services/sandbox/inspector_redirect.d.ts.map +0 -1
  212. package/dist/services/sandbox/inspector_redirect.js +0 -59
  213. package/dist/services/sandbox/inspector_redirect.js.map +0 -1
  214. package/dist/services/timeline_user_query.d.ts +0 -22
  215. package/dist/services/timeline_user_query.d.ts.map +0 -1
  216. package/dist/services/timeline_user_query.js +0 -60
  217. package/dist/services/timeline_user_query.js.map +0 -1
  218. package/dist/services/usage_stats.d.ts +0 -18
  219. package/dist/services/usage_stats.d.ts.map +0 -1
  220. package/dist/services/usage_stats.js +0 -82
  221. package/dist/services/usage_stats.js.map +0 -1
  222. package/dist/services/verticals/baseline_metadata.d.ts +0 -39
  223. package/dist/services/verticals/baseline_metadata.d.ts.map +0 -1
  224. package/dist/services/verticals/baseline_metadata.js +0 -394
  225. package/dist/services/verticals/baseline_metadata.js.map +0 -1
  226. package/dist/services/verticals/entity_type_registry.d.ts +0 -29
  227. package/dist/services/verticals/entity_type_registry.d.ts.map +0 -1
  228. package/dist/services/verticals/entity_type_registry.js +0 -169
  229. package/dist/services/verticals/entity_type_registry.js.map +0 -1
  230. package/dist/services/verticals/install.d.ts +0 -64
  231. package/dist/services/verticals/install.d.ts.map +0 -1
  232. package/dist/services/verticals/install.js +0 -262
  233. package/dist/services/verticals/install.js.map +0 -1
  234. package/dist/services/verticals/registry.d.ts +0 -131
  235. package/dist/services/verticals/registry.d.ts.map +0 -1
  236. package/dist/services/verticals/registry.js +0 -457
  237. package/dist/services/verticals/registry.js.map +0 -1
  238. package/dist/shared/generated_design_tokens.d.ts +0 -2
  239. package/dist/shared/generated_design_tokens.d.ts.map +0 -1
  240. package/dist/shared/generated_design_tokens.js +0 -3
  241. package/dist/shared/generated_design_tokens.js.map +0 -1
package/dist/actions.d.ts CHANGED
@@ -97,6 +97,16 @@ type GuestPrincipal = {
97
97
  type RoutePrincipal = UserPrincipal | GuestPrincipal;
98
98
  /** Exported for unit tests: routes where guest (AAuth / guest token) may be stamped before handlers run. */
99
99
  export declare function routeAcceptsGuestPrincipal(req: Pick<express.Request, "method" | "path">): boolean;
100
+ /**
101
+ * Exported for unit tests: the two issue-write routes that extend local-loopback
102
+ * trust to unauthenticated requests. A local request to `/issues/submit` or
103
+ * `/issues/add_message` with no `Authorization: Bearer` header falls through to
104
+ * the local dev user — the same offline-developer trust the entity-read routes
105
+ * already grant (see `resolveGuestUserId`). This is the ONLY place that trust is
106
+ * widened; every other route still requires a Bearer token, and remote requests
107
+ * (non-loopback / untrusted XFF) get AUTH_REQUIRED on these routes too.
108
+ */
109
+ export declare function routeAllowsLocalIssueWriteFallback(req: Pick<express.Request, "method" | "path">): boolean;
100
110
  /** Exported for unit tests: guest-capable routes that mutate state and should consume a guest write-rate budget. */
101
111
  export declare function routeConsumesGuestWriteBudget(req: Pick<express.Request, "method" | "path">): boolean;
102
112
  /** Exported for unit tests: guest-rate-limit key precedence is thumbprint -> guest token -> IP. */
@@ -1 +1 @@
1
- {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
package/dist/actions.js CHANGED
@@ -2611,6 +2611,23 @@ export function routeAcceptsGuestPrincipal(req) {
2611
2611
  }
2612
2612
  return false;
2613
2613
  }
2614
+ /**
2615
+ * Exported for unit tests: the two issue-write routes that extend local-loopback
2616
+ * trust to unauthenticated requests. A local request to `/issues/submit` or
2617
+ * `/issues/add_message` with no `Authorization: Bearer` header falls through to
2618
+ * the local dev user — the same offline-developer trust the entity-read routes
2619
+ * already grant (see `resolveGuestUserId`). This is the ONLY place that trust is
2620
+ * widened; every other route still requires a Bearer token, and remote requests
2621
+ * (non-loopback / untrusted XFF) get AUTH_REQUIRED on these routes too.
2622
+ */
2623
+ export function routeAllowsLocalIssueWriteFallback(req) {
2624
+ const path = req.path;
2625
+ return (req.method === "POST" &&
2626
+ (path === "/issues/submit" ||
2627
+ path === "/api/issues/submit" ||
2628
+ path === "/issues/add_message" ||
2629
+ path === "/api/issues/add_message"));
2630
+ }
2614
2631
  /** Exported for unit tests: guest-capable routes that mutate state and should consume a guest write-rate budget. */
2615
2632
  export function routeConsumesGuestWriteBudget(req) {
2616
2633
  const path = req.path;
@@ -2704,6 +2721,24 @@ async function resolveRoutePrincipal(req, accept) {
2704
2721
  }
2705
2722
  }
2706
2723
  if (accept.includes("user")) {
2724
+ // Local-loopback trust for the two issue-write routes: a local request with
2725
+ // no Bearer token resolves to the local dev user instead of failing
2726
+ // AUTH_REQUIRED. This mirrors the existing local fallback in
2727
+ // `resolveGuestUserId` and keeps `neotoma issues create` working offline
2728
+ // (gh-CLI auth alone does not configure a Neotoma Bearer token). Scoped as
2729
+ // narrowly as possible: ONLY these routes, ONLY local requests, ONLY when
2730
+ // no Bearer header is present — remote/Bearer requests fall through to the
2731
+ // normal `getAuthenticatedUserId` gate below.
2732
+ const headerAuth = (req.headers.authorization || req.headers.Authorization || "");
2733
+ if (routeAllowsLocalIssueWriteFallback(req) &&
2734
+ isLocalRequest(req) &&
2735
+ !headerAuth.startsWith("Bearer ")) {
2736
+ const userId = _localSandboxActive ? ensureLocalSandboxUser().id : ensureLocalDevUser().id;
2737
+ // Stamp the principal so a later `getAuthenticatedUserId` in the handler
2738
+ // resolves the same local user without re-tripping the missing-Bearer gate.
2739
+ stampUserPrincipal(req, userId);
2740
+ return { kind: "user", userId };
2741
+ }
2707
2742
  const userId = await getAuthenticatedUserId(req, (req.body?.user_id ??
2708
2743
  req.query.user_id));
2709
2744
  return { kind: "user", userId };
@@ -5704,6 +5739,12 @@ export async function storeStructuredForApi(params) {
5704
5739
  }
5705
5740
  }
5706
5741
  const createdEntities = [];
5742
+ // Issue #1839: capture each entity's prior and post-reduction snapshot so the
5743
+ // store_warnings loop below can detect a NULL_CLEARED_FIELD event (an incoming
5744
+ // null clearing a prior non-null value under highest_priority). Keyed by
5745
+ // entity_id.
5746
+ const priorSnapshotByEntityId = new Map();
5747
+ const newSnapshotByEntityId = new Map();
5707
5748
  for (const r of resolved) {
5708
5749
  let observation_id = null;
5709
5750
  let snapshotAfter = null;
@@ -5715,6 +5756,7 @@ export async function storeStructuredForApi(params) {
5715
5756
  .eq("user_id", userId)
5716
5757
  .maybeSingle();
5717
5758
  const priorSnapshot = priorSnapRow?.snapshot ?? {};
5759
+ priorSnapshotByEntityId.set(r.entity_id, priorSnapshot);
5718
5760
  const obsData = await createObservation({
5719
5761
  entity_id: r.entity_id,
5720
5762
  entity_type: r.entity_type,
@@ -5737,6 +5779,8 @@ export async function storeStructuredForApi(params) {
5737
5779
  const snap = await recomputeSnapshot(r.entity_id, userId);
5738
5780
  snapshotAfter =
5739
5781
  snap?.snapshot ?? null;
5782
+ if (snapshotAfter)
5783
+ newSnapshotByEntityId.set(r.entity_id, snapshotAfter);
5740
5784
  }
5741
5785
  catch (snapshotErr) {
5742
5786
  logger.warn(`Snapshot recompute failed for ${r.entity_id}: ${snapshotErr}`);
@@ -6076,6 +6120,48 @@ export async function storeStructuredForApi(params) {
6076
6120
  });
6077
6121
  if (spWarn)
6078
6122
  schemaStoreWarnings.push(spWarn);
6123
+ // Issue #1838: SOURCE_PRIORITY_ESCALATION — mirror-image advisory. A
6124
+ // write at the DEFAULT source_priority (100) into a `highest_priority`
6125
+ // field silently OUTRANKS any prior observation written with an
6126
+ // explicit lower priority. Non-blocking; reuses the same import.
6127
+ const { buildSourcePriorityEscalationWarning } = await import("./services/source_priority_warning.js");
6128
+ const spEsc = buildSourcePriorityEscalationWarning({
6129
+ sourcePriority,
6130
+ writtenFields: r.fields,
6131
+ mergePolicies: schemaEntry?.reducer_config?.merge_policies,
6132
+ observationIndex: r.observation_index,
6133
+ entityType: r.entity_type,
6134
+ entityId: r.entity_id,
6135
+ });
6136
+ if (spEsc)
6137
+ schemaStoreWarnings.push(spEsc);
6138
+ }
6139
+ // Issue #1839: NULL_CLEARED_FIELD — non-blocking advisory warning when an
6140
+ // incoming null clears a prior non-null value under a `highest_priority`
6141
+ // field. The clear is by design (null is an explicit tombstone), but it
6142
+ // is silent today; this surfaces the data-loss vector. Warn-only: no
6143
+ // change to snapshot computation or clearing semantics.
6144
+ {
6145
+ const mergePolicies = schemaEntry?.reducer_config?.merge_policies;
6146
+ if (mergePolicies) {
6147
+ const priorSnapshot = priorSnapshotByEntityId.get(r.entity_id) ?? {};
6148
+ const newSnapshot = newSnapshotByEntityId.get(r.entity_id) ?? {};
6149
+ const { buildNullClearedFieldWarning } = await import("./services/null_cleared_field_warning.js");
6150
+ for (const field of Object.keys(r.fields)) {
6151
+ const nullWarn = buildNullClearedFieldWarning({
6152
+ field,
6153
+ strategy: mergePolicies[field]?.strategy,
6154
+ prior_value: priorSnapshot[field],
6155
+ incoming_value: r.fields[field],
6156
+ new_value: newSnapshot[field],
6157
+ observation_index: r.observation_index,
6158
+ entity_type: r.entity_type,
6159
+ entity_id: r.entity_id,
6160
+ });
6161
+ if (nullWarn)
6162
+ schemaStoreWarnings.push(nullWarn);
6163
+ }
6164
+ }
6079
6165
  }
6080
6166
  }
6081
6167
  }