@almadar/std 16.253.0 → 16.254.0

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 (457) hide show
  1. package/behaviors/lolo/agent/atoms/std-agent-pool.lolo +355 -0
  2. package/behaviors/lolo/agent/evals/eval-agent-builder.lolo +152 -0
  3. package/behaviors/lolo/agent/organisms/std-agent-builder.lolo +320 -26
  4. package/behaviors/lolo-behavior-contracts.json +1 -1
  5. package/behaviors/registry/agent/atoms/std-agent-context.orb +1 -1
  6. package/behaviors/registry/agent/atoms/std-agent-fix-loop.orb +1 -1
  7. package/behaviors/registry/agent/atoms/std-agent-memory.orb +1 -1
  8. package/behaviors/registry/agent/atoms/std-agent-planner.orb +1 -1
  9. package/behaviors/registry/agent/atoms/std-agent-pool.orb +1 -0
  10. package/behaviors/registry/agent/atoms/std-agent-proposal.orb +1 -1
  11. package/behaviors/registry/agent/atoms/std-agent-session.orb +1 -1
  12. package/behaviors/registry/agent/atoms/std-agent-suggestions.orb +1 -1
  13. package/behaviors/registry/agent/atoms/std-agent-tool-call.orb +1 -1
  14. package/behaviors/registry/agent/atoms/std-agent-tool-loop.orb +1 -1
  15. package/behaviors/registry/agent/atoms/std-agent-trace.orb +1 -1
  16. package/behaviors/registry/agent/evals/eval-agent-builder.orb +1 -0
  17. package/behaviors/registry/agent/organisms/std-agent-assistant.orb +1 -1
  18. package/behaviors/registry/agent/organisms/std-agent-builder.orb +1 -1
  19. package/behaviors/registry/infra/atoms/std-analytics.orb +1 -1
  20. package/behaviors/registry/infra/atoms/std-approval-gate.orb +1 -1
  21. package/behaviors/registry/infra/atoms/std-audit-capture.orb +1 -1
  22. package/behaviors/registry/infra/atoms/std-cache-aside.orb +1 -1
  23. package/behaviors/registry/infra/atoms/std-calendar-sync.orb +1 -1
  24. package/behaviors/registry/infra/atoms/std-cascade-on-delete.orb +1 -1
  25. package/behaviors/registry/infra/atoms/std-circuit-breaker.orb +1 -1
  26. package/behaviors/registry/infra/atoms/std-cross-reference.orb +1 -1
  27. package/behaviors/registry/infra/atoms/std-data-erasure.orb +1 -1
  28. package/behaviors/registry/infra/atoms/std-data-import.orb +1 -1
  29. package/behaviors/registry/infra/atoms/std-global-search.orb +1 -1
  30. package/behaviors/registry/infra/atoms/std-knowledge-loop.orb +1 -1
  31. package/behaviors/registry/infra/atoms/std-lifecycle.orb +1 -1
  32. package/behaviors/registry/infra/atoms/std-migration-job.orb +1 -1
  33. package/behaviors/registry/infra/atoms/std-mod-queue.orb +1 -1
  34. package/behaviors/registry/infra/atoms/std-notification-center.orb +1 -1
  35. package/behaviors/registry/infra/atoms/std-notification-preferences.orb +1 -1
  36. package/behaviors/registry/infra/atoms/std-notify-on-event.orb +1 -1
  37. package/behaviors/registry/infra/atoms/std-page-search.orb +1 -1
  38. package/behaviors/registry/infra/atoms/std-page-watch.orb +1 -1
  39. package/behaviors/registry/infra/atoms/std-permission-matrix.orb +1 -1
  40. package/behaviors/registry/infra/atoms/std-rate-limiter.orb +1 -1
  41. package/behaviors/registry/infra/atoms/std-reminder-scheduler.orb +1 -1
  42. package/behaviors/registry/infra/atoms/std-review-cycle.orb +1 -1
  43. package/behaviors/registry/infra/atoms/std-row-access-control.orb +1 -1
  44. package/behaviors/registry/infra/atoms/std-status-lifecycle.orb +1 -1
  45. package/behaviors/registry/infra/organisms/std-status-lifecycle-control.orb +1 -1
  46. package/behaviors/registry/ml/atoms/std-data-collector.orb +1 -1
  47. package/behaviors/registry/ml/atoms/std-graph-builder.orb +1 -1
  48. package/behaviors/registry/ml/atoms/std-ml-classify.orb +1 -1
  49. package/behaviors/registry/ml/atoms/std-ml-infer.orb +1 -1
  50. package/behaviors/registry/ml/atoms/std-ml-label-capture.orb +1 -1
  51. package/behaviors/registry/ml/atoms/std-ml-lookup.orb +1 -1
  52. package/behaviors/registry/ml/atoms/std-ml-posterior.orb +1 -1
  53. package/behaviors/registry/ml/atoms/std-ml-similarity.orb +1 -1
  54. package/behaviors/registry/ml/atoms/std-tokenizer.orb +1 -1
  55. package/behaviors/registry/ml/atoms/std-weight-validator.orb +1 -1
  56. package/behaviors/registry/ml/organisms/std-escalating-decision.orb +1 -1
  57. package/behaviors/registry/ml/organisms/std-knowledge-tracing.orb +1 -1
  58. package/behaviors/registry/ui/avl/atoms/std-avl-cosmic-zoom.orb +1 -1
  59. package/behaviors/registry/ui/avl/atoms/ui-avl-glyph.orb +1 -1
  60. package/behaviors/registry/ui/avl/atoms/ui-avl-state-machine.orb +1 -1
  61. package/behaviors/registry/ui/avl/atoms/ui-avl-transition-detail.orb +1 -1
  62. package/behaviors/registry/ui/avl/atoms/ui-avl-transition-explainer.orb +1 -1
  63. package/behaviors/registry/ui/avl/atoms/ui-behavior-view.orb +1 -1
  64. package/behaviors/registry/ui/avl/atoms/ui-module-card.orb +1 -1
  65. package/behaviors/registry/ui/avl/organisms/ui-flow-canvas.orb +1 -1
  66. package/behaviors/registry/ui/avl/organisms/ui-layers-panel.orb +1 -1
  67. package/behaviors/registry/ui/avl/organisms/ui-orb-inspector.orb +1 -1
  68. package/behaviors/registry/ui/core/atoms/std-app-layout.orb +1 -1
  69. package/behaviors/registry/ui/core/atoms/std-app-search.orb +1 -1
  70. package/behaviors/registry/ui/core/atoms/std-behavior-catalog.orb +1 -1
  71. package/behaviors/registry/ui/core/atoms/std-behavior-tour.orb +1 -1
  72. package/behaviors/registry/ui/core/atoms/std-billable-hour.orb +1 -1
  73. package/behaviors/registry/ui/core/atoms/std-board.orb +1 -1
  74. package/behaviors/registry/ui/core/atoms/std-book-reader.orb +1 -1
  75. package/behaviors/registry/ui/core/atoms/std-browse.orb +1 -1
  76. package/behaviors/registry/ui/core/atoms/std-calendar.orb +1 -1
  77. package/behaviors/registry/ui/core/atoms/std-card-grid.orb +1 -1
  78. package/behaviors/registry/ui/core/atoms/std-confirmation.orb +1 -1
  79. package/behaviors/registry/ui/core/atoms/std-dashboard-grid-embedded.orb +1 -1
  80. package/behaviors/registry/ui/core/atoms/std-date-range.orb +1 -1
  81. package/behaviors/registry/ui/core/atoms/std-detail-layout.orb +1 -1
  82. package/behaviors/registry/ui/core/atoms/std-doc-page.orb +1 -1
  83. package/behaviors/registry/ui/core/atoms/std-esign-flow.orb +1 -1
  84. package/behaviors/registry/ui/core/atoms/std-esign-request.orb +1 -1
  85. package/behaviors/registry/ui/core/atoms/std-event-log.orb +1 -1
  86. package/behaviors/registry/ui/core/atoms/std-export.orb +1 -1
  87. package/behaviors/registry/ui/core/atoms/std-file-store.orb +1 -1
  88. package/behaviors/registry/ui/core/atoms/std-filter.orb +1 -1
  89. package/behaviors/registry/ui/core/atoms/std-form-advanced.orb +1 -1
  90. package/behaviors/registry/ui/core/atoms/std-gallery.orb +1 -1
  91. package/behaviors/registry/ui/core/atoms/std-gantt-schedule.orb +1 -1
  92. package/behaviors/registry/ui/core/atoms/std-geosearch.orb +1 -1
  93. package/behaviors/registry/ui/core/atoms/std-graphs.orb +1 -1
  94. package/behaviors/registry/ui/core/atoms/std-hero.orb +1 -1
  95. package/behaviors/registry/ui/core/atoms/std-home.orb +1 -1
  96. package/behaviors/registry/ui/core/atoms/std-image-upload-multi.orb +1 -1
  97. package/behaviors/registry/ui/core/atoms/std-import.orb +1 -1
  98. package/behaviors/registry/ui/core/atoms/std-language-picker.orb +1 -1
  99. package/behaviors/registry/ui/core/atoms/std-media-section.orb +1 -1
  100. package/behaviors/registry/ui/core/atoms/std-modal-editor.orb +1 -1
  101. package/behaviors/registry/ui/core/atoms/std-modal.orb +1 -1
  102. package/behaviors/registry/ui/core/atoms/std-multi-party-flow.orb +1 -1
  103. package/behaviors/registry/ui/core/atoms/std-notification-panel.orb +1 -1
  104. package/behaviors/registry/ui/core/atoms/std-panel-launcher.orb +1 -1
  105. package/behaviors/registry/ui/core/atoms/std-pricing.orb +1 -1
  106. package/behaviors/registry/ui/core/atoms/std-proof.orb +1 -1
  107. package/behaviors/registry/ui/core/atoms/std-prose.orb +1 -1
  108. package/behaviors/registry/ui/core/atoms/std-rating-review.orb +1 -1
  109. package/behaviors/registry/ui/core/atoms/std-record-detail.orb +1 -1
  110. package/behaviors/registry/ui/core/atoms/std-recurrence.orb +1 -1
  111. package/behaviors/registry/ui/core/atoms/std-related.orb +1 -1
  112. package/behaviors/registry/ui/core/atoms/std-role-gate.orb +1 -1
  113. package/behaviors/registry/ui/core/atoms/std-saved-search.orb +1 -1
  114. package/behaviors/registry/ui/core/atoms/std-scatter.orb +1 -1
  115. package/behaviors/registry/ui/core/atoms/std-scoped-list.orb +1 -1
  116. package/behaviors/registry/ui/core/atoms/std-selection.orb +1 -1
  117. package/behaviors/registry/ui/core/atoms/std-site-footer.orb +1 -1
  118. package/behaviors/registry/ui/core/atoms/std-site-header.orb +1 -1
  119. package/behaviors/registry/ui/core/atoms/std-slide-deck.orb +1 -1
  120. package/behaviors/registry/ui/core/atoms/std-stat-band.orb +1 -1
  121. package/behaviors/registry/ui/core/atoms/std-stats.orb +1 -1
  122. package/behaviors/registry/ui/core/atoms/std-step-flow.orb +1 -1
  123. package/behaviors/registry/ui/core/atoms/std-steps.orb +1 -1
  124. package/behaviors/registry/ui/core/atoms/std-tabs.orb +1 -1
  125. package/behaviors/registry/ui/core/atoms/std-tag-strip.orb +1 -1
  126. package/behaviors/registry/ui/core/atoms/std-tag-taxonomy.orb +1 -1
  127. package/behaviors/registry/ui/core/atoms/std-thread.orb +1 -1
  128. package/behaviors/registry/ui/core/atoms/std-tree.orb +1 -1
  129. package/behaviors/registry/ui/core/atoms/std-version-history.orb +1 -1
  130. package/behaviors/registry/ui/core/atoms/std-wizard.orb +1 -1
  131. package/behaviors/registry/ui/core/atoms/std-workspace-layout.orb +1 -1
  132. package/behaviors/registry/ui/core/atoms/ui-animated-graphic.orb +1 -1
  133. package/behaviors/registry/ui/core/atoms/ui-animated-reveal.orb +1 -1
  134. package/behaviors/registry/ui/core/atoms/ui-aside.orb +1 -1
  135. package/behaviors/registry/ui/core/atoms/ui-atlas-image.orb +1 -1
  136. package/behaviors/registry/ui/core/atoms/ui-atlas-panel.orb +1 -1
  137. package/behaviors/registry/ui/core/atoms/ui-avatar.orb +1 -1
  138. package/behaviors/registry/ui/core/atoms/ui-badge.orb +1 -1
  139. package/behaviors/registry/ui/core/atoms/ui-box.orb +1 -1
  140. package/behaviors/registry/ui/core/atoms/ui-button.orb +1 -1
  141. package/behaviors/registry/ui/core/atoms/ui-card.orb +1 -1
  142. package/behaviors/registry/ui/core/atoms/ui-center.orb +1 -1
  143. package/behaviors/registry/ui/core/atoms/ui-checkbox.orb +1 -1
  144. package/behaviors/registry/ui/core/atoms/ui-conditional-wrapper.orb +1 -1
  145. package/behaviors/registry/ui/core/atoms/ui-confetti-effect.orb +1 -1
  146. package/behaviors/registry/ui/core/atoms/ui-day-cell.orb +1 -1
  147. package/behaviors/registry/ui/core/atoms/ui-dialog.orb +1 -1
  148. package/behaviors/registry/ui/core/atoms/ui-divider.orb +1 -1
  149. package/behaviors/registry/ui/core/atoms/ui-filter-pill.orb +1 -1
  150. package/behaviors/registry/ui/core/atoms/ui-flip-container.orb +1 -1
  151. package/behaviors/registry/ui/core/atoms/ui-game-icon.orb +1 -1
  152. package/behaviors/registry/ui/core/atoms/ui-hstack.orb +1 -1
  153. package/behaviors/registry/ui/core/atoms/ui-icon.orb +1 -1
  154. package/behaviors/registry/ui/core/atoms/ui-image.orb +1 -1
  155. package/behaviors/registry/ui/core/atoms/ui-infinite-scroll-sentinel.orb +1 -1
  156. package/behaviors/registry/ui/core/atoms/ui-input.orb +1 -1
  157. package/behaviors/registry/ui/core/atoms/ui-label.orb +1 -1
  158. package/behaviors/registry/ui/core/atoms/ui-law-reference-tooltip.orb +1 -1
  159. package/behaviors/registry/ui/core/atoms/ui-overlay.orb +1 -1
  160. package/behaviors/registry/ui/core/atoms/ui-pattern-tile.orb +1 -1
  161. package/behaviors/registry/ui/core/atoms/ui-presence.orb +1 -1
  162. package/behaviors/registry/ui/core/atoms/ui-progress-bar.orb +1 -1
  163. package/behaviors/registry/ui/core/atoms/ui-radio.orb +1 -1
  164. package/behaviors/registry/ui/core/atoms/ui-range-slider.orb +1 -1
  165. package/behaviors/registry/ui/core/atoms/ui-section-header.orb +1 -1
  166. package/behaviors/registry/ui/core/atoms/ui-select.orb +1 -1
  167. package/behaviors/registry/ui/core/atoms/ui-spacer.orb +1 -1
  168. package/behaviors/registry/ui/core/atoms/ui-sparkline.orb +1 -1
  169. package/behaviors/registry/ui/core/atoms/ui-spinner.orb +1 -1
  170. package/behaviors/registry/ui/core/atoms/ui-stack.orb +1 -1
  171. package/behaviors/registry/ui/core/atoms/ui-status-dot.orb +1 -1
  172. package/behaviors/registry/ui/core/atoms/ui-svg-branch.orb +1 -1
  173. package/behaviors/registry/ui/core/atoms/ui-svg-connection.orb +1 -1
  174. package/behaviors/registry/ui/core/atoms/ui-svg-flow.orb +1 -1
  175. package/behaviors/registry/ui/core/atoms/ui-svg-grid.orb +1 -1
  176. package/behaviors/registry/ui/core/atoms/ui-svg-lobe.orb +1 -1
  177. package/behaviors/registry/ui/core/atoms/ui-svg-mesh.orb +1 -1
  178. package/behaviors/registry/ui/core/atoms/ui-svg-morph.orb +1 -1
  179. package/behaviors/registry/ui/core/atoms/ui-svg-node.orb +1 -1
  180. package/behaviors/registry/ui/core/atoms/ui-svg-pulse.orb +1 -1
  181. package/behaviors/registry/ui/core/atoms/ui-svg-ring.orb +1 -1
  182. package/behaviors/registry/ui/core/atoms/ui-svg-shield.orb +1 -1
  183. package/behaviors/registry/ui/core/atoms/ui-svg-stack.orb +1 -1
  184. package/behaviors/registry/ui/core/atoms/ui-switch.orb +1 -1
  185. package/behaviors/registry/ui/core/atoms/ui-text-highlight.orb +1 -1
  186. package/behaviors/registry/ui/core/atoms/ui-textarea.orb +1 -1
  187. package/behaviors/registry/ui/core/atoms/ui-theme-toggle.orb +1 -1
  188. package/behaviors/registry/ui/core/atoms/ui-time-slot-cell.orb +1 -1
  189. package/behaviors/registry/ui/core/atoms/ui-trend-indicator.orb +1 -1
  190. package/behaviors/registry/ui/core/atoms/ui-typewriter-text.orb +1 -1
  191. package/behaviors/registry/ui/core/atoms/ui-typography.orb +1 -1
  192. package/behaviors/registry/ui/core/atoms/ui-video-embed.orb +1 -1
  193. package/behaviors/registry/ui/core/atoms/ui-vstack.orb +1 -1
  194. package/behaviors/registry/ui/core/molecules/std-stat-rows.orb +1 -1
  195. package/behaviors/registry/ui/core/molecules/ui-accordion.orb +1 -1
  196. package/behaviors/registry/ui/core/molecules/ui-activation-block.orb +1 -1
  197. package/behaviors/registry/ui/core/molecules/ui-activity-rail.orb +1 -1
  198. package/behaviors/registry/ui/core/molecules/ui-agent-activity-feed.orb +1 -1
  199. package/behaviors/registry/ui/core/molecules/ui-agent-activity-row.orb +1 -1
  200. package/behaviors/registry/ui/core/molecules/ui-agent-chat-feed.orb +1 -1
  201. package/behaviors/registry/ui/core/molecules/ui-alert.orb +1 -1
  202. package/behaviors/registry/ui/core/molecules/ui-animated-counter.orb +1 -1
  203. package/behaviors/registry/ui/core/molecules/ui-bloom-quiz-block.orb +1 -1
  204. package/behaviors/registry/ui/core/molecules/ui-branching-logic-builder.orb +1 -1
  205. package/behaviors/registry/ui/core/molecules/ui-breadcrumb.orb +1 -1
  206. package/behaviors/registry/ui/core/molecules/ui-calendar-grid.orb +1 -1
  207. package/behaviors/registry/ui/core/molecules/ui-carousel.orb +1 -1
  208. package/behaviors/registry/ui/core/molecules/ui-change-list.orb +1 -1
  209. package/behaviors/registry/ui/core/molecules/ui-chart-legend.orb +1 -1
  210. package/behaviors/registry/ui/core/molecules/ui-chart.orb +1 -1
  211. package/behaviors/registry/ui/core/molecules/ui-code-block.orb +1 -1
  212. package/behaviors/registry/ui/core/molecules/ui-command-palette.orb +1 -1
  213. package/behaviors/registry/ui/core/molecules/ui-commit-row.orb +1 -1
  214. package/behaviors/registry/ui/core/molecules/ui-confirm-dialog.orb +1 -1
  215. package/behaviors/registry/ui/core/molecules/ui-connection-block.orb +1 -1
  216. package/behaviors/registry/ui/core/molecules/ui-container.orb +1 -1
  217. package/behaviors/registry/ui/core/molecules/ui-content-renderer.orb +1 -1
  218. package/behaviors/registry/ui/core/molecules/ui-data-grid.orb +1 -1
  219. package/behaviors/registry/ui/core/molecules/ui-data-list.orb +1 -1
  220. package/behaviors/registry/ui/core/molecules/ui-date-range-picker.orb +1 -1
  221. package/behaviors/registry/ui/core/molecules/ui-date-range-selector.orb +1 -1
  222. package/behaviors/registry/ui/core/molecules/ui-doc-breadcrumb.orb +1 -1
  223. package/behaviors/registry/ui/core/molecules/ui-doc-pagination.orb +1 -1
  224. package/behaviors/registry/ui/core/molecules/ui-doc-search.orb +1 -1
  225. package/behaviors/registry/ui/core/molecules/ui-doc-sidebar.orb +1 -1
  226. package/behaviors/registry/ui/core/molecules/ui-doc-toc.orb +1 -1
  227. package/behaviors/registry/ui/core/molecules/ui-document-details.orb +1 -1
  228. package/behaviors/registry/ui/core/molecules/ui-document-panel.orb +1 -1
  229. package/behaviors/registry/ui/core/molecules/ui-document-viewer.orb +1 -1
  230. package/behaviors/registry/ui/core/molecules/ui-drawer.orb +1 -1
  231. package/behaviors/registry/ui/core/molecules/ui-edge-decoration.orb +1 -1
  232. package/behaviors/registry/ui/core/molecules/ui-emoji-picker.orb +1 -1
  233. package/behaviors/registry/ui/core/molecules/ui-empty-state.orb +1 -1
  234. package/behaviors/registry/ui/core/molecules/ui-error-boundary.orb +1 -1
  235. package/behaviors/registry/ui/core/molecules/ui-error-state.orb +1 -1
  236. package/behaviors/registry/ui/core/molecules/ui-feature-card.orb +1 -1
  237. package/behaviors/registry/ui/core/molecules/ui-feature-grid.orb +1 -1
  238. package/behaviors/registry/ui/core/molecules/ui-file-tree.orb +1 -1
  239. package/behaviors/registry/ui/core/molecules/ui-filter-group.orb +1 -1
  240. package/behaviors/registry/ui/core/molecules/ui-flex.orb +1 -1
  241. package/behaviors/registry/ui/core/molecules/ui-flip-card.orb +1 -1
  242. package/behaviors/registry/ui/core/molecules/ui-floating-action-button.orb +1 -1
  243. package/behaviors/registry/ui/core/molecules/ui-floating-toolbar.orb +1 -1
  244. package/behaviors/registry/ui/core/molecules/ui-form-actions.orb +1 -1
  245. package/behaviors/registry/ui/core/molecules/ui-form-field.orb +1 -1
  246. package/behaviors/registry/ui/core/molecules/ui-form-layout.orb +1 -1
  247. package/behaviors/registry/ui/core/molecules/ui-form-section-header.orb +1 -1
  248. package/behaviors/registry/ui/core/molecules/ui-fx-overlay.orb +1 -1
  249. package/behaviors/registry/ui/core/molecules/ui-gantt.orb +1 -1
  250. package/behaviors/registry/ui/core/molecules/ui-geometric-pattern.orb +1 -1
  251. package/behaviors/registry/ui/core/molecules/ui-gradient-divider.orb +1 -1
  252. package/behaviors/registry/ui/core/molecules/ui-graph-canvas.orb +1 -1
  253. package/behaviors/registry/ui/core/molecules/ui-graph-view.orb +1 -1
  254. package/behaviors/registry/ui/core/molecules/ui-grid.orb +1 -1
  255. package/behaviors/registry/ui/core/molecules/ui-header.orb +1 -1
  256. package/behaviors/registry/ui/core/molecules/ui-icon-button.orb +1 -1
  257. package/behaviors/registry/ui/core/molecules/ui-import-preview-tree.orb +1 -1
  258. package/behaviors/registry/ui/core/molecules/ui-import-progress.orb +1 -1
  259. package/behaviors/registry/ui/core/molecules/ui-import-source-picker.orb +1 -1
  260. package/behaviors/registry/ui/core/molecules/ui-input-group.orb +1 -1
  261. package/behaviors/registry/ui/core/molecules/ui-jazari-state-machine.orb +1 -1
  262. package/behaviors/registry/ui/core/molecules/ui-lightbox.orb +1 -1
  263. package/behaviors/registry/ui/core/molecules/ui-likert-scale.orb +1 -1
  264. package/behaviors/registry/ui/core/molecules/ui-line-chart.orb +1 -1
  265. package/behaviors/registry/ui/core/molecules/ui-loading-state.orb +1 -1
  266. package/behaviors/registry/ui/core/molecules/ui-map-view.orb +1 -1
  267. package/behaviors/registry/ui/core/molecules/ui-markdown-content.orb +1 -1
  268. package/behaviors/registry/ui/core/molecules/ui-matrix-question.orb +1 -1
  269. package/behaviors/registry/ui/core/molecules/ui-menu.orb +1 -1
  270. package/behaviors/registry/ui/core/molecules/ui-meter.orb +1 -1
  271. package/behaviors/registry/ui/core/molecules/ui-modal.orb +1 -1
  272. package/behaviors/registry/ui/core/molecules/ui-navigation.orb +1 -1
  273. package/behaviors/registry/ui/core/molecules/ui-notification.orb +1 -1
  274. package/behaviors/registry/ui/core/molecules/ui-number-stepper.orb +1 -1
  275. package/behaviors/registry/ui/core/molecules/ui-option-constraint-group.orb +1 -1
  276. package/behaviors/registry/ui/core/molecules/ui-orbital-visualization.orb +1 -1
  277. package/behaviors/registry/ui/core/molecules/ui-page-header.orb +1 -1
  278. package/behaviors/registry/ui/core/molecules/ui-page-transition.orb +1 -1
  279. package/behaviors/registry/ui/core/molecules/ui-pagination.orb +1 -1
  280. package/behaviors/registry/ui/core/molecules/ui-popover.orb +1 -1
  281. package/behaviors/registry/ui/core/molecules/ui-positioned-canvas.orb +1 -1
  282. package/behaviors/registry/ui/core/molecules/ui-progress-dots.orb +1 -1
  283. package/behaviors/registry/ui/core/molecules/ui-pull-to-refresh.orb +1 -1
  284. package/behaviors/registry/ui/core/molecules/ui-qr-scanner.orb +1 -1
  285. package/behaviors/registry/ui/core/molecules/ui-quiz-block.orb +1 -1
  286. package/behaviors/registry/ui/core/molecules/ui-reflection-block.orb +1 -1
  287. package/behaviors/registry/ui/core/molecules/ui-relation-select.orb +1 -1
  288. package/behaviors/registry/ui/core/molecules/ui-repeatable-form-section.orb +1 -1
  289. package/behaviors/registry/ui/core/molecules/ui-reply-tree.orb +1 -1
  290. package/behaviors/registry/ui/core/molecules/ui-rich-text-editor.orb +1 -1
  291. package/behaviors/registry/ui/core/molecules/ui-scaled-diagram.orb +1 -1
  292. package/behaviors/registry/ui/core/molecules/ui-search-input.orb +1 -1
  293. package/behaviors/registry/ui/core/molecules/ui-section.orb +1 -1
  294. package/behaviors/registry/ui/core/molecules/ui-side-panel.orb +1 -1
  295. package/behaviors/registry/ui/core/molecules/ui-sidebar.orb +1 -1
  296. package/behaviors/registry/ui/core/molecules/ui-signature-pad.orb +1 -1
  297. package/behaviors/registry/ui/core/molecules/ui-simple-grid.orb +1 -1
  298. package/behaviors/registry/ui/core/molecules/ui-skeleton.orb +1 -1
  299. package/behaviors/registry/ui/core/molecules/ui-social-proof.orb +1 -1
  300. package/behaviors/registry/ui/core/molecules/ui-sortable-list.orb +1 -1
  301. package/behaviors/registry/ui/core/molecules/ui-split.orb +1 -1
  302. package/behaviors/registry/ui/core/molecules/ui-star-rating.orb +1 -1
  303. package/behaviors/registry/ui/core/molecules/ui-stat-display.orb +1 -1
  304. package/behaviors/registry/ui/core/molecules/ui-swipeable-row.orb +1 -1
  305. package/behaviors/registry/ui/core/molecules/ui-table-view.orb +1 -1
  306. package/behaviors/registry/ui/core/molecules/ui-tabs.orb +1 -1
  307. package/behaviors/registry/ui/core/molecules/ui-tag-input.orb +1 -1
  308. package/behaviors/registry/ui/core/molecules/ui-tooltip.orb +1 -1
  309. package/behaviors/registry/ui/core/molecules/ui-top-nav-item.orb +1 -1
  310. package/behaviors/registry/ui/core/molecules/ui-upload-drop-zone.orb +1 -1
  311. package/behaviors/registry/ui/core/molecules/ui-version-diff.orb +1 -1
  312. package/behaviors/registry/ui/core/molecules/ui-violation-alert.orb +1 -1
  313. package/behaviors/registry/ui/core/molecules/ui-vote-stack.orb +1 -1
  314. package/behaviors/registry/ui/core/molecules/ui-wizard-container.orb +1 -1
  315. package/behaviors/registry/ui/core/molecules/ui-wizard-navigation.orb +1 -1
  316. package/behaviors/registry/ui/core/molecules/ui-wizard-progress.orb +1 -1
  317. package/behaviors/registry/ui/core/organisms/ui-chat-bar.orb +1 -1
  318. package/behaviors/registry/ui/core/organisms/ui-code-runner-panel.orb +1 -1
  319. package/behaviors/registry/ui/core/organisms/ui-dashboard-grid.orb +1 -1
  320. package/behaviors/registry/ui/core/organisms/ui-detail-panel.orb +1 -1
  321. package/behaviors/registry/ui/core/organisms/ui-dock-layout.orb +1 -1
  322. package/behaviors/registry/ui/core/organisms/ui-drawer-slot.orb +1 -1
  323. package/behaviors/registry/ui/core/organisms/ui-form-section.orb +1 -1
  324. package/behaviors/registry/ui/core/organisms/ui-form.orb +1 -1
  325. package/behaviors/registry/ui/core/organisms/ui-master-detail-layout.orb +1 -1
  326. package/behaviors/registry/ui/core/organisms/ui-media-gallery.orb +1 -1
  327. package/behaviors/registry/ui/core/organisms/ui-modal-slot.orb +1 -1
  328. package/behaviors/registry/ui/core/organisms/ui-runtime-debugger.orb +1 -1
  329. package/behaviors/registry/ui/core/organisms/ui-segment-renderer.orb +1 -1
  330. package/behaviors/registry/ui/core/organisms/ui-split-pane.orb +1 -1
  331. package/behaviors/registry/ui/core/organisms/ui-stat-card.orb +1 -1
  332. package/behaviors/registry/ui/core/organisms/ui-state-machine-view.orb +1 -1
  333. package/behaviors/registry/ui/core/organisms/ui-subagent-trace-panel.orb +1 -1
  334. package/behaviors/registry/ui/core/organisms/ui-tabbed-container.orb +1 -1
  335. package/behaviors/registry/ui/core/organisms/ui-timeline.orb +1 -1
  336. package/behaviors/registry/ui/core/organisms/ui-toast-slot.orb +1 -1
  337. package/behaviors/registry/ui/core/templates/ui-auth-layout.orb +1 -1
  338. package/behaviors/registry/ui/core/templates/ui-counter-template.orb +1 -1
  339. package/behaviors/registry/ui/core/templates/ui-dashboard-layout.orb +1 -1
  340. package/behaviors/registry/ui/core/templates/ui-generic-app-template.orb +1 -1
  341. package/behaviors/registry/ui/game/atoms/std-arcade-play.orb +1 -1
  342. package/behaviors/registry/ui/game/atoms/std-area-fill.orb +1 -1
  343. package/behaviors/registry/ui/game/atoms/std-audio-cue.orb +1 -1
  344. package/behaviors/registry/ui/game/atoms/std-camera-rig.orb +1 -1
  345. package/behaviors/registry/ui/game/atoms/std-chase-ai.orb +1 -1
  346. package/behaviors/registry/ui/game/atoms/std-choice-gate.orb +1 -1
  347. package/behaviors/registry/ui/game/atoms/std-coef-pad.orb +1 -1
  348. package/behaviors/registry/ui/game/atoms/std-curve-fog.orb +1 -1
  349. package/behaviors/registry/ui/game/atoms/std-dungeon-combat.orb +1 -1
  350. package/behaviors/registry/ui/game/atoms/std-fx-narrative.orb +1 -1
  351. package/behaviors/registry/ui/game/atoms/std-fx-particles.orb +1 -1
  352. package/behaviors/registry/ui/game/atoms/std-fx-trail.orb +1 -1
  353. package/behaviors/registry/ui/game/atoms/std-gate-lock.orb +1 -1
  354. package/behaviors/registry/ui/game/atoms/std-gather.orb +1 -1
  355. package/behaviors/registry/ui/game/atoms/std-gold.orb +1 -1
  356. package/behaviors/registry/ui/game/atoms/std-grid-tactics.orb +1 -1
  357. package/behaviors/registry/ui/game/atoms/std-hero-nav.orb +1 -1
  358. package/behaviors/registry/ui/game/atoms/std-lives.orb +1 -1
  359. package/behaviors/registry/ui/game/atoms/std-loop-lock.orb +1 -1
  360. package/behaviors/registry/ui/game/atoms/std-market-flow.orb +1 -1
  361. package/behaviors/registry/ui/game/atoms/std-motion-body.orb +1 -1
  362. package/behaviors/registry/ui/game/atoms/std-objective-reach.orb +1 -1
  363. package/behaviors/registry/ui/game/atoms/std-pad-lock.orb +1 -1
  364. package/behaviors/registry/ui/game/atoms/std-patience.orb +1 -1
  365. package/behaviors/registry/ui/game/atoms/std-patrol-hazard.orb +1 -1
  366. package/behaviors/registry/ui/game/atoms/std-pickup.orb +1 -1
  367. package/behaviors/registry/ui/game/atoms/std-platformer-body.orb +1 -1
  368. package/behaviors/registry/ui/game/atoms/std-production.orb +1 -1
  369. package/behaviors/registry/ui/game/atoms/std-score.orb +1 -1
  370. package/behaviors/registry/ui/game/atoms/std-tutorial-autodemo.orb +1 -1
  371. package/behaviors/registry/ui/game/atoms/std-tutorial-overlay.orb +1 -1
  372. package/behaviors/registry/ui/game/atoms/std-velocity-gate.orb +1 -1
  373. package/behaviors/registry/ui/game/atoms/std-xp.orb +1 -1
  374. package/behaviors/registry/ui/game/atoms/std-zone-card.orb +1 -1
  375. package/behaviors/registry/ui/game/atoms/ui-action-palette.orb +1 -1
  376. package/behaviors/registry/ui/game/atoms/ui-action-tile.orb +1 -1
  377. package/behaviors/registry/ui/game/atoms/ui-canvas-2d.orb +1 -1
  378. package/behaviors/registry/ui/game/atoms/ui-canvas.orb +1 -1
  379. package/behaviors/registry/ui/game/atoms/ui-choice-button.orb +1 -1
  380. package/behaviors/registry/ui/game/atoms/ui-control-button.orb +1 -1
  381. package/behaviors/registry/ui/game/atoms/ui-control-grid.orb +1 -1
  382. package/behaviors/registry/ui/game/atoms/ui-dialogue-bubble.orb +1 -1
  383. package/behaviors/registry/ui/game/atoms/ui-draw-fx-layer.orb +1 -1
  384. package/behaviors/registry/ui/game/atoms/ui-draw-group.orb +1 -1
  385. package/behaviors/registry/ui/game/atoms/ui-draw-mesh.orb +1 -1
  386. package/behaviors/registry/ui/game/atoms/ui-draw-shape-layer.orb +1 -1
  387. package/behaviors/registry/ui/game/atoms/ui-draw-shape.orb +1 -1
  388. package/behaviors/registry/ui/game/atoms/ui-draw-skinned-mesh.orb +1 -1
  389. package/behaviors/registry/ui/game/atoms/ui-draw-sprite-layer.orb +1 -1
  390. package/behaviors/registry/ui/game/atoms/ui-draw-sprite.orb +1 -1
  391. package/behaviors/registry/ui/game/atoms/ui-draw-text-layer.orb +1 -1
  392. package/behaviors/registry/ui/game/atoms/ui-draw-text.orb +1 -1
  393. package/behaviors/registry/ui/game/atoms/ui-game-audio-cue.orb +1 -1
  394. package/behaviors/registry/ui/game/atoms/ui-game-audio-toggle.orb +1 -1
  395. package/behaviors/registry/ui/game/atoms/ui-game-hud.orb +1 -1
  396. package/behaviors/registry/ui/game/atoms/ui-game-menu.orb +1 -1
  397. package/behaviors/registry/ui/game/atoms/ui-health-bar.orb +1 -1
  398. package/behaviors/registry/ui/game/atoms/ui-score-display.orb +1 -1
  399. package/behaviors/registry/ui/game/atoms/ui-sequence-bar.orb +1 -1
  400. package/behaviors/registry/ui/game/atoms/ui-stat-badge.orb +1 -1
  401. package/behaviors/registry/ui/game/atoms/ui-state-graph.orb +1 -1
  402. package/behaviors/registry/ui/game/atoms/ui-state-json-view.orb +1 -1
  403. package/behaviors/registry/ui/game/atoms/ui-timer-display.orb +1 -1
  404. package/behaviors/registry/ui/game/atoms/ui-trait-slot.orb +1 -1
  405. package/behaviors/registry/ui/game/organisms/std-arcade-board-3d.orb +1 -1
  406. package/behaviors/registry/ui/game/organisms/std-crew-board-2d.orb +1 -1
  407. package/behaviors/registry/ui/game/organisms/std-dungeon-board-2d.orb +1 -1
  408. package/behaviors/registry/ui/game/organisms/std-market-board-3d.orb +1 -1
  409. package/behaviors/registry/ui/game/organisms/std-objective-board-3d.orb +1 -1
  410. package/behaviors/registry/ui/game/organisms/std-platformer-board-2d.orb +1 -1
  411. package/behaviors/registry/ui/game/organisms/std-platformer-puzzle.orb +1 -1
  412. package/behaviors/registry/ui/game/organisms/std-survival-board-3d.orb +1 -1
  413. package/behaviors/registry/ui/game/organisms/std-tactics-board-2d.orb +1 -1
  414. package/behaviors/registry/ui/game/organisms/std-tactics-board-3d.orb +1 -1
  415. package/behaviors/registry/ui/game/organisms/std-worldmap-board-2d.orb +1 -1
  416. package/behaviors/registry/ui/game/templates/ui-game-shell.orb +1 -1
  417. package/behaviors/registry/ui/learning/atoms/std-learn-arrangement.orb +1 -1
  418. package/behaviors/registry/ui/learning/atoms/std-learn-classify.orb +1 -1
  419. package/behaviors/registry/ui/learning/atoms/std-learn-compare.orb +1 -1
  420. package/behaviors/registry/ui/learning/atoms/std-learn-coupled-sim.orb +1 -1
  421. package/behaviors/registry/ui/learning/atoms/std-learn-derivation.orb +1 -1
  422. package/behaviors/registry/ui/learning/atoms/std-learn-diagram.orb +1 -1
  423. package/behaviors/registry/ui/learning/atoms/std-learn-doser.orb +1 -1
  424. package/behaviors/registry/ui/learning/atoms/std-learn-estimate.orb +1 -1
  425. package/behaviors/registry/ui/learning/atoms/std-learn-fx-cues.orb +1 -1
  426. package/behaviors/registry/ui/learning/atoms/std-learn-generate.orb +1 -1
  427. package/behaviors/registry/ui/learning/atoms/std-learn-goal-seek.orb +1 -1
  428. package/behaviors/registry/ui/learning/atoms/std-learn-grid-sim.orb +1 -1
  429. package/behaviors/registry/ui/learning/atoms/std-learn-hotspot.orb +1 -1
  430. package/behaviors/registry/ui/learning/atoms/std-learn-live-sim.orb +1 -1
  431. package/behaviors/registry/ui/learning/atoms/std-learn-measure.orb +1 -1
  432. package/behaviors/registry/ui/learning/atoms/std-learn-param-explorer.orb +1 -1
  433. package/behaviors/registry/ui/learning/atoms/std-learn-perturb.orb +1 -1
  434. package/behaviors/registry/ui/learning/atoms/std-learn-predict.orb +1 -1
  435. package/behaviors/registry/ui/learning/atoms/std-learn-sample-accumulator.orb +1 -1
  436. package/behaviors/registry/ui/learning/atoms/std-learn-sandbox.orb +1 -1
  437. package/behaviors/registry/ui/learning/atoms/std-learn-scatter-fit.orb +1 -1
  438. package/behaviors/registry/ui/learning/atoms/std-learn-scenario.orb +1 -1
  439. package/behaviors/registry/ui/learning/atoms/std-learn-sim-3d.orb +1 -1
  440. package/behaviors/registry/ui/learning/atoms/std-learn-slope-probe.orb +1 -1
  441. package/behaviors/registry/ui/learning/atoms/std-learn-speed-drill.orb +1 -1
  442. package/behaviors/registry/ui/learning/atoms/std-learn-stepper.orb +1 -1
  443. package/behaviors/registry/ui/learning/atoms/std-learn-tour-3d.orb +1 -1
  444. package/behaviors/registry/ui/learning/atoms/std-learn-trace-player.orb +1 -1
  445. package/behaviors/registry/ui/learning/atoms/std-learn-transport.orb +1 -1
  446. package/behaviors/registry/ui/learning/atoms/std-learn-tree.orb +1 -1
  447. package/behaviors/registry/ui/learning/atoms/ui-algo-graph-canvas.orb +1 -1
  448. package/behaviors/registry/ui/learning/atoms/ui-algorithm-canvas.orb +1 -1
  449. package/behaviors/registry/ui/learning/atoms/ui-biology-canvas.orb +1 -1
  450. package/behaviors/registry/ui/learning/atoms/ui-chemistry-canvas.orb +1 -1
  451. package/behaviors/registry/ui/learning/atoms/ui-learning-canvas.orb +1 -1
  452. package/behaviors/registry/ui/learning/atoms/ui-math-canvas.orb +1 -1
  453. package/behaviors/registry/ui/learning/atoms/ui-physics-canvas.orb +1 -1
  454. package/dist/behaviors-embeddings.hash.json +2 -2
  455. package/dist/behaviors-embeddings.json +1 -1
  456. package/dist/knob-embeddings.hash.json +2 -2
  457. package/package.json +2 -2
@@ -1 +1 @@
1
- {"name":"std-review-cycle","version":"0.1.0","description":"std-review-cycle — revise-and-resubmit review workflow (document review, pull-request review, design review, editorial review, submission review, send back for changes, request changes, resubmit, review rounds, four-eyes approval). A record moves draft → in review → changes requested → in review → … → approved. One SUBMIT event serves both the first submission and every resubmission; the atom counts review rounds and marks resubmissions on the emitted ReviewRequested. Every move writes a ReviewEvent history row stamped with the states it left and entered. `requireSeparateApproval` enforces four-eyes review: an approval raised in the same action that submitted the record (an auto-responding rule or bot) is rejected. Headless — the host renders the badge and buttons and routes its actions to SUBMIT / REQUEST_CHANGES / APPROVE.","orbitals":[{"name":"ReviewCycleOrbital","id":"orb_WQKQSBKNYFTZ7KBCPVZYWFD2KQ","entity":{"name":"ReviewItem","id":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","collection":"review_items","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"round","type":"number","default":0,"description":"Review round the record is on; 1 for the first review, incremented on each resubmission.","synonyms":"iteration, revision round, review count"},{"name":"lastNote","type":"string","default":"","description":"Note left with the most recent move.","synonyms":"comment, reason, feedback"},{"name":"lastLogId","type":"string","default":"","description":"Id of the most recent ReviewEvent history row.","synonyms":"history id, log entry"}]},"auxiliaryEntities":[{"name":"ReviewEvent","id":"ent_8BS8MXERW0CE0A9H7YB66200EQ","collection":"review_events","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"itemId","type":"string","default":"","description":"The record this history entry belongs to.","synonyms":"record id, document id, item"},{"name":"fromState","type":"string","default":"","description":"The review state the record left.","synonyms":"previous state, was"},{"name":"toState","type":"string","default":"","description":"The review state the record entered.","synonyms":"new state, became"},{"name":"round","type":"number","default":0,"description":"Review round at the time of the move.","synonyms":"iteration"},{"name":"actor","type":"string","default":"","description":"Who made the move.","synonyms":"user, reviewer, author"},{"name":"note","type":"string","default":"","description":"Note left with the move.","synonyms":"comment, feedback, reason"},{"name":"at","type":"number","default":0,"description":"When the move happened.","synonyms":"timestamp, date, time"}]}],"traits":[{"name":"ReviewCycle","id":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6","entityRebindable":true,"entityContract":{"requires":[],"provides":["lastLogId","lastNote","round"]},"effectRow":[{"kind":"emit","resource":"ReviewDecided"},{"kind":"emit","resource":"ReviewRequested"},{"kind":"persist","resource":"ReviewEvent"},{"kind":"render-ui","resource":"toast"},{"kind":"set","resource":"@entity.lastLogId"},{"kind":"set","resource":"@entity.lastNote"},{"kind":"set","resource":"@entity.round"}],"category":"lifecycle","linkedEntity":"ReviewItem","linkedEntityId":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","entityRefIds":{"ReviewItem":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","ReviewEvent":"ent_8BS8MXERW0CE0A9H7YB66200EQ"},"emits":[{"event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","description":"Internal: a history row landed.","scope":"internal","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"itemId","type":"string"},{"name":"fromState","type":"string"},{"name":"toState","type":"string"},{"name":"round","type":"number"},{"name":"actor","type":"string"},{"name":"note","type":"string"},{"name":"at","type":"number"}],"payloadEntity":"ReviewEvent"},{"event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","description":"Internal: writing a history row failed.","scope":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]},{"event":"ReviewRequested","eventId":"evt_QA62ENPEVG7DR068W69BXCADNM","scope":"external","payloadSchema":[{"name":"itemId","type":"string"},{"name":"round","type":"number"},{"name":"resubmission","type":"boolean"}]},{"event":"ReviewDecided","eventId":"evt_KH8JQYH17GGKRFPMTFS9WXNZ33","scope":"external","payloadSchema":[{"name":"itemId","type":"string"},{"name":"decision","type":"string"},{"name":"round","type":"number"}]}],"stateMachine":{"states":[{"name":"draft","isInitial":true},{"name":"in_review"},{"name":"changes_requested"},{"name":"approved"}],"events":[{"key":"INIT","id":"evt_84ZP940GJJ89955VEBASJMEH5H","name":"Initialize"},{"key":"ReviewSubmitted","id":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","name":"Review submitted","payloadSchema":[{"name":"id","type":"string"},{"name":"note","type":"string"}],"listened":true},{"key":"ReviewLogged","id":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","name":"Review logged","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"itemId","type":"string"},{"name":"fromState","type":"string"},{"name":"toState","type":"string"},{"name":"round","type":"number"},{"name":"actor","type":"string"},{"name":"note","type":"string"},{"name":"at","type":"number"}],"payloadEntity":"ReviewEvent","listened":true},{"key":"ReviewLogFailed","id":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","name":"Review log failed","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"ReviewChangesRequested","id":"evt_5HB62HE50H2G8HJDWFG9PXSJ0T","name":"Review changes requested","payloadSchema":[{"name":"id","type":"string"},{"name":"note","type":"string"}],"listened":true},{"key":"ReviewApproved","id":"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7","name":"Review approved","payloadSchema":[{"name":"id","type":"string"},{"name":"note","type":"string"}],"listened":true},{"key":"ReviewRequested","id":"evt_QA62ENPEVG7DR068W69BXCADNM","name":"Review requested","payloadSchema":[{"name":"itemId","type":"string"},{"name":"round","type":"number"},{"name":"resubmission","type":"boolean"}]},{"key":"ReviewDecided","id":"evt_KH8JQYH17GGKRFPMTFS9WXNZ33","name":"Review decided","payloadSchema":[{"name":"itemId","type":"string"},{"name":"decision","type":"string"},{"name":"round","type":"number"}]}],"transitions":[{"from":"draft","to":"draft","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"draft","to":"in_review","event":"ReviewSubmitted","eventId":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","guard":"@config.enabled","effects":[["set","@entity.round",1],["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewRequested",{"itemId":["str/default","@payload.id",""],"round":1,"resubmission":false}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":1,"actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"in_review","to":"in_review","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"in_review","to":"in_review","event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","effects":[["set","@entity.lastLogId",["str/default","@payload.id",""]]]},{"from":"in_review","to":"in_review","event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't record the review history — ","@payload.error"],"dismissible":true}]]},{"from":"in_review","to":"changes_requested","event":"ReviewChangesRequested","eventId":"evt_5HB62HE50H2G8HJDWFG9PXSJ0T","effects":[["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewDecided",{"itemId":["str/default","@payload.id",""],"decision":"@toState","round":"@entity.round"}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":"@entity.round","actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"in_review","to":"approved","event":"ReviewApproved","eventId":"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7","guard":["or",["not","@config.requireSeparateApproval"],["not",["array/some","@prevStates",["fn","s",["or",["=","@s","draft"],["=","@s","changes_requested"]]]]]],"effects":[["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewDecided",{"itemId":["str/default","@payload.id",""],"decision":"@toState","round":"@entity.round"}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":"@entity.round","actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"changes_requested","to":"changes_requested","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"changes_requested","to":"changes_requested","event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","effects":[["set","@entity.lastLogId",["str/default","@payload.id",""]]]},{"from":"changes_requested","to":"changes_requested","event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't record the review history — ","@payload.error"],"dismissible":true}]]},{"from":"changes_requested","to":"in_review","event":"ReviewSubmitted","eventId":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","effects":[["set","@entity.round",["+","@entity.round",1]],["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewRequested",{"itemId":["str/default","@payload.id",""],"round":"@entity.round","resubmission":true}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":"@entity.round","actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"approved","to":"approved","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"approved","to":"approved","event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","effects":[["set","@entity.lastLogId",["str/default","@payload.id",""]]]},{"from":"approved","to":"approved","event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't record the review history — ","@payload.error"],"dismissible":true}]]}]},"config":{"requireSeparateApproval":{"type":"boolean","default":true,"label":"Require approval to be a separate action?","description":"Four-eyes review: reject an approval raised by the same action that submitted the record, such as an automatic rule or bot that approves instantly. Approvals made as their own action are unaffected.","synonyms":"four eyes, two person rule, no self approval, separate reviewer, independent approval, no auto approve","tier":"policy"},"enabled":{"type":"boolean","default":true,"label":"Run the review workflow?","description":"Accept submissions into review. Off = submissions are ignored.","synonyms":"enable, turn on, review, require review, review workflow","tier":"policy"}},"scope":"instance"}],"pages":[{"name":"ReviewCyclePage","id":"pag_QZA639E8PN4BAYCSXD2Q75SGKX","path":"/review-cycle","traits":[{"ref":"ReviewCycle","refId":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"}]}]}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_8BS8MXERW0CE0A9H7YB66200EQ":{"id":"ent_8BS8MXERW0CE0A9H7YB66200EQ","kind":"entity","bakedName":"ReviewEvent","curName":"ReviewEvent","renames":[],"owner":"workspace"},"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6":{"id":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","kind":"entity","bakedName":"ReviewItem","curName":"ReviewItem","renames":[],"owner":"workspace"},"evt_2G8NNB37H8KRMA5REQWK5EQ8RD":{"id":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","kind":"event","bakedName":"ReviewLogged","curName":"ReviewLogged","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_5HB62HE50H2G8HJDWFG9PXSJ0T":{"id":"evt_5HB62HE50H2G8HJDWFG9PXSJ0T","kind":"event","bakedName":"ReviewChangesRequested","curName":"ReviewChangesRequested","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_84ZP940GJJ89955VEBASJMEH5H":{"id":"evt_84ZP940GJJ89955VEBASJMEH5H","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW":{"id":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","kind":"event","bakedName":"ReviewLogFailed","curName":"ReviewLogFailed","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_KH8JQYH17GGKRFPMTFS9WXNZ33":{"id":"evt_KH8JQYH17GGKRFPMTFS9WXNZ33","kind":"event","bakedName":"ReviewDecided","curName":"ReviewDecided","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7":{"id":"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7","kind":"event","bakedName":"ReviewApproved","curName":"ReviewApproved","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J":{"id":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","kind":"event","bakedName":"ReviewSubmitted","curName":"ReviewSubmitted","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_QA62ENPEVG7DR068W69BXCADNM":{"id":"evt_QA62ENPEVG7DR068W69BXCADNM","kind":"event","bakedName":"ReviewRequested","curName":"ReviewRequested","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"orb_WQKQSBKNYFTZ7KBCPVZYWFD2KQ":{"id":"orb_WQKQSBKNYFTZ7KBCPVZYWFD2KQ","kind":"orbital","bakedName":"ReviewCycleOrbital","curName":"ReviewCycleOrbital","renames":[],"owner":"workspace"},"pag_QZA639E8PN4BAYCSXD2Q75SGKX":{"id":"pag_QZA639E8PN4BAYCSXD2Q75SGKX","kind":"page","bakedName":"ReviewCyclePage","curName":"ReviewCyclePage","renames":[],"owner":"workspace"},"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6":{"id":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6","kind":"trait","bakedName":"ReviewCycle","curName":"ReviewCycle","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-review-cycle","version":"0.1.0","description":"std-review-cycle — revise-and-resubmit review workflow (document review, pull-request review, design review, editorial review, submission review, send back for changes, request changes, resubmit, review rounds, four-eyes approval). A record moves draft → in review → changes requested → in review → … → approved. One SUBMIT event serves both the first submission and every resubmission; the atom counts review rounds and marks resubmissions on the emitted ReviewRequested. Every move writes a ReviewEvent history row stamped with the states it left and entered. `requireSeparateApproval` enforces four-eyes review: an approval raised in the same action that submitted the record (an auto-responding rule or bot) is rejected. Headless — the host renders the badge and buttons and routes its actions to SUBMIT / REQUEST_CHANGES / APPROVE.","orbitals":[{"name":"ReviewCycleOrbital","id":"orb_WQKQSBKNYFTZ7KBCPVZYWFD2KQ","entity":{"name":"ReviewItem","id":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","collection":"review_items","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"round","type":"number","default":0,"description":"Review round the record is on; 1 for the first review, incremented on each resubmission.","synonyms":"iteration, revision round, review count"},{"name":"lastNote","type":"string","default":"","description":"Note left with the most recent move.","synonyms":"comment, reason, feedback"},{"name":"lastLogId","type":"string","default":"","description":"Id of the most recent ReviewEvent history row.","synonyms":"history id, log entry"}]},"auxiliaryEntities":[{"name":"ReviewEvent","id":"ent_8BS8MXERW0CE0A9H7YB66200EQ","collection":"review_events","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"itemId","type":"string","default":"","description":"The record this history entry belongs to.","synonyms":"record id, document id, item"},{"name":"fromState","type":"string","default":"","description":"The review state the record left.","synonyms":"previous state, was"},{"name":"toState","type":"string","default":"","description":"The review state the record entered.","synonyms":"new state, became"},{"name":"round","type":"number","default":0,"description":"Review round at the time of the move.","synonyms":"iteration"},{"name":"actor","type":"string","default":"","description":"Who made the move.","synonyms":"user, reviewer, author"},{"name":"note","type":"string","default":"","description":"Note left with the move.","synonyms":"comment, feedback, reason"},{"name":"at","type":"number","default":0,"description":"When the move happened.","synonyms":"timestamp, date, time"}]}],"traits":[{"name":"ReviewCycle","id":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6","entityRebindable":true,"entityContract":{"requires":[],"provides":["lastLogId","lastNote","round"]},"effectRow":[{"kind":"emit","resource":"ReviewDecided"},{"kind":"emit","resource":"ReviewRequested"},{"kind":"persist","resource":"ReviewEvent"},{"kind":"render-ui","resource":"toast"},{"kind":"set","resource":"@entity.lastLogId"},{"kind":"set","resource":"@entity.lastNote"},{"kind":"set","resource":"@entity.round"}],"category":"lifecycle","linkedEntity":"ReviewItem","linkedEntityId":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","entityRefIds":{"ReviewItem":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","ReviewEvent":"ent_8BS8MXERW0CE0A9H7YB66200EQ"},"emits":[{"event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","description":"Internal: a history row landed.","scope":"internal","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"itemId","type":"string"},{"name":"fromState","type":"string"},{"name":"toState","type":"string"},{"name":"round","type":"number"},{"name":"actor","type":"string"},{"name":"note","type":"string"},{"name":"at","type":"number"}],"payloadEntity":"ReviewEvent"},{"event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","description":"Internal: writing a history row failed.","scope":"internal","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]},{"event":"ReviewRequested","eventId":"evt_QA62ENPEVG7DR068W69BXCADNM","scope":"external","payloadSchema":[{"name":"itemId","type":"string"},{"name":"round","type":"number"},{"name":"resubmission","type":"boolean"}]},{"event":"ReviewDecided","eventId":"evt_KH8JQYH17GGKRFPMTFS9WXNZ33","scope":"external","payloadSchema":[{"name":"itemId","type":"string"},{"name":"decision","type":"string"},{"name":"round","type":"number"}]}],"stateMachine":{"states":[{"name":"draft","isInitial":true},{"name":"in_review"},{"name":"changes_requested"},{"name":"approved"}],"events":[{"key":"INIT","id":"evt_84ZP940GJJ89955VEBASJMEH5H","name":"Initialize"},{"key":"ReviewSubmitted","id":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","name":"Review submitted","payloadSchema":[{"name":"id","type":"string"},{"name":"note","type":"string"}],"listened":true},{"key":"ReviewLogged","id":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","name":"Review logged","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"itemId","type":"string"},{"name":"fromState","type":"string"},{"name":"toState","type":"string"},{"name":"round","type":"number"},{"name":"actor","type":"string"},{"name":"note","type":"string"},{"name":"at","type":"number"}],"payloadEntity":"ReviewEvent","listened":true},{"key":"ReviewLogFailed","id":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","name":"Review log failed","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"ReviewChangesRequested","id":"evt_5HB62HE50H2G8HJDWFG9PXSJ0T","name":"Review changes requested","payloadSchema":[{"name":"id","type":"string"},{"name":"note","type":"string"}],"listened":true},{"key":"ReviewApproved","id":"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7","name":"Review approved","payloadSchema":[{"name":"id","type":"string"},{"name":"note","type":"string"}],"listened":true},{"key":"ReviewRequested","id":"evt_QA62ENPEVG7DR068W69BXCADNM","name":"Review requested","payloadSchema":[{"name":"itemId","type":"string"},{"name":"round","type":"number"},{"name":"resubmission","type":"boolean"}]},{"key":"ReviewDecided","id":"evt_KH8JQYH17GGKRFPMTFS9WXNZ33","name":"Review decided","payloadSchema":[{"name":"itemId","type":"string"},{"name":"decision","type":"string"},{"name":"round","type":"number"}]}],"transitions":[{"from":"draft","to":"draft","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"draft","to":"in_review","event":"ReviewSubmitted","eventId":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","guard":"@config.enabled","effects":[["set","@entity.round",1],["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewRequested",{"itemId":["str/default","@payload.id",""],"round":1,"resubmission":false}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":1,"actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"in_review","to":"in_review","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"in_review","to":"in_review","event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","effects":[["set","@entity.lastLogId",["str/default","@payload.id",""]]]},{"from":"in_review","to":"in_review","event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't record the review history — ","@payload.error"],"dismissible":true}]]},{"from":"in_review","to":"changes_requested","event":"ReviewChangesRequested","eventId":"evt_5HB62HE50H2G8HJDWFG9PXSJ0T","effects":[["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewDecided",{"itemId":["str/default","@payload.id",""],"decision":"@toState","round":"@entity.round"}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":"@entity.round","actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"in_review","to":"approved","event":"ReviewApproved","eventId":"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7","guard":["or",["not","@config.requireSeparateApproval"],["not",["array/some","@prevStates",["fn","s",["or",["=","@s","draft"],["=","@s","changes_requested"]]]]]],"effects":[["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewDecided",{"itemId":["str/default","@payload.id",""],"decision":"@toState","round":"@entity.round"}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":"@entity.round","actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"changes_requested","to":"changes_requested","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"changes_requested","to":"changes_requested","event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","effects":[["set","@entity.lastLogId",["str/default","@payload.id",""]]]},{"from":"changes_requested","to":"changes_requested","event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't record the review history — ","@payload.error"],"dismissible":true}]]},{"from":"changes_requested","to":"in_review","event":"ReviewSubmitted","eventId":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","effects":[["set","@entity.round",["+","@entity.round",1]],["set","@entity.lastNote",["str/default","@payload.note",""]],["emit","ReviewRequested",{"itemId":["str/default","@payload.id",""],"round":"@entity.round","resubmission":true}],["persist","create","ReviewEvent",{"itemId":["str/default","@payload.id",""],"fromState":"@fromState","toState":"@toState","round":"@entity.round","actor":["str/default","@user.id",""],"note":["str/default","@payload.note",""],"at":"@now"},{"emit":{"success":"ReviewLogged","failure":"ReviewLogFailed"}}]]},{"from":"approved","to":"approved","event":"INIT","eventId":"evt_84ZP940GJJ89955VEBASJMEH5H"},{"from":"approved","to":"approved","event":"ReviewLogged","eventId":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","effects":[["set","@entity.lastLogId",["str/default","@payload.id",""]]]},{"from":"approved","to":"approved","event":"ReviewLogFailed","eventId":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't record the review history — ","@payload.error"],"dismissible":true}]]}]},"config":{"enabled":{"type":"boolean","default":true,"label":"Run the review workflow?","description":"Accept submissions into review. Off = submissions are ignored.","synonyms":"enable, turn on, review, require review, review workflow","tier":"policy"},"requireSeparateApproval":{"type":"boolean","default":true,"label":"Require approval to be a separate action?","description":"Four-eyes review: reject an approval raised by the same action that submitted the record, such as an automatic rule or bot that approves instantly. Approvals made as their own action are unaffected.","synonyms":"four eyes, two person rule, no self approval, separate reviewer, independent approval, no auto approve","tier":"policy"}},"scope":"instance"}],"pages":[{"name":"ReviewCyclePage","id":"pag_QZA639E8PN4BAYCSXD2Q75SGKX","path":"/review-cycle","traits":[{"ref":"ReviewCycle","refId":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"}]}]}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_8BS8MXERW0CE0A9H7YB66200EQ":{"id":"ent_8BS8MXERW0CE0A9H7YB66200EQ","kind":"entity","bakedName":"ReviewEvent","curName":"ReviewEvent","renames":[],"owner":"workspace"},"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6":{"id":"ent_ZDAXWTG7BA3NNES5X9DQ67B1Q6","kind":"entity","bakedName":"ReviewItem","curName":"ReviewItem","renames":[],"owner":"workspace"},"evt_2G8NNB37H8KRMA5REQWK5EQ8RD":{"id":"evt_2G8NNB37H8KRMA5REQWK5EQ8RD","kind":"event","bakedName":"ReviewLogged","curName":"ReviewLogged","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_5HB62HE50H2G8HJDWFG9PXSJ0T":{"id":"evt_5HB62HE50H2G8HJDWFG9PXSJ0T","kind":"event","bakedName":"ReviewChangesRequested","curName":"ReviewChangesRequested","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_84ZP940GJJ89955VEBASJMEH5H":{"id":"evt_84ZP940GJJ89955VEBASJMEH5H","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW":{"id":"evt_EJPGKJ4PNRBAW1TCZF93QAJEYW","kind":"event","bakedName":"ReviewLogFailed","curName":"ReviewLogFailed","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_KH8JQYH17GGKRFPMTFS9WXNZ33":{"id":"evt_KH8JQYH17GGKRFPMTFS9WXNZ33","kind":"event","bakedName":"ReviewDecided","curName":"ReviewDecided","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7":{"id":"evt_ND7Z17JDEK6Q9X0WMPHY40KEX7","kind":"event","bakedName":"ReviewApproved","curName":"ReviewApproved","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J":{"id":"evt_NR6ZRH99E1MQ0Z8JTWYT6K2X6J","kind":"event","bakedName":"ReviewSubmitted","curName":"ReviewSubmitted","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"evt_QA62ENPEVG7DR068W69BXCADNM":{"id":"evt_QA62ENPEVG7DR068W69BXCADNM","kind":"event","bakedName":"ReviewRequested","curName":"ReviewRequested","renames":[],"owner":"workspace","parent":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6"},"orb_WQKQSBKNYFTZ7KBCPVZYWFD2KQ":{"id":"orb_WQKQSBKNYFTZ7KBCPVZYWFD2KQ","kind":"orbital","bakedName":"ReviewCycleOrbital","curName":"ReviewCycleOrbital","renames":[],"owner":"workspace"},"pag_QZA639E8PN4BAYCSXD2Q75SGKX":{"id":"pag_QZA639E8PN4BAYCSXD2Q75SGKX","kind":"page","bakedName":"ReviewCyclePage","curName":"ReviewCyclePage","renames":[],"owner":"workspace"},"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6":{"id":"trt_RZ6D8QYGZR8FW4B4RS71ZMSJE6","kind":"trait","bakedName":"ReviewCycle","curName":"ReviewCycle","renames":[],"owner":"workspace"}}}}
@@ -1 +1 @@
1
- {"name":"std-row-access-control","version":"1.0.0","description":"std-row-access-control — row-level access control gate / ownership filter / role-based row visibility. Use when a user voices that only certain users should see or edit certain records (only the owner can edit, private to owner, owner-only visibility, only see your own records, role-based visibility, admin-only access, visible to admins only, restricted to role, permission gate, ownership scoping, hide from other users, only show mine). Listens for `RowsLoaded` (rename via traitOverrides.events to the consumer's load event), filters `@payload.data` by `@user.id` (when `ownerField` is set) and/or `@user.role` (when `visibleRoles` is non-empty), re-emits `RowsFiltered` for downstream consumers (rename to wire into the UI atom's listen). Composable via `extraTraits` to interpose between a data fetch and a list/grid UI.","orbitals":[{"name":"RowAccessControlOrbital","id":"orb_FSGSZZTB3G5HR35Z76HHVAB6J1","entity":{"name":"RowAccessGateView","id":"ent_83GR5NFDBKPNSRVS679X2HCCBX","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"filteredData","type":"array","default":[],"items":{"type":"object","properties":{"id":{"name":"id","type":"string","required":false},"label":{"name":"label","type":"string","required":true},"value":{"name":"value","type":"string","required":false},"icon":{"name":"icon","type":"string","required":false}}},"description":"The data returned after applying access control filters.","synonyms":"filtered items, processed data, results, output"},{"name":"inputCount","type":"number","default":0,"description":"The number of records processed by the access control.","synonyms":"record count, item count, total records"},{"name":"outputCount","type":"number","default":0,"description":"The number of records that passed the access control filter.","synonyms":"count, size, length"},{"name":"accessDenied","type":"boolean","default":false,"description":"Indicates whether access is denied based on configured rules.","synonyms":"denied, restricted, unauthorized, access-denied"}]},"traits":[{"name":"RowAccessGate","id":"trt_54H2XNTRWRCEC75E5CV86FW6YN","entityRebindable":true,"entityContract":{"requires":[],"provides":["accessDenied","filteredData","inputCount","outputCount"]},"effectRow":[{"kind":"emit","resource":"RowsFiltered"},{"kind":"set","resource":"@entity.accessDenied"},{"kind":"set","resource":"@entity.filteredData"},{"kind":"set","resource":"@entity.inputCount"},{"kind":"set","resource":"@entity.outputCount"}],"category":"lifecycle","capabilities":["access","privacy"],"linkedEntity":"RowAccessGateView","linkedEntityId":"ent_83GR5NFDBKPNSRVS679X2HCCBX","entityRefIds":{"RowAccessGateView":"ent_83GR5NFDBKPNSRVS679X2HCCBX"},"emits":[{"event":"RowsFiltered","eventId":"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7","scope":"external","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}],"entity":"ObjectSpec"},{"name":"filteredCount","type":"number"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"RowsLoaded","id":"evt_9E804ANX4TYJD5K48SYQ8Y47JA","name":"Rows loaded","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}],"listened":true},{"key":"RowsFiltered","id":"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7","name":"Rows filtered","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]},{"name":"filteredCount","type":"number"}]}],"transitions":[{"from":"idle","to":"idle","event":"RowsLoaded","eventId":"evt_9E804ANX4TYJD5K48SYQ8Y47JA","guard":"@config.enabled","effects":[["set","@entity.inputCount",["array/len","@payload.data"]],["set","@entity.accessDenied",["and",["not",["=",["array/len","@config.visibleRoles"],0]],["not",["array/includes","@config.visibleRoles","@user.role"]]]],["set","@entity.filteredData",["if","@entity.accessDenied",[],["if",["not",["=","@config.ownerField",""]],["array/filter","@payload.data",["fn","row",["=",["object/get","@row","@config.ownerField"],"@user.id"]]],"@payload.data"]]],["set","@entity.outputCount",["array/len","@entity.filteredData"]],["emit","RowsFiltered",{"data":"@entity.filteredData","filteredCount":"@entity.outputCount"}]]}]},"config":{"visibleRoles":{"type":"[string]","default":[],"label":"Allowed roles","description":"Roles permitted to see any row (empty = no role gate)","tier":"policy","items":{"type":"string"}},"ownerField":{"type":"string","default":"","label":"Owner field","description":"Row field holding the owning user id (blank disables owner filter)","tier":"internal"},"enabled":{"type":"boolean","default":false,"label":"Restrict who sees records","description":"Only let people see records they own, or that match an allowed role. Off by default.","synonyms":"enable, turn on, enforce, require, activate, apply, switch on, only owner can edit, owner-only, private to owner, only see your own, restrict to role, role-based visibility, permission gate, admin-only access, hide from other users, only show mine, ownership scoping","tier":"policy"}},"scope":"instance"}],"pages":[{"name":"RowAccessControlPage","id":"pag_NVHRVWYHT98X4GQKWZQDKA71AE","path":"/row-access-control","traits":[{"ref":"RowAccessGate","refId":"trt_54H2XNTRWRCEC75E5CV86FW6YN"}]}],"types":{"ItemSpec":[{"name":"id","type":"string"},{"name":"label","type":"string","required":true},{"name":"value","type":"string"},{"name":"icon","type":"string"}],"ObjectSpec":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_83GR5NFDBKPNSRVS679X2HCCBX":{"id":"ent_83GR5NFDBKPNSRVS679X2HCCBX","kind":"entity","bakedName":"RowAccessGateView","curName":"RowAccessGateView","renames":[],"owner":"workspace"},"evt_9E804ANX4TYJD5K48SYQ8Y47JA":{"id":"evt_9E804ANX4TYJD5K48SYQ8Y47JA","kind":"event","bakedName":"RowsLoaded","curName":"RowsLoaded","renames":[],"owner":"workspace","parent":"trt_54H2XNTRWRCEC75E5CV86FW6YN"},"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7":{"id":"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7","kind":"event","bakedName":"RowsFiltered","curName":"RowsFiltered","renames":[],"owner":"workspace","parent":"trt_54H2XNTRWRCEC75E5CV86FW6YN"},"orb_FSGSZZTB3G5HR35Z76HHVAB6J1":{"id":"orb_FSGSZZTB3G5HR35Z76HHVAB6J1","kind":"orbital","bakedName":"RowAccessControlOrbital","curName":"RowAccessControlOrbital","renames":[],"owner":"workspace"},"pag_NVHRVWYHT98X4GQKWZQDKA71AE":{"id":"pag_NVHRVWYHT98X4GQKWZQDKA71AE","kind":"page","bakedName":"RowAccessControlPage","curName":"RowAccessControlPage","renames":[],"owner":"workspace"},"trt_54H2XNTRWRCEC75E5CV86FW6YN":{"id":"trt_54H2XNTRWRCEC75E5CV86FW6YN","kind":"trait","bakedName":"RowAccessGate","curName":"RowAccessGate","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-row-access-control","version":"1.0.0","description":"std-row-access-control — row-level access control gate / ownership filter / role-based row visibility. Use when a user voices that only certain users should see or edit certain records (only the owner can edit, private to owner, owner-only visibility, only see your own records, role-based visibility, admin-only access, visible to admins only, restricted to role, permission gate, ownership scoping, hide from other users, only show mine). Listens for `RowsLoaded` (rename via traitOverrides.events to the consumer's load event), filters `@payload.data` by `@user.id` (when `ownerField` is set) and/or `@user.role` (when `visibleRoles` is non-empty), re-emits `RowsFiltered` for downstream consumers (rename to wire into the UI atom's listen). Composable via `extraTraits` to interpose between a data fetch and a list/grid UI.","orbitals":[{"name":"RowAccessControlOrbital","id":"orb_FSGSZZTB3G5HR35Z76HHVAB6J1","entity":{"name":"RowAccessGateView","id":"ent_83GR5NFDBKPNSRVS679X2HCCBX","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"filteredData","type":"array","default":[],"items":{"type":"object","properties":{"value":{"name":"value","type":"string","required":false},"label":{"name":"label","type":"string","required":true},"id":{"name":"id","type":"string","required":false},"icon":{"name":"icon","type":"string","required":false}}},"description":"The data returned after applying access control filters.","synonyms":"filtered items, processed data, results, output"},{"name":"inputCount","type":"number","default":0,"description":"The number of records processed by the access control.","synonyms":"record count, item count, total records"},{"name":"outputCount","type":"number","default":0,"description":"The number of records that passed the access control filter.","synonyms":"count, size, length"},{"name":"accessDenied","type":"boolean","default":false,"description":"Indicates whether access is denied based on configured rules.","synonyms":"denied, restricted, unauthorized, access-denied"}]},"traits":[{"name":"RowAccessGate","id":"trt_54H2XNTRWRCEC75E5CV86FW6YN","entityRebindable":true,"entityContract":{"requires":[],"provides":["accessDenied","filteredData","inputCount","outputCount"]},"effectRow":[{"kind":"emit","resource":"RowsFiltered"},{"kind":"set","resource":"@entity.accessDenied"},{"kind":"set","resource":"@entity.filteredData"},{"kind":"set","resource":"@entity.inputCount"},{"kind":"set","resource":"@entity.outputCount"}],"category":"lifecycle","capabilities":["access","privacy"],"linkedEntity":"RowAccessGateView","linkedEntityId":"ent_83GR5NFDBKPNSRVS679X2HCCBX","entityRefIds":{"RowAccessGateView":"ent_83GR5NFDBKPNSRVS679X2HCCBX"},"emits":[{"event":"RowsFiltered","eventId":"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7","scope":"external","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}],"entity":"ObjectSpec"},{"name":"filteredCount","type":"number"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"RowsLoaded","id":"evt_9E804ANX4TYJD5K48SYQ8Y47JA","name":"Rows loaded","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}],"listened":true},{"key":"RowsFiltered","id":"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7","name":"Rows filtered","payloadSchema":[{"name":"data","type":"[object]","properties":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]},{"name":"filteredCount","type":"number"}]}],"transitions":[{"from":"idle","to":"idle","event":"RowsLoaded","eventId":"evt_9E804ANX4TYJD5K48SYQ8Y47JA","guard":"@config.enabled","effects":[["set","@entity.inputCount",["array/len","@payload.data"]],["set","@entity.accessDenied",["and",["not",["=",["array/len","@config.visibleRoles"],0]],["not",["array/includes","@config.visibleRoles","@user.role"]]]],["set","@entity.filteredData",["if","@entity.accessDenied",[],["if",["not",["=","@config.ownerField",""]],["array/filter","@payload.data",["fn","row",["=",["object/get","@row","@config.ownerField"],"@user.id"]]],"@payload.data"]]],["set","@entity.outputCount",["array/len","@entity.filteredData"]],["emit","RowsFiltered",{"data":"@entity.filteredData","filteredCount":"@entity.outputCount"}]]}]},"config":{"enabled":{"type":"boolean","default":false,"label":"Restrict who sees records","description":"Only let people see records they own, or that match an allowed role. Off by default.","synonyms":"enable, turn on, enforce, require, activate, apply, switch on, only owner can edit, owner-only, private to owner, only see your own, restrict to role, role-based visibility, permission gate, admin-only access, hide from other users, only show mine, ownership scoping","tier":"policy"},"visibleRoles":{"type":"[string]","default":[],"label":"Allowed roles","description":"Roles permitted to see any row (empty = no role gate)","tier":"policy","items":{"type":"string"}},"ownerField":{"type":"string","default":"","label":"Owner field","description":"Row field holding the owning user id (blank disables owner filter)","tier":"internal"}},"scope":"instance"}],"pages":[{"name":"RowAccessControlPage","id":"pag_NVHRVWYHT98X4GQKWZQDKA71AE","path":"/row-access-control","traits":[{"ref":"RowAccessGate","refId":"trt_54H2XNTRWRCEC75E5CV86FW6YN"}]}],"types":{"ItemSpec":[{"name":"id","type":"string"},{"name":"label","type":"string","required":true},{"name":"value","type":"string"},{"name":"icon","type":"string"}],"ObjectSpec":[{"name":"id","type":"string"},{"name":"label","type":"string"},{"name":"value","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_83GR5NFDBKPNSRVS679X2HCCBX":{"id":"ent_83GR5NFDBKPNSRVS679X2HCCBX","kind":"entity","bakedName":"RowAccessGateView","curName":"RowAccessGateView","renames":[],"owner":"workspace"},"evt_9E804ANX4TYJD5K48SYQ8Y47JA":{"id":"evt_9E804ANX4TYJD5K48SYQ8Y47JA","kind":"event","bakedName":"RowsLoaded","curName":"RowsLoaded","renames":[],"owner":"workspace","parent":"trt_54H2XNTRWRCEC75E5CV86FW6YN"},"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7":{"id":"evt_SCFRBXP7A33N1NYJ0ERNGP3BV7","kind":"event","bakedName":"RowsFiltered","curName":"RowsFiltered","renames":[],"owner":"workspace","parent":"trt_54H2XNTRWRCEC75E5CV86FW6YN"},"orb_FSGSZZTB3G5HR35Z76HHVAB6J1":{"id":"orb_FSGSZZTB3G5HR35Z76HHVAB6J1","kind":"orbital","bakedName":"RowAccessControlOrbital","curName":"RowAccessControlOrbital","renames":[],"owner":"workspace"},"pag_NVHRVWYHT98X4GQKWZQDKA71AE":{"id":"pag_NVHRVWYHT98X4GQKWZQDKA71AE","kind":"page","bakedName":"RowAccessControlPage","curName":"RowAccessControlPage","renames":[],"owner":"workspace"},"trt_54H2XNTRWRCEC75E5CV86FW6YN":{"id":"trt_54H2XNTRWRCEC75E5CV86FW6YN","kind":"trait","bakedName":"RowAccessGate","curName":"RowAccessGate","renames":[],"owner":"workspace"}}}}
@@ -1 +1 @@
1
- {"name":"std-status-lifecycle","version":"0.1.0","description":"Infra substrate: data-driven entity status lifecycle. The statuses and the allowed transitions are config data over a fixed single-state topology, so a host organism can expand or collapse its lifecycle without forking. Compose onto an entity, rename the ChangeStatusRequested listen to the host's status-change action, and supply `states` + `transitions`. A requested move is validated against the `transitions` table (illegal moves are rejected), then the new value is written to `statusField` on the target entity and StatusChanged is emitted. Surfaces nothing — the host renders the badge and buttons.","orbitals":[{"name":"StatusLifecycleOrbital","id":"orb_92RSHQZHK3RSHK6C1TC91H8C23","entity":{"name":"StatusRecord","id":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C","collection":"status_records","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"status","type":"string","default":"","description":"Current lifecycle status of the record.","synonyms":"state, stage, phase"}]},"traits":[{"name":"StatusMachine","id":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8","entityRebindable":true,"entityContract":{"requires":[],"provides":[]},"effectRow":[{"kind":"emit","resource":"StatusChanged"},{"kind":"persist","resource":"@config.targetEntity","resolved":false},{"kind":"render-ui","resource":"toast"}],"category":"lifecycle","linkedEntity":"StatusRecord","linkedEntityId":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C","entityRefIds":{"StatusRecord":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C"},"emits":[{"event":"StatusChanged","eventId":"evt_36AVRHCJ2A91588VPTED9WTZHN","scope":"external","payloadSchema":[{"name":"entityId","type":"string"},{"name":"status","type":"string"}]},{"event":"StatusPersisted","eventId":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","description":"Internal: the status write landed; carries the persisted row flat.","scope":"internal","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"status","type":"string"}],"payloadEntity":"StatusRecord"},{"event":"StatusChangeFailed","eventId":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","scope":"external","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"ChangeStatusRequested","id":"evt_HP6BR3QYG8Z84A3HENF6F3MKYY","name":"Change status requested","payloadSchema":[{"name":"id","type":"string"},{"name":"from","type":"string"},{"name":"to","type":"string"}],"listened":true},{"key":"StatusPersisted","id":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","name":"Status persisted","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"status","type":"string"}],"payloadEntity":"StatusRecord","listened":true},{"key":"StatusChangeFailed","id":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","name":"Status change failed","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"StatusChanged","id":"evt_36AVRHCJ2A91588VPTED9WTZHN","name":"Status changed","payloadSchema":[{"name":"entityId","type":"string"},{"name":"status","type":"string"}]}],"transitions":[{"from":"idle","to":"idle","event":"ChangeStatusRequested","eventId":"evt_HP6BR3QYG8Z84A3HENF6F3MKYY","guard":["and","@config.enabled",["array/includes","@config.states","@payload.to"],["array/some","@config.transitions",["fn","t",["and",["=",["object/get","@t","from"],"@payload.from"],["=",["object/get","@t","to"],"@payload.to"]]]]],"effects":[["persist","update","@config.targetEntity",["object/set",{"id":"@payload.id"},"@config.statusField","@payload.to"],{"emit":{"failure":"StatusChangeFailed","success":"StatusPersisted"}}]]},{"from":"idle","to":"idle","event":"StatusPersisted","eventId":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","guard":["!=",["str/default","@payload.id",""],""],"effects":[["emit","StatusChanged",{"entityId":"@payload.id","status":["str/default",["object/get","@payload","@config.statusField"],""]}]]},{"from":"idle","to":"idle","event":"StatusChangeFailed","eventId":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't change the status — ","@payload.error"],"dismissible":true}]]}]},"config":{"statusField":{"type":"string","default":"status","label":"Which field holds the status?","description":"Entity field this lifecycle drives (e.g. 'status', 'state', 'stage', 'phase').","synonyms":"state field, stage field, status column, lifecycle field","tier":"infra"},"targetEntity":{"type":"entity","default":"StatusRecord","label":"Target entity","description":"Entity name whose status field this lifecycle drives (e.g. 'Contract'). Rebind per composition. Typed `entity`, so a rename of the bound entity threads through to this value automatically.","tier":"internal","refId":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C"},"transitions":{"type":"[TransitionSpec]","default":[{"event":"ACTIVATE","from":"draft","label":"Activate","to":"active"},{"event":"ARCHIVE","from":"active","label":"Archive","to":"archived"}],"label":"Which status moves are allowed?","description":"Legal transitions as { from, to, event, label }. Only matching moves are applied.","synonyms":"edges, allowed moves, status flow, workflow transitions","tier":"domain","items":{"type":"object","properties":{"event":{"name":"event","type":"string","required":false},"from":{"name":"from","type":"string","required":true},"to":{"name":"to","type":"string","required":true},"label":{"name":"label","type":"string","required":false}}}},"states":{"type":"[string]","default":["draft","active","archived"],"label":"What are the possible statuses?","description":"The complete set of statuses a record can hold.","synonyms":"states, stages, phases, statuses, lifecycle, workflow steps","tier":"domain","items":{"type":"string"}},"enabled":{"type":"boolean","default":false,"label":"Enforce status lifecycle rules?","description":"Validate and apply status transitions against the configured table. Off by default.","synonyms":"lifecycle, statuses, states, stages, workflow, status transitions, enforce, enable, apply","tier":"infra"}},"scope":"instance"}],"pages":[{"name":"StatusLifecyclePage","id":"pag_M8N4PME2PB1B5VMQ1QF7RG9KBV","path":"/status-lifecycle","traits":[{"ref":"StatusMachine","refId":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"}]}],"types":{"TransitionSpec":[{"name":"from","type":"string","required":true},{"name":"to","type":"string","required":true},{"name":"event","type":"string"},{"name":"label","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C":{"id":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C","kind":"entity","bakedName":"StatusRecord","curName":"StatusRecord","renames":[],"owner":"workspace"},"evt_36AVRHCJ2A91588VPTED9WTZHN":{"id":"evt_36AVRHCJ2A91588VPTED9WTZHN","kind":"event","bakedName":"StatusChanged","curName":"StatusChanged","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC":{"id":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","kind":"event","bakedName":"StatusChangeFailed","curName":"StatusChangeFailed","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"evt_HP6BR3QYG8Z84A3HENF6F3MKYY":{"id":"evt_HP6BR3QYG8Z84A3HENF6F3MKYY","kind":"event","bakedName":"ChangeStatusRequested","curName":"ChangeStatusRequested","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"evt_MKBQ71R45T22XC2BRGBE8WPXN7":{"id":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","kind":"event","bakedName":"StatusPersisted","curName":"StatusPersisted","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"orb_92RSHQZHK3RSHK6C1TC91H8C23":{"id":"orb_92RSHQZHK3RSHK6C1TC91H8C23","kind":"orbital","bakedName":"StatusLifecycleOrbital","curName":"StatusLifecycleOrbital","renames":[],"owner":"workspace"},"pag_M8N4PME2PB1B5VMQ1QF7RG9KBV":{"id":"pag_M8N4PME2PB1B5VMQ1QF7RG9KBV","kind":"page","bakedName":"StatusLifecyclePage","curName":"StatusLifecyclePage","renames":[],"owner":"workspace"},"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8":{"id":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8","kind":"trait","bakedName":"StatusMachine","curName":"StatusMachine","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-status-lifecycle","version":"0.1.0","description":"Infra substrate: data-driven entity status lifecycle. The statuses and the allowed transitions are config data over a fixed single-state topology, so a host organism can expand or collapse its lifecycle without forking. Compose onto an entity, rename the ChangeStatusRequested listen to the host's status-change action, and supply `states` + `transitions`. A requested move is validated against the `transitions` table (illegal moves are rejected), then the new value is written to `statusField` on the target entity and StatusChanged is emitted. Surfaces nothing — the host renders the badge and buttons.","orbitals":[{"name":"StatusLifecycleOrbital","id":"orb_92RSHQZHK3RSHK6C1TC91H8C23","entity":{"name":"StatusRecord","id":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C","collection":"status_records","persistence":"persistent","fields":[{"name":"id","type":"string","required":true},{"name":"status","type":"string","default":"","description":"Current lifecycle status of the record.","synonyms":"state, stage, phase"}]},"traits":[{"name":"StatusMachine","id":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8","entityRebindable":true,"entityContract":{"requires":[],"provides":[]},"effectRow":[{"kind":"emit","resource":"StatusChanged"},{"kind":"persist","resource":"@config.targetEntity","resolved":false},{"kind":"render-ui","resource":"toast"}],"category":"lifecycle","linkedEntity":"StatusRecord","linkedEntityId":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C","entityRefIds":{"StatusRecord":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C"},"emits":[{"event":"StatusChanged","eventId":"evt_36AVRHCJ2A91588VPTED9WTZHN","scope":"external","payloadSchema":[{"name":"entityId","type":"string"},{"name":"status","type":"string"}]},{"event":"StatusPersisted","eventId":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","description":"Internal: the status write landed; carries the persisted row flat.","scope":"internal","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"status","type":"string"}],"payloadEntity":"StatusRecord"},{"event":"StatusChangeFailed","eventId":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","scope":"external","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"ChangeStatusRequested","id":"evt_HP6BR3QYG8Z84A3HENF6F3MKYY","name":"Change status requested","payloadSchema":[{"name":"id","type":"string"},{"name":"from","type":"string"},{"name":"to","type":"string"}],"listened":true},{"key":"StatusPersisted","id":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","name":"Status persisted","payloadSchema":[{"name":"id","type":"string","required":true},{"name":"status","type":"string"}],"payloadEntity":"StatusRecord","listened":true},{"key":"StatusChangeFailed","id":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","name":"Status change failed","payloadSchema":[{"name":"error","type":"string"},{"name":"code","type":"string"}],"listened":true},{"key":"StatusChanged","id":"evt_36AVRHCJ2A91588VPTED9WTZHN","name":"Status changed","payloadSchema":[{"name":"entityId","type":"string"},{"name":"status","type":"string"}]}],"transitions":[{"from":"idle","to":"idle","event":"ChangeStatusRequested","eventId":"evt_HP6BR3QYG8Z84A3HENF6F3MKYY","guard":["and","@config.enabled",["array/includes","@config.states","@payload.to"],["array/some","@config.transitions",["fn","t",["and",["=",["object/get","@t","from"],"@payload.from"],["=",["object/get","@t","to"],"@payload.to"]]]]],"effects":[["persist","update","@config.targetEntity",["object/set",{"id":"@payload.id"},"@config.statusField","@payload.to"],{"emit":{"failure":"StatusChangeFailed","success":"StatusPersisted"}}]]},{"from":"idle","to":"idle","event":"StatusPersisted","eventId":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","guard":["!=",["str/default","@payload.id",""],""],"effects":[["emit","StatusChanged",{"entityId":"@payload.id","status":["str/default",["object/get","@payload","@config.statusField"],""]}]]},{"from":"idle","to":"idle","event":"StatusChangeFailed","eventId":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","effects":[["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't change the status — ","@payload.error"],"dismissible":true}]]}]},"config":{"statusField":{"type":"string","default":"status","label":"Which field holds the status?","description":"Entity field this lifecycle drives (e.g. 'status', 'state', 'stage', 'phase').","synonyms":"state field, stage field, status column, lifecycle field","tier":"infra"},"enabled":{"type":"boolean","default":false,"label":"Enforce status lifecycle rules?","description":"Validate and apply status transitions against the configured table. Off by default.","synonyms":"lifecycle, statuses, states, stages, workflow, status transitions, enforce, enable, apply","tier":"infra"},"targetEntity":{"type":"entity","default":"StatusRecord","label":"Target entity","description":"Entity name whose status field this lifecycle drives (e.g. 'Contract'). Rebind per composition. Typed `entity`, so a rename of the bound entity threads through to this value automatically.","tier":"internal","refId":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C"},"transitions":{"type":"[TransitionSpec]","default":[{"event":"ACTIVATE","from":"draft","label":"Activate","to":"active"},{"event":"ARCHIVE","from":"active","label":"Archive","to":"archived"}],"label":"Which status moves are allowed?","description":"Legal transitions as { from, to, event, label }. Only matching moves are applied.","synonyms":"edges, allowed moves, status flow, workflow transitions","tier":"domain","items":{"type":"object","properties":{"label":{"name":"label","type":"string","required":false},"event":{"name":"event","type":"string","required":false},"to":{"name":"to","type":"string","required":true},"from":{"name":"from","type":"string","required":true}}}},"states":{"type":"[string]","default":["draft","active","archived"],"label":"What are the possible statuses?","description":"The complete set of statuses a record can hold.","synonyms":"states, stages, phases, statuses, lifecycle, workflow steps","tier":"domain","items":{"type":"string"}}},"scope":"instance"}],"pages":[{"name":"StatusLifecyclePage","id":"pag_M8N4PME2PB1B5VMQ1QF7RG9KBV","path":"/status-lifecycle","traits":[{"ref":"StatusMachine","refId":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"}]}],"types":{"TransitionSpec":[{"name":"from","type":"string","required":true},{"name":"to","type":"string","required":true},{"name":"event","type":"string"},{"name":"label","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C":{"id":"ent_0KTFQ1ZAN0NAG36XV34YYMAF0C","kind":"entity","bakedName":"StatusRecord","curName":"StatusRecord","renames":[],"owner":"workspace"},"evt_36AVRHCJ2A91588VPTED9WTZHN":{"id":"evt_36AVRHCJ2A91588VPTED9WTZHN","kind":"event","bakedName":"StatusChanged","curName":"StatusChanged","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC":{"id":"evt_HF5PXKZ6QPKBV7H1RTRZWXTJGC","kind":"event","bakedName":"StatusChangeFailed","curName":"StatusChangeFailed","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"evt_HP6BR3QYG8Z84A3HENF6F3MKYY":{"id":"evt_HP6BR3QYG8Z84A3HENF6F3MKYY","kind":"event","bakedName":"ChangeStatusRequested","curName":"ChangeStatusRequested","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"evt_MKBQ71R45T22XC2BRGBE8WPXN7":{"id":"evt_MKBQ71R45T22XC2BRGBE8WPXN7","kind":"event","bakedName":"StatusPersisted","curName":"StatusPersisted","renames":[],"owner":"workspace","parent":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8"},"orb_92RSHQZHK3RSHK6C1TC91H8C23":{"id":"orb_92RSHQZHK3RSHK6C1TC91H8C23","kind":"orbital","bakedName":"StatusLifecycleOrbital","curName":"StatusLifecycleOrbital","renames":[],"owner":"workspace"},"pag_M8N4PME2PB1B5VMQ1QF7RG9KBV":{"id":"pag_M8N4PME2PB1B5VMQ1QF7RG9KBV","kind":"page","bakedName":"StatusLifecyclePage","curName":"StatusLifecyclePage","renames":[],"owner":"workspace"},"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8":{"id":"trt_NY0ZVFJPZCBFP7CXTJWPS9Q3C8","kind":"trait","bakedName":"StatusMachine","curName":"StatusMachine","renames":[],"owner":"workspace"}}}}
@@ -1 +1 @@
1
- {"name":"std-status-lifecycle-control","version":"1.0.0","description":"Status lifecycle control — infra molecule pairing std-status-lifecycle's StatusMachine, which deliberately surfaces no UI of its own. Pure presentational: shows the current status and one button per legal next move (config.transitions filtered on config.currentStatus), emitting ChangeStatusRequested with the picked move's id/from/to on click. Driven entirely by config (currentStatus/recordId/transitions) rather than a bound entity, so a host embeds it inline at the record it's viewing (currentStatus={@entity.status} recordId={@entity.id} transitions matching the paired StatusMachine's own config.transitions) and points that StatusMachine's `listens` at this trait's emit (`<Composer>.ChangeStatusRequested -> ChangeStatusRequested`) instead of at a dead declared-only event.","orbitals":[{"name":"StatusLifecycleControlOrbital","id":"orb_Y3J0X54XVBEXNV62YR4MSJ6RW5","uses":[{"from":"std/behaviors/ui-badge","as":"Badge"}],"entity":{"name":"StatusControlItem","id":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","persistence":"runtime","fields":[{"name":"id","type":"string","required":true}]},"traits":[{"name":"StatusLifecycleControl","id":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8","entityRebindable":true,"entityContract":{"requires":[],"provides":[]},"effectRow":[{"kind":"emit","resource":"ChangeStatusRequested"},{"kind":"render-ui","resource":"main"}],"category":"interaction","linkedEntity":"StatusControlItem","linkedEntityId":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","entityRefIds":{"StatusControlItem":"ent_MASD15F0QSGBWQXG1JDTG7SBRD"},"traitEmbedIds":{"InlineBadgeRender1":"trt_W907VY224K129K446RHA99B57K"},"emits":[{"event":"ChangeStatusRequested","eventId":"evt_PNZ4HY108VG4DQJA1V88YP2XV0","description":"Fired when the viewer picks a legal next status from the control.","synonyms":"status change, workflow transition, stage change","tier":"primary","scope":"external","payloadSchema":[{"name":"id","type":"string"},{"name":"from","type":"string"},{"name":"to","type":"string"}]},{"event":"TRANSITION_REQUESTED","eventId":"evt_EDZRBMP3021G10Q6V327GEWJQK","description":"A legal-transition button was clicked.","synonyms":"transition clicked, move selected","tier":"internal","payloadSchema":[{"name":"to","type":"string"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"INIT","id":"evt_S0EY69B43JJ1SE6AW08YDE4W1W","name":"Initialize"},{"key":"TRANSITION_REQUESTED","id":"evt_EDZRBMP3021G10Q6V327GEWJQK","name":"Transition Requested","description":"A legal-transition button was clicked.","synonyms":"transition clicked, move selected","tier":"internal","payloadSchema":[{"name":"to","type":"string"}],"listened":true},{"key":"ChangeStatusRequested","id":"evt_PNZ4HY108VG4DQJA1V88YP2XV0","name":"Change status requested","description":"Fired when the viewer picks a legal next status from the control.","synonyms":"status change, workflow transition, stage change","tier":"primary","payloadSchema":[{"name":"id","type":"string"},{"name":"from","type":"string"},{"name":"to","type":"string"}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_S0EY69B43JJ1SE6AW08YDE4W1W","effects":[["render-ui","main",{"align":"center","children":["@trait.InlineBadgeRender1",{"children":["array/map",["array/filter","@config.transitions",["fn","t",["==",["object/get","@t","from"],"@config.currentStatus"]]],["fn","t",{"action":"TRANSITION_REQUESTED","actionPayload":{"to":["object/get","@t","to"]},"label":["object/get","@t","label"],"type":"button","variant":"secondary"}]],"direction":"horizontal","gap":"sm","type":"stack"}],"direction":"horizontal","gap":"md","type":"stack"}]]},{"from":"idle","to":"idle","event":"TRANSITION_REQUESTED","eventId":"evt_EDZRBMP3021G10Q6V327GEWJQK","effects":[["emit","ChangeStatusRequested",{"id":"@config.recordId","from":"@config.currentStatus","to":"@payload.to"}]]}]},"config":{"currentStatus":{"type":"string","default":"","label":"Current status","description":"The record's current status, shown as a badge and used to compute which transitions are legal. Forward the host entity's status field at the embed site (e.g. currentStatus={@entity.status}).","tier":"internal"},"recordId":{"type":"string","default":"","label":"Record id","description":"id of the record whose status this control changes. Forward the host entity's id at the embed site (e.g. recordId={@entity.id}).","tier":"internal"},"transitions":{"type":"[TransitionSpec]","default":[],"label":"Which status moves are allowed?","description":"Legal transitions as { from, to, event, label } — pass the SAME table given to the paired StatusMachine trait's config.transitions so the rendered buttons never offer a move the atom would reject.","synonyms":"edges, allowed moves, status flow, workflow transitions","tier":"domain","items":{"type":"object","properties":{"event":{"name":"event","type":"string","required":false},"to":{"name":"to","type":"string","required":true},"from":{"name":"from","type":"string","required":true},"label":{"name":"label","type":"string","required":false}}}}},"scope":"instance"},{"ref":"Badge.traits.BadgeRender","id":"trt_W907VY224K129K446RHA99B57K","name":"InlineBadgeRender1","linkedEntity":"StatusControlItem","linkedEntityId":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","config":{"label":{"type":"unknown","default":"@config.currentStatus"},"variant":{"type":"unknown","default":"neutral"}}}],"pages":[{"name":"StatusLifecycleControlPage","id":"pag_PCX1B64R2WC1EBQQ4VK0B7VFWR","path":"/status-lifecycle-control","traits":[{"ref":"StatusLifecycleControl","refId":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},{"ref":"InlineBadgeRender1","refId":"trt_W907VY224K129K446RHA99B57K"}]}],"types":{"TransitionSpec":[{"name":"from","type":"string","required":true},{"name":"to","type":"string","required":true},{"name":"event","type":"string"},{"name":"label","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_MASD15F0QSGBWQXG1JDTG7SBRD":{"id":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","kind":"entity","bakedName":"StatusControlItem","curName":"StatusControlItem","renames":[],"owner":"workspace"},"evt_EDZRBMP3021G10Q6V327GEWJQK":{"id":"evt_EDZRBMP3021G10Q6V327GEWJQK","kind":"event","bakedName":"TRANSITION_REQUESTED","curName":"TRANSITION_REQUESTED","renames":[],"owner":"workspace","parent":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},"evt_PNZ4HY108VG4DQJA1V88YP2XV0":{"id":"evt_PNZ4HY108VG4DQJA1V88YP2XV0","kind":"event","bakedName":"ChangeStatusRequested","curName":"ChangeStatusRequested","renames":[],"owner":"workspace","parent":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},"evt_S0EY69B43JJ1SE6AW08YDE4W1W":{"id":"evt_S0EY69B43JJ1SE6AW08YDE4W1W","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},"orb_Y3J0X54XVBEXNV62YR4MSJ6RW5":{"id":"orb_Y3J0X54XVBEXNV62YR4MSJ6RW5","kind":"orbital","bakedName":"StatusLifecycleControlOrbital","curName":"StatusLifecycleControlOrbital","renames":[],"owner":"workspace"},"pag_PCX1B64R2WC1EBQQ4VK0B7VFWR":{"id":"pag_PCX1B64R2WC1EBQQ4VK0B7VFWR","kind":"page","bakedName":"StatusLifecycleControlPage","curName":"StatusLifecycleControlPage","renames":[],"owner":"workspace"},"trt_055K9HK5R2JW1DC9X3S0KMA3Y8":{"id":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8","kind":"trait","bakedName":"StatusLifecycleControl","curName":"StatusLifecycleControl","renames":[],"owner":"workspace"},"trt_W907VY224K129K446RHA99B57K":{"id":"trt_W907VY224K129K446RHA99B57K","kind":"trait","bakedName":"InlineBadgeRender1","curName":"InlineBadgeRender1","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-status-lifecycle-control","version":"1.0.0","description":"Status lifecycle control — infra molecule pairing std-status-lifecycle's StatusMachine, which deliberately surfaces no UI of its own. Pure presentational: shows the current status and one button per legal next move (config.transitions filtered on config.currentStatus), emitting ChangeStatusRequested with the picked move's id/from/to on click. Driven entirely by config (currentStatus/recordId/transitions) rather than a bound entity, so a host embeds it inline at the record it's viewing (currentStatus={@entity.status} recordId={@entity.id} transitions matching the paired StatusMachine's own config.transitions) and points that StatusMachine's `listens` at this trait's emit (`<Composer>.ChangeStatusRequested -> ChangeStatusRequested`) instead of at a dead declared-only event.","orbitals":[{"name":"StatusLifecycleControlOrbital","id":"orb_Y3J0X54XVBEXNV62YR4MSJ6RW5","uses":[{"from":"std/behaviors/ui-badge","as":"Badge"}],"entity":{"name":"StatusControlItem","id":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","persistence":"runtime","fields":[{"name":"id","type":"string","required":true}]},"traits":[{"name":"StatusLifecycleControl","id":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8","entityRebindable":true,"entityContract":{"requires":[],"provides":[]},"effectRow":[{"kind":"emit","resource":"ChangeStatusRequested"},{"kind":"render-ui","resource":"main"}],"category":"interaction","linkedEntity":"StatusControlItem","linkedEntityId":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","entityRefIds":{"StatusControlItem":"ent_MASD15F0QSGBWQXG1JDTG7SBRD"},"traitEmbedIds":{"InlineBadgeRender1":"trt_W907VY224K129K446RHA99B57K"},"emits":[{"event":"ChangeStatusRequested","eventId":"evt_PNZ4HY108VG4DQJA1V88YP2XV0","description":"Fired when the viewer picks a legal next status from the control.","synonyms":"status change, workflow transition, stage change","tier":"primary","scope":"external","payloadSchema":[{"name":"id","type":"string"},{"name":"from","type":"string"},{"name":"to","type":"string"}]},{"event":"TRANSITION_REQUESTED","eventId":"evt_EDZRBMP3021G10Q6V327GEWJQK","description":"A legal-transition button was clicked.","synonyms":"transition clicked, move selected","tier":"internal","payloadSchema":[{"name":"to","type":"string"}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true}],"events":[{"key":"INIT","id":"evt_S0EY69B43JJ1SE6AW08YDE4W1W","name":"Initialize"},{"key":"TRANSITION_REQUESTED","id":"evt_EDZRBMP3021G10Q6V327GEWJQK","name":"Transition Requested","description":"A legal-transition button was clicked.","synonyms":"transition clicked, move selected","tier":"internal","payloadSchema":[{"name":"to","type":"string"}],"listened":true},{"key":"ChangeStatusRequested","id":"evt_PNZ4HY108VG4DQJA1V88YP2XV0","name":"Change status requested","description":"Fired when the viewer picks a legal next status from the control.","synonyms":"status change, workflow transition, stage change","tier":"primary","payloadSchema":[{"name":"id","type":"string"},{"name":"from","type":"string"},{"name":"to","type":"string"}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_S0EY69B43JJ1SE6AW08YDE4W1W","effects":[["render-ui","main",{"align":"center","children":["@trait.InlineBadgeRender1",{"children":["array/map",["array/filter","@config.transitions",["fn","t",["==",["object/get","@t","from"],"@config.currentStatus"]]],["fn","t",{"action":"TRANSITION_REQUESTED","actionPayload":{"to":["object/get","@t","to"]},"label":["object/get","@t","label"],"type":"button","variant":"secondary"}]],"direction":"horizontal","gap":"sm","type":"stack"}],"direction":"horizontal","gap":"md","type":"stack"}]]},{"from":"idle","to":"idle","event":"TRANSITION_REQUESTED","eventId":"evt_EDZRBMP3021G10Q6V327GEWJQK","effects":[["emit","ChangeStatusRequested",{"id":"@config.recordId","from":"@config.currentStatus","to":"@payload.to"}]]}]},"config":{"transitions":{"type":"[TransitionSpec]","default":[],"label":"Which status moves are allowed?","description":"Legal transitions as { from, to, event, label } — pass the SAME table given to the paired StatusMachine trait's config.transitions so the rendered buttons never offer a move the atom would reject.","synonyms":"edges, allowed moves, status flow, workflow transitions","tier":"domain","items":{"type":"object","properties":{"from":{"name":"from","type":"string","required":true},"event":{"name":"event","type":"string","required":false},"to":{"name":"to","type":"string","required":true},"label":{"name":"label","type":"string","required":false}}}},"recordId":{"type":"string","default":"","label":"Record id","description":"id of the record whose status this control changes. Forward the host entity's id at the embed site (e.g. recordId={@entity.id}).","tier":"internal"},"currentStatus":{"type":"string","default":"","label":"Current status","description":"The record's current status, shown as a badge and used to compute which transitions are legal. Forward the host entity's status field at the embed site (e.g. currentStatus={@entity.status}).","tier":"internal"}},"scope":"instance"},{"ref":"Badge.traits.BadgeRender","id":"trt_W907VY224K129K446RHA99B57K","name":"InlineBadgeRender1","linkedEntity":"StatusControlItem","linkedEntityId":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","config":{"variant":{"type":"unknown","default":"neutral"},"label":{"type":"unknown","default":"@config.currentStatus"}}}],"pages":[{"name":"StatusLifecycleControlPage","id":"pag_PCX1B64R2WC1EBQQ4VK0B7VFWR","path":"/status-lifecycle-control","traits":[{"ref":"StatusLifecycleControl","refId":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},{"ref":"InlineBadgeRender1","refId":"trt_W907VY224K129K446RHA99B57K"}]}],"types":{"TransitionSpec":[{"name":"from","type":"string","required":true},{"name":"to","type":"string","required":true},{"name":"event","type":"string"},{"name":"label","type":"string"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_MASD15F0QSGBWQXG1JDTG7SBRD":{"id":"ent_MASD15F0QSGBWQXG1JDTG7SBRD","kind":"entity","bakedName":"StatusControlItem","curName":"StatusControlItem","renames":[],"owner":"workspace"},"evt_EDZRBMP3021G10Q6V327GEWJQK":{"id":"evt_EDZRBMP3021G10Q6V327GEWJQK","kind":"event","bakedName":"TRANSITION_REQUESTED","curName":"TRANSITION_REQUESTED","renames":[],"owner":"workspace","parent":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},"evt_PNZ4HY108VG4DQJA1V88YP2XV0":{"id":"evt_PNZ4HY108VG4DQJA1V88YP2XV0","kind":"event","bakedName":"ChangeStatusRequested","curName":"ChangeStatusRequested","renames":[],"owner":"workspace","parent":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},"evt_S0EY69B43JJ1SE6AW08YDE4W1W":{"id":"evt_S0EY69B43JJ1SE6AW08YDE4W1W","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8"},"orb_Y3J0X54XVBEXNV62YR4MSJ6RW5":{"id":"orb_Y3J0X54XVBEXNV62YR4MSJ6RW5","kind":"orbital","bakedName":"StatusLifecycleControlOrbital","curName":"StatusLifecycleControlOrbital","renames":[],"owner":"workspace"},"pag_PCX1B64R2WC1EBQQ4VK0B7VFWR":{"id":"pag_PCX1B64R2WC1EBQQ4VK0B7VFWR","kind":"page","bakedName":"StatusLifecycleControlPage","curName":"StatusLifecycleControlPage","renames":[],"owner":"workspace"},"trt_055K9HK5R2JW1DC9X3S0KMA3Y8":{"id":"trt_055K9HK5R2JW1DC9X3S0KMA3Y8","kind":"trait","bakedName":"StatusLifecycleControl","curName":"StatusLifecycleControl","renames":[],"owner":"workspace"},"trt_W907VY224K129K446RHA99B57K":{"id":"trt_W907VY224K129K446RHA99B57K","kind":"trait","bakedName":"InlineBadgeRender1","curName":"InlineBadgeRender1","renames":[],"owner":"workspace"}}}}
@@ -1 +1 @@
1
- {"name":"std-data-collector","version":"1.0.0","description":"std-data-collector — pure buffer-accumulation atom, parameterized for any ML domain. Collects data points into a buffer and fires BUFFER_READY with the full accumulated buffer once it reaches config.bufferSize, then resets for the next cycle. No ML compute, no model call — state machine + array operators only. Use ahead of a training loop, a batch inference call, or any downstream rung that needs a fixed-size window of accumulated observations.","orbitals":[{"name":"MlDataCollectorOrbital","id":"orb_MAABDA9FBFQNQG99WRAD6W3RPE","entity":{"name":"DataPoint","id":"ent_QQRGY4P1G40R2E9V3GJVH6R90A","persistence":"runtime","fields":[{"name":"id","type":"string","required":true}]},"auxiliaryEntities":[{"name":"DataBuffer","id":"ent_1073MBMTSDDCPXCVQYXRC3NBAP","persistence":"runtime","fields":[{"name":"buffer","type":"relation","default":[],"relation":{"entity":"DataPoint","cardinality":"many"},"description":"Data points accumulated in the current cycle."},{"name":"count","type":"number","default":0,"description":"Number of points currently in the buffer."},{"name":"status","type":"string","default":"idle","values":["idle","collecting"]}]}],"traits":[{"name":"DataCollectorRun","id":"trt_A4KVRBPC1660K12JQFZQT19AQ3","entityRebindable":true,"entityContract":{"requires":[],"provides":["buffer","count","status"]},"effectRow":[{"kind":"emit","resource":"BUFFER_READY"},{"kind":"set","resource":"@entity.buffer"},{"kind":"set","resource":"@entity.count"},{"kind":"set","resource":"@entity.status"}],"category":"lifecycle","linkedEntity":"DataBuffer","linkedEntityId":"ent_1073MBMTSDDCPXCVQYXRC3NBAP","entityRefIds":{"DataBuffer":"ent_1073MBMTSDDCPXCVQYXRC3NBAP","DataPoint":"ent_QQRGY4P1G40R2E9V3GJVH6R90A"},"emits":[{"event":"BUFFER_READY","eventId":"evt_YSRWBT79XFMYQZ37SP426V9E9K","description":"Fired when the buffer reaches config.bufferSize; carries the full accumulated buffer and its count, then the buffer resets for the next cycle.","tier":"primary","scope":"external","payloadSchema":[{"name":"buffer","type":"[@entity(rowEntity)]","required":true},{"name":"count","type":"int","required":true}]}],"stateMachine":{"states":[{"name":"collecting","isInitial":true}],"events":[{"key":"INIT","id":"evt_MSRT3T73N0HTG7DGQES50MC9MX","name":"Initialize"},{"key":"COLLECT","id":"evt_84XN00RTNADANBJB6RFS6HRT2Q","name":"Collect","payloadSchema":[{"name":"point","type":"@entity(rowEntity)","required":true}],"listened":true},{"key":"BUFFER_READY","id":"evt_YSRWBT79XFMYQZ37SP426V9E9K","name":"Buffer Ready","description":"Fired when the buffer reaches config.bufferSize; carries the full accumulated buffer and its count, then the buffer resets for the next cycle.","tier":"primary","payloadSchema":[{"name":"buffer","type":"[@entity(rowEntity)]","required":true},{"name":"count","type":"int","required":true}]}],"transitions":[{"from":"collecting","to":"collecting","event":"INIT","eventId":"evt_MSRT3T73N0HTG7DGQES50MC9MX","effects":[["set","@entity.buffer",[]],["set","@entity.count",0],["set","@entity.status","idle"]]},{"from":"collecting","to":"collecting","event":"COLLECT","eventId":"evt_84XN00RTNADANBJB6RFS6HRT2Q","effects":[["let",[["newBuffer",["array/append","@entity.buffer","@payload.point"]],["newCount",["+","@entity.count",1]]],["if",[">=","@newCount","@config.bufferSize"],["do",["set","@entity.buffer",[]],["set","@entity.count",0],["set","@entity.status","idle"],["emit","BUFFER_READY",{"buffer":"@newBuffer","count":"@newCount"}]],["do",["set","@entity.buffer","@newBuffer"],["set","@entity.count","@newCount"],["set","@entity.status","collecting"]]]]]}]},"config":{"rowEntity":{"type":"entity","default":"DataPoint","label":"Entity of the points","description":"The entity whose rows COLLECT delivers and BUFFER_READY carries","synonyms":"point entity, data point entity, rows of","tier":"internal","refId":"ent_QQRGY4P1G40R2E9V3GJVH6R90A"},"bufferSize":{"type":"int","default":100,"label":"Buffer size","description":"Number of data points collected before BUFFER_READY fires.","tier":"domain"}},"scope":"instance"}],"pages":[{"name":"MlDataCollectorPage","id":"pag_TMQQW738TMMDAF0MM76SYFR1QP","path":"/ml-data-collector","traits":[{"ref":"DataCollectorRun","refId":"trt_A4KVRBPC1660K12JQFZQT19AQ3"}]}]}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_1073MBMTSDDCPXCVQYXRC3NBAP":{"id":"ent_1073MBMTSDDCPXCVQYXRC3NBAP","kind":"entity","bakedName":"DataBuffer","curName":"DataBuffer","renames":[],"owner":"workspace"},"ent_QQRGY4P1G40R2E9V3GJVH6R90A":{"id":"ent_QQRGY4P1G40R2E9V3GJVH6R90A","kind":"entity","bakedName":"DataPoint","curName":"DataPoint","renames":[],"owner":"workspace"},"evt_84XN00RTNADANBJB6RFS6HRT2Q":{"id":"evt_84XN00RTNADANBJB6RFS6HRT2Q","kind":"event","bakedName":"COLLECT","curName":"COLLECT","renames":[],"owner":"workspace","parent":"trt_A4KVRBPC1660K12JQFZQT19AQ3"},"evt_MSRT3T73N0HTG7DGQES50MC9MX":{"id":"evt_MSRT3T73N0HTG7DGQES50MC9MX","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_A4KVRBPC1660K12JQFZQT19AQ3"},"evt_YSRWBT79XFMYQZ37SP426V9E9K":{"id":"evt_YSRWBT79XFMYQZ37SP426V9E9K","kind":"event","bakedName":"BUFFER_READY","curName":"BUFFER_READY","renames":[],"owner":"workspace","parent":"trt_A4KVRBPC1660K12JQFZQT19AQ3"},"orb_MAABDA9FBFQNQG99WRAD6W3RPE":{"id":"orb_MAABDA9FBFQNQG99WRAD6W3RPE","kind":"orbital","bakedName":"MlDataCollectorOrbital","curName":"MlDataCollectorOrbital","renames":[],"owner":"workspace"},"pag_TMQQW738TMMDAF0MM76SYFR1QP":{"id":"pag_TMQQW738TMMDAF0MM76SYFR1QP","kind":"page","bakedName":"MlDataCollectorPage","curName":"MlDataCollectorPage","renames":[],"owner":"workspace"},"trt_A4KVRBPC1660K12JQFZQT19AQ3":{"id":"trt_A4KVRBPC1660K12JQFZQT19AQ3","kind":"trait","bakedName":"DataCollectorRun","curName":"DataCollectorRun","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-data-collector","version":"1.0.0","description":"std-data-collector — pure buffer-accumulation atom, parameterized for any ML domain. Collects data points into a buffer and fires BUFFER_READY with the full accumulated buffer once it reaches config.bufferSize, then resets for the next cycle. No ML compute, no model call — state machine + array operators only. Use ahead of a training loop, a batch inference call, or any downstream rung that needs a fixed-size window of accumulated observations.","orbitals":[{"name":"MlDataCollectorOrbital","id":"orb_MAABDA9FBFQNQG99WRAD6W3RPE","entity":{"name":"DataPoint","id":"ent_QQRGY4P1G40R2E9V3GJVH6R90A","persistence":"runtime","fields":[{"name":"id","type":"string","required":true}]},"auxiliaryEntities":[{"name":"DataBuffer","id":"ent_1073MBMTSDDCPXCVQYXRC3NBAP","persistence":"runtime","fields":[{"name":"buffer","type":"relation","default":[],"relation":{"entity":"DataPoint","cardinality":"many"},"description":"Data points accumulated in the current cycle."},{"name":"count","type":"number","default":0,"description":"Number of points currently in the buffer."},{"name":"status","type":"string","default":"idle","values":["idle","collecting"]}]}],"traits":[{"name":"DataCollectorRun","id":"trt_A4KVRBPC1660K12JQFZQT19AQ3","entityRebindable":true,"entityContract":{"requires":[],"provides":["buffer","count","status"]},"effectRow":[{"kind":"emit","resource":"BUFFER_READY"},{"kind":"set","resource":"@entity.buffer"},{"kind":"set","resource":"@entity.count"},{"kind":"set","resource":"@entity.status"}],"category":"lifecycle","linkedEntity":"DataBuffer","linkedEntityId":"ent_1073MBMTSDDCPXCVQYXRC3NBAP","entityRefIds":{"DataPoint":"ent_QQRGY4P1G40R2E9V3GJVH6R90A","DataBuffer":"ent_1073MBMTSDDCPXCVQYXRC3NBAP"},"emits":[{"event":"BUFFER_READY","eventId":"evt_YSRWBT79XFMYQZ37SP426V9E9K","description":"Fired when the buffer reaches config.bufferSize; carries the full accumulated buffer and its count, then the buffer resets for the next cycle.","tier":"primary","scope":"external","payloadSchema":[{"name":"buffer","type":"[@entity(rowEntity)]","required":true},{"name":"count","type":"int","required":true}]}],"stateMachine":{"states":[{"name":"collecting","isInitial":true}],"events":[{"key":"INIT","id":"evt_MSRT3T73N0HTG7DGQES50MC9MX","name":"Initialize"},{"key":"COLLECT","id":"evt_84XN00RTNADANBJB6RFS6HRT2Q","name":"Collect","payloadSchema":[{"name":"point","type":"@entity(rowEntity)","required":true}],"listened":true},{"key":"BUFFER_READY","id":"evt_YSRWBT79XFMYQZ37SP426V9E9K","name":"Buffer Ready","description":"Fired when the buffer reaches config.bufferSize; carries the full accumulated buffer and its count, then the buffer resets for the next cycle.","tier":"primary","payloadSchema":[{"name":"buffer","type":"[@entity(rowEntity)]","required":true},{"name":"count","type":"int","required":true}]}],"transitions":[{"from":"collecting","to":"collecting","event":"INIT","eventId":"evt_MSRT3T73N0HTG7DGQES50MC9MX","effects":[["set","@entity.buffer",[]],["set","@entity.count",0],["set","@entity.status","idle"]]},{"from":"collecting","to":"collecting","event":"COLLECT","eventId":"evt_84XN00RTNADANBJB6RFS6HRT2Q","effects":[["let",[["newBuffer",["array/append","@entity.buffer","@payload.point"]],["newCount",["+","@entity.count",1]]],["if",[">=","@newCount","@config.bufferSize"],["do",["set","@entity.buffer",[]],["set","@entity.count",0],["set","@entity.status","idle"],["emit","BUFFER_READY",{"buffer":"@newBuffer","count":"@newCount"}]],["do",["set","@entity.buffer","@newBuffer"],["set","@entity.count","@newCount"],["set","@entity.status","collecting"]]]]]}]},"config":{"bufferSize":{"type":"int","default":100,"label":"Buffer size","description":"Number of data points collected before BUFFER_READY fires.","tier":"domain"},"rowEntity":{"type":"entity","default":"DataPoint","label":"Entity of the points","description":"The entity whose rows COLLECT delivers and BUFFER_READY carries","synonyms":"point entity, data point entity, rows of","tier":"internal","refId":"ent_QQRGY4P1G40R2E9V3GJVH6R90A"}},"scope":"instance"}],"pages":[{"name":"MlDataCollectorPage","id":"pag_TMQQW738TMMDAF0MM76SYFR1QP","path":"/ml-data-collector","traits":[{"ref":"DataCollectorRun","refId":"trt_A4KVRBPC1660K12JQFZQT19AQ3"}]}]}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_1073MBMTSDDCPXCVQYXRC3NBAP":{"id":"ent_1073MBMTSDDCPXCVQYXRC3NBAP","kind":"entity","bakedName":"DataBuffer","curName":"DataBuffer","renames":[],"owner":"workspace"},"ent_QQRGY4P1G40R2E9V3GJVH6R90A":{"id":"ent_QQRGY4P1G40R2E9V3GJVH6R90A","kind":"entity","bakedName":"DataPoint","curName":"DataPoint","renames":[],"owner":"workspace"},"evt_84XN00RTNADANBJB6RFS6HRT2Q":{"id":"evt_84XN00RTNADANBJB6RFS6HRT2Q","kind":"event","bakedName":"COLLECT","curName":"COLLECT","renames":[],"owner":"workspace","parent":"trt_A4KVRBPC1660K12JQFZQT19AQ3"},"evt_MSRT3T73N0HTG7DGQES50MC9MX":{"id":"evt_MSRT3T73N0HTG7DGQES50MC9MX","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_A4KVRBPC1660K12JQFZQT19AQ3"},"evt_YSRWBT79XFMYQZ37SP426V9E9K":{"id":"evt_YSRWBT79XFMYQZ37SP426V9E9K","kind":"event","bakedName":"BUFFER_READY","curName":"BUFFER_READY","renames":[],"owner":"workspace","parent":"trt_A4KVRBPC1660K12JQFZQT19AQ3"},"orb_MAABDA9FBFQNQG99WRAD6W3RPE":{"id":"orb_MAABDA9FBFQNQG99WRAD6W3RPE","kind":"orbital","bakedName":"MlDataCollectorOrbital","curName":"MlDataCollectorOrbital","renames":[],"owner":"workspace"},"pag_TMQQW738TMMDAF0MM76SYFR1QP":{"id":"pag_TMQQW738TMMDAF0MM76SYFR1QP","kind":"page","bakedName":"MlDataCollectorPage","curName":"MlDataCollectorPage","renames":[],"owner":"workspace"},"trt_A4KVRBPC1660K12JQFZQT19AQ3":{"id":"trt_A4KVRBPC1660K12JQFZQT19AQ3","kind":"trait","bakedName":"DataCollectorRun","curName":"DataCollectorRun","renames":[],"owner":"workspace"}}}}
@@ -1 +1 @@
1
- {"name":"std-graph-builder","version":"1.0.0","description":"Graph construction atom — builds node/edge structures from an entity collection for downstream GNN pipelines; pure array/object transform, no ML compute.","orbitals":[{"name":"GraphBuilderOrbital","id":"orb_T4CR42ZQK5VSJRFFZ64J36CRTN","entity":{"name":"GraphSource","id":"ent_1F48VRFH66RK32C4KHR1JE9H24","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"neighbors","type":"array","default":[],"items":{"type":"string"}}]},"auxiliaryEntities":[{"name":"GraphStructure","id":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ","persistence":"runtime","fields":[{"name":"nodes","type":"array","default":[],"items":{"type":"object","items":{"type":"union","values":["string","number","boolean"],"properties":{"number":{"name":"number","type":"number"},"boolean":{"name":"boolean","type":"boolean"},"string":{"name":"string","type":"string"}}}}},{"name":"edges","type":"array","default":[],"items":{"type":"object","properties":{"target":{"name":"target","type":"string","required":true},"source":{"name":"source","type":"string","required":true}}}},{"name":"nodeCount","type":"number","default":0},{"name":"edgeCount","type":"number","default":0},{"name":"status","type":"string","default":"idle","values":["idle","built"]}]}],"traits":[{"name":"GraphBuilderRun","id":"trt_MR356DNHNBRTNTJSR77EHK75A7","effectRow":[{"kind":"emit","resource":"GRAPH_READY"},{"kind":"set","resource":"@entity.edgeCount"},{"kind":"set","resource":"@entity.edges"},{"kind":"set","resource":"@entity.nodeCount"},{"kind":"set","resource":"@entity.nodes"},{"kind":"set","resource":"@entity.status"}],"category":"lifecycle","linkedEntity":"GraphStructure","linkedEntityId":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ","entityRefIds":{"GraphSource":"ent_1F48VRFH66RK32C4KHR1JE9H24","GraphStructure":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ"},"emits":[{"event":"GRAPH_READY","eventId":"evt_WHAWA395VFJXQJKY3SNXNN1P13","description":"Fired when node/edge structures have been built from the source entity collection","tier":"primary","scope":"external","payloadSchema":[{"name":"nodes","type":"[GraphNode]","required":true},{"name":"edges","type":"[object]","required":true,"properties":[{"name":"source","type":"string","required":true},{"name":"target","type":"string","required":true}],"entity":"GraphBuilderEdge"},{"name":"nodeCount","type":"int","required":true},{"name":"edgeCount","type":"int","required":true},{"name":"directed","type":"boolean","required":true}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true},{"name":"built"}],"events":[{"key":"INIT","id":"evt_VNC082FV0BXG5X7AK4A98ATP0H","name":"Initialize"},{"key":"BUILD_GRAPH","id":"evt_JWT9CMN0C3G61HGNBXKAR8BBGT","name":"Build Graph","payloadSchema":[{"name":"entities","type":"[@entity(rowEntity)]","required":true}],"listened":true},{"key":"RESET","id":"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S","name":"Reset"},{"key":"GRAPH_READY","id":"evt_WHAWA395VFJXQJKY3SNXNN1P13","name":"Graph Ready","description":"Fired when node/edge structures have been built from the source entity collection","tier":"primary","payloadSchema":[{"name":"nodes","type":"[GraphNode]","required":true},{"name":"edges","type":"[object]","required":true,"properties":[{"name":"source","type":"string","required":true},{"name":"target","type":"string","required":true}],"entity":"GraphBuilderEdge"},{"name":"nodeCount","type":"int","required":true},{"name":"edgeCount","type":"int","required":true},{"name":"directed","type":"boolean","required":true}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_VNC082FV0BXG5X7AK4A98ATP0H","effects":[["set","@entity.nodes",[]],["set","@entity.edges",[]],["set","@entity.nodeCount",0],["set","@entity.edgeCount",0],["set","@entity.status","idle"]]},{"from":"idle","to":"built","event":"BUILD_GRAPH","eventId":"evt_JWT9CMN0C3G61HGNBXKAR8BBGT","effects":[["let",[["nodes",["array/map","@payload.entities",["fn","e",["object/merge",{"id":["object/get","@e","id"]},["object/pick","@e","@config.nodeFeatures"]]]]],["edges",["array/flatten",["array/map","@payload.entities",["fn","e",["array/map",["object/get","@e","@config.edgeField",[]],["fn","target",{"source":["object/get","@e","id"],"target":"@target"}]]]]]]],["do",["set","@entity.nodes","@nodes"],["set","@entity.edges","@edges"],["set","@entity.nodeCount",["array/len","@nodes"]],["set","@entity.edgeCount",["array/len","@edges"]],["set","@entity.status","built"],["emit","GRAPH_READY",{"nodes":"@nodes","edges":"@edges","nodeCount":["array/len","@nodes"],"edgeCount":["array/len","@edges"],"directed":"@config.directed"}]]]]},{"from":"built","to":"built","event":"INIT","eventId":"evt_VNC082FV0BXG5X7AK4A98ATP0H","effects":[["set","@entity.status","built"]]},{"from":"built","to":"idle","event":"RESET","eventId":"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S","effects":[["set","@entity.nodes",[]],["set","@entity.edges",[]],["set","@entity.nodeCount",0],["set","@entity.edgeCount",0],["set","@entity.status","idle"]]}]},"config":{"rowEntity":{"type":"entity","default":"GraphSource","label":"Entity of the rows","description":"The entity whose rows BUILD_GRAPH delivers; edgeField and nodeFeatures name fields of it","synonyms":"source entity, rows of, node entity","tier":"internal","refId":"ent_1F48VRFH66RK32C4KHR1JE9H24"},"directed":{"type":"boolean","default":false,"label":"Directed","description":"Carried through for downstream consumers; edges are emitted once per adjacency entry, so an undirected reader should treat each edge as bidirectional","tier":"policy"},"edgeField":{"type":"string","default":"neighbors","label":"Edge field","description":"Field on each source entity holding its adjacency — an array of target ids","tier":"domain"},"nodeFeatures":{"type":"[string]","default":["id"],"label":"Node features","description":"Entity fields carried onto each node alongside id","tier":"domain","items":{"type":"string"}}},"scope":"instance"}],"pages":[{"name":"GraphBuilderPage","id":"pag_Q9XS4ZRQYBBZ5TE2GSCHMNME02","path":"/graph-builder","traits":[{"ref":"GraphBuilderRun","refId":"trt_MR356DNHNBRTNTJSR77EHK75A7"}]}],"types":{"FeatureValue":[{"name":"","type":"union","properties":[{"name":"string","type":"string"},{"name":"number","type":"number"},{"name":"boolean","type":"boolean"}]}],"GraphBuilderEdge":[{"name":"source","type":"string","required":true},{"name":"target","type":"string","required":true}],"GraphNode":[{"name":"","type":"Map<string,FeatureValue>"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_1F48VRFH66RK32C4KHR1JE9H24":{"id":"ent_1F48VRFH66RK32C4KHR1JE9H24","kind":"entity","bakedName":"GraphSource","curName":"GraphSource","renames":[],"owner":"workspace"},"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ":{"id":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ","kind":"entity","bakedName":"GraphStructure","curName":"GraphStructure","renames":[],"owner":"workspace"},"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S":{"id":"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S","kind":"event","bakedName":"RESET","curName":"RESET","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"evt_JWT9CMN0C3G61HGNBXKAR8BBGT":{"id":"evt_JWT9CMN0C3G61HGNBXKAR8BBGT","kind":"event","bakedName":"BUILD_GRAPH","curName":"BUILD_GRAPH","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"evt_VNC082FV0BXG5X7AK4A98ATP0H":{"id":"evt_VNC082FV0BXG5X7AK4A98ATP0H","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"evt_WHAWA395VFJXQJKY3SNXNN1P13":{"id":"evt_WHAWA395VFJXQJKY3SNXNN1P13","kind":"event","bakedName":"GRAPH_READY","curName":"GRAPH_READY","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"orb_T4CR42ZQK5VSJRFFZ64J36CRTN":{"id":"orb_T4CR42ZQK5VSJRFFZ64J36CRTN","kind":"orbital","bakedName":"GraphBuilderOrbital","curName":"GraphBuilderOrbital","renames":[],"owner":"workspace"},"pag_Q9XS4ZRQYBBZ5TE2GSCHMNME02":{"id":"pag_Q9XS4ZRQYBBZ5TE2GSCHMNME02","kind":"page","bakedName":"GraphBuilderPage","curName":"GraphBuilderPage","renames":[],"owner":"workspace"},"trt_MR356DNHNBRTNTJSR77EHK75A7":{"id":"trt_MR356DNHNBRTNTJSR77EHK75A7","kind":"trait","bakedName":"GraphBuilderRun","curName":"GraphBuilderRun","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-graph-builder","version":"1.0.0","description":"Graph construction atom — builds node/edge structures from an entity collection for downstream GNN pipelines; pure array/object transform, no ML compute.","orbitals":[{"name":"GraphBuilderOrbital","id":"orb_T4CR42ZQK5VSJRFFZ64J36CRTN","entity":{"name":"GraphSource","id":"ent_1F48VRFH66RK32C4KHR1JE9H24","persistence":"runtime","fields":[{"name":"id","type":"string","required":true},{"name":"neighbors","type":"array","default":[],"items":{"type":"string"}}]},"auxiliaryEntities":[{"name":"GraphStructure","id":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ","persistence":"runtime","fields":[{"name":"nodes","type":"array","default":[],"items":{"type":"object","items":{"type":"union","values":["string","number","boolean"],"properties":{"boolean":{"name":"boolean","type":"boolean"},"string":{"name":"string","type":"string"},"number":{"name":"number","type":"number"}}}}},{"name":"edges","type":"array","default":[],"items":{"type":"object","properties":{"source":{"name":"source","type":"string","required":true},"target":{"name":"target","type":"string","required":true}}}},{"name":"nodeCount","type":"number","default":0},{"name":"edgeCount","type":"number","default":0},{"name":"status","type":"string","default":"idle","values":["idle","built"]}]}],"traits":[{"name":"GraphBuilderRun","id":"trt_MR356DNHNBRTNTJSR77EHK75A7","effectRow":[{"kind":"emit","resource":"GRAPH_READY"},{"kind":"set","resource":"@entity.edgeCount"},{"kind":"set","resource":"@entity.edges"},{"kind":"set","resource":"@entity.nodeCount"},{"kind":"set","resource":"@entity.nodes"},{"kind":"set","resource":"@entity.status"}],"category":"lifecycle","linkedEntity":"GraphStructure","linkedEntityId":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ","entityRefIds":{"GraphStructure":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ","GraphSource":"ent_1F48VRFH66RK32C4KHR1JE9H24"},"emits":[{"event":"GRAPH_READY","eventId":"evt_WHAWA395VFJXQJKY3SNXNN1P13","description":"Fired when node/edge structures have been built from the source entity collection","tier":"primary","scope":"external","payloadSchema":[{"name":"nodes","type":"[GraphNode]","required":true},{"name":"edges","type":"[object]","required":true,"properties":[{"name":"source","type":"string","required":true},{"name":"target","type":"string","required":true}],"entity":"GraphBuilderEdge"},{"name":"nodeCount","type":"int","required":true},{"name":"edgeCount","type":"int","required":true},{"name":"directed","type":"boolean","required":true}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true},{"name":"built"}],"events":[{"key":"INIT","id":"evt_VNC082FV0BXG5X7AK4A98ATP0H","name":"Initialize"},{"key":"BUILD_GRAPH","id":"evt_JWT9CMN0C3G61HGNBXKAR8BBGT","name":"Build Graph","payloadSchema":[{"name":"entities","type":"[@entity(rowEntity)]","required":true}],"listened":true},{"key":"RESET","id":"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S","name":"Reset"},{"key":"GRAPH_READY","id":"evt_WHAWA395VFJXQJKY3SNXNN1P13","name":"Graph Ready","description":"Fired when node/edge structures have been built from the source entity collection","tier":"primary","payloadSchema":[{"name":"nodes","type":"[GraphNode]","required":true},{"name":"edges","type":"[object]","required":true,"properties":[{"name":"source","type":"string","required":true},{"name":"target","type":"string","required":true}],"entity":"GraphBuilderEdge"},{"name":"nodeCount","type":"int","required":true},{"name":"edgeCount","type":"int","required":true},{"name":"directed","type":"boolean","required":true}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_VNC082FV0BXG5X7AK4A98ATP0H","effects":[["set","@entity.nodes",[]],["set","@entity.edges",[]],["set","@entity.nodeCount",0],["set","@entity.edgeCount",0],["set","@entity.status","idle"]]},{"from":"idle","to":"built","event":"BUILD_GRAPH","eventId":"evt_JWT9CMN0C3G61HGNBXKAR8BBGT","effects":[["let",[["nodes",["array/map","@payload.entities",["fn","e",["object/merge",{"id":["object/get","@e","id"]},["object/pick","@e","@config.nodeFeatures"]]]]],["edges",["array/flatten",["array/map","@payload.entities",["fn","e",["array/map",["object/get","@e","@config.edgeField",[]],["fn","target",{"source":["object/get","@e","id"],"target":"@target"}]]]]]]],["do",["set","@entity.nodes","@nodes"],["set","@entity.edges","@edges"],["set","@entity.nodeCount",["array/len","@nodes"]],["set","@entity.edgeCount",["array/len","@edges"]],["set","@entity.status","built"],["emit","GRAPH_READY",{"nodes":"@nodes","edges":"@edges","nodeCount":["array/len","@nodes"],"edgeCount":["array/len","@edges"],"directed":"@config.directed"}]]]]},{"from":"built","to":"built","event":"INIT","eventId":"evt_VNC082FV0BXG5X7AK4A98ATP0H","effects":[["set","@entity.status","built"]]},{"from":"built","to":"idle","event":"RESET","eventId":"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S","effects":[["set","@entity.nodes",[]],["set","@entity.edges",[]],["set","@entity.nodeCount",0],["set","@entity.edgeCount",0],["set","@entity.status","idle"]]}]},"config":{"rowEntity":{"type":"entity","default":"GraphSource","label":"Entity of the rows","description":"The entity whose rows BUILD_GRAPH delivers; edgeField and nodeFeatures name fields of it","synonyms":"source entity, rows of, node entity","tier":"internal","refId":"ent_1F48VRFH66RK32C4KHR1JE9H24"},"nodeFeatures":{"type":"[string]","default":["id"],"label":"Node features","description":"Entity fields carried onto each node alongside id","tier":"domain","items":{"type":"string"}},"edgeField":{"type":"string","default":"neighbors","label":"Edge field","description":"Field on each source entity holding its adjacency — an array of target ids","tier":"domain"},"directed":{"type":"boolean","default":false,"label":"Directed","description":"Carried through for downstream consumers; edges are emitted once per adjacency entry, so an undirected reader should treat each edge as bidirectional","tier":"policy"}},"scope":"instance"}],"pages":[{"name":"GraphBuilderPage","id":"pag_Q9XS4ZRQYBBZ5TE2GSCHMNME02","path":"/graph-builder","traits":[{"ref":"GraphBuilderRun","refId":"trt_MR356DNHNBRTNTJSR77EHK75A7"}]}],"types":{"FeatureValue":[{"name":"","type":"union","properties":[{"name":"string","type":"string"},{"name":"number","type":"number"},{"name":"boolean","type":"boolean"}]}],"GraphBuilderEdge":[{"name":"source","type":"string","required":true},{"name":"target","type":"string","required":true}],"GraphNode":[{"name":"","type":"Map<string,FeatureValue>"}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_1F48VRFH66RK32C4KHR1JE9H24":{"id":"ent_1F48VRFH66RK32C4KHR1JE9H24","kind":"entity","bakedName":"GraphSource","curName":"GraphSource","renames":[],"owner":"workspace"},"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ":{"id":"ent_AE3ZNXJW27E13QMTQ2ZEJP2MRZ","kind":"entity","bakedName":"GraphStructure","curName":"GraphStructure","renames":[],"owner":"workspace"},"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S":{"id":"evt_802JWWSRZ8WFM8P7T0F5K0YQ5S","kind":"event","bakedName":"RESET","curName":"RESET","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"evt_JWT9CMN0C3G61HGNBXKAR8BBGT":{"id":"evt_JWT9CMN0C3G61HGNBXKAR8BBGT","kind":"event","bakedName":"BUILD_GRAPH","curName":"BUILD_GRAPH","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"evt_VNC082FV0BXG5X7AK4A98ATP0H":{"id":"evt_VNC082FV0BXG5X7AK4A98ATP0H","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"evt_WHAWA395VFJXQJKY3SNXNN1P13":{"id":"evt_WHAWA395VFJXQJKY3SNXNN1P13","kind":"event","bakedName":"GRAPH_READY","curName":"GRAPH_READY","renames":[],"owner":"workspace","parent":"trt_MR356DNHNBRTNTJSR77EHK75A7"},"orb_T4CR42ZQK5VSJRFFZ64J36CRTN":{"id":"orb_T4CR42ZQK5VSJRFFZ64J36CRTN","kind":"orbital","bakedName":"GraphBuilderOrbital","curName":"GraphBuilderOrbital","renames":[],"owner":"workspace"},"pag_Q9XS4ZRQYBBZ5TE2GSCHMNME02":{"id":"pag_Q9XS4ZRQYBBZ5TE2GSCHMNME02","kind":"page","bakedName":"GraphBuilderPage","curName":"GraphBuilderPage","renames":[],"owner":"workspace"},"trt_MR356DNHNBRTNTJSR77EHK75A7":{"id":"trt_MR356DNHNBRTNTJSR77EHK75A7","kind":"trait","bakedName":"GraphBuilderRun","curName":"GraphBuilderRun","renames":[],"owner":"workspace"}}}}
@@ -1 +1 @@
1
- {"name":"std-ml-classify","version":"1.0.0","description":"Generative rung (R5) — structured LLM verdict from a closed category set, via the llm.classify service seam. Bottom of the fall-through: always answers or fails, never abstains.","orbitals":[{"name":"MlClassifyOrbital","id":"orb_CDDGW9DWGBY85ZBG1NH7NJ3D52","entity":{"name":"ClassifierVerdict","id":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M","persistence":"runtime","fields":[{"name":"text","type":"string","default":""},{"name":"category","type":"string","default":""},{"name":"confidence","type":"number","default":0},{"name":"reasoning","type":"string","default":""},{"name":"errorMessage","type":"string","default":""},{"name":"request","type":"object","default":{},"properties":{"accepted":{"name":"accepted","type":"array","required":true,"items":{"type":"string"}},"candidate":{"name":"candidate","type":"string","required":true},"key":{"name":"key","type":"string","required":true},"categories":{"name":"categories","type":"array","required":true,"items":{"type":"string"}}}},{"name":"status","type":"string","default":"idle","values":["idle","classifying","done"]}]},"traits":[{"name":"ClassifyRun","id":"trt_03RGYG30XZGEZWTZ7MPWC4F14D","effectRow":[{"kind":"call-service","resource":"llm.classify"},{"kind":"emit","resource":"CLASSIFIED"},{"kind":"emit","resource":"CLASSIFY_FAILED"},{"kind":"render-ui","resource":"toast"},{"kind":"set","resource":"@entity.category"},{"kind":"set","resource":"@entity.confidence"},{"kind":"set","resource":"@entity.errorMessage"},{"kind":"set","resource":"@entity.reasoning"},{"kind":"set","resource":"@entity.request"},{"kind":"set","resource":"@entity.status"},{"kind":"set","resource":"@entity.text"}],"category":"lifecycle","linkedEntity":"ClassifierVerdict","linkedEntityId":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M","entityRefIds":{"ClassifierVerdict":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M"},"emits":[{"event":"CLASSIFIED_RAW","eventId":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","description":"Raw llm.classify service result, flattened onto the payload by the call-service effect executor","tier":"secondary","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"number","required":true},{"name":"reasoning","type":"string","required":true}]},{"event":"CLASSIFY_CALL_FAILED","eventId":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","description":"call-service classify failure signal","tier":"secondary","payloadSchema":[{"name":"error","type":"string","required":true}]},{"event":"CLASSIFIED","eventId":"evt_PHB72SJ3P81V41FN6XPRXC7JWW","description":"Structured LLM verdict — closed-set category with confidence and reasoning","tier":"primary","scope":"external","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"float","required":true},{"name":"reasoning","type":"string","required":true}]},{"event":"CLASSIFY_FAILED","eventId":"evt_7TE28MED446J25DVRK7W6M53TX","description":"The classify service call failed; this rung never abstains, only answers or fails","tier":"primary","scope":"external","payloadSchema":[{"name":"error","type":"string","required":true}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true},{"name":"classifying"},{"name":"done"}],"events":[{"key":"INIT","id":"evt_DE59WENP8MV4A19GZPYPMREDTW","name":"Initialize"},{"key":"CLASSIFY","id":"evt_QVHDBMZMJQT9BYAMP35S609Y5B","name":"Classify","payloadSchema":[{"name":"text","type":"string","required":true},{"name":"request","type":"object","properties":[{"name":"candidate","type":"string","required":true},{"name":"key","type":"string","required":true},{"name":"accepted","type":"[string]","required":true},{"name":"categories","type":"[string]","required":true}]}],"listened":true},{"key":"CLASSIFIED_RAW","id":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","name":"Classified Raw","description":"Raw llm.classify service result, flattened onto the payload by the call-service effect executor","tier":"secondary","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"number","required":true},{"name":"reasoning","type":"string","required":true}]},{"key":"CLASSIFY_CALL_FAILED","id":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","name":"Classify Call Failed","description":"call-service classify failure signal","tier":"secondary","payloadSchema":[{"name":"error","type":"string","required":true}]},{"key":"RESET","id":"evt_V86MY3A31Y1GZA08N063AJ27KF","name":"Reset"},{"key":"CLASSIFIED","id":"evt_PHB72SJ3P81V41FN6XPRXC7JWW","name":"Classified","description":"Structured LLM verdict — closed-set category with confidence and reasoning","tier":"primary","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"float","required":true},{"name":"reasoning","type":"string","required":true}]},{"key":"CLASSIFY_FAILED","id":"evt_7TE28MED446J25DVRK7W6M53TX","name":"Classify Failed","description":"The classify service call failed; this rung never abstains, only answers or fails","tier":"primary","payloadSchema":[{"name":"error","type":"string","required":true}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_DE59WENP8MV4A19GZPYPMREDTW","effects":[["set","@entity.text",""],["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage",""],["set","@entity.request",{}],["set","@entity.status","idle"]]},{"from":"idle","to":"classifying","event":"CLASSIFY","eventId":"evt_QVHDBMZMJQT9BYAMP35S609Y5B","effects":[["set","@entity.text","@payload.text"],["set","@entity.request","@payload.request"],["set","@entity.status","classifying"],["call-service","llm","classify",{"text":"@payload.text","categories":"@config.categories","model":"@config.model"},{"emit":{"success":"CLASSIFIED_RAW","failure":"CLASSIFY_CALL_FAILED"}}]]},{"from":"classifying","to":"idle","event":"INIT","eventId":"evt_DE59WENP8MV4A19GZPYPMREDTW","effects":[["set","@entity.text",""],["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage",""],["set","@entity.request",{}],["set","@entity.status","idle"]]},{"from":"classifying","to":"done","event":"CLASSIFIED_RAW","eventId":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","effects":[["set","@entity.category","@payload.category"],["set","@entity.confidence","@payload.confidence"],["set","@entity.reasoning","@payload.reasoning"],["set","@entity.status","done"],["emit","CLASSIFIED",{"category":"@entity.category","confidence":"@entity.confidence","reasoning":"@entity.reasoning"}]]},{"from":"classifying","to":"done","event":"CLASSIFY_CALL_FAILED","eventId":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","effects":[["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage","@payload.error"],["set","@entity.status","done"],["emit","CLASSIFY_FAILED",{"error":"@entity.errorMessage"}],["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't classify — ","@payload.error"],"dismissible":true}]]},{"from":"done","to":"done","event":"INIT","eventId":"evt_DE59WENP8MV4A19GZPYPMREDTW","effects":[["set","@entity.status","done"]]},{"from":"done","to":"idle","event":"RESET","eventId":"evt_V86MY3A31Y1GZA08N063AJ27KF","effects":[["set","@entity.text",""],["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage",""],["set","@entity.request",{}],["set","@entity.status","idle"]]}]},"config":{"categories":{"type":"[string]","default":[],"label":"Categories","description":"Closed set of category labels the LLM must choose from","tier":"domain","items":{"type":"string"}},"model":{"type":"string","default":"","label":"Model","description":"Model override forwarded to the classify call","tier":"infra"}},"scope":"instance"}],"pages":[{"name":"MlClassifyPage","id":"pag_R9ZH410C7H63RG1GKMMT35PWB3","path":"/ml-classify","traits":[{"ref":"ClassifyRun","refId":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"}]}],"types":{"DecisionRequest":[{"name":"candidate","type":"string","required":true},{"name":"key","type":"string","required":true},{"name":"accepted","type":"[string]","required":true},{"name":"categories","type":"[string]","required":true}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_E7ZG3RRTKND9TPG8PTT5V8P87M":{"id":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M","kind":"entity","bakedName":"ClassifierVerdict","curName":"ClassifierVerdict","renames":[],"owner":"workspace"},"evt_3H64NBWWA2E514ZJA7W71KJ2D6":{"id":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","kind":"event","bakedName":"CLASSIFY_CALL_FAILED","curName":"CLASSIFY_CALL_FAILED","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_7TE28MED446J25DVRK7W6M53TX":{"id":"evt_7TE28MED446J25DVRK7W6M53TX","kind":"event","bakedName":"CLASSIFY_FAILED","curName":"CLASSIFY_FAILED","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_DE59WENP8MV4A19GZPYPMREDTW":{"id":"evt_DE59WENP8MV4A19GZPYPMREDTW","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_PHB72SJ3P81V41FN6XPRXC7JWW":{"id":"evt_PHB72SJ3P81V41FN6XPRXC7JWW","kind":"event","bakedName":"CLASSIFIED","curName":"CLASSIFIED","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_QVHDBMZMJQT9BYAMP35S609Y5B":{"id":"evt_QVHDBMZMJQT9BYAMP35S609Y5B","kind":"event","bakedName":"CLASSIFY","curName":"CLASSIFY","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB":{"id":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","kind":"event","bakedName":"CLASSIFIED_RAW","curName":"CLASSIFIED_RAW","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_V86MY3A31Y1GZA08N063AJ27KF":{"id":"evt_V86MY3A31Y1GZA08N063AJ27KF","kind":"event","bakedName":"RESET","curName":"RESET","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"orb_CDDGW9DWGBY85ZBG1NH7NJ3D52":{"id":"orb_CDDGW9DWGBY85ZBG1NH7NJ3D52","kind":"orbital","bakedName":"MlClassifyOrbital","curName":"MlClassifyOrbital","renames":[],"owner":"workspace"},"pag_R9ZH410C7H63RG1GKMMT35PWB3":{"id":"pag_R9ZH410C7H63RG1GKMMT35PWB3","kind":"page","bakedName":"MlClassifyPage","curName":"MlClassifyPage","renames":[],"owner":"workspace"},"trt_03RGYG30XZGEZWTZ7MPWC4F14D":{"id":"trt_03RGYG30XZGEZWTZ7MPWC4F14D","kind":"trait","bakedName":"ClassifyRun","curName":"ClassifyRun","renames":[],"owner":"workspace"}}}}
1
+ {"name":"std-ml-classify","version":"1.0.0","description":"Generative rung (R5) — structured LLM verdict from a closed category set, via the llm.classify service seam. Bottom of the fall-through: always answers or fails, never abstains.","orbitals":[{"name":"MlClassifyOrbital","id":"orb_CDDGW9DWGBY85ZBG1NH7NJ3D52","entity":{"name":"ClassifierVerdict","id":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M","persistence":"runtime","fields":[{"name":"text","type":"string","default":""},{"name":"category","type":"string","default":""},{"name":"confidence","type":"number","default":0},{"name":"reasoning","type":"string","default":""},{"name":"errorMessage","type":"string","default":""},{"name":"request","type":"object","default":{},"properties":{"key":{"name":"key","type":"string","required":true},"candidate":{"name":"candidate","type":"string","required":true},"accepted":{"name":"accepted","type":"array","required":true,"items":{"type":"string"}},"categories":{"name":"categories","type":"array","required":true,"items":{"type":"string"}}}},{"name":"status","type":"string","default":"idle","values":["idle","classifying","done"]}]},"traits":[{"name":"ClassifyRun","id":"trt_03RGYG30XZGEZWTZ7MPWC4F14D","effectRow":[{"kind":"call-service","resource":"llm.classify"},{"kind":"emit","resource":"CLASSIFIED"},{"kind":"emit","resource":"CLASSIFY_FAILED"},{"kind":"render-ui","resource":"toast"},{"kind":"set","resource":"@entity.category"},{"kind":"set","resource":"@entity.confidence"},{"kind":"set","resource":"@entity.errorMessage"},{"kind":"set","resource":"@entity.reasoning"},{"kind":"set","resource":"@entity.request"},{"kind":"set","resource":"@entity.status"},{"kind":"set","resource":"@entity.text"}],"category":"lifecycle","linkedEntity":"ClassifierVerdict","linkedEntityId":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M","entityRefIds":{"ClassifierVerdict":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M"},"emits":[{"event":"CLASSIFIED_RAW","eventId":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","description":"Raw llm.classify service result, flattened onto the payload by the call-service effect executor","tier":"secondary","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"number","required":true},{"name":"reasoning","type":"string","required":true}]},{"event":"CLASSIFY_CALL_FAILED","eventId":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","description":"call-service classify failure signal","tier":"secondary","payloadSchema":[{"name":"error","type":"string","required":true}]},{"event":"CLASSIFIED","eventId":"evt_PHB72SJ3P81V41FN6XPRXC7JWW","description":"Structured LLM verdict — closed-set category with confidence and reasoning","tier":"primary","scope":"external","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"float","required":true},{"name":"reasoning","type":"string","required":true}]},{"event":"CLASSIFY_FAILED","eventId":"evt_7TE28MED446J25DVRK7W6M53TX","description":"The classify service call failed; this rung never abstains, only answers or fails","tier":"primary","scope":"external","payloadSchema":[{"name":"error","type":"string","required":true}]}],"stateMachine":{"states":[{"name":"idle","isInitial":true},{"name":"classifying"},{"name":"done"}],"events":[{"key":"INIT","id":"evt_DE59WENP8MV4A19GZPYPMREDTW","name":"Initialize"},{"key":"CLASSIFY","id":"evt_QVHDBMZMJQT9BYAMP35S609Y5B","name":"Classify","payloadSchema":[{"name":"text","type":"string","required":true},{"name":"request","type":"object","properties":[{"name":"candidate","type":"string","required":true},{"name":"key","type":"string","required":true},{"name":"accepted","type":"[string]","required":true},{"name":"categories","type":"[string]","required":true}]}],"listened":true},{"key":"CLASSIFIED_RAW","id":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","name":"Classified Raw","description":"Raw llm.classify service result, flattened onto the payload by the call-service effect executor","tier":"secondary","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"number","required":true},{"name":"reasoning","type":"string","required":true}]},{"key":"CLASSIFY_CALL_FAILED","id":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","name":"Classify Call Failed","description":"call-service classify failure signal","tier":"secondary","payloadSchema":[{"name":"error","type":"string","required":true}]},{"key":"RESET","id":"evt_V86MY3A31Y1GZA08N063AJ27KF","name":"Reset"},{"key":"CLASSIFIED","id":"evt_PHB72SJ3P81V41FN6XPRXC7JWW","name":"Classified","description":"Structured LLM verdict — closed-set category with confidence and reasoning","tier":"primary","payloadSchema":[{"name":"category","type":"string","required":true},{"name":"confidence","type":"float","required":true},{"name":"reasoning","type":"string","required":true}]},{"key":"CLASSIFY_FAILED","id":"evt_7TE28MED446J25DVRK7W6M53TX","name":"Classify Failed","description":"The classify service call failed; this rung never abstains, only answers or fails","tier":"primary","payloadSchema":[{"name":"error","type":"string","required":true}]}],"transitions":[{"from":"idle","to":"idle","event":"INIT","eventId":"evt_DE59WENP8MV4A19GZPYPMREDTW","effects":[["set","@entity.text",""],["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage",""],["set","@entity.request",{}],["set","@entity.status","idle"]]},{"from":"idle","to":"classifying","event":"CLASSIFY","eventId":"evt_QVHDBMZMJQT9BYAMP35S609Y5B","effects":[["set","@entity.text","@payload.text"],["set","@entity.request","@payload.request"],["set","@entity.status","classifying"],["call-service","llm","classify",{"text":"@payload.text","categories":"@config.categories","model":"@config.model"},{"emit":{"success":"CLASSIFIED_RAW","failure":"CLASSIFY_CALL_FAILED"}}]]},{"from":"classifying","to":"idle","event":"INIT","eventId":"evt_DE59WENP8MV4A19GZPYPMREDTW","effects":[["set","@entity.text",""],["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage",""],["set","@entity.request",{}],["set","@entity.status","idle"]]},{"from":"classifying","to":"done","event":"CLASSIFIED_RAW","eventId":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","effects":[["set","@entity.category","@payload.category"],["set","@entity.confidence","@payload.confidence"],["set","@entity.reasoning","@payload.reasoning"],["set","@entity.status","done"],["emit","CLASSIFIED",{"category":"@entity.category","confidence":"@entity.confidence","reasoning":"@entity.reasoning"}]]},{"from":"classifying","to":"done","event":"CLASSIFY_CALL_FAILED","eventId":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","effects":[["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage","@payload.error"],["set","@entity.status","done"],["emit","CLASSIFY_FAILED",{"error":"@entity.errorMessage"}],["render-ui","toast",{"type":"alert","variant":"error","message":["str/concat","Couldn't classify — ","@payload.error"],"dismissible":true}]]},{"from":"done","to":"done","event":"INIT","eventId":"evt_DE59WENP8MV4A19GZPYPMREDTW","effects":[["set","@entity.status","done"]]},{"from":"done","to":"idle","event":"RESET","eventId":"evt_V86MY3A31Y1GZA08N063AJ27KF","effects":[["set","@entity.text",""],["set","@entity.category",""],["set","@entity.confidence",0],["set","@entity.reasoning",""],["set","@entity.errorMessage",""],["set","@entity.request",{}],["set","@entity.status","idle"]]}]},"config":{"categories":{"type":"[string]","default":[],"label":"Categories","description":"Closed set of category labels the LLM must choose from","tier":"domain","items":{"type":"string"}},"model":{"type":"string","default":"","label":"Model","description":"Model override forwarded to the classify call","tier":"infra"}},"scope":"instance"}],"pages":[{"name":"MlClassifyPage","id":"pag_R9ZH410C7H63RG1GKMMT35PWB3","path":"/ml-classify","traits":[{"ref":"ClassifyRun","refId":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"}]}],"types":{"DecisionRequest":[{"name":"candidate","type":"string","required":true},{"name":"key","type":"string","required":true},{"name":"accepted","type":"[string]","required":true},{"name":"categories","type":"[string]","required":true}]}}],"schemaVersion":1,"ledger":{"schemaVersion":1,"entries":{"ent_E7ZG3RRTKND9TPG8PTT5V8P87M":{"id":"ent_E7ZG3RRTKND9TPG8PTT5V8P87M","kind":"entity","bakedName":"ClassifierVerdict","curName":"ClassifierVerdict","renames":[],"owner":"workspace"},"evt_3H64NBWWA2E514ZJA7W71KJ2D6":{"id":"evt_3H64NBWWA2E514ZJA7W71KJ2D6","kind":"event","bakedName":"CLASSIFY_CALL_FAILED","curName":"CLASSIFY_CALL_FAILED","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_7TE28MED446J25DVRK7W6M53TX":{"id":"evt_7TE28MED446J25DVRK7W6M53TX","kind":"event","bakedName":"CLASSIFY_FAILED","curName":"CLASSIFY_FAILED","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_DE59WENP8MV4A19GZPYPMREDTW":{"id":"evt_DE59WENP8MV4A19GZPYPMREDTW","kind":"event","bakedName":"INIT","curName":"INIT","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_PHB72SJ3P81V41FN6XPRXC7JWW":{"id":"evt_PHB72SJ3P81V41FN6XPRXC7JWW","kind":"event","bakedName":"CLASSIFIED","curName":"CLASSIFIED","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_QVHDBMZMJQT9BYAMP35S609Y5B":{"id":"evt_QVHDBMZMJQT9BYAMP35S609Y5B","kind":"event","bakedName":"CLASSIFY","curName":"CLASSIFY","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB":{"id":"evt_SKAJJ4FZNHZTRNVWH4YC3XBYEB","kind":"event","bakedName":"CLASSIFIED_RAW","curName":"CLASSIFIED_RAW","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"evt_V86MY3A31Y1GZA08N063AJ27KF":{"id":"evt_V86MY3A31Y1GZA08N063AJ27KF","kind":"event","bakedName":"RESET","curName":"RESET","renames":[],"owner":"workspace","parent":"trt_03RGYG30XZGEZWTZ7MPWC4F14D"},"orb_CDDGW9DWGBY85ZBG1NH7NJ3D52":{"id":"orb_CDDGW9DWGBY85ZBG1NH7NJ3D52","kind":"orbital","bakedName":"MlClassifyOrbital","curName":"MlClassifyOrbital","renames":[],"owner":"workspace"},"pag_R9ZH410C7H63RG1GKMMT35PWB3":{"id":"pag_R9ZH410C7H63RG1GKMMT35PWB3","kind":"page","bakedName":"MlClassifyPage","curName":"MlClassifyPage","renames":[],"owner":"workspace"},"trt_03RGYG30XZGEZWTZ7MPWC4F14D":{"id":"trt_03RGYG30XZGEZWTZ7MPWC4F14D","kind":"trait","bakedName":"ClassifyRun","curName":"ClassifyRun","renames":[],"owner":"workspace"}}}}